Commit Graph
353 Commits
Author SHA1 Message Date
robbond ca284d9c04 test(confidence-engine): preserve deep investigation episode state 2026-10-05 07:54:17 +01:00
robbond 90649c0495 test(confidence-engine): compose deep CU checkpoints 2026-10-05 06:44:29 +01:00
robbond 72b10d0050 test(confidence-engine): capture deep-investigation checkpoints 2026-10-05 06:40:28 +01:00
robbondandClaude Code b8c2909b5f feat(confidence-engine): show investigation learning in report
Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-10-02 08:26:07 +01:00
robbond b448f522f6 feat(confidence-engine): deriveInvestigationLearning deterministic learning projection from canonical provenance
Adds deriveInvestigationLearning to episode-preparation.js: pure function that maps resolvedNodeIds + Contributions + Findings to investigation learning propositions, preserving node.label question text and contribution-provenance ordering.

Owning tests prove: correct provenance, cross-question isolation, eligibility rule (null/agree eligible; not_quite/not_relevant excluded), unresolved exclusion, no-eligible-material omission, text preservation, and provenance authority over originatingTargetNodeId shortcut.
2026-10-02 08:18:19 +01:00
robbond 0cc9d087c3 fix(confidence-engine): permit empty plausibleInterpretations for honest zero state
- Zod validator: plausibleInterpretations accepts empty string (zero interpretations) while remaining required and string-typed
- Prompt instruction: SECTION B now explicitly requests "" instead of absence prose when no plausible inputs exist
- Report generation/update paths derive hasPlausibleInterpretations from actual synthesized data rather than hard-coding true
- Tests: updated validation contract, added hasPlausibleInterpretations derivation assertions, updated seam tests to use derived values
2026-10-02 06:48:24 +01:00
robbondandClaude Code 56b5f0099c feat(confidence-engine): show unresolved report questions
Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-10-01 14:20:01 +01:00
robbond 3d0c90e64c fix(confidence-engine): unwrap overview provider response
Production: synthesizeInvestigationOverview() now passes providerResult.response
to validateOverviewResponse() instead of the raw envelope, matching the proven
pattern in current-understanding-synthesis.js.

Regression: fakeProvider returns real-provider envelope shape { response, providerApiPath }
and four new regression tests verify unwrapping succeeds with valid response
and fails correctly with invalid response inside the envelope.

Handoff: documented defect confirmed, fix applied, and owning regression added.
2026-09-30 16:06:14 +01:00
robbond 8d268efb12 test(confidence-engine): support zero-finding report experiment case
- Add nullish coalescing on fix.findings ?? [] so absent findings
  array in a fixture is represented as zero Findings [] for the A/B
  input apparatus.

- Append product-launch second controlled case (live-product-launch-
  start-response.json) with zero Findings to the epistemic comparison
  test suite. All 34 tests pass deterministically.

- Update docs/current-handoff.md to record the zero-Findings case.
2026-09-30 13:25:22 +01:00
robbondandClaude Code d387b66c03 test(confidence-engine): clarify controlled report experiment boundary
Retained deterministic input-control test proving that A/B apparatus
correctly holds supportedEvidence, findings, plausibleInterpretations,
scenarioState, and providerConfig constant while only varying unresolved
question visibility. Added buildOverviewSynthesisPrompt identity proof
that full vs filtered graph produce identical prompt text.

Corrected handoff semantics: deterministic input filtering does NOT prove
model output behaviour; live two-call semantic comparison remains required.
Preserved prior imperfect live evidence with correct qualification about
uncontrolled plausibleInterpretations divergence.

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-09-30 12:30:36 +01:00
robbondandClaude Code ada83de1db test(confidence-engine): control report epistemic comparison inputs
Deterministic test (17 cases) proves A/B inputs are correctly controlled:
- supportedEvidence identical in A and B
- findings identical in A and B
- plausibleInterpretations identical (fixed canonical interpretation) in A and B
- scenarioState identical in A and B
- providerConfig identical in A and B
- only unresolvedQuestions visibility differs (A=hidden, B=canonical)
- unresolved questions excluded from evidence and plausible interpretations
- fixed interpretation carries NON-EVIDENCE epistemic status

