DESIGN: resolve rituals space/radius/border scale divergence (decision memo 2026-07-23) #51
Labels
No labels
priority
P1
priority
P2
priority
P3
priority
P4
bug
duplicate
enhancement
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
3 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
Toilville/toilville-design#51
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?
docs/reviews/token-divergence-2026-07-23.md (landed via PR #48) documents that the Rituals Flutter package and this repo publish the SAME token names with DIFFERENT values:
Verified blast radius: rituals-web is the ONLY surface that visibly moves under a space re-value; forgejo theme (colors only), WP (not a rituals consumer), macOS (already linear, compile-time) are unaffected. App→modular migration ≈ 433 non-test call sites with RenderFlex-overflow risk.
Options per tier (memo §2/§3): (a) rituals dtcg override to app values + RATIONALE.yml · (b) app migrates to canon · (c) rename to make the fork explicit.
Ask: @ville + @peterswimm pick per tier. Blocks a meaningful sign-off on rituals#174.
cc @ville
My side of this: the actual values stand. space5=20 and border 2px were deliberate calls I already
made (#164, 2026-07-02) — they're not up for re-litigation here, just formalization.
(b) is off the table from my side either way — space migration is 400+ call sites with real
overflow risk for zero design benefit, and border (b) would mean reversing my own 2026-07-02
retirement of the 1px border, which I'm not doing.
So it's really (a) vs (c) — override rituals-dtcg to the app's values with a RATIONALE.yml entry,
vs. renaming so the fork is explicit instead of silent. That's more a call about how the shared
design system wants to represent a documented per-product fork than it is a Rituals design
decision, so I'll defer to you on which one, Peter — happy to sign off on either.
Two things need solving regardless of which option wins:
override rather than leave a dangling unused value, but open to other takes if there's a reason
to keep the name reserved.
filling no matter what we pick for the value question.
@peterswimm
Direction: going with (a) override — adding
Brand/UDG/products/rituals/dtcg/{space,radius,border}.jsonoverrides so upstream matches the app's existing shipped values, rather than (c) renaming. The app already ships these values in production (token_registry.dart), so this requires zero Flutter/macOS code changes — onlyrituals-weband this repo's own design-tool previews move to match on next build. Option (c) would mean a ~700-occurrence Dart rename sweep in Toolville_Rituals, which is out of this repo's scope.Resolving the two open technical questions:
border.width-accent(2px) forborderAccent, which has real production usage (~15+ call sites). Not adding a canonical name forfocusRing— traced its call sites and it has zero production callers in the app today (dead code, separate from the existing--focus-ringcolor token, which is unrelated and unaffected). Will file a Toolville_Rituals cleanup issue to remove it instead of inventing an upstream name for an unused token.PR incoming with the override files + a version bump (1.1.0 → 1.2.0) +
just build/just check. Will link it here.Wish completed — all requirements satisfied.