Commit Graph
58 Commits
Author SHA1 Message Date
robbond 273f715ae0 fix: complete scope-aware condition status evaluation
Handle the actual long-investigation fixture wording without rewriting conditions or evidence.

Fixes:
- Add 'is achievable' to future-feasibility phrase list so present-state evidence correctly leaves future conditions unresolved (different_timeframe scope)
- Add 'european equivalent' to differentiation related keywords so observation-5 evidence directly shares the differentiation concept with the condition (direct_match scope)

Updates:
- decision-condition-status tests to use present-state condition text where needed, and correct expectations for the two actual fixture cases
- Evidence-condition-scope tests for both actual fixture examples
- Design evolution log with Experiment 25B findings confirming long-investigation statuses
2026-08-06 13:05:29 +01:00
robbond 1a9a9a94fe experiment: compare evidence and condition scope 2026-08-06 11:36:42 +01:00
robbond da291c715b experiment: derive condition status from answer evidence 2026-08-06 11:17:17 +01:00
robbond aabb797e5d experiment: classify answer evidence direction
Move EVIDENCE_DIRECTION_GROUPS out of the mock fixture library into
lib/graph/evidence-direction.js where it belongs. Remove unused
DECISION_CONDITIONS and CONTRADICTION_KEYWORDS exports from scenarios.

Add Experiment 24A entry to the design log.
2026-08-06 10:32:48 +01:00
robbond 3119635211 experiment: assess decision condition status 2026-08-06 09:04:06 +01:00
robbond 32aa3f237a experiment: test questions against decision conditions 2026-08-06 08:36:44 +01:00
robbond 89650b44df experiment: test question relevance against decision target 2026-08-06 06:19:09 +01:00
robbond 445aaa7b37 experiment: add passive question importance test 2026-08-05 19:48:11 +01:00
robbond 1df4669b32 experiment: add passive behaviour selection
Implement Experiment 19: deterministic behaviour selector with five
behaviours (Acknowledge, Clarify, Summarise, Continue, Pause).

- lib/behaviour-selection/behaviour-selector.js — Pure function selector
  applying v0.1 rules in priority order (acknowledge > clarify > summarise >
  pause > continue). Defaults to Continue with low confidence when no rule
  matches or assessment is incomplete. Guards against partial objects.

- tests/behaviour-selector.test.js — 51 tests covering all five behaviours,
  priority ordering, contract conformance, determinism, edge cases, and
  scenario-based validation with mock investigations.

- docs/design-evolution-log.md — Close Experiment 18 (record what assessor
  enabled for Behaviour Selection), add Experiment 19 section with hypothesis,
  scope, evaluation criteria, and open questions.

Passive integration only: no changes to reasoning engine, prompts, graph
generation, decomposition, narrative generation, API contracts, UI behaviour,
or Ollama integration.
2026-08-05 18:26:31 +01:00
robbond 1273861f0c exp(18): implement investigation state assessment layer
Implement the three-dimensional assessment (phase, progress, conversation
health) that sits between narrative and behaviour selection.

Key changes:
- lib/assessment/investigation-state-assessor.js: assessor module with
  countObservations, assessPhase, assessProgress, assessConversationHealth,
  assessInvestigationState — deterministic classifiers using known rules
- tests/investigation-state-assessor.test.js: 51 tests covering phase
  classification (orienting→concluding), progress thresholds, health
  conditions, confidence aggregation, edge cases, and observation counting
- lib/graph/orchestrator.js: integration calls passing correctly-shaped input
  to assessInvestigationState() at three call sites (~552, ~904, ~1013)

Design decisions encoded in this iteration:
- countObservations counts nodes with known/resolved status + high-confidence
  non-unknown non-state nodes (not just explicit observation-kind nodes)
- Phase uses seven values including cannot_determine for insufficient data
- Progress uses resolution ratio thresholds: accelerating (>0.6), steady
  (0.2-0.6), stalled (<0.2 with ≥1 resolved)
- Overall confidence = minimum across all three dimensions (conservative)

Also adds investigation-state-assessment-contract.md and updates
design-evolution-log, investigation-state-assessment.md (status header),
and investigation-turn-cycle.md (implementation status table).
2026-08-05 17:52:18 +01:00
robbond 6eaf0fc246 experiment: improve semantic graph projection
Experiment 13 — Semantic Facilitator Translation

- Classify nodes by semantic role (observation, question, explanation,
  scaffolding, relationship) rather than graph kind. Scaffolding suppressed
  entirely before section routing.
- Three-tier filtering: scaffolding patterns > internal vocabulary > technical
  summary patterns. Prevents structural noise from contaminating user-facing
  sections.
- Deduplicate by normalised text — merge duplicate observations expressing the
  same finding.
- Route resolved unknowns and assumptions to known section with epistemic
  labels instead of treating them as unresolved questions.
- Prefer concrete observations (numbers, change language, temporal refs) over
  abstract labels in ranking.
- Closed Experiment 12 as confirmed. Added Experiment 13 documentation.
- Updated UX guidelines with Semantic Projection principles.
- 37 tests: filtering, classification, deduplication, ranking, framing, mock
  data integration, edge cases.
