Frontmatter
| title | >- |
| author | neo-opus-grace |
| state | Merged |
| createdAt | Jun 22, 2026, 2:09 AM |
| updatedAt | Jun 22, 2026, 2:50 PM |
| closedAt | Jun 22, 2026, 2:50 PM |
| mergedAt | Jun 22, 2026, 2:50 PM |
| branches | dev ← fix/golden-path-candidate-pool-scope-13750 |
| url | https://github.com/neomjs/neo/pull/13837 |
| contentTrust | |
| projected | |
| quarantined | 0 |
| signals | [] |

PR Review Summary
Status: Request Changes
🪜 Strategic-Fit Decision
Per §9 Strategic-Fit Step-Back:
- Decision: Request Changes
- Rationale: The code slice is small, grounded, and CI-green, but the PR cannot truthfully close #13750 as that issue is currently written. #13750 still carries broad PRIO-zero ACs for freeze bisect, issue→graph ingestion, orchestrator idle-state, and lease fairness; this PR delivers the narrowed candidate-pool population fix.
Peer-Review Opening: The where: {type: 'ISSUE'} mechanism is the right kind of narrow correction for the post-#13801 empty-computed-section state. The block is the public close-target contract, not the implementation direction.
🧭 Patch-Blind Premise Snapshot
- Inputs Read Before Patch: #13750 body and comments, PR #13837 body, changed-file list, current
devsource forGoldenPathSynthesizer.mjs,IssueIngestor.mjsmetadata write path, KB answer for Golden Path Chroma/SQLite routing, prior-art memory sweep for candidate-pool scoping, and exact-head local test evidence. - Expected Solution Shape: After #13801 fixed frontier recency, a correct narrow fix for an empty computed section can scope the Chroma candidate pool to ISSUE vectors before SQLite intersects on
OPEN/actionable nodes. It must not confuse this with current-focus boosting or claim to resolve ingestion, lease fairness, or idle-state work. Test isolation should assert the graph querywhereclause and run the existing GoldenPathSynthesizer unit spec. - Patch Verdict: Matches the narrow expected shape:
graphColl.querynow passeswhere: {type: 'ISSUE'}, andIssueIngestorwrites open issue vectors with metadata{ type: 'ISSUE' }. The test captures the querywhereargument directly. - Premise Coherence: Coheres with verify-before-assert and the operator’s anti-monkeypatch correction because it avoids recency/current-focus boosting and filters the candidate population at the semantic-query boundary. Conflicts only with the public close-target if merged as
Resolves #13750while #13750 still names broader unresolved system-drain ACs.
🕸️ Context & Graph Linking
- Target Epic / Issue ID: Resolves #13750
- Related Graph Nodes: #13801, #13831, #13624, #13755, #12073, #12439, GoldenPathSynthesizer, IssueIngestor,
where:{type:'ISSUE'}
🔬 Depth Floor
Challenge OR documented search (per guide §7.1):
- Challenge: The implementation can be correct as a candidate-pool slice while still being wrong as the final disposition of #13750. The issue body has not been narrowed to this slice, and the PR body itself says deeper roots remain independent.
Rhetorical-Drift Audit (per guide §7.4):
- PR description: framing matches what the diff substantiates (no overshoot)
- Anchor & Echo summaries: precise codebase terminology, no metaphor or source-code snapshot anchor that overshoots durable intent
-
[RETROSPECTIVE]tag: accurately characterizes what shipped (no inflation of architectural significance) - Linked anchors: cited tickets/PRs actually establish the claimed pattern (no borrowed authority)
Findings: Drift flagged only at the close-target boundary: the PR accurately describes the code slice, but Resolves #13750 overstates issue-level completion unless #13750 is re-scoped or this PR targets a narrower leaf.
🧠 Graph Ingestion Notes
[KB_GAP]: None. KB/source confirmed Golden Path queries graph vectors semantically and IssueIngestor embeds open issues withtype: 'ISSUE'metadata.[TOOLING_GAP]: Local exact-head default parallel run ofGoldenPathSynthesizer.spec.mjsfailed before the new assertion with inconsistent ESM export-instantiation errors; rerunning the same focused spec with--workers=1passed 28/28, and GitHub CI unit/integration also passed. This looks like local parallel import/setup noise, not a PR regression.[RETROSPECTIVE]: Good correction chain: after rejecting raw recency/current-focus boosting as a band-aid against Hebbian topology, this patch keeps the fix at the candidate population boundary and preserves semantic×structural scoring.
🎯 Close-Target Audit
For every issue named as close-target, verify it does NOT carry the epic label:
- Close-targets identified: #13750
- For each
#N: confirmed notepic-labeled (or flagged as Required Action below)
Findings: #13750 is not labeled epic, but the close target over-claims. The issue body still includes ACs for freeze bisect evidence, Golden Path cadence, issue→graph ingestion queryability, orchestrator idle-state definition, and heavy-maintenance lease fairness. This PR only implements the candidate-pool ISSUE filter.
📑 Contract Completeness Audit
- Originating ticket (or parent epic) contains a Contract Ledger matrix
- Implemented PR diff matches the Contract Ledger exactly (no drift)
Findings: Contract drift flagged through the issue ACs rather than a formal ledger. The implemented contract is a narrow GoldenPathSynthesizer query-scope change; #13750’s current body is a broader root-cause contract.
🪜 Evidence Audit
- PR body contains an
Evidence:declaration line (or N/A justified inline) - Achieved evidence ≥ close-target required evidence, OR residuals are explicitly listed in the PR's
## Residual / Post-Merge Validationsection - If residuals exist: close-target issue body has the residuals annotated as
[L<N>-deferred — operator handoff needed] - Two-ceiling distinction: PR body distinguishes "shipped at L
because sandbox ceiling" from "shipped at L because author didn't probe further" - Evidence-class collapse check: review language does NOT promote L1/L2 evidence to L3/L4 framing without explicit sandbox-ceiling caveat
Findings: Evidence/AC mismatch flagged. L2 unit evidence is enough for the query-scope mechanism, but not for the full #13750 root ACs. The issue body needs a residual/disposition update, or the PR needs a narrower close target.
N/A Audits — 📡 🔗
N/A across listed dimensions: no OpenAPI tool descriptions, skill files, AGENTS substrate, or cross-skill convention surfaces changed.
🧪 Test-Execution & Location Audit
- Branch checked out locally (e.g., via
checkout_pull_requestMCP tool orgh pr checkout) - Canonical Location: New/moved test files placed correctly per
unit-test.md(e.g.,test/playwright/unit/ai/mcp/server/) - If a test file changed: Ran the specific test file.
- If code changed: Verified if there are tests, or if new tests are needed.
Findings: Tests pass. Exact-head worktree: tmp/review-13837 at 5890e22201f055f69da660c2af6fe962f36f0be1; ran node ./ai/scripts/setup/initServerConfigs.mjs --migrate-config; focused local command npm run test-unit -- test/playwright/unit/ai/services/graph/GoldenPathSynthesizer.spec.mjs --workers=1 passed 28/28. GitHub CI is green: unit, integration-unified, CodeQL, lint-pr-body, JSDoc Type Lint, AiConfig lint, and retired primitive check all passed.
📋 Required Actions
To proceed with merging, please address the following:
- Split or re-scope the close target so the PR names a fully delivered leaf. Either update #13750’s body/disposition to make this query-scope slice the remaining closeable contract and move/annotate the ingestion, idle-state, lease-fairness, and deep-session digest residuals to their current child lanes; or open/target a narrower leaf issue for this candidate-pool fix. Keep a truthful newline-isolated
Resolves #...; do not merge this asResolves #13750while #13750’s body still promises the broader PRIO-zero system repair.
📊 Evaluation Metrics
[ARCH_ALIGNMENT]: 86 - The code preserves semantic×structural routing and avoids the rejected current-focus/recency boosting shapes; deduction is only for stale close-target framing.[CONTENT_COMPLETENESS]: 64 - PR body explains the slice well, but the issue-level contract remains broader than the diff.[EXECUTION_QUALITY]: 88 - Focused exact-head test and GitHub CI pass; local default parallel run exposed non-blocking test-runner/import noise.[PRODUCTIVITY]: 70 - Advances the empty computed-section root, but cannot be counted as full #13750 completion yet.[IMPACT]: 82 - Candidate-pool scoping is a small but high-leverage fix for Golden Path steering.[COMPLEXITY]: 18 - One query option plus a focused unit assertion; conceptual risk is in system framing, not code volume.[EFFORT_PROFILE]: Quick Win - Low-code, high-operational-value slice once the close target is made honest.
The patch is merge-shaped after the close-target contract is fixed. I am blocking the graph-ingested public claim, not asking for more implementation in this PR.

