PREVIOUS MEETING → THIS PAGE: debugging the full agent was too hard → a code-first experimental base. We built it.
Skills mined while playing, scored only by the engine, carried as memory — that is TTSO.
Reference: Jul 10 — leak-free full-game WIN ×2 (ft09 6/6, fork = 0). This fortnight: an instrumented repair battery on the base.
Code acts, the engine folds, surprise sleeps, skills persist.
Each round: read the board, form or update a hypothesis about how the game works and what clears the level, then act on it. When a level's reference keys resist decoding, reverse-infer the rule from a level you ALREADY cleared [...] Never phrase a goal as a fact you have not tested.
HYPOTHESIS: the failed submit means the target is not simply the lower-left copy - re-read the macro-tile state and clue panels exactly. clicks: ACTION6(40,54), ACTION6(56,54) engine: levels 0 -> 1 (L0 CLEARED)
fold(record, {"key": "tfclr:5", "saved": credit})
# the ONLY function that may touch alpha/beta.
# idempotent by key: one observation, one charge.
# r33's real trail:
# tfclr:5 SURVIVOR a+8 -> 0.90 (winner)
# tfanom:7,8 ANOMALY b++ <- eroded on L1 (bug: no winner shield)
# tfclr:12 SURVIVOR a+
# tfanom:24,25 ANOMALY b++ -> final 0.34packet = {credence, target_f1, residual_cells,
evidence_refs: ("transition:0", ...)}
# LLM judge writes advisory + future-rank f only.
# KNOWN GAPS (external audit, confirmed):
# - cites are not checked against evidence_refs
# - settle events (false_clear/ANOMALY) missing
# -> both queued in the next package (h12)def predict_next(state, action):
# click toggles a connected same-colour tile
# between the board's two play colours
x, y = int(action[1]), int(action[2])
old = int(state[y, x])
play = sorted(v for v in np.unique(state)
if v not in {0,2,4,5,11,12})
lo, hi = play[0], play[-1]
new = lo if old == hi else hi if old == lo else None
if new is None: return {}
return {c: new for c in flood_fill(state, x, y)}def target(state):
# goal guess: the bottom status strip,
# filled end-to-end with its "done" value
bg = most_common_value(state)
goal = state.copy()
row, done = goal[-1], goal[-1][-1]
xs = where(row != bg)
goal[-1, xs.min():xs.max()+1] = done
return goalKnowing how the world moves is not knowing what “done” means.
Every point re-measured from raw traces. The named failures behind them — briefing churn, dynamics rules leaking into the goal posterior, an over-forcing judge — and their concrete fixes: seven crises →
Five lineages, one missing piece each: none carries memory across games.
One real turn: briefed skill → two clicks → level cleared → memory written.
[r37 0.50] the doubled 3×3 mini-symbols define binary masks: 2 = on-colour 9, 0 = off-colour 8; the framed answer = cellwise intersection.
"the failed submit means the target is NOT the lower-left copy - re-read the panels" → 2 clicks
Goals now 100% runnable; next: kind contract → model-ready gate → certified search (E0–E6).
turn cardsskill anatomyexperimentscode mapcrises & arcsSchema deep diveall weeks