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

3.0 KiB

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.jsclassifyCandidateOrdering() 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)