Day one is a binder with nothing in it. Nine rooms are already there, because they came off the plan set, and not one of them has a settled decision, a color, a photo or a count. This is the state every homeowner sees first and the hardest one in the set to draw honestly, because the two easy answers are a screen full of widgets explaining their own emptiness and a number that tells you how far behind you are.
Tell me about your kitchen.
The nine spaces, and Plans & drawings. Spaces are created from the plan set or from onboarding before anything is settled, which is why the grid is full on a screen where everything else is empty.
The contents page. Money, Papers & permits, People, Care and The build so far as tabs — the last of those least of all, since project_phase_status carries started_at and completed_at, they are read by the coach and written by nothing outside tests, and there is no target column at all. And the Start here card: nothing decides which room to open a project on, so "start with the kitchen" is a judgment the app does not currently make.
Only the kitchen has a drawing. The other eight cards are flat here because their illustrations have not been made, not because a room with nothing settled has no drawing. On day one every card should carry its room in undecided grays, the way the kitchen does.
How do you cook on a normal weeknight?
Some of these answer themselves once you have answered others, so I won't know everything I need to ask until you start.
The questions, their order and the dependencies between them. data/library/space_questions/kitchen.json authors fifteen, and the one drawn here is the first of them by display order, word for word. The three themes group that same fifteen; they are not written for this frame.
The room drawing and the swatch strip above it. There is no color spec-field type at all: roughly 65 color-shaped field keys store free text that nothing parses into a hex, so settling the wall paint would not fill the first chip in. The pending hatch is honest today for a different reason than it will be later.
Three sections are missing on purpose. Mid-build this tab carries Settled, Still open and Who is doing it. On day one they have nothing in them, so they are not drawn, and the tab is the room, one question and the shape of what is coming.
Nothing settled
No variables set. Every region falls back to the app's own undecided neutral — warm gray on paper, and the same neutral one key down in dark.
Four finishes settled
Walls, cabinets, floor and counter. Trim, backsplash, appliances and fixtures are still nobody's decision, and still neutral.
The drawing. _ds/img/kitchen.svg is written to this contract: eleven named regions, each reading --r-<region> with a desaturated fallback, and every highlight and shadow a black or white overlay so it follows whatever color the region holds. _ds/img/kitchen-svg-test.html renders it under three states, the first of which sets no variables at all. There is one of these drawings, for the kitchen.
Everything that would drive it, except the picture itself. A photograph can already be attached to a space — zone_memories takes memory_type: "image" against a zone_id, and every zone inherits a default illustration from zone_library.image_url. What is missing is everything that would let a settled decision paint one: no color spec-field type, and the surface vocabulary that says which region a color belongs to exists only inside the AI extractor's JSON schema. Counter and backsplash are not even in that vocabulary, which is why the counter above is a fiction the app could not currently produce.
Pewter Green had no hex when this page was drawn. FICTION.md named it, branded it and coded it as SW 6208 at LRV 12, and left the hex blank because no page had needed one. Two pages then needed one on the same night and invented different values. #5F665B is now pinned in FICTION.md and both pages use it.
5 decisions depend on this answer.
Slab on grade
Locks: no basement option. Plumbing layout is fixed. HVAC goes in the attic or on the main floor.
Crawl space
Locks: foundation height and access points. Ventilation or encapsulation strategy.
Full basement
Locks: foundation depth and layout. Waterproofing system. Egress window locations.
Each of those sentences is the builder's, not mine. They are what that option settles for you whether you meant it to or not.
Full Basement opens five of these and closes none. Crawl Space opens one and closes four. Slab closes all five. So the headline cannot promise a number — a card reading "5 decisions unlock" would be a lie on two of the three options a homeowner is most likely to pick, and the one it is true for is the most expensive. Depend on is true for all seven options and commits to nothing.
Every sentence under an option is that option's own locks, already written in the library and already shown elsewhere in the product. Nothing here is composed at render time. The screen is reading a field, which is the difference between a claim the product can stand behind and a sentence it invented about somebody's foundation.
Seven foundation types exist in the base library. Seven rows is a catalog and a homeowner on day one is not shopping foundations, so it shows three and offers the rest rather than hiding them. Which three is not settled and this drawing does not claim it is — an earlier version of this line said these were the three that occur in Central Texas, which nothing in the repository supports.
The card had three options and no way to act on any of them, which is a screen that asks a question and then refuses to take the answer. It selects and settles in place now, and See all seven is what a homeowner reaches for when none of the three is theirs. The rows also moved off a class that only 04 styles and onto .opt, the shared choice block from hc.css — which is where their spacing, their outline and their selected fill come from. A page-local style used on another page is an unstyled div, and no gate catches it because nothing is missing, only inert.
78746 is Travis County (FIPS 48453), which resolves to the us_gulf_coast pack — projectctx/resolve_test.go:43 pins Austin's 78701, the same county, to zone 2A and that slug. That pack sets region_options_replace on foundation_type, and regionpack/options.go's OfferedOptions composes replace-first, so the Hollis House is offered three Gulf Coast foundations and none of the seven drawn from. All eight region packs replace this decision's options, and all eight replace hvac_system_type too.
The gate content does not cover any of them. Regional option records carry a title and no key — 125 of them, zero keyed — while all 108 authored gate rulings key on library options like foundation_type/slab_on_grade. So for a project with a postal code in any of the eight regions, foundation_type folds to undetermined permanently and its five dependents never seed. That is 40 of the 108 rows: 35 on foundation, 5 on HVAC. Found while checking one sentence of copy on this frame; recorded in the design's §5.2 and filed as OPEN_QUESTIONS.md Q94. The frame is left drawn against the base set because that is the mechanism the design specifies, and redrawing it against Gulf Coast titles would draw a capability that does not exist.
This page's own standing prohibition is no fraction, no denominator, no percentage. A wave that announced itself as "47 → 52" would smuggle a denominator back in through the door marked good news, and it would do it at the exact moment a homeowner has just done something right. The five are named instead, and each one says what it is for rather than what stage it is at.
Slab-on-grade removes all five of these, and a homeowner who picks it should see that happen rather than discover later that a section of the binder quietly does not exist. Drawing the empty case here — a basement closes nothing — is what makes the non-empty case legible when it comes. A decision that is removed is never drawn as a decision you failed to make.
Five arrivals with five deadlines is a to-do list. The screen names the single one with a real clock on it, which is ceiling height, and says why in six words. The other four are genuinely not urgent and saying so is the point — docs/superpowers/specs/2026-08-21-decision-gates-and-seeding-waves-design.md §7.1: seeding on an unsettled gate is refused precisely so that what does arrive is real.
The five were a list with nothing to do to them. Each row now carries its own way in and the single time-bound one is also the primary action, so the screen ranks without ordering anybody around. Or leave all five is drawn because it is true: they sit in the binder like everything else, and a wave that arrives with a deadline attached to all of it would be the to-do list this page exists to refuse. This is also the one route to a decision that goes through neither a room nor Now, which docs/flow.json now carries as first-run → decision.
Nothing in this frame is wrong in isolation. Each card is a reasonable empty state and each sentence is true. Together they are five hollow boxes and five buttons on the first screen of a product bought by somebody who is already overwhelmed, and the screen's whole content is an inventory of what they have not done.
The one with the arithmetic on it. "0 of 47 decisions", a bar at nothing, a ring at nothing. That is not drawn here even as a counter-example, because a homeowner surface in this product does not carry a ratio or a percentage under any circumstances, and a thing drawn once gets built.
The old version of this page drew a space screen with nineteen unanswered questions behind it, and argued about how to present a backlog. The screen it drew is superseded and the surface a homeowner lands on now is the binder, so the page moved to the state that replaced it: a binder with nothing in it.
Three of the old page's calls survived the move, because they were calls about first run rather than about that screen. No count and no backlog on day one: the number of open questions is a true fact whose only use to a homeowner is to make them feel behind. An empty section is removed, not filled with an empty state: frame 2 has no Settled card, no Still open card and no Who is doing it card, because a card whose content is a sentence about why it has no content is furniture. "What I will ask about" is themes, never questions: three lines that answer the thing a homeowner is actually asking, which is whether this will be about tile colors or about their life.
_ds/FICTION.md holds and what _ds/xnav.js gives level two of the dock. This page drew five, led with Plans & drawings and dropped The build so far, which was the older revision of that table._ds/img/kitchen.svg gives each of eleven regions a fill of var(--r-<region>, <gray>), and every highlight and shadow in the drawing is a black or white overlay rather than a second hardcoded color, so shading follows whatever a region holds. Set nothing and the whole room resolves to the undecided neutrals declared in _ds/hc.css, which follow the theme: warm grays on paper, the same ladder one key down in dark. That is not a desaturated version of a colored drawing and it is not a CSS filter over one: it is the drawing's real default, and it is what an undecided kitchen should look like.
Frame 3 puts the two states side by side to show that the geometry never moves. The right-hand copy sets five variables and leaves six alone, which is the honest picture: settling four finishes does not color in a room, it colors in four regions of it, and the trim, backsplash, appliances and fixtures nobody has decided stay exactly as gray as they were.
The SVG is inlined rather than linked because an <img> cannot see the page's custom properties. A linked copy can only ever render undecided, which would have made frames 1 and 2 correct by accident and frame 3 impossible.
Every card in frame 4 is defensible on its own and the whole is indefensible. It is the default outcome when an empty state is assigned per component rather than designed as a screen, and it is what gets built at the end of a slice under time pressure if nobody has drawn the alternative. It is on the record here so it stops being reinvented.
What is deliberately not on the record is the version with the arithmetic. No bar, no percentage, no ratio, not even inside a frame labeled rejected. The ban is absolute on a homeowner surface, an empty binder is where the temptation is strongest, and a thing drawn once tends to get built.
body.hc-air, so the page takes the current rhythm out of _ds/hc.css: 26/24 inside a card, 24 between cards, 40 above a section header. Frames 1 and 4 run well past the bottom of the phone, which is correct. Frame 4 running past it is part of its argument._ds/pagenav.js. The hand-written copy is gone..theme, .row, .stale and the bottom fade the old frame D needed. What is left is the inline-drawing box, the diagram pair and frame 4's hollow placeholder, none of which hc.css carries.#6B4A1A and #C77A0A, then --amber-deep and --amber. The design system declares no --amber, so the outer ring had no token left to take and the inner one carries the whole 13px.Grounded in: IKEA's Rooms for the two-up grid of picture cards, which is the shape the contents page keeps whether or not anything is in it; Apple Journal's journals list for containers named with no metric anywhere that could read zero; and Rocket Money for the themed card that sets scope without enumerating a backlog, which is frame 2's "What I will ask about".