Context
Consumer-5 leaf of epic #14472 (Golden Path v2) — "reach + read-ordering, not resurrection" — filed in the operator-directed full-fledging pass. Live latest-open sweep at 2026-07-02T19:37:34Z: no equivalent ticket.
The #14454 same-run route-attribution ledger (merged 1666a3de4, dataset in learn/agentos/measurements/golden-path-route-attribution-2026-07-02.md) resolved the acceptance fork non-zero structural in the hermetic scenario — the dead-write hypothesis was NOT confirmed. What remains live from the #14422 OQ4 decomposition: structural cold-start (new/unlinked nodes carry ≈0.00 structural weight, penalized precisely for being new) and the type-gate/structural-mass disjointness (durable structural weight concentrates on node types the ranking never reaches). Every production handoff now emits the ledger — the discriminating data accumulates automatically.
The Problem
The Computed Golden Path ranks with structural weight it largely cannot reach: both independent probes in the graduation record observed the durable structural mass (35,443 CONTAINS, thousands of IMPLEMENTS/RESOLVES) living on file/concept/PR node types — disjoint from what the router admits. Meanwhile genuinely-new work is structurally invisible (cold-start), so the router systematically under-ranks exactly the items an operator most wants surfaced: fresh, unlinked, high-intent tickets. Result observed live: rendered Structural: 0.00 intermittency and the original operator question — "why do new items that should reach golden path not yet?"
The Architectural Reality
- Type-gate (designed routing boundary):
ai/services/graph/computedGoldenPathRouting.mjs:72-73 — only ISSUE/DISCUSSION route ("execution-steerable"); the 42.2% label/actionability exclusion on OPEN items is likewise DESIGNED (per the graduation's entry-gate decomposition). This leaf must not widen what ROUTES.
- Candidate pool: verify composition at claim time — the semantic candidate query on current dev constrains types at the Chroma
where level (per the 2026-07-02 intake V-B-A), which may retire the older all-types crowding premise; the capture runs settle it with data.
- Structural scoring:
GoldenPathSynthesizer.mjs:749-750 (getInboundStructuralComponents → struct_score), post-selection reinforcement at :872 (GraphService.linkNodes('frontier', id, 'GUIDES', score)).
- Ledger instrument:
ai/services/graph/goldenPathRouteLedger.mjs — per-candidate rejection buckets + pre-ranking components + GUIDES writes in one pass.
- Cold-start remedies matrix (from the graduation, explicitly "matrix material for the epic, not AC material"): bootstrap weight · graduation-edge seeding · time-decayed novelty bonus · #14447 stall-rescue nudge (gated on its own OQ2).
The Fix
Data-first, one PR:
- Capture-run analysis artifact — aggregate ≥5 opt-in capture runs against the live store (diagnostics-runner pattern, the #14513 sibling; the recording library revives from pre-#14518 git history — anchor:
goldenPathRouteLedger.mjs @ 085dd2339^ lineage) covering: structural-score distribution over rendered items, cold-start incidence (age vs structural), pool composition (how much of top-20 the type-gate rejects), GUIDES reinforcement loop shape. Committed under learn/agentos/measurements/.
- One cold-start remedy implemented, chosen FROM that artifact (not from preference): the matrix's four candidates each carry a falsifier — e.g. a time-decayed novelty bonus is rejected if the data shows cold-start items already reach render via semantic weight alone; graduation-edge seeding is rejected if graduated items show no systematic disadvantage.
- Structural REACH extension (visibility, not routing): ranking may consume structural mass THROUGH concept-adjacent hops (e.g., an ISSUE inherits bounded weight from concepts it
IMPLEMENTS/is RESOLVES-linked to) — while computedGoldenPathRouting.mjs:72 continues to gate what ROUTES. The visibility-vs-routing boundary from the graduation stays intact and is asserted in the spec.
- Same-run proof: the ledger (already emitting per handoff) shows the before/after — a cold-start fixture candidate carries non-zero structural via the remedy, and no non-
ISSUE/DISCUSSION node renders as actionable.
Contract Ledger Matrix
| Target Surface |
Source of Authority |
Proposed Behavior |
Fallback / Edge Case |
Docs |
Evidence |
struct_score composition (GoldenPathSynthesizer.mjs:749) |
#14422 OQ4 entry-gate decomposition |
Adds bounded concept-hop reach + the chosen cold-start remedy |
Remedy weight capped so semantic ordering cannot be inverted by structure alone (cap stated in code) |
Module docblock + the analysis artifact |
Same-run ledger fixture, before/after |
Route admission (computedGoldenPathRouting.mjs:72) |
Designed boundary (graduation record) |
UNCHANGED |
— |
Comment already states the rationale |
Spec asserts non-ISSUE/DISCUSSION never routes |
Decision Record impact
aligned-with ADR 0024 (consumes edge topology; no taxonomy/protection changes). The OQ1 anchoring leaf owns any ADR amendment.
Acceptance Criteria
Out of Scope
- Widening ROUTE admission (designed boundary).
- Label/actionability filter changes (designed, 42.2% exclusion documented as intentional).
- Anchoring writes (OQ1 leaf); retrieval consumption (consumer-1 leaf).
Avoided Traps
- Resurrection framing — the goal is reaching weight that EXISTS and un-penalizing newness, not inflating scores until old items resurface.
- Remedy-by-preference — the matrix is dispositioned from ledger data; ambition does not pre-empt the probe (the epic's standing discipline).
- Visibility/routing conflation — concept mass informs ranking; it never makes a concept a routable work item.
Sequencing
Executable now via opt-in capture runs (the passive per-handoff emission path was removed as handoff bloat per #14517 — operator-directed; capture is on-demand by design). Independent of #14474/the defrag leaf (consumes ids as-is; benefits from both).
Related: #14472 (parent epic), #14454 (the instrument), #14447 (stall-rescue interaction, gated on its OQ2), Discussion #14422 (OQ4 decomposition)
Origin Session ID: 8cf234b7-e698-47ca-99e2-bf865196b6aa
Retrieval Hint: golden path ranking reach type-gate cold-start remedy ledger analysis visibility vs routing
Context
Consumer-5 leaf of epic #14472 (Golden Path v2) — "reach + read-ordering, not resurrection" — filed in the operator-directed full-fledging pass. Live latest-open sweep at 2026-07-02T19:37:34Z: no equivalent ticket.
The #14454 same-run route-attribution ledger (merged
1666a3de4, dataset inlearn/agentos/measurements/golden-path-route-attribution-2026-07-02.md) resolved the acceptance fork non-zero structural in the hermetic scenario — the dead-write hypothesis was NOT confirmed. What remains live from the #14422 OQ4 decomposition: structural cold-start (new/unlinked nodes carry ≈0.00 structural weight, penalized precisely for being new) and the type-gate/structural-mass disjointness (durable structural weight concentrates on node types the ranking never reaches). Every production handoff now emits the ledger — the discriminating data accumulates automatically.The Problem
The Computed Golden Path ranks with structural weight it largely cannot reach: both independent probes in the graduation record observed the durable structural mass (35,443
CONTAINS, thousands ofIMPLEMENTS/RESOLVES) living on file/concept/PR node types — disjoint from what the router admits. Meanwhile genuinely-new work is structurally invisible (cold-start), so the router systematically under-ranks exactly the items an operator most wants surfaced: fresh, unlinked, high-intent tickets. Result observed live: renderedStructural: 0.00intermittency and the original operator question — "why do new items that should reach golden path not yet?"The Architectural Reality
ai/services/graph/computedGoldenPathRouting.mjs:72-73— onlyISSUE/DISCUSSIONroute ("execution-steerable"); the 42.2% label/actionability exclusion on OPEN items is likewise DESIGNED (per the graduation's entry-gate decomposition). This leaf must not widen what ROUTES.wherelevel (per the 2026-07-02 intake V-B-A), which may retire the older all-types crowding premise; the capture runs settle it with data.GoldenPathSynthesizer.mjs:749-750(getInboundStructuralComponents→struct_score), post-selection reinforcement at:872(GraphService.linkNodes('frontier', id, 'GUIDES', score)).ai/services/graph/goldenPathRouteLedger.mjs— per-candidate rejection buckets + pre-ranking components +GUIDESwrites in one pass.The Fix
Data-first, one PR:
goldenPathRouteLedger.mjs@085dd2339^lineage) covering: structural-score distribution over rendered items, cold-start incidence (age vs structural), pool composition (how much of top-20 the type-gate rejects),GUIDESreinforcement loop shape. Committed underlearn/agentos/measurements/.IMPLEMENTS/isRESOLVES-linked to) — whilecomputedGoldenPathRouting.mjs:72continues to gate what ROUTES. The visibility-vs-routing boundary from the graduation stays intact and is asserted in the spec.ISSUE/DISCUSSIONnode renders as actionable.Contract Ledger Matrix
struct_scorecomposition (GoldenPathSynthesizer.mjs:749)computedGoldenPathRouting.mjs:72)Decision Record impact
aligned-with ADR 0024 (consumes edge topology; no taxonomy/protection changes). The OQ1 anchoring leaf owns any ADR amendment.
Acceptance Criteria
ISSUE/DISCUSSIONnode rendered actionableStructural: 0.00intermittency re-measured post-merge across ≥3 production handoffs (standing-watch note on this ticket)Resolvesthis leaf,Refs#14472Out of Scope
Avoided Traps
Sequencing
Executable now via opt-in capture runs (the passive per-handoff emission path was removed as handoff bloat per #14517 — operator-directed; capture is on-demand by design). Independent of #14474/the defrag leaf (consumes ids as-is; benefits from both).
Related: #14472 (parent epic), #14454 (the instrument), #14447 (stall-rescue interaction, gated on its OQ2), Discussion #14422 (OQ4 decomposition)
Origin Session ID: 8cf234b7-e698-47ca-99e2-bf865196b6aa
Retrieval Hint:
golden path ranking reach type-gate cold-start remedy ledger analysis visibility vs routing