# 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.