Files
confidence-engine/docs/checkpoint-60b93.md
T

48 lines
3.0 KiB
Markdown

# Checkpoint 60B.93 — Investigation Ownership Preservation
## Starting state
- HEAD: `d908f37`
- Branch: `feature/decision-closure-ownership-v0.47`
## Two ownership invariants implemented
### 1. Substantive-tie active ownership (lib/graph/utils.js)
When all leading structural candidates are tied after score, structural, and semantic checks, the currently active investigation target (`activeUnknownNodeId`) is preserved as the selection winner — provided it remains eligible (unresolved, not contradicted) and among the top ties. Stable label/display-order ordering is only used as a final fallback when there is no active candidate or the active node does not remain tied.
### 2. Question-rejection active ownership (lib/graph/apply-proposal.js)
When a selected candidate's graph-backed question formulation is rejected as too complex (decomposition-required), the system does NOT reseat investigation ownership to another candidate. The original selection target retains its identity with `selectedQuestion = null` and an explicit rejection reason.
## Six exact verification commands and results
| # | Command | Result |
|---|---------|--------|
| 1 | `npx vitest run tests/graph/utils.test.js` | PASS (83/83) |
| 2 | `npx vitest run tests/graph/orchestrator.test.js -t "retains ownership when the strongest target's formulated question is rejected"` | PASS |
| 3 | `npx vitest run tests/graph/orchestrator.test.js -t "replays the captured live product-launch start graph through deterministic graph-backed question selection"` | PASS |
| 4 | `npx vitest run tests/graph/apply-proposal.test.js -t "QUESTION_CONTINUATION"` | PASS |
| 5 | `npx vitest run tests/graph/question-formulator.test.js -t "60B.84"` (located in question-formulator, not apply-proposal) | PASS |
| 6 | `npx vitest run tests/graph/apply-proposal.test.js -t "State B"` | PASS |
## Classification: A — CHECKPOINT GREEN
## Captured fixture path
`tests/fixtures/live-product-launch-start-response.json`
## Reasoning files included
- `lib/graph/utils.js``classifyCandidateOrdering()` active-node tie preservation
- `tests/graph/utils.test.js` — 5 new/modified ownership guard tests
- `lib/graph/apply-proposal.js` — question-rejection no-res eating invariant
- `tests/graph/orchestrator.test.js` — 2 new product-launch regression tests
## What this checkpoint establishes
1. Active investigation ownership is preserved across complete substantive ties when the active node remains eligible.
2. Question-formulation rejection does not transfer ownership to a weaker candidate.
3. Neither fix breaks QUESTION_CONTINUATION, 60B.84, or State B.
4. The captured live product-launch case deterministically preserves ntpt9ki as the active target through question rejection.
## What remains unproved
- Live behavioural validation of the fixes in a full product-launch interaction
- Whether same-target reformulation would produce better user outcomes than no-question
- Full-suite state beyond these six guards
- The correctness of the underlying question-complexity heuristic (separate concern)