Context
Split out of #14588 per the PR #14596 review (cross-family RA: the shipped diff resolves the narrowed guard-literal defect; these three ACs are real but separable — close-target honesty demands they live where a PR can genuinely Resolves them).
The Problem / The Fix (three separable behaviors, one surface)
- Focus-as-route fallback: when the contradiction guard blocks ALL surviving candidates (the no-survivor state — tonight's live reproducer shape), the rendered section lists the focus items as the numbered recommendation instead of rendering zero routes. Respects the module's owner contract by making this an explicit no-survivor fallback, never a boost of focus into routing while computed candidates exist (
computedGoldenPathRouting.mjs — renderComputedGoldenPathContradictionSection gains the fallback branch; the guard JSDoc's "does not boost focus nodes into routing" clause gets the no-survivor exception documented).
- Guard-filter ledger recording: blocked candidates land in the #14454 route-attribution ledger (the diagnostic becomes measurable — which candidates the guard filters, how often, under which focus reasons).
- Release-window config leaf: the durable class-fix for the stale-release-boundary family — "current release window" as a config/SSOT leaf (set at cut-prep, cleared mechanically by
publish.mjs), consumed by both the routing guard's conflict-reason set and issueFocusSections.mjs's emitter literals (V13_1_PATTERN, the milestone gate — the emitter-side hardcoding #14588's investigation identified). Sibling precedent: #14531 (the release-analyzer literal). Config-template blast radius: follow mcp-config-template-change-guide if the leaf lands in an MCP-server template; root ai/config.template.mjs otherwise, with the --migrate-config note.
Acceptance Criteria
Out of Scope
The guard-literal removal + guard-semantics pinning (shipped, PR #14596) · the single-actionable-candidate narrowness (#14503) · #14575's portal-index test fix (its own lane; currently gating #14596's CI).
Related
#14588 (narrowed parent-defect, re-scoped 2026-07-04) · PR #14596 (the shipped slice + the review that mandated this split) · #14531 (stale-literal sibling) · #14454 (the ledger) · #14503 (narrowness) · #14575 (CI gate).
Live latest-open sweep: latest 15 checked 02:22Z + no new filings in the 8-minute window (mailbox-verified). Claimable — my lane's orbit, sequenced behind #14567.
Origin Session ID: a5af7cf6-45a3-42db-8a30-f04f4241a55c
Retrieval Hint: "GP guard focus-as-route ledger release-window config leaf publish-cleared"
Context
Split out of #14588 per the PR #14596 review (cross-family RA: the shipped diff resolves the narrowed guard-literal defect; these three ACs are real but separable — close-target honesty demands they live where a PR can genuinely
Resolvesthem).The Problem / The Fix (three separable behaviors, one surface)
computedGoldenPathRouting.mjs—renderComputedGoldenPathContradictionSectiongains the fallback branch; the guard JSDoc's "does not boost focus nodes into routing" clause gets the no-survivor exception documented).publish.mjs), consumed by both the routing guard's conflict-reason set andissueFocusSections.mjs's emitter literals (V13_1_PATTERN, the milestone gate — the emitter-side hardcoding #14588's investigation identified). Sibling precedent: #14531 (the release-analyzer literal). Config-template blast radius: followmcp-config-template-change-guideif the leaf lands in an MCP-server template; rootai/config.template.mjsotherwise, with the--migrate-confignote.Acceptance Criteria
Out of Scope
The guard-literal removal + guard-semantics pinning (shipped, PR #14596) · the single-actionable-candidate narrowness (#14503) · #14575's portal-index test fix (its own lane; currently gating #14596's CI).
Related
#14588 (narrowed parent-defect, re-scoped 2026-07-04) · PR #14596 (the shipped slice + the review that mandated this split) · #14531 (stale-literal sibling) · #14454 (the ledger) · #14503 (narrowness) · #14575 (CI gate).
Live latest-open sweep: latest 15 checked 02:22Z + no new filings in the 8-minute window (mailbox-verified). Claimable — my lane's orbit, sequenced behind #14567.
Origin Session ID: a5af7cf6-45a3-42db-8a30-f04f4241a55c Retrieval Hint: "GP guard focus-as-route ledger release-window config leaf publish-cleared"