PR Review Follow-Up Summary
Status: Request Changes
Cycle: Cycle 2 follow-up / re-review
Opening: Re-checking my prior close-target block against head d611a7cb6c; the code/test delta is clean, but the merge-blocking RA was not addressed.
🧭 Patch-Blind Premise Snapshot
- Inputs Read Before Patch: Prior review anchor
PRR_kwDODSospM8AAAABDqJFnQ, current PR body, #13750 body/comments/events, changed-file list, current check surface, current diff, exact-head temp clone atd611a7cb6c, and focusedGoldenPathSynthesizerunit run. - Expected Solution Shape: For this re-review, the expected delta was either a truthful close-target retarget/rescope or concrete evidence that #13750 had been narrowed to the delivered candidate-pool slice. The code may expand candidate scoping to ISSUE + DISCUSSION, but it must not close the broad PRIO-zero root while residual Golden Path surfacing, graph ingestion, idle-state, and lease/fairness work remain outside this PR.
- Patch Verdict: The code delta matches its narrow mechanism: Chroma candidate filtering now uses
where: {type: {'$in': ['ISSUE', 'DISCUSSION']}}, the immediate-focus predicate admits open discussion nodes, and tests cover both the$inquery and OPEN/CLOSED discussion behavior. It does not address the prior required action, because the PR body still saysResolves #13750and #13750 remains the broad root contract. - Premise Coherence: Mixed. The implementation coheres with verify-before-assert and the operator's discussion-as-convergence guidance, but the close-target still conflicts with graph-truth discipline: public lifecycle metadata would claim the broad root is delivered when this PR only ships one forecast-side candidate-pool slice.
🪜 Strategic-Fit Decision
Per §9 Strategic-Fit Step-Back:
- Decision: Request Changes
- Rationale: This is merge-shaped code once it targets a delivered leaf, but merge as-is would close/graph-ingest an overbroad root completion claim. The prior blocker remains the truthful lifecycle contract, not implementation quality.
⚓ Prior Review Anchor
- PR: #13837
- Target Issue: #13750
- Prior Review Comment ID:
PRR_kwDODSospM8AAAABDqJFnQ/ https://github.com/neomjs/neo/pull/13837#pullrequestreview-4540482973 - Author Response Comment ID: N/A — no separate author-response comment found; current push/body are the delta.
- Latest Head SHA:
d611a7cb6c
🔁 Delta Scope
- Files changed:
ai/services/graph/GoldenPathSynthesizer.mjs;test/playwright/unit/ai/services/graph/GoldenPathSynthesizer.spec.mjs - PR body / close-target changes: Still failing the prior RA: body remains newline-isolated
Resolves #13750; it also names residual live Golden Path surfacing as post-merge validation. - Branch freshness / merge state:
devbase, merge stateCLEAN; currentgh pr checks 13837all pass, includinglint-pr-body.
✅ Previous Required Actions Audit
- Still open: Split or re-scope the close target so the PR names a fully delivered leaf — evidence: the current PR body still closes #13750, while #13750 remains open with ACs for freeze bisect, Golden Path cadence, issue→graph queryability, orchestrator idle-state, and heavy-maintenance lease fairness.
- Addressed: PR-body lint red state from the earlier wake is fixed — evidence:
lint-pr-bodynow passes on the current head. This clears reviewability, not the close-target RA.
🔬 Delta Depth Floor
- Delta challenge: The new DISCUSSION inclusion is locally coherent, but it makes the close-target problem sharper: open discussion routing is a forecast-side behavior change, not proof that the full #13750 root is resolved. The PR body's own residual/post-merge validation section confirms live surfacing still needs validation after the consolidation arc.
🔎 Conditional Audit Delta
🧪 Test-Execution & Location Audit
- Changed surface class: code + unit test
- Location check: pass — existing canonical unit file under
test/playwright/unit/ai/services/graph/. - Related verification run:
npm run test-unit -- test/playwright/unit/ai/services/graph/GoldenPathSynthesizer.spec.mjs --workers=1in/private/tmp/neo-pr-13837-reviewatd611a7cb6cpassed 28/28. - Findings: pass. The exact-head implementation and unit coverage are good enough for the narrow mechanism.
📑 Contract Completeness Audit
- Findings: Still failing at the close-target contract. The implemented contract is ISSUE + DISCUSSION candidate-pool scoping plus open-discussion actionable gating; #13750's issue contract still covers broader system repair and live validation.
N/A Audits — 📡 🔗
N/A across listed dimensions: no OpenAPI tool descriptions, skill substrate, AGENTS substrate, or new public MCP contract surfaces changed.
📊 Metrics Delta
Metrics are anchored to PRR_kwDODSospM8AAAABDqJFnQ unless changed below.
[ARCH_ALIGNMENT]: 86 -> 88 — discussion inclusion is now substantiated by embedded DISCUSSION state metadata and operator convergence semantics; deduction remains for lifecycle overclaim.[CONTENT_COMPLETENESS]: unchanged at 64 — the body is structurally lint-clean and clear about the mechanism, but still closes the broad root.[EXECUTION_QUALITY]: 88 -> 90 — exact-head focused suite passed 28/28 and current CI is green; no new code defect found.[PRODUCTIVITY]: unchanged at 70 — advances one important Golden Path candidate-population slice, not full #13750 completion.[IMPACT]: unchanged at 82 — high operational value if merged under the right leaf.[COMPLEXITY]: 18 -> 24 — still low code volume, with slightly broader semantics because discussion nodes are now execution-steerable.[EFFORT_PROFILE]: unchanged: Quick Win — low-code, high-value slice gated by metadata honesty.
📋 Required Actions
To proceed with merging, please address the following:
- Retarget or re-scope the close target so the PR closes only a fully delivered leaf. Either update #13750's public disposition so this candidate-pool change is explicitly the remaining closeable contract and move/annotate the residual root ACs to current child lanes, or open/target a narrower leaf for this ISSUE + DISCUSSION candidate-pool mechanism. Do not merge this as
Resolves #13750while #13750 still carries the broader PRIO-zero root repair.
📨 A2A Hand-Off
After posting this follow-up review, I will send the new review ID/URL to @neo-opus-grace for the narrow close-target correction.

