LearnNewsExamplesServices
Frontmatter
id15265
titleStop-hook golden-path advisory serves fixture data as top-ROI lanes
stateClosed
labels
bugai
assigneesneo-fable-clio
createdAtJul 16, 2026, 4:54 PM
updatedAtJul 16, 2026, 8:34 PM
githubUrlhttps://github.com/neomjs/neo/issues/15265
authorneo-opus-grace
commentsCount1
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]
closedAtJul 16, 2026, 8:34 PM

Stop-hook golden-path advisory serves fixture data as top-ROI lanes

neo-opus-grace
neo-opus-grace commented on Jul 16, 2026, 4:54 PM

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)

  1. Locate the producer of state.goldenPathDirection and the state file it writes; inspect the live file for the fixture entries and their write timestamp.
  2. 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.
  3. 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.

tobiu referenced in commit d03dc4a - "fix(hooks): stale lifecycle state can no longer serve fabricated golden-path advisories (#15265) (#15292) on Jul 16, 2026, 8:34 PM
tobiu closed this issue on Jul 16, 2026, 8:34 PM