2026-08-05 15:26:29 +01:00
robbond 1998b84ae1 experiment: facilitator view from reasoning graph 2026-08-05 15:00:42 +01:00
robbond 86d9bc3f48 refactor: clarify investigation map as ux placeholder 2026-08-05 10:20:28 +01:00
robbond ce673b8eb4 feat: add investigation map workspace view 2026-08-05 10:10:16 +01:00
robbond a4dc165385 fix: show initial analysis reasoning state 2026-08-05 10:02:10 +01:00
robbond c4f5744c30 feat: Phase 2-5 UX enhancements — recovery cards, session persistence, summary panel, contract backlog
Phase 2: Recovery state components (ProviderUnavailableCard,
MalformedResponseCard, UnexpectedStateCard, ContinueLaterBanner) with
automatic error detection for provider/network/malformed/unexpected states.

Phase 3: Session persistence via sessionStorage — save after each
successful turn, restore on mount, clear on restart/reset. Continuelater banner shown when session is restored.

Phase 4: InvestigationSummaryPanel component displaying current status,
understanding summary, questions answered/remaining, investigation timestamps.

Phase 5: docs/reasoning-contract-backlog.md documenting all mocked
fields (60+ rows across 7 categories) with feature/UI need/mock/desired
output/stage/notes columns.

Also: wired onRestart through ReasoningWorkspace → ScenarioForm, fixed
getErrorType scope issues, removed broken window.__restartInvestigation.
2026-08-05 06:48:59 +01:00
robbond fd575e7fcb fix: make mock terminal states internally consistent 2026-08-04 18:52:36 +01:00
robbond 2fd12b124c fix: reset update state after mock analysis 2026-08-04 16:06:06 +01:00
robbond 6c033e1f44 fix: complete mock start lifecycle 2026-08-04 15:07:36 +01:00
robbond 6e4db76807 fix: align mock responses with real UI contract 2026-08-04 14:11:59 +01:00
robbond 97a4847770 feat: add mock investigation mode for UI development
- lib/mocks/confidence-engine/mock-client.js: self-contained ESM interceptor with 6 inline turn fixtures, no external deps or require() calls
- components/scenario-form.jsx: MOCK_ENABLED compile-time boolean, useMockGlobals() hook injects window.__MOCK_* globals at runtime, ternary dispatch to mockFetch
- .env.example: NEXT_PUBLIC_CONFIDENCE_ENGINE_MOCKS, MOCK_DELAY, MOCK_SCENARIO env vars
- docs/v0.7-ui-mock-mode.md: setup, scenarios (default/complete/error), architecture, safety rules, fixture schema
2026-08-04 13:56:15 +01:00
robbond fe6a9925cb fix: stabilise multi-turn question progression 2026-08-03 13:55:39 +01:00
robbond 34c25fcb43 fix: reselect after reasoning pattern filtering 2026-08-03 12:39:01 +01:00
robbond c27320984c feat: enforce reasoning pattern consistency 2026-08-03 12:10:57 +01:00
robbond 3e2edd2edc fix: continue question selection after graph updates 2026-08-03 11:28:49 +01:00
robbond b00928d6fb feat: introduce reasoning pattern selection 2026-08-03 10:25:26 +01:00
robbond 42d4da3496 feat: decompose non-answerable unknowns 2026-08-03 09:53:28 +01:00
robbond db994d7764 fix: make graph-backed questions authoritative 2026-08-03 09:13:52 +01:00
robbond ef04b9e494 fix: normalise reported claim evidence kind 2026-08-03 08:50:37 +01:00
robbond 3c0f7f5a45 feat: enforce one-concept questions 2026-08-03 08:40:39 +01:00
robbond b2ffc54964 feat: evaluate deterministic cross-branch corroboration 2026-08-03 07:19:20 +01:00
robbond 1d64144e01 feat: separate confidence from reasoning completeness 2026-08-03 07:05:20 +01:00
robbond 49765e95a0 feat: propagate child resolution through reasoning graph 2026-08-03 06:52:52 +01:00
robbond d52690cf2b feat: decompose composite unknowns before questioning 2026-08-03 06:32:12 +01:00
robbond 0723c2f49a feat: decompose composite unknowns before questioning 2026-08-02 19:24:38 +01:00
robbond b1c633ba5c feat: back next questions with explicit graph unknowns 2026-08-02 19:03:07 +01:00
robbond 25a989450c feat: advance reasoning after comparability is resolved 2026-08-02 17:06:34 +01:00
robbond 7d408701b5 fix: defer relationship classification until comparability is established 2026-08-02 16:48:10 +01:00
robbond c97f5f7303 feat: classify observation relationships after comparability 2026-08-02 16:40:24 +01:00
robbond 0c7558d31f feat: introduce comparability assessment before contradiction reasoning 2026-08-02 16:28:11 +01:00
robbond 51ce356218 fix: handle unjustified unknown selection ties 2026-08-02 16:09:00 +01:00
robbond 586802950d feat: explain deterministic unknown selection 2026-08-02 15:27:00 +01:00
robbond 5ef9710293 Implemented Investigation Strategy 2026-08-02 15:10:49 +01:00
robbond 781d6a462f test: generalise question priority across decisions 2026-08-02 13:02:49 +01:00
robbond 48ce66dddb feat: formulate follow-up questions from graph context 2026-08-02 12:47:34 +01:00
robbond 4affadab4b fix: link emergent unknowns to answer-derived graph nodes 2026-08-02 12:17:49 +01:00
robbond 392564ed61 feat: prioritise follow-up questions by information value 2026-08-02 11:11:55 +01:00
robbond 72ef175971 feat: surface new unknowns after graph updates 2026-08-02 10:30:59 +01:00
robbond a9bce79658 feat: add one-turn situation graph update UI 2026-08-02 09:43:42 +01:00
robbond cb77f955ed feat: apply validated graph update proposals 2026-08-02 08:24:56 +01:00