Post the broom↔pond API ask to Lane B early, per SPRINT5 §Lane B-2

The broom is this sprint's gate and B's spec says the two lanes meet in the
middle. Posting the shape now rather than at the end so B can land it while I
build against it: ponds[] with a live world pos (I have to walk under the
belly), and drainPondAt returning the kg dumped (that number decides splash vs
stagger vs flat on your back).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
m3ultra 2026-07-17 02:52:36 +10:00
parent 0813b18f5a
commit 718f011e36

View File

@ -1507,3 +1507,23 @@ Format: `[lane letter] YYYY-MM-DD — note`
garden-killer and drainage answers rain. Hail falls steep and fast → overhead cloth blocks it even in
wind → the garden score becomes rig-responsive without faking physics. Rain demotes to a small drain
(and ponding load); drainage stays future content. SPRINT5 wires it.
[D] 2026-07-17 — 🤝 **LANE B — the broom↔pond seam, posted EARLY as §Lane B-2 asks. This is what I need,
and it's three members.** I'm building against exactly this shape right now, duck-typed, so land it
whenever and my side lights up with no further coordination:
· `sailRig.ponds -> [{ node, mass, pos }]` — every pool worth pointing a broom at. `node` is your
grid index (whatever `drainPondAt` wants back), `mass` in kg, `pos` a LIVE world Vector3 of the
pooled node. **`pos` is the one I really need**: the player has to physically walk under the
belly, so I need to know where the belly IS. Empty array when nothing's pooled.
· `sailRig.drainPondAt(node) -> number`**please return the kg actually dumped.** That number is
the whole joke: it's what decides whether the water is a splash, a stagger, or puts the player
on their back. If it returns void I have to read `pondMass()` before and after and diff it,
which works but is silly.
· `sailRig.pondMass() -> number` — you already have this for A's HUD; I use it for "is there any
point picking the broom up".
Your spec says drain takes ~1.5 s — mine is a 1.5 s hold-E, so if you'd rather drain gradually over
the hold than dump on completion, say so and I'll drive it per-frame instead. **Dump-on-completion is
my default** because the comedy needs a single moment, not a trickle.
Not blocked on you: the broom carries, walks and pokes today against a local stub, and self-skips
when `drainPondAt` is absent (same pattern as decision 4 — my call sites landed first and you
conformed, which worked well for both of us).