Commit Graph
100 Commits
Author SHA1 Message Date
robbond 32184694c5 experiment: test qualified-answer reasoning 2026-08-12 13:35:40 +01:00
robbond a78f3edb10 experiment: choose declaration recovery boundary 2026-08-12 13:27:02 +01:00
robbond a40a3e343e experiment: diagnose null semantic mutation path 2026-08-12 13:19:37 +01:00
robbond eaf3194752 experiment: observe direct meaning/action fields on anchored update 2026-08-12 12:09:32 +01:00
robbond 6a04d62800 docs: record accepted answer-meaning capture 2026-08-12 12:01:16 +01:00
robbond c4431997b1 tooling: capture accepted answer meaning directly 2026-08-12 12:00:18 +01:00
robbond d2891730af experiment: rerun incremental meaning on anchored uncertainty 2026-08-12 11:19:47 +01:00
robbond f23e2b2de0 docs: record update-only previous-question fix 2026-08-12 10:41:31 +01:00
robbond 8526aa4b69 tooling: supply anchored previous question in update-only mode 2026-08-12 10:41:02 +01:00
robbond 70db093cb1 experiment: test incremental meaning on existing uncertainty 2026-08-12 10:34:53 +01:00
robbond ce01e70010 tooling: add pre-anchored update-only mode to canonical harness
Add FIXTURE_MODE=updateOnly support that bypasses Start and sends the
committed fixture (tests/fixtures/pre-anchored-update-savings-realism.json)
directly as an Update request body through production HTTP route.

scripts/reproduce-multi-turn-investigation.mjs:
  - Added ESM imports for deterministic fixture loading (fs, fileURLToPath, path)
  - Added FIXTURE_PATH constant pointing to committed fixture
  - Added fixtureMode env-var selector and runUpdateOnlyMode() function
  - Validates ANSWER_2 before any live call (zero calls if missing)
  - Verifies single savings-realism anchor invariant on load
  - Preserves all hardened capture fields in pre-anchored mode
  - Normal-mode Start→Update chain preserved under guard clause

tests/reproduce-multi-turn-investigation.harness.test.js:
  - Added 7 new harness tests for pre-anchored scenarios (46 total, all pass)
  - Updated runPreAnchoredSimulation to persist rejectedProposalSnapshot on rejection
  - Added runPreAnchoredSimulationWithBlock() helper

docs/:
  - New docs/experiment-57j78.md with full apparatus description
  - Updated docs/current-handoff.md with 57J.78 section
2026-08-12 10:19:09 +01:00
robbond 9b7721c610 experiment: audit pre-anchored live apparatus 2026-08-12 09:56:11 +01:00
robbond 85fb2b4256 experiment: validate controlled structural no-op live 2026-08-12 09:35:05 +01:00
robbond 8184e050c8 docs: record pre-anchored update apparatus 2026-08-12 09:13:40 +01:00
robbond d77a1ff04d tooling: add pre-anchored update fixture 2026-08-12 09:11:20 +01:00
robbond f78061c1db experiment: validate intentional structural no-op live 2026-08-12 08:49:40 +01:00
robbond 67699ecd03 docs: record structural action capture hardening 2026-08-12 08:33:06 +01:00
robbond beef434a6f tooling: capture structural action declaration in live harness 2026-08-12 08:32:21 +01:00
robbond fc06ff02e4 experiment: rerun structural action contract live 2026-08-12 08:26:58 +01:00
robbond 4de871092f docs: record structural action guard cleanup 2026-08-12 08:17:28 +01:00
robbond bd3c7d59ae fix(graph): make structural action contract authoritative 2026-08-12 08:15:41 +01:00
robbond c899ad620c experiment: validate structural action contract live 2026-08-12 08:04:41 +01:00
robbond 1b3bbd59aa docs: record structural action contract implementation 2026-08-12 07:29:28 +01:00
robbond 6aef806845 feat(graph): add structuralActionRequired contract (57J.67)
- Add structuralActionRequired field to graphUpdateSchema (optional boolean nullable)
- Validate declaration consistency in validateGraphUpdate():
  - true requires meaningful mutation (addedNodes/updatedNodes/addedEdges)
  - false permits intentional no-op when userSupportedMeaning populated
  - null/absent with meaning → reject
  - true/false mismatch on output shape → reject
  - preserve legacy no-op guard for non-contract paths
