← all weeks week of 2026‑07‑30 · TTSO · meeting deck — ft09 2× 6/6, 무엇이 이겼고 무엇이 놀았나 priors →

test-time skill optimization · ARC-AGI-3 · ft09 + ls20 · meeting deck · 2026-07-30

얼어붙은 LLM이, 훔쳐보기를 금지당한 채, 처음 보는 게임의 여섯 레벨을 두 번 깼다.

그리고 두 번째 승리는 아직 학습 시스템의 공으로 돌릴 수 없다.

2× 6/6leak-free 풀게임 (C3 07-10 · bwsvfull 07-29) · 각 n=1 fork_dependence* = 0포크 누수 없음 52r/174a vs 59r/227aC3 vs bwsvfull · 라운드/액션 RHAE 40.9 / 19.7점수는 액션의 제곱에 반비례

*fork_dependence — 엔진을 복제해 규칙을 훔쳐본 횟수. 0이어야 유효하다.

RHAE — 레벨마다 min((사람 기준 액션 / 우리 액션)² × 100, 115), 미클리어 0, 레벨 번호로 가중평균 (metrics.html).

경계 조건 — 먼저 말한다

bwsvfull의 6/6은 스킬 루프의 공이 아니다.

전문가 브리핑 4개 절이 35라운드 연속 부재(전달 기준 · 생성 기준 36브리핑)했다.

simulate는 단 한 라운드(r53)에서 3번이 전부다.

시드 1·2 미실행 → 6/6은 일화(n=1)다. 누가 이겼는지가 이 덱의 질문이다.

SUMMARY LAYER — 다섯 화면 · 결정 · LIVE STATUS. 세부는 아래 APPENDIX(§01–§08). 접힌 줄은 검증 메모다 — 질문이 오면 편다.
S1

30초

happened / proved / failed / open
WHAT HAPPENED

ft09를 6/6 두 번 깼다. 누수 없음.

C3 2026-07-10 · 52R/174a
bwsvfull 2026-07-29 · 59R/227a
n=1 · seed 0

WHAT WE PROVED

프롬프트 한 문장이 다중 액션 라운드를 억누르고 있었다.

원장 채점 결함 이 어떤 스킬이 쓰이는지를 왜곡했다.

같은 벽·같은 시드의 켜고-끄는 짝으로 격리

WHAT FAILED

refine(자면서 기존 스킬을 고쳐 쓰는 단계) 0 / 244 · plan 레코드(여러 수를 미리 엮어 둔 경로) 0

retrieval best 0.813 vs used 0.267

selection이 실현 정확도와 −0.305

WHAT IS OPEN

무엇이 6/6을 냈는가.

재현되는가 — 모든 런이 seed 0이다.

시드 1·2 없이는 일화다

학습 루프의 세 기능은 작동하지 않았고, 그럼에도 모델의 in-context 적응과 배치 행동이 ft09를 풀었으며, 누적 번들은 매치드 비교에서 제한적인 전이를 보였다.

런 이름 사전

이름이 곧 조건이다 · 전부 n=1 · seed 0
run조건 (이 이름이 뜻하는 것)결과
C32026-07-10의 무누수 ft09 풀게임. 지금 감사 중인 채점 아키텍처가 존재하기 전의 코드.52R · 6/6 · WIN
cWallft09 레벨 2 벽. E3 게이트 ON — 프롬프트에 544자 잠금 문장이 있다.8R · 0레벨
noE3wall같은 벽. 그 문장만 byte 단위로 삭제 (TTSO_NO_E3_GATE=1). 다른 차이 없음.10R · 0레벨
bw같은 벽. 게이트 OFF + 원장 penalty 수정만 (TTSO_WRONGVALUE_HARM=1).10R · 0레벨
bwsv같은 벽. 게이트 OFF + penalty와 reward 둘 다 (+TTSO_STANDALONE_SAVED=1).10R · 0레벨
bwsvfullbwsv 설정 그대로 ft09 풀게임. 이 덱이 해부하는 두 번째 6/6.59R · 6/6
noE3full게이트 OFF 풀게임이되 원장 수정 없음 — 원장 수정의 풀게임 대조.60R · 4레벨
ls20a다른 게임 ls20 (이동형, ACTION1–4 + RESET). 번들 없이 fresh store.40R · 0레벨

cWall → noE3wall → bw → bwsv는 같은 벽에서 한 번에 하나씩 켠 사다리다.

S2

한 턴 전체 — bwsvfull round 27

observe→briefing→actor→commit→observe→fold

앵커는 round 27, r26은 "직전 결과"다 — feedback은 실행 산출물이자 다음 라운드의 브리핑이라 r26 feedback = c-0142request_parts[8]이다.

① OBSERVEruns/S5/bwsvfull.jsonl · round 27 pre_grid · round 26 결과
round 27 진입 보드 = round 26 post_grid · 64×64 · levels=3

직전(r26) — 6액션 · 184셀 변경 · levels 3 불변. EXPECT는 REFUTED 판정을 받았고, 그 문장이 그대로 ②에 실린다.

[["ACTION6",39,17],["ACTION6",47,33],
 ["ACTION6",39,49],["ACTION6",47,17],
 ["ACTION6",47,25],["ACTION5",0,0]]
observed_diff = [37, 36, 37, 37, 36, 1]
액터가 본 그림은 현재 보드가 아니다c-0142의 PNG는 이 보드와 332셀(8.1%) 다르다.
검증 메모 — 이미지가 갱신되지 않는 지점

같은 sha256(ada39082…d44d.png, 2297 B)이 round 25·26·27·28·29 actor 호출에 모두 붙어 있다. 디코드해 비교하면 불일치 셀은 r25 0 / r26 220 / r27 332 / r28 335다. 원인은 ttso/auto/loop.py:422-425 — 이미지 갱신이 if cleared: 블록 안에만 있어 레벨 내부에서는 갱신되지 않는다. 진짜 현재 보드는 액터 자기 코드의 grid()로만 들어왔다.

