- button_mushroom / portobello / king_oyster in the ingredient cast:
slippery skins (0.55-0.8, the tomato treatment), soft flesh, portobello
gills layered and weeping; new 'mushroom' cap-and-stem silhouette.
- Verified via harness: dinner knife pressed on a button skates (1 slip,
cut lands 0.157 off-aim; tomato baseline 2 slips / 0.218), The Best
Thing bites clean through under the same press, sawing properly cuts
center with zero slips.
- gen-assets.sh: find MODELBEAST at ~/MODELBEAST, token from
backnforth/.env, MB_HOST to the m3ultra queue; every mb stage retries
10x with 60s pause because m4pro's venvs are gone (ponytail-marked,
remove when m4pro is healed).
- launch.json: port 5273 (5173 taken by another session's server).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The bread slice is the whole game's canvas, so it's built first and properly:
- Field: a 128x128 scalar field with bilinear sample, a mass-conserving brush,
self-levelling relax, and the masked statistics the judge will read.
- Slice: extruded loaf silhouette (domed top), planar-projected UVs so the sim
grid lines up with the bread, per-texel silhouette mask, and four fields
(browning/dryness/spread/damage) packed into one RGBA8 texture per frame.
- Custom shader: browning ramp with blotchy char, crumb/crust/inclusions,
spread wetting + opacity + thickness relief, gloss, gouge exposure, and
flat data views for the judge screen.
- bread.ts / spreads.ts: the archetypes and the rheology the difficulty
curve will live in.
- scripts/gen-assets.sh: reproducible fixed-seed asset generation through
MODELBEAST (flux_local -> bg_remove_local -> hunyuan3d_mlx). All on-device.
Legibility work that mattered: butter rendered invisible at first. Fixes were
a gamma-style wetting darkening (a multiply *brightens* pale crumb), a normal
perturbation taken in UV units rather than raw texel deltas (~30x too small),
and pulling the lighting back under 1.0 so ACES stops desaturating yellow to
cream.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>