One layout, and each band appears when it has content. The bands switch on how many people are deciding — not on how many seats the account has — because two of them are not about comparing people at all. Most weeks the screen says there is nothing to do, and that is the product working.
Your electrician roughs in Thursday. After that it's a wall to open.
Quoted: the electrician's return call-out. Assumed: opening and closing the island wall a second time.
Settle it now26 settled and staying that way. Nothing you have chosen gets revisited.
The focus card borrows .hero from 11: the room drawing fills the top, the decision is asked underneath it, one card and one shape. "Kitchen" no longer needs a chip once the picture says it — only the date remains above the title, because a drawing can't say Thursday. Came out of a room-options exploration this session; the earlier "Kitchen" chip and a swatch-row variant (what's already settled in the room) were both tried and dropped, the swatch row for pushing the CTA off-screen on a real device viewport.
Never above the focus card, and never omitted. A decision whose tags match nobody is computed as matched-no-one rather than rendered as an empty group — otherwise it surfaces for nobody and is discovered at drywall. It moved off the flat .say interruption and onto a .card under a section-header — the same shape Whose move and Out for input use on frame 2 — because .say reads as the one thing on the screen that must never be missed, and this is really "here are some other things that need you," which needs to look like its own section from the start. Nothing computes exactly one orphaned decision at a time, so the card holds rows, not a single line.
A small drawing, not a sentence naming the room — the same reasoning as the focus card, now per row. It's also what tells two rows in two different rooms (Mudroom, Guest bath) apart from each other and from the kitchen above them, once the room is a picture rather than a word everywhere else on the screen.
Same rule this page already enforces on Coming up, applied to an actionable list instead of a reassurance sentence: the two most pressing (coach_notes.priority already ranks them, 2–9 — nothing new to compute), then a bare count for the rest. Two matches the weight the focus card can afford to share the screen with. Still open: "Two more waiting the same way" names them and sends nobody anywhere — there is no screen today that lists every decision matched to no one, across every room, in one place.
A bare count with no denominator. The fraction answers how far through am I, which is the one number that makes somebody standing in a half-built house anxious and the one they can do nothing about.
A scrollable queue of everything ahead reads as a second denominator by another name. Ruled: a count with a reason, never rows. Settled, and staying settled moved to the room, where a decision's history belongs; what stays on Now is the one sentence that carries the build's temperature, not the list that used to.
The urgency behind this card is not a phase-and-lead-time estimate — that model has no real inputs behind it (every builder_lead_time_days on stage is null, strategies is empty). It is status_resolver's dependency graph — unmet prerequisites, what a decision blocks, its readiness — joined against the 5,111-row coach_notes queue that has been computing exactly this for months and was never wired to a screen. Ruled to sync (canonical_graph, a global decision_library, and coach_notes narrowed to this homeowner) so it runs on the device, the same reason capture does not wait on signal.
Contingency is drawn with .segbar — 13's loan bar, generalized (_ds/money.css) rather than duplicated: a fixed pool, set aside once, where spending against it doesn't grow the total, is the same shape whether it's bank-set (a loan) or self-set (contingency). Still never a fraction against a moving total like a contract sum, which is what the ban this page relies on elsewhere ("26 settled", never "26 of 47") is actually about.
Kitchen and Electrical, so it reaches both of you. Your electrician roughs in Thursday.
Both of you is not ambiguity awaiting a tie-break. Overlap is the signal that a decision genuinely needs two opinions, and it is why the island electrical — Kitchen and Electrical — is the focus card. Two earlier mockups each invented an exclusive division of the house and invented opposite ones; neither survives.
The counter material went to Erin Vance, Sam's sister, who has no account and never will. That band appears the moment there is anybody to send to, which is why it is not on the seat-count ladder at all.
A homeowner alone on the account who sends decisions to their spouse by link gets out for input and no whose move. Both of those are correct, and a screen keyed to the seat count would get the first one wrong.
This frame-sub was true before the room drawing and had to stay true after: same hero card as frame 1, Both of you added to the chip row where Kitchen used to sit, because the drawing already says which room and doesn't say who it's for. Nobody has this one gets the same card treatment as frame 1 too, with one row instead of two — the component doesn't need a second example to prove it handles one.
No suggested tasks, no why not review your…, no encouraging card. A homeowner who opens the app and is told there is nothing to do has received the most valuable message this product sends, and burying it under invented work is the failure the whole design exists to prevent.
A statement rather than a shape. Day one is a different screen with a different job — 09-first-run owns it — and the two must not share a component, or the good news reads as an unfinished screen for the rest of the product's life.
Three weeks, and the trusses, every single time. And nothing since has added to it — the build has carried the same three weeks since November, which is one delay being carried rather than three delays. A screen that prints the number alone is drawing anxiety instead of coaching.
It was drawing the same sentence twice: the cabinet set is already named in the line above. A scrollable queue restates what the reassurance sentence already said, which is the failure this page's own rule exists to prevent one section down.
Nothing needs you this week is a confident statement about a house somebody looked at. This screen has not looked at anything yet. Reusing .empty-y2's shape without changing what it says would make a claim out of a failure to compute one — the same mistake now_screen.dart already refuses for the error case.
Unlike frame 3, which correctly offers nothing to do, this state names the specific gap and what closes it. A dead end here reads as the product having lost track of the house, not as good news withheld.
The first draft of this frame named the gap as Dave hasn't connected as your builder and gave inviting him as the only way out — exactly the assumption 25 already refuses on the builder's side of the same relationship: "a skippable invite screen is still a screen that told a solo builder what the product assumes about him." A homeowner account never requires a builder. status_resolver.go and coach_notes take no builder input at all — the real gap is that nothing has been walked through yet, which is exactly as true for a self-managed build as a builder-connected one. The fix is the day-one move 09-first-run already draws: hand the homeowner their own next step, not somebody else's.
00-states frame 11 already draws we don't have this one yet for a cold, unsynced cache — a different gap with a different fix (open the job on this phone). This one is a project the device has fully synced and still cannot compute an answer for, because the inputs themselves were never provided.
Nothing needs deciding. One thing comes up this month.
Hot soapy water. Ten minutes, and it's the one that actually matters.
47 settled and staying that way, across every room.
The binder's tab rule, reaching the landing surface. The door did not change name and the list did not change heading. The card itself is no longer identical to frame 1's, though: it stayed the plain .card.focus shape it always was, on purpose, while frame 1 became a .hero. Written when both were the same card; the annotation below is why they no longer are.
The Kitchen chip on this card was already a fiction — nothing attaches a hood filter to the kitchen; care items are project-wide. Giving that same non-fact a confident room illustration would have overclaimed harder than a text chip ever did, not less; a drawing reads as more certain than a word, and this is exactly backwards from what's true. Frame 1's decisions are genuinely zone-linked (decision_zones); this frame's aren't, so it keeps the chip and skips the room it was never entitled to draw.
A quiet week mid-build is a temporary absence of decisions. After move-in the absence is permanent and correct, so it is said in the screen's standing copy rather than as an empty state. Two screens that look similar and mean opposite things.
MaintenanceScreen is routed and reachable, but not from the shell.
Same swap as frame 1, for the same reason: a list restates what a count already says. The room, not Now, is where Kitchen · 4 appliances · 4 finishes belongs after move-in.
This went in before you got here. Tell me what it is and five other questions sort themselves out.
Slab on grade
Crawl space
Full basement
Everything from the drywall forward. Paint, tile, fixtures, floors. That's most of what you can still change and all of what you can still see.
From docs/superpowers/specs/2026-08-21-decision-gates-and-seeding-waves-design.md §3.3. Mode is "was this decided without you," and it is computed at read time from where the build stands. Storing it would go stale the moment the project advances a phase. So this is not a different screen and not a different mode the homeowner switches into: it is frame 1 with a different answer to one question, per decision, every time the screen is drawn.
It was a bare .chip, which has no ground of its own: every chip in hc.css takes its color from a modifier and a chip with none is invisible text sitting on a card. It is a section header instead, which is also the truer object — the label is about the whole band below it rather than about the one card, and this screen already sorts by band everywhere else. The options moved from a page-local class onto .opt, the shared choice block, which is where their spacing comes from.
Frame 1's focus card carries settled by Thursday $0 / settled after $1,200, which is the whole late-cost argument. A poured foundation has no such pair — there is no version of answering this that costs anything, because the concrete does not care. Leaving the component in with two zeroes would be worse than dropping it: it would imply a deadline that does not exist and it would spend the loudest thing on the screen on a question with no urgency at all.
A homeowner who joins at framing has 66 design decisions sitting behind them, and every instinct of every product like this one is to render that as a backlog. It is not one. The house has a foundation; what is missing is our knowledge of it, and the sentence says which of those two things is true. The binder outlives the build, so recording what went in is worth doing regardless of whether anything downstream depends on it — and here five things do.
The CTA says Record it rather than Settle it now, and that is not word choice. §2.1 makes it a fourth route to a resolution with its own evidence: the answer carries source='stated' and via='stepper', attributed to the authenticated project seat, because that project member is selecting the authored description that matches the house rather than measuring it, and the resolution never claims the homeowner chose it. The offer to read the plan set instead is a different evidence path, which is why it sits under the button rather than as a competing card.
A spec-home buyer at day zero. Mode derives from phase, a project bought before ground-break has advanced no phase, and the derivation therefore returns choose for the whole corpus — so somebody buying a finished house gets asked what foundation she would like. Delivery-model-derived mode fixes it and is cycle 2. Filed as OPEN_QUESTIONS.md Q93 rather than drawn around.
Your electrician roughs in Thursday. After that it's a wall to open.
Quoted: the electrician's return call-out. Assumed: opening and closing the island wall a second time.
26 settled and staying that way. Nothing you have chosen gets revisited.
Deciders, not seats. A decider is anybody who can settle something: a seat on the account, or a person you sent a link to. The table below is the whole rule, and each band still disappears when it has no content.
One, sending to nobody — focus card · nobody has this · reassurance sentence · money.
One, sending to someone — the same, plus out for input.
Two or more deciding — the same, plus whose move.
The focus card always leads the screen and nobody has this always leads the bands. Uncapped seats decide what this screen can show; they do not create a second screen to maintain. Coming up and Settled, and staying settled are no longer bands — ruled 2026-08-10, they collapsed to the two reassurance sentences under the bands, and the itemized settled list moved to the room.
Q11, and the critical review of it. Coming up comes off as a scrollable queue; what replaces it is a count with a reason, never rows. Settled, and staying settled moves to the room; Now keeps one sentence carrying the build's temperature instead of the list. OPEN_QUESTIONS.md Q11.
Q18 and Q19. The dependency graph this screen's urgency needs already exists and is queryable (status_resolver.go) — it was twice reported missing and was not. A 5,111-row note queue (coach_notes) has been answering "what's pressing" for months and was never wired to a screen. Now is built on those, with phase-and-lead-time math deferred until its inputs get writers, not the other way round. OPEN_QUESTIONS.md Q18, Q19.
Q36. Ruled to sync, not serve: canonical_graph (one checksummed row), decision_library (a global table), and coach_notes narrowed to this homeowner. status_resolver's logic moves to the device, because a round trip on the screen most likely to open with no signal is the wrong side of that fork. OPEN_QUESTIONS.md Q36.
Q10. The project name shown in screen-title defaults to {last_name} Home and is editable on the project settings screen Q15 adds — not drawn here, since this page only reads the name. OPEN_QUESTIONS.md Q10.
Bringing the room in. The focus card leads with the room's own drawing (.hero, borrowed from 11) instead of naming the room in a chip, and nobody has this moved from a flat interruption to a card of rows, capped at two with a count for the rest. Both came out of a room-options exploration run against this exact frame, and both apply to frame 2 as well since its focus card is documented as the same one. Your money moved onto .segbar, the loan bar generalized (_ds/money.css) to cover any fixed pool, not the loan alone.
Whether the build so far is a nav tile or only a screen row. Mockup 21 draws six binder rows and pays for it with a page in level two, and flags this as a reasonable thing to overrule. This deck does not overrule it.
The homeowner-facing form of you have not opened this. Scope is shared and activity is not — there are no read receipts between two people on one account, and naming that boundary is worth more than guessing at the surface for it.
Live versus snapshot. A catalog edit must not silently rewrite what a settled decision said (0093) — urgency derived live from catalog durations and lead times has the same shape, and whether an open decision's "pressing" should track the catalog live or freeze at the moment it opened is unruled. OPEN_QUESTIONS.md Q11, finding B4.
Where the rest of "nobody has this" go. The count past two names them and sends nobody anywhere — there is no screen today that lists every decision matched to no one, across every room, in one place. 11 lists decisions per room, not per this specific gap.