Refs #15105
Related: #14472
Golden Path now replenishes the semantic candidate prefix after state, blocker, actionability, and typed Discussion-liveness filtering instead of treating the raw top 20 as the route contract. A single trusted-root Discussion classifier projects lifecycle facts through sync and ingestion; the graph exposes RLS-safe total versus decaying inbound support; canonical ranking math remains unchanged; final-pass rejection evidence stays in the existing stage-isolated ledger.
Evidence: L2 (exact affected matrix: 212 passed, 8 substrate-dependent skips; non-skipped DreamService fixture: 1 passed) → L3 required (live non-destructive sync → ingest → isolated graph → fresh handoff-file hindcast with selected nodes recorded). Residual: live hindcast AC from #15105.
Deltas from ticket
- The persisted lifecycle tuple is normalized atomically: any malformed or contradictory v1 field set degrades together to legacy
undetermined rather than mixing current and legacy authority.
- Requester-scoped vicinity markers preserve RLS isolation across sequential tenants; SQLite invalidation removes every stale same-id secondary-index reference before lazy reload.
- Active/archive Discussion mirrors are canonicalized by current source timestamps and deterministic source precedence. Operational graph/vector failures propagate; malformed YAML remains a bounded local skip.
- The graph projection excludes canonical protected fact edges and prior
frontier → GUIDES output from decaying support, preventing Golden Path from authorizing its own next run.
- Adaptive admission is count-bounded, ID-deduplicated, SQLite-chunked, and fail-loud at its safe ceiling. Strict nonnegative finite ANN distances prevent malformed vector results from becoming healthy scores.
- Adaptive admission publishes only the final whole-prefix attempt; later query, distance, or structural failures discard provisional routes and ledger rows through the existing fail-loud result.
- The one physical rejection stream now retains its actionability and Discussion-liveness stages independently, so liveness pressure cannot evict the actionability view.
- No ranking formula, Direction-GP input, Bird View, hook renderer, config leaf, or new ledger was added.
Test Evidence
NEO_TEST_SKIP_CI=true npm run test-unit -- <10 affected specs> — 212 passed, 8 skipped on the exact final tree.
npm run test-unit -- DreamServiceGoldenPath.spec.mjs --workers=1 — 1 passed with a hermetic exact-fixture vector boundary; no unrelated shared Chroma candidate can satisfy the oracle.
- Independent final-diff matrix on alternate isolated Chroma port — 199 passed before the final malformed-distance fold; the added exact falsifier plus three adjacent admission/Hebbian tests then passed 4/4.
npm run ai:audit-discussion-lifecycle -- --self-test — passed.
npm run --silent ai:structure-map -- --files --loc — passed; the new pure helper remains in the existing GitHub Workflow shared-helper home.
npm run agent-preflight -- --no-fix <20 changed/new .mjs files> — 0 ticket-archaeology violations; all requested gates passed.
node --check <20 changed/new .mjs files> and git diff --check — passed.
- Broad-suite receipts are disclosed, not promoted: the 9-worker hermetic run was killed with exit 137 after 5,363/6,895 tests; the 4-worker hermetic run reached the full test list but ended with 6,738 passed, 116 skipped, 15 cross-suite shared-state failures, 26 non-runs, and one non-test error. The exact affected matrix above is green.
Residual / Pre-Review Validation
Evidence Incident
The first L3 attempt accidentally reached a resident Chroma endpoint and refreshed 212 IDs before containment. A read-only audit found the resident collection healthy; no restore or drop was performed. The subsequent truly isolated run stopped because the embedding provider degraded before a valid chain receipt. Neither attempt counts as L3 evidence.
Post-Merge Validation
Evolution
The implementation retained the ticket's source → graph → canonical-ranking composition while tightening falsified shortcuts: lifecycle classification never reads comments or raw timestamps; liveness never treats protected history or prior Golden Path output as motion; malformed ANN distances never become priority; and tenant-scoped lazy loading cannot reuse another requester's visibility marker. The live-evidence incident also exposed why ad-hoc Chroma diagnostics require resolved-coordinate guards before any collection access.
Authored by Euclid (GPT-5, Codex Desktop). Session 837ad74b-c2d2-413d-9aab-b7165a93a82a.
Refs #15105
Related: #14472
Golden Path now replenishes the semantic candidate prefix after state, blocker, actionability, and typed Discussion-liveness filtering instead of treating the raw top 20 as the route contract. A single trusted-root Discussion classifier projects lifecycle facts through sync and ingestion; the graph exposes RLS-safe total versus decaying inbound support; canonical ranking math remains unchanged; final-pass rejection evidence stays in the existing stage-isolated ledger.
Evidence: L2 (exact affected matrix: 212 passed, 8 substrate-dependent skips; non-skipped DreamService fixture: 1 passed) → L3 required (live non-destructive sync → ingest → isolated graph → fresh handoff-file hindcast with selected nodes recorded). Residual: live hindcast AC from #15105.
Deltas from ticket
undeterminedrather than mixing current and legacy authority.frontier → GUIDESoutput from decaying support, preventing Golden Path from authorizing its own next run.Test Evidence
NEO_TEST_SKIP_CI=true npm run test-unit -- <10 affected specs>— 212 passed, 8 skipped on the exact final tree.npm run test-unit -- DreamServiceGoldenPath.spec.mjs --workers=1— 1 passed with a hermetic exact-fixture vector boundary; no unrelated shared Chroma candidate can satisfy the oracle.npm run ai:audit-discussion-lifecycle -- --self-test— passed.npm run --silent ai:structure-map -- --files --loc— passed; the new pure helper remains in the existing GitHub Workflow shared-helper home.npm run agent-preflight -- --no-fix <20 changed/new .mjs files>— 0 ticket-archaeology violations; all requested gates passed.node --check <20 changed/new .mjs files>andgit diff --check— passed.Residual / Pre-Review Validation
routingDispositionSchemaVersion,routingDisposition,routingDispositionReason,routingDispositionEvidence, plus separate lifecyclestate; render a non-empty legitimate route; and exclude the terminal/undetermined/closed cohort.Refs #15105withResolves #15105only after that receipt passes.Evidence Incident
The first L3 attempt accidentally reached a resident Chroma endpoint and refreshed 212 IDs before containment. A read-only audit found the resident collection healthy; no restore or drop was performed. The subsequent truly isolated run stopped because the embedding provider degraded before a valid chain receipt. Neither attempt counts as L3 evidence.
Post-Merge Validation
Evolution
The implementation retained the ticket's source → graph → canonical-ranking composition while tightening falsified shortcuts: lifecycle classification never reads comments or raw timestamps; liveness never treats protected history or prior Golden Path output as motion; malformed ANN distances never become priority; and tenant-scoped lazy loading cannot reuse another requester's visibility marker. The live-evidence incident also exposed why ad-hoc Chroma diagnostics require resolved-coordinate guards before any collection access.
Authored by Euclid (GPT-5, Codex Desktop). Session 837ad74b-c2d2-413d-9aab-b7165a93a82a.