- Update prompt-builder: add field to required list, insert contract section between rules and Additional Guidance with two mandatory sentences
- 50 new tests: schema validation (4), prompt builder content checks (10), utils contract matrix (10), plus 26 existing suite migrations

All 197 graph tests pass.
2026-08-12 07:26:26 +01:00
robbond 5f9e8ebe33 experiment: finalize semantic action contract semantics 2026-08-12 06:30:40 +01:00
robbond 51da4b973f experiment: define semantic action contract placement 2026-08-12 06:23:21 +01:00
robbond 9425e7b2d6 experiment: define semantic action contract 2026-08-12 06:13:15 +01:00
robbond d7cb343838 experiment: diagnose semantic-to-mutation action ownership 2026-08-12 05:53:58 +01:00
robbond f022d6f4ad experiment: rerun equivalent uncertainty identity with hardened capture 2026-08-12 05:48:18 +01:00
robbond 47509d307b docs: record accepted-update capture hardening 2026-08-11 19:43:11 +01:00
robbond bf959bb9a0 tooling: retain accepted update experiment evidence 2026-08-11 19:42:43 +01:00
robbond 929486c354 experiment: validate equivalent uncertainty identity live 2026-08-11 19:30:08 +01:00
robbond 2927509ca5 experiment: validate selected-question contract live 2026-08-11 19:15:51 +01:00
robbond 3baa77eb72 docs: record selected-question contract alignment 2026-08-11 18:51:51 +01:00
robbond bf1f219256 prompt: require candidate question for new unknowns 2026-08-11 18:51:22 +01:00
robbond a8732288eb docs: record selected-question ownership diagnosis 2026-08-11 18:49:51 +01:00
robbond f0e0fd54de experiment: diagnose selected-question ownership 2026-08-11 18:45:00 +01:00
robbond f25b1f550e experiment: validate equivalent uncertainty reuse live 2026-08-11 18:29:02 +01:00
robbond eb524d08e1 experiment: validate uncertainty identity live 2026-08-11 18:02:11 +01:00
robbond a476431048 docs: record uncertainty identity clarification 2026-08-11 17:47:45 +01:00
robbond b8e6745c15 prompt: distinguish uncertainty identity from topical overlap 2026-08-11 17:47:12 +01:00
robbond f0cf85d2b6 experiment: diagnose uncertainty identity vs relatedness 2026-08-11 17:41:23 +01:00
robbond 19c00f3bf3 experiment: test structured-fidelity multi-turn progress 2026-08-11 17:34:54 +01:00
robbond 5947ccb642 experiment: validate structured semantic fidelity live 2026-08-11 17:18:59 +01:00
robbond f156bf5ef8 docs: record structured semantic fidelity implementation 2026-08-11 16:46:30 +01:00
robbond 7d06cd3c47 reasoning: use structured semantic fidelity contract 2026-08-11 16:45:00 +01:00
robbond b6a232ff6f experiment: choose structured fidelity migration 2026-08-11 16:17:55 +01:00
robbond f330421294 experiment: assess structured semantic fidelity boundary
- Experiment 57J.49: read-only architecture diagnosis showing EXISTING STRUCTURE IS PARTIAL
- All classification enums (supportCategory) and resolution enums (resolutionGuidance) already exist in production schema
- Gap is population (prompt says leave null if unsure) + enforcement (no enum constraint on Zod fields)
- Corrected 57J.48 overstatement of SUFFICIENT → PARTIAL sufficiency in handoff
2026-08-11 15:04:47 +01:00
robbond a2c790ee80 experiment: diagnose uncertainty fidelity false positive 2026-08-11 14:56:15 +01:00
robbond 174e581c23 experiment: convergence-test uncertainty action selection 2026-08-11 14:35:50 +01:00
robbond 94ca1b92f7 docs: experiment 57J.46 record and handoff update 2026-08-11 14:15:50 +01:00
robbond a5dd9d3f1a prompt: add existing-first uncertainty fallback
Add one explicit action-order rule in Additional Guidance for when
rule #6 applies to explicitly unresolved uncertainty:

