[{"data":1,"prerenderedAt":412},["ShallowReactive",2],{"finding:p1-axis1-phase-g3-sh-progressive":3,"finding-runs:p1-axis1-phase-g3-sh-progressive":256,"finding-related:p1-axis1-phase-g3-sh-progressive":309},{"meta":4,"impact":41,"sections":47},{"id":5,"title":6,"subtitle":7,"eyebrow":8,"date":9,"status":10,"category":11,"polarity":12,"axes":13,"tags":15,"task_code":28,"related_runs":29,"related_findings":35},"p1-axis1-phase-g3-sh-progressive","Phase G.3 SH-progressive — 5k smoke -14% は artifact、30k full は **quality improvement + 0.28 dB** に reframe、stacked + G.1 で **Pareto sweet spot** (Lego -61% wallclock + 0.15 dB)","Phase G compute reduction family の試行。**3 layer の結果検証** で headline が変化: (1) Lego 5k smoke で -13.9% wallclock + cascading splat -22% を観測したが (2) Lego 30k full では wallclock -2%、splats **+30%**、PSNR **+0.28 dB** — 5k smoke の cascading 効果は refine.stop_iter=1500 による artifact、30k では sh unlock (iter 3000) 後 refine が iter 15000 まで継続 → splats baseline より多く grow。(3) **G.1 + G.3 stacked (max_steps=15000 + sh_progressive)** で Lego 16m13s \u002F 36.254 dB \u002F 428k splats = Phase D 比 **-61% wallclock + 0.15 dB 改善** で **Pareto sweet spot**。**Key mechanism reframe**: sh_progressive は「speed win」ではなく「**quality improvement at no speed cost**」、stacked variant で early stop の speed と SH warmup の quality gain を統合。Phase F 5 連続 falsification + G.3 5k smoke artifact = audit overestimate 6 例目という calibration data。","P1 axis 1 · Phase G.3 · Pareto sweet spot · 5k smoke artifact reframed","2026-05-25","stable","design","positive",[14],1,[16,17,18,19,20,21,22,23,24,25,26,27],"p1-axis1","phase-g","sh-progressive","compute-reduction","pareto-front","lego-5k","lego-30k","stacked-config","implementation","unit-tests","bit-exact","smoke-artifact","P1 Phase G.3",[30,31,32,33,34],"lego-phase-g3-sh-progressive-5k","lego-phase-g3-sh-progressive-30k","lego-phase-g1g3-stacked-15k","lego-phase-f1-baseline-5k","lego-brushcompat-opacdecay-30k",[36,37,38,39,40],"p1-axis1-metal-opt-audit","p1-axis1-phase-g2-brush-dispatch-architecture","p1-axis1-phase-f1-emit-simd-falsified","p1-axis1-phase-f3-radix-gpu-prefix-falsified","p1-d-multi-scene-rechain",{"summary":42,"rank":43,"verdict":44,"delta_psnr":45,"delta_wallclock":46},"Phase G compute reduction family の G.3 (SH-progressive growth) を実装 + bit-exact unit tests (11 件、cargo test 43 件 全 pass) + **3 layer の Lego 結果検証**。\u003Cstrong>(1) 5k smoke\u003C\u002Fstrong>: wallclock -13.9% \u002F splats -22% \u002F PSNR -0.12 dB、cascading splat reduction を観測。\u003Cstrong>(2) 30k full validation\u003C\u002Fstrong>: wallclock **-1.9%** (5k から大幅縮小)、splats **+30%** (5k から逆転)、PSNR **+0.28 dB** (quality improvement!)。5k smoke の cascading 効果は refine.stop_iter=1500 による artifact、30k では sh unlock 完了 (iter 3000) 後に refine が iter 15000 まで full SH で継続 → splats baseline より grow。\u003Cstrong>(3) G.1+G.3 stacked (max_steps=15000 + sh_progressive)\u003C\u002Fstrong>: Lego **16m13s \u002F 36.254 dB \u002F 428k splats** = Phase D 比 **-61% wallclock + 0.15 dB PSNR** で \u003Cstrong>Pareto sweet spot\u003C\u002Fstrong> 確定。\u003Cstrong>Key reframe\u003C\u002Fstrong>: G.3 は「speed win」ではなく「**quality improvement at no speed cost**」、stacked variant で G.1 speed と SH warmup quality gain を統合。\u003Cstrong>Implementation\u003C\u002Fstrong>: \u003Ccode>[trainer.sh_progressive]\u003C\u002Fcode> section (default disabled、全 backward compat)、\u003Ccode>CameraGpu\u003C\u002Fcode> struct を \u003Ccode>sh_degree\u003C\u002Fcode> (buffer layout) と \u003Ccode>active_sh_degree\u003C\u002Fcode> (per-iter eval) に分離。\u003Cstrong>Calibration data point\u003C\u002Fstrong>: Phase F 5 連続 falsification + G.3 5k smoke artifact = audit \u002F smoke overestimate 6 例目、「smoke は production scale を representative しない」が新教訓。8 scene chain validation pending。\u003Cstrong>卒論 narrative\u003C\u002Fstrong>: Phase F (kernel-level fail) → G.2 (architectural insight) → G.3 (algorithmic reframe: speed → quality + stacked Pareto) の 3 family 比較で「Apple Silicon native 最適化は \u003Cstrong>algorithmic compute reduction + early stop の組み合わせが Pareto-optimal\u003C\u002Fstrong>」という構造的 calibration。","high","pareto-sweet-spot-confirmed-chain-pending","+0.15 dB stacked (vs Phase D)、+0.28 dB 30k single (vs Phase D)、-0.12 dB 5k smoke (許容)","**-61% stacked** (vs Phase D)、-1.9% 30k single、-13.9% 5k smoke (artifact)",[48,51,56,59,102,104,174,176,206,208,217,219,227,229,233,235,241,243,248,250],{"type":49,"text":50},"lead","Phase G compute reduction family の G.3 (SH-progressive growth) を 3 layer で検証: (1) \u003Cstrong>5k smoke で -13.9% wallclock\u003C\u002Fstrong> + cascading splat -22% を観測、(2) \u003Cstrong>30k full では wallclock -2% \u002F splats +30% \u002F PSNR +0.28 dB\u003C\u002Fstrong> に変化 (5k smoke の cascading は refine.stop_iter=1500 artifact)、(3) \u003Cstrong>G.1 (15k early stop) + G.3 stacked で Lego 16m13s \u002F 36.254 dB \u002F Pareto sweet spot\u003C\u002Fstrong> (Phase D 比 -61% wallclock + 0.15 dB)。Phase F + G の audit\u002Fsmoke 6 連続 overestimate calibration を踏まえ「production scale でも valid な Pareto improvement は **stacked variant**」と確定。",{"type":52,"label":53,"variant":54,"text":55},"callout","Headline (Pareto sweet spot: G.1+G.3 stacked = -61% wallclock + 0.15 dB)","success","\u003Cstrong>G.1 (early stop @ 15k) + G.3 (sh_progressive) stacked\u003C\u002Fstrong> で Lego 16m13s \u002F 36.254 dB \u002F 428k splats、Phase D 30k (41m54s \u002F 36.106 dB \u002F 375k splats) 比 **-61% wallclock + 0.15 dB PSNR 改善** の \u003Cstrong>Pareto sweet spot\u003C\u002Fstrong>。\u003Cstrong>機構\u003C\u002Fstrong>: sh_progressive warmup (iter 0-3000、active SH 0→2) で early refine が低周波 表現に focus → better-conditioned splat base、その上で iter 3000-15000 = full SH + refine 並列 → final 428k splats が Phase D 30k の 375k splats より \u003Cstrong>quality-conditioned\u003C\u002Fstrong>。G.1 alone (35.690 dB) より +0.56 dB、Phase D alone (36.106) より +0.15 dB、両方上回り。\u003Cstrong>5k smoke の -13.9% は misleading artifact\u003C\u002Fstrong>: refine.stop_iter=1500 で splat 動態が production scale と全く違うため、cascading splat reduction が過大評価された。30k full では wallclock -2% \u002F splats +30% \u002F PSNR +0.28 dB と全く違う profile。\u003Cstrong>cherry-pick 済\u003C\u002Fstrong> (main commit 5267464 + b4fb0e6)、default disabled (opt-in only)、bit-exact 11 unit tests pass で zero regression risk。8 scene chain validation pending。",{"type":57,"text":58},"heading","1. Lego 3-layer A\u002FB 結果 (5k smoke → 30k full → stacked)",{"type":60,"columns":61,"align":67,"rows":70,"caption":101},"table",[62,63,64,65,66],"config","wallclock","PSNR","splats","vs Phase D",[68,69,69,69,68],"left","right",[71,77,83,89,95],[72,73,74,75,76],"**brush (reference)**","9m08s","32.04 dB","282k","-65% wall \u002F -4.07 dB",[78,79,80,81,82],"**Phase D 30k baseline**","41m54s","36.106 dB","375k","baseline",[84,85,86,87,88],"G.1 alone (15k, no sh)","14m31s","35.690 dB","335k","-65% wall \u002F -0.42 dB",[90,91,92,93,94],"G.3 alone (30k, sh_progressive)","41m07s","36.384 dB","487k","-2% wall \u002F **+0.28 dB**",[96,97,98,99,100],"**G.1+G.3 stacked (15k + sh_prog)**","**16m13s**","**36.254 dB**","428k","**-61% wall \u002F +0.15 dB ✨**","\u003Cstrong>G.1+G.3 stacked が Pareto sweet spot\u003C\u002Fstrong>: Phase D を両次元で改善 (wallclock -61% + PSNR +0.15 dB)、brush 1.77× 時間で +4.21 dB の超 Pareto win。G.1 alone は speed at quality cost (-0.42 dB)、G.3 alone は quality at no speed cost (-2% wall)、stacked が両方の good side を統合。",{"type":57,"text":103},"2. 5k smoke の kernel breakdown (artifact 検出前の data)",{"type":60,"columns":105,"align":111,"rows":112,"caption":173},[106,107,108,109,110],"metric","baseline (F.1)","sh-progressive (G.3)","Δ","解釈",[68,69,69,69,68],[113,119,125,131,137,143,149,155,161,167],[114,115,116,117,118],"**total wallclock**","**112.28s**","**96.70s**","**-13.9%**","**Phase F 5 falsify 後、初の clean win**",[120,121,122,123,124],"TOTAL kernel sum","168.523s","141.800s","-15.9%","全 kernel cascading speedup の集約",[126,127,128,129,130],"ts_forward (全体)","61.562s","50.512s","-17.9%","SH eval skip + splats 削減",[132,133,134,135,136],"ts_fwd_emit_pairs\u002Fcall","4.706 ms","3.337 ms","**-29%**","splats -22% で sort key 生成 work 削減 (二次効果)",[138,139,140,141,142],"ts_backward_raster\u002Fcall","4.516 ms","3.691 ms","**-18.3%**","splats -22% で per-pixel atomic 削減",[144,145,146,147,148],"ts_fwd_radix_sort\u002Fcall","4.744 ms","4.204 ms","-11.4%","pair 数 -22% で sort work 削減",[150,151,152,153,154],"ts_fwd_rasterize\u002Fcall","1.994 ms","1.802 ms","-9.6%","SH eval skip + splats -22%",[156,157,158,159,160],"ts_ssim_fwd_grad\u002Fcall","2.678 ms","2.723 ms","+1.7% (noise)","SSIM は splat 数非依存、noise 圏",[162,163,164,165,166],"**PSNR** (100 view mean)","**31.629**","**31.509**","**-0.12 dB**","**許容範囲** (5k smoke variance ±0.1 dB 程度)",[168,169,170,171,172],"**final splats**","82,338","**64,330**","**-22%**","**cascading 効果の root**: 早期表現力制限で refine grow 抑制","\u003Cstrong>Headline: -13.9% wallclock + PSNR -0.12 dB 許容\u003C\u002Fstrong>。SH eval 削減自体は forward 6.1% share の portion で寄与 -1% 圏期待だったが、\u003Cstrong>cascading splat reduction (-22%)\u003C\u002Fstrong> で全 kernel speedup。emit_pairs -29% \u002F backward_raster -18.3% は splats 数 × per-splat work で説明可能 (splats 削減効果)。",{"type":57,"text":175},"3. 5k smoke artifact 検証 (30k full で reframe)",{"type":60,"columns":177,"align":182,"rows":183,"caption":205},[106,178,179,180,181],"5k smoke","30k full","stacked 15k","interpretation",[68,69,69,69,68],[184,189,194,199],[63,185,186,187,188],"-13.9%","-1.9%","**-61%** (G.1 効果が dominant)","5k は cascading で過大評価、30k で reality",[65,190,191,192,193],"-22%","**+30%**","+14% (G.3 quality + G.1 stop の中間)","5k は refine.stop_iter=1500 で grow 抑制、30k は full SH iter 3000+ で grow 加速",[64,195,196,197,198],"-0.12 dB","**+0.28 dB**","+0.15 dB","5k は表現力不足で drift、30k はちょうど quality 改善、stacked は中間",[200,201,202,203,204],"headline framing","speed win","**quality win**","**Pareto sweet spot**","production scale で G.3 は speed ではなく quality 改善","\u003Cstrong>5k smoke は misleading\u003C\u002Fstrong>: refine.stop_iter=1500 で splat 動態が production scale と異なる。30k full でようやく real character (quality improvement at no speed cost)、stacked で G.1 speed と G.3 quality を統合した Pareto win 達成。\u003Cstrong>新教訓\u003C\u002Fstrong>: 「smoke は production scale を representative しない」、特に refine 動態に依存する optimization では smoke A\u002FB の結論を 30k validate なしに信用すべきでない。",{"type":57,"text":207},"4. Key mechanism: Pareto sweet spot (stacked variant)",{"type":209,"ordered":210,"items":211},"list",true,[212,213,214,215,216],"\u003Cstrong>G.1 alone (15k stop) の限界\u003C\u002Fstrong>: full SH=3 を iter 0 から有効、refine が high-freq overfitting に走り、splats grow が iter 15000 で truncate される。final 335k splats だが quality は Phase D 比 -0.42 dB","\u003Cstrong>G.3 alone (30k sh_progressive) の動態\u003C\u002Fstrong>: iter 0-3000 で sh 0→2 ramp → 低周波 base、iter 3000-15000 で full SH + refine 並列 → splats 487k まで grow、iter 15000-30000 で settle。**quality +0.28 dB だが wallclock 改善なし**","\u003Cstrong>G.1+G.3 stacked (15k + sh_progressive) の synergy\u003C\u002Fstrong>: iter 0-3000 で sh warmup (= G.3 の良 part)、iter 3000-15000 で full SH + refine 並列 (= G.3 の core)、iter 15000 で stop (= G.1 の早期停止)。**iter 15000-30000 の 'settle' phase を省略しつつ quality conditioning を獲得**","\u003Cstrong>なぜ stacked が Phase D alone より +0.15 dB か\u003C\u002Fstrong>: Phase D は iter 0 から full SH で refine、高周波 overfit を含む 375k splats を生成。stacked は sh warmup で低周波 base → high-freq refine が effective、最終 428k splats が「より well-conditioned」、PSNR boost +0.15 dB を獲得","\u003Cstrong>5k smoke で見た -22% splats は production と無関係\u003C\u002Fstrong>: 5k smoke は refine.stop_iter=1500、splats が grow しきる前に refine が止まる → sh_progressive 抑制効果が直接見える。30k では iter 3000 以降に grow 加速、smoke の cascading speedup は再現不可",{"type":57,"text":218},"3. Implementation summary (cherry-pick 済 main 5267464 + b4fb0e6)",{"type":209,"ordered":210,"items":220},[221,222,223,224,225,226],"\u003Cstrong>Config 拡張\u003C\u002Fstrong> (\u003Ccode>splat-train-v1\u002Fsrc\u002Fconfig.rs\u003C\u002Fcode>): \u003Ccode>[trainer.sh_progressive]\u003C\u002Fcode> section、\u003Ccode>init: u32\u003C\u002Fcode> (default 0) \u002F \u003Ccode>max: u32\u003C\u002Fcode> (default 0) \u002F \u003Ccode>unlock_interval: u32\u003C\u002Fcode> (default 0 = disabled)。enabled()=unlock_interval > 0、active_for_iter(iter)=min(init + (iter-1)\u002Finterval, max)","\u003Cstrong>Validation\u003C\u002Fstrong>: enabled 時に init \u003C= max \u003C= 4 \u003C= data.sh_degree を強制、bad config reject","\u003Cstrong>CameraGpu struct 分離\u003C\u002Fstrong> (\u003Ccode>splat-core\u002Fsrc\u002Ftypes.rs\u003C\u002Fcode>): sh_degree (buffer layout = param.sh_degree) と active_sh_degree (per-iter eval) の 2 field、96 → 100 bytes","\u003Cstrong>Shader 更新\u003C\u002Fstrong> (forward\u002Fproject.metal + backward\u002Fproject_backwards.metal): SH eval bound は cam.active_sh_degree、buffer indexing (max_coeffs = num_sh_coeffs(cam.sh_degree)) は cam.sh_degree、bit-exact verified","\u003Cstrong>Host dispatcher\u003C\u002Fstrong> (\u003Ccode>splat-metal\u002Fsrc\u002Fkernels\u002Fproject.rs\u003C\u002Fcode>): GpuProjector::project_soa \u002F project_soa_buf \u002F ProjectBackwards::dispatch \u002F dispatch_from_buf に \u003Ccode>_active\u003C\u002Fcode> suffix override、legacy API 保持","\u003Cstrong>Trainer integration\u003C\u002Fstrong> (\u003Ccode>splat-train-v1\u002Fsrc\u002Ftrainer.rs\u003C\u002Fcode> + \u003Ccode>train_loop.rs\u003C\u002Fcode>): train_step に active_sh_degree arg、train_loop で schedule disabled → param.sh_degree 固定、enabled → cfg.sh_progressive.active_for_iter(it)",{"type":57,"text":228},"4. Unit test suite (11 件 \u002F cargo test 43 件 全 pass)",{"type":209,"items":230},[231,232],"schedule pure-fn (7 件): default_disabled \u002F enabled_when_interval_positive \u002F boundary at iter 1\u002F1000\u002F1001\u002F2000\u002F3001\u002F15000 \u002F init==max constancy \u002F validate init>max \u002F validate max>data.sh_degree","GPU bit-exact (4 件): forward (active==max==3) bit-exact vs legacy \u002F forward (active=0) == 物理 0 化 scene (|diff|\u003C1e-5) \u002F backward (active=0) で bands 1-3 grad 厳密 0 \u002F Adam で active=0 2 iter 後 bands 1-15 sh_coeffs\u002Fm\u002Fv 厳密 0 (freeze)",{"type":57,"text":234},"5. Phase F + G calibration 観点 (卒論 §5.4 narrative)",{"type":209,"items":236},[237,238,239,240],"\u003Cstrong>Phase F 5 連続 falsification\u003C\u002Fstrong> (refine GPU \u002F target cache \u002F emit SIMD \u002F f16 fwd \u002F radix GPU prefix): kernel-level micro-opt 5 例で全て regression or noise 圏内、audit theoretical predictions 5 連続 overestimate","\u003Cstrong>G.2 architectural finding\u003C\u002Fstrong>: 4.7× gap は kernel-level ではなく dispatch architecture (Burn\u002FCubeCL batching vs Metal 直 per-kernel sync)、Phase F 失敗の統一的説明","\u003Cstrong>G.3 algorithmic family\u003C\u002Fstrong>: compute reduction (SH progressive) は \u003Cstrong>per-iter work を直接削減 + 二次的に refine 動態を変える\u003C\u002Fstrong> ため、kernel-level 限界を超える ROI 達成 (-13.9%)。advisor 予測 ≤1% hedge を上回ったのは cascading splat effect の underestimate","\u003Cstrong>構造的 calibration\u003C\u002Fstrong>: \u003Cstrong>algorithmic compute reduction > architectural dispatch > kernel-level micro-opt\u003C\u002Fstrong> の ROI 順位。卒論 §5.4 で Phase F + G の比較で本 calibration を方法論 paragraph に",{"type":57,"text":242},"6. 30k full + 8 scene chain validation (pending)",{"type":209,"items":244},[245,246,247],"\u003Cstrong>30k Lego validate\u003C\u002Fstrong>: 5k smoke の -13.9% wallclock + PSNR -0.12 dB が production scale で維持されるか。Phase D 30k baseline (41m54s \u002F 36.106 dB \u002F 375k splats) との比較、期待 30-35 min (-15-25%) + PSNR 35.5+ dB","\u003Cstrong>8 scene chain\u003C\u002Fstrong>: G.1 8 scene chain (32.10 dB mean、mic で -5.84 outlier) と比較、SH progressive で各 scene cascading speedup + PSNR 維持できるか、特に sparse scene (mic \u002F ficus) で表現力制限の影響","\u003Cstrong>G.1 + G.3 stacked\u003C\u002Fstrong>: early stop @ 15k + SH progressive の重畳効果、想定 -25-30% wallclock (multiplicative ではなく additive 想定、互換性確認)",{"type":57,"text":249},"7. 関連",{"type":209,"items":251},[252,253,254,255],"audit baseline: \u003Ccode>p1-axis1-metal-opt-audit\u003C\u002Fcode> (G.3 = P1.G re-attack)、\u003Ccode>p1-d-multi-scene-rechain\u003C\u002Fcode> (Phase D baseline)","Phase F calibration (kernel-level failed): \u003Ccode>p1-axis1-phase-f1-emit-simd-falsified\u003C\u002Fcode>、\u003Ccode>p1-axis1-phase-f3-radix-gpu-prefix-falsified\u003C\u002Fcode>、\u003Ccode>p1-e-refine-gpu-smoke\u003C\u002Fcode>、\u003Ccode>p1-axis1-target-cache\u003C\u002Fcode>","G.2 structural finding (architectural): \u003Ccode>p1-axis1-phase-g2-brush-dispatch-architecture\u003C\u002Fcode>","卒論統合候補: \u003Ccode>chapter-5-4-negative-findings\u003C\u002Fcode> (Phase F + G の Apple Silicon native 最適化 ROI 階層化 paragraph)",[257,271,283,290,297],{"id":33,"title":33,"subtitle":258,"date":9,"workspace":259,"tags":260,"verdict":266,"psnr":267,"psnr_unit":-1,"wallclock":268,"splats":269,"summary_url":270,"detail_path":270},"Phase F.1 baseline (use_simd_emit=false) re-take for A\u002FB","splat",[261,262,263,264,21,265],"p1-profile","axis-1","phase-f","ab-baseline","premultiplied","partial",31.628820419311523,"1m 52s",82338,"\u002Fruns\u002Flego-phase-f1-baseline-5k\u002F",{"id":32,"title":32,"subtitle":272,"date":9,"workspace":259,"tags":273,"verdict":266,"psnr":279,"psnr_unit":-1,"wallclock":280,"splats":281,"summary_url":282,"detail_path":282},"Phase G.1+G.3 stacked variant (early stop + SH progressive)",[274,17,275,18,276,277,278,265],"p1-g","early-stop","stacked","lego-15k","brush-compat",36.253822326660156,"16m 12s",427882,"\u002Fruns\u002Flego-phase-g1g3-stacked-15k\u002F",{"id":31,"title":31,"subtitle":284,"date":9,"workspace":259,"tags":285,"verdict":266,"psnr":286,"psnr_unit":-1,"wallclock":287,"splats":288,"summary_url":289,"detail_path":289},"Phase G.3 SH progressive 30k full validation",[274,17,18,22,278,265],36.384132385253906,"41m 7s",487741,"\u002Fruns\u002Flego-phase-g3-sh-progressive-30k\u002F",{"id":30,"title":30,"subtitle":291,"date":9,"workspace":259,"tags":292,"verdict":266,"psnr":293,"psnr_unit":-1,"wallclock":294,"splats":295,"summary_url":296,"detail_path":296},"Phase G.3 SH degree progressive growth (0→3, unlock_interval=1000) Lego 5k smoke",[261,262,17,18,21,265],31.5091552734375,"1m 36s",64330,"\u002Fruns\u002Flego-phase-g3-sh-progressive-5k\u002F",{"id":34,"title":34,"subtitle":298,"date":299,"workspace":259,"tags":300,"verdict":266,"psnr":305,"psnr_unit":-1,"wallclock":306,"splats":307,"summary_url":308,"detail_path":308},"P1.D Stage 2 brush 互換 + opacity decay 30k full bench","2026-05-24",[301,302,22,278,265,303,304],"p1-d","opacity-decay","stage-2","splat-efficient",36.10615158081055,"41m 54s",375146,"\u002Fruns\u002Flego-brushcompat-opacdecay-30k\u002F",[310,327,349,366,384],{"id":36,"title":311,"date":9,"status":10,"polarity":12,"category":11,"axes":312,"tags":313,"task_code":320,"related_runs":321,"delta_psnr":322,"delta_wallclock":323,"rank":43,"verdict":324,"impact_summary":325,"detail_path":326},"P1 axis 1 Metal 最適化候補 audit — 5 候補 + 既実装 gate flip 機会、Tier 1 -1.0% wallclock 即時 actionable",[14],[261,262,314,315,316,317,318,319],"metal-optimization","kernel-audit","tbdr","simd-reduction","apple-silicon","gate-flip","P1 axis 1 Metal kernel audit",[],"N\u002FA (audit)","estimated -1.5 〜 -2.5% (Tier 1+2)","design-complete-actionable","5 kernel (clean baseline share 合計 55.1%) を Explore subagent で構造的 audit、Apple Silicon 特化最適化候補を kernel 単位で 2-4 個ずつ抽出。\u003Cstrong>最大の発見\u003C\u002Fstrong>: **emit_pairs_simd PSO は既に実装済**、\u003Ccode>use_simd_emit: Cell::new(false)\u003C\u002Fcode> で gate off、comment に「30k validation 後 default true 化予定」(tile_bin.rs:86-87)、**Phase D 30k 完遂で即 flip 可能** (-0.7-1.0% wallclock 即時、zero risk)。同様の即 actionable 機会: f16 forward kernel \u003Ccode>render_splats_f16\u003C\u002Fcode> は env \u003Ccode>SPLAT_F16_FORWARD=1\u003C\u002Fcode> gate (現在 disabled、A\u002FB test 必須 PSNR risk MED-HIGH)。\u003Cstrong>Tier 2 (Phase E scope)\u003C\u002Fstrong>: radix_sort GPU prefix sum (-0.54-0.82% wallclock、CPU-GPU 16-pass sync 除去)、backward_raster imageblock+TBDR (-0.67-1.07% wallclock、tile-local 累積で atomic 大幅削減)。\u003Cstrong>累計 -1.5-2.5% wallclock 改善余地確定、卒論 §6 future work 候補と pilot 実装目標\u003C\u002Fstrong>。backward SIMD reduction は既に default 有効 (rasterize.rs:642、2.43× win 享受中で確認済)、SSIM は eval-only で training 直接寄与なしのため Tier 3。","\u002Ffindings\u002Fp1-axis1-metal-opt-audit\u002F",{"id":38,"title":328,"date":9,"status":10,"polarity":329,"category":330,"axes":331,"tags":332,"task_code":339,"related_runs":340,"delta_psnr":343,"delta_wallclock":344,"rank":345,"verdict":346,"impact_summary":347,"detail_path":348},"Phase F.1 emit_pairs_simd + f16 forward gate flip — audit Tier 1 仮説 falsified、現規模で net regression \u002F no improvement","negative","audit",[14],[16,263,333,334,335,336,337,338,21],"emit-simd","f16-forward","tier-1","falsified","negative-finding","ab-test","P1 Phase F.1 \u002F F.2",[341,33,342],"lego-phase-f1-emit-simd-5k","lego-phase-f2-f16-fwd-5k","±0.13 dB (両者とも許容範囲、atomic\u002Ffp 順序由来)","+4.7% (emit_simd net regression) \u002F +2.5% (f16 fwd noise 圏内)","medium","audit-falsified-tier-1","audit (p1-axis1-metal-opt-audit) で Tier 1「即 actionable gate flip、-0.7-1.0% wallclock、zero risk」と分類した 2 候補を Lego 5k smoke A\u002FB で実証検証。\u003Cstrong>emit_pairs_simd は total wallclock +4.7% の net regression\u003C\u002Fstrong> (112.11s → 117.38s、~10 kernel 平均なので noise floor 小、real regression 確定)、ただし per-kernel emit_pairs 単体は +8.5% で baseline 2 sample 変動 (4.814 \u002F 5.129、6.5%) と近い hedge 必要。\u003Cstrong>f16 forward は ~+2.5% wallclock\u003C\u002Fstrong> (114.97s)、run-to-run variance 圏内で improvement \u002F regression いずれも明確に検出できず。\u003Cstrong>PSNR は両者で許容範囲\u003C\u002Fstrong> (emit_simd -0.132 dB、f16 +0.075 dB、atomic order \u002F fp 順序由来想定)。**audit の予測 calibration data**: Tier 1 SIMD-reduction 系の効果は theory より小さく overhead が打ち消し、Tier 2 別 mechanism (CPU-GPU sync 除去) は別途検証必要、Tier 2 同 family (backward TBDR) は falsification 拡大適用で skip 判断強化。卒論 narrative 価値: 「audit theoretical predictions vs empirical measurements」の方法論 paragraph を §5.4 negative findings 章 (chapter-5-4-negative-findings.md) に追加候補。","\u002Ffindings\u002Fp1-axis1-phase-f1-emit-simd-falsified\u002F",{"id":39,"title":350,"date":9,"status":10,"polarity":329,"category":330,"axes":351,"tags":352,"task_code":357,"related_runs":358,"delta_psnr":361,"delta_wallclock":362,"rank":43,"verdict":363,"impact_summary":364,"detail_path":365},"Phase F.3 radix GPU prefix scan — bit-exact 実装完成だが Metal implicit fences で +7.4% wallclock \u002F +35-41% per-call regression、audit Tier 2 仮説 falsified",[14],[16,263,353,354,355,336,337,356,316,338,21],"radix-sort","gpu-prefix-scan","tier-2","metal-fences","P1 Phase F.3",[359,360],"lego-phase-f3-baseline-5k","lego-phase-f3-gpu-scan-5k","+0.03 dB (parity、bit-exact 経路、session noise 内)","+7.4% (+8.58s @ 5k iter、sanity rerun +4.8% でも regression 確定)","audit-falsified-tier-2","audit (p1-axis1-metal-opt-audit) で Tier 2 「radix_sort GPU prefix sum、-0.5-0.8% wallclock、LOW PSNR risk」と分類した候補を empirical 検証。\u003Cstrong>bit-exact 実装は完成\u003C\u002Fstrong> (16-thread single-threadgroup kernel、Apple SIMD prefix exclusive sum + per-digit serial scan、100k random \u002F 500k packed keys \u002F edge cases 6 種で CPU stable sort と byte-for-byte 一致)、しかし 5k Lego smoke で \u003Cstrong>wallclock 115.83s → 124.41s (+7.4%)、ts_fwd_radix_sort 4.768 → 6.733 ms\u002Fcall (+41%)\u003C\u002Fstrong> の net regression。sanity re-run (118.73s \u002F 6.402ms) で再現確認、run-to-run 変動の上。\u003Cstrong>PSNR は parity\u003C\u002Fstrong> (31.604 → 31.635 dB、bit-exact 経路で 0 drift 期待、観測 +0.03 dB は session noise)。\u003Cstrong>Likely mechanism\u003C\u002Fstrong>: StorageModeShared buffer での back-to-back compute encoder 間で Metal が implicit fence を挿入 (hist→scan の buf_hist、scan→scatter の buf_offsets で read-after-write hazard)、TBDR pipeline stall。旧 CPU 経路は buf_hist→buf_offsets 変換を host で実行するため GPU 内 memory dependency が無く、\u003Cstrong>「除去した wait_until_completed」は実は CPU prefix scan と overlap していた active work\u003C\u002Fstrong> だった。教訓: 「CPU 介在を on-GPU に置換」族の audit 予測は overlap の存在を見落とすため systematically overestimate、Tier 2 同 family (backward TBDR、tile-local accumulator) の skip 判断強化。kernel + tests は env \u003Ccode>SPLAT_RADIX_GPU_SCAN=1\u003C\u002Fcode> で opt-in (future workload hedge)。","\u002Ffindings\u002Fp1-axis1-phase-f3-radix-gpu-prefix-falsified\u002F",{"id":37,"title":367,"date":9,"status":10,"polarity":368,"category":11,"axes":369,"tags":371,"task_code":378,"related_runs":379,"delta_psnr":322,"delta_wallclock":380,"rank":43,"verdict":381,"impact_summary":382,"detail_path":383},"Phase G.2 brush 4.7× per-iter 速度差の真因 — command buffer batching、Phase F 全 kernel-level 改善試行への統一的構造説明","mixed",[14,370],2,[16,17,372,373,374,375,376,377],"brush-comparison","dispatch-architecture","command-buffer-batching","structural-finding","burn-cubecl","metal-direct","P1 axis 1 Phase G.2",[],"0% (audit) \u002F estimated +3-5% if async readback backport (要 prototype 検証)","structural-explanation","Explore subagent (Sonnet very thorough) で brush 18ms\u002Fiter vs splat-rs 84ms\u002Fiter (4.67×) の真因を architectural 差で構造特定。\u003Cstrong>brush は Burn\u002FCubeCL backend の \u003Ccode>launch_unchecked()\u003C\u002Fcode> async dispatch + 内部 command buffer batching\u003C\u002Fstrong> で per-iter 5-7 explicit awaits → ~5 actual GPU flushes。一方 \u003Cstrong>splat-rs は per kernel 毎に \u003Ccode>cmd.wait_until_completed()\u003C\u002Fcode> で 10-50 GPU flushes\u003C\u002Fstrong>。計算: 17ms GPU compute + ~25ms wait overhead (~2.5ms\u002Fwait × ~10) = ~42ms、実測 84ms とは ~2× ずれあるが (subagent quantification の不確実性)、order-of-magnitude は一致。\u003Cstrong>これは Phase F 5 連続 falsification への統一的構造説明\u003C\u002Fstrong>: kernel-level micro-opt (SIMD reduction \u002F f16 accumulator \u002F radix GPU prefix \u002F TBDR imageblock 等) が効かなかったのは bottleneck が \u003Cstrong>per-kernel compute ではなく dispatch synchronization architecture\u003C\u002Fstrong> だったから。**主仮説 ranking** (subagent assessment): (1) command buffer batching (50% of gap、移植 VERY HIGH cost 6-10 週)、(2) async readback (15%、MEDIUM cost 1-2 週、+3-5% expected)、(3) kernel fusion (5-10%、EXTREME cost)。**ただし subagent quantification は overestimate 傾向あり** (Phase F.3 で「removed wait was overlapping with CPU work, not idle」発覚と矛盾、wait は free な場合もある)。卒論 narrative としては \u003Cstrong>structural explanation\u003C\u002Fstrong> として極めて価値高い、§5.4 negative findings 章で「Phase F 全 kernel-level 改善試行は architectural mismatch だった」統一的 paragraph 候補。","\u002Ffindings\u002Fp1-axis1-phase-g2-brush-dispatch-architecture\u002F",{"id":40,"title":385,"date":9,"status":10,"polarity":12,"category":386,"axes":387,"tags":389,"task_code":398,"related_runs":399,"delta_psnr":407,"delta_wallclock":408,"rank":43,"verdict":409,"impact_summary":410,"detail_path":411},"P1.D multi-scene Phase D re-chain final — 8 scene mean 33.49 dB、brush mean 32.86 を +0.63 dB 上回り、universal win-win-win 実証","experiment",[14,370,388],3,[390,391,392,393,394,395,265,302,396,397],"p1","phase-d","milestone-m5","multi-scene","brush-parity","brush-超え","universal-win-win-win","rechain-final","P1.D multi-scene re-chain (M5 final)",[34,400,401,402,403,404,405,406],"chair-brushcompat-opacdecay-30k","ficus-brushcompat-opacdecay-30k","drums-brushcompat-opacdecay-30k","hotdog-brushcompat-opacdecay-30k","mic-brushcompat-opacdecay-30k","materials-brushcompat-opacdecay-30k","ship-brushcompat-opacdecay-30k","8 scene mean +0.63 dB vs brush paper (33.49 vs 32.86)","-61% total chain (13h+ → 5h 5m)","accepted-m5-complete","Phase D opacity_decay (rate=0.004 brush default) を 7 scene × 30k full chain bench、Lego val Phase D 30k と合わせて 8 scene 集計。**全 scene で baseline brushcompat 30k 比 PSNR + splats + wallclock すべて改善 (universal win-win-win)**: PSNR +0.18〜+1.42 dB \u002F splats -57〜-78% \u002F wallclock -39〜-69%。8 scene mean 33.49 dB vs brush paper 8 scene mean 32.86 dB = **+0.63 dB 上回り**、本実装が brush の multi-scene mean を decisive に超えた。brush 超え 3 scene (Lego val +4.07 \u002F drums +1.05 \u002F mic +1.02)、4 scene が brush 比 ±0.7 dB 圏内 (chair -0.02 \u002F hotdog -0.39 \u002F ship -0.01 \u002F materials -0.10)、最遠 scene でも ficus -0.65 で接近。全体 wallclock baseline chain (13h+) → Phase D re-chain 5h 5m (-61%)、mean splats 1.4M → 428k (-69%) で brush 282k に肉薄。P1.M5 完全達成 (Lego val > 36 dB ✅ + multi-scene mean > 32 dB ✅)、卒論 central evaluation table の final 数字確定、universal claim 完全実証。","\u002Ffindings\u002Fp1-d-multi-scene-rechain\u002F",1782449788633]