- src/main.ts: await initAssets() before the world is built (createBlob captures
blob.mesh by reference). Safe: preload races each url against a deadline with
allSettled, so a stalled asset is a slow boot on built-ins, never a hang.
- src/game.ts: course.tramp hook (hides the MATERIAL — the custom model is a
child, so hiding the mesh would hide it too). Collider untouched.
- vite.config.ts: editor.html as a build input. Without it the Workshop existed
only under vite dev — invisible in the production deploy it is built for.
- editor cannon.barrel: anchor the preview at the cannon group's origin (where
the runtime attaches it) while still hiding the pivot's tube. Preview was
0.45m above where the game renders it — WYSIWYG off by a measurable amount.
- manifest-io.test: drop the stale NOT_YET_IN_THE_RUNTIME guard now that the
runtime adopted all four ids; the check is strict both ways, which is what
stops the two halves drifting again.
Verified: 10/10 test suites (360 assertions), sacred-parity fingerprint
49df4f20 unchanged from pre-workshop main, dist/editor.html + dist/assets/
manifest.json ship.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- installZones + cannonConfigs through the single cannon path; old centre
plate/boot removed (fork versions supersede); belt+bucket to centre lane
(sunk flush — proud face curbed the line); arch punishes failed MEGA runs
- puddles: distance-based stamping (speed-independent coverage), rate 4/u,
contact tolerance 1.0 (bounce hops starved strips), fork strips widened
toward the racing line + neutral-centre red top-up strip
- under-shelf volumes filled solid in the centre (side corridors left open);
launcher catch widened to the full gap
- verified: naive hold-W finishes ~12s, ghost records+replays, MINI (0.77)
passes the tunnel with 47% pink, buffs activate (GRIP live at 29% green),
78% total coverage on a wandering run
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Fixed-step world runtime, event bus wire protocol between lanes, integration
seam (game.ts) with placeholder ball. Lanes A/B/C own disjoint dirs.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>