LearnNewsExamplesServices
Frontmatter
id14961
titleSuppress stale computed Golden Path snapshots at the lane-state hook read boundary
stateOpen
labels
bugaitestingarchitecture
assigneesneo-gpt
createdAt2:16 PM
updatedAt2:16 PM
githubUrlhttps://github.com/neomjs/neo/issues/14961
authorneo-gpt
commentsCount0
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]

Suppress stale computed Golden Path snapshots at the lane-state hook read boundary

Open Backlog/active-chunk-5 bugaitestingarchitecture
neo-gpt
neo-gpt commented on 2:16 PM

Context

PR #14946 closes the production-graph fixture-write recurrence behind #14926. Exact-head review exposed a distinct read-boundary defect: the lane-state stop hook can continue presenting an old computed Golden Path snapshot after the live graph has changed.

Problem

.claude/hooks/laneStateStopHook.mjs reads goldenPathDirection from ~/.neo-ai-data/lane-state-hook/lifecycle-state.json without a bounded freshness or provenance check. The observed artifact was generated on 2026-07-06 while its fixture nodes are absent from the current graph; on 2026-07-10 it still advertised those fixtures as top-ROI release lanes. The same snapshot also carried stale openPRs: [] and unreadCount: 0.

A correct write-boundary guard prevents new pollution, but cannot make an already stale snapshot truthful. Stale-and-authoritative direction should degrade to an explicit unavailable/stale state rather than steer the swarm.

Empirical evidence

  • The artifact reports generatedAt: 2026-07-06T14:23:04.288Z and contains discussion-open-1783347784287 plus issue-actionable-1783347784287.
  • Direct graph lookups and SQLite inspection found zero matching fixture rows in the current graph.
  • Repository search for goldenPathDirection found the hook reader and its spec, but no in-repo producer for this artifact.
  • Live duplicate sweep on 2026-07-10 checked the latest 30 open issues plus targeted goldenPathDirection stale hook freshness lifecycle-state search. #14926 owns the write/scoring defect; #13623 is broader no-hold observability, not this freshness contract. No equivalent leaf was found.
  • Knowledge Base synthesis was attempted and timed out; this ticket therefore does not overclaim KB coverage.

Intended solution

At the hook read boundary, establish an explicit freshness/provenance contract for computed Golden Path direction. When the artifact is older than the bounded contract or its provenance cannot be established, suppress the ranked lanes or render them as unavailable/stale. Do not silently treat an orphaned snapshot as current release direction.

The owner should first locate or name the actual artifact producer. If it is intentionally out-of-repo, the reader contract must remain independently safe when that producer stops.

Acceptance Criteria

  • The hook does not render stale or unprovenanced goldenPathDirection entries as current release-goal direction.
  • The stale/unavailable state is explicit and does not invent a fallback lane.
  • A regression test supplies a stale artifact containing high-scoring fixture rows and proves those rows are not emitted as live direction.
  • A fresh, valid artifact still renders its ranked lanes.
  • The artifact producer/provenance contract is named in code or durable documentation.
  • Cross-family review.

Scope boundaries

In scope: lane-state hook read-boundary freshness/provenance and its focused tests.

Out of scope: the production-graph test-write guard and fixture-provenance scoring filter delivered by PR #14946 under #14926; general no-hold policy; redesigning Golden Path scoring.

Related

  • #14926 — source write/scoring defect split from this read-boundary residual
  • PR #14946 — exact review evidence that revealed the split
  • #13623 — broader lane-state/no-hold observability substrate

Origin Session ID: de713f27-0e82-4960-b4c6-f281e0c36449 Retrieval Hint: "stale lifecycle-state goldenPathDirection stop hook freshness provenance fixture advisory"