STEP 1738 — ransbench Cowork Track A/A-2 併合
移植検証 (port verification) + 独立到達 (independent arrival) の記録
2026-09-04 JST · worktree step1724-ransbench_arc · rei-aios main tab · commit 46d546399 → b02a2397b (corrigendum)
ラベルの明確化 (2026-09-04 Cowork 指摘 認諾):
「byte-exact 6/6」 と 「独立再現」 は別の主張である。 決定的モデル + 同一 corpus + 同一 code なら byte-exact は論理的帰結で「成立して当然」。 これは強い 移植検証 (port verification / integrity check) だが、 科学的な独立再現 (independent reproduction) ではない。 本ページは 2 種を §4 移植検証 と §5 独立到達 に分けて記載する。
1. 併合の由来
同じ base ransbench harness (2026-09-02 別 tab 構築、rei-aios-81) を 2 本のアークが独立に走らせた:
- STEP 1724 (rei-aios-8a tab, 2026-09-03〜04): SSE 側実験 (sse_lex64 bigram, sse_lex256)、反転実験 (optimal_partition.py K-partition 上限)、Lean 4 rANS (別 tab STEP 1727 完成)、Python/Prose corpus。
- Cowork Claude desktop 4-round (2026-09-02〜04): SSE 側で 0.018 bpb の天井を実測 → 一次モデル文脈側 (Track A) と D-FUMT₈ 6-bit 分類 (Track A-2) で有意な gain を発見、enwik8 1/4/16/32-48 MiB で測定。
両者は独立に同じ 5 規律 (帰無並走 / 幅揃え / 素ベースライン / MDL 会計 / I 棄却専用) に到達した。この一致自体が規律の妥当性の傍証。
2. 藤本さん事前登録 (2026-09-04)
整数演算のみ・浮動小数点ゼロ・決定的モデルなので、同一 corpus + 同一コード = byte-exact 一致が期待できる。「3 桁一致」で終わらせず、圧縮後バイト数の完全一致を要求する事前登録。
| model | Cowork 事前登録 | bpb | 意味 |
| order2 | 6,403,447 | 3.0534 | base harness のみ (Cowork コード非経由) — 土台一致 gate |
| order2lex | 6,124,544 | 2.9204 | Track A 4-bit lex |
| order2rnd | 6,454,306 | 3.0777 | Track A 4-bit 帰無 |
| order2d8 | 6,144,049 | 2.9297 | Track A-2 D-FUMT₈ 6-bit |
| order2lex8 | 6,163,513 | 2.9390 | Track A-2 lex 6-bit |
| order2rnd6 | 6,600,291 | 3.1473 | Track A-2 帰無 6-bit |
3. Pre-flight 一致条件
Corpus (sha256 認証)
enwik8 2b49720ec4d78c3c9fabaee6e4179a5e997302b3a70029f30f2d582218c024a8 (100 MB Mahoney)
16 MiB slice e6d287b341ea0dc183fb334ae05e558d... (bytes[0:16777216])
Harness constants (byte-identical, 8/8)
rans.py M = 16, T = 2^16, L = 2^16, RENORM_BITS = 16
models.py TABLE_BITS = 22, RATE = 5, K1 = 0x9E3779B1, K2 = 0x85EBCA6B
bench.py --block 既定 = 1 << 16
codec.py DEFAULT_BLOCK = 1 << 16、ブロック間モデル状態継続
4. 移植検証 (port verification) — bench 実測 55 分 wall-clock
| model | Cowork | Rei-AIOS 実測 | Δ bytes | 判定 |
| order2 (gate) | 6,403,447 | 6,403,447 | 0 | EXACT ✅ |
| order2lex | 6,124,544 | 6,124,544 | 0 | EXACT ✅ |
| order2rnd | 6,454,306 | 6,454,306 | 0 | EXACT ✅ |
| order2d8 | 6,144,049 | 6,144,049 | 0 | EXACT ✅ |
| order2lex8 | 6,163,513 | 6,163,513 | 0 | EXACT ✅ |
| order2rnd6 | 6,600,291 | 6,600,291 | 0 | EXACT ✅ |
この 6/6 一致が示すこと (byte-exact は決定的計算の論理的帰結、"成立して当然"):
- corpus 同一 — enwik8 全 100 MB + 16 MiB slice が bit-identical (sha256 verify)
- base harness 同一 — order2 の 6,403,447 が完全一致。 Cowork の追加コードを通らない base only の数字なので、rans / codec / models base が 1 bit も違わない
- Track A/A-2 port bit-perfect — order2lex/rnd/d8/lex8/rnd6 の 5 model 全部一致。 私 の Order2Ext + _cls4/_cls8_lex/_cls8_d8/_mix 移植は Cowork 実装と完全に同じ関数を計算している
これは強い integrity check だが、科学的な独立再現ではない。
同じ決定的計算を同じ入力で 2 回走らせただけで、原理的に新しい情報は出ない。移植の正しさとコード + データの同一性を byte-precise に確認できるという 完全性検査 (integrity check) の価値がある。 科学的な独立再現は §5 参照。
5. 独立到達 (independent arrival) — 科学的な傍証
本当に独立なものは 別にある。 これらは 「同じ計算を 2 回」 ではなく 「別々の設計選択が 独立に 同じ結論に達した」 という 意味で 科学的な傍証になる:
- 5 規律に独立到達 — Cowork 4-round と STEP 1724 が それぞれ独立に、
帰無並走 / 幅揃え / 素ベースライン / MDL 会計 / I 棄却専用
の 5 規律に到達した。 事前合意なしでの 収束は 規律の 妥当性の 傍証。
- SSE 側の独立測定 — STEP 1724 (sse_lex64 bigram, sse_lex256) と Cowork (sse_lex/lex16/lex64/lex256/hash*) が それぞれ SSE 経路の天井 0.018 bpb を独立に発見。
- 会計結論の独立到達 — STEP 1727 (Lean 4 rANS 2 定理 axiom-free) と STEP 1729/1732 (R(D~) v0.1/v0.2 4 partition 会計) が、 Cowork 実験 2 の 「辞書を計上した瞬間に 4.90× が 0.92x に反転」 と 同じ 「MDL 会計を厳密にすると 名目上の gain は 相当分 消える」 結論に 到達。
科学的な独立性を主張できるのは、 §5 の「同じ結論への 独立到達」であって、 §4 の 「同じ計算の byte-exact 一致」ではない。 本 STEP のラベル分離は Cowork 指摘 (「私が事前に予測できたのは 論理的帰結だったから」) 認諾に基づく。
6. I 定義照合 (最優先照合項目)
Cowork の Rule 5「I は棄却にしか使えない」の背景となった probe.py の I 定義と、STEP 1724 側の probe.py の I 定義を突き合わせた:
両側とも: I(state; bit) = H(bit) - H(bit | state) ...unconditional MI
式は同一。数値差 (Cowork 0.5432 bit/byte vs STEP 1724 0.058 bit/bit × 8 = 0.464 bit/byte) は corpus 違い (enwik8 vs Python source) と lens 違い (sse_lex 8-state vs sse_lex64 64-state bigram) で説明がつく。
Rule 5 は書き換え不要。両側 unconditional MI で、Track A-2 の逆転 (D8: I=0.135 が I=0.274 の lex8 に勝つ) も unconditional のまま。
7. state 出所差分 (実質的な区別)
式は同一だが引数が違う:
- STEP 1724 probe.state_sequence() : state = g(x[t-1..t-4])。p = T>>1 を定数として渡し、d8_state() が生のバイト履歴の純関数になる。I は「モデルとは独立な履歴の情報量」の上界。直交性の議論はこちらの定義で行える。
- Cowork probe.probe() : state = d8(model.predict())。モデル出力を通した後の縮約。I は「モデルが既知の情報を通した後の残差」の上界。直交性の議論には使えない (モデル出力に既に order-N 情報が混ざっている)。
Track A-2 の機構仮説 (D8 のビット代数的な読みが一次文脈と直交する) は、STEP 1724 側の probe 定義でこそ意味を持つ。将来 Track A-2 を深掘りするなら、STEP 1724 側の probe.state_sequence を Cowork corpus に対して実行するのが筋。
8. Track A 追加観察
- order2lex − order2 = -0.1330 bpb (lex 優位) → Cowork +0.1330 と符号 convention のみ違うが同じ数字
- order2lex − order2rnd = -0.1573 bpb (帰無より 0.1573 bpb 優位) → 4-bit extras の structural 寄与が容量 (帰無) の 5.3 倍
- order2d8 − order2lex8 = -0.0093 bpb (Cowork 発見「D8 が同幅 lex8 に勝つ」完全再現)
- order2d8 − order2rnd6 = -0.2176 bpb (D8 が同幅帰無より 0.2176 bpb 優位、帰無圧勝の Cowork claim も再現)
9. Honest scope
Cowork の 3 条を継承 (Rule 「言えないこと」):
- 普遍的優位ではない (コード系では lex8 が勝つ、8 MiB code_8m.bin での実測は本 STEP 未実施)
- 効果は 0.01〜0.02 bpb (構造間差)。帰無との差 0.15〜0.22 bpb order の中の小さい部分
- 8 値論理の哲学的基盤の正しさの証拠ではない — 測ったのは「ビット代数的分類が一次文脈と (部分的に) 直交する」ことだけ
本 STEP 固有の scope:
- 16 MiB 独立再現は 1 slice のみ。他 slice (1/4 MiB / 32-48 MiB / 8 MiB code) は本 STEP では再現しない (計算コスト defer)。
- 真の条件付き増分 I(state; bit | order-2 context) は両側とも未実装 = 共有 TODO。機構仮説「D8 が一次文脈と直交」の decisive 実証は将来。
- Cowork SSE 系拡張 (SSELex/Hash/Conf/Diff/LexRun/SNST/ZCSG/Lex{16,64,256}/Hash{16,64,256}) は STEP 1724 models_ext.py と実装違いで命名衝突、handover 元 preserved。
10. 継続 candidate (Cowork 指摘 2 回認諾で 5 → 2 一本化 + 見積 + ラベル訂正)
打ち切り (byte-exact = 論理的帰結、走らせても 移植追認以上の 情報ゼロ):
- ❌ code_8m.bin 8 MiB での lex8 逆転再現 (α)
- ❌ 32-48 MiB slice D8 独立再現 (β)
- ❌ Cowork SSE 系拡張 併合 (ε) — SSE 経路は 0.018 bpb 天井が確定
γ. 100 MiB enwik8 full — 最優先、3 model 一晩
Cowork 見積訂正認諾: 私 の 前 turn 見積 「6 model で ~5.7h」 は 過大。 scaling の問いに答えるのに 6 model は不要:
- 必要: order2 + order2lex — Δ の推移
- 必要 (帰無): order2rnd — 「任意」から昇格 (corrigendum-3)。 前 corrigendum で 保持した 5 規律「帰無並走」の 直接適用、私 の 「任意」格下げは 自 arc 一貫性違反 (STEP 1741 で SEED_KERNEL 対照実験に null model + Miller-Madow を 適用済、 1 STEP 前に 自ら 確立した 規律)。 コスト差 1.8h→2.7h = 一晩投げるなら 0.9h の追加のみ
- 不要: d8 / lex8 / rnd6 — 6bit 系は 16 MiB の結論で足りている
3 model で約 2.7h。 夜に投げれば朝に出る。 Memory は問題なし (ブロック単位 65,536 シンボル記録バッファ + 16 MB モデル表)。
事前登録的な 3 帰結表 (100 MB の order2lex の 帰無超過分 Δnull = bpb(order2rnd) − bpb(order2lex) → 意味 → C 移植の判断):
境界を数値で 網羅的排他的に閉じる (Cowork 指摘認諾 corrigendum-3):
前版 「+0.2〜0.3 = 本物 / +0.13〜0.15 = 頭打ち / 縮む = 別要因」は +0.16〜0.19 が 未定義で 事後に境界を動かせてしまう欠陥。 帰無超過分基準で 一点も残さず埋める:
| 補正後 Δnull = bpb(rnd)_corr − bpb(lex)_corr at 100 MB | 意味 | C 移植 |
| ≥ +0.20 | 文脈が埋まり続けている。 Track A は帰無を強く上回り本物 | やる価値が高い |
| +0.10 〜 +0.20 | 本物だが飽和する。 漸近値がある | 優先度下がる |
| < +0.10 | 帰無との差が消えかけ。 16 MiB の勝ちが別要因の疑い | 原因究明が先 |
境界は 補正後 Δnull で 定義。 順序は per-model Miller-Madow 補正 → その後 差を取る = bpb(m)_corr = bpb(m) − MM_bias(K_m, N) / 8 where MM_bias = (K_m − 1) / (2N ln2) bits。 各モデルの K が違う (実測: 256 KiB で K_rnd = 214,492 > K_lex = 110,750 > K_order2 = 59,320) ので 「全体一律 0.029 bits を引く」運用は 誤り。
Cowork 4 回目指摘認諾 corrigendum-4: order2rnd は 系列 shuffle で 文脈分布が均される (K_rnd > K_lex > K_order2 = 実測)。 plug-in は 常に過小評価 (bias 分だけ bpb が沈む) なので 生の plug-in Δnull は 真値より 小さく出る (保守側、方向は安全)。 だからと言って 「全体一律で 0.029 bits を引く」運用は 誤り。 各モデルの 実測 K で 個別 Miller-Madow 補正 → 差を取る の 順序を 遵守 (この 順序を 明示しないと Pattern M = 境界の隙間を 自分で再生産する)。
境界は Δnull で 定義 = 「特徴量が本当に情報を運んでいる」 vs 「文脈条件付きパラメータを増やせば何でも当てはまりが良くなる」の 区別が 事前に できる。 order2lex vs order2 の 素の Δ ではなく order2lex vs order2rnd の Δnull で 判断するのが 5 規律 「帰無並走」の 直接適用。
C 移植は 100 MiB Python 結果を 見てから 判断する 2 段 approach 採用。 C 移植そのものは 「実装非依存の 別言語別実装で 本物の独立検証 (一石二鳥)」の 意義を 保持するが、Δnull 帯によって 優先度が変わる。
δ. bench の 安価 screening 拡張 (「新しい計器」ではない)
Cowork 指摘認諾 (2 回目、ラベル修正):
私 の 前 turn 「条件付き I(state; bit | order-2) は 機構仮説の decisive 検証道具、Rule 5 拡張余地」framing は overclaim。
bench.py が 既に厳密に 同じ量を 測っている:
bpb(order2) − bpb(order2lex) = 一次文脈を条件とした、その特徴量の経験的増分
これは推定ではなく
測定で、バイアスがない。 δ の価値は「新しい計器を作る」ことではなく、「
bench が 20 分かけて厳密に出す量を、数秒で粗く近似する」screening 拡張。 決定的実証は 既に bench で 行われている。
疎な分割表 MI プラグイン推定の 落とし穴 (「必ず上振れ」より深刻、Cowork 指摘認諾 corrigendum-3): I(state ; bit | order-2 文脈) を 素朴推定すると Miller-Madow の 主要項で ≈ (K−1)/(2N ln2) bits = バイアス。 K = 2^22 (400 万) を 一定と仮定した射影:
| 標本量 | 標本/セル | plug-in バイアス | 効果量比 |
| 16 MiB | 4.0 | ≈ 0.180 bits | 効果 +0.13〜0.30 の 下限を 上回る |
| 100 MiB | 25.0 | ≈ 0.029 bits | 意味のある screening 精度に なる |
| 1 GiB | 256 | ≈ 0.003 bits | 効果量に対して 十分小さい |
この表は K = 2^22 一定を仮定した射影 (Cowork 4 回目指摘認諾 corrigendum-4)。
K は N とともに増える (実測: 256 KiB で K_order2 = 59,320 / K_order2lex = 110,750 / K_order2rnd = 214,492、モデル間で最大 3.6 倍差)。 100 MiB で 新規文脈が埋まって K が 1.5〜2 倍になれば 13 標本/セル ≈ 0.055 bits、+0.10 境界に対して 無視できない。
対策: bench.py に K_touched を 各 run 出力させる 1 行を追加済 (encode.py が K を stdout に出力、bench.py が capture して表に列追加)。 表は「K 一定仮定の射影」ラベルのまま、事後に 各 run の 実測 K で 埋め直す。 100 MiB bench 完了時 に γ 表を 実測 K 版で 更新予定。
16 MiB での 素朴推定は バイアスだけで 効果量の 下限を上回る = 「効果を丸ごと捏造できる」水準 (「上振れ傾向がある」ではない)。 (c) の 禁止は 定性的判断ではなく 数値的必然。 未来 Claude の「少しくらいなら」誘惑への 最強の抑止。
同時に、100 MiB に上げると バイアスが 0.029 bits まで落ちる = γ の 100 MiB 化は bench の精度向上だけでなく、δ の screening を 初めて意味のある精度にする 副次効果がある。 γ が 先で δ が 従、というのは この意味でも 正しい順序。
参考: STEP 1741 (R(D~) SEED_KERNEL 対照実験) で 既に null model + optimal min-H + Miller-Madow を 適用済。 本 arc 帰無並走・bias correction 規律は 1 STEP 前 に 自 arc で 確立した もの、δ を 素朴推定で組む case は 既存規律と 二重に矛盾する。
対処 3 選択肢:
- (a) 条件づけを粗くする — 生の文脈ではなく、一次モデルの予測確率バケットで条件づける。 標本数が確保できて、実装は probe.py の拡張だけ。 これが現実的な唯一の道 (Cowork 推薦)。
- (b) バイアス補正推定量 (Miller-Madow / NSB) を使う。 正しいが工数が増える。
- ❌ (c) 生の order-2 文脈で 素朴推定 — 上振れ確定、やってはいけない。
δ の 正確な位置づけ:
- ❌ 「機構仮説の decisive 検証道具」 (私 の 前 turn overclaim)
- ❌ 「Rule 5 の 第 2 項 = 条件付き I は 採択にも使える」への 昇格 tool
- ✅ 「bench の 20 分測定を 数秒で 粗く近似する screening 拡張」 (Cowork 訂正)
- ✅ 「Rule 5 の 運用を 安価に 高速化する 補助 tool」 (規律 upgrade ではなく 運用効率 upgrade)
いずれも 藤本さん judgment 待ち。 Cowork 推薦 = γ を 2 model で 今夜投げる + δ は (a) で 並行実装 + ラベル「bench の 安価な近似」で 明記。