Context
The stop-hook's "Release-goal direction — Computed Golden Path top ROI" block served the following to a live session (2026-07-16, twice, ~14:35Z and ~14:52Z):
1. discussion-open-1783347784287 — score 10.00 — Open Discussion Fixture
2. issue-actionable-1783347784287 — score 3.33 — Actionable Issue Fixture
Both ids carry an epoch-millisecond suffix and the literal titles "Open Discussion Fixture" / "Actionable Issue Fixture".
The Problem
Those identifiers exist nowhere in the live tracker — a repo-wide grep finds them only in test fixtures:
test/playwright/unit/ai/services/graph/computedGoldenPathRouting.spec.mjs
test/playwright/unit/ai/services/graph/GoldenPathSynthesizer.spec.mjs
Per the hook-side JSDoc (.claude/hooks/laneStateStopHook.mjs ~line 223–239), the hook is the READ consumer of state.goldenPathDirection; a daemon WRITE producer fills it. Fixture entries reaching a live advisory means either (a) one of the two specs above ran without full isolation and wrote fixture entries into the live lifecycle state (the UNIT_TEST_MODE pollution class — same family as the bare-playwright live-graph pollution rule), or (b) the producer read a test artifact path. Either way the advisory's authority is compromised: agents are being pointed at nonexistent lanes with a fabricated top score.
The Fix (for the assignee to verify)
- Locate the producer of
state.goldenPathDirection and the state file it writes; inspect the live file for the fixture entries and their write timestamp.
- If spec pollution: isolate the two specs' state-file path by construction (per-process temp path under
UNIT_TEST_MODE), and add a producer-side guard rejecting entries whose id matches no live tracker artifact.
- Flush the polluted live state; add a regression spec pinning that fixture-shaped ids never survive into the produced advisory.
Out of Scope
- The stop-hook's lexicon/validator behavior (#15233 and its wave own that).
Related
- #15233 (adjacent hook substrate), the
UNIT_TEST_MODE isolation discipline.
Origin Session ID: 75ed6708-c66b-4989-862d-2286e87abbf1
Retrieval Hint: "golden path advisory fixture pollution goldenPathDirection lifecycle state"
Live latest-open sweep: latest 20 open checked 2026-07-16 ~14:35Z this session — no equivalent; hook-family tickets (#15216/#15228/#15233) cover different defects. A2A claim window scanned — no competing claim.
Context
The stop-hook's "Release-goal direction — Computed Golden Path top ROI" block served the following to a live session (2026-07-16, twice, ~14:35Z and ~14:52Z):
Both ids carry an epoch-millisecond suffix and the literal titles "Open Discussion Fixture" / "Actionable Issue Fixture".
The Problem
Those identifiers exist nowhere in the live tracker — a repo-wide grep finds them only in test fixtures:
test/playwright/unit/ai/services/graph/computedGoldenPathRouting.spec.mjstest/playwright/unit/ai/services/graph/GoldenPathSynthesizer.spec.mjsPer the hook-side JSDoc (
.claude/hooks/laneStateStopHook.mjs~line 223–239), the hook is the READ consumer ofstate.goldenPathDirection; a daemon WRITE producer fills it. Fixture entries reaching a live advisory means either (a) one of the two specs above ran without full isolation and wrote fixture entries into the live lifecycle state (theUNIT_TEST_MODEpollution class — same family as the bare-playwright live-graph pollution rule), or (b) the producer read a test artifact path. Either way the advisory's authority is compromised: agents are being pointed at nonexistent lanes with a fabricated top score.The Fix (for the assignee to verify)
state.goldenPathDirectionand the state file it writes; inspect the live file for the fixture entries and their write timestamp.UNIT_TEST_MODE), and add a producer-side guard rejecting entries whose id matches no live tracker artifact.Out of Scope
Related
UNIT_TEST_MODEisolation discipline.Origin Session ID: 75ed6708-c66b-4989-862d-2286e87abbf1 Retrieval Hint: "golden path advisory fixture pollution goldenPathDirection lifecycle state" Live latest-open sweep: latest 20 open checked 2026-07-16 ~14:35Z this session — no equivalent; hook-family tickets (#15216/#15228/#15233) cover different defects. A2A claim window scanned — no competing claim.