[{"data":1,"prerenderedAt":536},["ShallowReactive",2],{"finding:p3-tier1-bit-exact":3,"finding-runs:p3-tier1-bit-exact":353,"finding-related:p3-tier1-bit-exact":450},{"meta":4,"impact":77,"sections":83},{"id":5,"title":6,"subtitle":7,"eyebrow":8,"date":9,"status":10,"category":11,"polarity":12,"axes":13,"tags":16,"task_code":32,"commit":33,"branch":34,"config_paths":35,"related_runs":54,"related_findings":73},"p3-tier1-bit-exact","M2 Tier1 (A1-A4 bit-exact) 12.5k gate v1+v2 — 棄却維持 (v1: Δ-5.0%だが2σ未達+PSNR guard抵触 \u002F v2 n=5 radix ballot上: PSNR分離は反証、wallclockは効果量≤1%で判定不能)","SSIM memset 削除 (A1) \u002F work_grad clear の GPU blit 化 (A2) \u002F backward uniform の set_bytes 化 (A3) \u002F 未使用 C3 scratch の lazy grow 化 (A4) をまとめて 1 flag セット (全 ON\u002F全 OFF) で gate した。\u003Cstrong>v1 (n=3, 旧 baseline)\u003C\u002Fstrong>: train elapsed 155.40 → 147.64s (-4.99%)、方向は 3 pair 全てで on が速く一貫していたが、有意閾値 \u003Cstrong>max(2σ\u003Csub>off\u003C\u002Fsub>, 1%) = 5.11%\u003C\u002Fstrong> を \u003Cstrong>0.12 pt 差で下回り\u003C\u002Fstrong>不採用。加えて \u003Cstrong>PSNR が on 側で 3\u002F3 完全分離\u003C\u002Fstrong> (Δ -0.065 dB) し guard に抵触。\u003Cstrong>v2 (n=5, 2026-08-30 M4 radix ballot 採用後の新 baseline 127.4s 上で再 gate)\u003C\u002Fstrong>: PSNR は mean **+0.028 dB**・5 pair 中符号混在 (on&gt;off 3 \u002F on&lt;off 2) で \u003Cstrong>v1 の系統分離は再現せず、「静かな壊れ」仮説は反証\u003C\u002Fstrong>された。wallclock は Δ **-1.11%** で閾値 1.05% を 0.06 pt 差で形式上通過するが、汚染 pair の扱い方 (生データ Δ-0.30%、n=6 で残すと Δ-0.15%、いずれも不通過) に判定が強く依存する\u003Cstrong>脆い pass\u003C\u002Fstrong>であり、advisor レビューの指摘により \u003Cstrong>棄却を維持\u003C\u002Fstrong> (根拠は「PSNR guard 抵触」から「wallclock 効果量 ≤1% で本 harness の分解能未満、判定不能」に変更)。\u003Ccode>cargo test --workspace\u003C\u002Fcode> は両 gate とも全 pass。\u003Cstrong>4 flag の default は HostMemset \u002F HostBuffer \u002F false のまま維持、config.rs は変更しない\u003C\u002Fstrong>。","2026-09 第 5 回ゼミ milestones · M2 · Tier1 (bit-exact)","2026-08-30","stable","experiment","negative",[14,15],1,3,[17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],"m2","tier1","ssim-clear","raster-grad-clear","backward-uniform","lazy-c3-scratch","gpu-gate","lego","rejected","atomic-nondeterminism","psnr-guard","v2-regate","n5","radix-ballot-baseline","contamination-retry","2026-09 第 5 回ゼミ milestones — M2 Tier1 (A1-A4)","97c1dd0","main",[36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53],"splat\u002Fconfigs\u002F2026-08-30-t1-12500-off-r1.toml","splat\u002Fconfigs\u002F2026-08-30-t1-12500-on-r1.toml","splat\u002Fconfigs\u002F2026-08-30-t1-12500-off-r2.toml","splat\u002Fconfigs\u002F2026-08-30-t1-12500-on-r2.toml","splat\u002Fconfigs\u002F2026-08-30-t1-12500-off-r3.toml","splat\u002Fconfigs\u002F2026-08-30-t1-12500-on-r3.toml","splat\u002Fconfigs\u002F2026-08-30-t1v2-12500-off-r1.toml","splat\u002Fconfigs\u002F2026-08-30-t1v2-12500-on-r1.toml","splat\u002Fconfigs\u002F2026-08-30-t1v2-12500-off-r2.toml","splat\u002Fconfigs\u002F2026-08-30-t1v2-12500-on-r2.toml","splat\u002Fconfigs\u002F2026-08-30-t1v2-12500-off-r3.toml","splat\u002Fconfigs\u002F2026-08-30-t1v2-12500-on-r3.toml","splat\u002Fconfigs\u002F2026-08-30-t1v2-12500-off-r4.toml","splat\u002Fconfigs\u002F2026-08-30-t1v2-12500-on-r4.toml","splat\u002Fconfigs\u002F2026-08-30-t1v2-12500-off-r5.toml","splat\u002Fconfigs\u002F2026-08-30-t1v2-12500-on-r5.toml","splat\u002Fconfigs\u002F2026-08-30-t1v2-12500-off-r6.toml","splat\u002Fconfigs\u002F2026-08-30-t1v2-12500-on-r6.toml",[55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72],"t1-12500-off-r1","t1-12500-on-r1","t1-12500-off-r2","t1-12500-on-r2","t1-12500-off-r3","t1-12500-on-r3","t1v2-12500-off-r1 (CONTAMINATED, discarded)","t1v2-12500-on-r1 (CONTAMINATED, discarded)","t1v2-12500-off-r2","t1v2-12500-on-r2","t1v2-12500-off-r3","t1v2-12500-on-r3","t1v2-12500-off-r4","t1v2-12500-on-r4","t1v2-12500-off-r5","t1v2-12500-on-r5","t1v2-12500-off-r6 (retry replacing r1)","t1v2-12500-on-r6 (retry replacing r1)",[74,75,76],"p2-s3-iteration-pipelining","p3-kernel-share-post-s3","p3-radix-ballot",{"summary":78,"rank":79,"verdict":80,"delta_psnr":81,"delta_wallclock":82},"M2 Tier1 の 4 flag (A1 SSIM memset 除去 \u002F A2 work_grad blit 化 \u002F A3 backward uniform set_bytes 化 \u002F A4 lazy C3 scratch) を全 ON\u002F全 OFF の 2 arm にまとめ gate した。\u003Cstrong>v1 (n=3, 旧 baseline)\u003C\u002Fstrong>: train elapsed (internal timer) off 155.40s (σ 2.56%) → on 147.64s (σ 0.55%) = -4.99%、3 pair 全てで on が速い一貫した方向を示したが有意閾値 max(2σ\u003Csub>off\u003C\u002Fsub>, 1%) = 5.11% を 0.12 pt 差で下回り不通過。同時に PSNR は on 側で完全分離 (mean Δ -0.065 dB) し task 指定 guard に抵触した。\u003Cstrong>v2 (n=5, 2026-08-30 M4 radix ballot 採用後の新 baseline 127.4s 上で再 gate)\u003C\u002Fstrong>: PSNR は mean **+0.028 dB**、5 pair 中 on&gt;off 3 \u002F on&lt;off 2 の符号混在で \u003Cstrong>v1 の系統分離は再現せず、「A1\u002FA2 chained path の静かな壊れ」仮説は反証\u003C\u002Fstrong>された。wallclock は r1 pair の load 汚染 (on-r1 走行中に load1 が 9.09 まで spike) を検知し 1 回だけ再実行 (r6 で置換、元 log は `*-CONTAMINATED-*` として保存) した後の値で Δ **-1.11%**、有意閾値 1.05% を 0.06 pt 差で形式上通過する。しかし①汚染 r1 を生のまま使うと Δ-0.30% (不通過)、②両方の r1 試行を n=6 として残すと Δ-0.15% (不通過) と\u003Cstrong>1 点の去就で判定が反転する脆い pass\u003C\u002Fstrong>であり、さらに③置換先の r6 自身が事前登録した再実行条件 (自 arm 他値から3σ超) を独立 load 証拠の裏付けなしに 10.3σ で踏む (条件だけでは停止しない除外連鎖になる設計上の欠陥が判明)。advisor レビューの指摘により、0.06pt の脆い pass を根拠に default flip して M7 最終スタック・卒論数値の土台にするのは不適切と判断し、\u003Cstrong>棄却を維持\u003C\u002Fstrong>した (根拠は v1 の「PSNR guard 抵触」から v2 の「wallclock 効果量 ≤1% で本 harness (n=5) の分解能未満、判定不能」に変わった)。両 gate とも `cargo test --workspace` (A1 sentinel probe \u002F A2+A3 4 組合せ parity \u002F A4 self-heal 含む) は全 pass — 実装レベルの correctness bug は一貫して否定的。\u003Cstrong>結論: 棄却維持、4 flag の default は変更しない、config.rs は一切触らない\u003C\u002Fstrong>。","medium","rejected-v2-wallclock-inconclusive-psnr-guard-resolved","v1 (n=3): on **36.140 dB** (36.165\u002F36.097\u002F36.157) vs off **36.205 dB** (36.201\u002F36.195\u002F36.219) = **-0.065 dB**、n=3 全 pair で on \u003C off の完全分離、task 指定 guard (on mean ≥ off mean - 0.05 dB) に **抵触**。config header の絶対 guard (36.202 ± 0.1 dB) では両 arm とも帯内で pass — 2 guard の定義差は本文 §1 参照。final splats は on 407,775 \u002F off 408,721 (-0.23%)。\u003Cbr>\u003Cstrong>v2 (n=5、r1→r6 置換後)\u003C\u002Fstrong>: on **36.1982 dB** (36.218\u002F36.159\u002F36.196\u002F36.221\u002F36.197) vs off **36.1704 dB** (36.112\u002F36.220\u002F36.102\u002F36.237\u002F36.181) = **+0.0278 dB**、guard に **pass**。5 pair の符号は on&gt;off (r1,r3,r5) \u002F on&lt;off (r2,r4) の**混在**で系統性なし — off 側の散らばり (36.102-36.237) が on 側 (36.159-36.221) より大きく、v1 の系統分離とは対照的。v2 の結果は「PSNR 散らばりは atomic 非決定性の床であり flag 由来ではない」という読みを支持し、v1 の「静かな壊れ」仮説を反証する","v1 (n=3) mean (train elapsed, internal timer): **155.40 → 147.64s = -4.99%**、σ off 2.56% \u002F on 0.55% (比 4.66×)、有意閾値 max(2σ_off,1%) = 5.11%、実測 Δ は**閾値の 97.7%、0.12 pt 差で未達**。\u003Cbr>\u003Cstrong>v2 (n=5、新 baseline 127.4s 上、r1→r6 置換後)\u003C\u002Fstrong>: off **127.386s** (σ 0.527%) → on **125.972s** (σ 0.956%) = **-1.11%**、有意閾値 max(2σ_off,1%) = 1.054%、実測 Δ は**閾値の 105%、0.06 pt 差で形式上通過**。ただし感度分析 3 通り (汚染 r1 込み生データ Δ-0.30%\u002F不通過、r1→r6 置換後 n=5 Δ-1.11%\u002F通過、両試行を n=6 として残す Δ-0.15%\u002F不通過) のうち\u003Cstrong>通過するのは 1 通りのみ\u003C\u002Fstrong>で判定が 1 点の去就に依存する。σ 非対称は v1 が off 側 4.66× だったのに対し v2 は on 側 (n=5 で 1.81×、r1 の両試行を含む n=6 で見ると **5.40×**) と\u003Cstrong>逆転しており、両 gate とも分散構造が clean ではない\u003C\u002Fstrong>。v1 (-7.76s) と v2 (-1.41s) の絶対削減量が 5.5× 食い違う点は、A1-A4 が host 側 memset\u002Falloc 除去 (per-iter 削減量はほぼ一定のはず) である以上、\u003Cstrong>v1 の -4.99% は off arm の汚染 (σ2.56%) で膨らんでいた可能性が高く、真の効果量は ~1% 前後 = 本 harness の n=5 分解能未満\u003C\u002Fstrong>という解釈と整合する",[84,87,90,114,116,178,183,187,189,193,196,198,207,209,217,219,242,321,324,327,331,334,337,339],{"type":85,"text":86},"lead","M2 Tier1 の 4 flag は \u003Ccode>docs\u002Fstrategy\u002F2026-08-next-phase-tasklist.md\u003C\u002Fcode> の A1-A4 表が「correctness surface ゼロ」と分類した施策で、CPU 側 memset\u002Falloc\u002Fhost buffer を GPU 側の blit\u002Fset_bytes\u002Flazy grow に置き換えるだけの実行主体変更のはずだった。\u003Cstrong>4 flag をまとめて 1 set (全 ON = arm B) \u002F 全 OFF (arm A)\u003C\u002Fstrong> として 12.5k Lego 同一 session 交互 A\u002FB \u003Cstrong>off→on→off→on→off→on (n=3)\u003C\u002Fstrong> で gate した。wallclock は方向性が一貫し閾値に肉薄したが未達、PSNR は逆に閾値を明確に超えて悪化方向に分離した — \u003Cstrong>wallclock で通し PSNR で落ちる\u003C\u002Fstrong>という、この gate 群では初めてのパターン。",{"type":88,"text":89},"heading","0. 計測環境と binary provenance",{"type":91,"items":92},"kv",[93,96,99,102,105,108,111],{"key":94,"value":95},"電源 \u002F 機体","AC 接続 (99% finishing charge 圏で終始安定)、GPU 権は main から付与済み。session 中 `pgrep -f \"target\u002Frelease\u002Fsplat\"` は他 agent の監視 loop 自身の argv 文字列に自己マッチする既知の false positive があり (自分の grep パターンを含む \u002Fbin\u002Fzsh -c ラッパー越しの誤検知)、実際の training process 二重起動ではなかったことを `ps -ef` \u002F runs ディレクトリの mtime で個別に確認した",{"key":97,"value":98},"1 巡目の破棄","session 開始時に `cargo build --release` した binary (commit 97c1dd0 相当) で off-r1\u002Fon-r1\u002Foff-r2 まで走らせた時点で、main から「15:45 と 16:20 に main が M3 (`fa773b1`)\u002FM4 (`864040a`) を release binary にマージ済み」と連絡が入った。on-r1 だけ 189.78s と他の on 値 (146-152s 台) から明確に外れており、binary 不整合 (実質的に 1 巡目内で 2 種類の binary が混在するリスク) と合わせて **1 巡目 4 run を全破棄**し、`cargo build --release` を再実行して 6 run を撮り直した",{"key":100,"value":101},"binary 一致性の確認","撮り直し後の binary は git rev `0247b2b` (`864040a` の M3\u002FM4 merge + docs-only commit 1 本)、sha256 `ff46e94ed9b0361dbf8f6a556222067e8b12563dc98df52c1bf47a80ebfd8117`。`git diff 97c1dd0 0247b2b -- config.rs util.rs ssim.rs rasterize.rs tile_bin.rs` で `ssim_clear`\u002F`raster_grad_clear`\u002F`backward_uniform`\u002F`lazy_c3_scratch` に関わる行の差分が無いことを確認し、以後の 6 run は**単一 binary で撮り直した**",{"key":103,"value":104},"他 agent の GPU 使用との重複確認","main から「15:00〜15:40 頃に別 agent の `splat bench` replay (計 6 回) が gate run と重なった可能性」の指摘を受けたが、本 gate の 6 run (14:53:20〜15:10:30、sandbox セッション内部時計) の run 窓と `runs\u002F` 配下の新規ディレクトリを突き合わせ、この窓に自分の `t1-12500-*` 6 件以外の新規 run ディレクトリが生成されていないことを確認した。ただし **run 単位の load average は記録していない** ため、host 側 CPU 競合の有無そのものは事後確認できない (§3 の限界一覧を参照)",{"key":106,"value":107},"process wallclock の量子化","各 run は `nohup … & disown` で detach し、`while pgrep -f \"release\u002Fsplat train\"; do sleep 30; done` で完了を待った。この 30s poll 間隔が実測 process wallclock を量子化し (off 3 本とも 182s、on 3 本とも 152s に丸まる)、真の train elapsed 差 (-4.99%) を見かけ上 -16% 相当に誇張する。p2-s3 は同期的 `date` 呼び出しで量子化誤差が無かったため、本 finding では **process wallclock 列を表から除外**し、内部 timer の `training done in X.XXs` (train elapsed) のみを判定に使う (詳細は §3 の限界一覧)",{"key":109,"value":110},"撮り直し 6 run の flag 実測確認","各 log の `[backend] BackendConfig { … }` 行から `ssim_clear`\u002F`raster_grad_clear`\u002F`backward_uniform`\u002F`lazy_c3_scratch` を抽出し、off-r1\u002Fr2\u002Fr3 が `HostMemset, HostMemset, HostBuffer, false` (3\u002F3)、on-r1\u002Fr2\u002Fr3 が `ShaderCoverage, GpuBlit, SetBytes, true` (3\u002F3) であることを確認した。binary 差し替え後も意図した arm が正しく走っていることの直接証拠",{"key":112,"value":113},"1 巡目 (破棄分) の log","破棄した 1 巡目の集約 log (`runs-logs\u002Ft1-gate-ababab.log`、on-r1 189.78s を含む) は撮り直し後に削除済みで、**現存する artifact は無い**。本 finding 中の 189.78s \u002F 150-166s 台の数値は本 session の transcript のみが出典であり、再検証はできない (p2-s3 は `s3-12500-abbaab-round1-CONTAMINATED-*.log` として破棄分を保存する規律だったが、本 gate ではそれを踏襲できなかった)",{"type":88,"text":115},"1. 実測 — 12.5k 同一 session 交互 A\u002FB n=3",{"type":117,"columns":118,"align":125,"rows":128},"table",[119,120,121,122,123,124],"実行順","arm","config","train elapsed (s)","PSNR (dB)","final splats",[126,126,126,127,127,127],"left","right",[129,135,141,146,151,156,161,168,173],[130,131,55,132,133,134],"1","off (A)","150.82","36.201","409,121",[136,137,56,138,139,140],"2","on (B)","148.11","36.165","408,516",[142,131,57,143,144,145],"3","157.96","36.195","407,505",[147,137,58,148,149,150],"4","146.70","36.097","405,175",[152,131,59,153,154,155],"5","157.41","36.219","409,537",[157,137,60,158,159,160],"6","148.10","36.157","409,633",[162,163,164,165,166,167],"**mean**","**off**","—","**155.40** (σ 2.56%)","**36.205**","408,721",[162,169,164,170,171,172],"**on**","**147.64** (σ 0.55%)","**36.140**","407,775",[174,164,164,175,176,177],"**Δ**","**-4.99%**","**-0.065**","-0.23%",{"type":179,"label":180,"variant":181,"text":182},"callout","wallclock — 有意閾値に 0.12 pt 差で未達","warning","off 側 sample σ (n=3, n-1 分母) は 2.56% (p2-s3 の σ 定義と同じ式で `3.973 \u002F 155.397` = 2.557%、p2-s3 の 3.33% \u002F 1.18% を独立に再現できることで式の一致を確認済み)。有意閾値は \u003Cstrong>max(2σ_off, 1%) = 5.11%\u003C\u002Fstrong>。実測 Δ は \u003Cstrong>-4.99%、閾値の 97.7%\u003C\u002Fstrong> で \u003Cstrong>0.12 pt 差の僅差で未達\u003C\u002Fstrong>。3 pair 全てで on が速い方向は一貫しており (off-r1&gt;on-r1, off-r2&gt;on-r2, off-r3&gt;on-r3)、σ の非対称 (off 2.56% \u002F on 0.55% = \u003Cstrong>4.66×\u003C\u002Fstrong>、p2-s3 の採用ケースでの 2.8× より大きい) は「on 側が GPU 律速で host jitter に鈍い」という同型の機構の可能性も、host 側 CPU 競合の非対称汚染の可能性も両方説明できてしまい、\u003Cstrong>本データだけでは切り分けられない\u003C\u002Fstrong> (§3 の限界一覧を参照)。off-r1 (150.82s) は 3 本中最速で off 側平均を押し下げ σ を押し上げる方向に効いている ── p2-s3 が「残せば S3 に不利な側に倒すので採用する」とした基準に倣い、本 finding でも**除外していない**。",{"type":179,"label":184,"variant":185,"text":186},"PSNR — n=3 完全分離、task guard に抵触 (config header の絶対 guard とは食い違う)","danger","on の PSNR 3 値 (36.165 \u002F 36.097 \u002F 36.157) は off の 3 値 (36.201 \u002F 36.195 \u002F 36.219) を \u003Cstrong>すべて下回る完全分離\u003C\u002Fstrong>。mean Δ は \u003Cstrong>-0.065 dB\u003C\u002Fstrong>。\u003Cstrong>本 task が指定した guard (on mean ≥ off mean - 0.05 dB) には抵触\u003C\u002Fstrong> (-0.065 &lt; -0.05)。一方、gate config header が記す \u003Cstrong>絶対 guard (36.202 ± 0.1 dB)\u003C\u002Fstrong> では on mean 36.140 \u002F off mean 36.205 ともに帯内 [36.102, 36.302] で \u003Cstrong>pass\u003C\u002Fstrong> ── 出典によって guard の定義 (相対 -0.05dB vs 絶対 ±0.1dB) が食い違っており、どちらを A1-A4 のような bit-exact 施策に適用すべきかは本 finding では判定せず、**判断を main に返す**。ただし wallclock 側が既に閾値未達である以上、\u003Cstrong>どちらの guard 読みを採っても本 gate の結論 (棄却) は変わらない\u003C\u002Fstrong>。",{"type":88,"text":188},"2. bit-exact 主張と PSNR 分離の矛盾 — unit test では correctness bug を検出できず",{"type":179,"label":190,"variant":191,"text":192},"cargo test --workspace は全 pass — A1\u002FA2+A3\u002FA4 の該当 test を個別確認","success","\u003Ccode>kernels::ssim::tests::ssim_clear_shader_coverage_overwrites_sentinel\u003C\u002Fcode> (A1 の 0xCD sentinel probe)、\u003Ccode>kernels::rasterize::tests::backward_from_buf_grad_clear_and_uniform_variants_match\u003C\u002Fcode> (A2+A3 の `HostMemset`×`GpuBlit` \u002F `HostBuffer`×`SetBytes` 4 組合せ勾配一致)、\u003Ccode>kernels::tile_bin::tests::lazy_c3_scratch_self_heals_after_late_tile_counting_flip\u003C\u002Fcode> (A4) を含め \u003Cstrong>ワークスペース全体 86+70+8+8+7+1 件が全 pass\u003C\u002Fstrong>。単体 test レベルでの correctness bug は否定的で、A1-A4 の bit-exact 主張自体は unit test の粒度では裏付けられる。",{"type":179,"label":194,"variant":181,"text":195},"bit-exact 主張と PSNR 分離の矛盾は未解決 — 仮説止まり","したがって PSNR の完全分離は「A1-A4 の kernel 実装が数学的に異なる値を出している」ことより、\u003Cstrong>既存の atomic 非決定性 (`atomic_fetch_add` の dispatch 順序依存、`#5.31.x.future` で std=0.6dB と判明済み、p2-s3 でも final splats ±0.6% の chaos として観測済み) が A4 の scratch footprint 縮小 (2 世代 156MB → 必要時のみ確保) によるメモリレイアウト変化で増幅された\u003C\u002Fstrong>可能性の方が高い、という仮説になる。ただし \u003Cstrong>本 gate は 4 flag を同時に切り替えているため、どの 1 flag (あるいは flag 間の相互作用) が PSNR 分離の原因かは切り分けられていない\u003C\u002Fstrong>。p2-s3 の chaos (final splats +0.6%\u002F-0.6% で方向不一致) と異なり、\u003Cstrong>今回は 3\u002F3 全て同方向に分離しており「純粋な無方向 chaos」とは言い切れない\u003C\u002Fstrong>点が、この仮説だけで済ませてよいか慎重にすべき理由でもある。",{"type":88,"text":197},"3. 既知の限界 (再 gate する場合に埋めるべき穴)",{"type":199,"ordered":200,"items":201},"list",false,[202,203,204,205,206],"\u003Cstrong>4 flag 一括 gate のため個別寄与が不明\u003C\u002Fstrong> — task 指示により追加 run はしていない。PSNR 分離の原因が A1\u002FA2\u002FA3\u002FA4 のどれか (または相互作用) かを切り分けるには 4 flag を独立に振る追加 gate が必要 (次の一手)","\u003Cstrong>run 単位の load average を記録していない\u003C\u002Fstrong> — p2-s3 が採用した `s3-gate-abbaab.sh` 相当の quiesce\u002Fload 記録を今回は省略した。σ 非対称 (4.66×) が host 側 CPU 競合由来かどうかを事後判定できない","\u003Cstrong>process wallclock が 30s poll 量子化で無効\u003C\u002Fstrong> — 個別 run を同期的 `date` 呼び出しで起動する p2-s3 型の driver に戻すべき","\u003Cstrong>PSNR guard の定義が 2 箇所で食い違う\u003C\u002Fstrong> (task 指定の相対 -0.05dB vs config header の絶対 ±0.1dB) — J2 (visible-only Adam 等、非 bit-exact 施策向け) の -0.05dB 基準を bit-exact 施策にもそのまま適用してよいかは main の判断が必要","n=3 は前提通りだが、σ が閾値のごく近傍にある僅差の判定は n を増やす (n=5 以上) ことで解消できる可能性が高い",{"type":88,"text":208},"4. 結論と次の一手",{"type":91,"items":210},[211,214],{"key":212,"value":213},"結論 (v1 時点)","**棄却**。`splat\u002Fcrates\u002Fsplat-train-v1\u002Fsrc\u002Fconfig.rs` の `BackendConfig::default()` (`ssim_clear` \u002F `raster_grad_clear` \u002F `backward_uniform` \u002F `lazy_c3_scratch`) は変更しない。code は一切触っていない",{"key":215,"value":216},"次の一手 (v1 時点の推奨、v2 で一部実施)","① A1\u002FA2\u002FA3\u002FA4 を個別に ON にした 4 way 追加 gate で PSNR 分離の犯人を特定 (unit test は全 pass 済みなので実装修正ではなく計測)。② 個別 gate は load average 記録付きの `t1-gate-ababab.sh` 型 driver + 同期的 wallclock 計測に戻す。③ PSNR guard の定義 (相対 -0.05dB vs 絶対 ±0.1dB) の適用範囲を main に確認する。**v2 では②相当 (load sampler 付き driver) は実施したが①(4 way 切り分け) は未実施のまま** — wallclock が判定不能水準に落ちたため優先度が下がった、次の一手として引き続き有効",{"type":88,"text":218},"5. 再 gate v2 (n=5、2026-08-30 M4 radix ballot default 採用後の新 baseline 上)",{"type":91,"items":220},[221,224,227,230,233,236,239],{"key":222,"value":223},"発注理由","v1 gate の 2 つの弱点 — (a) off 側 σ 2.56% が異常に大きく閾値ぎりぎりの未達だった、(b) v1 実施後に M4 (radix scatter simd_ballot) が default 採用され 12.5k baseline が 155.40s→127.53s (-18%) に変わった — を踏まえ、同一 config family (A1-A4 の 4 flag のみ off\u002Fon 差替、他は不変) を `t1v2-12500-{off,on}-r{1..5}.toml` として複製し n=5 で新 baseline 上に再 gate した",{"key":225,"value":226},"電源 \u002F 機体 \u002F GPU 権","AC 接続 (`pmset -g batt` で series 通じて `AC Power`)、M4 Max。GPU 権は main から付与済み、`pgrep -fl \"[t]arget\u002Frelease\u002Fsplat\"` で他 agent の GPU run 無しを確認してから起動",{"key":228,"value":229},"ambient load","series 開始時 load1 ≈ 4.2、series 通じて 0.7〜9.1 の範囲で緩やかに低下 (v1\u002FM4 gate が遭遇した 13〜22 の汚染クラスとは異なる、通常範囲)。launch 前に `LOAD_LIMIT=7.0`\u002F`QUIESCE_MAX=30` (5min cap) に調整 (デフォルト `LOAD_LIMIT=6.0` は当日の ambient 5-6 の境界に近く、頻繁な quiesce 待ち超過を招く恐れがあったための調整、判断根拠は `runs-logs\u002Ft1v2-12500-predecision.log` に事前記録)",{"key":231,"value":232},"binary provenance","全 12 run (r1 汚染分含む) は単一 binary (commit `457aa68`、sha256 `a13b66977c70aeb04b66f9e60cfc067424c9d4ee2296ff355dd71f44098ac22f`、series 前後で不変を driver ログで確認)。Part 1 の `cargo test --workspace --release` を完全に終えてから `cargo build --release` で確定させ、series 中は build\u002Ftest を一切実行していない (v1 が binary 差し替えで 1 巡目を全破棄した反省を踏まえた運用)",{"key":234,"value":235},"flag 実測確認 (12\u002F12)","全 12 run の `[backend] BackendConfig { … }` から `radix_scatter=SimdBallot` (12\u002F12、新 baseline の前提が成立していることの直接証拠) と、4 flag が off=`HostMemset,HostMemset,HostBuffer,false` (6\u002F6) \u002F on=`ShaderCoverage,GpuBlit,SetBytes,true` (6\u002F6) であることを抽出確認",{"key":237,"value":238},"判定規則の事前登録 (データを見る前に固定)","採用条件は wallclock (Δ ≤ -max(2σ_off,1%)) と PSNR guard (on mean ≥ off mean - 0.05dB) の **AND**、片方のみ pass では flip せず保留とする。σ は n-1 分母・off mean 比の相対値。汚染疑いでの再実行条件は事前に (i) run 窓内 load1 平均が全体中央値の1.5倍超、または (ii) 個別 run が同 arm 内で他値から 3σ 超、のいずれかと定義し、破棄分は削除せず `*-CONTAMINATED-*` に rename して保存する、と定めた (`runs-logs\u002Ft1v2-12500-predecision.log` に全文記録)",{"key":240,"value":241},"driver","`gate-ab-n3.sh` を N 引数化した新規 `splat\u002Fscripts\u002Fgate-ab-n.sh` (`\u003Coff_prefix> \u003Con_prefix> \u003Crun_prefix> [N=3]`) で n=5 を実行。r1 pair 再実行分は単発 `splat\u002Fscripts\u002Fretry-pair-r6.sh` で個別に実施 (quiesce\u002Fmeta\u002Flog\u002F独立 sampler の構造は driver と同型)",{"type":117,"columns":243,"align":247,"rows":248},[119,120,244,122,123,245,246],"run","run 窓内 load1 平均 \u002F 最大","備考",[126,126,126,127,127,127,126],[249,254,260,265,269,273,277,282,287,292,297,304,311,315,318],[130,131,250,251,133,252,253],"t1v2-12500-off-r1","127.63","2.43 \u002F 3.03","**CONTAMINATED、破棄** (pair 相方の on-r1 で load spike検知、log保存済み)",[136,137,255,256,257,258,259],"t1v2-12500-on-r1","133.57","36.145","4.60 \u002F **9.09**","**CONTAMINATED、破棄** (走行中 load1 spike、事前登録条件(i)(ii)双方該当)",[142,131,63,261,262,263,264],"126.56","36.220","2.92 \u002F 3.60","採用",[147,137,64,266,267,268,264],"125.31","36.159","2.03 \u002F 2.30",[152,131,65,270,271,272,264],"128.27","36.102","3.13 \u002F 5.38",[157,137,66,274,275,276,264],"125.38","36.196","2.97 \u002F 3.45",[278,131,67,279,280,281,264],"7","127.79","36.237","1.59 \u002F 2.09",[283,137,68,284,285,286,264],"8","125.26","36.221","1.19 \u002F 1.65",[288,131,69,289,290,291,264],"9","126.97","36.181","0.82 \u002F 1.22",[293,137,70,294,295,296,264],"10","125.82","36.197","0.85 \u002F 1.22",[298,131,299,300,301,302,303],"11 (retry)","t1v2-12500-off-r6","127.34","36.112","1.08 \u002F 1.39","r1 の代替として採用、独立 sampler 終始 clean",[305,137,306,307,308,309,310],"12 (retry)","t1v2-12500-on-r6","128.09","36.218","1.00 \u002F 1.08","r1 の代替として採用。ただし**この値自体が事前登録条件(ii)を10.3σで踏む**(下記 callout 参照)、条件(i)は不一致 (sampler は終始 ~1.0 で clean)",[312,163,164,313,314,164,164],"**mean (n=5、r1→r6 置換)**","**127.386** (σ 0.527%)","**36.1704**",[312,169,164,316,317,164,164],"**125.972** (σ 0.956%)","**36.1982**",[174,164,164,319,320,164,164],"**-1.11%**","**+0.0278**",{"type":179,"label":322,"variant":181,"text":323},"wallclock — 0.06pt の形式上の pass だが、感度分析で脆さが露呈","n=5 (r1→r6 置換) では Δ **-1.11%** が有意閾値 max(2σ_off,1%)=**1.054%** を 0.06 pt 差で形式上通過する。しかし**この判定は極めて脆い**: ①汚染 r1 を除外せず生のまま使うと mean は off 127.444s \u002F on 127.068s = Δ**-0.30%**で明確に不通過、②両方の r1 試行 (元 r1 + retry r6) を n=6 として両方残すと off 127.427s \u002F on 127.238s = Δ**-0.15%**でこれも不通過。\u003Cstrong>3 通りの扱いのうち pass するのは 1 通りのみ\u003C\u002Fstrong>で、1 点の去就 (含める\u002F除外する\u002F置換する) で判定が反転する。加えて置換先の r6 自身 (128.09s) は on arm の他 4 値 (125.26-125.82、mean 125.4425、sample σ 0.2564) から **10.32σ** 外れており、事前登録した再実行条件 (ii) (自 arm 内 3σ 超) を単独で踏む。r6 の独立 load sampler は走行中終始 ~1.0 で条件 (i) (load 証拠) とは不一致であり、\u003Cstrong>「条件(ii) だけでは停止できない除外連鎖になる」設計上の欠陥\u003C\u002Fstrong>であることが判明した (次に活かす教訓として下記に明記)。以上により、\u003Cstrong>本 gate は wallclock を「pass」として採用の根拠にしない\u003C\u002Fstrong>。",{"type":179,"label":325,"variant":191,"text":326},"PSNR guard — v1 の系統分離は再現せず、「静かな壊れ」仮説は反証","v1 は n=3 で on 側 3\u002F3 が off 側 3\u002F3 を完全に下回る系統的分離 (Δ -0.065 dB) を示し、A4 の scratch footprint 縮小による atomic 加算順序 chaos 増幅の疑いが残っていた。\u003Cstrong>v2 (n=5) では mean Δ が **+0.0278 dB** で guard に明確に pass し、5 pair の符号は on&gt;off (r1,r3,r5) \u002F on&lt;off (r2,r4) と\u003Cstrong>混在\u003C\u002Fstrong>、系統性は一切見られない\u003C\u002Fstrong>。むしろ v2 では **off 側の散らばり (36.102-36.237、レンジ 0.135 dB) が on 側 (36.159-36.221、レンジ 0.062 dB) より大きい**という v1 と逆の非対称すら観測された。これは「PSNR の散らばりは既存の atomic 非決定性の床であって、A1-A4 の flag 由来ではない」という読みを直接支持し、\u003Cstrong>v1 が示唆した「chained path の静かな壊れ」仮説を実質的に反証する\u003C\u002Fstrong>。",{"type":179,"label":328,"variant":329,"text":330},"算術整合性チェック — v1 の Δ-4.99% は off arm 汚染で膨らんでいた可能性","info","A1-A4 は host 側 memset\u002Falloc の除去 (CPU→GPU 実行主体変更) であり、per-iter の絶対削減量は radix scatter の実装 (GPU 側 sort) と独立にほぼ一定のはずである。しかし v1 の絶対削減量は 155.40→147.64s = **-7.76s**、v2 は 127.386→125.972s = **-1.41s** で **5.5 倍の食い違い**がある。v1 の off 側 σ は 2.56% (session 内で最も不安定な arm) だったのに対し v2 の off 側 σ は 0.527% と大幅に改善しており、\u003Cstrong>v1 の -4.99% (閾値 5.11% に肉薄) は off arm 汚染で見かけ上膨らんでいた可能性が高く、A1-A4 の真の効果量は ~1% 前後 = 本 harness (n=5) の分解能未満\u003C\u002Fstrong>、という解釈と整合する。この解釈が正しければ、v1 は「惜しくも閾値未達だった有望施策」ではなく「もともと ~1% 程度の施策だった」ことになる — 採否の結論 (棄却) は変わらないが、位置づけの理解としては v2 の方が正確である。",{"type":179,"label":332,"variant":181,"text":333},"分散構造の非対称性 — v1\u002Fv2 とも session 内 σ が clean でない (限界として明記)","v1 は off 側が不安定 (σ 比 4.66×、off が大きい)、v2 は逆に **on 側が不安定** (n=5 で 1.81×、r1 の両試行を残した n=6 で見ると **5.40×**、いずれも on が大きい)。両 gate を通じて「どちらか一方の arm が異常に安定\u002F不安定」という非対称パターンが繰り返し観測されており、この config family (A1-A4 flag toggle、12.5k Lego、depth2 pipelining) 特有の何らかの host-GPU 相互作用ジッタが疑われるが、本 finding の範囲では特定できていない。次に同系列の gate を組む際は 4 flag を個別に切り分けた計測で σ の出自を追うことを推奨する。",{"type":179,"label":335,"variant":329,"text":336},"教訓 — 再実行条件は load 証拠との一致を必須にすべきだった","事前登録した条件 (ii) (「自 arm 他値から 3σ 超」単独で再実行トリガー) は、置換後の r6 自身がこれを 10.3σ で踏むという形で**自己言及的な問題**を露呈した。r6 の独立 load sampler は終始 clean (~1.0) であり、条件 (i) の裏付けが無いまま条件 (ii) のみで再実行を続けると、停止条件のない除外連鎖になり得る。**次回以降の gate driver \u002F 判定規則では、条件 (i) (load 証拠) と条件 (ii) (統計的外れ値) の**両方が同時に成立する**ことを再実行の必須条件にする**べきである、という運用上の教訓を残す。今回はこの教訓が判明した時点 (追加の再実行はしない) で列を止め、n=5 の実測値をそのまま確定させて判断を返すという安全側の選択をした。",{"type":88,"text":338},"6. v2 結論 — 棄却維持 (理由変更)、次の一手",{"type":91,"items":340},[341,344,347,350],{"key":342,"value":343},"結論","**棄却維持**。`splat\u002Fcrates\u002Fsplat-train-v1\u002Fsrc\u002Fconfig.rs` の `BackendConfig::default()` (`ssim_clear` \u002F `raster_grad_clear` \u002F `backward_uniform` \u002F `lazy_c3_scratch`) は**変更しない**。`.rs` は一切触っていない。根拠は v1 の「PSNR guard 抵触」から v2 の「wallclock 効果量 ≤1% で本 harness (n=5) の分解能未満、判定不能 (0.06pt の pass は 1 点の去就に依存する脆いもの)」に変わった。PSNR 側の懸念 (v1 の系統分離、静かな壊れ疑い) は v2 で解消・反証された",{"key":345,"value":346},"test 確認","`cargo test -p splat-train-v1 --release --lib refine::tests` (16 件)、`pipelining_depth2_matches_off_across_refine_ticks_with_a7_direct_write` (1件)、`cargo test --workspace --release` (全 crate 188 unit test + doctest、0 failure) をいずれも series 前に確認済み (Part 1)。series 実行中に build\u002Ftest は一切行っていない",{"key":348,"value":349},"規約 2 への申し送り (main 判断待ち)","`splat-metal\u002Fsrc\u002Fkernels\u002Fssim.rs:33` 付近の `SsimClearKind::ShaderCoverage`、`rasterize.rs:125,144` 付近の `RasterGradClearKind::GpuBlit` \u002F `BackwardUniformKind::SetBytes` の mirror enum doc がいずれも旧文言「gate 待ち、finding: p3-tier1-bit-exact (予定)」のまま残っている。棄却が確定した以上、規約 2 (「verdict が変わったら enum doc を同じ commit で更新」) に照らすと、この 3 enum の doc verdict を「棄却 (v1+v2 gate 実施済み、wallclock 効果量が harness 分解能未満で判定不能、PSNR guard 自体は解消)」に doc-only で追随させる必要がある。本 finding は `.rs` を変更しない指示のため未実施 — **main の判断で doc-only commit として別途処理してほしい**",{"key":351,"value":352},"次の一手","① 効果量が ~1% と判明した以上、A1-A4 を M7 最終スタック measurement に同梱評価する (単独 gate ではなく累積 ablation の 1 段として)、② より高い分解能が必要なら n=10 以上での再 gate、③ 4 flag 個別切り分けで v1\u002Fv2 に共通する σ 非対称の出自を追う、のいずれかを main に判断してもらう",[354,363,370,376,383,390,396,405,412,419,425,432,438,444],{"id":55,"title":55,"subtitle":355,"date":9,"workspace":356,"tags":357,"verdict":358,"psnr":359,"psnr_unit":-1,"wallclock":360,"splats":361,"summary_url":362,"detail_path":362},"M2 Tier1 gate arm A (全 flag OFF、従来動作): Lego 12.5k full run repeat 1","splat",[5,17,23,24],"partial",36.20136260986328,"2m 30s",409121,"\u002Fruns\u002Ft1-12500-off-r1\u002F",{"id":57,"title":57,"subtitle":364,"date":9,"workspace":356,"tags":365,"verdict":358,"psnr":366,"psnr_unit":-1,"wallclock":367,"splats":368,"summary_url":369,"detail_path":369},"M2 Tier1 gate arm A (全 flag OFF、従来動作): Lego 12.5k full run repeat 2",[5,17,23,24],36.19479751586914,"2m 37s",407505,"\u002Fruns\u002Ft1-12500-off-r2\u002F",{"id":59,"title":59,"subtitle":371,"date":9,"workspace":356,"tags":372,"verdict":358,"psnr":373,"psnr_unit":-1,"wallclock":367,"splats":374,"summary_url":375,"detail_path":375},"M2 Tier1 gate arm A (全 flag OFF、従来動作): Lego 12.5k full run repeat 3",[5,17,23,24],36.219173431396484,409537,"\u002Fruns\u002Ft1-12500-off-r3\u002F",{"id":56,"title":56,"subtitle":377,"date":9,"workspace":356,"tags":378,"verdict":358,"psnr":379,"psnr_unit":-1,"wallclock":380,"splats":381,"summary_url":382,"detail_path":382},"M2 Tier1 gate arm B (全 flag ON、A1-A4 候補): Lego 12.5k full run repeat 1",[5,17,23,24],36.16487121582031,"2m 28s",408516,"\u002Fruns\u002Ft1-12500-on-r1\u002F",{"id":58,"title":58,"subtitle":384,"date":9,"workspace":356,"tags":385,"verdict":358,"psnr":386,"psnr_unit":-1,"wallclock":387,"splats":388,"summary_url":389,"detail_path":389},"M2 Tier1 gate arm B (全 flag ON、A1-A4 候補): Lego 12.5k full run repeat 2",[5,17,23,24],36.096981048583984,"2m 26s",405175,"\u002Fruns\u002Ft1-12500-on-r2\u002F",{"id":60,"title":60,"subtitle":391,"date":9,"workspace":356,"tags":392,"verdict":358,"psnr":393,"psnr_unit":-1,"wallclock":380,"splats":394,"summary_url":395,"detail_path":395},"M2 Tier1 gate arm B (全 flag ON、A1-A4 候補): Lego 12.5k full run repeat 3",[5,17,23,24],36.15700912475586,409633,"\u002Fruns\u002Ft1-12500-on-r3\u002F",{"id":63,"title":63,"subtitle":397,"date":9,"workspace":356,"tags":398,"verdict":358,"psnr":401,"psnr_unit":-1,"wallclock":402,"splats":403,"summary_url":404,"detail_path":404},"M2 Tier1 再 gate v2 arm A (全 flag OFF、従来動作): Lego 12.5k full run repeat 2 (n=5, radix ballot default 上)",[5,17,23,24,399,400],"t1v2","n5-regate",36.21965408325195,"2m 6s",407000,"\u002Fruns\u002Ft1v2-12500-off-r2\u002F",{"id":65,"title":65,"subtitle":406,"date":9,"workspace":356,"tags":407,"verdict":358,"psnr":408,"psnr_unit":-1,"wallclock":409,"splats":410,"summary_url":411,"detail_path":411},"M2 Tier1 再 gate v2 arm A (全 flag OFF、従来動作): Lego 12.5k full run repeat 3 (n=5, radix ballot default 上)",[5,17,23,24,399,400],36.10247039794922,"2m 8s",412010,"\u002Fruns\u002Ft1v2-12500-off-r3\u002F",{"id":67,"title":67,"subtitle":413,"date":9,"workspace":356,"tags":414,"verdict":358,"psnr":415,"psnr_unit":-1,"wallclock":416,"splats":417,"summary_url":418,"detail_path":418},"M2 Tier1 再 gate v2 arm A (全 flag OFF、従来動作): Lego 12.5k full run repeat 4 (n=5, radix ballot default 上)",[5,17,23,24,399,400],36.236812591552734,"2m 7s",407105,"\u002Fruns\u002Ft1v2-12500-off-r4\u002F",{"id":69,"title":69,"subtitle":420,"date":9,"workspace":356,"tags":421,"verdict":358,"psnr":422,"psnr_unit":-1,"wallclock":402,"splats":423,"summary_url":424,"detail_path":424},"M2 Tier1 再 gate v2 arm A (全 flag OFF、従来動作): Lego 12.5k full run repeat 5 (n=5, radix ballot default 上)",[5,17,23,24,399,400],36.18133544921875,407846,"\u002Fruns\u002Ft1v2-12500-off-r5\u002F",{"id":64,"title":64,"subtitle":426,"date":9,"workspace":356,"tags":427,"verdict":358,"psnr":428,"psnr_unit":-1,"wallclock":429,"splats":430,"summary_url":431,"detail_path":431},"M2 Tier1 再 gate v2 arm B (全 flag ON、A1-A4 候補): Lego 12.5k full run repeat 2 (n=5, radix ballot default 上)",[5,17,23,24,399,400],36.15891647338867,"2m 5s",409553,"\u002Fruns\u002Ft1v2-12500-on-r2\u002F",{"id":66,"title":66,"subtitle":433,"date":9,"workspace":356,"tags":434,"verdict":358,"psnr":435,"psnr_unit":-1,"wallclock":429,"splats":436,"summary_url":437,"detail_path":437},"M2 Tier1 再 gate v2 arm B (全 flag ON、A1-A4 候補): Lego 12.5k full run repeat 3 (n=5, radix ballot default 上)",[5,17,23,24,399,400],36.19572448730469,406714,"\u002Fruns\u002Ft1v2-12500-on-r3\u002F",{"id":68,"title":68,"subtitle":439,"date":9,"workspace":356,"tags":440,"verdict":358,"psnr":441,"psnr_unit":-1,"wallclock":429,"splats":442,"summary_url":443,"detail_path":443},"M2 Tier1 再 gate v2 arm B (全 flag ON、A1-A4 候補): Lego 12.5k full run repeat 4 (n=5, radix ballot default 上)",[5,17,23,24,399,400],36.22098922729492,405444,"\u002Fruns\u002Ft1v2-12500-on-r4\u002F",{"id":70,"title":70,"subtitle":445,"date":9,"workspace":356,"tags":446,"verdict":358,"psnr":447,"psnr_unit":-1,"wallclock":429,"splats":448,"summary_url":449,"detail_path":449},"M2 Tier1 再 gate v2 arm B (全 flag ON、A1-A4 候補): Lego 12.5k full run repeat 5 (n=5, radix ballot default 上)",[5,17,23,24,399,400],36.196781158447266,407613,"\u002Fruns\u002Ft1v2-12500-on-r5\u002F",[451,479,505],{"id":75,"title":452,"date":9,"status":10,"polarity":453,"category":454,"axes":455,"tags":456,"task_code":469,"related_runs":470,"delta_psnr":473,"delta_wallclock":474,"rank":475,"verdict":476,"impact_summary":477,"detail_path":478},"M1\u002Fv2 — post-S2\u002FS3 per-kernel share 再計測: backward_raster 33.9%→40.1% (M4\u002FA7 後)、radix 26.4%→12.0% (M4 の絶対削減を反映) → M3 GO 判定は不変。C2 残差 4.54s は driver latency \u002F CB gap に分解不能 (計装欠如、file:line 提案のみ)","mixed","measurement",[14,15],[457,458,459,460,461,462,463,464,465,24,466,467,468],"m1","m7","seminar05-milestones","kernel-share","per-kernel-gpu-ms","backward-raster","m3-go-gate","residual-bubble","gputime","post-s2-s3","v2","post-m4-a7","2026-09-seminar05-milestones M1 (C1 per-kernel 再計測 + C2 残差 bubble 帰属)",[471,472],"c1-12500-off-prof","c1v2-12500-off-prof","n=1: 36.087 dB (self-eval val mean, 100 views)。p2-s3 の off\u002Fdepth2 n=3 mean (36.185 \u002F 36.202 dB) の guard 内。本 run は submission=per_kernel\u002Fforward_submission=per_stage という別 regime なので PSNR の直接比較は非対象 (kernel は bit-exact のため理論上は同水準になるはず、というだけの参考値)","train elapsed 205.78s (n=1)。**production baseline (depth2 default, 151.70s) や S3 off baseline (185.21s) と直接比較しない** — per_kernel\u002Fper_stage submission は CB 数が既定の 15〜27\u002Fiter → 15 CB\u002Fiter 超 (最終 15,001 cb from iter1 window 相当) に増え、busy% が 68.9% まで下がる**測定専用 regime**であり、本 run の wallclock 自体に意味はない。意味があるのは kernel 単体の gpu_ms とその share のみ","high","m3-go-backward-raster-33.9pct \u002F c2-instrumentation-gap-proposal-only","M3 (per-splat backward, brush PR #401 型) の GO\u002FNO-GO 閾値「backward_raster share ≥ 25%」を判定した。post-S2\u002FS3 kernel (hierarchical radix scan \u002F resident binning) を submission=per_kernel\u002Fforward_submission=per_stage\u002Fpipelining=off (per-kernel breakdown が測れる唯一の regime) で 1 run 実測した結果 \u003Cstrong>backward_raster (+project_back 統合) share 33.86%\u003C\u002Fstrong> で \u003Cstrong>閾値を大きく超過 → M3 は GO\u003C\u002Fstrong>。\u003Cstrong>share × 0.25 (brush の -25% 主張をそのまま適用したナイーブな期待値) = 8.47%\u003C\u002Fstrong>。ただしこれは本 run の GPU busy (68.9%、production の 91.3% とは別 regime) に対する share であり、production (depth2 default) の wallclock に対する期待 Δ は \u003Cstrong>33.86% × 91.3% × 0.25 ≈ 7.7%\u003C\u002Fstrong> とみるほうが妥当 (kernel 自体の gpu_ms は submission wrapping にほぼ不変という counter-session の事後検証はあるが、n=1 点推定であることと合わせて上限値として扱う)。\u003Cstrong>pre-S2\u002FS3 (counter-session) との比較では share 構成はほぼ不変\u003C\u002Fstrong> (backward_raster 33.6%→33.86%、radix 26.3%→26.40%、rasterize 11.9%→11.64%、adam 13.8%→12.68%、ssim 10.0%→10.95%) — S2 のhierarchical scan は「radix の CB\u002Fwait 数」を畳んだだけで kernel 自体の GPU 時間配分は変えていない、という roadmap の当初の想定を実測で裏づけた。C2 は M0 の並行会計訂正 (encode(B) 4.66→3.41s、残差 3.28→4.54s、nested label 二重計上の是正) を踏まえ、\u003Cstrong>残差 4.54s (depth2 sync-tax の 32%) を driver 投入 latency と CB 間 gap に分解しようとしたが、既存計装 (`gputime.rs`) は `kernelStartTime`\u002F`kernelEndTime` を objc bind しているのみで収集しておらず、per-CB の生 interval 列も外部に露出していない\u003C\u002Fstrong> ため\u003Cstrong>分解不能\u003C\u002Fstrong>と判明した。file:line 付きの追加案を §C2 に残す (実装はしていない、GPU run はこれ以上起動していない)。","\u002Ffindings\u002Fp3-kernel-share-post-s3\u002F",{"id":76,"title":480,"date":9,"status":10,"polarity":481,"category":11,"axes":482,"tags":483,"task_code":492,"related_runs":493,"delta_psnr":500,"delta_wallclock":501,"rank":475,"verdict":502,"impact_summary":503,"detail_path":504},"M4\u002FA5 radix_scatter simd_ballot 2段化 — 12.5k gate 採用、-14.9%、default flip","positive",[14,15],[484,485,486,487,488,489,24,23,490,491],"m4","a5","radix-scatter","simd-ballot","tile-bin","sort-parity","adopted","default-flip","2026-09-seminar05-milestones — M4 (A5 radix scatter simd_ballot)",[494,495,496,497,498,499],"m4-12500-off-r1","m4-12500-on-r1","m4-12500-off-r2","m4-12500-on-r2","m4-12500-off-r3","m4-12500-on-r3","12.5k 同一 session 交互 A\u002FB n=3: on **36.143 dB** (36.15227 \u002F 36.05730 \u002F 36.21933) vs off **36.121 dB** (36.19775 \u002F 36.01755 \u002F 36.14695) = **+0.022 dB**。task 指定 guard (on mean ≥ off mean − 0.05 dB) に **pass** (+0.022 > -0.05)。config header の絶対 guard (36.202 ± 0.1 dB、帯 [36.102, 36.302]) にも on\u002Foff とも **pass**。final splats は on 408,084 (408,408 \u002F 409,074 \u002F 406,770) \u002F off 409,363 (408,928 \u002F 411,049 \u002F 408,113) で on が -0.31% 少ない (既存 atomic 非決定性 chaos の範囲内、方向は一貫していない)。sort parity は `tile_offsets` で byte-exact だが、同じ parity report は `sorted_idx` の 0.217% (2105\u002F969838) に既知の tie-order 非決定性を記録しており、これが rasterize 順序ひいては atomic 加算順序に伝播するため end-to-end の PSNR は parity だけでは pin されない — したがって観測された小さい非方向性の PSNR 散らばりは想定内であり、M2 Tier1 gate (p3-tier1-bit-exact) が観測したような系統的分離は見られない","12.5k full run 同一 session 交互 A\u002FB n=3: **off 149.883s (σ 0.591%) → on 127.530s (σ 0.794%) = -14.914%**。3 pair 個別 Δ は -14.72% (r1) \u002F -15.15% (r2) \u002F -14.87% (r3) とレンジ 0.43 pt の高い一貫性。有意閾値 max(2σ_off,1%) = 1.182%、実測 Δ は**その 12.6 倍**。σ 非対称比 1.34× (off\u003Con) は汚染の典型署名とされる 3× を大きく下回り、on 側が GPU 律速でむしろ host jitter に鈍いという機構と整合する。replay bench (p3-radix-ballot 旧版、production default stack、n=3、GPU 専有未確認) の -12.9%〜-13.3% という directional 参考値とも整合し (12.5k full run のほうがやや大きい -14.9%、407k 固定 checkpoint 断面と 12.5k 平均 pair 数分布の違いで説明可能)、forward_submission=per_stage での radix 単独 gpu_ms -63.7% とも方向・大きさの両方で整合する","adopted-default-flip-radix-scatter-simd-ballot","tasklist A5 (radix は帯域 36% の latency 律速と算術証明済み) の実装検証。既存 O(lid) 逐次 threadgroup memory scan を simdgroup ballot 2 段化に置換し、BackendConfig `radix_scatter` の enum variant `simd_ballot` として追加、**2026-08-30 M4 GPU gate で default に採用**。sort parity は unit test 3 本 (境界サイズ 0\u002F1\u002F255\u002F256\u002F257\u002F1234\u002F100000、ties 多発 n=5000、3 種の radix_scan 実装すべて) と本番規模 (407,267 splats) `splat bench --parity` の両方で bit exact PASS。**12.5k Lego 同一 session 交互 A\u002FB n=3 (off-r1→on-r1→off-r2→on-r2→off-r3→on-r3、独立 10s load sampler で汚染監視、binary sha256 は series 前後で不変) で train elapsed 149.883 → 127.530s = -14.9%**、3 pair 個別 (-14.72% \u002F -15.15% \u002F -14.87%) が高い一貫性を示し、有意閾値 max(2σ_off,1%)=1.18% の **12.6 倍**という大差で通過。σ は off 0.59% \u002F on 0.79% (非対称比 1.34×、汚染の署名である 3× を大きく下回る)。**PSNR guard も pass** (on mean 36.143 dB ≥ off mean 36.121 dB − 0.05 dB、Δ +0.022 dB、両 arm とも config header の絶対 guard 36.202±0.1 dB にも収まる)。final splats は on 408,084 \u002F off 409,363 で -0.31% (既存 atomic 非決定性 chaos の範囲内)。session 開始時の ambient load 18.86〜22.8 (Spotlight `mediaanalysisd`\u002F`mds_stores` 再インデックス、reboot 後) という p2-s3 が破棄基準にした汚染クラスの中で実施したが、同一 session 交互設計と 3 pair の高い一貫性 (レンジ 0.43 pt) がこれを吸収したことを §0 で示す。**結論: 採用。`RadixScatterKind::default()` を `SimdBallot` に flip、`cargo test --workspace --release` 全 pass**。","\u002Ffindings\u002Fp3-radix-ballot\u002F",{"id":74,"title":506,"date":507,"status":10,"polarity":481,"category":11,"axes":508,"tags":509,"task_code":519,"related_runs":520,"delta_psnr":531,"delta_wallclock":532,"rank":475,"verdict":533,"impact_summary":534,"detail_path":535},"S3 iteration pipelining depth 2 — 12.5k -18.1% \u002F busy 78 → 91% (default flip)","2026-08-17",[14,15],[510,511,512,513,514,515,516,517,24,518],"1x-roadmap-v2","s3","iteration-pipelining","command-buffer","gpu-busy","sync-tax","double-buffering","scratch-generation","unified-memory","2026-08 1× 工程表 v2 — AC 復帰後 計測 queue #2' (S3 gate)",[521,522,523,524,525,526,527,528,529,530],"s3-smoke-1000-off","s3-smoke-1000-depth2","s3-12500-off-prof","s3-12500-depth2-prof","s3-12500-off-r1","s3-12500-off-r2","s3-12500-off-r3","s3-12500-depth2-r1","s3-12500-depth2-r2","s3-12500-depth2-r3","12.5k **同一 session 交互 A\u002FB** n=3 mean: depth2 **36.202 dB** (36.195 \u002F 36.179 \u002F 36.231) vs off **36.185 dB** (36.178 \u002F 36.192 \u002F 36.186) = **+0.016 dB** (guard 36.167 ± 0.1 の内側、n=3 mean 判定 — n=1 判定なし)。final splats は depth2 406,439 \u002F off 408,874 で **depth2 のほうが 0.6% 少ない** (前段の profile pair では逆に +0.6% で、方向が一致しない = 既存 atomic 非決定性の chaos 増幅の範囲)","12.5k full run **同一 session 交互 A\u002FB n=3 mean: 185.21 → 151.70s = -18.1%** (train elapsed)。process wallclock では **188.33 → 154.00s = -18.2%**。σ は off 3.33% \u002F depth2 1.18% なので有意閾値 max(2σ,1%) = 6.7%、実測 Δ は**その 2.7 倍**。同一 session の off arm は S2 gate 当日の S2 arm (train 184.61s \u002F process 187.65s) を **+0.3% で再現**しており、session の健全性が確認できている。参考: profile=true の 1 対 1 比較では 180.49 → 162.72s = -9.85% (計装自体が host 側 critical path に乗るため S3 の効果を過小評価する)","s3-adopted-default-flip-pipelining-depth2","1× 工程表 v2 が「S2 後の単独本命」に指定していた S3 を gate し、採用した。S2 までの施策が \u003Cstrong>CB の数\u003C\u002Fstrong>を減らすものだったのに対し、S3 は \u003Cstrong>CB の並び方\u003C\u002Fstrong>を変える — iteration N の loss\u002Fbackward CB (B\u003Csub>N\u003C\u002Fsub>) を commit したら wait せずに iteration N+1 の forward CB (F\u003Csub>N+1\u003C\u002Fsub>) を組んで commit し、\u003Ccode>wait(B\u003Csub>N\u003C\u002Fsub>)\u003C\u002Fcode> の後の host readback \u002F \u003Ccode>accumulate\u003C\u002Fcode> を F\u003Csub>N+1\u003C\u002Fsub> の GPU 実行の影に置く。\u003Cstrong>12.5k 同一 session 交互 A\u002FB n=3 で 185.21 → 151.70s = -18.1%\u003C\u002Fstrong> (閾値 max(2σ,1%) = 6.7% の 2.7 倍)。\u003Cstrong>GPU busy 77.5 → 91.3% \u002F sync-tax 3.244 → 1.136 ms\u002Fiter (-65%)\u003C\u002Fstrong> で counter session が置いた「busy 100% = 理論上限」への距離は 22.5 pt → 8.7 pt に縮んだ。\u003Cstrong>1k smoke では busy 65.8 → 72.0% にしか上がらず判定不能だった\u003C\u002Fstrong> — smoke の splat 数 6.8k では forward の GPU 影 (1.06 ms\u002Fiter) が image size 固定の host 仕事 (~1.7 ms\u002Fiter) を隠しきれないためで、これは \u003Cstrong>「pipelining の gate は smoke では代替できない」という harness 上の教訓\u003C\u002Fstrong>として残す。残 bubble の内訳も確定した: \u003Cstrong>refine tick の drain 6.04s (43%) &gt; encode(B) 4.66s (33%) &gt; 残差 3.28s (23%)\u003C\u002Fstrong> — 次の一手が roadmap の「即効ペア (refine capacity スコープバグ修正)」であることが実測で決まった。msplat 同日等価 gap \u003Cstrong>1.105× → 0.907×\u003C\u002Fstrong>、Phase 0 からの累計 766.07 → 154.0s = \u003Cstrong>-79.9%\u003C\u002Fstrong> (全て数学的同値の施策のみ)。","\u002Ffindings\u002Fp2-s3-iteration-pipelining\u002F",1790227327663]