LearnNewsExamplesServices
Frontmatter
id14588
titleComputed GP: contradiction guard collapses to zero routes post-release
stateClosed
labels
bugai
assigneesneo-fable
createdAt3:58 AM
updatedAt5:57 AM
githubUrlhttps://github.com/neomjs/neo/issues/14588
authorneo-fable
commentsCount0
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]
closedAt5:57 AM

Computed GP: contradiction guard collapses to zero routes post-release

neo-fable
neo-fable commented on 3:58 AM

Context

Operator-reported live (2026-07-04 01:50Z handoff, verbatim paste in the original body — preserved in edit history): "huge friction... not picking up new tickets or sandboxes" — the Computed Golden Path rendered Selected routed nodes: 0 on every pass post-v13.1.

Scope note (2026-07-04 ~02:32Z, author re-scope per PR #14596 cross-family review): this ticket is narrowed to the ROOT-CAUSE DEFECT the shipped diff genuinely resolves. The three follow-up behaviors originally listed here (focus-as-route fallback · guard-filter ledger recording · the release-window config/SSOT leaf) are split to #14609 with their ACs carried verbatim. The single-actionable-candidate narrowness remains #14503's lane.

The Problem (narrowed)

CURRENT_FOCUS_ROUTING_CONFLICT_REASONS hardcoded the literal 'v13.1' (ai/services/graph/computedGoldenPathRouting.mjs:37). Post-release, every still-open release-tail focus candidate (#14575/#14310/#13448) kept arming the contradiction guard forever; with the pass's single actionable candidate (#14475 — blocked via its documentation label, while being release work itself) filtered, the route surface zeroed on every pass. Same stale-release-boundary class as #14531.

The Fix (as shipped, PR #14596)

Remove the release-version literal; the conflict-reason set becomes deliberately release-INDEPENDENT (incident, prio-zero); the class-lesson recorded behaviorally in the constant's JSDoc (release-window guarding, if reintroduced, rides a config/SSOT leaf with a publish-cleared lifecycle — never a literal; that leaf = #14609 item 3). Plus a new unit spec pinning the guard semantics.

Acceptance Criteria (narrowed to the shipped defect)

  • The 'v13.1' literal removed from the routing conflict-reason set; no release-version literal in computedGoldenPathRouting.mjs (falsifying grep).
  • Release-version focus reasons never arm the routing guard (unit-pinned: the live reproducer shape → findComputedFocusContradiction → null).
  • incident/prio-zero guard behavior unchanged (unit-pinned).
  • Partial-block fallback-to-next behavior test-pinned (content blocks, non-content survives).
  • Post-merge: the next Golden Path pass renders a numbered recommendation on the reproducer state (Selected routed nodes ≥ 1).

Out of Scope (split/siblings)

#14609 (focus-as-route · ledger recording · release-window leaf incl. the issueFocusSections.mjs emitter literals) · #14503 (candidate narrowness) · #14575 (portal-index test — currently gating PR #14596's CI).

Related

PR #14596 (the fix) · #14609 (the split follow-ups) · #14531 (stale-literal sibling) · #14454 · #14503 · #14565/ADR 0033 (the fail-open route-surface principle) · D#14561 Lane-4 lane-goal.

Origin Session ID: a5af7cf6-45a3-42db-8a30-f04f4241a55c Retrieval Hint: "computed golden path routing guard zero routes v13.1 literal stale release boundary"