② BRIEFINGruns/S5/bwsvfull.jsonl · round 26 feedback (11,845자) = llm_calls c-0142 request_parts[8]
섹션offset문자비중
code output — 액터 자기 코드의 stdout07336.2%
OBSERVED:7901,64113.9%
HYPOTHESIS LEDGER2,4311,48212.5%
MEMORY (…)3,9137,80865.9%
SLEEP:11,7211241.0%
같은 문자열 · offset 표기byte-exact verbatim
offset 280–408 · plannedplanned [(39, 17, 36, 14, 9, 8), (47, 33, 44, 30, 9, 8), (39, 49, 36, 46, 9, 8), (47, 17, 44, 14, 8, 9), (47, 25, 44, 22, 8, 9)] offset 733–789 · 상태state=NOT_FINISHED levels_completed=3 clicks_this_turn=5 offset 790– · OBSERVED — 여기서 색 사이클이 발견된다OBSERVED: click(39,17): 9->8 | flips (39,16):9->8; (38,17):9->8; (40,17):9->8; (39,18):9->8; (39,15):9->8; (38… offset 2,431–2,571 · 원장 헤더HYPOTHESIS LEDGER — TRIED & REFUTED (harness-verified, this level; do NOT re-propose a REFUTED claim — prefer a structurally different one): offset 3,599–3,912 · R26 판정 — 이 한 줄이 round 27을 촉발했다 R26 REFUTED: Clicks at (39,17), (47,33), and (39,49) repaint those macro-tiles 9→8; clicks at (47,17) and (47,25) repaint the accidental 2-coded macro-tiles 8→9. After these five corrections, ACTION5 or the final click should advance levels_completed to 4.```python [predicted a clear; engine says NOT_FINISHED] offset 4,911–5,442 · [r173] — round 27이 실제로 인용하는 유일한 skill L2 winner [r173 0.90] claim: Executable translation of the centre-colour-specific central-key family: detect every 6x6 key glyph made from uniform 2x2 subcells, read the two answer colours from homogeneous 6x6 macro-tiles, and decode each key locally so the lower-valued clue symbol maps to that key's centre colour while the higher-valued clue symbol maps to the other answer colour. This is the programmatic form of '12-centred keys and 8-centred keys use opposite local mappings' without hardcoding absolute board coordinates. offset 11,721–11,845 · 마지막 줄SLEEP: mined 6: 1 accepted, 2 parked, 1 confirmed, 1 dropped, 15 observations folded, 23 competing mechanics (entropy 3.05).
이 턴의 브리핑은 66%가 MEMORY였고, expert 섹션은 0이었다CONSENSUS·WORLD MODEL·WIN-CONDITION·OTHER SKILLS·TOOLS·PLAN·COVERAGE PROBE·NOTES 전부 offset −1.
검증 메모 — MEMORY 안에 무엇이 들었나

L0/L1/L2 winner 각 1줄 · VICTORY REPORT 5줄 · Lesson: 21줄 = 4,200자 = 브리핑 전체의 35.5%. 전부 레벨 0–2의 refuted-family 반복인데, 액터는 레벨 3에 있다.

③ ACTORruns/bwsvfull/g2-on-ft09-s0-bwsvfull/llm_calls.jsonl · c-0142 · response_text
c-0142 · response_text · gpt-5.5_2026-04-24 · effort mediumbyte-exact verbatim
hypothesisHYPOTHESIS: R26 was wrong because it changed the target rule rather than just accounting for the paint cycle. I now return to the Level-2-cleared centre-colour-specific target grammar per [r173]: for 12-centred keys, 0-coded neighbours should be 12 and 2-coded neighbours should stay 9; for the 9-centred key, 0-coded neighbours stay 9 and 2-coded neighbours become 12. The new refinement is only action mechanics: on Level 3, ACTION6 cycles editable tiles 9→8→12→9, so a 9 tile needing 12 must be clicked twice across turns. whyWHY: The observed 9→8 and 8→12 sequence explains why R25 did not clear: the intended 12 targets were only halfway painted. The strongest move is to finish the five R25 target tiles currently at 8 by clicking each once to 12, while not spending a useless single click on the two accidental 8 tiles that need two clicks to return to 9. expectEXPECT: Clicks at (23,17), (23,33), (23,49), (31,49), and (39,49) should repaint macro-tiles (20,14), (20,30), (20,46), (28,46), and (36,46) from 8 to 12. I do not necessarily expect a clear this turn because (36,14) and (44,30) likely still need 8→12→9 repair next turn.```python

액터는 목표 문법을 바꾸지 않고([r173] 복귀) 액션 역학만 새로 배우며, EXPECT에서 클리어를 스스로 부인한다. 출처는 브리핑이 아니라 ②의 OBSERVED:다.

검증 메모 — 왜 트레이스 필드가 아니라 response_text를 인용했나

runs/S5/bwsvfull.jsonl r27의 why는 로그 300자 하드캡으로 …that nee에서 잘려 있고, expect에는 파서 잔여물이 붙어 있다. 위는 response_text에서 딴 완전본이다. output_tokens 3376reasoning 2530. EXPECT 끝의 ```python은 코드 블록의 시작으로, 로그에 byte 그대로 있어 지우지 않는다.

④ SIMULATE + COMMITruns/S5/bwsvfull.jsonl · round 27 sims / action
simulate 결과 — 데이터 없음(sims = 0). 런 전체로도 59라운드 중 sims > 0는 round 53 하나뿐이다.
EXPECT의 좌표 5쌍
(23,17) (23,33) (23,49) (31,49) (39,49)
커밋된 action — 5개, 전부 ACTION6
[["ACTION6",23,17],["ACTION6",23,33],
 ["ACTION6",23,49],["ACTION6",31,49],
 ["ACTION6",39,49]]
검증 메모 — 스킬 사용을 필드로는 셀 수 없다

액터는 본문에 [r173]을 인용했으나 구조화된 hypothesis_idsskill_version_ids빈 배열이다. 또 c-0142의 코드 블록에도 simulate(/mismatch(/boards( 호출이 없다 — observe(), obs.grid, submit_action("ACTION6", x, y)만 쓴다.

⑤ OBSERVEruns/S5/bwsvfull.jsonl · round 27 actions[i].observed_diff · post_grid
round 27 post_grid — ①과 견주면 다섯 칸이 8→12로 뒤집혔다.
#actiondiff전이footer
1ACTION6 (23,17)378→12, 타일 (20,14)(55,63) 12→11
2ACTION6 (23,33)368→12, 타일 (20,30)없음
3ACTION6 (23,49)378→12, 타일 (20,46)(54,63) 12→11
4ACTION6 (31,49)378→12, 타일 (28,46)(53,63) 12→11
5ACTION6 (39,49)368→12, 타일 (36,46)없음

183셀 · {(8,12):180, (12,11):3} · levels 불변.

EXPECT가 예측한 다섯 타일이 정확히, 그리고 오직 그것만 바뀌었다.
검증 메모 — footer 셀 3개

타일 셀 5×36 = 180, 나머지 3은 footer 행(y=63) 셀이다. 5클릭 중 3번만 기록된 이유는 트레이스만으로 확정할 수 없으므로 메커니즘을 지어내지 않고 "액션 1·3·4에 귀속되어 기록됨"이라고만 쓴다.

⑥ FIDELITY → SLEEP → FOLD → 다음 브리핑wm_fidelity.jsonl · bundle.jsonl · bwsvfull.jsonl.sleep.jsonl
runs/bwsvfull/g2-on-ft09-s0-bwsvfull/wm_fidelity.jsonl · round 27byte-exact verbatim
row{"round": 27, "level": 3, "location": 0.0, "value": 0.0, "top_id": "r186", "top_credence": 0.9888059701492538, "best_f1": 0.9812332439678284, "best_id": "r115", "best_credence": 0.6611031002162941, "n_predicted": 0, "n_observed": 183, "wrong_value": 0, "invented": 0, "missed": 183}
추정량 location = |pred ∩ obs| / |pred ∪ obs| · value = ev.f1 (run_game.py · wm_fidelity()). predicted가 공집합이라 0.0은 "틀렸다"가 아니라 "아무 예측도 없었다"이다.

왜 예측이 0인가. top-1 r186when이 이 보드에서 False다 — 레벨 경계 예측기가 레벨 클릭의 1등이었다. r26–59의 34라운드 전부 n_predicted=0, top-1은 34/34 r186.

ttso/eval/run_game.py · top_mechanic() docstringverbatim
근인 — 코드가 직접 서술한다the SELECTION sites never did: they took `max(mechs, key=credence)` over the whole library, so a rule whose `when` is false on this board could still hold the top slot and hand the actor an empty prediction. … 153 of 227 committed actions (67%) went out with the top mechanic silent, and 147 of those changed the board anyway … credence correlates with the selected rule's actual F1 at -0.305.
recordr25r26r27r28r29final α / β
r186 — top-1, when False0.98880.98880.98880.9888265.0 / 3.0
r115 — best_id, 실제로 맞춘 규칙0.56150.60120.63410.66110.6830215.84 / 124.16
r90.78230.81760.78720.69080.6908135.4 / 84.6
r195 — sleep 17 산0.25000.90500.905032.58 / 3.42
r190 — sleep 17 산1.0 / 19.0 · retired

fold는 작동했다 — r195가 0.2500 → 0.9050으로 오르고 형제 r190은 retired 됐다. 그런데 top-1은 34라운드 내내 r186 고정이었다. fold는 랭킹을 갱신했지만 선정은 그 갱신을 쓰지 않았다. α/β 열은 final이다.

bundle.jsonl · r203 (metathinking · born_sleep 18) · doc 발췌verbatim
reasoning logREASONING LOG (level 3, sleep 18): Hypothesis families tested on level 3: 6 (rounds 25-27). … - R26 was wrong because it changed the target rule rather than just accounting for the paint cycle. … (R27 — claims the current state clears; engine says NOT_FINISHED)
판정기가 액터의 자기부인을 읽지 못했다 — EXPECT는 "I do not necessarily expect a clear this turn"이라 썼는데 하네스는 claims the current state clears로 라벨해 REFUTED에 넣었다.

그래서 다음 브리핑은 액터 자신의 코드가 찍은 진단으로 시작한다 — known repair candidate (36, 14) current 8 target 9 via two clicks if still 8. 인계 정보는 skill store가 아니라 액터의 print()였다.

검증 메모 — sleep 카운터는 서로 맞지 않는다

round 27 직전의 sleep_index 17(c-0131~c-0141, 11콜)은 r190…r197을, 직후의 sleep_index 18r198…r204를 냈다. 브리핑 마지막 줄의 "mined 6"과 sidecar의 admitted 8건, sleep 17의 miner 콜 4건은 서로 맞지 않는다 — 두 파일만으로 카운터 의미를 확정할 수 없어 문자열 그대로만 조판하고 파생 해석을 쓰지 않는다. 예측이 존재한 20개 라운드(r3–25)의 평균은 location 0.8208 · value 0.6864다.

이 턴에서 데이터가 없어 지어낼 수 없는 것 — 다섯

① simulate 결과(sims=0)  ② 예측 자체(n_predicted=0)  ③ expert 섹션

④ 라운드별 α/β 스냅샷  ⑤ hypothesis_ids·skill_version_ids(빈 배열)

S3

바꾸기 전과 후 — 모델의 말로

problem · change · before/after · outcome
CARD A

E3 게이트 — 같은 벽, 한 문장 삭제

fixed+validated
PROBLEM

벽에서 라운드당 정확히 1.00 액션으로 고착 — 점수가 액션의 제곱에 반비례하므로 곧 파산이다.

PROMPT CHANGE

run_game.py:228-236의 상수 _G_E3_GATE, 544자. TTSO_NO_E3_GATE=1이 byte-exact로 지운다.

_G_E3_GATE · 544 chars · 삭제된 문장verbatim
deletedBefore you commit a DENSE multi-click action meant to CHANGE the board, first simulate that exact action on your own world model: if the simulation predicts no state-changing diff, or your highest-credence world-model rule is below 0.70 credence, take ONE cheap observational probe and verify it before the dense commit -- lock the model before you leap (experiment E3, 2026-07-17). This is a one-probe-per-uncertainty guard, not a licence to observe forever: once a rule clears 0.70 or your simulation confidently predicts the change, commit.
ACTUAL MODEL RESPONSE — BEFORE vs AFTER
BEFORE · runs/S5/cWall.jsonl · round 1 · 게이트 ONverbatim
hypothesisHYPOTHESIS: The grey/white/orange inset panels are interactive keys; clicking the small orange marker inside one key should reveal or apply that key’s rule. whyI do not yet have a confident world-model rule, so per the one-probe guard I should take exactly one cheap observational probe rather than dense-click the board. expectOne local key/panel or its associated red-cell region changes; if nothing changes, this click location/rule is refuted and I will use the observed mismatch next turn.```python action (committed)[["ACTION6", 62, 6]] observed_diff[0] — 0 cells changed · NOT_FINISHED
AFTER · runs/S5/noE3wall.jsonl · round 6 · 그 문장만 삭제verbatim
hypothesisHYPOTHESIS: Per [r50] with [r3], the union of 0-coded neighbor positions from the four clue panels are target repaint tiles; ACTION6 repaints each clicked homogeneous 8 tile to 12 per [r45]. whyThis is structurally different from the refuted single-column/partial-consensus clear claims: it follows all local 0 clues rather than expecting these six alone to clear. expectEach click changes exactly its 6x6 macro-tile from 8 to 12: bboxes x=20..25,y=20..25; x=28..33,y=20..25; x=36..41,y=20..25; x=44..49,y=20..25; x=20..25,y=36..41; x=36..41,y=36..41. No clear is assumed yet because one remaining union target may remain. action (committed)[["ACTION6", 22, 22], ["ACTION6", 30, 22], ["ACTION6", 38, 22], ["ACTION6", 46, 22], ["ACTION6", 22, 38], ["ACTION6", 38, 38]] observed_diff[36, 37, 37, 36, 37, 37] — 여섯 클릭이 전부 착지

BEFORE의 why는 게이트가 그대로 되돌아온 문장이다 — "per the one-probe guard".

MEASURED OUTCOME
metriccWall (ON)noE3wall (삭제)
rounds / 총 액션8 / 810 / 29
actions / round1.002.90
per-round counts[1,1,1,1,1,1,1,1][1,1,4,3,2,6,2,1,3,6]
batch rounds — ≥3 액션05
batch rounds — ≥2 액션07
Σ sims60
levels cleared00
value-agreement0.01820.0182

추정량 1 − Σ(wrong_value)/Σ(pred ∧ obs), 동결 preload 번들: cWall 1−216/220 · noE3wall 1−648/660. 다섯 자리까지 같다 — 게이트는 정확도를 사지 못했다.

검증 메모 — 짝의 청결도, 재현되지 않은 값 둘, batch 정의

짝은 깨끗하다. git diff 0d9c0c3 bec6156 -- ttso/auto/prompt.py비어 있고(PROMPT_THIN byte-identical), load_bundle sha256 동일, round-1 pre_grid 동일. 단서: --max-rounds가 8 vs 10이라 총계는 비교 불가, 비율은 무관.

깃발 ⑴ 두 런에는 wm_fidelity.jsonl이 없다(그 로깅은 bwsv부터). 위 0.0182는 런 자신의 기록된 전이와 같은 preload 번들로 한 오프라인 재구성이지 로그된 시계열이 아니다.

깃발 ⑵ docs/reports/2026-07-27-bw-prereg.md:53은 noE3wall value agreement를 0.006이라 적었으나 같은 prereg의 자체 표와 모순되고 어떤 추정량으로도 재현되지 않는다. 고칠 것은 덱이 아니라 prereg다.

batch 정의. "0→5"는 ≥3 정의에서만 재현된다. ≥2 정의로는 0→7이다. 둘 다 참이라 표에 둘 다 인쇄했다.

CARD B

원장 수정 둘 — 어떤 규칙이 top-1이 되는가

fixed+validated
PROBLEM

옳은 규칙이 라이브러리에 내내 있었다. 팔레트가 틀린 규칙에게 0.0071 차이로 top-1을 내줬고, 원장에는 값이 틀린 것을 물릴 방법이 없어 격차가 닫힐 수 없었다.

CODE CHANGE

TTSO_WRONGVALUE_HARM=1(penalty) · TTSO_STANDALONE_SAVED=1(reward). 같은 벽 · seed 0 · 같은 preload 번들 · 10라운드.

무엇이 top-1이었나 — 라이브 candidate_ranking의 argmax
BEFORE · bw — penalty만
r1  r15 0.9000
r2  r15 0.9000
r3  r9  0.8929
r4..r10  r9  0.8929   ← 동결
AFTER · bwsv — 둘 다
r1  r15 0.9000
r2  r15 0.9000
r3  r45 0.9302
r4  r78 0.9423 → … → r10 0.9847

r15는 색만 전부 틀리고, r9는 옳은 게 아니라 침묵하며, r78은 사전확률 0.25로 묻혀 있던 옳은 규칙이다.

검증 메모 — 세 규칙의 predict_next

r15(기존 챔피언) 클릭한 타일을 8↔9로 토글 — 셀은 거의 다 맞히고 색만 전부 틀린다(이 벽에서 엔진은 12로 칠한다). r9(bw 승자) 같은 토글이되 when()이 보드에 9가 있기를 요구해 스스로 게이트 아웃된다 — 옳은 게 아니라 침묵하는 것이고 saved_harmed는 침묵을 중립 (0,0)으로 친다. r78(bwsv 승자) ACTION6가 클릭한 6×6 타일을 footer 행에서 읽은 색으로 칠한다 — 레벨 2의 8→12로 일반화되는 쪽이다. r33도 같은 8↔9 가족이라, 같은 오답을 주장하는 형제 둘이 서로를 (0,0)으로 가려 주었다.

ACTUAL MODEL RESPONSE — BEFORE vs AFTER
BEFORE · runs/S5/bw.jsonl · round 3 · top-1 = r9verbatim
hypothesisHYPOTHESIS: The current consensus target set is correct: the top-left and middle-left neighboring red 6x6 tiles around the upper key must be repainted to 12. ACTION6 repaints whole homogeneous 6x6 tiles per [r45], and the key/macro-tile grammar transfers per [r50]. whyThe briefing explicitly marks cells in both tiles x=20..25,y=4..9 and x=20..25,y=12..17 as CONSENSUS; per [r4/prim], these are no-regret commits rather than an uncertain coverage probe.
AFTER · runs/S5/bwsv.jsonl · round 4 · top-1 = r78verbatim
hypothesisHYPOTHESIS: The central-key/frame target continues to mark specific red 6x6 macro-tiles for repainting to 12; the next consensus target is the tile x=20..25,y=12..17 per [r50]. whyThe briefing’s CONSENSUS cells all lie in that homogeneous red tile, and [r78]/[r107] model ACTION6 as repainting the whole clicked editable 6x6 tile to the board-read repaint colour 12. This is a confident no-regret move, so I skip the coverage probe.

과대 해석하지 않는다. 액터는 양쪽에서 물리적으로 옳은 답에 도달한다. 수정이 바꾼 것은 무엇이 1등이 되는가다. 정직한 주장은 "액터가 옳아졌다"가 아니라 "원장이, 액터가 이미 믿어 마땅했던 규칙을 1등으로 올렸다"이다.

MEASURED OUTCOME

bwsv value-agreement = 1 − 0/504 = 1.0000 (로그된 10행, 두 경로 교차검증). 더 강하고 완전히 재현되는 서술: bw top-1 r9는 벽 전이 18개 중 0개, bwsv top-1 r7818/18·F1 0.937이다.

검증 메모 — bw = 0.000은 재계산 불가, prereg 리플레이 표는 재현 실패

깃발 ⑴ runs/bw/g2-on-ft09-s0-bw/wm_fidelity.jsonl없다(런이 그 로깅보다 앞선다). 기존 §03의 0.000은 prereg의 예측 리플레이 표에서 온 값이고 정의가 "최종 top 규칙의 18개 전이 mean F1"이라 비교 대상인 1.000과 다른 추정량이다. 즉 0.000 → 1.000 화살표는 두 추정량을 가로지른다.

깃발 ⑵ 오늘 HEAD에서 실제 fold 경로(applicable → saved_harmed → Store.observe_bits)를 그 18개 전이에 다시 돌리면 세 원장 설정 모두에서 r78이 승자(18/18 · mean F1 0.9368)로, prereg의 r15 → r9 → r78 사다리가 나오지 않는다. level과 필터를 12가지로 쓸어도 같다. git log상 코드 드리프트가 아니라 리플레이 방법론 차이다. 18개 전이에는 중복 _tkey가 하나 있어 실제 fold 키는 17개다. 위의 라이브 트레이스 증거는 이 문제와 무관하며, 카드를 지탱하는 것은 그쪽이다.

부수치도 재현: bwsv mean best_f1 0.9975 · mean USED f1 0.7902. bwsvfull은 1 − 756/2591 = 0.7082 · USED 0.2666 · best 0.8132으로 §02 표의 0.71*/0.267/0.813과 일치한다.

CARD C

브리핑 메모리 캡 — 아직 검증되지 않았다

landed but unvalidated
PROBLEM

이긴 런에서 전문가 섹션이 사라졌다. 59라운드 전수 재계산:

섹션존재 라운드마지막
CONSENSUS0 / 59
OTHER SKILLS6 / 5927
WORLD MODEL23 / 59224
WIN-CONDITION POSTERIOR23 / 59224
MEMORY54 / 59659

MEMORY만 실린 브리핑: 35개, round 25 → 59, 런 끝까지 연속.

CODE CHANGE

ttso/sleep/wake.py:221_MEMORY_KEEP = 2, 적용은 :255-257.

reports = reports[-_MEMORY_KEEP:]
lines = (_winner_lines(store, level)[-_MEMORY_KEEP:] + reports
         + _lesson_lines(store)[-_MEMORY_KEEP:])

항목 수 캡이 없었고 이 블록이 가장 먼저 렌더된다 — 레벨을 깰 때마다 winner 줄이 아래 전문가 절을 잘라냈다.

MEASURED OUTCOME
LANDED BUT UNVALIDATED — after-run이 없다. 진행 중인 allfix가 이 캡을 밟지만 미완이고 n=1이며 세 레버와 교락돼 있다. 측정된 것은 문제이고, 수정은 아직 가설이다.
검증 메모 — off-by-one 규약과 소스 주석의 오기

깃발 ⑴ 기존 §03·§04의 "OTHER SKILLS 마지막 r6 · WORLD MODEL·WIN-CONDITION 마지막 r23"은 일관되게 1 작다. 원인은 존재하지 않는 round 1 브리핑이다(round 1의 user 파트는 시스템 프롬프트 4,155자 하나뿐). 브리핑을 1…58로 세면 6·23, 라운드로 세면 7·24다. 덱의 다른 모든 수치가 라운드 인덱스이므로 라운드 기준을 권한다. MEMORY가 r1–5에 없는 것도 절단이 아니라 설계다 — memory_materialslevel <= 0에서 ""를 반환한다.

깃발 ⑵ ttso/sleep/wake.py:248-249 주석의 "36 consecutive briefings"는 생성 기준으로는 36, 전달 기준으로는 35다 (round 24의 브리핑은 아직 WORLD MODEL과 WIN-CONDITION POSTERIOR를 싣는다). 주석을 고쳐야 한다. 캡은 ttso/tests/test_ls20_readiness.py:120이 핀으로 고정한다.

S4

좋은 것과 나쁜 것 — 같은 무게로

verdict table · good ∥ bad
판정무엇이근거 / 대조
observedft09 6/6 두 번 (C3 · bwsvfull), 누수 0n=1 · seed 0. 원인 귀속 없음.
isolated-experimentE3 게이트가 1클릭 고착의 원인cWall vs noE3wall — 같은 벽·번들·시드, prompt.py diff 공집합. 셀당 n=1.
improved-after-fix원장 랭킹이 적용되는 규칙을 1등으로 올림bw(r9, 18개 전이 중 0개 적용) → bwsv(r78, 18/18, F1 0.937 · value-agree 1−0/504).
not workingrefine · plan search · 후반 브리핑개정 0/244 · plan 레코드 0(두 게임) · MEMORY-only 35라운드 연속.
anti-contributingselection (회수·랭킹)corr(top_credence, 실현 F1) −0.305 · top=최선 0/59 · 침묵 커밋 67%.
not yet proven브리핑 메모리 캡 (_MEMORY_KEEP=2)after-run 없음. 문제만 측정됐다.
in flightallfix — 원장 수정 + advisory abort + applicable-top미완 · n=1 · 네 변경 동시라 격리 불가. 아래 LIVE STATUS.
GOOD
  • ft09 2×6/6, 누수 0.C3 52R/174a · bwsvfull 59R/227a · 각 n=1
  • 번들 전이 양성(07-25). fresh 대조군 seed 1·2가 각 1레벨, 같은 시드의 번들-시딩 짝이 2레벨.매치드 플라시보로 암기 해석 기각 · 셀당 n=1
  • E3 원인 격리. a/r 1.00→2.90 · batch 0→5(≥3), 0→7(≥2)대조: value-agreement는 0.018로 불변 — 정확도는 사지 못했다
  • 원장 랭킹 수리. top-1이 "적용 0/18"에서 "18/18 · F1 0.937"로대조: 그래도 풀런 USED f1은 0.267
  • in-context 수리가 작동. r26 오류 → r27 색 사이클 학습 → r28 국소 수리 → r29 레벨 4대조: 정보 통로는 skill store가 아니라 액터의 print()였다
BAD
  • 재현 없음. 모든 런이 seed 0. 6/6은 아직 일화다.
  • 이긴 런에서 브리핑이 사라졌다. CONSENSUS 0/59 · MEMORY-only 35라운드 연속.
  • refine 0 / 244. ls20a 0/124 · noE3full 0/346 — 구조적 불가능.
  • selection −0.305. 자신 있을수록 틀린다. top=최선 0/59.
  • retrieval 0.267 vs best 0.813. 규칙은 있었고 쓰이지 않았다.
  • ls20은 레벨 0도 못 깼다. 40R · 40a · 1.00 a/r.
  • ACTION5 유령. 엔진에 없는 액션이 34개 스킬 버전에 들어가 19/40 브리핑을 오염시켰다.
  • O(n²) 스코어링 비용. 라운드당 비-LLM 1.5 → 116분 — 재현을 비싸게 만드는 세금.

모든 양성은 자기 대조군 옆에 있다.

원장 전수 스윕에서 올라온 것 — 이 덱의 주장을 좁히는 다섯 가지

원장 95항목 중 이 덱이 반영한 것은 9개다. 빠진 것 가운데 헤드라인을 읽는 방식을 바꾸는 다섯을 아래에 싣는다. 각 수치는 트레이스에서 재계산했다.

  1. 2×2의 빠진 칸 — sixsix. 90라운드 247행동 4/6, RHAE 17.9, simulate 강제 차단(sims 0), E3 게이트 ON(그 커밋엔 해제 플래그가 없었다). 게이트가 켜졌는데도 벽에서 2.72클릭/라운드로 배치했다 — 게이트는 simulate를 통해서만 문다는 기제의 자연 실험이다. 단, 이것이 “시뮬은 공짜 탐색”의 반증은 아니다: sims 0인 런 둘이 17.9·19.7, sims 41인 C3가 40.9로 오히려 일관된다. n=1.
  2. 축 1 “PASS”의 범위. best_f1 0.813wm_fidelity.jsonl에서 오고 mechanic만 채점한다. 승리 런 번들 346개 중 산문(strategy 71 + metathinking 61) 132개의 92.4%(122개)가 증거 0이다 — credence 0.500이 74개, 0.250이 49개로 태어난 프라이어 그대로다. “네 축 중 하나는 건강하다”가 아니라 그 한 축이 네 kind 중 하나만 덮는다.
  3. C3의 채점 구조는 오늘과 다르다. C3 커밋(3879ed5)에는 fold() 단일 관문, V = credence + λ·f, adaptive_lambda, EVENT_EVIDENCE_CAP, PROMPT_THIN전부 없었다. RHAE 40.9를 낸 버전은 이 덱이 §03—§05에서 감사하는 구조를 갖고 있지 않았다. “C3를 재현한다”와 “이 루프를 검증한다”는 다른 실험이다. 원장 2026-07-26 출처, 이번 세션에 git 재감사는 하지 않았다.
  4. C3 재생은 IDENTICAL. docs/reports/c3-action-replay.json: 52/52 라운드, 174/174 행동, 최초 발산 없음, 6/6 재현, LLM 호출 0. C3 대 오늘의 모든 비교가 “환경이 바뀐 것 아니냐”는 반론을 받을 때 이것이 유일한 면허다.
  5. 전이 양성의 범위 — 어느 절반이 전이되는가. §05의 번들 +1레벨은 실재하지만, 같은 프로그램이 실행 가능 rollout을 꺼도 세 시드에서 손해가 없었다: seed 1 FULL 2 → TEXT 3 · seed 2 2→2 · seed 3 1 → TEXT 2. 전이되는 것은 실행 코드가 아니라 브리핑된 텍스트 쪽이다. n=1 per cell.
S5

두 에피소드 — 보드로 본다

success: ft09 r25–29 · failure: ls20 ACTION5

SUCCESS — bwsvfull(ft09) rounds 25–29

BEFORE — round 25 pre_grid · levels=3

5 라운드
24 액션
AFTER — round 29 post_grid · levels=4
R무엇을 믿었나 (hypothesis 발췌, verbatim)무엇을 했나무엇을 관측했나무엇을 갱신했나
25 “Level 3 continues the confirmed centre-colour-specific central-key grammar from [r173]…” ACTION6 ×6
(23,17)(47,17)(47,25)(23,33)(23,49)(31,49)
220셀 · {(9,8):216,(12,11):4}
12가 아니라 8이 됐다
답 색 추론이 틀렸다고 결론
26 “…the local centre-colour rule is inapplicable; instead use the [r50] value rule … clue 0→8 and clue 2→9” ACTION6 ×5 + ACTION5 184셀 · 클리어 없음 하네스가 EXPECT를 REFUTED로 판정, 원장에 기록
27 “R26 was wrong because it changed the target rule rather than just accounting for the paint cycle … ACTION6 cycles editable tiles 9→8→12→9” ACTION6 ×5
(23,17)(23,33)(23,49)(31,49)(39,49)
[37,36,37,37,36] · 183셀 · {(8,12):180}
예측한 5타일만 정확히
fold는 r195를 0.25→0.905로 올렸으나 top-1은 r186 0.9888에 고정
28 “The remaining Level-3 error is not the [r173] target grammar, but the Level-3 three-state paint cycle … stuck at 8 … cycles 8→12→9” ACTION6 (39,17)×2, (47,33)×2 + ACTION5
같은 좌표 두 번 = 사이클 두 칸
[37,37,36,37,1] · {(8,9):72,(12,11):4} 수리 후보 좌표는 액터 자신의 print()가 브리핑에 실어 돌려준 것
29 “…when two or more central-key constraints disagree on the same macro-tile, the tile should be the third editable colour 8” ACTION6 ×4 [36,37,37,1901] — 마지막 액션에서 보드 전체 교체 levels 3 → 4

정직한 요약: 진급을 만든 것은 오예측을 관측으로 되받아 액션 역학(색 사이클)을 배운 in-context 수리다. 같은 구간의 sims=0 · n_predicted=0 · 전문가 절 0개.

FAILURE — ls20a: 엔진에 없는 ACTION5가 시스템을 순환한다

1base prompt가 목록에 넣는다
submit_action(name)  -- a non-click action: RESET, ACTION1 (Up),
ACTION2 (Down), ACTION3 (Left), ACTION4 (Right), ACTION5 (Spacebar);
check observe().available first
43개 actor 호출 전부에 존재
2엔진에는 없다
available ['ACTION1', 'ACTION2', 'ACTION3', 'ACTION4', 'RESET']
브리핑에 8회 동일 등장 · 커밋 40액션은 ACTION1×16·2×8·3×8·4×8 — ACTION5 커밋 0회
3액터가 round 21에 발명한다 round 21 브리핑에 ACTION5는 없다 — 출처는 번들이 아니라 프롬프트 표면이다
4store가 붙든다 — 34개 스킬 버전 wincond 24 · metathinking 9 · mechanic 1 (r69…r129). 텍스트가 when_not 절에 박혀 반증 경로가 지우지 못한다
5브리핑이 되풀이한다 — 19/40 라운드 원장의 반증조차 토큰을 재주입한다: R21 REFUTED: ACTION5 may cause no ordinary cell translation; …
6액터가 11라운드에서 인용, 14라운드에서 제출 시도 선언 필드 기준 11(THINK까지 세면 20) · submit_action("ACTION5")를 쓴 라운드 14 · 엔진 도달 0건
ls20a round 21 pre_grid · levels=0
runs/S5/ls20a.jsonl · round 21verbatim
hypothesisHYPOTHESIS: The top-alcove/marker route [r54] may require an explicit Spacebar activation rather than automatic clearing when the 5x5 actor reaches the marker; ACTION5 should test that structurally different interaction. code (guard)obs = observe() if "ACTION5" in obs.available: submit_action("ACTION5")

액터는 올바르게 방어했고 가드는 닫힌 채 실패했다. 재시도는 "Since ACTION5 was unavailable/no-op, …"로 시작한다. 액터는 한 라운드 만에 배웠다. store는 배우지 못했다.

검증 메모 — 재현되지 않은 항목 하나

"round 21은 아무것도 커밋하지 않아 pre_grid == post_grid"는 라운드 수준에서 틀리다. round 21의 call_ids['c-0119','c-0120']이고 재시도가 ACTION3를 커밋해 52셀이 바뀌었다. 정확한 서술은 "ACTION5를 시도한 첫 호출이 아무것도 커밋하지 못했다"이다. 또 브리핑 19/40은 feedback 기준 r21–40(28 제외)이고 llm_calls 기준으로는 r22–40(29 제외)+시스템 프롬프트다 — 같은 19다.

엔진이 존중하지 않는 목록 한 줄이 40라운드 중 20라운드의 주의를 먹었고 34개 store 레코드에 들어갔다. store에는 잘못 주어진 토큰을 철회할 기계가 없다.

LIVE STATUS — allfix · PRELIMINARY · 결론이 아니다

진행 중 — ft09 · level 0 · --max-rounds 90 · complete: false. 레버 넷: 원장 수정 둘 + advisory abort + applicable-top, E3 게이트 ON.

2026-07-31 판독 (runs/S5/allfix.jsonl)19라운드 · 54액션(2.84 a/r) · levels 3(r14) · Σsims 19 · batch(≥3) 8 · NOT_FINISHED. 시뮬과 배치의 공존이 관측된다 — 이 arm의 유일한 관전 포인트다.

이 상자는 어떤 결론에도 들어가지 않는다 — 미완 · n=1 · seed 0 · 네 변경 동시라 격리 없음. §08의 in-flight 상자는 17라운드 시점 판독이며 그 네 축 스냅샷도 잠정치다.

S6

오늘 우리가 정할 것

세 선택지 · 각각의 근거 · 권고
A — 먼저 재현한다 (seeds 1–2)

무엇 — bwsvfull 구성 그대로 시드만 바꾼다.

근거 — bwsvfull 셀이 전부 n=1이다. 6/6도 네 축도 한 시드의 값이다.

반증 조건 — 한 시드라도 6/6에 실패하면 "재현되게 이긴다"는 주장은 기각되고 시드운으로 강등된다.

권고
B — 먼저 기제를 고친다 (refine · plan)

무엇orchestrator.py:1360set_code()를 부르게 하고, plan 탐색의 예산·합의 결박을 푼다.

근거 — 0/244는 확률이 아니라 구조적 불가능이었다. plan 레코드는 두 게임 모두 0이고, ls20이 요구하는 기계가 그것이다.

반대 근거 — 둘 다 이번 6/6에 쓰이지 않았다. 고쳐도 왜 이겼는지는 모른다.

C — 먼저 액션 효율을 검증한다

무엇 — advisory abort(취소 대신 경고)로 simulate와 배치가 공존하는지 확인한다.

근거 — 점수는 액션의 제곱에 반비례한다. C3(40.9)와 bwsvfull(19.7)의 차이는 레벨이 아니라 액션 소비다.

반대 근거 — allfix는 격리가 없고, 점수 개선은 왜 이겼는가에 답하지 않는다.

권고 — A를 먼저

B와 C는 둘 다 6/6이 쓰지 않은 부품을 건드린다. 고쳐도 이 덱의 질문은 그대로 남는다.

A만이 지금 있는 모든 주장의 지위를 바꾼다. 재현되면 나머지 전부가 "재현되는 현상 위의 측정"이 되고, 실패하면 이 덱의 절반을 다시 써야 한다.

A는 코드를 바꾸지 않아 B·C와 병렬로 돌릴 수 있다. 다만 allfix가 이미 예산을 쥐고 있다.

여기서부터 상세 근거 — APPENDIX

아래 §01–§08은 기존 연구 기록 그대로다.

01

루프: 낮에 행동하고, 자면서 채굴하고, 한 곳에서만 믿음을 고친다

how it works
STORE 스킬 레코드 (α, β, code) credence = α/(α+β) briefing render wake.py · cap 8000자 WAKE actor HYPOTHESIS→WHY→EXPECT→act game submit_action = 유료 · simulate = 무료 SLEEP miner ⇄ judge V = credence + λ·f 로 정렬 fold() 유일한 α/β 기록자 trace / transitions 증거 α/β 갱신
fold()는 헌법 §2가 정한 단 하나의 α/β 쓰기 지점이다 (ttso/sleep/evaluate.py:78). 스킬 다섯 종: mechanic · wincond · strategy · metathinking · plan (skills.py:78). 믿음 credence = α/(α+β), 정렬용 V = credence + λ·f (f는 매 sleep 백지 재산정, credence에 섞이지 않음).

다섯 번째 plan(2026-07-18 추가)은 모든 런·두 게임에서 레코드 0개다. 진단은 §3·§8.

02

숫자 읽는 법: RHAE는 액션의 제곱에 반비례하고, simulate는 공짜다

how to read the numbers
막대 = actions/round · ■ 1칸 = 클리어한 레벨 1개(6칸 중) · 오른쪽 = RHAE와 런 전체 sims 횟수. RHAE 0 = 클리어 레벨 0. 모든 행 n=1 (seed 0). ls20a만 다른 게임(ls20)이다. sixsix는 simulate를 하드 오프(TTSO_DISABLE_SIMULATE=1)하고 E3 게이트를 켠 채 90R/247a로 4레벨 — 현행 아키텍처 2위 기록이며 시뮬 0회다 (git 8e07f09 · fork_dependence 0).
simulate is free — 그리고 그게 측정된 전부다

simulate(plan)game.actions를 올리지 않는다.

측정된 것은 액션 예산을 쓰지 않는다는 사실뿐이다.

시뮬 사용량과 RHAE의 관측 상관은 없거나 음(−)이다: bwsvfull 3→19.7 · sixsix 0→17.9 · noE3full 0→16.5.

시뮬 다수 벽 런(cWall 6 · eWall 8 · svgate 9)은 전부 1.00 a/r, 0레벨.

2×2의 세 번째 칸 — 게이트는 simulate가 호출 가능할 때만 구속한다.

sixsix는 게이트 ON인데 벽에서 35회 배치했다 (2.74 클릭/라운드).

2026-07-16 커밋이 namespace.py:378-394에 "시뮬과 실제가 갈리면 남은 클릭 전부 취소" 핀을 박았다. C3는 그 이전 코드다.

C3의 승리는 지금 감사 중인 채점 아키텍처보다 앞선다.

커밋 3879ed5(07-10)에 fold() · decision_value · future_f · adaptive_lambda ·

EVENT_EVIDENCE_CAP · PROMPT_THIN하나도 없다 (07-31 소스 대조).

RHAE 40.9는 이 루프가 낸 점수가 아니다 — "C3 재현"과 "이 루프 검증"은 다른 실험이다.

환경은 무죄다. C3 액션열을 오늘 재생하면 verdict: IDENTICAL — 52/52 라운드, 174/174 액션, first_divergence 없음, 여섯 클리어 재현, 최종 WIN.

docs/reports/c3-action-replay.json · LLM 호출 0회. C3-대-현재 비교는 이 한 장으로만 성립한다.

전체 런 표 (8행) + 레벨별 RHAE 산식 + 트레이스의 다섯 량
runRlevelsa/rbatchvalue-agreesimsbest_f1USED f1RHAE
cWall801.0000.0186--0
noE3wall1002.9050.0180--0
bw1001.7010.0000--0
bwsv1001.6011.00000.9980.7900
bwsvfull5963.85430.71*30.8130.26719.7
sixsix9042.7437-0--17.9
noE3full6043.43300.471†0--16.5
ls20a4001.0000.97500.8320.3280

* 추정식 의존: value-agree(bwsvfull) = 1 − Σ(wrong)/Σ(pred∧obs) = 0.71. per-round 평균과 다른 식이므로 항상 식과 함께 인쇄한다.

잠정치 — 재계산 불가 (wm_fidelity.jsonl은 bwsv부터). sixsix는 미기록이라 "-". batch = 3개 이상 커밋한 라운드. 모든 행 n=1 (seed 0).

레벨 (가중치)baselineC3 소비C3 기여bwsvfull 소비bwsvfull 기여
1 (×1)154115.0 (캡)1687.9
2 (×2)77100.02012.25
3 (×3)1514114.8518.7
4 (×4)163718.72637.9
5 (×5)215813.16510.4
6 (×6)17549.94912.0
가중평균 →RHAE 40.9RHAE 19.7

ft09 baseline [15, 7, 15, 16, 21, 17]. 액션을 어디에 썼는지에 따라 점수가 두 배 갈린다.

sixsix 레벨별 소비 4/7/47/58/131 (다섯째 미클리어 → 0점), 재계산 RHAE 17.9.

트레이스의 다섯 량HYPOTHESIS([rN] 인용을 단 반증 가능한 주장) · WHY(로그에서 300자 하드캡, 문장 중간 절단) · EXPECT(예측 diff) · action · sims.

03

부품 원장: 아홉 부품, 각자의 결함, 그리고 "6/6이 그걸 썼는가"

component ledger — centrepiece
actor prompt (E3 gate)fixed+validated
briefing renderlanded+unvalidated
skill miningunfixed
refineunfixed
ledger — penaltyfixed+validated
ledger — rewardfixed+validated
selectionunfixed · 반기여
plan searchunfixed · 0 레코드
control triggersunfixed

셋은 측정 가능하게 무기여(refine · plan search · briefing 후반), 하나는 반(反)기여(selection).

행을 클릭하면 결함 · 격리쌍 · "6/6이 썼는가" · 선행연구 대응이 펼쳐진다 (references/schema.html).

actor prompt (E3 gate)ttso/auto/prompt.py:209–2146/6은 게이트가 삭제된 상태로 이겼다 (3.85 a/r)fixed+validated
defect
밀집 커밋 전 시뮬로 규칙을 잠그게 강제하는 문장. ON이면 라운드당 정확히 1.00 액션으로 고착 → 벽에서 점수 파산. 커밋 이등분(07-27)이 07-17의 이 문장을 지목.
change (when)
TTSO_NO_E3_GATE=1 — 문장 삭제 (2026-07-27, bw 계열부터). 이동: a/r 1.00→2.90 · batch 0→5 · sims 6→0.
2×2의 두 칸
cWall(ON) vs noE3wall(OFF) — 같은 벽·번들·seed 0, 각 n=1. 격리는 아니다: 게이트는 simulate가 호출 가능할 때만 구속한다. 세 번째 칸 sixsix(ON · 시뮬 하드 오프)는 벽에서 35회 배치, 2.74 클릭/라운드, 4레벨/RHAE 17.9.
did the 6/6 use it?
기여한 것은 게이트가 아니라 그 삭제다. 부작용: simulate 3회로 붕괴 (§8 advisory arm이 겨눈다).
prior work
Schema는 인증에서 밀도를 얻는다 — run_bfs 플랜을 commit_actions로 배치 소비 (schema.html:369).
briefing renderttso/sleep/wake.py:224 · render :397아니오 — 전문가 섹션 36라운드 부재 속에서 이겼다landed+unvalidated
defect
memory_materials에 항목 캡이 없고 절단 사다리보다 위에서 렌더 → cap_chars=8000이 그 아래 전 섹션을 절단. bwsvfull: CONSENSUS 0/59 · OTHER SKILLS 마지막 r6 · WORLD MODEL·WIN-CONDITION 마지막 r23 · MEMORY만 r59까지.
change (when)
_MEMORY_KEEP=2 (wake.py:221, 07-29). 격리쌍 없음 — 수정 후 런 미실행.
did the 6/6 use it?
r24부터 액터가 받은 것은 MEMORY와 가설 원장뿐. 후반은 전문가 절 없이 in-context 추론으로 갔다.
prior work
Schema의 기억은 world_model.py·notes.md·Timeline 파일 자체 — 캡 아래 재렌더되는 브리핑이 없어 절단이라는 실패양식이 없다 (schema.html:371).
skill miningttso/sleep/orchestrator.py:3096 · :3295절반 — 규칙은 좋았으나(0.813) 액션에 닿지 않았다unfixed
defect
품질은 네 축 중 유일 통과(0.813 / 0.832). 대신 (a) 중복 — dup code groups 4(최대 6)/3(최대 19), (b) 무근거 채굴 — ls20a에서 게임에 없는 ACTION5 가설이 브리핑 19/40에 등장. 출처는 번들이 아니라 base prompt의 인터페이스 목록 (§6).
change (when)
없음. 격리쌍 bwsvfull vs ls20a — 같은 코드, 두 게임에서 같은 등급·같은 결함.
did the 6/6 use it?
최선 규칙 0.813이 있었으나 회수가 무너져 실제 쓰인 값은 0.267. 좋은 광석, 닫힌 광산.
prior work
theorize는 프로그램 하나를 제자리에서 고친다 — 후보 레코드 더미를 채굴하지 않는다 (schema.html:367).
refinettso/sleep/orchestrator.py:1497 → 결함 :1360아니오 — 244개 레코드 중 버전 2 도달 0unfixed
defect
근인 (07-30 소스 확인): _with_code()(:1360)가 set_code() 대신 새 Record를 반환 → 수락된 모든 refinement이 형제로 저장된다. set_code 호출처는 :1267과 :1335 둘뿐, refine 경로는 :1497.
change (when)
없음 (진단만 완료).
did the 6/6 use it?
아니오. bwsvfull 0/244 · ls20a 0/124 · noE3full 0/346. 측정 가능한 무기여이자, 중복 가족이 plan 탐색의 만장일치를 막는 원인.
prior work
theorize: "fixing the existing program, not stacking a new record beside it" — _with_code() 형제-저장의 정확한 안티패턴 (schema.html:367).
scoring ledger — penaltyttso/sleep/evaluate.py:78 (fold)예 — 켜져 있었다 (value-agree 0.71*)fixed+validated
defect
_error_cells가 셀 단위 키라 wrong-value가 MISSED와 같은 집합으로 접힘 → saved=0, harmed=0. 팔레트가 틀린 r15(F1 0.018)가 credence 0.90으로 2주간 최상위 고정, 옳은 r45(0.983)는 0.0071 차로 영원히 2등.
change (when)
TTSO_WRONGVALUE_HARM=1 (2026-07-27).
co-fix pair (격리 아님)
noE3wall(둘 다 미수정) → bw(penalty만) → bwsv(둘 다). penalty 단독 bw는 value-agree 0.000 — 0.018→1.000은 두 수정의 합작이다. 같은 벽·seed 0, 각 n=1.
did the 6/6 use it?
켜져 있었다. 풀런에서 value-agree는 0.71로 내려앉는다 — 새 레벨의 새 팔레트가 계속 유입되기 때문.
prior work
certify(run_backtest)는 전 이력 이진 재생 — 부분점수 원장이 없어 wrong-value 접힘이 성립할 자리가 없다 (schema.html:368).
scoring ledger — rewardttso/sleep/judge.py (_union_predicted_diff)예 — 켜져 있었다fixed+validated
defect
형제 union에 대한 한계기여로 채점 → 옳은 규칙이 옳은 형제 옆에 서면 (0,0). penalty만 고치면 최상위가 r9 — 그 벽 전이 18개 중 0개에 적용되는 규칙 — 으로 넘어감을 리플레이가 예측.
change (when)
TTSO_STANDALONE_SAVED=1 (07-27). 격리쌍 bw vs bwsv, 같은 벽·seed 0, 각 n=1.
what moved
value-agree 0.000 → 1.000 · 리플레이 최상위 r9(0/18 적용) → r78(18/18, mean F1 0.937).
did the 6/6 use it?
켜져 있었다. 그러나 원장이 옳아져도 회수가 그 옳음을 소비하지 못했다.
prior work
프로그램이 하나라 형제 union 한계기여 채점이라는 개념 자체가 없다 (schema.html:368).
selection (회수·랭킹)ttso/sleep/evaluate.py:171 (decision_value)반기여 — corr −0.305, top=최선 0/59unfixed
defect
corr(top_credence, realized F1) = −0.305 — 자신 있을수록 틀림. top-ranked가 그 라운드 최선인 경우 0/59. USED 0.267 vs best 0.813, 커밋의 67.4%가 무예측(silent). 선택 지점이 헌법 §5가 요구하는 when(board)를 묻지 않고 max(credence)만 취한다.
change (when)
없음.
isolating pair
bwsvfull vs ls20a — ls20a는 +0.249, top=최선 3/39. 부호가 게임에 따라 뒤집히므로 랭킹이 신호를 담았다고 말할 수 없다.
did the 6/6 use it?
썼고, 그래서 손해 봤다 — 원장의 유일한 반기여 행이다.
prior work
인증된 프로그램을 하나만 유지 — 회수·랭킹할 후보 풀이 없어 미보정 credence가 구조적으로 제거된다 (schema.html:288).
plan searchttso/sleep/orchestrator.py:234 (mine_plan)아니오 — 산출물이 존재한 적 없다 (0 레코드)unfixed
defect
모든 런·두 게임에서 plan 레코드 0. bwsvfull 39 sleep의 결박 사유: RESOURCE_LIMIT 22 · CONSENSUS_BLOCKED 11 · EDGE_STARVED_NO_MODEL 4 · SATURATED 1 · EXHAUSTED 1 — 탐색이 방출 전에 예산·합의에서 죽는다.
change (when)
없음 (완화 arm은 §8).
did the 6/6 use it?
아니오. ft09는 클릭 게임이라 plan 없이도 배치가 됐다 — ls20이 이 부재를 마취 없이 드러낸다 (§6).
prior work
plan(run_bfs)은 인증된 프로그램 안에서 실비용 0으로 탐색한다 — 방출 전 결박이 없다 (schema.html:369).
control triggersttso/core/control.py:195 · :334잤다 — 그러나 39/39가 같은 이유("wincond")로unfixed
defect
39/39 sleep 트리거가 "wincond", "surprise" 0 — 기대위반 채널 완전 침묵. sleep이 LLM 호출의 82%(390콜 중 320, 완성 아티팩트에서 재계산). 라운드당 비-LLM 계산 1.5 → 116분 (규칙 수 × 버퍼의 O(n²)).
change (when)
없음.
did the 6/6 use it?
수면은 돌았으나 놀람이 한 번도 수면을 부르지 않았다 — "예측이 틀렸다"가 제어에 배선돼 있지 않다.
prior work
execute: "One mismatch discards the entire remaining plan." — 기대위반이 제어에 구조적으로 배선돼 있다 (schema.html:370).
04

네 축: 레벨 수로는 이 루프를 채점할 수 없어서, 루프의 네 기능을 직접 쟀다

docs/reports/scripts/four_axes.py
1 quality채굴된 규칙이 좋은가
best_f1 0.813 (ft09) · 0.832 (ls20a) · dup groups 4 (최대 6) / 3 (최대 19)
범위 주의 — 이 PASS는 mechanic 한 종류만의 점수다. 6/6 번들 346개 중 산문(strategy 71 + metathinking 61 = 132)은 122개가 증거 0, 74개가 태어난 값 0.500, 49개가 0.250 그대로다. mechanic 70개 중 미채점은 8개. 전체의 38%가 채점 기계에 닿은 적이 없고, 91/346(26%)은 은퇴 상태다.
2 improvement수면이 스킬을 고치는가
0 of 244 ever past version 1 (ft09) · 0 of 124 (ls20a) · 0 of 346 (noE3full)
3 judgingcredence가 실현 정확도를 추적하는가
corr −0.305 (게이지 바닥: 음수) · top=최선 0/59 (ft09) · +0.249 · 3/39 (ls20a)
4 retrieval필요한 순간 옳은 규칙에 닿는가
USED 0.267 vs best 0.813(점선) · silent 67.4% (ft09) · 0.328 vs 0.832 · 62.5% (ls20a)

네 기능 중 셋이 작동하지 않는 채로 런이 이겼다 — 그것이 발견이지 스크립트의 버그가 아니다. 각 런 n=1.

best_f1 vs USED f1 — 회수 격차

읽는 법. best_f1 = 그 라운드 실제 전이에 대해 라이브러리 안의 어떤 규칙이든 낼 수 있었던 최선의 예측 F1 (예측한 셀·값 vs 엔진이 실제 바꾼 셀·값). USED f1 = 실제로 액터에게 건네진 규칙 하나의 같은 F1. 둘의 격차가 이 자료의 핵심이다 — 규칙은 있었는데 그게 쓰이지 않았다.
○ = 그 라운드 best_f1 · ● = USED · 세로 실선이 격차다. r22 이후 USED는 거의 전 구간 0 — 라이브러리에 0.98짜리 규칙이 있는 채로 무예측 커밋이 이어진다. 데이터: runs/bwsvfull/g2-on-ft09-s0-bwsvfull/wm_fidelity.jsonl.

브리핑 스펙트로그램 — 액터가 실제로 받은 것 (bwsvfull, 59R)

채워진 칸 = 그 라운드 브리핑에 해당 섹션 헤더가 존재 (runs/S5/bwsvfull.jsonl). r23→r24 절벽 이후 MEMORY만 남는다. CONSENSUS는 0/59 — 한 번도 렌더된 적 없다. 원인: wake.py memory_materials 무한 항목 + cap_chars=8000 절단 사다리 (§3).
축 2의 근인 — orchestrator.py:1360

_with_code()set_code() 대신 새 Record를 반환한다 (2026-07-30 소스 확인).

그래서 수락된 모든 refinement은 버전 2가 아니라 형제 레코드가 된다.

0/244는 확률의 문제가 아니라 구조적으로 불가능했다.

이 네 실패를 선행 연구가 설계로 어떻게 제거해 두었는지는 §05b의 대조표에, Schema 원문 6필드는 §7에 byte-exact로 있다.

우리 자신의 문장으로 (experiments.html):

"We kept the half of Schema's idea that prevents damage and lost the half that makes certification worth earning."

05

우리가 죽인 주장들: 자신의 아티팩트를 자신이 잡는 팀

what we refuted
먼저 — 대조군을 갖춘 양성 결과 하나 (2026-07-25)

번들은 시험한 모든 시드에서 정확히 한 레벨 값어치를 한다.

번들 없는 fresh 대조군이 새 시드 2개에서 각각 30라운드 무누수 완주해 1레벨씩 (runs/S5/freshs1.jsonl, freshs2.jsonl).

같은 시드의 번들-시딩 짝은 2레벨씩. 시드 0에서도 같은 폭이다 (fresh 2·1 대 시딩 3·3·3·3). 암기 해석은 기각된다.

범위 — 전이되는 절반은 실행 롤아웃이 아니라 브리핑된 텍스트다. 같은 프로그램의 Phase 1이 런타임 롤아웃을 꺼도 3/3 짝 시드에서 손해가 없음을 쟀다:

seedFULL_EXECCODE_AS_TEXT 1 2 레벨 · 33a 3 레벨 · 85a 2 2 레벨 · 39a 2 레벨 · 48a 3 1 레벨 · 47a 2 레벨 · 99a

TEXT ≥ FULL이 3/3, 그중 2개는 강부등호. 브리핑 byte-identical, 각 30라운드, 셀당 n=1.

그러므로 이 양성은 "실행 가능한 스킬"이 아니라 전이되는 텍스트의 증거다.

이번 6/6을 스킬 루프의 공으로 돌릴 근거도 아니다 — 그 런의 전문가 절은 36라운드 내내 비어 있었다.

남 반증"벽 고착은 다섯 문장 탓" — 셋만 측정으로 무죄, 둘은 진범 문장이었다
남 반증"simulate 존재가 1클릭을 만든다" — 꺼도 그대로
남 반증"시딩이 level-0을 가속" — 플라시보 번들이 r5 클리어, 철회
자기 철회 · 원장"41/41 프로브 라운드가 단일 액션" — 정규식이 한 형태를 흘림, 철회
자기 철회 · 원장"coverage arm이 네 번 죽었다" — 그 죽음들은 일어난 적 없다
자기 철회 · 원장"3레벨은 프로젝트 최초" — C3가 이미 30라운드 안에 4레벨
여섯 행 전문: 주장 · 어떻게 죽었나 · 무엇을 아꼈나
주장어떻게 죽었나무엇을 아꼈나
벽의 1클릭 고착은 프롬프트의 이 다섯 문장 탓이다 다섯 중 (protocol step (iii) · COVERAGE PROBE framing · ACTION MANDATE)만 측정으로 무죄. 나머지 둘은 E3 게이트 문장 자체였고 "텍스트가 배치를 허용한다"·"아무도 인용하지 않는다"는 독해로 후보에서 지워졌다. 커밋 이등분이 그 기각을 뒤집었다 — 인용되지 않아도 구속한다 아낀 것은 무죄 다섯이 아니라 진범을 후보에서 지운 것이다. 문장은 읽어서 무죄 처리하지 않는다
simulate 도구의 존재 자체가 1클릭을 만든다 직접 개입 nosimw (TTSO_DISABLE_SIMULATE=1, 대조군 cWall) — 꺼도 1클릭 그대로 유일한 무료 탐색 채널을 범인으로 오인해 제거하는 것
시딩된 번들이 level-0 클리어를 가속했다 매치드 플라시보 번들(decoy_bundle.py — 수·종류·부피 일치, 내용은 무관 도메인)이 r5에 level 0 클리어. 재채점: 클리어 라운드 4~29 산포, 시딩 런의 11은 정확히 중앙값 → 가속 주장 철회 (상위 레벨 도달 주장은 생존) n=1 분산을 지식 효과로 파는 것
[자기 철회 · 원장 07-26] "프로브 라운드 41개 전부가 단일 액션" 불일치를 보고하라는 지시로 만든 전용 추출기가 그 수치를 재현하지 못했고, 실패를 먼저 검증한 뒤 받아들였다. 정규식이 괄호 클릭형만 잡고 try ACTION3 맨-종류형을 흘렸는데 배치한 라운드가 바로 그것들이었다. 정정: 프로브 라운드 26/20/9, 준수 7 of 55. 살아남은 결론은 더 날카롭다 — 클릭형 27/27 단일(최대 1) vs 종류형 22/28(최대 6), 형태 조건부 효과 (원장 기재 · 이번 세션 재도출 미완) 프롬프트 한 줄의 틀린 절반을 지우려던 arm. 이 사고가 §7의 byte-exact 인용 규칙을 낳았다
[자기 철회 · 원장 07-23] "coverage arm이 네 번 죽었다" 네 번 다시 읽은 트레이스 e9c_p1_coverage_s1.jsonl첫 시도의 run_id(p1cov1b)를 달고 있었다. 재발사 디렉터리 1c/1d/1e는 존재하지 않는다 — run_game.py는 LLM 호출 전에 디렉터리를 만든다 일어나지 않은 죽음 네 건. 규칙: 발사는 자기 디렉터리가 생기고 로그가 자랄 때 확인된다
[자기 철회 · 원장 07-24] "3레벨은 프로젝트 최초" 범위 오류. C3_fullgame_prob_s0.jsonl — 07-10의 무누수 6레벨 WIN이 이미 30라운드 안에 4레벨을 깼다. runs/S5/만 훑고 "프로젝트의 역사"라 불렀다 "이게 프로젝트 최고"라는 서사 전체 — 한 게임만큼 틀려 있었다

패턴은 하나다: 흥미로운 관측이 잠정 결론이 되기 전에, 그 관측을 죽일 수 있는 가장 싼 실험을 먼저 돌린다. 위 여섯 줄 중 셋은 남을, 셋은 우리 자신을 반증했다.

05b

선행 연구는 우리 네 축의 실패를 하나씩 예측한다 — Schema와의 대조

references/schema.html · docs/reports/schema_blog_verbatim.txt
먼저 정직 고지

Schema(Impossible Research)가 보고한 98.98%자기보고 · Public셋 한정 · Fable-5 폴백 앙상블 · 독립 검증 없음이다.

그들 코드와 프롬프트는 공개되지 않았다.

아래는 그 점수의 원인 주장이 아니라, 그들이 설계로 제거한 실패 모드가 우리가 측정한 네 실패와 겹친다는 관찰이다.

단계Schema우리우리 실측
theorizestep()제자리에서 편집 — 프로그램 하나 _with_code가 형제 Record 생성
orchestrator.py:1360
개정 0 / 244
certifyrun_backtest — 전 이력 재생, 이진 통과/실패 부분점수 F1, 커밋을 게이팅하지 않음 상관 −0.305 · top=best 0/59
planrun_bfs가 인증 프로그램 안에서, 실제 비용 0 sleep BFS가 mechanic 전원 만장일치 요구 plan 레코드 0개 (두 게임)
commit유일한 통로, 인증된 큐를 배치로 소비 액터가 매 라운드 재조립된 브리핑에서 선택 침묵 커밋 67.4%
memoryworld_model.py+notes.md파일이 곧 가중치 244 레코드 + 매 라운드 8000자 캡 재조립 CONSENSUS 0/59 브리핑
representation상태 접지와 기제 발견을 함께 푼다 mechanic이 원시 64×64 격자에서 셀 diff 예측 — 표현 고정 트리거 39/39 wincond · surprise 0

각 행의 블로그 원문 인용과 우리 쪽 실제 라운드 텍스트는 references/schema.html에 있다.

그들이 분석한 게임이 우리 게임이다 — FT09

Fable은 표현을 먼저 의심한다. 보드가 목표 논리를 만족하는데 진행이 안 되자 “이 단서 자체를 조작할 수 있는가”를 시험해 lights-out 십자 버튼을 찾고 11행동 뒤 클리어.

Opus는 목표를 계속 수리한다. 같은 모순을 보고도 대안 목표 설명을 약 240행동 더 시험하다 287스텝에 같은 기제를 찾는다. 블로그의 표현으로 “247행동 격차는 발견 비용이지 최종 기제의 차이가 아니다”.

우리 런은 Opus 경로다. wincond 버전을 108개 쌓았고(244행 중) sleep 트리거가 39/39 전부 wincond다.

표현을 의심하는 대신 목표를 수리했다 — 네 축 중 판정인출이 무너진 자리의 행동적 얼굴이다.

06

ls20은 실패가 아니라, ft09가 가려 준 것을 벗긴 것이다

transfer — 같은 병, 마취 없음

결함들은 두 게임에서 같은 크기로 나타난다.

improvement 0/244 vs 0/124 · 회수 격차 0.813→0.267 vs 0.832→0.328 · silent 67.4% vs 62.5%.

다른 것은 병이 아니라 진통제다. ft09는 클릭 게임이라 라운드마다 독립적 선택 여섯 개를 배치할 수 있었다.

ls20은 이동 게임(ACTION1–4 + RESET, ACTION6 없음)이라 경로 의존적이고, ft09가 건너뛰게 해 준 plan 기계 — 모든 런에서 레코드 0개인 — 를 요구한다.

결과: 40R · 40a · 1.00 a/r · level 0 미클리어 (n=1).

ACTION5 유령 — ls20에 없는 행동이 시스템을 순환한다. 가설이 브리핑 19/40 라운드에 실렸고, 액터 추론에 11/40 등장했고, 코드가 14개 라운드에서 제출을 시도했다. 유입 경로는 번들이 아니라 base prompt의 인터페이스 목록 — 채굴이 관측이 아니라 프롬프트 표면에서도 가설을 만든다. 데이터: runs/S5/ls20a.jsonl · runs/ls20a/g2-on-ls20-s0-ls20a/llm_calls.jsonl.

세 번째 원인 — 목표와 행동의 축척 불일치. 채굴된 승리조건의 목표는 보드에서 10–15셀 떨어져 있는데 ls20의 이동 한 번은 52셀을 바꾼다. 어떤 버튼을 눌러도 과녁을 지나친다.

plan_diagnosis 결박 사유 — ls20 14건: CONSENSUS_BLOCKED 8 · EXHAUSTED 3 · DEPTH_LIMIT_LIKELY 2 · RESOURCE_LIMIT 1.

ft09 39건: RESOURCE_LIMIT 22 · CONSENSUS_BLOCKED 11 · EDGE_STARVED 4 · SATURATED 1 · EXHAUSTED 1.

두 게임 모두 plan 레코드 0 (n=1 per game).

EXHAUSTED 행의 start/best_distance는 기록상 null이라 거리 수치는 싣지 않는다.

runs/S5/ls20a.jsonl · round 33 — 유령이 hypothesis와 why 양쪽에verbatim
hypothesisHYPOTHESIS: The live terminal route is still the plus-activation target [r87]: navigate the 5x5 two-band actor until its center coincides with the compact white plus marker, then use ACTION5 there rather than treating the shaft/top alcove as terminal [r54]. whyThe clean ACTION3 primitive is highly supported [r39]/[r34], and ACTION2 is modeled by the repaired movement/panel family [r83]/[r78]; so the safest next commit is the single navigation step that reduces the actor-to-plus offset, or ACTION5 if already centered.

읽는 법: 규칙 인용([r87], [r54], [r39]…)은 정상 작동 중이다. 근거 없는 원료가 성실한 파이프라인을 통과하면 성실한 유령이 나온다.

07

기계의 원문

verbatim · byte-exact

모든 인용은 트레이스 경로·라운드와 함께 byte-exact.

why는 로그에서 300자 하드캡이라 문장 중간에서 끊긴다 ([log-truncated], 완성해 주지 않는다).

일부 expect 끝의 ```python도 로그에 byte 그대로 있는 것이라 지우지 않는다.

C3의 리듬 — 공짜 관측 라운드, 그 다음 배치 (52라운드 중 0클릭 관측 8개) · 인용 2건

이 리듬은 오늘 거의 구조적으로 불가능하다. C3 6일 뒤인 2026-07-16에 들어온 ACTION MANDATE(ttso/auto/loop.py:348–366)가 무행동 라운드를 되묻는다.

verbatim — "Every round MUST commit at least ONE submit_action(...): use the diagnostics above to pick the single most informative action"

재계산 — v2 스키마 S5 라운드 1,372개 중 무행동 2개(0.15%), C3는 8/52(15.4%).

100배 차이이고, 프롬프트가 아니라 하네스 규칙이라 §8의 advisory arm이 닿지 못한다.

runs/stageC3/traces/C3_fullgame_prob_s0.jsonl · round 10action [] · sims 0
hypothesisHYPOTHESIS: Level 3 contains multiple embedded keys; each key’s center colour tells the colour for surrounding output tiles whose corresponding key entries are 0, extending [r9 0.50]. whyThe component summary shows multiple key-like blocks with centers 12 and 8, so exact slice inspection is the highest-value step before committing, per [r1/prim 0.50], [r2/prim 0.50], and [r5/prim 0.50]. expectNo cells change because this is grid inspection only.
같은 트레이스 · round 116-click batch · sims 1
hypothesisHYPOTHESIS: For each 12-centered key block, adjacent output tiles corresponding to 0 entries should be recoloured from 8 to 12, while 2-matched tiles stay 8. whyThis extends the already successful key/zero strategy [r9 0.50] using the current key-center colour per R10 and [r5/prim 0.50], and avoids center-8 keys whose outputs may already be satisfied. expectSix 6×6 output tiles change 8→12: four around the top 12-centered key at its NW, N, W, and S positions, plus the N and W positions around the bottom 12-centered key; the level may remain unfinished if the remaining bottom 12-key zeros are still needed. action[["ACTION6", 22, 6], ["ACTION6", 30, 6], ["ACTION6", 22, 14], ["ACTION6", 30, 22], ["ACTION6", 30, 38], ["ACTION6", 22, 46]]
bwsvfull — 브리핑 기아 뒤에도 in-context 수리로 진급, 그리고 마지막 라운드 · 인용 2건

r26은 6클릭(levels==3), r29에 레벨 4 진급. r59가 마지막 라운드다.

runs/S5/bwsvfull.jsonl · round 26verbatim
whyThe last turn showed every clicked 9 tile becomes 8, not 12, proving my answer-colour inference was wrong. Under global 0→8 / 2→9, exactly five repairs are needed: add the three missed zero-coded tiles and revert the two accidentally changed 2-coded tiles. expectClicks at (39,17), (47,33), and (39,49) repaint those macro-tiles 9→8; clicks at (47,17) and (47,25) repaint the accidental 2-coded macro-tiles 8→9. After these five corrections, ACTION5 or the final click should advance levels_completed to 4.```python
runs/S5/bwsvfull.jsonl · round 59 — 마지막 라운드, carry-chain 모형으로 6/6verbatim
hypothesisHYPOTHESIS: R58’s vertical carry model is now the best explanation: a centre ACTION6 click toggles the clicked 6×6 editable macrotile and, when present, the same-column macrotile one row above, so a bad state must be carried upward until it reaches a row where no further answer macrotile is toggled. This refines [r216] without changing the [r175] / Level-4 target decoding. whyThe last six-click trace exactly moved the x=28 bad tile upward through y=38→30→22→14 and then removed it, and began the same process at x=36. I will audit the current bad macrotiles, then continue the carry-chain clicks bottom-to-top for the remaining columns rather than undoing temporary mismatch [log-truncated]
게이트의 두 얼굴 — 같은 벽, ON(단일 프로브) vs OFF(6클릭 배치) · 인용 2건
runs/S5/cWall.jsonl · round 1 — 게이트 ONaction 1개 · 이 라운드 sims 0 (런 합계 6)
hypothesisHYPOTHESIS: The grey/white/orange inset panels are interactive keys; clicking the small orange marker inside one key should reveal or apply that key’s rule. whyI do not yet have a confident world-model rule, so per the one-probe guard I should take exactly one cheap observational probe rather than dense-click the board. expectOne local key/panel or its associated red-cell region changes; if nothing changes, this click location/rule is refuted and I will use the observed mismatch next turn.```python action[["ACTION6", 62, 6]]
runs/S5/noE3wall.jsonl · round 6 — 게이트 OFFverbatim
hypothesisHYPOTHESIS: Per [r50] with [r3], the union of 0-coded neighbor positions from the four clue panels are target repaint tiles; ACTION6 repaints each clicked homogeneous 8 tile to 12 per [r45]. whyThis is structurally different from the refuted single-column/partial-consensus clear claims: it follows all local 0 clues rather than expecting these six alone to clear. expectEach click changes exactly its 6x6 macro-tile from 8 to 12: bboxes x=20..25,y=20..25; x=28..33,y=20..25; x=36..41,y=20..25; x=44..49,y=20..25; x=20..25,y=36..41; x=36..41,y=36..41. No clear is assumed yet because one remaining union target may remain. action[["ACTION6", 22, 22], ["ACTION6", 30, 22], ["ACTION6", 38, 22], ["ACTION6", 46, 22], ["ACTION6", 22, 38], ["ACTION6", 38, 38]]
선행 연구의 원문 — Schema 참조 페이지 · 6개 필드 verbatim
presentation/codenative/references/schema.html · lines 367–371, 288NODE_DESC · verbatim
theorize (line 367)Edits the step(state,action) program itself, in place, to explain the observed violation — fixing the existing program, not stacking a new record beside it. certify / run_backtest (line 368)Replays every Timeline transition recorded so far through the new program via run_backtest. A single mismatch pinpoints the bug. plan / run_bfs + commit_actions (line 369)Searches for an action sequence to the goal with run_bfs inside the certified program — the engine is never touched, so real cost is zero. commit_actions is the only action channel. execute (line 370)Checks every queued click against its own prediction. One mismatch discards the entire remaining plan. record / Timeline (line 371)Logs every step to the append-only Timeline. That log is what the next certify must replay — the only ground truth. record (data-tip, line 288)Append-only Timeline. This log is what the next certify must replay.
08

다음 할 일

각 항목에 반증 조건을 미리 박는다
in flight — PRELIMINARY · 진행 중 · n=1 · seed 0

통합 런 allfix(ft09 · ledger 수정 + advisory abort + applicable-top · E3 게이트 ON) — runs/S5/allfix.jsonl, 2026-07-31 판독.

17라운드 · 51액션(3.00 a/r) · r14에 레벨 3 · 17/17 라운드 simulate ≥1 · 배치 8라운드. 시뮬과 배치의 공존이 관측된다.

네 축 중 셋이 움직였다 — 축1 0.813→0.855 · 축3 corr −0.305→+0.588(top=최선 3/18) · 축4 USED 0.267→0.505, silent 67.4%→33.3%.

축2 개선은 그대로 0 of 55.

이 arm은 네 변경을 한꺼번에 묶었으므로 아무것도 격리하지 못한다. 런이 끝나지 않았고 시드는 하나다.

일곱 항목 전문: 왜 · 무엇이 이것을 반증하는가
항목무엇이 이것을 반증하는가
seeds 1–2 (bwsvfull 구성 그대로) 시드 1·2가 없는 한 6/6은 일화다. 이 덱의 모든 bwsvfull 셀이 n=1 한 시드라도 6/6 실패 → "재현되게 이긴다"는 주장 기각, 시드운으로 강등
advisory plan-abort arm (TTSO_ABORT_ADVISORY=1, 실행 중 · prereg 07-30) abort 핀이 시뮬과 배치를 배타로 만들었다. 경고만 주면 C3 레짐이 회복되는지 — 대조군 svgate(시뮬 9/10, 1.00 a/r) 벽 r5까지 a/r < 2.0 · simulate = 0 · 첫 발산 이후 무익 클릭이 대조 대비 +20pt 초과
refine 수리 — :1360이 set_code()를 부르게 축 2의 0/244는 구조적 불가능이었다. 헌법 §5 "같은 스킬을 반복 개선"이 처음 가능해짐 수리 후에도 revised_share ≈ 0 → 형제 저장이 결박이 아니었다
plan-search 완화 39 sleep의 결박: RESOURCE_LIMIT 22 · CONSENSUS_BLOCKED 11. ls20이 요구하는 바로 그 기계 (§6) 완화 후에도 plan 레코드 0 → 결박은 다른 곳(EDGE_STARVED 등)이다
브리핑 수리 검증 런 (_MEMORY_KEEP=2, 07-29) §3의 유일한 landed+unvalidated. r23 절벽이 사라져야 한다 수리 런에서도 CONSENSUS/WORLD MODEL 결번 지속 → 원인이 항목 수가 아니었다
ACTION MANDATE 재검토 (loop.py:348–366, 07-16) C3의 리듬(관측 라운드 8/52)을 지금 코드가 사실상 금지한다 — 1,372 라운드 중 무행동 2건. 하네스 규칙이라 프롬프트 arm이 닿지 않는다 무행동 라운드가 늘어도 RHAE가 오르지 않으면, 관측 라운드는 C3 점수의 원인이 아니었다
O(n²) 스코어링 비용 라운드당 비-LLM 계산 1.5 → 116분 (규칙 수 × 버퍼). 시드 재현을 비싸게 만드는 세금 성장 항이 규칙×버퍼가 아니면 진단이 틀린 것; 캡 후 네 축이 후퇴하면 캡이 정보를 버린 것

출처 — runs/S5/*.jsonl · runs/stageC3/traces/C3_fullgame_prob_s0.jsonl ·

runs/bwsvfull/g2-on-ft09-s0-bwsvfull/{wm_fidelity,plan_diagnosis,bundle,llm_calls,skill_versions}.jsonl

runs/ls20a/.../llm_calls.jsonl · runs/sixsix/.../run_manifest.json

docs/reports/c3-action-replay.json · docs/reports/scripts/four_axes.py

사전등록: 2026-07-27-{e3-gate-three-arm,wrong-value-harm,bw,bwsv}-prereg.md ·

2026-07-29-ls20-transfer-prereg.md · 2026-07-30-advisory-abort-prereg.md · 선행연구·예측: priors.html.