1. First check whether an existing unresolved node already represents
   the same uncertainty.
2. If so, update/refine that existing structure rather than creating
   a duplicate.
3. If no such node exists, add a new unknown that directly represents
   the unresolved uncertainty.
4. Do not use an edge alone to represent a previously unrepresented
   uncertainty.

14 focused prompt tests verify: existing-first ordering, reuse path,
fallback-to-add, related-node-insufficient, edge-only-prohibited,
possibleInference separation, resolution path preserved, duplicate
contract preserved, scope uncertainty-only, fidelity/traceability
preserved, noop validator untouched, no semantic classifier added.
2026-08-11 14:12:42 +01:00
robbond 96b855b8e7 experiment: choose structural action-selection rule 2026-08-11 14:01:42 +01:00
robbond acd1928ebb experiment: validate conflict-free mutation prompt live 2026-08-11 13:36:03 +01:00
robbond 45d7b96827 docs: experiment 57J.43 record and handoff update 2026-08-11 13:23:14 +01:00
robbond 359ccc4ba9 prompt: remove semantic-only mutation conflict 2026-08-11 13:22:29 +01:00
robbond 0c477adea9 experiment: diagnose structural-mutation prompt compliance 2026-08-11 13:15:27 +01:00
robbond 6aea0bd90c experiment: isolate semantic-to-mutation contract live 2026-08-11 13:09:51 +01:00
robbond 39217b6b65 experiment: validate semantic-to-mutation contract live 2026-08-11 13:01:54 +01:00
robbond 712c0c4998 docs: experiment 57J.39 record and handoff update 2026-08-11 12:32:39 +01:00
robbond 6adcd817e1 reasoning: require structural progress for supported meaning 2026-08-11 12:32:03 +01:00
robbond 3b868b266e experiment: choose semantic-to-mutation contract fix 2026-08-11 12:03:16 +01:00
robbond 77f5ea26d4 experiment: locate semantic-to-mutation contract gap 2026-08-11 11:56:36 +01:00
robbond b341c9cf2f experiment: rerun guarded multi-turn progress cleanly 2026-08-11 11:41:51 +01:00
robbond 4998de54d2 tooling: enforce no-retry live experiment harness 2026-08-11 11:32:19 +01:00
robbond 06f67da1b4 experiment: observe guarded multi-turn progress 2026-08-11 10:50:05 +01:00
robbond bda3abf893 experiment: classify captured answer-meaning strengthening 2026-08-11 10:19:19 +01:00
robbond a00f7b170d experiment: inspect rejected proposal live variance 2026-08-11 10:03:35 +01:00
robbond 48e9bcf3eb docs: add Experiment 57J.31 entry to handoff 2026-08-11 08:34:51 +01:00
robbond 0348921542 experiment: add rejected proposal diagnostics to failure path
Adds rejectedProposalSnapshot to orchestrator diagnostics for
proposal_compatibility rejections — exposing answerMeaning (userSupportedMeaning,
possibleInference), addedNodes structural fields, addedEdges structural fields,
updatedNodes summaries, and resolvedUnknownNodeIds. Diagnostic evidence only;
does not alter validation, mutation, or error messages. Stage-gated to
proposal_compatibility only.
2026-08-11 08:33:36 +01:00
robbond 79377670e2 experiment: capture proposal-boundary live variance 2026-08-11 08:19:21 +01:00
robbond 1c15b2b123 experiment: measure live semantic representation stability 2026-08-11 07:36:21 +01:00
robbond 25f56d75e2 experiment: capture live node-support semantic inputs 2026-08-11 07:12:30 +01:00
robbond d5db3c3cd6 experiment: observe post-admission investigation progress 2026-08-11 06:56:35 +01:00
robbond fbbd271596 experiment: validate user-supported unknown admission live 2026-08-11 06:38:30 +01:00
robbond 2e20d30890 correction: delegate hasNodeLevelUserSupport to rawAnswerSupportsUnclassifiedMeaning
v0.15 duplicated the overlap helper logic in hasNodeLevelUserSupport with
reversed argument orientation (unknownText as source, userSupportedMeaning
as candidate) compared to rawAnswerSupportsUnclassifiedMeaning (USM as
source, unknownText as candidate). This produced different accept/reject
outcomes when the two texts have very different token counts.

