Repository navigation
v3.11.5 — the worked example, produced rather than written
The worked example is produced now, not written.
It echoed 8 of the 37 profile fields, so a reader could not see what the interview establishes. It rendered no method candidates in the card while its own JSON carried six. Every candidate had an empty prerequisitePaths array, which is the field the handoff contract reads when a customer prefers an alternative. And it named ssms-migration-component as the control plane for a standalone Log Replay Service run, which is assessment tooling rather than the plane that runs the migration.
The profile now carries every field the two interview tables supply, and the engine the golden scenarios run against derives the recommendation, the tier, the cutover class and the candidates from it. The card is a rendering of that same object.
Two defects surfaced by making it so
The candidate list is built before the method gates run and never hears their answer. So the winner could read available in the shortlist while the trace beside it read unknown_requires_assessment for the same unproven field. Invariant 15 says those two answer the same question and must agree.
And the check enforcing that invariant still demanded available outright, which is the rule the contract had already replaced: a method that is viable, recommended and waiting on one unmeasured field had no honest shape, so the card either claimed a gate it had not passed or dropped the candidate that won.
This example now shows exactly that case. The Log Replay Service is recommended and held, because nobody has estimated how long 1.2 TB takes to seed and catch up inside its thirty-day window.
The gate
It compares the two renderings field by field, scoped to the table that renders the candidates rather than to the page. Searching the whole page finds DMS inside DMS-MODE and passes on a card listing no candidates at all, which is the state the check exists to catch.
70 gates to 71.