fix(reasoning): exclude terminal nodes from active selector

This commit is contained in:
2026-08-14 09:02:08 +01:00
parent 865565b7af
commit 34eb0cd4e3
4 changed files with 265 additions and 2 deletions
+8
View File
@@ -226,6 +226,14 @@ Experiment 54N tested whether an interpretation disagreement can be judged for m
- £700k figure preserved semantically (in reason text, not dedicated value field). No directional recommendation recorded for the decision.
- Status pending Rob's review.
### 60B.42 active selector terminal-status guard
- 60B.41 confirmed `selectActiveUnknownCandidate(...)` filtered only by `kind === "unknown"` and `resolvedNodeIds`, so terminal-status unknown nodes could still enter scoring when absent from `resolvedNodeIds`.
- Added a bounded selector-only guard in `lib/graph/utils.js`: active-selector candidates now exclude `status in ["known", "resolved", "contradicted"]` before scoring.
- Focused tests added in `tests/graph/apply-proposal.test.js` cover known-only null return, known/resolved/contradicted exclusion, and unchanged unresolved ranking.
- Focused preservation run passed via `npx vitest run tests/graph/apply-proposal.test.js -t "60B.42|60B.11|replaces downstream pricing"`.
- Broader duplicated post-mutation eligibility checks remain unchanged; this fixes the selector contract only, not the full stale-question lifecycle.
### When This Knowledge-Management Phase Is Complete
Provisional criteria for review (all confirmed met by Experiment 38 cold-start test):