Also corrects Loop 2 documentation to reflect that three-category
invariance was NOT established (plausibleInterpretations differed
between calls despite identical input), retaining only the narrower
valid finding: no unresolved Open Question was promoted to evidence.

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-09-30 11:44:51 +01:00
robbondandClaude Code ef6592cd91 test(confidence-engine): add progressed investigation experiment fixture
Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-09-30 10:55:13 +01:00
robbond a6796c6f73 fix(confidence-engine): bound focused investigation input 2026-09-10 13:23:39 +01:00
robbond 2cb2d556fd fix(confidence-engine): sanitize reasoning error responses 2026-09-10 11:39:13 +01:00
robbond b9d49ff277 fix(confidence-engine): correct legal footer layout 2026-09-10 06:40:30 +01:00
robbond 27ded883e5 feat(confidence-engine): add tester legal pages 2026-09-10 06:18:28 +01:00
robbond 96b47d16a3 fix(confidence-engine): decouple app health from provider 2026-09-09 20:00:52 +01:00
robbond 00d7593ffd fix(confidence-engine): preserve scenario during outage 2026-09-09 19:45:55 +01:00
robbond 60c90bdd6a fix(confidence-engine): propagate start outage classification 2026-09-09 19:36:29 +01:00
robbond 707fe1b3c0 fix(confidence-engine): sanitize start reasoning outage 2026-09-09 18:02:29 +01:00
robbond ed033e71d5 fix(confidence-engine): sanitize focused reasoning outage 2026-09-09 17:34:56 +01:00
robbond bb62a65174 fix(confidence-engine): preserve external auth callback origin 2026-09-09 11:26:57 +01:00
robbond 0125975ccb fix(confidence-engine): sanitize public health response 2026-09-09 10:33:54 +01:00
robbond f557175bfb fix(confidence-engine): keep health endpoint public 2026-09-09 10:01:10 +01:00
robbond d6df1d210e feat(confidence-engine): use server investigation persistence 2026-09-08 19:21:05 +01:00
robbond 6dd447e56a feat(confidence-engine): add authenticated investigation persistence 2026-09-08 17:15:46 +01:00
robbond 30bf44f2e5 feat(confidence-engine): establish authenticated product boundary 2026-09-08 16:30:07 +01:00
robbond 1c17452bee feat(confidence-engine): add dark mode 2026-09-08 11:04:49 +01:00
robbond 85b9f4411f fix(confidence-engine): reopen resolved unknowns by graph state 2026-09-08 09:42:46 +01:00
robbond 0b5a38f83d fix(confidence-engine): persist done-for-now episode closure 2026-09-07 18:36:38 +01:00
robbond 949a7024b3 fix(confidence-engine): allow no-op episode reconsideration 2026-09-07 15:50:50 +01:00
robbond ae00e70ced fix(confidence-engine): unwrap synthesis provider response 2026-09-07 15:50:50 +01:00
robbond 7548a6af59 fix(confidence-engine): supply synthesis output schema 2026-09-07 13:44:57 +01:00
robbond 3f2e2e05ae fix(confidence-engine): define focused relationship contract 2026-09-07 13:28:38 +01:00
robbond 14630cf6b7 experiment(confidence-engine): trace focused deconstruction failures 2026-09-07 13:08:08 +01:00
robbond 0cbe49913e experiment(confidence-engine): trace live openai schema boundary 2026-09-07 12:51:13 +01:00
robbond 0d27d4935b fix(confidence-engine): enforce openai strict object invariants 2026-09-07 12:22:03 +01:00
robbond e289f0be1f fix(confidence-engine): handle propertyless openai object schemas 2026-09-07 10:59:28 +01:00
robbond 0eadef6e3b fix(confidence-engine): honor openai alternate output schema 2026-09-07 10:18:41 +01:00
robbond bb3082d633 experiment(confidence-engine): route UI journey provider centrally 2026-09-07 09:35:53 +01:00
robbond 5878ce45ec experiment(confidence-engine): add reconstruction-only helper flag 2026-09-06 18:22:20 +01:00
robbond a93b6798cc fix(confidence-engine): supply focused deconstruction schema 2026-09-06 16:21:26 +01:00
robbond 188dd04ab9 fix(confidence-engine): unwrap focused deconstruction response 2026-09-06 14:47:23 +01:00
robbond d24ad48f62 test(confidence-engine): add canonical manufacturing scenario 2026-09-06 12:17:46 +01:00
robbond e8d401e506 fix(confidence-engine): extract raw openai response text 2026-09-06 11:45:24 +01:00
robbond 0bb2f01100 experiment(confidence-engine): isolate reconstruction observation 2026-09-06 10:31:45 +01:00
robbond 215c783d11 experiment(confidence-engine): complete openai reconstruction apparatus 2026-09-06 10:06:06 +01:00
robbond a45dd903cf experiment(confidence-engine): add alias-capable experiment runtime 2026-09-06 08:29:31 +01:00
robbond 1daf2bb6ce experiment(confidence-engine): expose reconstruction provider seam 2026-09-06 08:01:29 +01:00
robbond 860ee6fc5b experiment(confidence-engine): add openai provider apparatus 2026-09-06 07:50:47 +01:00