Subchapter 25.28
references/phases/design/design.mdMarkdown12 KBView on GitHub
Turn the inventory, the clusters, and the confirmed preferences into
aws-design.json. Two product goals have to hold at once, and they pull against each
other the moment a workload-level decision disagrees with a per-resource one:
The precedence order below is what reconciles them.
Deferred. “We do not know” must never be overridden by
anything below it.deterministic — the pre-determined recommendations.INVARIANT: a pattern may never change a
deterministicmapping’s target. It may only choose among rubric candidates.
If a pattern could override a fast-path row, the deterministic tier would stop
meaning anything and its user-facing label (“Standard pairing”) would be false. So a
genuine pattern/fast-path conflict is evidence the row does not belong in Direct
Mappings — the fix is to demote the row, never to let the pattern win.
Right-sizing is post-selection, not a seventh criterion. The six criteria select
a service and never touch capacity; adding a seventh would break “apply in order,
first match wins”. Each rubric file gets an additive ## Right-Sizing section,
structurally parallel to ## CPU Architecture.
Pass 1 and pass 2 both run. knowledge/design/fast-path-services.json carries the
disposition table; eight rubrics are on disk — compute.md, database.md,
networking.md, messaging.md, analytics.md, storage.md, identity.md and
fast-path.md. A resource routed by index.md to a category file that is not on disk
still halts rather than being improvised; ai.md is on disk (the AI-workload rubric);
only licensing.md, gpu-hpc.md and patterns.md are still to come.
Check the filesystem, not this paragraph. A status list in prose goes stale the moment a
file lands, and the halt decision reads from disk. If this list and ls disagree, ls is
right and this list is the bug.
| Lands in | What |
|---|---|
| step 4 | patterns.md and the cluster-level data-pipeline gate. Clustering itself is real; only pattern RECOGNITION is outstanding, so every cluster carries pattern_status: "catalog_absent" |
| step 5 | The remaining eight category files, and the knowledge/design/*.json sizing tables wired through _knowledge _when guards |
| step 6 | The AI design route |
A missing SIZING table is treated more softly than a missing RUBRIC file, on purpose.
Without appservice-eb-sizing.json the design still names Elastic Beanstalk and states a
dev-tier instance size as a default; without compute.md it would have to invent the
service choice. The first degrades a number’s precision, the second fabricates the answer.
The _postconditions encode the FINISHED contract, so some still fail by construction —
a halted design does not account for every resource. That is intended: the gate reports
the skill’s gap loudly rather than letting a plausible mapping pass for a real one.
_trigger holds.design-assemble.md._postconditions. On all-pass emit HANDOFF_OK; on any failure emit
GATE_FAIL and stop.