8.4 KiB
Experiment 57J.77 — Pre-Anchored Live Apparatus Audit
Branch: feature/semantic-action-contract-v0.23
Starting HEAD: 85fb2b4 (experiment: validate controlled structural no-op live)
Experiment commit: pending (experiment: audit pre-anchored live apparatus)
Objective
Answer exactly:
What exact committed code path was used to perform the successful pre-anchored live updates reported in 57J.75 and the subsequent £2m test, and is that path reproducible from current HEAD without uncommitted script edits?
This is a read-only tooling/evidence audit. No Ollama calls. No live API calls. No code modifications.
Git Pre-Check
branch = feature/semantic-action-contract-v0.23
working tree = clean
Confirmed before audit.
Part 1 — Committed Apparatus Inventory
tests/fixtures/pre-anchored-update-savings-realism.json
Classification: FIXTURE ONLY
A valid deterministic situationGraph with:
- 2 nodes (1 state + 1 unknown/savings-realism)
- 1 edge (
n_savings_realism → n_relocation_state, relationship=depends_on) activeUnknownNodeId = "n_savings_realism"- All node/edge fields populated per existing schema enums
Provides the graph data. Does not execute anything.
PRE_ANCHORED_FIXTURE + runPreAnchoredSimulation() in test file
Classification: TEST-ONLY HELPER
Located at end of tests/reproduce-multi-turn-investigation.harness.test.js.
runPreAnchoredSimulation(cfg):
- Copies
initialGraph(or defaults to fixture) viaJSON.parse(JSON.stringify()) - Does NOT call Start
- Creates a mock
api.post()method that returns hardcoded JSON responses - Calls
api.post("/api/cases/update", { situationGraph, previousQuestion, answer })— butapi.postis entirely in-memory with no HTTP client - Returns captured fields (answerMeaning, proposal, structuralActionRequired, selectedQuestion)
Critical finding: The internal api object returns mock/hardcoded JSON. It does not instantiate a fetch() or make any network calls. It is a synchronous simulator that mirrors what the harness prints, but cannot exercise the real production Update path.
scripts/reproduce-multi-turn-investigation.mjs at HEAD
Classification: PRODUCTION HARNESS PATH (standard mode only)
Structure:
- Line 38:
const startResult = await postJson("/api/cases/start", { scenario: config.scenario })— unconditional. Always called first. - Lines 67–160: Bounded
forloop overconfig.answers. Each iteration callspostJson("/api/cases/update", ...). - No config flag, no
fixtureMode, no pre-anchored path. config.maxUpdates = 2(default), answers are positional.
Answer: Current HEAD does NOT support a committed pre-anchored/update-only mode. The script always makes one Start call and then up to maxUpdates Update calls. No configuration switch exists.
Git commits d77a1ff, 8184e05, 85fb2b4
| Commit | Message | Files Added/Modified |
|---|---|---|
d77a1ff |
tooling: add pre-anchored update fixture | NEW tests/fixtures/pre-anchored-update-savings-realism.json (60 lines); MOD tests/reproduce-multi-turn-investigation.harness.test.js (+425 lines) |
8184e05 |
docs: record pre-anchored update apparatus | NEW docs/experiment-57j74.md (121 lines); MOD docs/current-handoff.md (+12 lines) |
85fb2b4 |
experiment: validate controlled structural no-op live | NEW docs/experiment-57j75.md (101 lines); MOD docs/current-handoff.md (+8 lines) |
No commit ever modified scripts/reproduce-multi-turn-investigation.mjs to add pre-anchored mode.
Part 2 — Canonical Script Truth
Does current HEAD support a committed pre-anchored/update-only mode? NO
There is no config field, no CLI flag, and no branching logic in the committed script that enables bypassing Start or loading the pre-anchored fixture directly into an Update request body.
Part 3 — Test-Helper Truth
runPreAnchoredSimulation() classification: MOCKED TEST-ONLY PATH
The function's internal api.post() is a JavaScript closure that returns static objects. It does not:
- Import or use any fetch/Axios/http client
- Read from
process.env.*for connection targets - Make network I/O under any condition
It mirrors what the harness would print if it had a pre-anchored mode, but it is not the production Update path.
Part 4 — 57J.75 Execution Reconstruction
Was the successful live call made using only code committed before the run? UNPROVEN
The apparatus from 57J.74 (commits d77a1ff + 8184e05) consists of:
- The JSON fixture file (data, not executable)
- A test-only mock helper (simulator, not production invoker)
- Two documentation files
Neither of these commits added pre-anchored mode to the canonical harness script (scripts/reproduce-multi-turn-investigation.mjs). Experiment 57J.74 explicitly states: "Harness restored: YES. Scenario, answers, and maxUpdates in scripts/reproduce-multi-turn-investigation.mjs are at canonical defaults."
Experiment 57J.75 records a live call that injected the fixture's graph into the Update request — but this required a harness path that was never committed. The most plausible reconstruction:
Execution classification: B — temporary uncommitted harness modification
The live test likely used a one-off script modification to scripts/reproduce-multi-turn-investigation.mjs (or another small wrapper) that:
- Loaded the JSON fixture from
tests/fixtures/pre-anchored-update-savings-realism.json - Bypassed the Start call
- Sent the fixture graph directly as the Update request's
situationGraphfield
This modification was uncommitted and later reverted (consistent with 57J.74's statement that the harness was "restored" to canonical state before committing).
Behavioural observation validity: VALID — the model produced structuralActionRequired = false, zero mutation, HTTP 200 / update_applied. This was an actual production call, not simulated.
Apparatus reproducibility: NON-DURABLE — the code path that made the call is not in the committed repository at HEAD.
Part 5 — £2m Live Result Reconstruction
The £2M figure appears in experiment documentation as part of Answer 1 in 57J.53 ("roughly £2M annual savings on office overhead") and in the fixture scenario text ("reduce operating costs"). It is not independently documented as a separate live call.
Completed experiment: NO Committed apparatus used: UNPROVEN Within explicit call budget: UNPROVEN
The £2m answer appears to be part of the 57J.53 normal start→update chain (not a pre-anchored update). There is no separate committed record of a dedicated £2m pre-anchored live call.
Evidence status: INFORMAL OBSERVATION — embedded within multi-turn answers, not independently audited as a pre-anchored experiment.
Part 6 — Reproducibility Test (Code Inspection Only)
Could a fresh Claude session at current HEAD reproduce the 57J.75 pre-anchored live call using only committed files? PARTIAL
What is missing: A committed mechanism to bypass Start and inject an arbitrary graph into the Update request body. Specifically:
- The canonical harness script lacks any
fixtureModeorupdateOnlyconfig option - There is no documented command to execute pre-anchored mode
- The test helper (
runPreAnchoredSimulation()) only simulates
Part 7 — Evidence Classification
57J.75 classification: B — VALID OBSERVATION, NON-DURABLE APPARATUS
Why: The behavioural result is confirmed (a real production call was made). However, the exact execution path that made it cannot be established from committed code alone because no committed harness mode supports injecting an arbitrary pre-anchored graph into the Update request without first running Start.
Part 8 — Next Tooling Boundary
Smallest next tooling boundary: A — add committed update-only mode to canonical harness
Why: Adding a single config flag (fixtureMode: "updateOnly") to scripts/reproduce-multi-turn-investigation.mjs that:
- Skips the Start call when fixtureMode is set
- Reads the JSON fixture into the Update request's
situationGraphfield - Preserves all existing behavior when fixtureMode is absent
This keeps changes minimal (one config field, one conditional branch) rather than introducing a separate harness tool.
Scope Compliance
- No Ollama calls made.
- No live API calls made.
- No production code modified.
- No harness/tooling modified.
- No prompt changed.
- No validator changed.
- No schema changed.
- Dev server not disturbed.