Sketches, not specs. Direction for the pumps wave so it opens with visual intent instead of a blank page. Decisions honored throughout: ADR-0016 (single authority / arm-gate), ADR-0022 (alert-first; the silent under-watering failure gets the loudest treatment), ADR-0028 (the minimum Sprout is complete), ADR-0008 (character on notification/approval surfaces, instrument grammar in histories), the doctrine's four-question test and out-of-box fence, and the house rule: a derived number never dresses as a measurement.
Pump presence enriches the existing plant-first card without restructuring it — one status line + a dose history in instrument grammar. No mood, no prose inside the dense readout.
Why: the noisy failure (an extra dose) is recoverable; the silent one (no dose, ever) is not. The alert card is therefore the most designed state in the loop — alert-first, calm voice, no guilt, explicit next action.
Sprout never waters silently (ADR-0016: a forced dose is an explicit human decision). The ask is a character surface (ADR-0008 allows notification/approval); the facts in it are instrument-sourced, never invented.
Predict-first (#19): a modeled level from dose history ships before any tank sensor exists. The two must never look alike — provenance is the design, not a footnote.
Grammar: modeled = ≈ + hatch + --st-predicted + the word "modeled". Measured = solid + sensor named. A sensor upgrade swaps the card's provenance, not its layout — presence enriches, never restructures.
#479's bar: "I'm glad it told me," not "make it stop." One notification, sent early, actionable, calm. Explicitly above the robot-mop-yells-empty floor.
Voice rules applied: first person, fact-then-feeling, one line of ask, no guilt, no invented precision ("about two days", from the runway model — ≈-faithful). Proposed lines graduate into voice-strings.json → bySurface at build time; this sketch is not the canonical pool.
ADR-0028 + the out-of-box fence, rendered: one MCU + one sensor is a whole product. Absence is nothing — no ghost slots, no grayed "add a pump" upsell, no "degraded" badge.
The test for every v0.9.0 surface: render it with the peripheral absent. If the absence leaves a hole, a gray slot, or an apology — the design is wrong. If it leaves nothing, it's right.
Inputs: ADR-0016 · ADR-0022 · ADR-0028 · ADR-0008 · doctrine §1–§3 · #19 · #478/#479 · #597. Sketch fidelity — iterate at v0.9.0 grooming. — Design-QA 🔍