feat(60A.7): add reusable decision-options fixture loading in test harness

- Load decisions-options fixture from committed JSON (tests/fixtures/
  pre-anchored-decision-options.json) instead of inline duplicate
- Add runPreAnchoredSimulationWithFixture() helper for decision-options
  mode tests
- Generalize anchor validation from savings-realism-specific to generic
  unresolved unknown check in reproduce-multi-turn-investigation.mjs
- Add experiment documentation (experiment-60a7.md) and handoff note
- All 63 harness tests pass; no production reasoning code changed
This commit is contained in:
2026-08-13 06:24:12 +01:00
parent 2016a024c5
commit 4c25faaa01
5 changed files with 634 additions and 16 deletions
+37
View File
@@ -2562,3 +2562,40 @@ Vitest run: NO
Ollama calls beyond harness count: 0
Dev server disturbed: NO
### Experiment 60A.7 — Reusable Pre-Anchored Decision-Options Fixture (Tooling Only)
**Branch:** `feature/decision-options-v0.25`
**Date:** 2026-08-13
**Type:** TEST TOOLING ONLY — no production reasoning code changes, no live API calls, no Ollama calls
**Full record:** `docs/experiment-60a7.md`
**Context route:** Follows experiment 60A.6 which established the `option` node kind and `contained_in` edge relationship for representing two competing relocation options in the situation graph. The committed JSON fixture (`tests/fixtures/pre-anchored-decision-options.json`) captures this persistent reasoning state.
**Objective:** Add test-only support for loading the reusable decision-options fixture from its committed JSON file, enabling harness tests to verify pre-anchored update-only mode with non-default fixtures without inline data duplication.
**Methodology:**
- Load `tests/fixtures/pre-anchored-decision-options.json` directly via `fs.readFileSync` in the test harness
- Add `runPreAnchoredSimulationWithFixture()` helper that mirrors the production pre-anchored path (generic anchor validation, no Start call, exactly one Update, all hardened capture)
- Generalize script's anchor validation from savings-realism-specific to generic unresolved unknown check
- Run focused vitest harness test only
**Key findings:**
- All 63 harness tests pass (including 17 new decision-options fixture mode tests)
- Fixture loads correctly from committed JSON — no inline duplication needed
- Pre-anchored validation works generically across fixture types (savings-realism and decision-options)
- Normal Start→Update mode unchanged; regression-free
**What this establishes:**
The pre-anchored update-only harness path is now verified with multiple fixture types. Tests can pass any valid pre-anchored graph directly, confirming the production code's generic anchor validation handles diverse fixtures without hardcoding domain-specific assumptions.
Classification: COMPLETE — TOOLING ONLY
Production reasoning code changed: NO
Test harness modified: YES (additions only)
Fixture loaded from committed JSON in tests: YES
Inline decision-options fixture duplicated in test file: NO
Ollama calls: 0
Live API calls: 0
Vitest run: 1 focused command (63/63 pass)