Product from scratch — design before code, at a cost the change can afford
You are about to decide what a human will see and do. Make the important product and experience
decisions explicit before they constrain implementation: the user, outcome, journey, interactions,
states, failures, and recovery. If implementation exposes a real constraint, reopen the relevant
decision instead of silently redesigning around the code.
The budget law — read this before anything else
This skill's ancestor grew into a certification bureaucracy: manifests, hashes, computed status
ladders, approval and conformance records, evidence taxonomies, and a resolver wired into CI. In the
originating trial, that machinery cost far more than implementing the same fixes directly, while the
decisive defects were caught by simple product stories and state prompts. Three rules keep the
machinery deleted:
- Design effort must be proportionate to consequence and unresolved uncertainty, and cheaper
than the avoidable rework it is likely to prevent. For an ordinary change that means
materially cheaper than implementing the change twice — a falsifiable ceiling, not a vibe.
When work grows without resolving a decision or reducing a plausible risk, cut process, not
quality.
- A required artifact or field must force a distinct decision or materially improve
verification. If repeated real use shows it does neither, remove it.
- Reuse existing product canon before authoring anything new. A change does not earn a new
document merely because it touches the interface.
The conditional decision chain
BRD when business intent changes
→ PRD when product behaviour changes
→ UX/XDS when a material experience decision exists
→ SDD when a material technical decision exists
→ implementation → verification
Conditionality prevents dummy artifacts; it is not permission to skip an unresolved decision. A new
product capability or cross-surface journey normally uses every layer whose decision actually exists.
| Artifact |
Use it when |
Owns |
Must not own |
| BRD (business requirements) |
Business intent, target users, outcomes, scope, or non-negotiable qualities change |
Why the work deserves to exist; user and business outcomes; acceptable effort/friction; qualities that may not be traded away |
Controls, layout, copy, colour |
| PRD (product requirements) |
A new capability or material product behaviour needs a durable rule |
Product stories, rules, data, permissions, required outcomes and invariants under success, failure, interruption, recovery, and return, plus observable acceptance |
Detailed control choice, interaction choreography, layout, copy, visual hierarchy, motion, or technical realization |
| UX note / XDS (experience design) |
A new or materially redesigned journey, cross-surface seam, hierarchy, state model, or interaction choice needs design |
How the user experiences the product rule: journey, material states and transitions, controls/events, copy, feedback ownership, preservation, retry, return, responsive composition, motion, and meaningful alternatives |
New business/product requirement authority or technical realization |
| SD / SDD (solution design) |
Architecture, data, security, deployment, performance, or cross-module behaviour needs durable technical resolution |
Schemas, APIs, persistence, performance, security, and technical failure handling |
Quietly redesigning the user experience |
The ordering applies only to artifacts the change actually needs:
- When both BRD and PRD are needed, business intent precedes product behaviour.
- The PRD is authority for what the product must do. UX/XDS decides how the person understands,
acts through, and recovers within it. If experience design reveals a missing product rule, amend
the PRD instead of minting that requirement inside the design.
- When a material user-facing decision and an SDD are both needed, the product/experience decision
precedes technical realization. A technical-only SDD does not need a fictional XDS.
- A feasibility conflict reopens the owning product or experience decision. Technical work may
expose constraints and propose options; it does not choose the user-facing resolution silently.
- Scope experience design by a coherent journey or surface family. Do not split it merely to mirror
PRD boundaries. One design may serve several PRDs, and one PRD may participate in several journeys.
Before writing, identify the decision and read only the existing artifacts that own or constrain it.
Amend canon only when its decision changes. Link to an owning statement when the dependency matters;
do not duplicate requirement prose or create a completeness matrix.
If a legacy product has no formal corpus, do not block a small fix while backfilling one. Put the
smallest missing decision in the issue or PR. Create durable canon only when a real product, journey,
or technical decision needs to outlive that change.
Proportionality — choose the smallest useful material
| Change |
Smallest useful design material |
| No user-visible or interaction effect |
None, unless a business, product, or technical decision independently needs durable treatment |
| Small maintenance delta |
The issue or PR may contain only: actor/task, current failure, expected behaviour, affected reachable states, preserved context, material recovery/return rule, and observable acceptance. If existing requirements and tests already make the decision clear, link them instead of rewriting them |
| New capability or material product behaviour |
Add or amend the PRD; add or amend UX material when the capability introduces or materially changes a journey, seam, hierarchy, state model, shared control, or interaction choice |
| New or materially changed journey or cross-surface seam |
One coherent UX note/XDS in traversal order, covering the decisions the journey actually needs |
| Consequential technical choice |
One SDD for the architecture, data, security, deployment, performance, or cross-module decision |
There is no length quota. Use the lightest material that leaves no material decision implicit.
Escalate only when the lighter material failed to force a specific product or interaction decision;
“more rigor” or “a reviewer asked for more documentation” is not enough.
Experience prompts — not a form
Use only the prompts that resolve the change. Omit irrelevant prompts without explanation.
- Product story — who, in what context, doing what, and for which outcome.
- Experience thesis — for a new feature or journey only: one sentence naming the committed
direction and the one thing a user should remember. If the sentence could caption a
competitor's product unchanged, there is no thesis yet.
- Journey — entry → decisive moments → completion → return/resume.
- Interaction scenario — named controls/events, visible response, terminal state, and what must
never happen. State felt-quality commitments as observable values: input acknowledged within
~100 ms; completed or a designed slow state by ~1,000 ms; motion character named and bounded.
A feel adjective ("snappy", "calm") with no value or named behaviour behind it is a wish.
Compare alternatives only at a genuine, consequential hinge — and keep the losing candidate
with one line on why it lost, so the hinge is not relitigated next session.
- State model — reachable states that materially alter what the user sees or can do.
- Recovery — what survives failure, what is lost, what can be retried, and where retry lives.
- Acceptance — observable scenarios someone will actually exercise.
Render a state board, mockup, or prototype only when layout, density, motion, timing, or responsive
fit carries the decision. For a new surface or journey, the opening, the decisive interaction,
failure/recovery, and completion are visual claims — render them. A visual artifact is evidence for
a visual claim, never a ritual.
Product-story grammar
The conventional form — “As a creator, I want to add my game so that players can find it” — is too
weak when context, effort, abandonment, or falsification can change the product decision.
STORY <id>
As <actor>
in <named context: first-run · returning · signed-out · empty account · …>
I <the task, independent of the system's route, schema, or control>
so that <the business or personal outcome>
Arrives at <the observable product state that constitutes success>
Abandons at <plausible exit points and what makes leaving plausible>
Effort <material inputs · decisions · context switches · external tools; quantify when useful>
Falsified by <the concrete observation or anti-pattern that disproves the story>
Use the full grammar for a material story when its lines force decisions. A local maintenance change
may need only actor, task, expected outcome, and observable acceptance. An atomic action with no
meaningful abandonment point does not need a filler Abandons at line.
A product story does not choose the control. Map a material story into the designed interaction:
SCENARIO <id, linked to the product story when one exists>
Starts in <named state and context>
User <activates a named control or performs a named event>
Immediately <visible response>
While <pending · slow · interrupted behaviour, when applicable>
Succeeds as <named terminal state>
Fails as <truthful failure state, when reachable>
Recovers by <durable action and preserved context>
Returns to <resume · back · refresh · authentication return · later-return behaviour, when material>
An interaction scenario that omits a material control/event, visible response, terminal state, or,
when failure or interruption is reachable and material, recovery decision has not designed that part
of the interaction.
State prompts — inspect affected boundaries
Authors under pressure omit states they do not remember. Use the dimensions that can change the
affected experience; scan all four briefly for a material journey:
| Family |
Inspect |
Yields, for example |
| Data |
Affected values: absent · partial · invalid · maximal; affected collections: zero · one · several · very many |
Empty account · half-completed form · over-limit title |
| Time |
Affected asynchronous actions: pending · slow (~1,000 ms) · success · failure · superseded · repeated · late completion |
Slow-threshold notice · durable result after a toast is gone · stale completion discarded |
| Path |
Relevant ways a value arrives and interruptions/returns: typed · restored · defaulted · fetched · authenticated · refreshed |
Stale prefill validity · return from an auth detour with a draft intact |
| Frame |
Supported widths/input modes and content extremes that can change the interaction |
Narrow-viewport fit · longest label · failed image |
Record only reachable states that change user-visible behaviour or carry a plausible material
failure. Record an exclusion reason only when a plausible state is deliberately excluded and the
reason prevents ambiguity. Do not serialize a Cartesian product, inventory impossible combinations,
or treat the prompts as proof of completeness.
For affected controls, decide supported keyboard, pointer, and touch behaviour; focus placement and
restoration; and relevant orientation, safe-area, and width behaviour. These are ordinary interaction
decisions, not a separate compliance lane.
Reading symptoms backwards
When the built thing feels wrong, enter here:
| You observe |
Ruling |
| Success exists only in a toast |
Time — success shows in the durable resulting state; the toast is at most an accent on it |
| A wait past ~1,000 ms with no acknowledgment |
Time — a slow state is a designed state, not an absent one |
| An error survives a valid prefill, restore, or correction |
Path — judgment that appears must also be told when to leave |
| Failure presented as a dead end or false exhaustion |
Recovery — the retry lives where the failure is shown, and it outlives any toast |
| Page arrives, then rearranges |
Skeleton that approximates the eventual structure, not a spinner (references/distinctions.md, loading family) |
| Breaks at narrow width or the longest real label |
Frame — content extremes are test inputs, not edge cases |
| The spec says "dropdown", "modal", "tab", "toast" alone |
Not yet a decision — references/distinctions.md |
Choosing and naming a control
Control choice follows the user's task, never the schema type:
- Reuse audit — inspect how the same task is solved elsewhere in the product and which existing
component or interaction owns it. Reuse the product's grammar unless the task materially differs.
- Retrieval task — does the user recall a value or recognise one from a set?
- Cardinality and comparability — how many options exist, how familiar are they, and must users
compare them simultaneously?
- Real-world arity — one or many? Decide reality first, then the schema.
- Assistance audit — is the value fetchable, derivable, defaultable, or suggestible? “Required by
the schema” never justifies human transcription.
- Name the control precisely enough to expose its material behaviour.
references/ui-ontology/ is a naming corpus, not a component checklist. Use only relevant families
or alphabetical lookup. references/distinctions.md disambiguates overloaded terms such as
dropdown, modal, tab, tooltip, chip, toast, grid, and drawer.
When no shared name fits, define a clear project-local term. Propose it upstream only when it is
likely to be reusable across products. Imprecision is a review comment, not an INVALID verdict.
Durable handoff — chat is ephemeral
Assume the next agent sees only the repository and the issue/PR description and threads. Before
handoff, put every downstream-critical fact in one durable place. Include, where relevant:
- the user and outcome;
- the current failure or decision;
- the chosen behaviour and interaction;
- affected reachable states, preservation, recovery, interruption, and return;
- non-goals and deliberately preserved context;
- accepted and rejected alternatives when they prevent reversal;
- observable acceptance and verification actually performed;
- known gaps, inaccessible scenarios, and blocked checks.
Link to owning documents instead of duplicating them. Do not invent status fields, hashes, or a
handoff manifest. Never write “see chat” or leave a load-bearing decision only in private plans or
reasoning. Normative specifications state the current target; PR or decision context keeps the why,
rejected alternatives, deviations, and unresolved evidence when another agent could otherwise undo
the decision.
If a public review verdict changes, correct the PR thread explicitly. Silent edits do not repair the
handoff another agent already read.
Review and decision discipline
Review the product decision, not the existence of artifacts:
- Before a public verdict, read every changed product/design file end-to-end in its branch form.
Diff, lint, link, and format checks prove mechanics, not meaning.
- A useful finding names a missing or wrong user-facing decision and points to evidence.
- For a new feature or journey, the single design review is done by someone who did not author
the design and includes the renders needed to judge its material visual or temporal decisions.
A small change uses ordinary PR review — no dedicated lane, no role record.
- Recheck concrete findings after correction when needed. Do not create review-of-review,
convergence rituals, or a new process layer.
- Once the responsible owner approves a direction, execute it. Reopen design when the user or owner
changes direction, requirements are corrected, a material constraint is discovered, or new
concrete evidence makes the decision materially wrong, impossible, or critically unsafe.
Verification — look at the thing
A design artifact can be ready before implementation. The product change is not done until its
result works.
- For user-visible work, exercise the affected real flow in a representative real host, including
reachable material failure, recovery, interruption, and return paths. A happy-path screenshot or
HTTP status does not verify interaction.
- Actually inspect UI changes in the supported scenarios that matter. Stills cannot verify motion or
interaction feel.
- An instrumented walk verifies commitments, not feelings — it measures the timings, states,
and motion properties the design committed to, which is why feel is encoded as observable values
upstream. The final judge of feel is a human looking at the real thing; when the human disagrees
with a green walk, the human is right and the design was missing a commitment — add the value
that would have caught it.
- Build-time polish — radii, easings, staggers, press states, optical alignment — is the province
of companion craft skills loaded at the moment of making; this method neither duplicates nor
substitutes for them.
- Follow repository-required checks and run change-relevant tests. Tests do not replace live
interaction verification.
- If a real host or external seam cannot be exercised, record the exact unverified scenario and
follow-up in the PR. Do not claim the product change is fully verified.
- When the main uncertainty is comprehension, perceived effort, or whether a journey feels worth
completing, observe a representative user when feasible. If access is unavailable, record the
unresolved assumption and validation follow-up without claiming certainty. More documentation
cannot answer that question.
- Reader-facing documents get an audience-fit read: “What does not parse for a reader outside this
project?” Keep workflow jargon out of product documents.
- Machine checks stay mechanical: links resolve, IDs are unique, referenced documents exist, and the
chosen format parses. A project may block mechanical corruption; no machine check may compute
design quality, approve implementation, or replace human judgment.
Inspect current behaviour, code, research, measurements, and technical constraints as evidence. They
may inform the target; they do not silently define or authorize it. Keep the normative target and
the verification of what shipped distinct.
Hard limits
Design:
- Never make a product story choose a control; never leave a material interaction choice implicit.
- Never let UX/XDS mint a missing business or product requirement; amend the owning BRD/PRD.
- Never claim exhaustive state coverage. Record reachable, material decisions and unknowns.
- Never let technical design silently alter an already-made experience decision.
- Never reverse artifacts that are actually needed: intent before product behaviour, product
behaviour before its experience realization, and product/experience decisions before technical
realization.
- Never create a standalone document when existing canon or the issue/PR already resolves the
decision durably.
- Never let current implementation become authority for the target.
- Never blur target and as-built.
- Never leave a load-bearing decision only in chat or private reasoning.
Process:
- Never add manifests, spec/approval/conformance hashes, computed status ladders, evidence-type
taxonomies, per-moment identities, reviewer-identity machinery, or artifact quotas.
- Never treat a document validator as design approval.
- Never respond to a process defect by adding a process layer.
- Never restart planning after direction is approved unless the user or owner changes direction,
requirements are corrected, a material constraint is discovered, or concrete evidence invalidates
it.
- Never let design material grow beyond what consequence and uncertainty justify; remove work that
resolves no decision and reduces no plausible risk.
Definition of done
Apply only the items relevant to the requested stage and change.
Ready to implement:
- The smallest sufficient durable material was chosen; only the artifacts the decision needs were
created or amended, in the right order.
- The user, task, outcome, and observable acceptance are clear enough to falsify the decision.
- Product requirements state what must be true; UX/XDS states how the person reaches, understands,
and recovers through it without inventing new authority.
- Material interaction, state, preservation, recovery, interruption, return, effort, abandonment,
and non-goal decisions are explicit when the change has them.
- Relevant Data · Time · Path · Frame prompts were considered without creating a completeness
ledger.
- Material visual or temporal decisions were rendered and inspected by the relevant reviewer.
- Another agent can recover the controlling decision and known gaps without this chat.
- Anything that forced no distinct decision was removed.
Implemented change verified:
- The implementation preserves the chosen experience; constraints did not silently rewrite it.
- The affected real flow and reachable material failure/recovery paths were exercised in a
representative real host, or the exact unverified seam is recorded without a completion claim.
- Repository-required checks and change-relevant tests were run; blocked checks are recorded
honestly.
- Reader-facing documents describe the current target and passed the audience-fit read.
- Mechanical document checks, when the project uses them, report no broken references or malformed
structure.
1---2name: product-from-scratch3description: Use when designing a product change before building it — deciding whether it needs a BRD, PRD, UX note/XDS, or SD/SDD; authoring or amending those artifacts; writing user stories; designing journeys and interactions; choosing controls, states, failures, and recovery; reviewing the result; or handing product decisions to another stateless worker. This skill owns a CONDITIONAL DECISION CHAIN, the boundary between PRODUCT REQUIREMENT AUTHORITY and EXPERIENCE REALIZATION, the PRODUCT-STORY and INTERACTION-SCENARIO grammars, Data · Time · Path · Frame state prompts, durable repository/PR handoff, rendered review, and a PROPORTIONALITY rule that caps process cost. It is a thinking aid, not a governance system — it produces no statuses, hashes, approval records, artifact quotas, or merge gates.4---56# Product from scratch — design before code, at a cost the change can afford78You are about to decide what a human will see and do. Make the important product and experience9decisions explicit before they constrain implementation: the user, outcome, journey, interactions,10states, failures, and recovery. If implementation exposes a real constraint, reopen the relevant11decision instead of silently redesigning around the code.1213## The budget law — read this before anything else1415This skill's ancestor grew into a certification bureaucracy: manifests, hashes, computed status16ladders, approval and conformance records, evidence taxonomies, and a resolver wired into CI. In the17originating trial, that machinery cost far more than implementing the same fixes directly, while the18decisive defects were caught by simple product stories and state prompts. Three rules keep the19machinery deleted:20211. **Design effort must be proportionate to consequence and unresolved uncertainty, and cheaper22 than the avoidable rework it is likely to prevent.** For an ordinary change that means23 materially cheaper than implementing the change twice — a falsifiable ceiling, not a vibe.24 When work grows without resolving a decision or reducing a plausible risk, cut process, not25 quality.262. **A required artifact or field must force a distinct decision or materially improve27 verification.** If repeated real use shows it does neither, remove it.283. **Reuse existing product canon before authoring anything new.** A change does not earn a new29 document merely because it touches the interface.3031## The conditional decision chain3233```text34BRD when business intent changes35 → PRD when product behaviour changes36 → UX/XDS when a material experience decision exists37 → SDD when a material technical decision exists38 → implementation → verification39```4041Conditionality prevents dummy artifacts; it is not permission to skip an unresolved decision. A new42product capability or cross-surface journey normally uses every layer whose decision actually exists.4344| Artifact | Use it when | Owns | Must not own |45|---|---|---|---|46| **BRD** (business requirements) | Business intent, target users, outcomes, scope, or non-negotiable qualities change | Why the work deserves to exist; user and business outcomes; acceptable effort/friction; qualities that may not be traded away | Controls, layout, copy, colour |47| **PRD** (product requirements) | A new capability or material product behaviour needs a durable rule | Product stories, rules, data, permissions, required outcomes and invariants under success, failure, interruption, recovery, and return, plus observable acceptance | Detailed control choice, interaction choreography, layout, copy, visual hierarchy, motion, or technical realization |48| **UX note / XDS** (experience design) | A new or materially redesigned journey, cross-surface seam, hierarchy, state model, or interaction choice needs design | How the user experiences the product rule: journey, material states and transitions, controls/events, copy, feedback ownership, preservation, retry, return, responsive composition, motion, and meaningful alternatives | New business/product requirement authority or technical realization |49| **SD / SDD** (solution design) | Architecture, data, security, deployment, performance, or cross-module behaviour needs durable technical resolution | Schemas, APIs, persistence, performance, security, and technical failure handling | Quietly redesigning the user experience |5051The ordering applies only to artifacts the change actually needs:5253- When both BRD and PRD are needed, business intent precedes product behaviour.54- The PRD is authority for **what the product must do**. UX/XDS decides **how the person understands,55 acts through, and recovers within it**. If experience design reveals a missing product rule, amend56 the PRD instead of minting that requirement inside the design.57- When a material user-facing decision and an SDD are both needed, the product/experience decision58 precedes technical realization. A technical-only SDD does not need a fictional XDS.59- A feasibility conflict reopens the owning product or experience decision. Technical work may60 expose constraints and propose options; it does not choose the user-facing resolution silently.61- Scope experience design by a coherent journey or surface family. Do not split it merely to mirror62 PRD boundaries. One design may serve several PRDs, and one PRD may participate in several journeys.6364Before writing, identify the decision and read only the existing artifacts that own or constrain it.65Amend canon only when its decision changes. Link to an owning statement when the dependency matters;66do not duplicate requirement prose or create a completeness matrix.6768If a legacy product has no formal corpus, do not block a small fix while backfilling one. Put the69smallest missing decision in the issue or PR. Create durable canon only when a real product, journey,70or technical decision needs to outlive that change.7172## Proportionality — choose the smallest useful material7374| Change | Smallest useful design material |75|---|---|76| No user-visible or interaction effect | None, unless a business, product, or technical decision independently needs durable treatment |77| Small maintenance delta | The issue or PR may contain only: actor/task, current failure, expected behaviour, affected reachable states, preserved context, material recovery/return rule, and observable acceptance. If existing requirements and tests already make the decision clear, link them instead of rewriting them |78| New capability or material product behaviour | Add or amend the PRD; add or amend UX material when the capability introduces or materially changes a journey, seam, hierarchy, state model, shared control, or interaction choice |79| New or materially changed journey or cross-surface seam | One coherent UX note/XDS in traversal order, covering the decisions the journey actually needs |80| Consequential technical choice | One SDD for the architecture, data, security, deployment, performance, or cross-module decision |8182There is no length quota. Use the lightest material that leaves no material decision implicit.83Escalate only when the lighter material failed to force a specific product or interaction decision;84“more rigor” or “a reviewer asked for more documentation” is not enough.8586## Experience prompts — not a form8788Use only the prompts that resolve the change. Omit irrelevant prompts without explanation.89901. **Product story** — who, in what context, doing what, and for which outcome.912. **Experience thesis** — for a new feature or journey only: one sentence naming the committed92 direction and the one thing a user should remember. If the sentence could caption a93 competitor's product unchanged, there is no thesis yet.943. **Journey** — entry → decisive moments → completion → return/resume.954. **Interaction scenario** — named controls/events, visible response, terminal state, and what must96 never happen. State felt-quality commitments as observable values: input acknowledged within97 ~100 ms; completed or a designed slow state by ~1,000 ms; motion character named and bounded.98 A feel adjective ("snappy", "calm") with no value or named behaviour behind it is a wish.99 Compare alternatives only at a genuine, consequential hinge — and keep the losing candidate100 with one line on why it lost, so the hinge is not relitigated next session.1015. **State model** — reachable states that materially alter what the user sees or can do.1026. **Recovery** — what survives failure, what is lost, what can be retried, and where retry lives.1037. **Acceptance** — observable scenarios someone will actually exercise.104105Render a state board, mockup, or prototype only when layout, density, motion, timing, or responsive106fit carries the decision. For a new surface or journey, the opening, the decisive interaction,107failure/recovery, and completion are visual claims — render them. A visual artifact is evidence for108a visual claim, never a ritual.109110## Product-story grammar111112The conventional form — _“As a creator, I want to add my game so that players can find it”_ — is too113weak when context, effort, abandonment, or falsification can change the product decision.114115```text116STORY <id>117As <actor>118in <named context: first-run · returning · signed-out · empty account · …>119I <the task, independent of the system's route, schema, or control>120so that <the business or personal outcome>121122Arrives at <the observable product state that constitutes success>123Abandons at <plausible exit points and what makes leaving plausible>124Effort <material inputs · decisions · context switches · external tools; quantify when useful>125Falsified by <the concrete observation or anti-pattern that disproves the story>126```127128Use the full grammar for a material story when its lines force decisions. A local maintenance change129may need only actor, task, expected outcome, and observable acceptance. An atomic action with no130meaningful abandonment point does not need a filler `Abandons at` line.131132A product story does not choose the control. Map a material story into the designed interaction:133134```text135SCENARIO <id, linked to the product story when one exists>136Starts in <named state and context>137User <activates a named control or performs a named event>138Immediately <visible response>139While <pending · slow · interrupted behaviour, when applicable>140Succeeds as <named terminal state>141Fails as <truthful failure state, when reachable>142Recovers by <durable action and preserved context>143Returns to <resume · back · refresh · authentication return · later-return behaviour, when material>144```145146An interaction scenario that omits a material control/event, visible response, terminal state, or,147when failure or interruption is reachable and material, recovery decision has not designed that part148of the interaction.149150## State prompts — inspect affected boundaries151152Authors under pressure omit states they do not remember. Use the dimensions that can change the153affected experience; scan all four briefly for a material journey:154155| Family | Inspect | Yields, for example |156|---|---|---|157| **Data** | Affected values: absent · partial · invalid · maximal; affected collections: zero · one · several · very many | Empty account · half-completed form · over-limit title |158| **Time** | Affected asynchronous actions: pending · slow (~1,000 ms) · success · failure · superseded · repeated · late completion | Slow-threshold notice · durable result after a toast is gone · stale completion discarded |159| **Path** | Relevant ways a value arrives and interruptions/returns: typed · restored · defaulted · fetched · authenticated · refreshed | Stale prefill validity · return from an auth detour with a draft intact |160| **Frame** | Supported widths/input modes and content extremes that can change the interaction | Narrow-viewport fit · longest label · failed image |161162Record only reachable states that change user-visible behaviour or carry a plausible material163failure. Record an exclusion reason only when a plausible state is deliberately excluded and the164reason prevents ambiguity. Do not serialize a Cartesian product, inventory impossible combinations,165or treat the prompts as proof of completeness.166167For affected controls, decide supported keyboard, pointer, and touch behaviour; focus placement and168restoration; and relevant orientation, safe-area, and width behaviour. These are ordinary interaction169decisions, not a separate compliance lane.170171### Reading symptoms backwards172173When the built thing feels wrong, enter here:174175| You observe | Ruling |176|---|---|177| Success exists only in a toast | **Time** — success shows in the durable resulting state; the toast is at most an accent on it |178| A wait past ~1,000 ms with no acknowledgment | **Time** — a slow state is a designed state, not an absent one |179| An error survives a valid prefill, restore, or correction | **Path** — judgment that appears must also be told when to leave |180| Failure presented as a dead end or false exhaustion | **Recovery** — the retry lives where the failure is shown, and it outlives any toast |181| Page arrives, then rearranges | Skeleton that approximates the eventual structure, not a spinner (`references/distinctions.md`, loading family) |182| Breaks at narrow width or the longest real label | **Frame** — content extremes are test inputs, not edge cases |183| The spec says "dropdown", "modal", "tab", "toast" alone | Not yet a decision — `references/distinctions.md` |184185## Choosing and naming a control186187Control choice follows the user's task, never the schema type:1881891. **Reuse audit** — inspect how the same task is solved elsewhere in the product and which existing190 component or interaction owns it. Reuse the product's grammar unless the task materially differs.1912. **Retrieval task** — does the user recall a value or recognise one from a set?1923. **Cardinality and comparability** — how many options exist, how familiar are they, and must users193 compare them simultaneously?1944. **Real-world arity** — one or many? Decide reality first, then the schema.1955. **Assistance audit** — is the value fetchable, derivable, defaultable, or suggestible? “Required by196 the schema” never justifies human transcription.1976. Name the control precisely enough to expose its material behaviour.198199`references/ui-ontology/` is a naming corpus, not a component checklist. Use only relevant families200or alphabetical lookup. `references/distinctions.md` disambiguates overloaded terms such as201_dropdown_, _modal_, _tab_, _tooltip_, _chip_, _toast_, _grid_, and _drawer_.202203When no shared name fits, define a clear project-local term. Propose it upstream only when it is204likely to be reusable across products. Imprecision is a review comment, not an INVALID verdict.205206## Durable handoff — chat is ephemeral207208Assume the next agent sees only the repository and the issue/PR description and threads. Before209handoff, put every downstream-critical fact in one durable place. Include, where relevant:210211- the user and outcome;212- the current failure or decision;213- the chosen behaviour and interaction;214- affected reachable states, preservation, recovery, interruption, and return;215- non-goals and deliberately preserved context;216- accepted and rejected alternatives when they prevent reversal;217- observable acceptance and verification actually performed;218- known gaps, inaccessible scenarios, and blocked checks.219220Link to owning documents instead of duplicating them. Do not invent status fields, hashes, or a221handoff manifest. Never write “see chat” or leave a load-bearing decision only in private plans or222reasoning. Normative specifications state the current target; PR or decision context keeps the why,223rejected alternatives, deviations, and unresolved evidence when another agent could otherwise undo224the decision.225226If a public review verdict changes, correct the PR thread explicitly. Silent edits do not repair the227handoff another agent already read.228229## Review and decision discipline230231Review the product decision, not the existence of artifacts:232233- Before a public verdict, read every changed product/design file end-to-end in its branch form.234 Diff, lint, link, and format checks prove mechanics, not meaning.235- A useful finding names a missing or wrong user-facing decision and points to evidence.236- For a new feature or journey, the single design review is done by someone who did not author237 the design and includes the renders needed to judge its material visual or temporal decisions.238 A small change uses ordinary PR review — no dedicated lane, no role record.239- Recheck concrete findings after correction when needed. Do not create review-of-review,240 convergence rituals, or a new process layer.241- Once the responsible owner approves a direction, execute it. Reopen design when the user or owner242 changes direction, requirements are corrected, a material constraint is discovered, or new243 concrete evidence makes the decision materially wrong, impossible, or critically unsafe.244245## Verification — look at the thing246247A design artifact can be ready before implementation. The product change is not done until its248result works.249250- For user-visible work, exercise the affected real flow in a representative real host, including251 reachable material failure, recovery, interruption, and return paths. A happy-path screenshot or252 HTTP status does not verify interaction.253- Actually inspect UI changes in the supported scenarios that matter. Stills cannot verify motion or254 interaction feel.255- An instrumented walk verifies **commitments, not feelings** — it measures the timings, states,256 and motion properties the design committed to, which is why feel is encoded as observable values257 upstream. The final judge of feel is a human looking at the real thing; when the human disagrees258 with a green walk, the human is right and the design was missing a commitment — add the value259 that would have caught it.260- Build-time polish — radii, easings, staggers, press states, optical alignment — is the province261 of companion craft skills loaded at the moment of making; this method neither duplicates nor262 substitutes for them.263- Follow repository-required checks and run change-relevant tests. Tests do not replace live264 interaction verification.265- If a real host or external seam cannot be exercised, record the exact unverified scenario and266 follow-up in the PR. Do not claim the product change is fully verified.267- When the main uncertainty is comprehension, perceived effort, or whether a journey feels worth268 completing, observe a representative user when feasible. If access is unavailable, record the269 unresolved assumption and validation follow-up without claiming certainty. More documentation270 cannot answer that question.271- Reader-facing documents get an audience-fit read: “What does not parse for a reader outside this272 project?” Keep workflow jargon out of product documents.273- Machine checks stay mechanical: links resolve, IDs are unique, referenced documents exist, and the274 chosen format parses. A project may block mechanical corruption; no machine check may compute275 design quality, approve implementation, or replace human judgment.276277Inspect current behaviour, code, research, measurements, and technical constraints as evidence. They278may inform the target; they do not silently define or authorize it. Keep the normative target and279the verification of what shipped distinct.280281## Hard limits282283Design:284285- Never make a product story choose a control; never leave a material interaction choice implicit.286- Never let UX/XDS mint a missing business or product requirement; amend the owning BRD/PRD.287- Never claim exhaustive state coverage. Record reachable, material decisions and unknowns.288- Never let technical design silently alter an already-made experience decision.289- Never reverse artifacts that are actually needed: intent before product behaviour, product290 behaviour before its experience realization, and product/experience decisions before technical291 realization.292- Never create a standalone document when existing canon or the issue/PR already resolves the293 decision durably.294- Never let current implementation become authority for the target.295- Never blur target and as-built.296- Never leave a load-bearing decision only in chat or private reasoning.297298Process:299300- Never add manifests, spec/approval/conformance hashes, computed status ladders, evidence-type301 taxonomies, per-moment identities, reviewer-identity machinery, or artifact quotas.302- Never treat a document validator as design approval.303- Never respond to a process defect by adding a process layer.304- Never restart planning after direction is approved unless the user or owner changes direction,305 requirements are corrected, a material constraint is discovered, or concrete evidence invalidates306 it.307- Never let design material grow beyond what consequence and uncertainty justify; remove work that308 resolves no decision and reduces no plausible risk.309310## Definition of done311312Apply only the items relevant to the requested stage and change.313314**Ready to implement:**3153161. The smallest sufficient durable material was chosen; only the artifacts the decision needs were317 created or amended, in the right order.3182. The user, task, outcome, and observable acceptance are clear enough to falsify the decision.3193. Product requirements state what must be true; UX/XDS states how the person reaches, understands,320 and recovers through it without inventing new authority.3214. Material interaction, state, preservation, recovery, interruption, return, effort, abandonment,322 and non-goal decisions are explicit when the change has them.3235. Relevant Data · Time · Path · Frame prompts were considered without creating a completeness324 ledger.3256. Material visual or temporal decisions were rendered and inspected by the relevant reviewer.3267. Another agent can recover the controlling decision and known gaps without this chat.3278. Anything that forced no distinct decision was removed.328329**Implemented change verified:**3303311. The implementation preserves the chosen experience; constraints did not silently rewrite it.3322. The affected real flow and reachable material failure/recovery paths were exercised in a333 representative real host, or the exact unverified seam is recorded without a completion claim.3343. Repository-required checks and change-relevant tests were run; blocked checks are recorded335 honestly.3364. Reader-facing documents describe the current target and passed the audience-fit read.3375. Mechanical document checks, when the project uses them, report no broken references or malformed338 structure.