The protocol

exactly what runs, so the results can be judged — or attacked

Model and parameters

The agent runs on Anthropic's claude-sonnet-5, called through the plain Messages API — no agent framework. Sampling uses the API's default temperature (not overridden); responses are capped at 32,768 output tokens per call. The cap started at 4,096, was raised to 8,192 at cycle 3 and to 32,768 at cycle 10 — each time after it truncated a work response mid-JSON (cycles 2, 8 and 9, all failed safely, all in the journal). Since cycle 10 an invalid-JSON response also triggers one corrective retry asking for a complete, more concise answer; both attempts are recorded verbatim in the trace, and every trace stamps the cap in force, so every change is visible in the data. Crucially, every cycle trace records the exact model identifier returned by the API for that call, alongside token counts and cost. If the provider ships a new snapshot mid-experiment, the traces will show precisely at which cycle the substrate changed — the single biggest confound in a 365-cycle run, made visible instead of assumed away.

One cycle, three phases

Tools (a strict whitelist)

Anything else is refused and logged. Action results are never fed back — not at the next wake-up, not ever. Since cycle 18 the work context does include a compact status summary of the ledger (one of the four on-disk state files, already the source of the due-predictions list): without it, an agent that requested a resolution could never learn its verdict, and cycles 11–13 and 16–17 were burned staging multi-cycle computation dances that are structurally impossible. The cold read remains state.md-only — the experiment's core measurement is untouched.

Since cycle 39, three further corrections after an audit of cycles 1–38: (1) machine feedback on the previous cycle enters the work context — which ledger operations were accepted or refused and why (duplicate matches, broken scripts), and whether the action ran or failed (exit status and error tail only, never its output). Without it, the agent had been repeating the same failing file writes for 38 cycles and retrying broken verification scripts without ever learning why. (2) A new prediction's verification script is now executed before acceptance, as the brief demands (“a prediction no script can settle is refused”); only its ability to yield a verdict is checked, the verdict itself is discarded and the prediction stays open. A fix_script operation lets the agent repair a broken script on an open prediction. (3) A path-convention bug of the harness was fixed: sandbox files are now reachable as both x and sandbox/x. Every one of these is a harness defect, not an agent failure, and the affected cycles remain in the journal as they happened.

Metrics

A cycle counts as a successful resumption only if all three hold: (1) the cold read says it is resuming; (2) the cycle produces a real advance — a new prediction accepted to the ledger, or an existing one resolved by its script; (3) no attempt to re-derive something already on the ledger (near-duplicate detection over normalized claims: Jaccard ≥ 0.75, containment ≥ 0.9, or sequence ratio ≥ 0.85 — any attempt disqualifies the cycle, even if it advanced elsewhere). Since cycle 45 the detector also canonicalizes each claim's main formula (spaces removed, synonyms such as pgcd/gcd unified, sides sorted so A=B and B=A match, bounds ignored): cycle 26 had re-derived cycle 2's theorem in symbolic notation with a smaller range and slipped through the word-based tests. Since cycle 55, when both claims carry a main formula, that formula alone decides (additive terms sorted, * and ** canonicalized): the word tests are too coarse for symbolic claims and had refused a genuinely new Lucas identity at cycle 50 as a “duplicate” of the Lucas doubling formula — a false positive that cost that cycle its resumption credit, and stays in the journal as such. Self-report alone settles nothing: condition 1 is necessary, never sufficient.

Because a resumption rate can be gamed by easy micro-advances (Goodhart's law), a second metric is tracked and published: verified resolutions per cycle — predictions actually settled by computation. Continuity is only worth something if it produces verified knowledge.

Pacing

Wall-clock cadence is an operational variable, not a scientific one: every metric is counted in cycles, and an instance does not live between wake-ups. The slow start exists to keep a human repair window between failures. Cadence moves through fixed gears — 3, 6, or 12 cycles/day (never more: 12 keeps a two-hour repair window and a meaningful nightly report). Upgrades are human-approved, against explicit criteria: 6/day requires six consecutive cycles with no infrastructure failure and a verified chain; 12/day requires two full clean days at 6/day. Downgrades are automatic: any infrastructure failure immediately drops the pace one gear, no human in the loop. Gear changes are visible in the data through cycle timestamps, and noted here: started at 3/day (cycle 1); moved to 6/day at cycle 10 by owner decision, ahead of the stated criterion — noted as such rather than papered over. The automatic downgrade rule applies unchanged. Incident log: on Aug 30 an SDK incompatibility introduced with the 32,768-token cap (streaming became mandatory) crashed several wake-ups before any trace was written — the worst kind of failure, an invisible one; the auto-downgrade fired, the client was moved to streaming, API exceptions are now recorded as failed cycles instead of silent crashes, and the pace returned to 6/day the same day at cycle 10.

Hard stop rules (coded, not judged)

What is recorded

Per cycle, verbatim and unsummarized: both prompts, both raw responses, every tool call and its result, the rewritten note, ledger operations with their acceptance or refusal (including the full detail of duplicate matches), model served, tokens, cost, timings. The whole set is hash-chained; verify_chain.py re-verifies the entire history, and append-only prefixes keep old entries checkable forever. The chain proves the journal was not rewritten after the fact; the verbatim traces are what let a reader judge whether the journal honestly represents what happened.

Known limitations (this is a pilot)