test-time skill optimization · ARC-AGI-3 · ft09 · experiment bestiary
TTSO does not trust a run because it happened — every credence update, every sleep, every full-game attempt is gated by one of seven falsification patterns. This page is the catalog: one card per instance, each reading problem → design → measured result → evidence. Every number below is copied from an already-published page or a raw log in this repo — nothing here is invented to fill a gap.
2026-06-30 → 2026-07-17. Sources read to assemble this catalog:
Categories ① and ⑥ were requested with specific named examples (“0705 D2 seeded L4 / --load-bundle”, “ls20 27 runs”) that do not appear verbatim anywhere in the sources above. Rather than invent them, each of those two sections below reports the closest real, sourced analog actually found in these files, flagged explicitly at the top of the section.
S0 gate — structural invariants before any live budget is spent
fold() α/β gate, byte-identical accept/αβ/V if judge text is deleted/corrupted, real per-skill EIG, idempotent settle_wincond_round) hold before any live run spends budget.python3.12 -m pytest ttso/tests -q as a hard S0 gate — no live run starts on a red suite (constitution §3 invariant, test-enforced).9e5fbf6) → 440 tests collected (2026-07-14, branch ttso-nofork-predict-verify) → 516 green (2026-07-15, tense-separation redesign, commit 3008c0d) → 518 green (2026-07-15, VACUITY 2-line prompt fix, commit c0bac81) → 606 green (2026-07-16, constitution-audit blocker fix, commit 357afa8).0/21 → 13/21 rescoring — the numpy-boundary fix (commit a524931)
c0716h8_thin_s0: 6 of 7 rounds forced into sleep, yet every skill's credence stayed frozen at the park prior (0.25) for all 6 sleeps — no engine evidence was folding in at all._Predictor passed the board to LLM-authored predict_next code as a list-of-lists; 13 of 21 healthy skills assumed numpy (.shape) and silently raised, scoring 0. Same transition rescored: pre-fix 0/21 skills applied → post-fix 13/21 applied, f1=1.0 for 4 of them. Fix = one line (np.asarray) at the scoring boundary, commit a524931.0→4 “WIN” correction — retroactive fork_dependence audit
fork_dependence audit / correction pass on the already-published run page, not a fresh live run.game.fork() (a free, throwaway copy of the real engine) before committing — a fork-bruteforce artifact, not genuine skill inference. The page was corrected in place with a banner rather than deleted; structural fix: Game.fork sealed to raise RuntimeError on call, fork_dependence=0 logged and asserted every turn thereafter.RHAE (first use below) = level-weighted clear-efficiency score, Σℓ·scoreℓ/Σℓ, scoreℓ=min((baselineℓ/actionsℓ)²×100, 115); higher = fewer actions relative to a human baseline. Full formula + worked example: metrics.html.
0710 double WIN — C3 & C2c, both fork = 0
C3_fullgame_prob_s0: WIN 6/6 levels, 52 rounds, 174 actions, RHAE 40.9, fork_dependence=0, plan_replay_dependence=0, simulate used in 41/52 rounds. C2c_fullgame_prob_s0_r3: WIN 6/6 levels, 74 rounds, 171 actions, RHAE 55.7, fork=0 — a second, independent full-game WIN forming the “double WIN”.0716–0717 verification battery — 7 runs (h4, h8–h10 substantive; h2/h3/h5/h6/h7 discarded)
The exact example named for this category (“0705 D2 seeded L4”, --load-bundle) does not appear verbatim anywhere in the sources read. No CLI flag or run tagged that way is cited on these pages. The two items below are the closest real, sourced analogs found instead.
A — GT-keyed replay rejected, replaced by real-engine predict-verify (pre-0709)
4807091), after which the loop reached L3 for the first time as a genuine (non-leaked) result.B — S5 reproduction run, tagged under runs/S5/
runs/S5/ (the EXPERIMENT_PLAN.md “transfer” stage directory), same thin-actor scaffold as the WIN run, no seed/capability change.runs/S5/c0716h4_thin_s0.jsonl), diagnosed post hoc as a memory-starvation bug (briefing truncated a winning claim at [:160]), not a capability gap.h9 vs h10 — three-part 0717 revision against the same scaffold
abe2a2c). Neither arm reached a level clear=win; wincond-authoring quality remained the open, unresolved variable in both arms. Final ledger: h9 rounds=20/sleep=16/levels=2; h10 rounds=26/sleep=9/levels=1.Formal protocol — S3 paired E0/E1, S4 component ablations
fork_dependence==0 (hard invariant both arms), reasoning-rubric score, citation rate, and the VoI-probe falsifier_follow_rate (its judge-eval-text variant flagged as not yet landed).5-agent 1:1 clause audit — 22:47 KST, 2026-07-16
ttso/constitution.md — the project's sole normative source — clause by clause, rather than trusting that each individual fix composed correctly.fold_judge_scores had a 4th credit channel that let negative narrative-DL judgments leak into wincond credence, violating §2 (“static fit folds in neither direction”). Patched red-green same day (commit 357afa8, 606 tests green). The blocker only affected the LLM-scoring path, so the code-scoring h9 run was unaffected by it; the remaining 4 minor gaps were deferred to the next battery.The exact example named for this category (“ls20, 27 runs”) does not appear in the sources read. ls20 pages in this repo belong to an earlier, separate diagnostic phase (agent misreading a fuel bar as a code grid), preserved as a control/reference — not part of the ft09 mining story. The item below is the closest real, sourced mining-battery data: per-run sleep/mining counts across the same 0716–0717 verification battery used in ③/⑤ above.
Per-run sleep/mining counts, 0716–0717 battery
91a0797) after unbounded growth was diagnosed as one of the five 2026-07-16 starvation surfaces.