diff --git a/docs/v0.6-release-notes.md b/docs/v0.6-release-notes.md new file mode 100644 index 0000000..e627b6a --- /dev/null +++ b/docs/v0.6-release-notes.md @@ -0,0 +1,89 @@ +# v0.6 Release Notes + +## Purpose + +v0.6 turns the engine into a deterministic recursive reasoning system that keeps next questions, decomposition, propagation, and confidence updates explicitly grounded in the situation graph. + +## Capabilities added + +- deterministic unknown selection explanations +- explicit ambiguity handling instead of silent tie-breaking +- comparability assessment before relationship reasoning +- relationship classification after comparability +- reasoning-stage progression after comparability answers +- graph-backed next questions via explicit unknown nodes +- investigation-strategy-based question formulation +- atomicity assessment for selected unknowns +- composite-unknown decomposition into child unknowns +- child-quality validation for decomposition outputs +- upward propagation from resolved children to parents and ancestors +- separation of evidence confidence, completeness, and conclusion confidence +- deterministic cross-branch corroboration, conflict, and duplicate-evidence handling +- developer-facing reasoning architecture documentation + +## Reasoning pipeline summary + +```text +Scenario +→ Reconstruction +→ Initial graph +→ Deterministic unknown selection +→ Question +→ Answer +→ Proposal +→ Proposal parsing / validation +→ Graph update +→ Reasoning-state rebuild +→ Comparability assessment +→ Relationship classification +→ Emergent unknown creation / reuse +→ Atomicity assessment +→ Optional decomposition +→ Propagation +→ Confidence / completeness / corroboration update +→ Next active unknown +→ Next question +``` + +## Core invariants + +- every asked question must originate from an explicit unresolved unknown +- unknown selection is deterministic +- ambiguity is preserved explicitly when no justified distinction exists +- relationship reasoning cannot precede comparability +- parent nodes cannot resolve before completion rules are met +- confidence cannot outrun completeness +- duplicate evidence cannot increase confidence +- conflicting evidence caps conclusion confidence +- cross-branch corroboration only counts for distinct branches with distinct evidence keys +- the LLM proposes updates but does not mutate the graph directly + +## What v0.6 proved + +- graph-backed questioning works better when every justified next question maps to an explicit unresolved node +- broad unknowns can be decomposed deterministically before direct questioning +- resolved child evidence can be propagated upward without prematurely resolving parent reasoning +- confidence becomes easier to reason about when evidence quality, completeness, and conclusion strength are separated +- deterministic cross-branch corroboration can improve support without double-counting repeated evidence + +## Known limitations + +- sibling selection still depends on the existing deterministic scorer and may choose a justified next branch that is not always the intuitively expected one +- cross-branch corroboration is limited to direct child branches of the same parent +- no multi-hop corroboration exists across unrelated subtrees +- reasoning remains bounded to explicitly represented graph structure and user-provided answers + +## Deliberate exclusions + +- no persistence +- no autonomous exploration +- no probabilistic reasoning +- no Bayesian reasoning +- no semantic embeddings +- no expert mode +- no multi-hop corroboration across unrelated subtrees +- no heavy graph visualisation + +## Next experimental question + +`Can the engine preserve and reuse successful reasoning structures across separate cases without turning prior experience into unquestioned assumptions?` diff --git a/tests/graph/selection-influence-diagnostic.test.js b/tests/graph/selection-influence-diagnostic.test.js index a38521b..8bd0d3b 100644 --- a/tests/graph/selection-influence-diagnostic.test.js +++ b/tests/graph/selection-influence-diagnostic.test.js @@ -290,7 +290,7 @@ describe("selection influence diagnostic", () => { expect(diagnosticRecord.neutralSelection.status).toBe("ambiguous"); expect(diagnosticRecord.selectedExplanationContributions).toBeUndefined(); expect(diagnosticRecord.tieQuestion).toBe( - "What changed during the period that could explain why Revenue increased by 18%, but cash in the bank fell over the same period?", + "Were these figures measured on the same basis and at the same scale?", ); expect(diagnosticRecord.tieQuestion.toLowerCase()).not.toMatch( /accounts receivable|capex|debt repayments|working capital/,