[{"data":1,"prerenderedAt":1020},["ShallowReactive",2],{"finding:p3-final-stack-v2":3,"finding-runs:p3-final-stack-v2":798,"finding-related:p3-final-stack-v2":872},{"meta":4,"impact":60,"sections":66},{"id":5,"title":6,"subtitle":7,"eyebrow":8,"date":9,"status":10,"category":11,"polarity":12,"axes":13,"tags":16,"task_code":30,"commit":31,"branch":32,"config_paths":33,"related_runs":43,"related_findings":53},"p3-final-stack-v2","M7 v2 — 最終スタック独立再計測 (post S4b) は session 汚染で +6.4%、paired control 122.77s を維持。多 scene (ficus\u002Fmaterials\u002Fdrums) で退行なし確認","p3-final-stack.toml (M7、124.39s) 以降に S4b (ssim_reduce=gpu) が default flip されたため、Part 1 で同じ 12.5k n=3 手順を再実施した。\u003Cstrong>as-measured mean は 130.657s (σ1.727%)\u003C\u002Fstrong> だが、同日の paired control 2 本 (S4b gate on-arm 122.768s、p3-refine-nondrain off-arm 122.6467s、相互 0.13% 一致) と比べて +6.4〜6.5% 遅く、load sampler ログ・ms\u002Fiter trace の iter3000-9000 区間での一貫した elevation・\u003Ccode>ps aux\u003C\u002Fcode> で捕捉した実際の同時実行プロセス (Finder 147%CPU 等) という 3 系統の証拠が session 汚染を裏づけた。\u003Cstrong>milestones.md の「現在地」はこの 130.657s では上書きせず、S4b paired 値 122.768s を維持する\u003C\u002Fstrong> — 新事実は「今のスタックは前回 M7 より遅くなった」ではなく「単発の unpaired n=3 は無関係な同時プロセスに弱い」という計測論の知見。msplat 等価 gap は control 値ベースで \u003Cstrong>0.745×\u003C\u002Fstrong> (旧 0.755×)、throughput \u003Cstrong>0.916×\u003C\u002Fstrong> (旧 0.926×) にわずかに改善。Part 2 では 2026-08-30 に採用された 3 施策 (M4\u002FA7\u002FS4b、いずれも Lego 12.5k gate のみが根拠) を ficus (227k splats) \u002F materials (355k splats) \u002F drums (998k splats、Lego の 2.5 倍) で breakage screen し、\u003Cstrong>3 scene とも ΔPSNR が a-10 の noise floor (σ±0.32dB) を大きく下回り退行なし\u003C\u002Fstrong>を確認。drums は load がほぼクリーンで 5.72× の高速化を実測 (ficus\u002Fmaterials は load 汚染下のため方向感のみ)。","2026-09 第 5 回ゼミ milestones · M7 v2 · 最終スタック再計測 (session 汚染) + 多 scene breakage screen","2026-08-31","stable","experiment","neutral",[14,15],1,3,[17,18,19,20,21,22,23,24,25,26,27,28,29],"m7","m7v2","seminar05-milestones","final-stack","msplat-parity","pareto-v3b","multi-scene","regression-check","measurement-methodology","session-contamination","ficus","materials","drums","2026-09-seminar05-milestones M7 v2 (最終スタック独立再計測の再実施 + 多 scene 退行チェック)","9bb4ea563104e3c8de391ad59b7bf556fad0d373","main",[34,35,36,37,38,39,40,41,42],"splat\u002Fconfigs\u002F2026-08-30-finalv2-12500-r1.toml","splat\u002Fconfigs\u002F2026-08-30-finalv2-12500-r2.toml","splat\u002Fconfigs\u002F2026-08-30-finalv2-12500-r3.toml","splat\u002Fconfigs\u002F2026-08-30-multiscene-ficus-30k.toml","splat\u002Fconfigs\u002F2026-08-30-multiscene-materials-30k.toml","splat\u002Fconfigs\u002F2026-08-30-multiscene-drums-30k.toml","splat\u002Fconfigs\u002F2026-08-31-multiscene-ficus-30k-q.toml","splat\u002Fconfigs\u002F2026-08-31-multiscene-materials-30k-q.toml","splat\u002Fconfigs\u002F2026-08-31-multiscene-ficus-30k-q2.toml",[44,45,46,47,48,49,50,51,52],"finalv2-12500-r1","finalv2-12500-r2","finalv2-12500-r3","multiscene-ficus-30k","multiscene-materials-30k","multiscene-drums-30k","multiscene-ficus-30k-q","multiscene-materials-30k-q","multiscene-ficus-30k-q2",[54,55,56,57,58,59],"p3-final-stack","p3-s4b-ssim-reduce","p3-refine-nondrain","p1-axis1-phase-g-pareto-landscape","a-10-variance-baseline","p2-msplat-parity-final",{"summary":61,"rank":62,"verdict":63,"delta_psnr":64,"delta_wallclock":65},"2026-09-seminar05-milestones M7 のフォローアップを実施した。**Part 1 (12.5k n=3 再計測)**: `2026-08-30-finalv2-12500-r{1,2,3}.toml` (final-12500-r{1,2,3}.toml の複製、backend flag 無指定で S4b flip 後の default = ssim_reduce=Gpu を含む全採用施策込み) を実行。各 run の `[backend] BackendConfig {...}` ログ行で `ssim_reduce: Gpu, radix_scatter: SimdBallot, refine_scratch_persist: true, refine_direct_write: true` を確認、AC 電源・pgrep 空・binary sha256\u002Fgit rev 不変 (`c804b349...`\u002F`9bb4ea5`) を series 前後で確認。**as-measured mean は 130.657s (σ1.727%)** — S4b flip で速くなるはずが M7 (124.39s) より遅いという逆方向の結果になった。追加調査で、(1) 10s 間隔 load sampler が r1 window 内で 5.77 まで load1 上昇 (iter6000-7000 相当のタイミング)、r2 window 内でも 4.22 まで上昇、(2) old M7 (r2-r4) と new (r1-r3) の 1000-iter segment ごとの ms\u002Fiter を突き合わせると iter0-3000 は new が -4〜-9% 速い (S4b の効果と整合) のに iter3000-12500 は new が一貫して +1.8〜+12.0% 遅い、(3) 実行後の `ps aux` で Finder (147%CPU)・別プロジェクト (otksynth) の Rust バイナリ・音声処理プロセスの実存を確認、という 3 系統の証拠が「同時実行された無関係なユーザープロセスによる session 汚染」を裏づけた。既存の汚染判定規約 (`p3-tier1-bit-exact.toml` §5「load 証拠 AND 自 arm 内 3σ 超」) はこの事例 (3 run 全体が相関して底上げされ、単一の outlier が無い) を検出できない構造的な穴であることも判明した (§2 に規約拡張案を記載)。**同日の paired control 2 本 (S4b gate on-arm 122.768s、`p3-refine-nondrain` off-arm 122.6467s — 後者は refine_gpu_snapshot という no-op field 追加のみの差で本 session の HEAD と事実上同一コード) が相互に 0.13% で一致**しており、この 2 点を「現在の真値」の推定として採用し、milestones.md の「現在地」は上書きしない。brush cross-eval q8 PSNR (final.ply への `splat eval` 実行、load 非依存) は 3 run 平均 **36.289dB** (M7 の 36.249dB から +0.04dB、ノイズ帯)。avg splats (trapezoid 積分による自前算出) は 321,011 (M7 の 321,637 と 0.2% 差で一致、算出法の再現性を裏づけ)。msplat 等価 gap は control 値 (122.768s) ベースで **0.745×** (旧 0.755×)、throughput は **0.916×** (旧 0.926×) とわずかに改善。Pareto v3b (`docs\u002Ffigures\u002Fpareto-v3b-msplat-lego-final-stack-v2.png`) は 12.5k 点の x 座標を control 値、y 座標を finalv2 の brush cross-eval 実測に更新 (両者は異なる run 由来なので script docstring に明記)。**Part 2 (多 scene breakage screen)**: 2026-08-30 に採用された M4 (radix simd_ballot)・A7 (refine 3-pass 削減)・S4b (ssim_reduce=gpu) の 3 施策は全て Lego 12.5k gate のみを根拠にしており、他 scene での検証が無かった。`p1-axis1-phase-g-pareto-landscape.toml` §2 (G.3-alone 30k recipe、2026-05-25、[trainer]\u002F[refine]\u002F[adam] 節が現行 config と完全一致することを diff で確認済み) を baseline に、ficus (227k splats)・materials (355k splats)・drums (998k splats、Lego 407k の 2.5 倍で 3 施策が splat 数 non-uniform に依存する経路を初めてテストする scene) の 3 scene を n=1 で再計測した。**ΔPSNR は ficus -0.020dB \u002F materials -0.027dB \u002F drums -0.010dB で、いずれも `a-10-variance-baseline` の σ±0.32dB (Lego 30k での run-to-run noise floor) の 1\u002F10 以下** — 3 scene とも退行なし。M4\u002FA7\u002FS4b はいずれも理論上 PSNR に影響しない施策 (M4: sort parity bit-exact、A7: 書き込みロジック不変、S4b: gradient 非変更) のため、この結果は「今回の 3 施策の改善効果」ではなく「壊れていないことの確認」として設計通り。Δsplats も ficus +0.32% \u002F materials +1.50% \u002F drums -0.31% と小さい。wallclock は ficus (load 9.6-32.6 で終始汚染)・materials (load 7-27 で終始汚染) は方向感のみ (旧比 ≥3.7×\u002F≥4.4× 高速化) だが、**drums は iter 27000 まで load 0.8-5.5 とほぼクリーンで 3936s→687.85s = 5.72× 高速化を実測**、Lego の 2.5 倍規模の scene でも大幅改善が維持されることを確認した。","high","measurement-methodology-finding-controls-retained-multiscene-no-regression","Part1: finalv2 self-eval n=3 mean **36.257dB** (σ0.10%)、brush cross-eval q8 n=3 mean **36.289dB** (σ0.11%、M7比+0.04dB)。Part2 (§6、load汚染下 n=1): ficus -0.020dB \u002F materials -0.027dB \u002F drums -0.010dB (いずれも a-10 σ±0.32dB の1\u002F10以下、退行なし)。PSNR は load非依存の量なので §14 の静穏再実行でも §6 の値 (ficus 34.261dB \u002F materials 29.998dB) から変更しない。§14 の追加観測: materials は baseline\u002F§6\u002F静穏の3 runでPSNR range **0.028dB** (安定)。ficus は §6\u002Fq1\u002Fq2 の3 runで range **1.443dB** (34.261\u002F32.836\u002F34.279、a-10 のLego range 0.885dBの1.6倍) — config\u002FRNG起因は排除済み、a-10のGPU非決定性の一事例と推測されるが、実用上の帰結は「a-10のσ±0.32dBをficusの退行判定に転用できない」というgate閾値の限界","Part1: as-measured 12.5k n=3 mean **130.657s** (σ1.727%、session汚染のためmilestones非採用)。paired control (S4b on-arm 122.768s \u002F rnd off-arm 122.6467s、相互0.13%一致) を現在値として維持。msplat等価gap **0.745×** (旧0.755×)、throughput **0.916×** (旧0.926×)。Part2 (§6、load汚染下): drums (load概ねクリーン) 3936s→687.85s=**5.72×**。ficus\u002Fmaterials は load汚染下で方向感のみ (≥3.7×\u002F≥4.4×)。§14 静穏再実行 (in-runサンプラーで確認): ficus 349.63s→**254-256s** (-27.3%〜-26.7%、q1\u002Fq2で再現)、materials 421.90s→**319.54s** (-24.3%)",[67,70,73,100,102,146,151,153,226,229,232,235,239,243,245,342,344,370,372,386,388,391,440,443,445,451,453,456,483,515,518,520,523,549,552,554,557,615,652,655,657,660,689,715,718,720,723,756,759,761,764,789,792],{"type":68,"text":69},"lead","p3-final-stack.toml (M7、124.39s) の直後に S4b (ssim_reduce=gpu) が default flip されたため、milestones.md の「現在地」を最新化するには同じ独立 n=3 手順を再実施する必要があった。本 finding は Part 1 (その再実施) と Part 2 (2026-08-30 に採用された M4\u002FA7\u002FS4b の 3 施策を Lego 以外の scene で breakage screen) をまとめる。Part 1 は「速度がさらに改善した」という当初の想定に反し、「同じ session 内の無関係な CPU 負荷が計測を汚染しうる」という計測論の finding になった — 詳細な証拠の連鎖を §1\u002F§2 に記す。",{"type":71,"text":72},"heading","0. 計測環境 — AC 電源 \u002F GPU 専有 \u002F pgrep 空確認",{"type":74,"items":75},"kv",[76,79,82,85,88,91,94,97],{"key":77,"value":78},"電源 \u002F 機体","AC 接続 (`pmset -g batt` で series 開始前・完了後とも `AC Power` を確認)、M4 Max。GPU 権は main から付与済み、他 agent は worktree で実装のみ (GPU 不使用の前提)",{"key":80,"value":81},"binary \u002F rev","release binary sha256 `c804b349223ffc68e9e1101d79c5ea9f058dfa8d34620504b66aa0a3eb10aa13`、series 前後で一致確認。git rev `9bb4ea563104e3c8de391ad59b7bf556fad0d373` で series 全体を通じて不変 (`cargo build --release` を作業開始前に実施、13.6s で完了 = 既存 binary は既に HEAD 相当だったため実質差分なし)",{"key":83,"value":84},"実行方式 (Part 1)","既存 `splat\u002Fscripts\u002Ffinal-stack-n3.sh` を流用。**前回 M7 の再実施時に script 自体の引数仕様上の罠を発見**: `strip_prefix` は先頭の `splat\u002F` のみを除去するため、`config_prefix` は `configs\u002F2026-08-30-finalv2-12500` のように `configs\u002F` を含めて渡す必要がある (`2026-08-30-finalv2-12500` とだけ渡すと `splat\u002F2026-08-30-finalv2-12500-r1.toml` を探しに行き rc≠0 で即 PARTIAL 終了する) — advisor レビューで実行前に検出、正しい引数で実行して回避した",{"key":86,"value":87},"実行方式 (Part 2)","n3 script は使わず、1 scene = 1 config = 1 run を `nohup .\u002Ftarget\u002Frelease\u002Fsplat train --config \u003Ccfg> > \u003Clog> 2>&1 & disown` で直列発注。完了検出は `ps aux | awk '$0 ~ \u002Frelease\\\u002Fsplat train\u002F && $0 !~ \u002Fawk\u002F'` (自己マッチ回避形)。**当初 `pgrep -f \"multiscene-materials\"` で完了ポーリングした際、ポーリングコマンド自身の argv (`tail ... multiscene-materials-30k.log`) に同じ文字列が含まれるため自己マッチし、実際には完了していたのにポーリングループが終了判定できず 10 分の tool timeout を1回消費した** — 次 session はプロセス名 (`release\u002Fsplat train`) でマッチし `awk` 自身を除外する形を使うこと",{"key":89,"value":90},"run 後 pgrep \u002F load 確認","Part1 series 完了後 `pgrep -fl \"target\u002Frelease\u002Fsplat\"` は空、binary sha256\u002Fgit rev 不変、AC Power 維持。Part2 各 run 完了後も同様 (drums 完了後の確認込み)",{"key":92,"value":93},"Part2 の run_dir 実体パス (訂正)","Part 2 の 3 run は cwd=`\u002FUsers\u002Fotkrickey\u002Fdev\u002Fmatsudalab` (splat\u002F 直下ではない) から起動したため、config の `run_dir = \"splat\u002Fruns\u002Fmultiscene-*\"` は `splat\u002Fruns\u002F` ではなく repo root 直下の `runs\u002Fmultiscene-{ficus,materials,drums}-30k\u002F` に書かれた (`.gitignore` 対象で追跡外、Part1 の `splat\u002Fruns\u002Ffinalv2-*` とはディレクトリが異なる点に注意)",{"key":95,"value":96},"AC→Battery 切替イベント (00:3x、coordinator 通知) との照合","作業中に「00:3x に AC→Battery、1〜2分後 AC 復帰」という通知を受けた。各 run の `final.ply` mtime を確認したところ ficus 00:00:36 \u002F materials 00:09:57 \u002F drums 00:25:34 (JST) で、通知を受けた時点 (00:31 台) より前に Part2 の全 GPU run が完了しており、**いずれの run もこの Battery 区間と重なっていない** (`pmset -g batt` は通知確認時点で `AC Power` 100%充電済みを表示)。Part1 series は 23:42-23:51 台で更に早く、同様に無関係。よって Battery 汚染に該当する run は無く、再実行の必要なし",{"key":98,"value":99},"各 run の pre\u002Fpost load1 (Part1)","r1: pre 1.71 → post 3.20 (window内 load sampler ピーク 5.77、iter6000-7000相当)。r2: pre 2.62 → post 3.08 (window内ピーク 4.22)。r3: pre 2.17 → post 2.38 (window内 2.1-3.0 で最もクリーン、詳細は §1\u002F§2)",{"type":71,"text":101},"1. Part 1 — 12.5k full run 独立再計測 (as-measured)",{"type":103,"columns":104,"align":112,"rows":115,"caption":145},"table",[105,106,107,108,109,110,111],"run","config","train elapsed (s)","self-eval PSNR (dB)","brush cross-eval q8 (dB)","final splats","avg splats (trapz)",[113,113,114,114,114,114,114],"left","right",[116,123,130,137],[117,44,118,119,120,121,122],"r1","132.37","36.282","36.317","406,773","320,936.5",[124,45,125,126,127,128,129],"r2","131.50","36.274","36.306","406,990","321,320.6",[131,46,132,133,134,135,136],"r3","128.10","36.214","36.244","405,946","320,776.5",[138,139,140,141,142,143,144],"**mean (n=3)**","—","**130.657** (σ1.727%)","**36.257** (σ0.10%)","**36.289** (σ0.11%)","406,570","321,011.2","3 run とも `[backend] BackendConfig {...}` ログで `ssim_reduce: Gpu, radix_scatter: SimdBallot, refine_scratch_persist: true, refine_direct_write: true` を確認済み (S4b flip 後の default が正しく効いている)。self-eval PSNR は training log の `mean val: PSNR` (100 views)、brush cross-eval q8 は `splat eval --convention brush --quantize-8bit` を各 run の `final.ply` に実行した実測 (load 非依存)。avg splats は 1000-iter checkpoint の trapezoid 積分、M7 の 321,637 と 0.2% 差で一致し算出法の再現性を裏づける。",{"type":147,"label":148,"variant":149,"text":150},"callout","n=3 のいずれも自 arm 内 3σ を超えない — 既存の汚染判定規約では『クリーン』判定になる","warning","sample σ = 2.257s (1.727% of mean)。個別偏差: r1 +1.71s (0.76σ)、r2 +0.84s (0.37σ)、r3 -2.56s (1.13σ) — いずれも `p3-tier1-bit-exact.toml` §5 の事前登録条件 (load 証拠 AND 自 arm内 3σ 超) の後半を満たさないため、**この規約に従う限り 3 run とも棄却\u002F再試行の対象にならない**。しかし §2 で示すとおり、3 run すべてが同じ iter3000-9000 区間で一貫して減速しており (=相関した底上げ)、単一 run の外れ値を検出する設計のこの規約は「session 全体が相関して汚染される」パターンを検出できない構造的な穴を持つ。",{"type":71,"text":152},"2. なぜ 130.657s を milestones.md の headline に採用しないか — 3 系統の証拠",{"type":103,"columns":154,"align":159,"rows":160,"caption":225},[155,156,157,158],"iter 区間 (1000-iter segment)","old (M7 r2-r4 mean, ms\u002Fiter)","new (finalv2 r1-r3 mean, ms\u002Fiter)","Δ",[113,114,114,114],[161,166,171,176,181,186,191,196,201,206,211,216,220],[162,163,164,165],"0-1000","3.41","3.15","-7.4% (S4b の効果と整合、速い)",[167,168,169,170],"1000-2000","4.74","4.30","-9.2% (同上)",[172,173,174,175],"2000-3000","8.35","8.02","-4.0% (同上)",[177,178,179,180],"3000-4000","9.93","10.83","**+9.0%**",[182,183,184,185],"4000-5000","10.63","11.39","**+7.1%**",[187,188,189,190],"5000-6000","11.07","12.40","**+12.0% (最大)**",[192,193,194,195],"6000-7000","11.47","12.37","**+7.8%**",[197,198,199,200],"7000-8000","11.56","12.11","+4.8%",[202,203,204,205],"8000-9000","11.71","12.34","+5.3%",[207,208,209,210],"9000-10000","11.76","12.90","**+9.7%**",[212,213,214,215],"10000-11000","11.87","12.26","+3.3%",[217,218,219,200],"11000-12000","11.88","12.45",[221,222,223,224],"12000-12500","11.95","12.17","+1.8%","old (M7 r2-r4) と new (finalv2 r1-r3) を同じ 1000-iter checkpoint で突き合わせた segment cost。**iter0-3000 は new が一貫して速い (S4b の ssim host 仕事削減が効いている、期待どおりの符号)。iter3000 以降は new が一貫して遅く、iter5000-6000 でピーク (+12.0%)、その後 iter12500 まで +1.8〜+9.7% の高止まりが続く** — これは 3 run 全てに共通するパターンであり、単一 run の transient ではない。",{"type":147,"label":227,"variant":149,"text":228},"load sampler ログとの相関 — 減速が始まる iter 区間と load1 スパイクのタイミングが一致","10s 間隔 load sampler (`runs-logs\u002Ffinalv2-12500-loadsamples.log`) を r1\u002Fr2 window の epoch timestamp と突き合わせると: r1 window (pre 1788100979.56 → post 1788101115.01) 内で load1 が 1788101039.64 に **5.77** まで上昇 (window 開始から +59.4s、r1 の iter6000 (elapsed 51.36s) 〜 iter7000 (elapsed 64.71s) の区間に相当)。r2 window (pre 1788101165.15 → post 1788101299.60) 内でも 1788101239.96 に **4.22** まで上昇 (window 開始から +74.8s、r2 の iter7000 (61.00s) 〜 iter8000 (73.33s) 付近)。r3 window はサンプル値が終始 2.1〜3.0 で最も低く、実測 wallclock も 3 run 中最速 (128.10s) — load スパイクのタイミングと ms\u002Fiter の減速タイミング・run 間の速度順位がいずれも整合する。",{"type":147,"label":230,"variant":149,"text":231},"`ps aux` で捕捉した実際の同時実行プロセス — Finder 147%CPU、無関係な別プロジェクトのバイナリ、音声処理","Part 2 (ficus) 実行直後の `uptime` で load average が 9.96→16.88→32.58 まで跳ね上がったため `ps aux | sort -rk3` で原因を確認したところ、\u003Ccode>\u002FSystem\u002FLibrary\u002FCoreServices\u002FFinder.app\u003C\u002Fcode> が **147.3%CPU**、ユーザーの別プロジェクト (\u003Ccode>\u002FUsers\u002Fotkrickey\u002Fdev\u002Fotksynth\u002Ftarget\u002Fdebug\u002Fdeps\u002Fanalyze_queue-*\u003C\u002Fcode>、matsudalab とは無関係な Rust バイナリ) が **35.7%CPU**、音声処理プロセス (\u003Ccode>dj-lab\u003C\u002Fcode>) が **24.8〜49.9%CPU** で稼働しているのを直接確認した。これらは本タスクの一部ではなく、ユーザー自身が同じ機体上で並行して行っていた無関係な作業であり、Part 1 series (23:42〜23:51) の後半・Part 2 の ficus\u002Fmaterials (23:54〜00:13) にかけて発生・持続していたと推定される (Part 1 の load スパイクのタイミングと符合)。GPU 権の取り決め (「他 agent は GPU を使わない」) は agent 間の話であり、ユーザー自身の CPU 作業は対象外だった — Apple Silicon の unified memory 帯域は CPU\u002FGPU で共有されるため、CPU 側の重い並行負荷が GPU バウンドな学習の host-side critical path (host_schedule=forward_shadow 等) を遅らせうる。",{"type":147,"label":233,"variant":149,"text":234},"残る疑問 — r3 は load がクリーンでも control より +4.3% 遅い、load スパイクは『ばらつき』は説明するが『底上げ』の全量は説明しない","advisor レビューでの指摘: r3 (128.10s) の window 内 load サンプルは終始 2.1〜3.0 (最大 3.00) で、M7 が『クリーン』と判定した r2-r4 の window (0.93〜3.46) と同水準であるにもかかわらず、control (122.768s) より **+4.3%**・M7 の r2 (123.34s) より **+3.9%** 遅い。segment 単位でも iter11000-12000 (12.51ms\u002Fiter、M7 3-run 平均 11.88ms\u002Fiter 比 **+5.3%**) に load スパイクの証拠なしに減速が見える。**したがって load スパイクは r1>r2>r3 という 3 run 間の『ばらつき』の順位は説明するが、3 run 全てに共通する ~4〜6% の『底上げ』の全量までは説明できていない**。念のため 2 点を確認した: (1) `git diff --stat 2cb044bde530a425b89c3e90d2532d0e37673021 9bb4ea5 -- splat\u002Fcrates\u002F` は rasterize.rs \u002F ssim.rs \u002F tile_bin.rs \u002F config.rs \u002F refine.rs の 5 file に diff を持つが、内容を確認すると**全て gate 完了後の verdict 追記という doc comment のみ** (raw struct 初期値・実行ロジックは無変更、`git diff` は `git log` と異なりマージの履歴簡約を経ないため、この空でない diff の中身が doc-only であることを確認できて初めて『事実上同一コード』の主張が成立する)。(2) `diff splat\u002Fconfigs\u002F2026-08-30-rnd-12500-off-r1.toml splat\u002Fconfigs\u002F2026-08-30-finalv2-12500-r1.toml` は `[backend] refine_gpu_snapshot = false` の明示 vs 無指定 (どちらも解決値は `false`) のみで、他の `[backend]` field 差は無い。**この 2 点はいずれもクリーンで、control が本 session の HEAD と機能的に同一コードであることを裏づける** — が、これは「なぜ r3 でも+4%遅いか」を説明しない。残る有力候補は \u003Cstrong>thermal\u002FDVFS drift\u003C\u002Fstrong> (本機は series 開始時点で既に 11h+ 連続稼働、当日を通じて M0〜M8 の多数の GPU gate を実行済み) だが、`sudo powermetrics` が使えない環境のため確認できていない。\u003Cstrong>結論を『130.657s は完全に session 汚染で説明される』から『load スパイクは run 間のばらつきを説明するが、3 run 共通の残差 ~4〜6% は未解明で thermal\u002FDVFS drift が有力候補 (未検証)』に修正する\u003C\u002Fstrong> — この修正は milestones.md の headline (paired control 122.77s を採用) には影響しない、unpaired series が paired control に劣後するという結論はどちらの読み方でも同じだからである。",{"type":147,"label":236,"variant":237,"text":238},"paired control 2 本 — 同日・実質同一コードで 122.65s\u002F122.77s が相互 0.13% で一致","success","同日 22:25 の S4b gate は on-arm (ssim_reduce=gpu、12.5k n=3 交互 A\u002FB) で **122.768s (σ0.864%)** を記録済み。さらに 23:30 の `p3-refine-nondrain` gate は off-arm (refine_gpu_snapshot=false、すなわち現行 default と同一の経路) で **122.6467s (σ0.330%)** を記録しており、このコード状態は本 session の HEAD (9bb4ea5) と \u003Cstrong>refine_gpu_snapshot という no-op field の追加のみが差\u003C\u002Fstrong> (default false で経路変更なし、finding: p3-refine-nondrain 参照) で事実上同一である。この 2 点は独立の A\u002FB gate の一方の arm として \u003Cstrong>alternating 実行 (session 内 drift を打ち消す設計)\u003C\u002Fstrong> で得られており、相互に **0.13%** で一致する — 単発の unpaired n=3 である本 finding の 130.657s よりもはるかに信頼できる「現在の真値」の推定である。\u003Cstrong>milestones.md の「現在地」表はこの 122.768s (S4b の paired 値) を維持し、130.657s では上書きしない。\u003C\u002Fstrong>",{"type":147,"label":240,"variant":241,"text":242},"既存の汚染判定規約への拡張提案 (advisor 指摘、本 finding の house convention への貢献)","info","`p3-tier1-bit-exact.toml` §5 が定めた事前登録条件 (load 証拠 AND 自 arm 内 3σ 超) は「1 run だけが外れる」パターン (M7 の r1 のように) を検出するために設計されており、本 finding のように \u003Cstrong>session 全体が相関して底上げされ、3 run のいずれも自 arm 内で 3σ を超えない\u003C\u002Fstrong> パターンには構造的に無力である。\u003Cstrong>拡張案\u003C\u002Fstrong>: 「unpaired series の mean が、同一コードでの同日 paired control (存在する場合) から 2% 以上乖離している場合、intra-arm σ に関わらず session 汚染を疑い、paired control 側を優先する」という規則を house convention に追加することを提案する。今回のケース (mean 130.657s vs control 122.65-122.77s、乖離 6.4-6.5%) はこの閾値を大きく超えており、拡張規則があれば ms\u002Fiter trace の詳細分析を待たずに一次判定できた。",{"type":71,"text":244},"3. 累計 ablation 表 — S4b 行の追加 (paired Δ) + v2 独立再計測 (session 汚染、参考値)",{"type":103,"columns":246,"align":253,"rows":254,"caption":341},[247,248,249,250,251,252],"段階","施策","Lego 12.5k train elapsed (s)","PSNR (dB)","Δ (対前段)","msplat 比較値",[113,113,114,114,114,114],[255,261,267,273,280,287,294,301,308,314,320,327,334],[256,257,258,259,139,260],"Phase 0","baseline (規約 v2 適用後)","766.07","36.216","4.51×",[262,263,264,265,266,139],"+ C0","resident binning arena + radix pass skip 16→11","395.59","36.183","-48.4%",[268,269,270,271,272,139],"+ LC","backward last_contributor range","336.33","36.191","-15.0%",[274,275,276,277,278,279],"+ S1","pipeline 全域 resident 化 (Tier A\u002FB\u002FC)","261.55","36.148","-22.2%","1.56×",[281,282,283,284,285,286],"+ W1","warp sparse skip","241.41","36.201","-7.7%","1.44×",[288,289,290,291,292,293],"+ W2","chained submission (adam+loss chain 統合)","219.51","36.170","-9.1%","1.31×",[295,296,297,298,299,300],"+ S2","forward 1 CB 化 + hierarchical GPU scan","187.65","36.167","-9.9%","1.105×",[302,303,304,305,306,307],"+ S3","iteration pipelining depth 2","151.70","36.202","-18.1%","0.907× (process wallclock 154.00s 基準、train elapsed 列とは分子が異なる点に注意)",[309,310,311,312,313,139],"+ radix simd_ballot (M4)","radix scatter simdgroup ballot 2 段化","127.53","36.143","-14.9%",[315,316,317,318,319,139],"+ refine 3-pass 削減 (A7)","refine scratch 永続化 + compact 直書き","124.81","36.241","-2.15%",[321,322,323,324,325,326],"+ 最終スタック独立再計測 (M7)","M4+A7 済みスタックの独立 n=3 gate","124.39","36.219","-0.33% (ノイズ帯)","0.755×",[328,329,330,331,332,333],"**+ ssim_reduce=gpu (S4b)**","read_mean_ssim を GPU 1-dispatch reduction 化","**122.77** (gate on-arm, paired)","36.179 (gate self-eval)","**-1.4347%** (paired Δ、off 124.555→on 122.768)","**0.745×** (§4)",[335,336,337,338,339,340],"最終スタック v2 独立再計測 (M7v2、参考値)","S4b 込みスタックの独立 n=3、**session 汚染あり**","130.657 (as-measured、σ1.727%)","36.257 (self-eval) \u002F 36.289 (brush cross-eval)","— (§1\u002F§2 の理由によりΔ算出せず、headlineに不採用)","0.793× (as-measured、非公式値)","S4b 行は `p3-s4b-ssim-reduce.toml` の paired A\u002FB (12.5k n=3 交互、off mean 124.555s → on mean 122.768s) の Δ をそのまま転記 — 「M7 124.39s → S4b 122.77s」という cross-session の引き算は前回 M7 finding 自身が明記したとおり reproducibility noise であり effect size ではないため、Δ 列には使わない (advisor 指摘)。v2 独立再計測行は §1\u002F§2 の session 汚染により Δ 列を意図的に空欄・参考値扱いとし、累計 ablation の headline (Phase0 → 現在) は S4b paired 値 122.77s を用いる: Phase0 (766.07s) 比 **-83.98%**。",{"type":71,"text":343},"4. msplat 等価再比較 — control 値ベースで再計算 (headline) + as-measured 値 (参考)",{"type":103,"columns":345,"align":350,"rows":351,"caption":369},[346,347,348,349],"断面","M7 (2026-08-30、S4b前)","M7v2 headline (S4b paired control 122.768s)","M7v2 as-measured (session汚染、参考)",[113,114,114,114],[352,356,359,364],[353,326,354,355],"wallclock gap (block1 n=2 分母 164.69s)","**0.745×**","0.793× (非公式値)",[357,139,358,139],"同上、rnd off-arm 122.6467s でも算出","0.745× (独立 control で再現)",[360,361,362,363],"per-splat·iter throughput (本実装\u002Fmsplat)","0.926× (msplat比7.4%優位)","**0.916×** (msplat比8.4%優位)","0.975× (非公式値)",[365,366,367,368],"brush convention PSNR (finalv2 final.ply 実測)","+2.006dB (旧final.ply)","brush cross-eval q8 mean **36.289dB** (msplat保守値34.243比 **+2.046dB**)","同左 (load非依存のためload汚染の影響を受けない)","throughput は avg splats を新 3 run の trapezoid 積分で自前算出 (321,011、M7 の 321,637 と 0.2% 差で一致)。\u003Cstrong>headline 0.916× は Pareto v3b の 12.5k 点と同じ『異なる run の混合』であることを明記する\u003C\u002Fstrong>: wallclock (122.768s) は S4b on-arm の paired control、avg splats (321,011) は session 汚染下の finalv2 series からの算出 — ただし splat 数は load 汚染の影響を受けない量 (M7 の 321,637 との 0.2% 一致がこれを裏づける) なので、この混合は妥当と判断した (Pareto の x\u002Fy 混合を script docstring に明記したのと同じ理由で、ここでも黙らせず明示する)。\u003Cstrong>M7 が明記した「msplat 側 avg splats (~165,000) は借用値で ±8.0% 未満の誤差なら本実装優位が成立」という留保は本 finding でもそのまま引き継ぐ\u003C\u002Fstrong> — 本 session では msplat 側を再導出していないため確定させられない (numerator の再現性を確認しただけで、denominator の不確かさは変わらない)。brush cross-eval PSNR は PLY への静的評価なので load 汚染の影響を受けず、as-measured\u002Fheadline の両方で同じ値を使う。",{"type":71,"text":371},"5. Pareto v3b",{"type":74,"items":373},[374,377,380,383],{"key":375,"value":376},"生成スクリプト","`docs\u002Fstrategy\u002Fmake_msplat_pareto.py` を複製した `docs\u002Fstrategy\u002Fmake_msplat_pareto_v3b.py`。12.5k 点の x 座標を S4b on-arm control (122.768s) に、y 座標を finalv2 の brush cross-eval q8 実測 (36.289dB) に更新。**x と y が異なる run 由来であることを script docstring に明記した** (advisor 指摘: 沈黙させず可視化すること) — control run 自体は brush cross-eval を実行していないため、load 非依存の PLY 評価値 (finalv2) を援用する形",{"key":378,"value":379},"旧 v3 の扱い","`docs\u002Fstrategy\u002Fmake_msplat_pareto.py` (v3 生成スクリプト) と `docs\u002Ffigures\u002Fpareto-v3-msplat-lego-final-stack.png` は**一切変更していない** — 新スクリプト・新 png ファイルとして追加",{"key":381,"value":382},"出力","`docs\u002Ffigures\u002Fpareto-v3b-msplat-lego-final-stack-v2.png`",{"key":384,"value":385},"注記表示","図中の gap 注記はスクリプトの既存慣習を継承し msplat n=4 mean 分母 (165.42s) で計算 — **0.742×** (v3b) \u002F 旧 0.755× (v3, M7、n=4分母だと0.752×) \u002F 旧 0.927× (2026-08-17) の 3 段書き。本 finding 本文の headline 0.745× は §4 と同じ n=2 分母 (164.69s、継続性のための主分母) を使っており、図中注記 (n=4分母) とは分母が異なる点に注意 (旧 v3 finding も両分母を併記していたのと同じ形式)",{"type":71,"text":387},"6. Part 2 — 多 scene breakage screen (ficus \u002F materials \u002F drums)",{"type":147,"label":389,"variant":241,"text":390},"選定理由 — baseline recipe が完全一致する scene から、splat 数レンジが分散するよう 3 つ選定","2026-08-30 に採用された M4 (radix simd_ballot)・A7 (refine 3-pass 削減)・S4b (ssim_reduce=gpu) はいずれも Lego 12.5k gate のみを根拠にしている。`p1-axis1-phase-g-pareto-landscape.toml` §2 (G.3-alone 30k recipe、2026-05-25 実測、HEAD 5e222bd) の 8 scene 表から、baseline PSNR\u002Fwallclock\u002Fsplats が全て記録済みかつ config の `[trainer]`\u002F`[refine]`\u002F`[adam]`\u002F`[data]` 節が現行 (`2026-08-30-final-12500-r1.toml`) と (dataset_path\u002Fname\u002Frun_dir を除き) diff で完全一致することを確認した ficus (30k、227k splats)・materials (30k、355k splats)・drums (30k、998k splats) を選んだ。drums は Lego 12.5k (407k splats) の 2.5 倍規模で、3 施策がいずれも splat 数に non-uniform に依存する経路 (radix は pair 数、refine scratch は splat 数、SSIM 総和は image-size-bound で splat 数非依存) を持つ中で、初めて Lego gate のレンジ外の splat 数をテストする scene として選定した。config は元の `2026-05-25-2330-{scene}-phase-g3-sh-progressive-30k.toml` を複製し dataset_path\u002Fname\u002Frun_dir のみ変更、backend flag は無指定 (現行 default = M4\u002FA7\u002FS4b 込み全部が効く)。",{"type":103,"columns":392,"align":404,"rows":405,"caption":439},[393,394,395,396,397,398,399,400,401,402,403],"scene","splats規模","baseline PSNR (2026-05-25)","new PSNR (2026-08-31)","ΔPSNR","baseline wallclock","new wallclock","wallclock系統性","baseline splats","new splats","Δsplats",[113,113,114,114,114,114,114,113,114,114,114],[406,417,428],[27,407,408,409,410,411,412,413,414,415,416],"227k (最小)","34.281","34.261","**-0.020dB**","21m40s (1300s)","349.63s","load 9.6-32.6 で終始汚染、方向感のみ","226,749","227,481","+0.32%",[28,418,419,420,421,422,423,424,425,426,427],"355k (中)","30.025","29.998","**-0.027dB**","30m46s (1846s)","421.90s","load 7-27 で終始汚染、方向感のみ","349,784","355,033","+1.50%",[29,429,430,431,432,433,434,435,436,437,438],"998k (Lego比2.5倍)","27.217","27.207","**-0.010dB**","1h5m36s (3936s)","687.85s","**iter27000まで load 0.8-5.5、ほぼクリーン**","1,001,014","997,958","-0.31%","3 scene とも ΔPSNR は `a-10-variance-baseline` の σ±0.32dB (Lego 30k での run-to-run noise floor、n=1 baseline vs n=1 new のため参考値だが目安として妥当) の 1\u002F10 以下で退行なし。wallclock は ficus\u002Fmaterials が load 汚染下 (Part 1 の汚染と同一の原因、§2 参照) のため参考程度 (旧比 ≥3.7×\u002F≥4.4× 高速化の方向感のみ)、drums は load がほぼクリーンで **3936s→687.85s = 5.72× 高速化**を確度高く実測できた。**§14 で ficus\u002Fmaterials を静穏条件 (in-run load サンプラーで監視) で再実行しており、wallclock はそちらの値 (ficus 254-256s、materials 319.54s) を正式値として使うこと** (PSNR は load 非依存の量のため本表の値のまま変更しない)。**§14 の追加 run (ficus q1\u002Fq2) により、この σ±0.32dB \u002F 1\u002F10以下という比較は ficus には無効であることが判明した** — 同一 modern-stack config を3回回した range が1.443dB (a-10 の range 0.885dB の1.6倍) に達し、n=1 ΔPSNR -0.020dB はこの range に埋もれる程度の情報量しか持たない。詳細は §14 を参照。",{"type":147,"label":441,"variant":241,"text":442},"退行判定の位置づけ — breakage screen であって効果測定ではない (advisor 指摘)","M4 (radix scatter の rank 計算方式変更、sort parity は bit-exact)・A7 (refine の allocation\u002Fcopy 経路変更、書き込みロジック自体は不変)・S4b (`read_mean_ssim` を gradient に触れない loss scalar の集約経路のみ変更) はいずれも「計算結果 (gradient \u002F param 更新) を変えない」ことが設計上保証された施策であり、PSNR trajectory が理論上動く理由がない。したがって本 §6 の ΔPSNR が小さいことは「3 施策が効いた証拠」ではなく\u003Cstrong>「3 施策が Lego 以外の scene・splat 数レンジで壊れていないことの確認 (breakage screen)」\u003C\u002Fstrong>である。仮に 1 scene で ±0.1dB を超える差が出た場合の正しい結論も「その scene で回帰が確定した」ではなく「その scene に絞った scoped A\u002FB gate が必要」であり、本 finding はその条件 (>0.1dB の乖離) が発生しなかったため追加 gate は不要と判断した。\u003Cstrong>ただし §14 の追加計測により、この ±0.1dB という閾値自体が ficus には無効であることが判明した\u003C\u002Fstrong> — ficus は同一 config・3 run で range 1.443dB を示す scene であり、n=1 の ΔPSNR がこの閾値を下回っても「退行なし」を確度高く主張する根拠にはならない。M4\u002FA7\u002FS4b が PSNR-neutral な設計 (grad\u002Fparam 更新を変えない) であるという結論自体は変わらないが、n=1 の ΔPSNR でそれを「確認」できるのは range がタイトな scene (materials: 0.028dB) に限られる、という限定を追記する。",{"type":71,"text":444},"7. milestones.md への反映",{"type":446,"items":447},"list",[448,449,450],"「現在地」表: Lego 12.5k train elapsed は **S4b gate on-arm の paired 値 122.77s を維持** (v2 の as-measured 130.657s では上書きしない、理由は §1\u002F§2)。msplat 等価 gap を 0.755×→**0.745×**、throughput を 0.926×→**0.916×** に更新 (control 値ベース)。brush cross-eval PSNR を 36.249dB→**36.289dB** に更新 (load 非依存の実測、+0.04dB でほぼ不変)","新規行: 「多 scene breakage screen (2026-08-31)」— ficus\u002Fmaterials\u002Fdrums の 3 scene で M4\u002FA7\u002FS4b の退行なしを確認、drums (998k splats、Lego比2.5倍) で 5.72× 高速化を確度高く実測。出典: p3-final-stack-v2 §6","進捗ログに M7v2 完了の 1 行を追記 (session 汚染の発見と control 値維持の判断を明記)",{"type":71,"text":452},"8. thermal\u002FDVFS drift 検証 (2026-08-31)",{"type":147,"label":454,"variant":241,"text":455},"手順 — 10 分 GPU idle cooldown 後に finalv2 と同一 config で n=2 独立再計測","§1\u002F§2 で「r3 (load クリーン) でも control より +4.3%」が load スパイクだけでは説明できず、thermal\u002FDVFS drift を未検証の有力候補として残した。本検証は同一 binary (sha256 `c804b349223ffc68e9e1101d79c5ea9f058dfa8d34620504b66aa0a3eb10aa13`、finalv2 と不変)・同一 git rev 系統 (5c731cf、finalv2 の 9bb4ea5 から docs-only commit 1 本のみ進んだ状態、`splat\u002F` crate は無変更なことを確認済み) で、(1) AC 電源・`pgrep -f splat` 空・top CPU procs を記録、(2) GPU を 10 分 idle にして cooldown、(3) `configs\u002F2026-08-31-finalv3-12500-r{1,2}.toml` (finalv2-r1\u002Fr2 の `[trainer]\u002F[refine]\u002F[adam]\u002F[backend]` 節と `diff` で完全一致、`[experiment]`\u002F`[output].run_dir` のみ変更) を `final-stack-n3.sh` で連続 2 本実行、load sampler (10s 間隔) で run 中の load を記録した。`pmset -g therm` はこの機体では cooldown 前後とも `No thermal warning level has been recorded` 等の空出力で、直接的な thermal telemetry は取得できなかった (`sudo powermetrics` 不使用の既知の制約)。",{"type":103,"columns":457,"align":461,"rows":462,"caption":482},[458,459,460],"項目","cooldown 前","cooldown 後 (10分 idle)",[113,113,113],[463,467,471,474,478],[464,465,466],"pmset -g batt","AC Power, 100% charged","AC Power, 100% charged (不変)",[468,469,470],"pmset -g therm","No thermal\u002Fperformance warning level \u002F No CPU power status recorded","同左 (不変、有効なシグナルなし)",[472,473,473],"pgrep -fl target\u002Frelease\u002Fsplat","(none)",[475,476,477],"top CPU procs (ps aux top5)","`bfs -S dfs ...` (find代替、gpui検索) 292.7%CPU が最上位、他は coreaudiod 8.4% \u002F windowserver 6.3% \u002F ghostty 3.7% など","bfs は終了済み。coreaudiod 10.7% \u002F claude(本agent) 7.3% \u002F ghostty 4.2% \u002F corespeechd 4.1% \u002F windowserver 3.6% — 重い競合プロセスなし",[479,480,481],"load averages (1\u002F5\u002F15min)","（cooldown 開始前は未記録、系列サンプラー開始直後で 2.57\u002F4.06\u002F4.79）","2.71\u002F4.11\u002F4.81 (cooldown 直後) → r1 実行前 quiesce 時点で 2.21","`pmset -g therm` は本機では cooldown 前後で全く同じ空出力を返し、GPU\u002FCPU の thermal state を判定する直接的な材料にならなかった。CPU 側の重い同時プロセス (前回 finding が挙げた Finder 147%CPU 相当) は cooldown 前後とも不在で、cooldown 前に唯一目立った `bfs` (ファイル検索、292.7%CPU) も finalv3 系列開始前には自然終了していた。",{"type":103,"columns":484,"align":489,"rows":490,"caption":514},[105,485,486,487,488],"elapsed","PSNR (self-eval)","splats","run 中 load (min-max, 10s sampler)",[113,114,114,114,113],[491,497,503,509],[492,493,494,495,496],"finalv3-12500-r1","127.989s","36.333","405,716","1.31-2.57 (系列全体)",[498,499,500,501,502],"finalv3-12500-r2","131.512s","36.178","409,583","同上 (r1\u002Fr2 共通サンプラー)",[504,505,506,507,508],"**mean (n=2)**","**129.750s**","36.256 (平均)","407,650 (平均)","**max 2.57** — finalv2 r3 の 2.1-3.0 より更にクリーン",[510,511,512,139,513],"control 参考 (S4b on-arm \u002F rnd off-arm)","122.768s \u002F 122.6467s (mean 122.707s)","36.179 \u002F — (gate self-eval)","paired alternating A\u002FB (§3 参照)","finalv3 mean 129.750s は control mean (122.707s) 比 **+5.74%**、S4b on-arm (122.768s) 比 **+5.69%** — 判定基準の ±1.5% バンド (120.93-124.61s) を大きく超えて外れている。しかも run 中 load は finalv2 r3 (2.1-3.0) よりクリーンな 1.31-2.57 に収まっており、load 汚染 (同時プロセスによる CPU 競合) では今回の遅さを一切説明できない。",{"type":147,"label":516,"variant":149,"text":517},"判定 — 10分 cooldown では回復せず。ただしコード起因も棄却: 未解決の『恒久的だが code-diff では説明できないドリフト』","事前登録した 2 分岐判定のどちらにも単純には当てはまらない。(1) 「10分 cooldown で control ±1.5% に戻れば thermal drift 確定」は不成立 — finalv3 mean 129.75s は control から 5.7% 乖離したままで、cooldown 前 (finalv2) とほぼ同水準 (finalv2 as-measured 130.657s との差はわずか 0.7%)。load は同時に測った sampler 上で finalv2 r3 より更にクリーンなので、cooldown 実施・同時プロセス不在という 2 条件をどちらも満たしてなお速度が戻らなかった。(2) 「130s 圏のままなら binary\u002F環境の恒久的変化を疑う」に従い `git log --oneline -8` と `git diff 4405bb4 HEAD --stat -- splat\u002F` を確認したところ、S4b gate (4405bb4) 以降に `splat-metal`\u002F`splat-train-v1` の複数ファイル (`refine.rs` +598 行など) に実コード変更 (`refine_gpu_snapshot` flag 新設、C2 施策#4) があった。しかし該当 flag の default は `false` (config.rs Default impl で確認)、かつこの機能一式が **finalv2\u002Ffinalv3 と bit-identical な binary (sha256 c804b349...)** で既に組み込み済みの状態のまま `p3-refine-nondrain` gate の off-arm が同日 23:30 に **122.6467s** を記録している (§2 既存記載)。つまり『遅い』finalv2\u002Ffinalv3 と『速い』refine-nondrain off-arm は **文字通り同一バイナリ** であり、コード差分では今回の +5.7% を説明できないことを再確認した。\u003Cstrong>結論: cooldown 前後で速度は変化せず (thermal drift の単純な仮説は反証)、コード差分でも説明できない (binary\u002F環境の恒久的変化の単純な仮説も反証) — 残る説明は『10 分では解消しない、より長い時定数を持つ電源\u002Fサーマル状態のヒステリシス』(`pmset -g therm` がこの機体で無効なため直接確認不能) であり、これは未解決のまま残す。\u003C\u002Fstrong> 最終値としては引き続き **paired control 122.77s (S4b on-arm) を採用**する — この判断は §2\u002F§3 の既存結論と変わらない (unpaired 単発測定は paired control に劣後する)。今後の追加検証をするなら、10 分ではなく数十分〜完全な reboot 後の cooldown で再試行するのが次の一手になる。",{"type":71,"text":519},"9. drift 切り分け再実行 (2026-08-31、byte-identical control config を再実行)",{"type":147,"label":521,"variant":241,"text":522},"手順 — 2026-08-30-s4b-12500-on-r1.toml を run 名のみ変えて再実行","§8 は finalv2\u002Ffinalv3 (backend flag 明示なし、default 経由で ssim_reduce=Gpu 等が効く) が paired control (backend flag に `ssim_reduce = \"gpu\"` を明示) より恒常的に +5.7% 遅い件を検証したが、cooldown では説明できず未解決のまま残した。本節はもう一段単純な切り分けを行う: \u003Cstrong>control config (`2026-08-30-s4b-12500-on-r1.toml`) を一切変更せず (`[experiment].name`\u002F`description`\u002F`[output].run_dir` のみ変更、`diff` で `[data]`\u002F`[trainer]`\u002F`[refine]`\u002F`[adam]`\u002F`[backend]` が 1 バイトも変わっていないことを確認済み) 、run 名だけ `s4b-12500-on-rerun` にして今この瞬間に 1 本再実行\u003C\u002Fstrong>する。結果が ~122s (元の control と同水準) に戻れば「explicit flag の有無で経路が変わっている bug」、~130s (finalv2\u002Fv3 と同水準) のままなら「環境の時間依存 drift」と判定する事前登録。binary sha256 (`c804b349...`)・git rev (`1565fcc0`) は §8 と不変。",{"type":103,"columns":524,"align":528,"rows":529,"caption":548},[105,485,486,487,525,526,527],"pre load (1\u002F5\u002F15m)","post load (1\u002F5\u002F15m)","同時実行プロセス",[113,114,114,114,113,113,113],[530,534,540],[531,532,331,139,139,139,533],"control 原本 (2026-08-30-s4b-12500-on-r1, 参考再掲)","122.768s (paired)","§3 記載、A\u002FB 交互で汚染なし",[535,536,537,538,139,139,539],"finalv2\u002Ffinalv3 (§1\u002F§8, 参考再掲)","130.657s \u002F 129.750s","36.257 \u002F 36.256","407,650 \u002F 407,650 (平均)","finalv2: Finder 147%CPU 等。finalv3: **load はほぼクリーン (1.31-2.57) でも遅い**",[541,542,543,544,545,546,547],"**s4b-12500-on-rerun (本節、2026-08-31)**","**125.19s**","**36.218**","**409,606**","1.78 \u002F 2.05 \u002F 3.06","5.29 \u002F 2.79 \u002F 3.17","**`bfs -S dfs ...` (全ファイルシステム検索、他 agent の file search) が run 終盤に 500-600%CPU で実行中を `ps aux` で確認、load1 が pre 1.78 → run 中ピーク 3.87 → post 5.29 まで上昇**","rerun は control 原本比 **+1.973%** (122.768s→125.19s)、finalv2\u002Ffinalv3 mean (130.204s) 比では **-3.85%** (finalv3 単体比 -3.51%) — 事前登録した 2 分岐 (~122s か ~130s) のどちらにも完全には一致しない中間値。ただし §8 の finalv3 (load 終始クリーン 1.31-2.57) が 129.75s だったのに対し、本 rerun は **finalv3 より明確に load が汚染されていた (peak 5.29) にもかかわらず finalv3 より 3.5% 速い** — 「load 汚染が遅さの原因」という説明とは逆方向の結果になっている。",{"type":147,"label":550,"variant":149,"text":551},"判定 — 断定はできないが、explicit flag config は今も ~122-125s 帯を維持: 純粋な普遍的 drift 説を弱める材料","125.19s は ~122s 陣営 (+1.97%) の方に ~130s 陣営 (-3.85%) より 2 倍近く近い。加えて本 rerun は §8 の finalv3 (完全クリーンな load) より重い contamination (`bfs` 500-600%CPU) を run 終盤に受けながらも finalv3 より速く完走している。もし『今この機体は時刻に依存して一律 130s 圏まで遅くなっている』という単純な普遍的 drift が真であれば、contamination で下駄を履かされたはずの本 rerun がむしろ finalv3 を上回って速く終わる理由がない。したがって本結果は\u003Cstrong>「explicit backend flag 明示の config は §8 以降も一貫して 122-125s 帯を保っており、backend flag 無指定 (default 依存) の config だけが 130s 圏に留まっている」という『flag 経路依存』説をわずかに支持\u003C\u002Fstrong>する一方、\u003Cstrong>rerun 自体が contamination を受けているため 122.77s ちょうどには戻っておらず、explicit flag 説を確定させるにも至らない\u003C\u002Fstrong>。結論は「引き続き未確定」だが、§8 で立てた「10分では解消しない普遍的な電源\u002Fサーマルヒステリシス」という仮説の優先順位はやや後退し、\u003Cstrong>次の一手としては『explicit flag config』と『default flag config』を同一 session・同時間帯・load クリーンな状態で back-to-back 実行する A\u002FB が、cooldown 再試行より優先度が高い\u003C\u002Fstrong>と判断する。milestones.md の現在地は引き続き §2\u002F§8 の判断 (paired control 122.77s を採用) を変更しない。",{"type":71,"text":553},"10. Lego 30k 最終スタック headline — msplat 30K との同一 iter 数比較",{"type":147,"label":555,"variant":241,"text":556},"手順 — config = 2026-08-31-final-lego-30k.toml (recipe: p1 phase-g3-sh-progressive、backend は明示せず default)","2026-06 時点で卒論・戦略文書が引用してきた「本実装 11m48s(708s、\u003Cstrong>Phase H 12,500 iter\u003C\u002Fstrong>)\u002F36.26dB vs msplat 3m40s(219.8s、30,000 iter)\u002F35.48dB」(`p1-msplat-baseline-spike.toml`) は \u003Cstrong>iter 数が非対称 (本実装 12,500 iter vs msplat 30,000 iter) な比較\u003C\u002Fstrong>であることに加え、msplat 側の 219.8s\u002F35.48dB 自体も \u003Cstrong>init 点群・holdout・解像度スケジュールが不明な条件非対称の初期 spike 値\u003C\u002Fstrong>であることが `p2-msplat-parity-lego.toml` (2026-08-16、同日・同一 init 点群・同一 evaluator の対称条件再計測) で判明している。同 finding は msplat 30K の対称値を \u003Cstrong>167.7s (n=2 mean) \u002F native 36.53 dB \u002F brush cross-eval (q8) 33.05-34.47 dB (非決定性 1.4dB)\u003C\u002Fstrong> と確定し、219.8s\u002F35.48dB は「条件非対称、参考」として脚注化する規約を定めた。本節は現行 HEAD (1565fcc、M4 radix_scatter=SimdBallot \u002F A7 refine_scratch_persist,refine_direct_write=true \u002F S4b ssim_reduce=Gpu 込みの最終スタック) で \u003Cstrong>本実装も 30,000 iter\u003C\u002Fstrong> で 1 run 実行し、初めて msplat と同一 iter 数・かつ p2-msplat-parity-lego の対称値を基準にした headline 比較を作る。config は `2026-05-25-2030-lego-phase-g3-sh-progressive-30k.toml` (brush 規約: gt_convention=premultiplied、opacity_decay_rate=0.004、SH progressive init=0\u002Fmax=3\u002Funlock_interval=1000。`[trainer]`\u002F`[refine]`\u002F`[adam]`\u002F`[data]` は現行 breakage screen で使用中の `2026-08-30-multiscene-drums-30k.toml` と diff で完全一致することを確認済み) を dataset_path\u002Frun_dir\u002Fname のみ変更して複製、`[backend]` は一切明示せず default に任せた。`splat check` で validate 後、pre-run に load1 9-33 (他 agent の `bfs` full-FS 検索 + 同一ユーザーの `otksynth_analyze` 別プロジェクトバイナリが同時実行中) を確認したため \u003Cstrong>load1 \u003C 6.0 が 60 秒継続するまで能動的に quiesce 待機してから起動\u003C\u002Fstrong> (pre load1 3.86 まで低下)。self-eval はトレーナー内蔵 (premultiplied 収束と同一 convention)、brush cross-eval は `splat eval --convention brush --quantize-8bit --split val` を final.ply に実行 (load 非依存の静的評価)。\u003Cstrong>self-eval (premultiplied) と msplat の native\u002Fself-eval (white-bg) は convention が異なるため直接比較しない\u003C\u002Fstrong> — 同一 convention での優劣判定は brush cross-eval 列のみで行う。",{"type":103,"columns":558,"align":564,"rows":565,"caption":614},[559,560,561,562,563,110],"実装 \u002F 断面","iter","wallclock","self-eval PSNR","brush cross-eval (q8) PSNR",[113,114,114,114,114,114],[566,573,579,586,591,596,602,608],[567,568,569,570,571,572],"msplat 30K r1 (2026-08-16、p2-msplat-parity-lego)","30,000","167.85s","36.539 (native\u002Fwhite)","33.049","190,674",[574,568,575,576,577,578],"msplat 30K r2 (2026-08-16、p2-msplat-parity-lego)","167.48s","36.513 (native\u002Fwhite)","34.470","194,986",[580,581,582,583,584,585],"**msplat 30K mean (n=2、同日対称条件、比較基準)**","**30,000**","**167.7s**","**36.53 (native\u002Fwhite)**","**33.76 (best 34.47)**","**192,830**",[587,568,588,589,139,590],"msplat 30K 2026-06-26 spike (条件非対称、脚注 †)","219.8s (3m40s)","35.48 (native)","208,215",[592,593,594,595,139,139],"本実装 6月時点 (Phase H 12.5k、p1-msplat-baseline-spike)","12,500","708s (11m48s)","36.26",[597,568,598,599,600,601],"本実装 現行最終スタック 30k r1 (2026-08-31)","413.56s (6m53.6s)","36.457","36.501","490,866",[603,568,604,605,606,607],"本実装 現行最終スタック 30k r2 (2026-08-31)","482.96s (8m2.96s)","36.443","36.486","488,491",[609,581,610,611,612,613],"**本実装 現行最終スタック 30k mean (n=2)**","**448.26s** (σ10.95%)","**36.450** (σ0.03%)","**36.494** (σ0.03%)","**489,679** (σ0.34%)","msplat 側の比較基準は p2-msplat-parity-lego (2026-08-16、同日・同一 init 点群・同一 evaluator の対称条件) を採用し、\u003Cstrong>167.7s (n=2 mean) \u002F native 36.53dB \u002F brush ce 33.05-34.47dB\u003C\u002Fstrong> とする。† 2026-06-26 spike (219.8s\u002F35.48dB\u002F208,215 splats) は init 点群・holdout・解像度スケジュール不明の条件非対称値であり、p2-msplat-parity-lego の規約に従い \u003Cstrong>脚注 (参考値、gap 算出には不使用)\u003C\u002Fstrong> とする。本実装側: r1 は `training done in 413.56s` \u002F `final splats: 490866`、r2 は `training done in 482.96s` \u002F `final splats: 488491` (r2 も `[backend] BackendConfig` ログで M4\u002FA7\u002FS4b の実効値が r1 と完全一致することを確認済み)。self-eval は trainer 内蔵 `mean val: PSNR` (100 views、premultiplied 収束と同一 convention)、brush cross-eval (q8) は `splat eval --convention brush --quantize-8bit --split val` を各 run の `final.ply` に実行した実測 (load 非依存)。r2 は pre-run load1 4.47→3.48 (quiesce 済み) だったが post-run load1 が **24.44** まで跳ね上がった (`ps aux` で `mds_stores` = Spotlight metadata indexing が 98.6%CPU、機体ディスク残 1.9GiB という逼迫が誘因と推定) ため r1 より wallclock が **+16.8%** 遅く、n=2 σ (10.95%) は §1 の n=3 (1.727%) より大幅に大きい — n=2 では外れ値を統計的に検出・除外できないため、この σ は『クリーンな計測』の主張ではなく『ばらつきの大きさの記録』として扱う。self-eval \u002F brush cross-eval PSNR と final splats は load 非依存でありσも小さく (0.03-0.34%)、両 run で安定している。\u003Cstrong>self-eval PSNR 列は msplat が white-bg convention・本実装が premultiplied convention のため convention が異なり直接比較不可\u003C\u002Fstrong> (併記のみ)、同一 convention での優劣は brush cross-eval (q8) 列でのみ判定する。",{"type":103,"columns":616,"align":621,"rows":622,"caption":651},[617,618,619,620],"比較軸","旧 (非対称: 本実装12.5k vs msplat30k spike、参考・非推奨)","新 (対称: 本実装30k vs msplat30k 同日対称条件)","解釈",[113,114,114,113],[623,628,633,638,643,647],[624,625,626,627],"wallclock gap (本実装\u002Fmsplat)","**3.221×** (708s\u002F219.8s、iter非対称+msplat条件非対称の二重非対称、参考)","**r1 2.466× (413.56s\u002F167.7s) \u002F n=2 mean 2.673× (448.26s\u002F167.7s)**","msplat 側基準を spike (219.8s) から p2-msplat-parity-lego の同日対称値 (167.7s) に置き換え。r1 単体では 2.47×、r2 (482.96s、Spotlight 汚染疑い) を含む n=2 mean では 2.67× まで拡大する。旧 3.22× は iter 数非対称・msplat 条件非対称の二重の非対称を含むため参考値に降格、gap 算出には用いない",[629,630,631,632],"本実装 6月12.5k → 現行30k のwallclock (本実装内の時系列比較、msplatとは無関係)","708s (12,500 iter)","448.26s (30,000 iter、n=2 mean)","**iter数2.4倍 (12,500→30,000) にもかかわらず wallclock は逆に-36.7% (1.58×高速、n=2 mean)** — per-iter throughput は概算 3.79倍改善 (6月17.7 iter\u002Fs → 現行 n=2 mean 66.9 iter\u002Fs)。r1単体では-41.6%\u002F1.712×\u002F72.5 iter\u002Fs。本行は msplat を含まない本実装内比較であり、上の wallclock gap 行 (msplat比較) とは別軸",[634,635,636,637],"PSNR (本実装 vs msplat 30K、brush 同一convention cross-eval)","実測なし (spike に brush ce 記録なし)","**本実装 brush ce n=2 mean 36.494 vs msplat 30K対称条件 brush ce best 34.47 (r1 33.05\u002Fr2 34.47) → +2.02dB (best比) \u002F +2.73dB (mean比)**","同一 evaluator・同一 convention (brush, premultiplied) での比較。msplat の brush ce は run 間で 1.4dB のブレがある (p2-msplat-parity-lego §4 非決定性) ため +2.02〜+3.45dB の幅で読む。convention 非依存の同一 evaluator 比較としてはこの行のみが優劣判定に使える",[639,640,641,642],"PSNR (self-eval\u002Fnative、convention相違につき参考併記のみ・優劣判定せず)","36.26 (本実装12.5k) vs 35.48 (msplat spike native)","本実装 premultiplied self-eval n=2 mean 36.450 (r1 36.457\u002Fr2 36.443) vs msplat white-bg native mean 36.53 (r1 36.539\u002Fr2 36.513、p2-msplat-parity-lego)","各実装は自分の学習 convention 下で評価されており (p1-a-3 の convention coupling)、直接比較は原理的に無効。優劣は上の brush cross-eval 行でのみ判定する",[644,139,645,646],"PSNR (本実装 現行30k vs 6月12.5k 36.26dB)","**+0.190dB (self) \u002F +0.234dB (brush ce)** (n=2 mean)","iter数2.4倍・大幅高速化と両立しつつ品質もわずかに向上 (30k化・最終スタック施策の複合効果、ノイズ帯に近いが方向は正)。本行も本実装内比較で msplat とは無関係",[648,139,649,650],"final splats (本実装30k vs msplat30k)","489,679 vs 192,830 (対称mean比、**2.54×**、n=2 mean。r1単体では490,866\u002F192,830=2.55×)","spike基準 (208,215) では489,679\u002F208,215=2.35×だったが対称mean (192,830) 基準では2.54×とやや拡大。本実装は msplat 対称条件の2.5倍超の splat 数で高PSNR (brush convention) を達成 — 密な表現とrobustnessの傾向は従来のnarrativeと整合","msplat 側の比較基準は p2-msplat-parity-lego (2026-08-16、同日対称条件) の 167.7s (n=2 mean) \u002F native 36.53dB \u002F brush ce 33.05-34.47dB を採用し、2026-06-26 spike (219.8s\u002F35.48dB) は条件非対称のため参考値に降格した (詳細は上表キャプション)。n=2 (r1 413.56s \u002F r2 482.96s) の headline mean で見ると、gap は対称基準で r1 2.47×\u002Fn=2 mean 2.67× (旧 spike 基準 3.22× は参考)。PSNR は\u003Cstrong>同一 convention (brush) でのみ優劣を判定でき +2.02dB (best比) 〜+2.73dB (mean比)\u003C\u002Fstrong>、self-eval\u002Fnative 同士 (36.45 vs 36.53) は convention 相違のため優劣を断定しない。r2 が r1 より遅い理由は post-run load1=24.44 (mds_stores 起因と推定) であり、σ10.95%は §1 の n=3 (σ1.727%) より大きい — n=2 では load 汚染を統計的に検出・除外できないため、この gap 2.67× は 2.47× (n=1) より保守的な (悪化方向に振れやすい) 値として扱う。",{"type":147,"label":653,"variant":149,"text":654},"含意 — headline narrative の更新候補 (n=2 反映、変動幅に留意)","2026-06 spike が使っていた「本実装11m48s\u002F36.26dB (12.5k) vs msplat3m40s\u002F35.48dB (30k)」という比較は、\u003Cstrong>iter数の非対称\u003C\u002Fstrong> (12,500 vs 30,000) に加え、\u003Cstrong>msplat側の219.8s\u002F35.48dBという数値自体がinit点群・holdout・解像度スケジュール不明の条件非対称な初期spike値\u003C\u002Fstrong>である (`p2-msplat-parity-lego.toml`、2026-08-16の同日対称条件再計測で判明) という二重の限定を持つ。iter数を揃え、msplat側もp2-msplat-parity-legoの対称値 (167.7s (n=2 mean) \u002F native 36.53dB \u002F brush ce 33.05-34.47dB) に置き換えると、比較は\u003Cstrong>「本実装 n=2 mean 7m28s(448.26s)\u002F36.45dB(self, convention相違につき参考)・36.49dB(brush ce) (30k) vs msplat 167.7s(n=2 mean)\u002F36.53dB(native, convention相違につき参考)・33.76-34.47dB(brush ce) (30k)」\u003C\u002Fstrong>に置き換えられる。gap は r1(413.56s) で\u003Cstrong>2.47×\u003C\u002Fstrong>、n=2 mean(448.26s) で\u003Cstrong>2.67×\u003C\u002Fstrong> (旧3.22×はspike基準・iter数非対称の二重非対称値であり参考扱いに降格)。PSNR は\u003Cstrong>同一convention (brush) でのみ優劣を判定でき、本実装が+2.02dB(best比)〜+2.73dB(mean比)優位\u003C\u002Fstrong> — ただしmsplat側のbrush ceは非決定性1.4dBを含む。self-eval\u002Fnative convention同士の比較 (36.45 vs 36.53) はconvention相違のため優劣を断定しない — p1-a-3のconvention couplingの再確認である。final splatsは489,679 vs 192,830 (対称mean比) で2.54×。卒論§5のdirect comparison表・Paretoナラティブを更新する際は\u003Cstrong>この対称断面 (msplat側も対称条件)を優先すべき\u003C\u002Fstrong>である。ただし r2 (482.96s) は r1 (413.56s) より+16.8%遅く、post-run load1=24.44 (`mds_stores` = Spotlight indexing 起因と推定、機体ディスク残 1.9GiB という逼迫も一因の可能性) の影響が疑われるため n=2 σ (10.95%) は §1 の n=3 (σ1.727%) より大きい。n=2 のみでは load 汚染を統計的に切り分けられないため、公式headline化するには (1) n=3 以上への拡張 (できれば load クリーンな条件での paired 実行)、(2) msplat側の同日再実行 (p2-msplat-parity-lego と同様のinterleave手順、本節では2026-08-16実測を借用しており本実装30k runとは別日) の両方を推奨する。PSNR (self-eval \u002F brush cross-eval) と final splats は load 非依存でσが小さく (0.03-0.34%)、こちらは n=2 でも安定した根拠として扱ってよい。\u003Cstrong>「6月708s\u002F36.26dBはPhase H 12,500 iterであり、本節の30k比較 (本実装\u002Fmsplat双方とも30,000 iter) とは別条件」\u003C\u002Fstrong>という点を卒論反映時にも明記すること。",{"type":71,"text":656},"12. msplat 30K の同日再実行 — §10 headline の対称比較を完成させる",{"type":147,"label":658,"variant":241,"text":659},"手順 — p2-msplat-parity-lego と同一条件 (culled init.ply 5207 pts、train 100 view 全量、常時フル解像度)","§10 の含意で挙げた申し送り事項 (「公式headline化には msplat 側の同日再実行を推奨」) を実施する。msplat venv (wheel v1.1.3、`uv venv --python 3.12` + `uv pip install msplat==1.1.3 numpy pillow`、torch 不要 — msplat は Metal ネイティブ実装で `_core.cpython-312-darwin.so` を直接 import する) をスクラッチパッドに再構築 (前回 session のセッション専用パスは既に消えていたため再作成)、`docs\u002Fstrategy\u002Fmsplat_parity_lego.py convert` で dataset を再変換 (5207 pts の culled init.ply、100 train view の white-bg composite、常時 800×800 — p2-msplat-parity-lego と完全同一条件) し、`train --iters 30000` を 1 run 実行した。pre-run に AC 電源・`pgrep -fl \"splat|msplat|python\"` 空・load1 2.43 (\u003C6) を確認済み。§10 の 本実装 30k r1 (413.56s、commit 1565fcc、2026-08-31 実行) と同じ HEAD 系列・同じ M4 Max で日付を跨いでいない (同日 01:54-01:58 実行)。brush cross-eval は §10・p2-msplat-parity-lego と同じ `splat eval --convention brush --quantize-8bit --split val` (q8 が公式値、no-quant は overshoot で 21.4dB まで崩壊し p2-msplat-parity-lego §4 の再現)。",{"type":103,"columns":661,"align":664,"rows":665,"caption":688},[559,560,561,662,663,110],"self\u002Fnative PSNR","brush cross-eval (q8)",[113,114,114,114,114,114],[666,672,678,682],[667,568,668,669,670,671],"msplat 30K (2026-08-16 parity、p2-msplat-parity-lego 参考再掲)","167.7s (r1\u002Fr2 mean)","36.53 (native)","33.05 \u002F 34.47 (r1\u002Fr2)","190,674 \u002F 194,986",[673,568,674,675,676,677],"**msplat 30K (2026-08-31 本節、同日実行)**","**165.65s**","**36.462 (native)**","**33.927**","**191,941**",[679,568,680,681,600,601],"本実装 現行最終スタック 30k r1 (§10、2026-08-31 同日)","413.56s","36.457 (self)",[683,568,684,685,686,687],"本実装 現行最終スタック 30k n=2 mean (§10)","448.26s","36.450 (self)","36.494","489,679","msplat 実測は `TRAIN_WALLCLOCK_S 165.65` \u002F `FINAL_SPLATS 191941` \u002F `MSPLAT_NATIVE_VAL_PSNR 36.4620 dB` (msplat 内蔵 white-bg eval、100 views) をログから直接取得。2026-08-16 parity 実測 (167.7s \u002F 36.53dB) と 0.2dB・1.2% 以内で一致し、msplat 側の再現性を確認 (venv 再構築・dataset 再変換を経ても同水準)。brush cross-eval (q8) は `msplat_parity_lego.py convert-ply` で本実装配列に変換した PLY を `splat eval --convention brush --quantize-8bit` に通した値。raw 成果物 (final PLY 2 形式、driver log) は `\u002FUsers\u002Fotkrickey\u002Fdev\u002F3dgs-workspace\u002Fmsplat-parity-20260831\u002F` に保存。",{"type":103,"columns":690,"align":692,"rows":693,"caption":714},[617,691,620],"値",[113,114,113],[694,698,702,706,710],[695,696,697],"wallclock gap (本実装 r1 \u002F msplat、真の同日 n=1 対 n=1)","**2.497×** (413.56s \u002F 165.65s)","§10 は本節の実行前に msplat 側を 2026-08-16 の借用値 (167.7s、非同日) に更新済みで gap 2.466× だった。真の同日実測 (165.65s) に置き換えると gap は **2.497×** とわずかに拡大 — msplat が今回さらに速かった (165.65s \u003C 167.7s) ことが主因で、2026-06 spike (219.8s) 基準の旧 1.882× からは大きく拡大する。",[699,700,701],"wallclock gap (本実装 n=2 mean \u002F msplat、真の同日)","**2.706×** (448.26s \u002F 165.65s)","§10 の 2026-08-16 借用値基準 (2.673×) からわずかに拡大。n=2 mean (r2 の load 汚染込み) を分母にすると gap はさらに拡大する。§10 の n=2 σ10.95% の議論はそのまま有効 — 保守的な (悪化方向の) 参考値として扱う。",[703,704,705],"PSNR (brush cross-eval q8、同一 evaluator・真の同日)","本実装 **+2.574dB** (36.501 vs 33.927)","p2-msplat-parity-lego §4 の convention coupling が同日 30k iter 断面でも再現: msplat は white-bg 学習のため premultiplied (brush) 評価で native (36.46) から -2.5dB 落ちる。§10 の 2026-08-16 借用値基準 (best比+2.02dB\u002Fmean比+2.73dB) と比べても、本節の真の同日値 (+2.574dB) は同じレンジに収まり、msplat 側の brush ce 非決定性 (1.4dB) の範囲内で整合する。",[707,708,709],"PSNR (native\u002Fself、各実装の学習 convention)","msplat **+0.005dB** (36.462 vs 36.457、ほぼ同値)","各実装が自分の convention で測ると真の同日 30k iter でも事実上互角 (§10 の 2026-08-16 借用値 36.53 との差も 0.07dB でノイズ帯)。品質優位の主張は native 断面では成立せず、brush cross-eval (本実装の学習 convention) でのみ成立する点に注意 (p2-msplat-parity-lego §4 と同型の限定)。",[711,712,713],"final splats 比","**2.557×** (490,866 vs 191,941)","§10 の 2.54× (2026-08-16 借用値 mean 基準) とほぼ一致。本実装は同 iter 数で msplat の 2.5 倍超の splat 数を使って同水準の native PSNR \u002F brush 優位を達成 — 密な表現という傾向は不変。","§10 は本節の直前に p2-msplat-parity-lego (2026-08-16、非同日) の借用値 (167.7s \u002F 36.53dB \u002F brush ce 33.05-34.47dB) で spike (219.8s) を置き換え、gap を 1.88×\u002F3.22× (spike基準) から 2.47×\u002F2.67× (2026-08-16借用値基準、n=1\u002Fn=2 mean) に更新した。本節はさらに一歩進め、msplat 側も \u003Cstrong>真に本実装と同日 (2026-08-31)\u003C\u002Fstrong> に再実行 (165.65s \u002F 36.462dB \u002F brush ce 33.927dB) し、gap を **2.50×(n=1)\u002F2.71×(n=2 mean)** に微調整した。2026-08-16 借用値 (167.7s) と真の同日値 (165.65s) の差はわずか1.2%・0.07dBで、p2-msplat-parity-lego の非同日借用が導入するバイアスは小さかったことも確認できた — ただし『同日実測』こそが本 finding の当初の申し送り事項であり、本節でその条件を完全に満たした。",{"type":147,"label":716,"variant":149,"text":717},"結論 — headline gap は本節の真の同日対称比較 (2.50×\u002F2.71×) を正式値とする","\u003Cstrong>msplat 30K = 165.65s \u002F native 36.462dB \u002F brush ce (q8) 33.927dB \u002F 191,941 splats\u003C\u002Fstrong> (2026-08-31 真の同日実測、本実装 30k r1\u002Fr2 と同一日・同一 M4 Max)。本実装 30k r1 (413.56s \u002F self 36.457dB \u002F brush ce 36.501dB \u002F 490,866 splats、§10) との\u003Cstrong>完全対称 gap は wallclock 2.497× (n=1) \u002F 2.706× (n=2 mean)、brush cross-eval PSNR +2.574dB\u003C\u002Fstrong>。この値は §10 が用いた 2026-08-16 借用値基準 (2.466×\u002F2.673×、+2.02〜2.73dB) とほぼ同水準 (差 1-2%) であり、非同日借用によるバイアスは実質的に無視できる大きさだったと確認された。卒論 §5 の direct comparison 表・Pareto v3 系列の headline gap は、より厳密な根拠を持つ本節の \u003Cstrong>2.497×(n=1)\u002F2.706×(n=2 mean)\u003C\u002Fstrong> を正式値として採用すべきである。native\u002Fself PSNR 断面では両者ほぼ互角 (msplat +0.005dB) という事実は、品質優位の主張が brush convention (本実装の学習 convention) に限定されるという p2-msplat-parity-lego §4 の結論を 30k iter 断面・真の同日条件下でも裏づける。",{"type":71,"text":719},"13. 静穏時再計測 — control config (s4b-12500-on) の byte-identical 複製を n=3 取り直し (2026-08-31)",{"type":147,"label":721,"variant":241,"text":722},"手順 — 実装なし・計測のみ。control config を run 名だけ変えて複製し、load クリーンな状態で直列実行","§8\u002F§9 は「finalv2\u002Ffinalv3 (backend flag 無指定、default 経由) が paired control (backend flag に \u003Ccode>ssim_reduce = \"gpu\"\u003C\u002Fcode> を明示) より恒常的に +5.7% 遅い」件を、10分 cooldown (§8、解消せず) と explicit-flag config の単発 rerun (§9、125.19s、bfs 500-600%CPU の contamination 込みで断定不能) で切り分けようとしたが、いずれも決着していなかった。本節はもう一段厳密に、\u003Cstrong>control config 自体 (\u003Ccode>2026-08-30-s4b-12500-on-r{1,2,3}.toml\u003C\u002Fcode>) を 1 バイトも変更せず (\u003Ccode>[experiment].name\u003C\u002Fcode>\u002F\u003Ccode>description\u003C\u002Fcode>\u002F\u003Ccode>[output].run_dir\u003C\u002Fcode> のみ変更、\u003Ccode>diff\u003C\u002Fcode> で \u003Ccode>[data]\u003C\u002Fcode>\u002F\u003Ccode>[trainer]\u003C\u002Fcode>\u002F\u003Ccode>[refine]\u003C\u002Fcode>\u002F\u003Ccode>[adam]\u003C\u002Fcode>\u002F\u003Ccode>[backend]\u003C\u002Fcode> が完全一致することを確認済み — \u003Ccode>splat\u002Fconfigs\u002F2026-08-31-quiet-12500-r{1,2,3}.toml\u003C\u002Fcode>)、n=3 を \u003Cstrong>静穏条件を能動的に確認してから\u003C\u002Fstrong> 直列実行\u003C\u002Fstrong>する。事前チェック: \u003Ccode>df -h \u002F\u003C\u002Fcode> 空き26GiB (閾値5GiB を大きく超過)、\u003Ccode>pmset -g batt\u003C\u002Fcode> series 前後とも \u003Ccode>AC Power\u003C\u002Fcode> (不変)、\u003Ccode>pgrep -fl \"splat|msplat|mds_stores\"\u003C\u002Fcode> は mds_stores (PID 885) のみ検出したが \u003Ccode>ps -p 885 -o pcpu\u003C\u002Fcode> で 0.0%CPU (アイドル) と確認できたため待機は不要と判断、series 開始時 load1=1.15 (\u003C4)。\u003Ccode>splat\u002Fscripts\u002Ffinal-stack-n3.sh\u003C\u002Fcode> (\u003Ccode>LOAD_LIMIT=4.0\u003C\u002Fcode> に明示指定、既存 default 6.0 より厳しい閾値) を \u003Ccode>configs\u002F2026-08-31-quiet-12500\u003C\u002Fcode> \u002F \u003Ccode>quiet-12500\u003C\u002Fcode> で起動し、各 run 前に load1&lt;4.0 が 60 秒 (6 サンプル) 連続するまで能動 quiesce。加えて 10 秒間隔の \u003Ccode>ps aux | sort -nrk3 | head -3\u003C\u002Fcode> サンプラーを script の load sampler と並行して独立に走らせ、各 run の \u003Ccode>pre_date\u003C\u002Fcode>\u002F\u003Ccode>post_date\u003C\u002Fcode> epoch で window 切り出しし、同時実行プロセスの実体を記録した。binary sha256 \u003Ccode>c804b349223ffc68e9e1101d79c5ea9f058dfa8d34620504b66aa0a3eb10aa13\u003C\u002Fcode>・git rev \u003Ccode>f5b7a81987323a6f369b8d5da5da2b3621e3b8fa\u003C\u002Fcode> は series 前後・§8\u002F§9 の rev 系統 (5c731cf\u002F1565fcc) から \u003Ccode>splat\u002F\u003C\u002Fcode> crate に実コード変更なし (\u003Ccode>git log 1565fcc..HEAD -- splat\u002F\u003C\u002Fcode> は docs\u002Fconfig\u002Flog 系の 2 commit のみ) を確認済みで不変。\u003Cstrong>判定は事前登録\u003C\u002Fstrong>: mean が control ±1.5% バンド (120.93-124.61s、§8 で定義) 内 → drift 解消。mean が finalv2\u002Ffinalv3 の ~129-130s 圏に達する → drift 継続 (session汚染起因の当初仮説が正しい可能性が高まる)。その中間 → straddle として mean±σ が両陣営のどちらと重なるか (または どちらとも重ならないか) を明示して報告し、第三の narrative を後付けしない。",{"type":103,"columns":724,"align":728,"rows":729,"caption":755},[105,107,108,110,725,726,727],"run 中 load1 (min-max, 10s sampler)","pre uptime (load 1\u002F5\u002F15m)","post uptime (load 1\u002F5\u002F15m)",[113,114,114,114,113,113,113],[730,737,743,750],[117,731,732,733,734,735,736],"124.91","36.171","406,850","2.12-2.85","3.03 3.03 3.95","1.95 2.70 3.69",[124,738,133,739,740,741,742],"127.22","407,946","2.35-3.19","2.40 2.67 3.62","3.66 2.94 3.59",[131,744,745,746,747,748,749],"126.13","36.192","407,553","2.47-3.03","2.86 2.99 3.54","2.99 2.95 3.43",[138,751,752,753,754,139,139],"**126.087** (σ1.156s, 0.917%)","**36.192** (σ0.0594%)","407,449.7 (σ0.136%)","2.12-3.19 (系列全体、finalv2 r3 の 2.1-3.0 と同水準、finalv3 の 1.31-2.57 よりわずかに高いが LOAD_LIMIT=4.0 を終始下回る)","3 run とも \u003Ccode>[backend] BackendConfig {...}\u003C\u002Fcode> ログで \u003Ccode>ssim_reduce: Gpu, radix_scatter: SimdBallot, refine_scratch_persist: true, refine_direct_write: true, refine_gpu_snapshot: false\u003C\u002Fcode> が完全一致することを確認 (§11 の「実効 flag は一致、flag 経路依存 bug ではない」を再確認)。self-eval PSNR は training log の \u003Ccode>mean val: PSNR\u003C\u002Fcode> (100 views)。σ は標本標準偏差 (n-1)。\u003Ccode>ps aux\u003C\u002Fcode> 独立サンプラーで各 run window を確認したところ、r1 の pre 直前に \u003Ccode>dj-lab\u003C\u002Fcode> (ユーザーの音声処理プロセス、§2 で既出) が PID 8971 で 22.8%CPU 検出されたがこの個体は r1 の post 時点では上位3位から消えており、その後 r2 開始直前 (2:13AM) に \u003Cstrong>別 PID (10175) の dj-lab が新規に起動し、r2\u002Fr3 の pre\u002Fpost を通じて 33-40%CPU で稼働し続けた\u003C\u002Fstrong> (WindowServer の系列全体を通じた baseline ~40-48%CPU は macOS の通常の compositor 負荷で、過去 finding の Finder 147%CPU\u002Fbfs 500-600%CPU のような突発的 contamination とは性質が異なる)。dj-lab の新規起動タイミングが r1 (124.91s、最速) と r2\u002Fr3 (127.22s\u002F126.13s、やや遅い) の速度順位と符合する。",{"type":147,"label":757,"variant":149,"text":758},"判定 — straddle: mean 126.09s は control バンドの外・finalv2\u002Ffinalv3 圏の外の中間値。drift は「解消」でも「全量継続」でもなく縮小した形で継続","事前登録した 2 分岐 (control バンド 120.93-124.61s \u002F finalv2-finalv3 圏 ~129-130s) のどちらにも該当しない。\u003Cstrong>3 run 全てが control バンド上限 (124.61s) を超えている\u003C\u002Fstrong> (r1 +1.75% \u002F r2 +3.63% \u002F r3 +2.74%、control 122.768s 比)。mean±σ = \u003Cstrong>124.93-127.24s\u003C\u002Fstrong> — この区間は control バンド (120.93-124.61s) の直上に隙間 (0.32s) を空けて存在し、重ならない。finalv2 (130.657s) \u002F finalv3 (129.750s) の側とも重ならない (最短距離は finalv3 との 2.51s = mean+σ からの差)。相対距離で見ると、mean (126.087s) は control (122.768s) から \u003Cstrong>+2.70%\u003C\u002Fstrong>、finalv2\u002Ffinalv3 mean (130.204s) からは \u003Cstrong>-3.16%\u003C\u002Fstrong> — control 側にやや近いが、control バンド自体には入っていない。§9 の単発 rerun (125.19s、bfs contamination あり) とは \u003Cstrong>+0.72%\u003C\u002Fstrong> で近く、本 n=3 の結果はその単発値をおおむね裏づける形になった。\u003Cstrong>結論: 静穏条件 (load1 終始2.1-3.2、LOAD_LIMIT=4.0 を維持、突発的 contamination なし) を確保してもなお、control config は元の paired gate 値 (122.77s) を再現できず、恒常的に +2.7% 程度遅い状態が続いている\u003C\u002Fstrong>。一方で、backend flag 無指定の finalv2\u002Ffinalv3 が示した +5.7〜6.5% ほど極端ではなく、ほぼ半分程度の drift 幅にとどまる。§9 で切り分けた「explicit flag config は default-flag config より drift 幅が小さい」というパターンは本節でも再現されており (explicit flag: 122.77→126.09s、+2.70%。default flag: 124.39(M7)→130.657(finalv2)、+5.05%)、\u003Cstrong>『flag 経路依存』ではなく『環境の時間依存 drift が config 種別に関わらず存在し、その絶対量が session ごとに変動する』という §8\u002F§11 の結論を補強する\u003C\u002Fstrong>。今回新たに観測された \u003Ccode>dj-lab\u003C\u002Fcode> の断続的な起動\u002F停止 (r1→r2 の間で新規プロセスが立ち上がった) は、load average だけでは捉えきれない低〜中負荷の同時実行プロセスが依然として drift の一因でありうることを示唆するが、その寄与度を本 n=3 だけで定量化することはできない。\u003Cstrong>milestones.md の「現在地」は §2\u002F§8\u002F§9 の判断を変更せず、paired control 122.77s (S4b on-arm) を引き続き採用する\u003C\u002Fstrong> — 本節は「静穏条件でも drift は完全には消えない」という追加の計測論的事実を記録するにとどめる。次の一手としては、§9 が提案した『explicit flag config』と『default flag config』の同一 session・同時間帯 back-to-back A\u002FB に加え、\u003Ccode>dj-lab\u003C\u002Fcode> のような低負荷バックグラウンドプロセスの有無を意図的に制御した A\u002FB が優先度が高い。",{"type":71,"text":760},"14. §6 (ficus\u002Fmaterials) の静穏再実行 — in-run load サンプラーで監視、ficus は PSNR 外れ値を q2 再実行で解消 (2026-08-31)",{"type":147,"label":762,"variant":241,"text":763},"手順 — §6 の n=1 config を run 名のみ変えて複製し、10s 間隔の in-run load サンプラーで全区間を実況監視","§6 の ficus (349.63s)・materials (421.90s) の wallclock は post-run \u003Ccode>uptime\u003C\u002Fcode> で load 9.6-32.6 \u002F 7-27 の汚染が確認され「方向感のみ」に格下げされていた。本節はゼミの多 scene 表用に静穏条件で取り直す。\u003Ccode>splat\u002Fruns\u002Fmultiscene-{ficus,materials}-30k\u002Fconfig.toml\u003C\u002Fcode> (§6 で実際に使われた config の snapshot、元 config と \u003Ccode>diff\u003C\u002Fcode> でバイト一致を確認済み) を base に、\u003Ccode>[experiment].name\u003C\u002Fcode>\u002F\u003Ccode>description\u003C\u002Fcode>\u002F\u003Ccode>[output].run_dir\u003C\u002Fcode> のみ変更 (\u003Ccode>[data]\u003C\u002Fcode>\u002F\u003Ccode>[trainer]\u003C\u002Fcode>\u002F\u003Ccode>[refine]\u003C\u002Fcode>\u002F\u003Ccode>[adam]\u003C\u002Fcode>\u002F\u003Ccode>[backend]\u003C\u002Fcode> は無変更、\u003Ccode>diff\u003C\u002Fcode> で確認済み) した \u003Ccode>splat\u002Fconfigs\u002F2026-08-31-multiscene-{ficus,materials}-30k-q.toml\u003C\u002Fcode> を \u003Ccode>splat check\u003C\u002Fcode> で validate。実行前チェック: \u003Ccode>df -h \u002F\u003C\u002Fcode> 空き26-27GiB、\u003Ccode>pmset -g batt\u003C\u002Fcode> 系列前後とも \u003Ccode>AC Power\u003C\u002Fcode>、\u003Ccode>pgrep -fl \"target\u002Frelease\u002Fsplat\"\u003C\u002Fcode> 空、load1&lt;4 が 60秒 (6サンプル×10s) 連続することを各 run 前に個別に確認 (ficus 前: 0.94-1.25、materials 前: 1.48-1.66)。完了検出は §6 の教訓 (\u003Ccode>pgrep -f\u003C\u002Fcode> の自己マッチで 10分 timeout を1回消費) を踏まえ、\u003Ccode>nohup sh -c '... ; echo $? > \u003Clog>.DONE'\u003C\u002Fcode> の sentinel ファイルを foreground \u003Ccode>until\u003C\u002Fcode> loop でポーリングする方式に変更 (プロセス名マッチを一切使わない)。加えて §13 と同様の 10s 間隔 \u003Ccode>uptime\u003C\u002Fcode>+\u003Ccode>ps aux\u003C\u002Fcode> サンプラーを 2 run の実行区間全体にわたって独立に走らせ、各 run の起動\u002F終了 epoch で window 切り出しして \u003Cstrong>run 中の load1 推移を実況で\u003C\u002Fstrong> 記録した (§6 は post-run \u003Ccode>uptime\u003C\u002Fcode> の単発値のみで in-run 推移は無かった)。2 run は直列実行 (ficus → 完了確認 → 60秒 quiesce 再確認 → materials)。binary sha256 \u003Ccode>c804b349223ffc68e9e1101d79c5ea9f058dfa8d34620504b66aa0a3eb10aa13\u003C\u002Fcode>・git rev \u003Ccode>63266e409404dd7cdc9cd109b2a17944781f9ca1\u003C\u002Fcode> は §6 (binary sha 同一値) 以降 \u003Ccode>splat\u002F\u003C\u002Fcode> crate に変更なし (docs コミットのみ) で不変。抽出は §6 と同じ 3 フィールド — \u003Ccode>training done in Xs\u003C\u002Fcode> (wallclock)、\u003Ccode>mean val: PSNR X dB (100 views)\u003C\u002Fcode>、\u003Ccode>final splats: X\u003C\u002Fcode> — をログから読み取り、\u003Ccode>result.toml [metrics]\u003C\u002Fcode> と一致することを確認した。ficus の 1 回目 (以下 q1) で PSNR が baseline から -1.4dB 台乖離する事象が生じたため、コードの RNG (\u003Ccode>StdRng::seed_from_u64(cfg.output.seed)\u003C\u002Fcode>、run 名\u002Frun_dir に非依存であることを grep で確認) を排除した上で、同一 config を \u003Ccode>-q2\u003C\u002Fcode> として複製・再 quiesce・再実行した (追加の n=1、直列)。",{"type":103,"columns":765,"align":772,"rows":773,"caption":788},[393,395,766,767,398,768,769,770,401,771],"初回 PSNR (§6、2026-08-31)","静穏 run の PSNR (参考、variance観測)","初回 wallclock (§6、load汚染)","静穏 wallclock (正式値)","静穏 run 中 load1 (min-max)","静穏 splats",[113,114,114,114,114,114,114,113,114,114],[774,781],[775,408,409,776,777,412,778,779,414,780],"ficus (227k)","q1 32.836 \u002F q2 34.279","1300s (21m40s)","**254.09s (q1) \u002F 256.21s (q2)**","q1: 0.81-1.62 (終始クリーン)。q2: 0.94-4.79 (iter中盤に mds\u002Fcargo 由来の短時間スパイクあり、LOAD_LIMIT=4.0 を一時超過)","228,147 (q1) \u002F 228,595 (q2)",[782,419,420,783,784,423,785,786,425,787],"materials (355k)","29.997","1846s (30m46s)","**319.54s**","1.18-2.07 (終始クリーン)","354,917","PSNR は load 汚染の影響を受けない量 (brush cross-eval が load 非依存であることは §1 で確認済み) なので、静穏再実行は\u003Cstrong>そもそも PSNR の再計測を目的にしていない\u003C\u002Fstrong> — 本 finding の PSNR 公式値は §6 のまま変更しない (ficus 34.261dB \u002F materials 29.998dB)。静穏 run の PSNR (q1\u002Fq2) は「同一 config を複数回回すと何が起きるか」の \u003Cstrong>run-to-run variance 観測\u003C\u002Fstrong>として併記する。wallclock は §6 比 ficus **-27.3%〜-26.7%** (349.63s→254.09s\u002F256.21s、q1\u002Fq2 で 0.8% 差と安定)、materials **-24.3%** (421.90s→319.54s) — in-run 10s サンプラーで全区間クリーンを実況確認できたため (q2 の一時的スパイクを除く)、この短縮は load 汚染除去の効果として §6 より高い確度で言える正式値である (n=1〜2 のため σ なし、baseline 側 [2026-05-25、旧 HEAD] も単発 run で条件不記載という留保は残る)。\u003Cstrong>materials は §6・baseline・静穏の 3 run で PSNR range 0.028dB (30.025\u002F29.998\u002F29.997) と極めてタイト\u003C\u002Fstrong>。\u003Cstrong>ficus は同じ modern-stack config の 3 run (§6 34.261 \u002F q1 32.836 \u002F q2 34.279) で PSNR range **1.443dB** — a-10-variance-baseline が Lego 30k で報告した range 0.885dB (4 run) の 1.6 倍\u003C\u002Fstrong> — 詳細と、この range が退行判定の gate 閾値に与える影響は次の callout。",{"type":147,"label":790,"variant":149,"text":791},"ficus PSNR range 1.443dB — 系統的な劣化ではなく GPU 非決定性の run-to-run variance、ただし a-10 の Lego gate 閾値をこの scene に適用するのは無効","静穏 config は \u003Ccode>diff\u003C\u002Fcode> で \u003Ccode>[data]\u003C\u002Fcode>\u002F\u003Ccode>[trainer]\u003C\u002Fcode>\u002F\u003Ccode>[refine]\u003C\u002Fcode>\u002F\u003Ccode>[adam]\u003C\u002Fcode>\u002F\u003Ccode>[backend]\u003C\u002Fcode> が §6 の config と完全一致 (name\u002Fdescription\u002Frun_dir のみ変更) しており、BackendConfig ログも一致するため config 起因ではないことは確認済み。\u003Cstrong>コードの RNG は \u003Ccode>StdRng::seed_from_u64(cfg.output.seed)\u003C\u002Fcode> (config の \u003Ccode>seed\u003C\u002Fcode> フィールドのみに依存、\u003Ccode>splat-cli\u002Fsrc\u002Fcmd\u002Ftrain.rs\u003C\u002Fcode>) で、run 名や run_dir をハッシュに含む経路は grep で確認した限り存在しない\u003C\u002Fstrong> — 「run_dir の違いが結果に影響した」という仮説は事前に排除した上で、同一 config を \u003Ccode>-q2\u003C\u002Fcode> として再度 \u003Ccode>splat check\u003C\u002Fcode> validate・quiesce (60秒 load1&lt;4) を経て再実行した。\u003Cstrong>結果は 34.279dB (baseline 34.281dB 比 -0.002dB) で、q1 の -1.4dB 台とは全く異なり baseline\u002F§6 と整合した\u003C\u002Fstrong>。final splats も q1 228,147 \u002F q2 228,595 と近く (0.2%差)、wallclock も q1 254.09s \u002F q2 256.21s と近い (0.8%差) — \u003Cstrong>不安定だったのは PSNR のみで、wallclock・splats は 2 run で再現性がある\u003C\u002Fstrong>。事前登録した 2 分岐のうち「~34.2 に着地」が的中したため、\u003Cstrong>「ficus は GPU 非決定性に特に脆弱な scene である」という強い仮説 (機構の特定) は撤回する\u003C\u002Fstrong>。q1 の -1.4dB 自体は \u003Ccode>a-10-variance-baseline\u003C\u002Fcode> が報告する SIMD backward の \u003Ccode>atomic_fetch_add\u003C\u002Fcode> 順序非決定性 (→ refine の split\u002Fclone 判定 flip → splat trajectory 分岐 → PSNR drift) の一事例である可能性が高い。\u003Cstrong>ただし機構の特定とは別に、§6\u002Fq1\u002Fq2 の同一 modern-stack config・3 run で観測された range は 1.443dB (34.261\u002F32.836\u002F34.279) であり、これは a-10 が Lego 30k・4 run で確立した range 0.885dB の 1.6 倍\u003C\u002Fstrong> — materials の同条件 3 run range (0.028dB) とは対照的に、\u003Cstrong>ficus では a-10 の σ±0.32dB \u002F range 0.885dB を「退行判定の noise floor」としてそのまま転用するのは無効\u003C\u002Fstrong>である。§6 の「3 scene とも ΔPSNR は σ±0.32dB の1\u002F10以下」という記述、および §6 退行判定callout の「±0.1dB を超えたら scoped gate」という基準は、\u003Cstrong>ficus に限っては n=1 の ΔPSNR -0.020dB がこの range (1.443dB) 内に埋もれる程度の情報量しか持たない\u003C\u002Fstrong>ことを意味する — M4\u002FA7\u002FS4b が PSNR-neutral な設計 (grad\u002Fparam 更新を変えない) であるという §6 の結論そのものは変わらないが、「ficus の n=1 ΔPSNR が小さいことをもって退行なしと確度高く言える」という強さの主張はできない。本 finding では追加 run による σ の確定は行わない (観測された range を記録し、multi-scene gate 閾値の見直しが必要という指摘にとどめる)。",{"type":446,"items":793},[794,795,796,797],"wallclock: §6 の「方向感のみ」を「静穏条件下で確度高く実測」に格上げできる — ficus 349.63s→254-256s (-27.3%〜-26.7%、q1\u002Fq2 で再現)、materials 421.90s→319.54s (-24.3%)、いずれも in-run load1 が LOAD_LIMIT=4.0 をほぼ終始下回った (ficus q1: 0.81-1.62 終始クリーン、q2: 0.94-4.79 で iter中盤に短時間スパイクあり、materials: 1.18-2.07 終始クリーン)","materials の PSNR\u002Fsplats は §6・baseline と実質不変 (noise floor 内) — M4\u002FA7\u002FS4b の breakage screen 結論 (退行なし) を追加で裏づける","ficus の PSNR は §6\u002Fq1\u002Fq2 の同一 modern-stack config 3 run で range 1.443dB (34.261\u002F32.836\u002F34.279) を示した (materials の同条件 range 0.028dB とは対照的)。config\u002Fbackend flag 同一・RNG が run 名や run_dir に依存しないことを確認済みなので config bug ではなく、a-10-variance-baseline の GPU 非決定性メカニズムの一事例と推測されるが range 超過分の機構は未確定。実用上の帰結は「ficus が特に脆弱」という機構特定ではなく、\u003Cstrong>a-10 の Lego 由来の noise floor (σ±0.32dB) をこの scene の退行判定にそのまま転用できない\u003C\u002Fstrong>という gate 閾値の限界の発見","本節は commit していない (計測のみのタスク、config 3 本 [-q ficus\u002Fmaterials、-q2 ficus] と本 finding の追記のみ working tree に残る)",[799,811,818,825,838,845,852,858,865],{"id":44,"title":44,"subtitle":800,"date":801,"workspace":802,"tags":803,"verdict":806,"psnr":807,"psnr_unit":-1,"wallclock":808,"splats":809,"summary_url":810,"detail_path":810},"M7 最終スタック独立再計測 (全採用施策 default ON): Lego 12.5k full run repeat 1\u002F3 (v2, post-S4b flip)","2026-08-30","splat",[54,17,804,805,20],"gpu-gate","lego","partial",36.28242874145508,"2m 12s",406773,"\u002Fruns\u002Ffinalv2-12500-r1\u002F",{"id":45,"title":45,"subtitle":812,"date":801,"workspace":802,"tags":813,"verdict":806,"psnr":814,"psnr_unit":-1,"wallclock":815,"splats":816,"summary_url":817,"detail_path":817},"M7 最終スタック独立再計測 (全採用施策 default ON): Lego 12.5k full run repeat 2\u002F3 (v2, post-S4b flip)",[54,17,804,805,20],36.27399444580078,"2m 11s",406990,"\u002Fruns\u002Ffinalv2-12500-r2\u002F",{"id":46,"title":46,"subtitle":819,"date":801,"workspace":802,"tags":820,"verdict":806,"psnr":821,"psnr_unit":-1,"wallclock":822,"splats":823,"summary_url":824,"detail_path":824},"M7 最終スタック独立再計測 (全採用施策 default ON): Lego 12.5k full run repeat 3\u002F3 (v2, post-S4b flip)",[54,17,804,805,20],36.21406936645508,"2m 8s",405946,"\u002Fruns\u002Ffinalv2-12500-r3\u002F",{"id":49,"title":49,"subtitle":826,"date":827,"workspace":802,"tags":828,"verdict":806,"psnr":834,"psnr_unit":-1,"wallclock":835,"splats":836,"summary_url":837,"detail_path":837},"多 scene 退行チェック (drums, G.3-alone 30k recipe, n=1)","2026-05-25",[829,23,830,831,832,833,29],"p1-d","brush-compat","premultiplied","opacity-decay","phase-d-multi",27.206771850585938,"11m 27s",997958,"\u002Fruns\u002Fmultiscene-drums-30k\u002F",{"id":47,"title":47,"subtitle":839,"date":827,"workspace":802,"tags":840,"verdict":806,"psnr":841,"psnr_unit":-1,"wallclock":842,"splats":843,"summary_url":844,"detail_path":844},"多 scene 退行チェック (ficus, G.3-alone 30k recipe, n=1)",[829,23,830,831,832,833,27],34.260826110839844,"5m 49s",227481,"\u002Fruns\u002Fmultiscene-ficus-30k\u002F",{"id":50,"title":50,"subtitle":846,"date":827,"workspace":802,"tags":847,"verdict":806,"psnr":848,"psnr_unit":-1,"wallclock":849,"splats":850,"summary_url":851,"detail_path":851},"静穏再実行 (ficus, G.3-alone 30k recipe, n=1, load-controlled)",[829,23,830,831,832,833,27],32.83599853515625,"4m 14s",228147,"\u002Fruns\u002Fmultiscene-ficus-30k-q\u002F",{"id":52,"title":52,"subtitle":846,"date":827,"workspace":802,"tags":853,"verdict":806,"psnr":854,"psnr_unit":-1,"wallclock":855,"splats":856,"summary_url":857,"detail_path":857},[829,23,830,831,832,833,27],34.27895736694336,"4m 16s",228595,"\u002Fruns\u002Fmultiscene-ficus-30k-q2\u002F",{"id":48,"title":48,"subtitle":859,"date":827,"workspace":802,"tags":860,"verdict":806,"psnr":861,"psnr_unit":-1,"wallclock":862,"splats":863,"summary_url":864,"detail_path":864},"多 scene 退行チェック (materials, G.3-alone 30k recipe, n=1)",[829,23,830,831,832,833,28],29.998336791992188,"7m 1s",355033,"\u002Fruns\u002Fmultiscene-materials-30k\u002F",{"id":51,"title":51,"subtitle":866,"date":827,"workspace":802,"tags":867,"verdict":806,"psnr":868,"psnr_unit":-1,"wallclock":869,"splats":870,"summary_url":871,"detail_path":871},"静穏再実行 (materials, G.3-alone 30k recipe, n=1, load-controlled)",[829,23,830,831,832,833,28],29.99651336669922,"5m 19s",354917,"\u002Fruns\u002Fmultiscene-materials-30k-q\u002F",[873,893,923,944,978,999],{"id":54,"title":874,"date":801,"status":10,"polarity":875,"category":11,"axes":876,"tags":877,"task_code":881,"related_runs":882,"delta_psnr":888,"delta_wallclock":889,"rank":62,"verdict":890,"impact_summary":891,"detail_path":892},"M7 最終スタック確定 — 12.5k 124.39s (独立 n=3)、msplat 等価 gap 0.927×→0.755×、throughput 1.135×負け→0.926× (msplat 側 avg splats 借用値 ±8% 未満なら逆転)","positive",[14,15],[17,19,20,21,878,879,805,804,880],"pareto-v3","throughput-parity","independent-remeasurement","2026-09-seminar05-milestones M7 (最終スタック確定 + msplat 等価再比較 + Pareto v3)",[883,884,885,886,887],"final-12500-r1","final-12500-r2","final-12500-r3","final-12500-r4","c1v2-12500-off-prof","12.5k self-eval (r2-r4 n=3 mean): **36.219 dB** (σ 0.046%)、baseline guard 36.202±0.1dB 内。brush cross-eval q8 (r2-r4 mean): **36.249 dB** (msplat 30K 保守値 34.243 比 **+2.006dB**、旧 +1.97dB とほぼ不変)。white cross-eval (r2-r4 mean): **35.147 dB** (msplat 30K cross-eval 最小 36.252 比 **-1.105dB**、旧 -1.10dB とほぼ不変)","12.5k train elapsed 独立 n=3 (r2\u002Fr3\u002Fr4、clean set): **124.393s (σ 0.756%)**。A7 gate on-arm mean (124.807s) を **-0.33%** で再現。msplat 等価 gap (block1 n=2 分母 164.69s): **0.755×** (旧 0.927×)。per-splat·iter throughput: 本実装 **30.94ns** vs msplat 33.4ns = **0.926×** (旧 1.135×負けから逆転)","final-stack-confirmed-msplat-gap-0.755x-throughput-parity-crossed-pending-msplat-avg-splats-recheck","2026-09-seminar05-milestones M7 を実施した。(1) **12.5k full run 独立 n=3**: `2026-08-30-final-12500-r{1,2,3}.toml` を単純 3 repeat (off arm なし、全 [backend] flag は default 任せ = M4 radix_scatter=SimdBallot + A7 refine_scratch_persist\u002Frefine_direct_write=true 込み) で実行。r1 (131.84s) が r2\u002Fr3\u002Fr4 (123.34\u002F124.69\u002F125.15s) から外れて見えたため、advisor レビューを経て診断用の r4 を追加実行した結果、**r1 は script 再起動時に load sampler window ログが truncate され窓内記録が皆無**という house 規約 (p2-msplat-parity-final §7「事前 gate だけでは不十分、窓内記録が必須」) 上の欠陥を抱えていたことが判明し、r2\u002Fr3\u002Fr4 (全 run とも window 記録あり、load 正常) を正式な n=3 として採用した。**mean 124.393s (σ 0.756%)** — A7 gate on-arm mean 124.807s を -0.33% で独立再現しており、この近さ自体が両 session の健全性証拠になる。r1 込みの参考値 (n=3 リテラル\u002Fn=4 全部) も §1 に残す。(2) **per-kernel share v2**: `2026-08-30-c1v2-12500-off-prof.toml` (submission=per_kernel\u002Fforward_submission=per_stage\u002Fpipelining=off、M4\u002FA7 default 込み) を 1 run。leaf gpu_ms 合計 114.508s は busy union と exact 一致。radix share 26.40%→12.01% (絶対 -63.25%、M4 gate の per_stage 補助計測 -63.7% と独立一致)、backward_raster が単独最大ブロックとしてさらに優位 (33.86%→40.07%)。詳細は `p3-kernel-share-post-s3.toml` §6 に追記。(3) **累計 ablation**: p2 の 8 段 (Phase0 766.07s → S3 151.70s) に M4 (127.53s、-14.9%) \u002F A7 (124.81s、-2.15%) \u002F M7 独立再計測 (124.39s、-0.33%、ほぼ noise level) を継ぎ足し、Phase 0 比 **-83.76%**。(4) **msplat 等価再比較**: p2-msplat-parity-final の計算手順を最終値で再計算。gap 分母は継続性のため block1 n=2 mean (164.69s) を維持 (msplat 側は再実行していない)。**wallclock gap 0.927×→0.755×**。throughput は avg splats を新 4 run の trapezoid 積分から自前算出 (321,637、旧値 322k とほぼ一致し手法の妥当性を裏づける) して **1.135×負け→0.926×勝ち** (ただし msplat 側 avg splats ~165k は p2 からの借用値で本 session では再導出できておらず、逆転が成立するのはこの借用値の誤差が +8.0% 未満の場合に限る、§4 callout 参照)。brush\u002Fwhite PSNR は既存 final.ply に対し `splat eval` を回して再計測し (新規 GPU 学習 run は不要)、両 convention とも旧値からほぼ不変 (brush +2.01dB \u002F white -1.11dB) — M4\u002FA7 は PSNR trajectory に理論上影響しない施策なので想定どおり。matched-iteration (30K vs 30K) \u002F matched-wallclock (旧 13.3k 点) \u002F matched-PSNR(brush) の旧 6.0k 点 \u002F energy は**新規 GPU run が必要なため本 session では再計測せず**、旧スタック値を明示ラベルで carry forward するに留めた (外挿スケーリングによる偽の精度を避ける、advisor レビュー指摘)。(5) **Pareto v3**: `make_msplat_pareto.py` の入力を msplat 等価比較 4 点 Pareto curve (p2-msplat-parity-final §10 の未実施項目) に更新し `docs\u002Ffigures\u002Fpareto-v3-msplat-lego-final-stack.png` を生成。12.5k 点のみ最終スタック値、他 3 点 (6.0k\u002F13.3k\u002F30k) と msplat は旧スタック値のまま明示ラベル。","\u002Ffindings\u002Fp3-final-stack\u002F",{"id":56,"title":894,"date":801,"status":10,"polarity":895,"category":11,"axes":896,"tags":897,"task_code":905,"related_runs":906,"delta_psnr":917,"delta_wallclock":918,"rank":919,"verdict":920,"impact_summary":921,"detail_path":922},"C2 施策 #4 — refine tick drain の non-draining 化。drain は構造的に必須、snapshot read の GPU blit 化 (`refine_gpu_snapshot`) は 12.5k n=3 gate で棄却","negative",[14,15],[56,898,899,900,901,902,903,805,904],"c2","refine","gpu-snapshot","drain","non-draining","in-flight-invariant","gate-rejected","C2 施策 #4: refine tick drain の non-draining 化",[907,908,909,910,911,912,913,914,915,916],"refine-nondrain-smoke-1000-gpu-snapshot","refine-nondrain-smoke-1000-off","rnd-12500-off-r1","rnd-12500-on-r1","rnd-12500-off-r2","rnd-12500-on-r2","rnd-12500-off-r3","rnd-12500-on-r3","rnd-12500-prof-off (instrumentation-only, n=1, not in gate stats)","rnd-12500-prof-on (instrumentation-only, n=1, not in gate stats)","12.5k n=3 gate: on mean 36.1937dB (36.179\u002F36.203\u002F36.199) vs off mean 36.1383dB (36.113\u002F36.187\u002F36.115) = **+0.0553dB**、guard (-0.05dB 以内) は pass。gradient 非変更の bit-exact 設計のため理論上は差が出ないはずで、この +0.055dB は backward atomic の run-to-run noise とみなすのが妥当 (`p3-s4b-ssim-reduce` と同型の解釈)","12.5k n=3 gate (2026-08-30, off→on×3): train elapsed off mean **122.6467s** (σ 0.330%) → on mean **122.3567s** (σ 0.301%) = Δ **-0.2365%**。有意閾値 max(2σ_off,1%)=1.000% の 24% にしか届かず不通過。advisor 試算 (-1.2〜-1.9%) を大きく下回る null 結果、pair 一貫性も 2\u002F3 に留まる (§7 参照)","low","structural-drain-necessity-confirmed \u002F snapshot-read-gpu-blit-implemented \u002F gate-rejected-null-effect","`p3-c2-bubble-attribution` §6 施策 #4 (refine tick drain の non-draining 化、期待 -1.5〜-2.5%) を検討・実装した。\u003Cstrong>advisor との構造分析で「drain 自体は構造的に必須、縮められるのは中身」と reframe\u003C\u002Fstrong>: `Depth2Pipeline::step` の `B_it` 統合 CB は Adam encoder で param\u002Fadam 全 15 buffer を書き換えるため、`refine()` の snapshot read はこの書き込み完了 (`wait(B_it)`) を待たないと race になる。task が提示した候補 (a) tick を `B_it` commit 直後に前倒し、(b) 候補選定だけ先に走らせる 2 段化、(c) 再充填コスト削減 は、いずれも「`B_it` の GPU 実行中に host が snapshot を読む\u002F書く」という同じ race を踏むか、staleness (1 tick 分古い grad\u002Fparam を使う意味論変更) を受け入れる必要があり、後者は `p3-refine-every-200` (densify 予算副作用で PSNR guard 8.4 倍超過、棄却) と同種のリスクを持つ。一方、advisor が提案した第 4 の道 (host memcpy を GPU blit に置き換えて `B_it` CB 自体を延長する) は staleness を一切受け入れずに host の逐次コピーコストを消せる — \u003Cstrong>これを `[backend] refine_gpu_snapshot` として実装した\u003C\u002Fstrong>。snapshot 対象 15 buffer のうち `raw_opacities` (opacity decay が blit 後に書き換える) を除く 14 buffer を、Adam encoder 直後に追加した 1 blit command encoder (14 `copy_from_buffer`) で GPU 側 mirror buffer にコピーし、`refine()` はその mirror を読む。安全性は 2 層: (1) encode 時点で `pipeline::refine_tick_wants_gpu_snapshot` が「Adam が同一 CB 内で完了するか (`!grad_rmw_pending`)」「`wait(B_it)` 後に MCMC noise\u002Frelocation がこれらの buffer を触らないか」を判定し、条件を満たさない tick では blit を encode しない、(2) `refine()` 側は `gpu_snapshot_ready_for.take() == Some(it)` のときだけ消費し、iteration が食い違えば (万一 (1) の判定が pipeline とズレても) 無条件に host snapshot へフォールバックする — 誤った iteration の値を使うバグが構造的に起きない設計。`cargo test --workspace --release` 全 pass (0 failed、新規 5 test 込み)。1000 iter smoke (Lego) で crash なし、`refine_gpu_snapshot: true` が実際に解決され `ts_refine_snapshot_blit` が refine tick 数 (6 回) と一致する回数だけ発火することを確認。\u003Cstrong>2026-08-30、main 上で 12.5k n=3 交互 A\u002FB gate (off→on×3) を実施\u003C\u002Fstrong>: train elapsed (internal timer) off mean 122.6467s (σ 0.330%) → on mean 122.3567s (σ 0.301%) = Δ **-0.2365%**。有意閾値 max(2σ_off,1%)=1.000% の **24%** にしか届かず、pair 一貫性も 3 組中 2 組 (r1: -0.788%, r2: -0.082%) が on 優位、r3 (+0.163%) は逆方向という系統性の無い結果。事前の advisor 試算 (-1.2〜-1.9%) が明記した「pessimistic ケースでは不通過もあり得る」を超え、実測は pessimistic ケースの想定 (max(2σ,1%) 近傍での僅差) よりもさらに小さい、実質ノイズ水準の null 結果だった。PSNR は +0.0553dB で guard (-0.05dB 以内) を pass するが、wallclock が閾値に遠く及ばないため\u003Cstrong>棄却確定、`refine_gpu_snapshot` の default は false のまま維持、code は変更しない\u003C\u002Fstrong>。汚染判定 (`p3-tier1-bit-exact.toml` §5 の事前登録条件、load spike AND 3σ超 の AND) は off-r1 の load1 window mean が他 run よりやや高い (2.41 vs 0.80-1.38) ものの偏差 1.07σ (\u003C3σ) で条件不成立、かつ off-r1 を除外しても Δ は -0.060% とさらに小さくなるだけで結論は変わらないため retry は実施しなかった。","\u002Ffindings\u002Fp3-refine-nondrain\u002F",{"id":55,"title":924,"date":801,"status":10,"polarity":875,"category":925,"axes":926,"tags":927,"task_code":935,"related_runs":936,"delta_psnr":-1,"delta_wallclock":-1,"rank":-1,"verdict":-1,"impact_summary":-1,"detail_path":943},"S4b — read_mean_ssim を gpu に移す ssim_reduce flag、採用確定 (2026-08-30 gate)","implementation",[14,15],[928,898,929,930,931,932,933,934],"s4b","ssim-reduce","gpu-reduction","host-lagged","pipelining","gate-adopted","default-flip","S4b: read_mean_ssim を gpu\u002Fhost_lagged で移動する ssim_reduce flag 実装 + 12.5k gate",[937,938,939,940,941,942],"splat\u002Fruns-logs\u002Fs4b-12500-off-r1.log","splat\u002Fruns-logs\u002Fs4b-12500-on-r1.log","splat\u002Fruns-logs\u002Fs4b-12500-off-r2.log","splat\u002Fruns-logs\u002Fs4b-12500-on-r2.log","splat\u002Fruns-logs\u002Fs4b-12500-off-r3.log","splat\u002Fruns-logs\u002Fs4b-12500-on-r3.log","\u002Ffindings\u002Fp3-s4b-ssim-reduce\u002F",{"id":59,"title":945,"date":946,"status":10,"polarity":947,"category":11,"axes":948,"tags":950,"task_code":962,"related_runs":963,"delta_psnr":973,"delta_wallclock":974,"rank":62,"verdict":975,"impact_summary":976,"detail_path":977},"最終スタック msplat 等価比較 — wallclock 0.927× \u002F throughput 1.135× \u002F energy 0.906×、matched 断面は convention で割れる","2026-08-17","mixed",[14,949,15],2,[951,952,953,954,955,956,957,958,959,805,960,961],"1x-roadmap-v2","msplat","parity","baseline","cross-eval","eval-convention","thermal-interleave","energy","throughput","m4-max","thesis-ready","2026-08 1× 工程表 v2 — 最終段 (msplat 等価比較 matched 断面込み)",[964,965,966,967,968,969,970,971,972],"final-parity-12500-r1","final-parity-12500-r2","final-parity-12500-r3","final-parity-12500-r4","final-parity-12500-r5","final-parity-13300","final-parity-6000","final-parity-30000","final-parity-30000-r2","brush convention (同一 evaluator q8、msplat 30K best 34.243 dB 基準): 本実装 12.5k **+1.97 dB** \u002F 13.3k (matched-wallclock) **+1.94 dB** \u002F 6.0k **+0.67 dB** \u002F 30k **+2.26 dB**。white convention (msplat 30K 最小 36.252 dB 基準): 12.5k **-1.10 dB** \u002F 13.3k **-1.17 dB** \u002F 30k **-0.81 dB** — **matched 点は 30k まで延ばしても存在しない**","12.5k 152.68s vs msplat 30K 164.69s = **0.927×** (train elapsed、**block 1 interleave の n=2 mean 同士**)。msplat の characterization 値は n=4 mean **165.42s** だが、gap の分母には interleave pair である block 1 n=2 (164.69s) を使う (n=4 を分母にすると 0.923×)。process wallclock では 155s vs 168.5s = **0.920×**。matched-wallclock は 13,300 iter = 165.85s (msplat block1 mean 164.69s の **1.007×**)。matched-PSNR (brush) は 6,000 iter = 51.60s = **0.313×**。matched-iteration (30K vs 30K、co-located anchor) は 479.91s vs 166.15s = **2.888×**。前回 (2026-08-16) の 2.10× から反転","wallclock-and-energy-won-psnr-convention-split","1× 工程表 v2 の最終段を通し、卒論 §5 の direct comparison を確定させた。\u003Cstrong>本実装 Lego 12.5k = 152.68s \u002F msplat 30K = 164.69s (block 1 interleave pair の n=2 mean 同士) で wallclock gap 0.927×\u003C\u002Fstrong> — 2026-08-16 の同一 protocol 実測 2.10× から \u003Cstrong>2.27 倍の改善\u003C\u002Fstrong>で、初めて convention 非依存の軸で msplat を下回った。\u003Cstrong>per-splat·iter throughput も 2.62× → 1.135×\u003C\u002Fstrong> と near-parity まで詰まっており、「本実装は workload 形状 (少 iter × 多 splats) で勝っているだけで kernel は遅い」という 2026-08-16 時点の解釈は\u003Cstrong>もはや成立しない\u003C\u002Fstrong>。エネルギーも \u003Cstrong>GPU 0.906× \u002F package 0.896×\u003C\u002Fstrong> と反転したが、機構は counter session (低 W × 長時間) から \u003Cstrong>同 W × 短時間\u003C\u002Fstrong>へ完全に入れ替わっている (W 比 0.704× → 0.978×) — S3 が GPU busy を 77.5 → 91.3% に上げた以上、低 W は原理的に維持できない。\u003Cstrong>一方 PSNR の matched 断面は convention 依存のまま\u003C\u002Fstrong>: brush では 6.0k (0.313×) で msplat 30K を上回り、white では 30k (2.888×) でも -0.81 dB。roadmap v2 が「msplat native 比 -0.34 dB」と留保していた差は、\u003Cstrong>30k まで延ばしても self-eval が 36.455 dB で天井\u003C\u002Fstrong>になることから \u003Cstrong>iter 予算の不足ではなく評価 convention の差\u003C\u002Fstrong>と確定した (Phase H の 36.384 dB 天井とも整合)。よって当該留保は「解消」ではなく\u003Cstrong>撤回\u003C\u002Fstrong>し、convention 別の 2 断面に置き換える。","\u002Ffindings\u002Fp2-msplat-parity-final\u002F",{"id":57,"title":979,"date":980,"status":10,"polarity":875,"category":981,"axes":982,"tags":983,"task_code":992,"related_runs":993,"delta_psnr":994,"delta_wallclock":995,"rank":62,"verdict":996,"impact_summary":997,"detail_path":998},"Phase G omnibus — 速度改善 4 candidate × 8 scene の Pareto landscape 確定、**G.3 alone 30k = universal quality improvement** (+0.107 dB \u002F +10% wall)","2026-05-26","audit",[14],[984,985,986,987,988,989,990,23,991],"p1-axis1","phase-g","omnibus","pareto-front","sh-progressive","early-stop","brush-comparison","calibration","P1 Phase G omnibus",[],"**G.3 alone 30k = +0.107 dB universal mean** (7\u002F8 scene improve)、Lego +0.278 \u002F mic +0.244 \u002F chair +0.142 \u002F materials +0.125","**G.3 alone 30k = +10.2%** (mean、scene 依存 +5-50%)、G.1 stop15k = -62%、G.1+G.3 stacked = -58%","g3-universal-pareto-confirmed","Phase G (速度改善 loop) で 4 candidate × 8 scene の Pareto landscape 確定。\u003Cstrong>結論\u003C\u002Fstrong>: **G.3 alone 30k = universal quality improvement** (8 scene mean **33.592 dB**、Phase D 33.485 比 **+0.107 dB**、7\u002F8 scene で win、wallclock +10.2%、splats +29%)、特に **mic は stacked で -6.05 dB だったが G.3 alone なら +0.244 dB 救済**。\u003Cstrong>G.1 stop15k\u003C\u002Fstrong> は dense scene で acceptable (Lego\u002Fchair\u002Fhotdog で Phase D 比 -0.5 dB 圏内) も sparse scene で大幅劣化 (mic -5.84\u002Fficus -1.79)、8 scene mean -1.39 dB で Pareto worse、brush parity (32.86) を -0.76 dB 下回り。\u003Cstrong>G.1+G.3 stacked\u003C\u002Fstrong> は Lego-specific Pareto sweet spot (16m13s \u002F 36.254 dB \u002F +0.15 dB) だが multi-scene mean 31.998 dB で stacked \u003C G.1 alone、SH warmup の効果が early stop で truncate されて sparse scene で逆効果 (ficus -3.15、mic -6.05)。\u003Cstrong>G.2 audit\u003C\u002Fstrong> は 4.7× gap が architectural dispatch (Burn\u002FCubeCL 内部 batching vs Metal 直 per-kernel sync) と判明、Phase F 5 連続 falsification への統一的説明、kernel\u002Falgorithm 軸では覆せない構造的 finding。\u003Cstrong>axis 1 future work ROI 階層\u003C\u002Fstrong>: \u003Cstrong>algorithmic compute reduction > architectural dispatch > kernel-level micro-opt\u003C\u002Fstrong>。Phase G が axis 1 「Apple Silicon native 最適化の ROI 階層」を構造的に確定、卒論 §5.4 narrative の集大成。","\u002Ffindings\u002Fp1-axis1-phase-g-pareto-landscape\u002F",{"id":58,"title":1000,"date":1001,"status":10,"polarity":895,"category":11,"axes":1002,"tags":1003,"task_code":1010,"related_runs":1011,"delta_psnr":1016,"delta_wallclock":1017,"rank":62,"verdict":10,"impact_summary":1018,"detail_path":1019},"A.10 variance baseline — σ ±0.32 dB \u002F range 0.885 dB を実測","2026-05-23",[15],[1004,1005,1006,1007,1008,1009],"phase-5","variance","gpu-non-determinism","kahan","atomic","apple-silicon","A.10",[1012,1013,1014,1015],"lego-sh3-30k","lego-variance-trial1-30k","lego-variance-trial2-30k","lego-variance-trial3-30k","σ ±0.32 dB \u002F range 0.885 dB","σ ±2.4% \u002F range 5.2%","M-3.x lego sh3 30k の PSNR variance は σ ±0.32 dB \u002F range 0.885 dB (4 run estimate)、wallclock variance は σ ±2.4% \u002F range 5.2%。原因は SIMD backward kernel の atomic_fetch_add 順序非決定性で、A.10 Kahan で消えない (compensator も bit-identical のところ)。卒論 finding として「Apple Silicon の variance band は数値精度の問題でなく GPU scheduler 由来」と確定。","\u002Ffindings\u002Fa-10-variance-baseline\u002F",1790227327647]