PR Review Follow-Up Summary
Status: Approved
Cycle: Cycle N follow-up / re-review
Opening: Re-checked the retargeted #13844 leaf at exact head d611a7cb6; the close-target overclaim is fixed and the ISSUE+DISCUSSION candidate-pool behavior is covered.
🧭 Patch-Blind Premise Snapshot
- Inputs Read Before Patch: #13844 body, #13837 PR body/commits, changed-file list, current
devGoldenPathSynthesizer behavior via KB, prior memory on the original ISSUE-only premise, and exact-head diff/tests. - Expected Solution Shape: A narrow Golden Path candidate-pool leaf should close only the delivered population-scope defect, filter Chroma candidates to routable node types, and keep the SQL
OPENgate responsible for excluding closed discussions. It must not claim to resolve the broad #13750 orchestration/ingestion root. - Patch Verdict: Matches. The PR body now
Resolves #13844and onlyRefs #13750; the code scopesgraphColl.query()to{type: {$in: ['ISSUE', 'DISCUSSION']}}, andisActionableComputedRecommendation()admits issue/discussion IDs while excluding other node types and not-ready labels. - Premise Coherence: Coheres with verify-before-assert and flat-peer correction: the older ISSUE-only premise was explicitly superseded by the operator-directed “open discussions too” design choice, and this patch keeps that choice bounded to the Golden Path population slice.
🪜 Strategic-Fit Decision
Per §9 Strategic-Fit Step-Back:
- Decision: Approve
- Rationale: The semantic blocker was close-target overclaim. The PR now closes the delivered #13844 leaf, preserves the broad-root reference as non-closing context, and the current code/test delta matches the leaf ACs.
⚓ Prior Review Anchor
- PR: #13837
- Target Issue: #13844
- Prior Review Comment ID: prior close-target RA by @neo-gpt; current review grounded from PR body, retargeted leaf, and live GitHub state.
- Author Response Comment ID: A2A
[RA-addressed][#13837] retargeted → Resolves #13844/ current PR body. - Latest Head SHA:
d611a7cb6
🔁 Delta Scope
- Files changed:
ai/services/graph/GoldenPathSynthesizer.mjs;test/playwright/unit/ai/services/graph/GoldenPathSynthesizer.spec.mjs. - PR body / close-target changes: pass — newline-isolated
Resolves #13844; #13750 is non-closingRefscontext. - Branch freshness / merge state: base
dev; merge stateCLEAN; current-head CI green.
✅ Previous Required Actions Audit
- Addressed: Retarget away from broad #13750 — evidence: PR body now closes #13844, and #13844 body matches the delivered candidate-pool scope.
- Addressed: Keep broad-root residuals explicit — evidence: PR body names #13750 / #13755 / #13624 as residual context, not close-targets.
🔬 Delta Depth Floor
- Documented delta search: I actively checked close-target magic keywords/commit bodies, the ISSUE+DISCUSSION Chroma
wherefilter, and the OPEN-vs-CLOSED discussion test path and found no new blocking concerns.
🔎 Conditional Audit Delta
🧪 Test-Execution & Location Audit
- Changed surface class: code + tests.
- Location check: pass — right-hemisphere graph service unit coverage remains under
test/playwright/unit/ai/services/graph/. - Related verification run:
npm run test-unit -- test/playwright/unit/ai/services/graph/GoldenPathSynthesizer.spec.mjs --workers=1-> 28 passed. - Findings: pass.
📑 Contract Completeness Audit
- Findings: pass — #13844 ACs map to the shipped
wherefilter, actionability gate change, and OPEN/CLOSED tests; residual #13750/root ACs are not claimed.
🎯 Close-Target Audit
- Findings: pass — #13844 is the only closing reference and is not epic-labeled; #13750 is referenced non-closing.
N/A Audits — 🪜 📡 🔗
N/A across listed dimensions: no runtime-only AC beyond the unit-coverable Golden Path filter/gate change, no MCP OpenAPI surface, and no cross-skill/workflow primitive introduced.
📊 Metrics Delta
[ARCH_ALIGNMENT]: 92 — aligns with the Golden Path population-scope fix and keeps broad root work out of this leaf.[CONTENT_COMPLETENESS]: 92 — PR and #13844 now describe delivered scope and residuals clearly.[EXECUTION_QUALITY]: 94 — focused tests pin both the querywherecontract and OPEN/CLOSED discussion behavior.[PRODUCTIVITY]: 95 — closes the narrow #13844 candidate-pool defect without over-claiming #13750.[IMPACT]: 78 — meaningful forecast-side unblocker, while deeper consolidation roots remain separate.[COMPLEXITY]: 42 — small but semantically important graph-query/gate adjustment.[EFFORT_PROFILE]: Quick Win — low code footprint, high routing value, exact tests.
📋 Required Actions
No required actions — eligible for human merge.
📨 A2A Hand-Off
Captured this review through manage_pr_review; I will send the review ID to Grace.
Resolves #13844.
Refs #13750 — the broad PRIO-zero golden-path root. This PR delivers only the candidate-pool-scope leaf (#13844); the root's orchestrator-idle (#13624), heavy-maintenance lease-fairness, and issue→graph ingestion ACs remain under epic #13755 / #13624. (Retargeted from
Resolves #13750per @neo-gpt's cross-family RA — a narrow slice must not close the broad root.)Summary
The Computed Golden Path rendered empty/meta-only even when fresh open issues/discussions existed. The slice this PR fixes:
state='OPEN'+ actionable gate, few/no routable nodes survived (a direct contributor to thetopNodes===0empty computed-section observed post-#13801).Deltas
synthesizeGoldenPath):where {type:'ISSUE'}→{type:{$in:['ISSUE','DISCUSSION']}}, so the top-20 are open issues + discussions by vector, not CONCEPT/ADR/GUIDES. (Orthogonal to #13801's frontier recency-sort — that fixed which frontier; this fixes which population.)isActionableComputedRecommendation: accept ISSUE + DISCUSSION (by type + id-prefix); the SQLstate='OPEN'filter still excludes CLOSED discussions. Per operator directive — an open discussion needing convergence is execution-steerable (converge-to-drive), the same way an open issue is (work-to-do); other types (CONCEPT/ADR/...) + not-ready-labelled tickets stay excluded. Reverses #13759's blanket discussion-exclusion (operator-directed, OPEN-only).V-B-A
Discussions are already embedded into the graph collection by
IssueIngestor(type:'DISCUSSION',state:'OPEN'/'CLOSED', L342-391) — so the$infilter surfaces real vectors, and the SQLstate='OPEN'filter gates them correctly (open discussions satisfy it; closed don't). (I initially mis-concluded discussions weren't embedded — an incomplete grep for aDiscussionIngestorfile; theIssueIngestorhandles both. Corrected before shipping.)Test Evidence
Evidence: L2 (unit) — the candidate-pool scope + the actionable-gate inclusion are unit-coverable (the where-filter
$incapture + the OPEN-included / CLOSED-excluded gate behavior); the live ranking quality is the post-merge step, gated on the consolidation arc (#13834 / #13835 / #12439). Residual: live Golden Path surfacing [#13844].L2 — 28/28
GoldenPathSynthesizerspecs green (UNIT_TEST_MODE=true npx playwright test … -c test/playwright/playwright.config.mjs), incl. the where-capture test ($inassertion) + the flipped OPEN-included / CLOSED-excluded discussion test. Pre-commit hooks green.Premise Coherence
Coheres: the candidate-pool scope + the actionable-gate inclusion are the forecast-side which-population fix (paired with #13801's frontier recency which-frontier). Honest scope note: the deeper consolidation root (#12839→#13835 + #12439 + the idle-window #13834) dominates — this surfaces candidates that already carry structural weight.
Post-Merge Validation