Rituals pattern: diff, then apply #187
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#187
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. Shares visuals with the code output pattern.
What it's for: before anything is written or changed, show what will change and let the person accept all, accept some, or nothing. Doing a dry run first is the norm for anything that writes.
Where it shows up today
ritual shim export --checkreports drift but can't show it as a diff and apply it.shim create / updatewrites immediately with no preview.ritual initcreates a project file after ay/N, without showing its contents.Please design
Acceptance criteria
diffbecomes a new block type. Decided: yes (#177).Two clarifications to #187, from the #181 review (accepted by @peterswimm on 2026-10-20). No new design.
1. Wish field-patch summaries are not this pattern.
2. The "conflicts with a newer version" state needs a distinct API result.
ill work on that
Closing — the two clarifications are in, and the engineering dependency is filed.
Your 2026-10-16 comment settled both sibling edits:
I said I'd work on the second. It is now Toilville/rituals-api-spec#22, item 7.
What I found measuring it:
Outcomeisapplied | noop | rejected | duplicatein all three surfaces — the DB function,ritual-core::wish_command::Outcomeandopenapi.yaml'sWishCommandResult/ParlayCommandResult. There is noconflictmember anywhere, so the state depends on that one addition and on nothing else.DiffStatusalready has aconflictmember for this block, so #22 notes the command-result analogue should read consistently with it rather than invent a second word for the same thing.The remaining acceptance criteria — the diff views, partial accept, apply, the lineage record, no-change, the token names with contrast checks in both themes, and the CLI version — are all answered by the
diffblock as shipped inschemas/forge_block.json1.2 and the #177 umbrella decision. Nothing here is waiting on you.Reopened — I closed this on a wrong reading of my own, and the correction matters to you rather than to me.
My close comment said the remaining criteria "are all answered by the
diffblock as shipped inschemas/forge_block.json1.2 and the #177 umbrella decision". That is only true of the data contract. I checked the schema and treated it as the spec; it is not. Three criteria are still open, and all three are presentation:apply.granularityisall | file | hunk), the apply step (DiffApply.action_id), the lineage record ("every apply writes a lineage entry"), and theno_changeandconflictstatuses. So the criterion is part-done, by the block rather than by a decision.The two clarifications you added on 2026-10-16 stand, and nothing about them is reopened:
The second is filed as engineering: Toilville/rituals-api-spec#22, item 7. All three surfaces have
Outcomeasapplied | noop | rejected | duplicatewith noconflictmember, so that state depends on that one addition and nothing else. That part is off your plate.What I'd ask of you here
Criteria 2 and 4 are shared with #186 (code and file output), which is also open with no decision on it — same token-names-with-contrast-checks ask, same CLI ask, and #187 was written as "shares visuals with the code output pattern". Taking them together is probably one decision rather than two, and I'd rather you make it once.
No rush from me, and nothing is blocked on it: the
diffblock ships and the engineering dependency is tracked. This is about the ratified presentation, not about unblocking work.