From fa821a53dd0820b31a9645f804c3db60e24723b6 Mon Sep 17 00:00:00 2001 From: robbond Date: Fri, 14 Aug 2026 09:30:55 +0100 Subject: [PATCH] docs: record closure metadata capture --- docs/current-handoff.md | 8 ++++ docs/experiment-60b45.md | 82 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 90 insertions(+) create mode 100644 docs/experiment-60b45.md diff --git a/docs/current-handoff.md b/docs/current-handoff.md index a151fd8..2a71104 100644 --- a/docs/current-handoff.md +++ b/docs/current-handoff.md @@ -242,6 +242,14 @@ Experiment 54N tested whether an interpretation disagreement can be judged for m - Focused fallback case also passes: when the proposal-selected target becomes known but another real unresolved unknown remains, the terminal target is discarded and the real unresolved node is selected. - Focused preservation run passed via `npx vitest run tests/graph/apply-proposal.test.js -t "60B.43|60B.11|replaces downstream pricing"`; live rerun still required to prove the same outcome end-to-end under live conditions. +### 60B.45 closure metadata capture in canonical harness + +- Extended `scripts/reproduce-multi-turn-investigation.mjs` and its deterministic harness tests to expose raw accepted-update closure metadata explicitly. +- Harness now emits/stores `finalActiveUnknownNodeId` from the final updated graph and `finalSelectedQuestion` from the final update result. +- Explicit `null` is now preserved for both fields rather than being omitted, closing the apparatus gap that forced 60B.44 to infer closure from absence. +- Focused validation passed via `npx vitest run tests/reproduce-multi-turn-investigation.harness.test.js` (`67/67`). +- The exact 60B.44 live closure case can now be rerun once with direct evidence for active-target clearing and final-question clearing. + ### When This Knowledge-Management Phase Is Complete Provisional criteria for review (all confirmed met by Experiment 38 cold-start test): diff --git a/docs/experiment-60b45.md b/docs/experiment-60b45.md new file mode 100644 index 0000000..430119e --- /dev/null +++ b/docs/experiment-60b45.md @@ -0,0 +1,82 @@ +# Experiment 60B.45 — Closure metadata capture in canonical live harness + +**Date:** 2026-08-14 +**Branch:** `feature/closure-metadata-capture-v0.39` + +## Purpose + +Expose `activeUnknownNodeId` and `selectedQuestion` explicitly in the canonical live harness output/capture layer so the exact 60B.44 live closure case can be rerun and classified from direct evidence rather than inference. + +## Why this was needed + +60B.44 already confirmed live graph-level closure: + +- customer factor resolved in place +- decision resolved in place +- both options preserved +- zero new unknowns + +But the canonical harness did not explicitly emit/store: + +- final `activeUnknownNodeId` +- final `selectedQuestion` + +That meant null closure had to be inferred from omission instead of being evidenced directly. + +## Exact harness change + +Modified only the canonical harness layer: + +- `scripts/reproduce-multi-turn-investigation.mjs` +- `tests/reproduce-multi-turn-investigation.harness.test.js` + +For accepted updates, the harness now explicitly exposes: + +- `finalActiveUnknownNodeId` +- `finalSelectedQuestion` + +### Raw source of each field + +- `finalActiveUnknownNodeId` ← `updatedSituationGraph.activeUnknownNodeId` +- `finalSelectedQuestion` ← `updateResult.json.selectedQuestion` + +If either value is actually null, the harness now prints/stores `null` explicitly rather than omitting the field. + +## Explicit null distinction + +This was the critical apparatus gap: + +- `null` means the production result explicitly cleared the field +- omitted/unavailable means the harness never captured it + +The updated harness now preserves that distinction. + +## Focused deterministic tests + +Added focused coverage in `tests/reproduce-multi-turn-investigation.harness.test.js` for: + +1. explicit null `finalActiveUnknownNodeId` +2. explicit null `finalSelectedQuestion` +3. populated values surviving unchanged +4. all existing harness capture/regression behaviour remaining green + +## Validation + +Command run: + +```bash +npx vitest run tests/reproduce-multi-turn-investigation.harness.test.js +``` + +Result: + +- PASS — `67/67` + +## What is now possible + +The exact 60B.44 live closure case can now be rerun once and classified from direct harness evidence for: + +- `finalActiveUnknownNodeId: null` +- `finalSelectedQuestion: null` + +without changing any production reasoning logic or production API shape. \ No newline at end of file