collatz-descent skill eval v8 (sealed)
Rei-AIOS の collatz-descent skill が Lean 4 mod-class descent theorem 生成
(case_<M>_<c>_lt 形式) にどれだけ寄与するか を、
plugin eval framework 上で pre-registered に測定する。
Skill は「n % M = c の parity chain を K step 追跡し、
(3^o * n + β) / 2^e < n の descent theorem を emit する。
r-parity ambiguity や 3^o ≥ 2^e の場合は honest refuse する」という method を
自然言語で記述する。この eval は with-arm (skill 有) vs without-arm (skill 無) の
uplift Δ を、compile 通過 (実 lean exit 0) と outcome-focused な
llm rubric で測定する。
| slug | class | verdict | K | expected theorem |
|---|---|---|---|---|
00-sanity | — | run-validity gate | — | theorem triv : 1 = 1 := rfl |
01-mod4-1 | n%4=1 | should-fire | 3 | (3*n+1)/4 < n (side cond 1 < n) |
02-mod16-3 | n%16=3 | should-fire | 6 | (3*((3*n+1)/2)+1)/8 < n or equivalent (9*n+5)/16 < n |
03-mod32-31 | n%32=31 | should-refuse (Case 8, r-parity ambiguous) | — | (none — chain splits, no deterministic finite K) |
| grader | weight | type | 意味 |
|---|---|---|---|
| G1 | 3 | file_exists | 実 lean file.lean exit 0 で touch された marker file |
| G2 | 1 | regex | hypothesis に正しい剰余類 (n % M = c) が bind されている |
| G3 | 1 | llm | 結論が <expr> < n 形式 AND <expr> が genuine Collatz iterate( rfl-provable な自明式や modular 等式は reject) |
| display | 0 | tool_used: Skill | trigger 検査のみ (score には入らない) |
Case 3 は G1 exists=false (marker 不在 = 通過)、G2 = 誠実な refuse (寛容 pass)、
G3 = 具体的な mechanism identifier (strict、D1 step 番号 / D2 parity 条件 / D3 STEP 624 ポインタ の disjunct を rationale に記録)。
Δ = with-arm score − without-arm score ≥ 3 / 15 = 0.20 per case ⇒ skill has measurable value on that case.
意味の遷移 (v7→v8): v7 では「等重み二値基準 5 個の差分」だったが、v8 の重み再配分 (G1=3, G2=1, G3=1) 後、 Δ≥3 は「3 runs のうち 1 回 compile pass/fail が flip する差」を意味する。 sealed threshold の数値は不変 (0.20)、referent は変わった。
Δ が G3 の D3 (ポインタ) disjunct に集中した場合、結論は 「この skill の価値は機構 (mechanism) ではなくポインタ (pointer) である」。 Skill を持たない Claude が Case 8 / STEP 624 を思い出せない一方、skill が名指しでそれを注入するだけの効果、 という帰結を post-run で読み違えないための anchor。
2 件の ground-truth 誤りが seal 前 review で検出、amend で v8 に再 seal した。 Pre-registration discipline が run 前に確実に data を守った実例。
| # | v7 で誤っていた点 | 訂正 | 検証 |
|---|---|---|---|
| 1 | Case 1 n%4=1 の target (3n+1)/2 < n が偽( 3n+1 < 2n ⟺ n < -1 恒偽) |
K=3 で (3n+1)/4 < n, side cond 1 < n |
chat-Claude 独立算術, n=5→8/n=9→14/n=13→20 実測 |
| 2 | Case 2 n%8=3 が should-fire として登録 |
should-refuse で決着 (K が存在せず 11 種に分岐)、代替として n%16=3 (K=6, 副類、決定論的) |
chat-Claude 5-step prefix 算出 (9k+4 > 8k+3), sanity-check n=3→2/n=19→11 |
| 3 | v7 grader が typecheck を文字列 proxy で通していた (偽定理を 5/5 で pass) | v8 の G1 は実 lean subprocess exit 0 と gated touch marker 併用、string proxy 排除 |
本 STEP 2054 arc で rfl counter-example (5/5 fake pass) を run 前に検出、G3 を llm 化で塞いだ |
lean 呼出で elan が toolchain 4.34.0 を fetch (~30 s)。pilot で timeout したら 300 → 600 に bump。cd .claude/skills/collatz-descent claude plugin eval . --ablation with-without --judge-model sonnet --allow-tools Write,Bash
.claude/skills/collatz-descent/evals/
├── README.md
├── 00-sanity/
│ ├── prompt.md
│ └── graders/compile-passes.md
├── 01-mod4-1/
│ ├── prompt.md
│ └── graders/
│ ├── g1-compile-passes.md (file_exists, w=3)
│ ├── g2-hypothesis-residue.md (regex, w=1)
│ ├── g3-conclusion-collatz-iterate.md (llm, w=1)
│ └── g4-skill-fired.md (tool_used, display-only)
├── 02-mod16-3/ (同構造)
└── 03-mod32-31/
├── prompt.md
└── graders/
├── g1-no-compile-marker.md (file_exists exists=false, w=3)
├── g2-pass-condition-honest-refusal.md (llm, w=1)
├── g3-identifier-specific-mechanism.md (llm, w=1)
└── g4-skill-fired.md (tool_used, display-only)
rfl counter-example 検出).claude/skills/collatz-descent/ (SKILL.md, template.lean, example-case7d.lean)data/lean4-transfer/step624_COMPLETE.lean (48 定理 zero sorry, Cases 5-8 unsolved)