[{"data":1,"prerenderedAt":350},["ShallowReactive",2],{"finding:p2-msplat-parity-lego":3,"finding-runs:p2-msplat-parity-lego":223,"finding-related:p2-msplat-parity-lego":245},{"meta":4,"impact":43,"sections":49},{"id":5,"title":6,"subtitle":7,"eyebrow":8,"date":9,"status":10,"category":11,"polarity":12,"axes":13,"tags":16,"task_code":28,"commit":29,"branch":30,"config_paths":31,"related_runs":34,"related_findings":37},"p2-msplat-parity-lego","P2 msplat parity — 同日等価比較で msplat 30K = 167.7s \u002F 36.5 dB、gap は 12.5k で 2.10× (matched-wallclock 7.5k は 1.08× で brush +0.94 dB)","msplat wheel v1.1.3 と本実装 default スタック (resident + last_contributor、profile=false) を \u003Cstrong>同日・同一 M4 Max・同一 init 点群 (culled init.ply 5207 pts)・同一 evaluator\u003C\u002Fstrong> で interleave 実行。msplat 30K は \u003Cstrong>167.7s \u002F native val 36.53 dB \u002F 190-195k splats\u003C\u002Fstrong> — 2026-06 spike (219.8s \u002F 35.48 dB) より 24% 速く 1.05 dB 高く、\u003Cstrong>従来の gap 1.53× は過小評価で実際は 2.10×\u003C\u002Fstrong> (12.5k 352.3s 比)。PSNR 断面は convention coupling が支配的: \u003Cstrong>brush convention (premultiplied GT) cross-eval では本実装 12.5k 36.27 dB vs msplat 34.47 dB (+1.79 dB)\u003C\u002Fstrong>、\u003Cstrong>white-bg convention では msplat 36.28 dB vs 本実装 35.19 dB (-1.09 dB)\u003C\u002Fstrong> と、同一 evaluator でも各実装が自分の学習 convention で勝つ。convention 非依存の事実は wallclock (2.10× @ 12.5k、1.08× @ 7.5k) と per-splat·iter throughput (msplat ~2.6× 高速: 33.9 vs 88.9 ns\u002Fsplat·iter)。","P2 gap sweep · Phase 3 · msplat 等価比較 (parity)","2026-08-16","stable","experiment","mixed",[14,15],1,2,[17,18,19,20,21,22,23,24,25,26,27],"gap-sweep","phase-3","msplat","parity","baseline","cross-eval","eval-convention","thermal-interleave","lego","m4-max","thesis-ready","2026-08 msplat gap sweep Phase 3 (parity 再計測)","2fb75544541d","main",[32,33],"splat\u002Fconfigs\u002F2026-08-16-lego-parity-noprof-12500.toml","splat\u002Fconfigs\u002F2026-08-16-lego-parity-noprof-7500.toml",[35,36],"lego-parity-noprof-12500","lego-parity-noprof-7500",[38,39,40,41,42],"p1-msplat-baseline-spike","p2-last-contributor","p2-c0-resident-binning","p2-gap-sweep-baseline","p1-a-3-cross-eval-reproducer",{"summary":44,"rank":45,"verdict":46,"delta_psnr":47,"delta_wallclock":48},"gap sweep の公式 gap 数値を \u003Cstrong>同日・同一条件の実測で確定\u003C\u002Fstrong>: Lego 12.5k vs msplat 30K の wallclock gap は \u003Cstrong>2.10×\u003C\u002Fstrong> (352.3s vs 167.7s、両者 profiling なし) — Phase 2 の 1.53× は spike の古い msplat 値 (219.8s) 起因の過小評価だった。一方 \u003Cstrong>matched-wallclock 断面 (本実装 7.5k = 181.4s、msplat の 1.08×)\u003C\u002Fstrong> では brush convention の同一 evaluator cross-eval で本実装が \u003Cstrong>+0.94 dB\u003C\u002Fstrong> (35.41 vs 34.47)。PSNR 比較は eval convention に強く依存し (white-bg では msplat +1.09 dB)、p1-a-3 の「訓練\u002F評価 convention coupling」を第三者実装との比較で再実証した。msplat の native 品質が spike 比 +1.05 dB 向上した主因は今回の対称条件 (同一 culled init.ply 5207 pts・train 100 view 全量・常時フル解像度) にあり、msplat 側の条件を今回初めて本実装と揃えた結果。卒論 §5 の direct comparison 表はこの数値で置き換える。","high","parity-established-gap-2.10x-convention-coupled-psnr","brush convention (同一 evaluator): 本実装 12.5k +1.79 dB \u002F 7.5k +0.94 dB (vs msplat 30K q8 34.47)。white-bg convention: msplat +1.09 dB (36.28 vs 本実装 12.5k 35.19)","msplat 30K 167.7s vs 本実装 12.5k 352.3s = **2.10×** (両者 profile なし・同日実測)。matched-wallclock: 7.5k 181.4s = 1.08×。従来の 1.53× (spike 値 220s 基準) は撤回",[50,53,58,61,114,116,152,154,188,190,193,200,202,207,209,213,215],{"type":51,"text":52},"lead","msplat (rayanht, PyPI wheel v1.1.3) と本実装 (commit 2fb7554、default = binning resident + last_contributor) を、\u003Cstrong>msplat → splat 12.5k → msplat → splat 7.5k の interleave 直列実行\u003C\u002Fstrong> (thermal 打ち消し) で同日比較した。dataset は同一 (NeRF Synthetic lego 800×800)、init 点群は本実装と同じ cull (||pos|| ≤ 1.5) を適用した \u003Cstrong>同一の 5207 点\u003C\u002Fstrong>、学習 view は両者とも train 100 view 全量、eval は \u003Cstrong>両実装の final PLY を同じ `splat eval` (val 100 view) に通す cross-eval\u003C\u002Fstrong>。wallclock は両者とも profiling オーバーヘッドなし。",{"type":54,"label":55,"variant":56,"text":57},"callout","Headline","warning","\u003Cstrong>msplat 30K = 167.7s \u002F native 36.53 dB \u002F 190-195k splats\u003C\u002Fstrong> — 2026-06 spike (219.8s \u002F 35.48 dB \u002F 208k) より速く・高品質。従来引用してきた \u003Cstrong>gap 1.53× は過小評価で、実際の同日 gap は 2.10× (12.5k) \u002F 1.08× (7.5k)\u003C\u002Fstrong>。PSNR は同一 evaluator でも convention で勝敗が反転する (brush: 本実装 +1.79 dB、white-bg: msplat +1.09 dB) — 「速さの msplat vs 品質+robustness の本実装」という Pareto 直交 narrative 自体は維持されるが、\u003Cstrong>品質優位は『本実装の学習 convention (premultiplied) 下で』という限定付き\u003C\u002Fstrong>に修正が必要。",{"type":59,"text":60},"heading","1. 実測サマリ (M4 Max、同日 interleave、wallclock は train loop のみ)",{"type":62,"columns":63,"align":71,"rows":74,"caption":113},"table",[64,65,66,67,68,69,70],"run (実行順)","iter","wallclock","final splats","自己 eval PSNR","brush cross-eval (q8)","white-bg cross-eval",[72,73,73,73,73,73,73],"left","right",[75,83,91,98,106],[76,77,78,79,80,81,82],"msplat r1","30,000","167.85s","190,674","36.539 (white, native)","33.049","36.247",[84,85,86,87,88,89,90],"splat 12.5k #1","12,500","352.27s","407,572","36.236 (brush, trainer)","36.265","35.185",[92,77,93,94,95,96,97],"msplat r2","167.48s","194,986","36.513 (white, native)","34.470","36.277",[99,100,101,102,103,104,105],"splat 7.5k","7,500","181.36s","346,860","35.388 (brush, trainer)","35.411","33.990",[107,85,108,109,110,111,112],"splat 12.5k rep2 (参考、非 interleave)","385.25s","412,688","36.140 (brush, trainer)","36.166","35.081","実行順そのまま (interleave)。「自己 eval」= 各実装が学習と同じ convention で測る値 (msplat: white-bg GT + float render、splat: premultiplied GT)。「brush cross-eval (q8)」= 両 PLY を \u003Ccode>splat eval --convention brush --quantize-8bit\u003C\u002Fcode> (val 100 view) に通した同一 evaluator 値。「white-bg cross-eval」= 両 PLY を本実装 renderer で描画し α 合成で white-bg 化して white GT と比較 (8-bit RGBA 経由)。splat 側の brush cross-eval が trainer 値と一致 (36.236\u002F35.388) することで evaluator の整合性を確認済み。",{"type":59,"text":115},"2. 2026-06 spike との差分 (msplat 側)",{"type":62,"columns":117,"align":122,"rows":123,"caption":151},[118,119,120,121],"項目","spike (2026-06-26)","本日 (2026-08-16)","差",[72,73,73,73],[124,129,134,138,143,147],[125,126,127,128],"wallclock (30K)","219.8s","167.7s (×2 mean)","**-52.1s (-23.7%)**",[130,131,132,133],"PSNR (msplat 自己 eval)","35.48 dB","36.53 dB","**+1.05 dB**",[67,135,136,137],"208,215","190,674 \u002F 194,986","-15k",[139,140,141,142],"init 点群","不明 (spike 記録なし)","**本実装と同一の culled init.ply 5207 点 (色付き)**","対称化",[144,145,146,142],"学習 view","不明 (eval_mode holdout の可能性)","train 100 view 全量 (本実装と同一)",[148,149,150,142],"解像度スケジュール","不明","num_downscales=0 (常時 800×800、本実装と同一)","spike の実行条件 (init \u002F holdout \u002F downscale) は記録が残っておらず、本日の対称条件が spike と異なる可能性が高い。msplat が spike より速く・高品質になった主因は「良い init 点群 + 全 view 学習」と推定され、msplat 実装自体の変化ではない (同じ wheel v1.1.3)。\u003Cstrong>今後の比較は本 finding の数値を正とする\u003C\u002Fstrong>。",{"type":59,"text":153},"3. 公式 gap 断面 (2 断面 + throughput)",{"type":62,"columns":155,"align":160,"rows":161,"caption":187},[156,157,158,159],"断面","比較","wallclock 比","PSNR 差 (同一 evaluator)",[72,72,73,72],[162,167,172,177,182],[163,164,165,166],"**matched-PSNR (brush conv)**","splat 7.5k (35.41 dB) > msplat 30K best (34.47 dB)","**1.08×** (181.4s vs 167.7s)","brush conv では msplat 30K の到達 PSNR を 7.5k で +0.94 dB 上回る — matched-PSNR gap は **≤1.08×**",[168,169,170,171],"**matched-PSNR (white conv)**","msplat 36.28 dB に対し本実装 12.5k で 35.19 dB","12.5k = 2.10×","white conv では本実装 Pareto 上に matched 点が**存在しない** (12.5k でも -1.09 dB)",[173,174,175,176],"**matched-wallclock**","msplat 167.7s ≈ splat 7.5k 181.4s (1.08×)","≈1×","brush: 本実装 +0.94 dB \u002F white: msplat +2.29 dB",[178,179,180,181],"**12.5k 公式点**","splat 12.5k vs msplat 30K","**2.10×** (352.3s vs 167.7s)","brush: +1.79 dB \u002F white: -1.09 dB",[183,184,185,186],"per-splat·iter throughput","mean splats 正規化 (splat 317k \u002F msplat 165k)","msplat **~2.6×**","28.18 ms\u002Fiter ÷ 317k = 88.9 ns vs 5.59 ms\u002Fiter ÷ 165k = 33.9 ns per splat·iter","wallclock gap の正式値: \u003Cstrong>12.5k 点で 2.10×、matched-wallclock 点 (7.5k) で 1.08×\u003C\u002Fstrong>。iter 数 (12.5k vs 30K)・splats 数 (407k vs 193k) は全行で非対称であり、本実装は少 iter ×多 splats、msplat は多 iter ×少 splats という workload 構造の違いがある。per-splat·iter では msplat が ~2.6× 高速 — kernel-level の速度差は Phase 2 (C0+LC で -56%) 後もなお残る。",{"type":59,"text":189},"4. eval convention coupling — PSNR 勝敗は convention で反転する",{"type":54,"label":191,"variant":56,"text":192},"メカニズム (p1-a-3 の再実証)","msplat は white-bg composite で学習するため、半透明領域の色は「white 合成後に GT と一致する」よう最適化される。これを premultiplied (bg=0) で評価すると背景 haze と edge の色 shift が systematic に乗り、native 36.53 → brush cross-eval 34.47 (q8) に -2.1 dB 低下する。逆に本実装 (premultiplied 学習) を white-bg で評価すると 36.24 → 35.19 に -1.05 dB 低下する。\u003Cstrong>同一 evaluator・同一 renderer でも、各実装は自分の学習 convention で勝つ\u003C\u002Fstrong> — PSNR 単一値の直接比較は原理的に convention の選択を含み、卒論では両断面を並記する。",{"type":194,"items":195},"list",[196,197,198,199],"\u003Cstrong>brush conv no-quant の罠\u003C\u002Fstrong>: msplat PLY の raw float render は [0,1] 外への overshoot を含み、clamp なし比較では 21.1 dB まで崩壊する (8-bit quantize = clamp 込みで 33.0-34.5 dB に回復)。本実装は overshoot がほぼなく q8 差 +0.03 dB。\u003Cstrong>msplat 側の brush 数値は q8 (clamp 込み) を公式とする\u003C\u002Fstrong>。","\u003Cstrong>white-bg cross-eval の測定条件\u003C\u002Fstrong>: 本実装 renderer で両 PLY を描画し、8-bit RGBA PNG 経由で α 合成 → white GT と比較。msplat native (float、msplat renderer) の 36.53 に対し同 PLY で 36.28 — renderer 差 + 8-bit 量子化で -0.25 dB。この -0.25 dB は両実装の PLY に同じ経路を通すことで対称化されている。","\u003Cstrong>evaluator 整合性の確認\u003C\u002Fstrong>: 本実装 final.ply の brush cross-eval (36.236 \u002F 35.388) が trainer 内部の final val PSNR と一致 (\u003C 0.001 dB) — eval CLI と trainer eval の等価性を確認。","\u003Cstrong>非決定性\u003C\u002Fstrong>: msplat は同条件 2 run で final splats 190,674 \u002F 194,986、brush cross-eval 33.05 \u002F 34.47 (1.4 dB 差、native では 0.03 dB 差)。本実装も 12.5k 2 run で 36.236 \u002F 36.140 (0.10 dB 差)。convention mismatch 下の cross-eval は run 間分散が増幅される。",{"type":59,"text":201},"5. wallclock の信頼区間と profile=false の効果",{"type":194,"items":203},[204,205,206],"本実装 12.5k は同日 2 run で \u003Cstrong>352.27s \u002F 385.25s\u003C\u002Fstrong> (interleave 1 run 目 \u002F 直後の連続 rep2)、公式 (profile=true、Phase 2 時) は 336.33s。\u003Cstrong>profile=false による短縮は観測されず\u003C\u002Fstrong>、run 間分散 (~10%、thermal \u002F OS jitter) が profiling オーバーヘッドを上回る。gap 計算には interleave protocol 下の 352.27s を使用 (336.33s 基準なら 2.01×)。","msplat は 2 run で 167.85s \u002F 167.48s (0.2% 差) と極めて安定。単一 encoder ×30K dispatch の構造は thermal \u002F jitter の影響を受けにくい。","wallclock の定義: 両者とも train loop のみ (dataset load \u002F PLY export \u002F eval を除外)。msplat は Python 側 perf_counter、本実装は trainer 内 Instant。",{"type":59,"text":208},"6. 再現手順",{"type":210,"lang":211,"text":212},"code","bash","# msplat 環境 (wheel v1.1.3)\nuv venv msplat-venv --python 3.12\nuv pip install --python msplat-venv\u002Fbin\u002Fpython \"msplat==1.1.3\" numpy pillow\n\n# dataset 変換 (blender lego → nerfstudio 形式、white-bg composite + culled init.ply)\nLEGO=\u002FUsers\u002Fotkrickey\u002Fdev\u002F3dgs-workspace\u002Fdatasets\u002Fnerf_synthetic\u002Flego\npython docs\u002Fstrategy\u002Fmsplat_parity_lego.py convert --lego $LEGO --out \u002Ftmp\u002Flego-ns\n\n# interleave 実行 (msplat → splat 12.5k → msplat → splat 7.5k)\npython docs\u002Fstrategy\u002Fmsplat_parity_lego.py train --dataset \u002Ftmp\u002Flego-ns --lego $LEGO \\\n  --iters 30000 --out-ply msplat-r1.ply           # → 167.85s \u002F 36.539 dB\n( cd splat && .\u002Ftarget\u002Frelease\u002Fsplat train \\\n  --config configs\u002F2026-08-16-lego-parity-noprof-12500.toml )  # → 352.27s \u002F 36.236 dB\n# (msplat r2, splat 7.5k を同様に)\n\n# cross-eval (同一 evaluator)\npython docs\u002Fstrategy\u002Fmsplat_parity_lego.py convert-ply --inp msplat-r1.ply --out msplat-r1-brush.ply\nsplat\u002Ftarget\u002Frelease\u002Fsplat eval --ply msplat-r1-brush.ply --dataset $LEGO \\\n  --split val --convention brush --quantize-8bit\nsplat\u002Ftarget\u002Frelease\u002Fsplat eval --ply splat\u002Fruns\u002Flego-parity-noprof-12500\u002Ffinal.ply \\\n  --dataset $LEGO --split val --convention brush\n# white-bg cross-eval は 3dgs-workspace\u002Fmsplat-parity-20260816\u002Fwhite_eval.py\n",{"type":59,"text":214},"7. 卒論への反映と申し送り",{"type":194,"ordered":216,"items":217},true,[218,219,220,221,222],"\u003Cstrong>§5 direct comparison 表の更新\u003C\u002Fstrong>: msplat Lego 30K は 167.7s \u002F 36.53 dB (native) を正とし、spike 値 (219.8s \u002F 35.48 dB) は「初期 spike、条件非対称」と脚注化。gap は 2.10× (12.5k) \u002F 1.08× (7.5k) を併記。","\u003Cstrong>reframing narrative の修正\u003C\u002Fstrong>: 「Lego で +0.78 dB」という単純な品質優位の主張は不可 (convention 依存で反転する)。品質軸の主張は materials robustness (+21 dB、convention 非依存の破綻) と convention 明示性 (Phase A audit) に寄せる。","\u003Cstrong>convention coupling を §5 の独立トピックに\u003C\u002Fstrong>: 第三者実装との cross-eval で p1-a-3 の主張 (training\u002Feval convention は coupling する) を再実証した — 評価方法論の contribution として書ける。","\u003Cstrong>gap sweep Phase 3 の残作業\u003C\u002Fstrong>: Pareto plot v3 は本 finding の同日値で再生成する (make_msplat_pareto.py の入力更新)。","\u003Cstrong>msplat 側の PSNR が向上した事実\u003C\u002Fstrong>: 良 init + 全 view 学習で msplat は 36.5 dB に達する — spike の 35.48 は msplat の下限側だった。ベースライン数値は実行条件の記録が完全な場合のみ引用可、という protocol 教訓 (mcmc_noise_calibration_lesson と同型)。",[224,237],{"id":35,"title":35,"subtitle":225,"date":9,"workspace":226,"tags":227,"verdict":232,"psnr":233,"psnr_unit":-1,"wallclock":234,"splats":235,"summary_url":236,"detail_path":236},"msplat parity 比較 — Phase 2 default スタック (resident + last_contributor) 12.5k、profile=false の wallclock 実測","splat",[228,229,230,231],"p2-gap-sweep","msplat-parity","no-profile","lego-12500","partial",36.13956832885742,"6m 25s",412688,"\u002Fruns\u002Flego-parity-noprof-12500\u002F",{"id":36,"title":36,"subtitle":238,"date":9,"workspace":226,"tags":239,"verdict":232,"psnr":241,"psnr_unit":-1,"wallclock":242,"splats":243,"summary_url":244,"detail_path":244},"msplat parity 比較 — Phase 2 default スタック (resident + last_contributor) 7.5k (Phase H pareto の 35.51 dB 点)、profile=false の wallclock 実測",[228,229,230,240],"lego-7500",35.38779067993164,"3m 1s",346860,"\u002Fruns\u002Flego-parity-noprof-7500\u002F",[246,270,292,311,326],{"id":40,"title":247,"date":9,"status":10,"polarity":248,"category":11,"axes":249,"tags":251,"task_code":259,"related_runs":260,"delta_psnr":265,"delta_wallclock":266,"rank":45,"verdict":267,"impact_summary":268,"detail_path":269},"P2 gap sweep Phase 2 — C0 resident arena + C1 pass skip で -48.4% (bit-exact)","positive",[14,250],3,[17,252,253,254,255,256,257,258,25],"phase-2","c0-resident-arena","c1-radix-pass-skip","binning","bit-exact","unified-memory","page-fault","2026-08 msplat gap sweep Phase 2 C0\u002FC1",[261,262,263,264],"lego-c0-day0-attrib-1k","lego-c0-ab-periter-1k","lego-c0-ab-resident-1k","lego-c0-resident-12500","12.5k gate: 36.216 → 36.183 dB = -0.033 dB (bit-exact 実装、atomic 非決定性 guard ±0.1 内で通過)","12.5k gate: 766.07 → 395.59s = **-48.4%** (emit -98% \u002F radix -53% \u002F extract -81%)","c0-c1-adopted-default-flip-minus-48-percent","\u003Cstrong>単発 -48.4% は本 project 最大の 1 施策改善\u003C\u002Fstrong>で、msplat 実測 gap (11m48s vs 3m40s ≈ 3.2×、Lego 30k) を大幅に詰める lever が確定。766.07 → 395.59s は kernel を 1 行も触らず host 側 buffer 管理だけで達成 (bit-exact)。emit_pairs は 38.2% → 1.2% に消滅し、新 bottleneck は backward_raster 31.4% (→ 2-BWD last_contributor の trigger 25% を初超過) と radix_sort 11.7% (GPU compute 本体)。STP (feat.F) は emit の alloc 成分が消えた今、相対効果の再 bench が必要 (Phase 1a の -7.45% は大半が同じ page fault の削減で C0 と重複していた可能性が高い)。教訓: unified memory 環境の profiling では「GPU 時間」に host メモリ管理コストが化ける — per-kernel wallclock だけでなく buffer lifecycle を疑うこと。","\u002Ffindings\u002Fp2-c0-resident-binning\u002F",{"id":41,"title":271,"date":9,"status":10,"polarity":248,"category":11,"axes":272,"tags":273,"task_code":279,"related_runs":280,"delta_psnr":287,"delta_wallclock":288,"rank":45,"verdict":289,"impact_summary":290,"detail_path":291},"P2 gap sweep Phase 0\u002F1a — binning 55% 実測 + C0 発見 + StopThePop -7.45%",[14],[17,274,275,276,277,278,255,253,25],"phase-0","phase-1a","profiling","per-kernel-breakdown","stop-the-pop","2026-08 msplat gap sweep Phase 0 + 1a",[281,282,283,284,285,286],"lego-gap-baseline-12500","lego-stp-12500","lego-stp-ab-original-5k-r1","lego-stp-ab-original-5k-r2","lego-stp-ab-stp-5k-r1","lego-stp-ab-stp-5k-r2","STP 12.5k: 36.216 → 36.193 dB = -0.023 dB (guard -0.05 内で通過)","STP 12.5k: 766.07 → 708.96s = **-7.45%** (emit -10.5% \u002F radix -8% \u002F backward -6%)","binning-55-percent-c0-discovered-stp-marginal-go","\u003Cstrong>Phase 2 の主戦場が確定\u003C\u002Fstrong>: strategy doc の trigger 3 候補 (separable SSIM \u002F last_contributor \u002F SH-Adam fusion) は全て閾値不発、代わりに \u003Cstrong>binning 経路 55% の主犯 = per-iter ~1.25GB alloc + Vec 三重往復 (C0)\u003C\u002Fstrong> が最大 lever。C0 (persistent buffer arena、bit-exact、3-4 日) の期待は \u003Cstrong>wallclock -30〜39% (766→~470s) で単独 gap ≤2.0× 到達圏\u003C\u002Fstrong>。C1 (radix 定数桁 pass skip 16→11、bit-exact、0.5-1 日) が +4-5%。StopThePop は -7.45% で adoption gate (-8%) に僅差未達、default 維持のまま C0 後再判定。5 連敗の教訓「profiling が指す順」が機能した初の事例 — 事前決め打ちなら SSIM (5.2%) に突撃していた。","\u002Ffindings\u002Fp2-gap-sweep-baseline\u002F",{"id":39,"title":293,"date":9,"status":10,"polarity":248,"category":11,"axes":294,"tags":295,"task_code":300,"related_runs":301,"delta_psnr":306,"delta_wallclock":307,"rank":45,"verdict":308,"impact_summary":309,"detail_path":310},"P2 gap sweep Phase 2 — 2-BWD last_contributor で -15.0% (数学的同値)、STP 再判定は棄却",[14],[17,252,296,297,278,298,299,25],"2-bwd-last-contributor","backward","re-eval","function-constant","2026-08 msplat gap sweep Phase 2 2-BWD \u002F STP 再判定",[302,303,304,305],"lego-lc-smoke-1k","lego-p2lc-12500","lego-stp-c0-12500","lego-stack-lc-stp-12500","LC 12.5k gate: 36.183 → 36.191 dB = +0.008 dB (数学的同値実装、atomic 非決定性 guard ±0.1 内)","LC 12.5k gate: 395.59 → 336.33s = **-14.98%** (backward_raster -40.3%)。STP: -2.51% (gate 未達)、LC+STP スタック: 343.63s (LC 単独より +2.2%)","lc-adopted-minus-15-percent-stp-rejected-final","C0 (-48.4%) に続く Phase 2 第 2 弾で、backward 31.4% の新 bottleneck を kernel 側から -40.3% 削減。\u003Cstrong>Lego 12.5k = 336.33s で msplat 30K (220s) 比 1.53× まで縮小\u003C\u002Fstrong>し、gap sweep の目標 (≤2.0×) を達成した。実装は「forward が既に知っている打ち切り位置を backward に伝えるだけ」で数学的同値 — 品質を 1 bit も動かさずに backward の replay 計算量を ~40% 削った。STP 再判定は負の結果だが価値が高い: Phase 1a の -7.45% の正体が C0 と同じ page fault 削減だったことを分離実証し、「効果の重複を疑って再 bench する」protocol の正しさを裏付けた。次の bottleneck は forward rasterize 9.8% \u002F radix 13.5% \u002F SSIM 7.5% でいずれも trigger 25% 未達 — Phase 2 はここで完了、Phase 3 (再計測 + Pareto v3) へ。","\u002Ffindings\u002Fp2-last-contributor\u002F",{"id":38,"title":312,"date":313,"status":10,"polarity":12,"category":11,"axes":314,"tags":315,"task_code":319,"related_runs":320,"delta_psnr":321,"delta_wallclock":322,"rank":45,"verdict":323,"impact_summary":324,"detail_path":325},"msplat v1.1.3 baseline spike — M4 Max 実測、Lego 30K で 3m40s \u002F 35.48 dB、materials で densify 破綻","2026-06-26",[14,15,250],[19,21,316,26,317,318,27],"apple-silicon","nerf-synthetic","direct-comparison","P1 msplat spike (critical path)",[],"Lego: 本実装 +0.78 dB (Phase H 12500 vs msplat 30K)、materials: 本実装 +21.17 dB (Phase I 12500 vs msplat 7K broken)","Lego: msplat -3.2× (msplat 3m40s vs Phase H 11m48s)、chair 7K のみ msplat -63× (msplat 17.58s vs Phase I 18m35s)","critical-path-complete-A-confirmed","\u003Cstrong>msplat (rayanht) v1.1.3 を M4 Max で実測完了\u003C\u002Fstrong>。Lego 30K で 219.8s (3m40s) \u002F 35.48 dB \u002F 208k splats、chair 7K で 17.58s \u002F 33.81 dB を確認。\u003Cstrong>本実装 Phase H lego (11m48s \u002F 36.26 dB) に対し msplat は wallclock 3.2× 高速、ただし PSNR は -0.78 dB\u003C\u002Fstrong>。materials 7K では PSNR 8.80 \u002F splats 367 と densification が壊れた — msplat の scene robustness 弱点が判明し、本実装の \u003Cstrong>universal な density 動作\u003C\u002Fstrong>が明確な差別化軸として確定。\u003Cstrong>本実装 Phase I 8 scene のうち 5 scene が msplat lego 30K の 35.48 dB を上回る\u003C\u002Fstrong> (Lego 36.26 \u002F chair 35.88 \u002F hotdog 37.37 \u002F mic 36.62 \u002F drums は 27 のみ)。Pareto plot で msplat は左上 (速い + 中品質)、本実装は右側 (遅い + 高品質 + 全 scene robust) と vector が直交。本 spike により \u003Cstrong>A (Reframing narrative) の killer figure が確定\u003C\u002Fstrong>、\u003Cstrong>B (G.2 backport) は引き続き NO-GO\u003C\u002Fstrong> (msplat が既に kernel fusion + pre-allocated bins まで実装済、本実装が追いつく工数は大)、\u003Cstrong>E (msplat 著者接触) の materials bug 報告は良い PR ネタ\u003C\u002Fstrong>。","\u002Ffindings\u002Fp1-msplat-baseline-spike\u002F",{"id":42,"title":327,"date":328,"status":10,"polarity":329,"category":11,"axes":330,"tags":331,"task_code":342,"related_runs":343,"delta_psnr":345,"delta_wallclock":346,"rank":45,"verdict":347,"impact_summary":348,"detail_path":349},"P1.A.3 cross-eval reproducer — brush convention で 24.879 → 1.67 dB に崩壊、主仮説 falsify","2026-05-24","negative",[14,15,250],[332,333,334,335,336,337,338,339,340,341],"p1","phase-a","milestone-m1","brush-parity","eval","convention","psnr","premultiplied","reproducer","falsified-hypothesis","P1.A.3 + P1.A.4",[344],"lego-sh3-30k (splat-rs 24.879 dB legacy\u002Fval)","-23.21 dB (brush convention 化で 24.879 → 1.667)","N\u002FA (eval only)","hypothesis-falsified-stronger-finding","splat-rs `final.ply` (24.879 dB legacy\u002Fval baseline) を brush 準拠 convention (premultiplied GT + bg=ZERO 比較 + 8-bit roundtrip) で再評価すると **1.67 dB に崩壊**。audit §6 が予測した +3〜+5 dB 底上げと逆方向に -23 dB。原因は trainer が white-bg target で学習されており、背景領域を opaque-white splat で埋めるよう収束した結果、brush 流の bg=ZERO 比較では背景 pixel 全体で MSE≈1 が systematic に乗る。`view_00.png` 目視確認 (背景は白い不透明領域) で機構を確定。**training と eval の convention は coupling しており、eval pipeline だけ揃える apparent-gap 仮説は不成立**。卒研 P1.M2\u002FM3 に向けては「training loss も brush 化 (RGBA 4ch L1 を α=0 領域で背景に penalty を吹かさない構造)」が必須要件。8-bit quantize 単体の impact はほぼ無視可能 (legacy 24.879 → 24.879、brush 1.605 → 1.667、+0.06 dB)。","\u002Ffindings\u002Fp1-a-3-cross-eval-reproducer\u002F",1790227327180]