The fix replaces the independent reconstruction with a single call to the
canonical helper, ensuring node-level and answer-meaning alignment use
identical semantics. Four boundary regression tests verify:

- Boundary A: overlap ratio < 0.4 but >= 3 shared tokens → accept (token rule)
- Boundary B: short candidate / long source accepted via structural linkage
- Boundary B control: unrelated unknown rejected with no structural edge
- Boundary C: ratio exactly at 0.4 threshold accepts via ratio rule
2026-08-10 20:09:39 +01:00
robbond 9e869cbcb8 reasoning: admit verified user-supported unknowns without provenance edges 2026-08-10 19:27:54 +01:00
robbond 1fe3cec4bd experiment: observe live unknown dimensionality representation 2026-08-10 15:41:49 +01:00
robbond 15f2433151 docs: record rejected answerability corroboration candidate 2026-08-10 15:08:23 +01:00
robbond 0d15dd1f42 Revert "reasoning: require corroboration for conjunction compoundness"
This reverts commit 60048a5636.
2026-08-10 15:07:30 +01:00
robbond 60048a5636 reasoning: require corroboration for conjunction compoundness 2026-08-10 14:53:57 +01:00
robbond dcefb36f4d experiment: capture minimal clarification answerability 2026-08-10 14:26:07 +01:00
robbond 90e662397f experiment: validate relationship fallback live 2026-08-10 13:10:21 +01:00
robbond 4c5666dfb3 reasoning: suppress explanation question without relationship structure 2026-08-10 10:17:35 +01:00
robbond 1a31949a48 experiment: validate semantic compatibility live 2026-08-10 08:46:31 +01:00
robbond 69efc5d1b9 reasoning: ground unclassified answers without category expansion 2026-08-10 08:20:00 +01:00
robbond 4ea664d0d8 experiment: validate decomposition relevance live 2026-08-10 08:04:59 +01:00
robbond 7e4c506614 reasoning: prevent unsupported comparison decomposition 2026-08-10 07:44:40 +01:00
robbond 513c483501 experiment: locate irrelevant decomposition question boundary 2026-08-10 07:19:52 +01:00
robbond 62593eea14 docs: record canonical live multi-turn product-observation route 2026-08-10 06:49:03 +01:00
robbond 7533e471d4 test: establish minimal live multi-turn investigation route 2026-08-10 06:48:51 +01:00
robbond 46503b4507 reasoning: normalise graph relationship contract at proposal boundary 2026-08-10 06:16:47 +01:00
robbond cf6c5cb57f docs: record stopped experiment 57c contract failure 2026-08-10 06:04:46 +01:00
robbond 371ab0f52f merge(feature/reasoning-guard-generality-v0.9): integrate reasoning-guard generality v0.9 into main 2026-08-09 20:07:05 +01:00
robbond 19a42ca7f7 experiment: validate grounded unclassified answer live 2026-08-09 20:03:30 +01:00
robbond 4e4d0fa732 reasoning: stop answer fidelity guard blocking valid unclassified answers 2026-08-09 19:55:35 +01:00
robbond 7d94c6f73a docs: record contaminated experiment 57a observation 2026-08-09 19:40:49 +01:00
robbond 14d68f1ab7 merge: integrate reasoning-fidelity v0.8 first pass into main 2026-08-09 17:36:58 +01:00
robbond e498bbcc63 docs: close reasoning fidelity v0.8 first pass 2026-08-09 17:25:19 +01:00
robbond ec398dcec9 experiment: validate evidence versus clarification routing 2026-08-09 16:33:14 +01:00