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 本のアークが独立に走らせた:

両者は独立に同じ 5 規律 (帰無並走 / 幅揃え / 素ベースライン / MDL 会計 / I 棄却専用) に到達した。この一致自体が規律の妥当性の傍証。

2. 藤本さん事前登録 (2026-09-04)

整数演算のみ・浮動小数点ゼロ・決定的モデルなので、同一 corpus + 同一コード = byte-exact 一致が期待できる。「3 桁一致」で終わらせず、圧縮後バイト数の完全一致を要求する事前登録。

modelCowork 事前登録bpb意味
order26,403,4473.0534base harness のみ (Cowork コード非経由) — 土台一致 gate
order2lex6,124,5442.9204Track A 4-bit lex
order2rnd6,454,3063.0777Track A 4-bit 帰無
order2d86,144,0492.9297Track A-2 D-FUMT₈ 6-bit
order2lex86,163,5132.9390Track A-2 lex 6-bit
order2rnd66,600,2913.1473Track 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

modelCoworkRei-AIOS 実測Δ bytes判定
order2 (gate)6,403,4476,403,4470EXACT ✅
order2lex6,124,5446,124,5440EXACT ✅
order2rnd6,454,3066,454,3060EXACT ✅
order2d86,144,0496,144,0490EXACT ✅
order2lex86,163,5136,163,5130EXACT ✅
order2rnd66,600,2916,600,2910EXACT ✅

この 6/6 一致が示すこと (byte-exact は決定的計算の論理的帰結、"成立して当然"):

  1. corpus 同一 — enwik8 全 100 MB + 16 MiB slice が bit-identical (sha256 verify)
  2. base harness 同一order2 の 6,403,447 が完全一致。 Cowork の追加コードを通らない base only の数字なので、rans / codec / models base が 1 bit も違わない
  3. Track A/A-2 port bit-perfectorder2lex/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 回」 ではなく 「別々の設計選択が 独立に 同じ結論に達した」 という 意味で 科学的な傍証になる:

  1. 5 規律に独立到達 — Cowork 4-round と STEP 1724 が それぞれ独立に、 帰無並走 / 幅揃え / 素ベースライン / MDL 会計 / I 棄却専用 の 5 規律に到達した。 事前合意なしでの 収束は 規律の 妥当性の 傍証。
  2. SSE 側の独立測定 — STEP 1724 (sse_lex64 bigram, sse_lex256) と Cowork (sse_lex/lex16/lex64/lex256/hash*) が それぞれ SSE 経路の天井 0.018 bpb を独立に発見。
  3. 会計結論の独立到達 — 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.pyI 定義と、STEP 1724 側の probe.pyI 定義を突き合わせた:

両側とも: 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 出所差分 (実質的な区別)

式は同一だが引数が違う:

Track A-2 の機構仮説 (D8 のビット代数的な読みが一次文脈と直交する) は、STEP 1724 側の probe 定義でこそ意味を持つ。将来 Track A-2 を深掘りするなら、STEP 1724 側の probe.state_sequence を Cowork corpus に対して実行するのが筋。

8. Track A 追加観察

9. Honest scope

Cowork の 3 条を継承 (Rule 「言えないこと」):
本 STEP 固有の scope:

10. 継続 candidate (Cowork 指摘 2 回認諾で 5 → 2 一本化 + 見積 + ラベル訂正)

打ち切り (byte-exact = 論理的帰結、走らせても 移植追認以上の 情報ゼロ):

γ. 100 MiB enwik8 full — 最優先、3 model 一晩

Cowork 見積訂正認諾: 私 の 前 turn 見積 「6 model で ~5.7h」 は 過大。 scaling の問いに答えるのに 6 model は不要:

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 MiB4.0≈ 0.180 bits効果 +0.13〜0.30 の 下限を 上回る
100 MiB25.0≈ 0.029 bits意味のある screening 精度に なる
1 GiB256≈ 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 選択肢:

δ の 正確な位置づけ:

いずれも 藤本さん judgment 待ち。 Cowork 推薦 = γ を 2 model で 今夜投げる + δ は (a) で 並行実装 + ラベル「bench の 安価な近似」で 明記