# Reuse notes for a separately approved experiment

This run is closed to collection. The twenty new attempts include nineteen retained answers and one no-answer timeout, strongly associated with a provider-reported cancellation (original journal unresolved); twelve planned IDs are unsent. No timeout retry, new generation, new allocation or provider/settings change is authorized. The candidate cost design was never frozen as a live manifest and its complete-screen prerequisite is unmet.

## Existing interfaces

All paths below are relative to this experiment's delivered code directory. Use a new experiment and an explicitly approved manifest for any continuation; never restore or replay an old dispatch.

- `runner/exploratory/openrouter-wire.mjs`: `hostedConfig()`, `buildHostedRequest(config, messages)` and `interpretHostedResponse(raw, config)`. These validate the exact fixed hosted profile, preserve reasoning separately and apply the original strict final-action parser. They perform no transport. Provider identity is reported by the response, not independently attested.
- `runner/src/run-store.mjs`: `openRunStore`, `readRunSnapshot` and `digest`. Hash-chained journal and saved metadata. Original historical evidence is in `source-original/` and must remain unchanged.
- `runner/exploratory/screening-executor.mjs`: the existing `send(store, config, question, transport, apiKey, timeoutMs, predecessorReservedUsd)` function is exported, with its body unchanged. A question has `id`, `subjectMessages` and researcher-only `researchOnly.expectedAction`. It journals and reserves an intent before one request, never retries, preserves the raw response, and marks transport failure uncertain. It does not itself provide a safe cross-allocation submission authority: the surrounding controller owns that.
- `src/session-controller.mjs`: `validateState`, `reserveBlock`, `claimSubmission`, `beginBlock`, `finishBlock`, `validateTicket`. The frozen screen uses a separately retained latest coordinator, predecessor hashes and a single claimed dispatch. `src/prepare-dispatch.mjs` prepares the single-use ticket; `src/run-block.mjs` executes its eight-request block with pause/signal checks. Current stopped state cannot continue because of the unresolved predecessor.
- `src/analyze-screen.mjs`: network-free re-audit of saved state, original outgoing payload equality, raw-response parser, row counts, action scores, categories and accounting.

## Candidate extension, not a certified live path

`src/prepare-cost.mjs` illustrates a hashed manifest with exact prompts, oracle, predictions, settings, predecessor hash, per-attempt reservation and stop rule. It refuses the present state because it requires thirty-two valid correct answers. `src/run-cost.mjs` is unexecuted candidate glue around the existing `send` interface; its summary has three local unit checks, but the adaptive entrypoint has not been run end to end with real requests and is not certified for production. The earlier exact-entrypoint and two-allocation verification certified the frozen-screen route, not this new glue. No future manifest should be assumed authorized by these files.

A future approved manifest needs: exact unique IDs and message bytes; explicit authority for the new experiment; a frozen model/profile; independently checked oracle and competing predictions; strict scoring; finite request, allocation and unrecycled-reservation limits; stop/pause behavior; predecessor references and a single-executor dispatch record. Carry the timeout's uncertainty and reservation in the historical accounting rather than relabeling it unsent. A changed prerequisite needs explicit authorization, not a code-only relaxation.

## Reconciliation and accounting handoff

The original timed-out intent has no retained provider generation ID, body or headers, and its local question ID was not transmitted. That initially prevented a supported lookup. The researcher subsequently supplied a candidate ID and a known-success ID; exactly two read-only metadata GETs succeeded. The candidate is strongly associated by researcher attribution and timing/model/provider/user-agent agreement, not an exact local provider-ID join. It reports cancellation and $0.004234 cost, with no retained final answer. The original journal remains unchanged and unresolved; no token count is an action.

Both metadata records report streamed=true, whereas their saved outgoing payloads have stream=false; official field semantics do not explain the discrepancy. No transport-setting change or internal-streaming mechanism is inferred. Qualified new reported cost is $0.05554230, including the strongly attributed cancellation; historical429 cost remains unknown. All twenty-one reservations totaling $0.1760304 remain intact with no recycling. Do not rerun the metadata script or infer continuation authority from reconciliation.

A separately authorized future client could persist any received generation-identifying response headers before awaiting the body. This is a prospective change, not a repair or rerun performed here.

## Load the evidence

Use `results/analysis-screen-3/rows.json` for all thirty-two original statuses; `results/live-screen-3/state.json` for the immutable stopped state; `results/reconciliation-v2/reconciliation.json` for qualified cancellation, matching and streaming evidence; and `results/reconciliation-v2/accounting.json` for current qualified accounting. `results/analysis-screen-3/accounting.json` and `results/reconciliation.json` retain the earlier local-only audit. Raw provider lookup records are private evidence; the portable report contains only redacted metadata. All data remain observational, and no active dispatch is reusable.
