Household pattern
TemplateCard
A helper’s starting note, followed by the last few moments of its evaluated household example.
States
Groceries
Hover or use Play preview; leaving the card pauses it.
Groceries
Grocery Restocker
Keeps the staples coming and asks before anything new.
In its starting note
Can spend up to $40 at a time and $120 a week without asking. Will ask about 2 things. 2 hard limits.
A practice week
Sunday, Aug 30 at 11:59 pm
Fri, Aug 28
Order Biscuit's dog food from PetPal12:30 pmSat, Aug 29
Move Sunday's delivery to Monday morning9:00 amSun, Aug 30
Reorder bread, butter and yogurt7:00 am
Shared expenses
Group trips
Expense Splitter
Splits the bills and nudges the group, but never nags.
In its starting note
Can contact people without asking ($200 a request). Will ask about 2 things. 2 hard limits.
A practice week
Monday, Sep 21 at 11:59 pm
Sat, Sep 19
Request $241.64 from Dana5:45 pmMon, Sep 21
Remind Jonah a third time9:00 amMon, Sep 21
Mark Jonah as settled, $241.647:30 pm
Subscriptions
Subscriptions
Subscription Pruner
Ends the trials you forgot and asks before touching anything you pay for.
In its starting note
Will ask about 2 things. 2 hard limits.
A practice week
Sunday, Sep 6 at 11:59 pm
Thu, Sep 3
Pause Duolingo Super for a month12:00 pmFri, Sep 4
Cancel NYT Cooking, $5 a month10:00 amSun, Sep 6
Move iCloud from 2 TB to 200 GB9:00 am
Paused during an ask
Groceries
Grocery Restocker
Keeps the staples coming and asks before anything new.
In its starting note
Can spend up to $40 at a time and $120 a week without asking. Will ask about 2 things. 2 hard limits.
A practice week
Saturday, Aug 29 at 9:00 am
Fri, Aug 28
Order Biscuit's dog food from PetPal12:30 pmSat, Aug 29
Move Sunday's delivery to Monday morning9:00 amSun, Aug 30
Reorder bread, butter and yogurt7:00 am
No spending limit
Groceries
Grocery Restocker
Keeps the staples coming and asks before anything new.
In its starting note
Can spend with no limit. Will ask about 2 things. 2 hard limits.
A practice week
Sunday, Aug 30 at 11:59 pm
Fri, Aug 28
Order Biscuit's dog food from PetPal12:30 pmSat, Aug 29
Move Sunday's delivery to Monday morning9:00 amSun, Aug 30
Reorder bread, butter and yogurt7:00 am
No activity
Groceries
Grocery Restocker
Keeps the staples coming and asks before anything new.
In its starting note
Can spend up to $40 at a time and $120 a week without asking. Will ask about 2 things. 2 hard limits.
A practice week
Sunday, Aug 30 at 11:59 pm
- Nothing happened in this stretch.
Read-only
Groceries
Grocery Restocker
Keeps the staples coming and asks before anything new.
In its starting note
Can spend up to $40 at a time and $120 a week without asking. Will ask about 2 things. 2 hard limits.
A practice week
Sunday, Aug 30 at 11:59 pm
Fri, Aug 28
Order Biscuit's dog food from PetPal12:30 pmSat, Aug 29
Move Sunday's delivery to Monday morning9:00 amSun, Aug 30
Reorder bread, butter and yogurt7:00 am
When to use
- In the household helper gallery, one card per template.
- When comparing what different starting contracts permit.
When not to
- For the person’s edited contract; the editor and full replay share that state.
- For live work, new approvals, or a full activity timeline.
Props
| Name | Type | Notes |
|---|---|---|
| template* | Template | The starting contract and complete intent-only fixture. Mount with key={template.id} when changing helpers. |
| readOnly | boolean | Disables hover and button playback, preserving navigation. |
| initialNow | number | Optional initial snapshot for a documented state. Normally shows the fixture’s end. |
| className | string | Layout classes from design tokens. |
* required
Accessibility invariants
- The article is named by its visible helper heading.
- Play/Pause is a native button with aria-pressed; keyboard and touch do not depend on hover.
- Leaving the card, moving focus outside it, or hiding the page pauses playback. Playback stops at the end without looping.
- Reduced motion disables automatic hover playback; the explicit play button remains available.
- Compact events have accessible status, time, and full action names, plus a glyph.
- Contract and replay destinations are separate links, never nested inside a clickable card.
Agent instructions
For anything generating UI from this system
Compute summarize(template.contract) and evaluate(template.contract, template.fixture). Pass the summary unchanged to compact RiskSummary. Take tracePreview from the complete evaluated run so the weekly ledger is preserved, then advance only now with advancePreview. Each compact TraceEvent must receive statusAt(event, now); never assign colours or outcomes in the card. Do not read the edited-contract store here or add per-template behaviour copy. Keep the contract link first and avoid decorative hover motion.