Everything below is verified tonight, sourced, and yours alone under CANON §4 rule 2 — Stacy's side is either already done or was never hers to hold. Each card names the decision first; the reasoning is one tap away under Context if you want it. The last section is two GitHub links, no approval needed.
One approval already decides a row. But the founder who hasn't tapped still shows "pending" — the same word a row uses before anyone has looked at it, so a decided row and an untouched one read the same.
Elizabeth approves → the wash goes green, correctly. But Stacy's tag still prints "Stacy · pending," which is the exact string a totally untouched row shows too. Fix is copy-only, in approvals.js's tag-building code — no rule changes, nothing already decided gets re-asked. If you hold, say in the note what you'd want it to say instead.
Already built and live: if one of you approves and the other later holds, the wash stays green and the holder's tag reads "hold" right next to it. An agent reading the store should treat the row as decided the moment either of you says yes.
Four of them already print a different question on a different page for the same recorded tap — the deploy gate has been warning about it since 09-06. Naming the rule fixes it going forward; Craig cleans up the four that already drifted.
Live right now, per check_roundup.py: cairo-research/changes (worded differently on cairo/deck-research.html vs the Roundup index), fleet-curriculum-2026-09-02/signoff (Cairo's own approval page vs the index), and both kai-handoff/name and kai-handoff/send (Kai's page vs the index). Kai's framing, which is the reason this needed a founder rather than a grep: the store can say something was tapped, not what was agreed — a paraphrase changes what the tap means without changing what it recorded.
Tap any strip above and its wash turns green on your single tap — that's the live semantics, not a mockup. One thing found while checking this tonight: the written style guide's own state table still calls that colour "Both approved," language left over from before the rule changed. The running page already prints "Approved," correctly.
skills/cairo/references/roundup-standard.md's State colours table still labels the chips "Both approved" / "Waiting on one" / "Blocked by both" — copy from the two-founder era. The actual code (approvals.js's track(), rewritten 2026-09-07) already prints "Approved" and "All decided." A doc-only fix, invisible in the running app, easy for Craig to miss because nothing is broken — flagging it here so it's on record rather than found again later.
Stacy has already stated her side. Nothing lands until you state yours — it binds you exactly as it binds her. The design: hi! business crosses freely · no confidentiality tier inside hi! · what crosses is decided by the engagement a record was created for, not which account it sits in · secrets never cross, ever — a separate rule.
bailey/core.md §1's first clause — "neither of us reads the other's private context" — is untouched either way; this is about the assistants talking, not reading each other's files. Even after a yes, nothing actually opens: Daisy still has to enumerate every one of your surfaces first, because with no confidentiality tier that list is the wall — and it doesn't exist yet. PR itself: github.com/thehiagency/hi-agents/pull/9, docs only, no behaviour change. One thing already wrong in it and worth a note if you approve: it called the wall "asymmetric — you run several businesses, Stacy runs none," which Stacy has since corrected — she runs two. Not a reason to hold; a line for Craig to fix in the doc.
Verified tonight, on the machine: the Sunday 21:01 job is enabled and correctly running your 09-04 ruling — last run 7 Sep, next 14 Sep. The midnight-Monday run that caused the trouble wasn't the schedule firing; it was a manual, off-window sweep. That's evidence about running early, not about which day.
Aidan's case for Thursday→Friday: matches the standing weekday-reports-Friday rule, lands where approvals already happen, gives agents a full week to execute, keeps Monday's Kickoff doing next-steps only. Cost he's named: weekend forwards wait up to six days. Whichever you pick, the failure to design against is the one already seen once — a sweep whose window is still open, producing a fraction of a week and giving it a cutoff line. That's a property of running off-schedule, not of the day chosen. Aidan already knows what to do on your ruling — he moves the cron and rewrites the skill himself (issue #19).
The route in it is already decided against — not reopening that here. The only open question is whether the issue gets closed, and whether Stacy's side already knows.