benchmarkcanonicalOWNER-2026-07-10

BM-002 — Gaussian Splat Budgets · bm-002-splat-budget

Owner directive (2026-07-10), canonical. "For now, generate with the Holonprint Loop with gaussian splatting, lenis, tailwind, react, next, use webgl (…) scroll video control, 3D animated elements, physics model as gravity, wave, sparks of electricity, hitbox…" [src: wiki/development/prompts-archive/by-topic/knowledge-management-and-concept-modeling.md:498] — under the device bound "doesnt matter the device, 15 years old mobile" [src: :463].

Content

BM-002 fixes the resource budgets for every gaussian-splatting scene rendered by the spark-renderer under the holonprint loop — the Royal Orbit spatial-site sceneries, letterform scenes and behavior overlays. Like bm-001-web-perf, the numbers are squad-eggtech's (RUN-017) quantitative encoding of the owner's mandate; recalibration requires measured evidence logged in the run heartbeat (sop-003-run-dispatch). BM-002 composes with BM-001: staying inside these budgets is how the FPS/heap gates stay green.

Splat-count budgets

BudgetDesktopMobile / old-phone
Resident splats (total in memory, all live slices)≤ 700 k≤ 300 k
Behavior overlays (extra splats per chapter for loop-driven behaviors: sand, sparks, wave, life)≤ 20 k per chapter≤ 20 k per chapter
Letterform scenes (old-arabic letters forming scenarios [src: :481])≤ 60 k per letterform≤ 30 k per letterform

CPU frame budgets (main thread, per frame)

WorkloadDesktopMobile
Behavior loops (routines, physics events on scenery elements)≤ 2.0 ms≤ 1.0 ms
Morphs (letterform / scene transitions)≤ 1.5 ms≤ 1.5 ms
Flourishes (non-essential effects; first to degrade)≤ 0.7 ms≤ 0.7 ms

Degradation order under pressure: flourishes → behavior overlay density → letterform LOD. Resident-splat and morph budgets never degrade silently — exceeding them is a refused delivery.

Wire-size budgets per tier

Loading may be long [src: :652], but wire size still bounds it. Budgets assume compressed splat streams (≈16–32 B/splat effective) delivered progressively per chapter.

TierTotal splat payload (all chapters)Per-chapter chunkFirst-interactive payload
desktop-high≤ 24 MB≤ 4 MB≤ 6 MB
mobile≤ 10 MB≤ 2 MB≤ 3 MB
old-phone≤ 6 MB≤ 1.5 MB≤ 2 MB

Measurement procedure

  1. Per scene: dump live splat counts (resident, overlay, letterform) from the spark-renderer debug hooks; per frame: profile behavior/morph/flourish timings on both reference tiers.
  2. Per build: record chunk sizes from the cb-vite build manifest + asset pipeline.
  3. Log all values in the RUN-017 heartbeat; dispatch accepts/refuses per sop-003-run-dispatch step 5; refused rows retry under sop-001-loop-execution.

Composition

See also

Linked from — 30 cards