Rituals pattern: confirm and acknowledge, four severity levels #182
Labels
No labels
build-dist
priority
P1
priority
P2
priority
P3
priority
P4
bug
duplicate
enhancement
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
Toilville/toilville-design#182
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Part of #177.
What it's for: a single "are you sure?" pattern that scales with how serious the action is. It replaces four hand-built dialogs and the CLI's
y/N.Where it shows up today
SafetyOverrideDialog.swift,ConsentCeremonySheet.swift(tick every policy, then proceed), andCapabilityConsentSheet.swiftsafety_override_dialog.dartandconsent_upgrade_prompt.dartProceed? [y/N](run_command.dart:126), andritual init's confirmtierTransitionblockPlease design four levels, as one pattern
For each level, cover what's shown, what's recorded (every override is logged in the safety ledger), the default button, and Escape/cancel.
Acceptance criteria
confirmblock or a composition (see the umbrella decision). Decided: a composition that keeps CEREMONY intent and critical importance where they apply (#177).peterswimm referenced this issue from Toilville/rituals-api-spec2026-10-04 20:21:33 +00:00
Decisions for #182 (confirm and acknowledge). They answer the acceptance criteria. This decision sets no visual direction. Styling follows the existing tokens (#443).
One pattern
none, Simple, Review, Ceremony, Destructive.nonemeans no confirmation. A missing or invalid value is a contract error, notnone. Other issues refer to this list. A confirmation is a composition of existing blocks (#177).The four levels
Keys and focus
Safety block and override
Type to confirm
Tier transitions
Existing surfaces
Recording
No confirmation needed
CLI
[y/N]. Review: the consequence, then[y/N]. Ceremony: each required item is shown and must be accepted. Destructive: the same type-to-confirm rule. Safety block: the reason and the next step, with no override prompt when none is available.--yes,--forceor--override-safetyflag.Accessibility (Grammar)
@peterswimm
Accepted (2026-10-20). The 2026-10-16 decision covers:
That ticks criteria 1 and 2 and the CLI item. Destructive is never the default action, which is right.
I'll close this once #181's Simple-with-no-inputs answer is folded in. That changes the Simple CLI rule here, and #181 also adds the full enum, including
none. The override path is a separate security decision and isn't needed to close this.Closing — the condition I held this open for is met.
My acceptance said: "I'll close this once #181's Simple-with-no-inputs answer is folded in. That changes the Simple CLI rule here, and #181 also adds the full enum, including
none." Both are in now:[y/N]." So the two surfaces now agree for the same command, which was the problem.none, Simple, Review, Ceremony, Destructive.nonemeans no confirmation. A missing or invalid value is a contract error, notnone." One home, as asked.That ticks criteria 1 and 2 and the CLI item. Criterion 3 was already decided in #177.
The engineering half is Toilville/rituals-api-spec#22 (item 1), which adds
severityper command across the three surfaces that declare none of it today, and states the three contract errors — missing/invalid severity, two primaries, a Destructive primary — as errors rather than things a renderer repairs. Client-side work is Toilville/toilville_rituals#581: aCEREMONY+criticalcomposition gets the focus trap and escape hatch, and the three sheets migrate one PR each, keeping their ledger writes.The CLI override path stays out, as you decided — a separate engineering and security decision, not needed to close this. Nothing here adds
--yes,--forceor--override-safety.