[{"data":1,"prerenderedAt":387},["ShallowReactive",2],{"finding:p1-b-f-stage2-30k-results":3,"finding-runs:p1-b-f-stage2-30k-results":276,"finding-related:p1-b-f-stage2-30k-results":288},{"meta":4,"impact":38,"sections":45},{"id":5,"title":6,"subtitle":7,"eyebrow":8,"date":9,"status":10,"category":11,"polarity":12,"axes":13,"tags":17,"task_code":27,"related_runs":28,"related_findings":32},"p1-b-f-stage2-30k-results","P1.B+F Stage 2 — Lego 30k brushcompat で 35.184 dB、brush 自身を +3.20 dB 上回り","P1.B.F Stage 1 (5k smoke 31.334 dB) を 30k full bench にスケール。training-time eval で **35.184 dB (brush convention)** 達成。4-way cross-eval で再確認 (brush trainer × brush eval q8 = 35.237 dB)。これは P1.M3 lifeline (Lego 30k brush conv > 30 dB) を +5.24 dB 突破、brush 自身 val 32.038 dB を +3.20 dB 上回り、M5 target (36 dB) まで残り -0.76 dB。Phase A 主仮説 (apparent gap -3〜-6 dB) が falsified された反面、coupling 解消の効果が想定の 3 倍に達した。実装は 1 行 (`[data] gt_convention = \"premultiplied\"`)、既存 hyperparameter (lr\u002Frefine\u002Fdecay) は legacy 30k baseline と同等維持。","P1 Phase B+F · M3 突破 + brush 超え · Stage 2 full bench","2026-05-24","stable","experiment","positive",[14,15,16],1,2,3,[18,19,20,21,22,23,24,25,26],"p1","phase-b-f","milestone-m3","brush-parity","brush-超え","premultiplied","convention-bridge","lego-30k","stage-2","P1.B+F Stage 2 (M3 gate)",[29,30,31],"lego-brushcompat-base-30k","lego-brushcompat-base-5k","lego-sh3-30k (legacy 30k 24.879 dB)",[33,34,35,36,37],"p1-b-f-trainer-convention-bridge","p1-a-3-cross-eval-reproducer","p1-a-eval-convention-audit","a-4-nerf-synthetic-scene-results","m4-brush-bench",{"summary":39,"rank":40,"verdict":41,"delta_psnr":42,"delta_wallclock":43,"delta_splats":44},"Lego sh3 30k で gt_convention=premultiplied (brush 互換) を立てると、4-way eval で legacy=1.60 \u002F brush=35.24 dB。**brush 自身 val 32.0 dB を +3.20 dB 上回る** 結果。M3 lifeline (30 dB) を +5.24 dB 突破、M5 (36 dB) まで -0.76 dB に到達。Phase A 主仮説 (apparent gap -3〜-6 dB) は falsify されたが、coupling 解消の真の効果は **+33.6 dB shift (1.67 → 35.24)**、想定 (+10 dB) の 3 倍。実装は configs 1 行 (gt_convention) + dataset.rs (load_rgba_premultiplied path 追加、既に Stage 1 で merge 済) のみ、既存 30k legacy bench との apples-to-apples comparison が可能。brush の wallclock 38% 高速化は 30k でも継続 (splats 1M-cap で 846k 到達、refine が攻撃的 split)、ただし brush 自身 282k に比べて 3 倍、本実装が capacity を未活用 (refine を絞る余地あり、Phase D で検証可能)。次 Step は multi-scene 8 シーン展開で universal claim 確定、brush mean 33.32 dB 超えで multi-scene parity 完全達成を狙う。","high","accepted-stretch-goal-met","+10.30 dB vs legacy 30k (24.879 → 35.184、convention 変更後の真の現状)","+2.7x vs legacy 30k (1h 2m 18s vs 22m18s、splats 10x で per-iter time 増、ただし brush 自身 282k より 3 倍多い)","846,689 (brush 282k の 3 倍、capacity 1M を 85% 利用)",[46,49,54,57,101,103,145,147,201,203,244,246,256,260,262,266,268],{"type":47,"text":48},"lead","\u003Cstrong>P1.B+F Stage 1 (5k smoke で 31.334 dB)\u003C\u002Fstrong> を \u003Cstrong>30k full bench\u003C\u002Fstrong> にスケール。training-time eval (config 内蔵) で \u003Cstrong>35.184 dB (brush convention)\u003C\u002Fstrong>、independent 4-way cross-eval (splat eval subcommand) で \u003Cstrong>35.237 dB (8-bit quant)\u003C\u002Fstrong> を達成。M3 lifeline +5.24 dB 突破、brush 自身 val 32.0 dB を +3.20 dB 上回り、卒研 P1 計画の \u003Cstrong>stretch goal (M5 36 dB)\u003C\u002Fstrong> まで残り -0.76 dB に到達。",{"type":50,"label":51,"variant":52,"text":53},"callout","Headline (brush parity 達成、いや brush 超え)","success","\u003Cstrong>本実装 (splat-rs) の Lego brush-compat 30k = 35.184 dB\u003C\u002Fstrong> は \u003Cstrong>brush 自身 val 32.038 dB を +3.20 dB 上回り\u003C\u002Fstrong>、apples-to-apples (val split、brush convention) で \u003Cstrong>本実装が brush を超えた\u003C\u002Fstrong>。brush paper の 37.40 dB は test split (200 view、val より +3〜+5 dB 上振れ可能) なので、test split で再評価すれば本実装も 36-38 dB 帯に到達する可能性。\u003Cstrong>P1 計画の P1.M3 生命線 + brush parity\u003C\u002Fstrong> はここで完全 closure、残りは multi-scene universal 確認と M5 (36 dB) detail tune。",{"type":55,"text":56},"heading","1. 4-way cross-eval (Lego val 100 view)",{"type":58,"columns":59,"align":68,"rows":72,"caption":100},"table",[60,61,62,63,64,65,66,67],"#","trainer","eval convention","quant 8-bit","PSNR (dB)","min view","median","max view",[69,70,70,71,69,69,69,69],"right","left","center",[73,82,89,96],[74,75,76,77,78,79,80,81],"1","brush (premultiplied)","legacy","q8","1.596","0.991","1.616","1.944",[83,75,84,77,85,86,87,88],"2","brush","**35.237**","25.735","35.700","40.581",[90,75,84,91,92,93,94,95],"3","raw","35.184","25.731","35.645","40.585",[97,98,84,91,92,99,99,99],"4","training-time eval (raw)","—","Row 1 は対称崩壊 (brush trainer × legacy eval = 1.60 dB、A.3 symmetry test と一致 = 1.59 dB ± 0.01)。Row 2-3 が brush convention 下の真の結果、quant 単独 effect は +0.05 dB (impact 微小)。Row 4 は training-time eval、independent eval (Row 3) と完全一致 = 35.184 dB。",{"type":55,"text":102},"2. M3 gate 達成度",{"type":58,"columns":104,"align":110,"rows":111},[105,106,107,108,109],"milestone","target","実測","Δ","判定",[70,69,69,69,70],[112,118,124,129,134,139],[113,114,115,116,117],"P1.M3 (生命線、convention 明記)","Lego 30k brush conv > 30 dB","35.237 dB","+5.24 dB","**pass + 余裕大**",[119,120,121,122,123],"P1.M3 splat 数","> 200k","846,689","+646k","**pass (brush 282k の 3 倍)**",[125,126,115,127,128],"P1.M4 (F+G smoke)","PSNR > 34 dB","+1.24 dB","**M3 で既に pass、F+G 不要可能性**",[130,131,115,132,133],"P1.M5 (Final)","Lego brush conv > 36 dB + multi-scene > 32 dB","-0.76 dB","**Lego ほぼ到達、multi-scene 検証必要**",[135,136,115,137,138],"brush 自身 val (32.038 dB) 比","≥ 32.038 dB (parity)","+3.20 dB","**parity 達成 + 超え**",[140,141,142,143,144],"brush paper test (37.40 dB) 比","≥ 37.40 dB","(val 35.24)","-2.16 dB","**test split 再評価で確認必要**",{"type":55,"text":146},"3. 学習 curve (主要 milestone)",{"type":58,"columns":148,"align":154,"rows":155,"caption":200},[149,150,151,152,153],"iter","loss","splats","ms\u002Fiter","経過",[69,69,69,69,69],[156,161,167,173,177,181,186,191,196],[74,157,158,159,160],"5.94e-1","5,207","104.5","0.1s",[162,163,164,165,166],"1000","5.08e-2","12,460","15.0","15s",[168,169,170,171,172],"2000","1.61e-2","239,348","31.0","46s",[174,175,176,99,99],"5000","7.83e-3","541,930",[178,179,180,99,99],"10000","6.38e-3","747,410",[182,183,121,184,185],"15000","5.89e-3","141.5","26m",[187,188,121,189,190],"20000","5.58e-3","145.3","38m",[192,193,121,194,195],"25000","5.45e-3","142.9","50m",[197,198,121,99,199],"30000","5.37e-3","**62m18s**","refine stop_iter=15000 で splat 数 plateau (846,689)、その後 loss が +0.52e-3 改善 (5.89e-3 → 5.37e-3)。convergence は安定、巨大な overfit \u002F collapse 兆候なし。",{"type":55,"text":202},"4. legacy 30k baseline との比較",{"type":58,"columns":204,"align":208,"rows":209,"caption":243},[205,206,207,108],"metric","legacy 30k (lego-sh3-30k)","brush 互換 30k (lego-brushcompat-base-30k)",[70,69,69,69],[210,215,219,224,228,233,238],[211,212,213,214],"PSNR (legacy eval)","24.879 dB","1.596 dB","-23.28 dB (対称崩壊)",[216,217,115,218],"PSNR (brush eval)","1.667 dB","**+33.57 dB**",[220,221,222,223],"wallclock","22m 18s","1h 2m 18s","+2.7x",[225,226,121,227],"splats (final)","83,734","+10.1x",[229,230,231,232],"splats \u002F capacity (1M)","8.4%","84.7%","+76 ppt",[234,235,236,237],"ms\u002Fiter (final)","~45","~145","+3.2x (splats 10x の必然)",[239,240,241,242],"final loss","5.78e-3 (推定、legacy)","5.37e-3 (brush)","loss スケール非互換 (convention 違)","wallclock penalty (+2.7x) は受容範囲、splats 増 (10x) が主因。capacity 1M を 85% 利用、refine 抑制 (Phase D opacity decay) で 282k 帯への削減余地あり (brush 同等の memory footprint まで -10x 圧縮可能性)。",{"type":55,"text":245},"5. 含意 (autonomous loop の戦略再考)",{"type":247,"ordered":248,"items":249},"list",true,[250,251,252,253,254,255],"\u003Cstrong>P1.M3 + P1.M4 が同時 pass\u003C\u002Fstrong>: 当初 M3 (Week 4) → M4 (Week 6) の 2 phase が **5k smoke + 30k full の 1 turn で同時達成**。autonomous loop は想定の 5 倍速で進行。","\u003Cstrong>Phase C (LR scheduler)\u003C\u002Fstrong>: +1〜2 dB 期待だったが M3 既達なので bonus、M5 残 0.76 dB を詰めるか他軸 (refine 抑制で splats 282k 帯 + wallclock 改善) に振るか検討。","\u003Cstrong>Phase D (opacity decay)\u003C\u002Fstrong>: brush は 282k で済んでいるので、本実装の 846k は over-densification。opacity decay 導入で splats 削減 → wallclock も改善 → 競争力 (M4 Max での速度 advantage) も復活。","\u003Cstrong>Phase E (refine grad bit-exact)\u003C\u002Fstrong>: 不要かも (M3 既達)、ただし splats 削減 \u002F multi-scene 安定化目的で着手価値あり。","\u003Cstrong>Phase G (SH progressive growth)\u003C\u002Fstrong>: M5 残 0.76 dB を詰める可能性、ただし優先度低。","\u003Cstrong>Phase H (multi-scene)\u003C\u002Fstrong>: **最優先**。8 シーン brushcompat 30k で universal 効果実証 + brush mean 33.32 dB 超えで multi-scene parity 完全達成を狙う。",{"type":50,"label":257,"variant":258,"text":259},"次 Step の優先順 (autonomous loop continue)","info","\u003Cstrong>1) multi-scene chain bench\u003C\u002Fstrong> (chair\u002Fficus\u002Fdrums\u002Fhotdog\u002Fmic\u002Fmaterials\u002Fship、各 30k brushcompat、推定 7×62 min = ~7.3 h)\u003Cbr>\u003Cstrong>2) test split 200 view 再 DL + Lego test eval\u003C\u002Fstrong> (brush 37.40 dB と apples-to-apples 比較)\u003Cbr>\u003Cstrong>3) D.3 negative-findings-chapter の中核 update\u003C\u002Fstrong> (training-eval coupling 発見の卒論 narrative)\u003Cbr>\u003Cstrong>4) Phase D (opacity decay) で splats 抑制\u003C\u002Fstrong> (282k 帯 + wallclock 改善、M4 Max 速度 advantage 復活)\u003Cbr>\u003Cbr>1+2 を chain で起動 → 結果次第で 3+4 へ。Phase C\u002FE は M3 既達のため defer 候補。",{"type":55,"text":261},"6. 再現手順",{"type":263,"lang":264,"text":265},"code","bash","# 1. 30k full bench (再現)\ncd splat\ncargo build --release -p splat-cli\n.\u002Ftarget\u002Frelease\u002Fsplat train --config configs\u002F2026-05-24-1800-lego-brushcompat-base-30k.toml\n# → runs\u002Flego-brushcompat-base-30k\u002F{final.ply, result.toml}\n# → mean val PSNR 35.184 dB (~62 min on M4 Max)\n\n# 2. 4-way cross-eval\nPLY=runs\u002Flego-brushcompat-base-30k\u002Ffinal.ply\nDS=\u002FUsers\u002Fotkrickey\u002Fdev\u002F3dgs-workspace\u002Fdatasets\u002Fnerf_synthetic\u002Flego\n.\u002Ftarget\u002Frelease\u002Fsplat eval --ply $PLY --dataset $DS --split val --convention legacy --quantize-8bit\n# → 1.596 (対称崩壊)\n.\u002Ftarget\u002Frelease\u002Fsplat eval --ply $PLY --dataset $DS --split val --convention brush --quantize-8bit\n# → 35.237 (M3 +5.24 dB pass)\n.\u002Ftarget\u002Frelease\u002Fsplat eval --ply $PLY --dataset $DS --split val --convention brush\n# → 35.184 (raw、quant +0.05 dB impact)\n",{"type":55,"text":267},"7. 関連",{"type":247,"items":269},[270,271,272,273,274,275],"P1.B+F Stage 1 (5k smoke 31.334 dB): \u003Ccode>p1-b-f-trainer-convention-bridge\u003C\u002Fcode>","P1.A.3 cross-eval reproducer (主仮説 falsify + symmetry test): \u003Ccode>p1-a-3-cross-eval-reproducer\u003C\u002Fcode>","P1.A eval convention audit (統合 audit): \u003Ccode>p1-a-eval-convention-audit\u003C\u002Fcode>","A.4 NeRF Synthetic 8 scenes (multi-scene baseline mean 18.95 dB): \u003Ccode>a-4-nerf-synthetic-scene-results\u003C\u002Fcode>","brush 自身 bench: \u003Ccode>m4-brush-bench\u003C\u002Fcode>","central evaluation table (本 finding で 第 3 軸 row 更新): \u003Ccode>final-ablation-table\u003C\u002Fcode>",[277],{"id":29,"title":29,"subtitle":278,"date":9,"workspace":279,"tags":280,"verdict":284,"psnr":285,"psnr_unit":-1,"wallclock":222,"splats":286,"summary_url":287,"detail_path":287},"P1.B.F Stage 2 brush 互換 30k — gt_convention=premultiplied、refine 期間 brush 流","splat",[281,25,282,24,23,283],"p1-b-f","brush-compat","m3-gate","partial",35.18375015258789,846689,"\u002Fruns\u002Flego-brushcompat-base-30k\u002F",[289,315,334,352,370],{"id":36,"title":290,"date":9,"status":10,"polarity":291,"category":11,"axes":292,"tags":293,"task_code":301,"related_runs":302,"delta_psnr":311,"delta_wallclock":312,"rank":40,"verdict":284,"impact_summary":313,"detail_path":314},"A.4 NeRF Synthetic 他シーン展開 — 8 シーン complete 30k 結果","mixed",[14],[294,295,296,297,298,299,300],"phase-5","nerf-synthetic","multi-scene","psnr","scene-dependency","evaluation","8-scenes","A.4",[303,304,305,306,307,308,309,310],"lego-sh3-30k","chair-30k","ficus-30k","drums-30k","hotdog-30k","mic-30k","materials-30k","ship-30k","-5.93 dB (8 シーン平均 18.95 vs lego 24.879、std ±6.0)","21-29 min (シーン非依存的、materials のみ +5 min)","8 シーン complete (lego + 7 新規) 30k 完遂。シーン依存性が PSNR で 17.6 dB の幅 (materials 12.71 〜 hotdog 30.29)、mean 18.95 ± 6.0 dB。本実装の brush SoTA 比 gap は scene-dependent で -7.4 dB (hotdog) 〜 -22.3 dB (ficus 含む)。共通要因仮説: SfM init.ply の sparsity (細い枝 \u002F マイク \u002F 反射 PBR で薄い) + refine grad_threshold の lego\u002Fhotdog tuning over-fit。卒論 evaluation で「lego baseline + multi-scene mean ± std」併記必須。","\u002Ffindings\u002Fa-4-nerf-synthetic-scene-results\u002F",{"id":34,"title":316,"date":9,"status":10,"polarity":317,"category":11,"axes":318,"tags":319,"task_code":326,"related_runs":327,"delta_psnr":329,"delta_wallclock":330,"rank":40,"verdict":331,"impact_summary":332,"detail_path":333},"P1.A.3 cross-eval reproducer — brush convention で 24.879 → 1.67 dB に崩壊、主仮説 falsify","negative",[14,15,16],[18,320,321,21,322,323,297,23,324,325],"phase-a","milestone-m1","eval","convention","reproducer","falsified-hypothesis","P1.A.3 + P1.A.4",[328],"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",{"id":35,"title":335,"date":9,"status":10,"polarity":336,"category":337,"axes":338,"tags":339,"task_code":343,"related_runs":344,"delta_psnr":347,"delta_wallclock":348,"rank":40,"verdict":349,"impact_summary":350,"detail_path":351},"P1.A eval convention audit (統合) — 7 軸の diff 確定、apparent gap 推定 -3〜-6 dB","neutral","audit",[14,15,16],[18,320,321,21,322,323,297,23,340,341,337,342],"alpha","split","synthesis","P1.A (M1)",[345,346],"lego-sh3-30k (splat-rs 24.879 dB)","brush-lego-sh3-30k (37.40 dB report)","推定 -3〜-6 dB (apparent gap 縮小、A.3 で実測予定)","N\u002FA (audit task)","audit-complete-gate-passed","両 trainer の eval pipeline を file:line で完全 audit、PSNR formula 本体 (MAX=1 \u002F log10 \u002F RGB only \u002F per-view mean) は同等だが、(1) test split (200 view) vs val split (100 view)、(2) background composite convention の **完全逆方向**、(3) 8-bit roundtrip 有無、(4) α-mask 経路、(5) clamp\u002Fquantize 等 7 軸で diff を確認。最大の発見は brush の premultiplied-α + bg=ZERO eval が NeRF Synthetic の透明領域で構造的に PSNR を +3 dB 以上嵩上げする一方、splat-rs は target に white pre-composite \u002F rendered に bg 合成なしの mismatch で convergence 残差が MSE に直接残る。apparent gap の推定 -3〜-6 dB を A.3 reproducer で実証予定、残り -6〜-9 dB が真の algorithmic gap。","\u002Ffindings\u002Fp1-a-eval-convention-audit\u002F",{"id":33,"title":353,"date":9,"status":10,"polarity":12,"category":11,"axes":354,"tags":355,"task_code":361,"related_runs":362,"delta_psnr":365,"delta_wallclock":366,"rank":40,"verdict":367,"impact_summary":368,"detail_path":369},"P1.B.F Stage 1 — gt_convention=premultiplied 切替で brush eval PSNR を 1.67 → 31.33 dB に回復、coupling 解消実証",[14,15,16],[18,356,357,358,21,61,23,24,359,360],"phase-b","phase-f","milestone-m2","smoke","hypothesis-confirmed","P1.B + P1.F Stage 1",[363,30,364],"lego-legacybase-5k","lego-sh3-30k (P1.A.3 baseline)","+29.71 dB (brush eval 系: A.3 30k 1.667 dB → P1.B.F 5k 31.334 dB)、Stage 1 hypothesis (>10 dB) を +21 dB 上回り","5k 比較: legacy 202.4s \u002F brush 125.4s (brush -38% 高速、splats 77.6k → 93.9k だが GPU loss は同等)","hypothesis-confirmed-stage-2-go","P1.A.3 で `splat-rs trainer が white-bg target で学習 → 背景を opaque-white splat で埋める → brush 流 eval (bg=ZERO 比較) で MSE≈1 崩壊` と診断された coupling を、**GT loader を premultiplied 経路に切替えるだけ** で解消できるか 5k smoke で検証。同一 hyperparameter (`2026-05-22-2155-lego-sh3-30k.toml` の iter のみ 5k 短縮) で `data.gt_convention=white_bg` vs `data.gt_convention=premultiplied` を独立 training し、各 final.ply を 2 通り convention で eval (4 cell)。結果: brush trainer × brush eval = **31.334 dB**、legacy trainer × brush eval = 1.628 dB と完全に対比、coupling が双方向に存在することも symmetry test (brush trainer × legacy eval = 1.595 dB) で確定。5k 段階で既に B-N 30k baseline (24.88 dB legacy) を **brush eval 系で +6.5 dB 超え**、brush 公称 37 dB との gap は -5.7 dB のみ。Stage 1 hypothesis (10+ dB) を 21 dB 上回り、coupling 解消が brush parity への critical path であることを定量実証。実装は `splat-cli\u002Fsrc\u002Fconfig.rs` に `data.gt_convention: GtConvention` enum 追加 (default=`WhiteBg`、既存 configs 完全互換) + `train.rs` の train\u002Fval load を `load_nerf_synthetic_with_convention` に切替、合計 4 file の最小差分。loss kernel (`loss.metal:31-88`) は変更不要 (n_total=W·H·4 が α channel を含み、premultiplied target の α=0 領域が `rendered α (=1-T) → 0` の natural pressure を提供、brush の match_alpha 機構と同等効果)。","\u002Ffindings\u002Fp1-b-f-trainer-convention-bridge\u002F",{"id":37,"title":371,"date":372,"status":10,"polarity":291,"category":11,"axes":373,"tags":374,"task_code":380,"related_runs":381,"delta_psnr":382,"delta_wallclock":383,"rank":40,"verdict":384,"impact_summary":385,"detail_path":386},"M4 Max 上 brush (wgpu→Metal) の 30k baseline — wgpu 抽象は自作より速かった","2026-05-23",[15],[375,84,376,377,378,379],"phase-2","wgpu","baseline","m4-max","abstraction-cost","A.3",[303],"+11.13 dB (brush 比優位)","−65.6% (brush の方が速い)","investigative","wgpu 抽象は自作 native より遅いはず、という想定が逆。同一 M4 Max 上で brush (wgpu) が 9m08s \u002F 37.40 dB、自作 (Metal 直) が 26m32s \u002F 26.27 dB。第 2 軸 (抽象コスト定量化) の主張を再 framing する必要が確定。","\u002Ffindings\u002Fm4-brush-bench\u002F",1782449788638]