Commit Graph

8 Commits

Author SHA1 Message Date
type-two
51d55ac231 THE VESSELS: the benches get real pots, baskets and a slotted spoon
The MODELBEAST station lane finished — 14 hero props, all local, all
free — and the single-instance vessels are now wired into the benches
that were still cooking in grey primitives:

- the deep fryer: a steel pot with handles, a wire basket that rides the
  lift animation, and a proper drain rack stage left
- the poach: a perforated slotted spoon the egg actually sits IN
- pasta night: a real stockpot, with the salt visibly clouding the water

Per-piece food (wings, chips) stays procedural on purpose: their colour
IS the gameplay read — raw to golden to regret — and a textured mesh
tinted per-frame reads as mud. Fidelity loses to legibility.

Three fixes the screenshots forced, none of which guessing would have
found:
- The oil disc was sized to the understudy cylinder, so it poked out
  past the real pot's narrower rim like a yellow skirt. Refitted.
- The basket sat below the oil line — invisible, and a basket you
  cannot see is a basket you cannot judge. Raised proud, handle kept.
- The spoon is 1.9 long in Z with its bowl at one END, so centring the
  model parked the bowl a full half-length away from the egg. Measured
  the bounding box in-browser and shifted by half the length; the egg
  rides the bowl now.

And one prop rejected: the generated egg carton ships with six eggs
baked into the mesh, and that bench is entirely about which eggs are
YOURS — draggable, float-tested, state-coloured. A carton that already
has eggs in it is a lie the player has to see past. An empty tray is
queued instead.

Verified after: chips 10.0, poach 9.9, pasta 10.0.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-26 18:41:59 +10:00
type-two
e9fca4f5c9 THE POT: day 25 — you can always add more salt. you can never add less.
Pasta night, and the kitchen's first genuinely irreversible verb. Salt is
a HELD pour, not a click: hold S and it falls, you stop it and nothing
else will, and `salt` is a number that only ever goes up. The words walk
you to the edge and then stop helping — 'shy of it, more while you still
can' becomes 'seasoned like the sea. stop.' becomes 'heavy handed. there
is no going back.' Salt thrown in after the pasta counts a quarter: it
seasons the water you are about to pour down the sink.

The rest is the atlas's pasta doctrine: pasta wants a ROLLING boil, and
a lazy simmer glues the strands into one brick because they sit in their
own starch instead of tumbling. Al dente is a window in immersion
seconds that never appears on screen. And the last verb is restraint —
RESERVE a cup of the starchy water before you drain, or the sauce has
nothing to hold onto.

Two things the adversarial pass caught, both about stakes being fake:
- Brine scored 8.6. An inedible plate cannot be averaged away by good
  timing elsewhere, so ruin now falls off a cliff (not a ramp) and a
  brined pot is CAPPED at 3.0 — the one verb you could not take back
  gets the one score you cannot climb out of.
- The sourdough starter was buttering up chip day. Her 'is this a toast
  day' test was a blocklist of stations that existed when she shipped,
  so air fryer, fryer and pot all silently qualified as toast. Replaced
  with stationOf()/isToastDay() in orders.ts — every station flag listed
  in exactly one place, where the next station cannot slip past it.

Verified: honest pot 10.0; brine 3.0 at the cap; the lazy cook (simmer,
salt after the drop, drained every drop) 4.8 with all three rows naming
the exact sin.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-25 18:50:05 +10:00
type-two
9e315bd7a9 gen-assets: heat lane — cooktops, pans, outdoor BBQ, utensils (seeds 181-219)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-19 13:45:40 +10:00
type-two
708d66316c Prep batch complete (12/12: oil bottle, oven tray); pantry lane added
gen-assets.sh gains 'pantry': mushrooms x3 + bell pepper, seeds 167-179.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-17 21:27:05 +10:00
type-two
ee1eb8ebc3 Mushrooms: three varieties for the prep bench, plus gen-assets machine fixes
- 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>
2026-07-17 18:20:10 +10:00
monster
e5be266ce6 M10: the bakery, verified — the wobble follows you into the toaster
Played end-to-end via the extended harness (t.start/day/pick/slice):
- Day 9 knife trip: bread_knife dragged above the rim, 0.45s dwell commits.
- Clean doorstop (bread knife, 0.05 u/frame): 5 strokes, wedge 0, squash 0.
  STROKE_GAIN 0.16 -> 0.10 to hit the 4-6 deliberate-stroke feel.
- The Best Thing: 3 strokes, and the same wobble input that wedges the bread
  knife to 0.299 only reaches 0.044 — nearly wobble-proof, as specced.
- Coupling: wobbled cut toasts at browning stdev 0.088 vs 0.071 clean, same
  mean — 'a bit wedged' band (>0.18) confirmed in the Cut criterion.
- Slam cut (0.4 u/frame): squash 1.0, arrives pre-damaged (damage 0.02 pre-toast).
- Soup spoon siege: 17 strokes / 166 frames, miserable but possible.
- Brands: quality now drives heat-noise amp (0.12+0.42*(1-q)) AND blotch
  frequency (3+3*(1-q)); WONDERSLICE visibly patchier than Crustworthy at 10s.
- Slicer visuals: cut seam deepens with progress; freed slice tips off the
  loaf and lands crumb-up (doneTimer 0.7 -> 1.05 for the fall).
- gen-assets.sh: retry-once per stage (rsync flakes), bakery seeds bumped,
  prep-bench cast queued ($1 prep).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-17 16:58:13 +10:00
monster
31f2eff28e M10 WIP + Build Brief 2: the bakery is code-complete, the prep bench is specced
M10 (code-complete, verification pending — see OPUS-BUILD-BRIEF-2.md §2):
- Brands with mechanical quality (WONDERSLICE 0.25 vs Crustworthy 0.8 etc.):
  quality scales heat-map patchiness and crumb fragility. Bakery sourdough is
  loaf-only.
- Slicing minigame: aim thickness, saw with vertical strokes; progress/wobble/
  squash; wedge slices brown unevenly in the toaster (the bad cut follows you);
  squash arrives as pre-existing damage.
- Bread Knife + THE BEST THING (heavy, soft-scalloped, saw eff 1.65) join the
  drawer; on loaf days the drawer trip happens BEFORE toasting ("they are
  waiting") and whatever you fish out is what you slice with.
- Day 9 handwritten (the inspector wants a doorstop with parallel faces),
  procedural brands/loaf days from day 10, The Cut criterion (band + wedge +
  squash, TBT signature bonus), cut line bank.
- Verified so far: day-9 ticket chips, knife-trip drawer with bread_knife AND
  the_best_thing present, timer label, typecheck + build. Slicer end-to-end
  play, tuning, and couplings assertions are itemised in the brief.

OPUS-BUILD-BRIEF-2.md — the prep bench: generalized ingredients + cutting
(slip, juice, piece-evenness CV), the judged mess field, oranges + ribbed
pyramid juicer (halve evenness caps yield, seeds by juicer tier, the
Juicernaut), the grater (zest/pith line, cheese needs cold, knuckles), onions
(sting that blurs REAL vision, the stop-short-of-the-stem criss-cross dice),
and bruschetta as the capstone (temperature planning, roast tomatoes on the
browning field, topping Clark-Evans, the sog clock vs doorstop slices).

Bakery asset batch partially failed (flux errors + one lost GLB) — regen
instructions with retries are in the brief §8.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-17 16:24:05 +10:00
monster
10adb268a0 M0: scaffold — Vite+TS+Three+Rapier, slice sim core, asset pipeline
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>
2026-07-16 21:16:18 +10:00