docs: record closure metadata capture
This commit is contained in:
@@ -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 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.
|
- 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
|
### When This Knowledge-Management Phase Is Complete
|
||||||
|
|
||||||
Provisional criteria for review (all confirmed met by Experiment 38 cold-start test):
|
Provisional criteria for review (all confirmed met by Experiment 38 cold-start test):
|
||||||
|
|||||||
@@ -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.
|
||||||
Reference in New Issue
Block a user