Skip to content

ci(plugin): gate that an animated panel declares a reduced-motion guard - #34

Merged
ken-jo merged 1 commit into
mainfrom
ci/reduced-motion-gate
Aug 26, 2026
Merged

ci(plugin): gate that an animated panel declares a reduced-motion guard#34
ken-jo merged 1 commit into
mainfrom
ci/reduced-motion-gate

Conversation

@ken-jo

@ken-jo ken-jo commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

DESIGN.md lists prefers-reduced-motion in the Mandatory row for plugin
surfaces. In 2026-08 all five shipped plugin UIs violated it — five for
five, including panels running an infinite spinner and a 3s keyframe.
That is not five independent mistakes. Nothing was checking, so the rule
lived only in prose, and prose does not fail a build.

The check is deliberately coarse. It asks whether a repo that declares
motion declares a guard anywhere under src/, not whether the guard covers
every animated element. Per-file would be stricter and wrong: a panel
legitimately guards motion it does not own — vendored spinners and
toggles — from its own stylesheet, and a per-file rule would demand edits
to vendored files that carry "do not redesign" headers. A pass means the
floor is not zero; it does not mean coverage.

Controls, both directions: every plugin repo passes at HEAD, and every
one of the same five fails at HEAD~1 — the commit before its design pass.
A gate measured in only one direction cannot be told apart from a gate
that checks nothing.

DESIGN.md lists `prefers-reduced-motion` in the Mandatory row for plugin
surfaces. In 2026-08 all five shipped plugin UIs violated it — five for
five, including panels running an infinite spinner and a 3s keyframe.
That is not five independent mistakes. Nothing was checking, so the rule
lived only in prose, and prose does not fail a build.

The check is deliberately coarse. It asks whether a repo that declares
motion declares a guard anywhere under src/, not whether the guard covers
every animated element. Per-file would be stricter and wrong: a panel
legitimately guards motion it does not own — vendored spinners and
toggles — from its own stylesheet, and a per-file rule would demand edits
to vendored files that carry "do not redesign" headers. A pass means the
floor is not zero; it does not mean coverage.

Controls, both directions: every plugin repo passes at HEAD, and every
one of the same five fails at HEAD~1 — the commit before its design pass.
A gate measured in only one direction cannot be told apart from a gate
that checks nothing.
@ken-jo
ken-jo merged commit 728f8bf into main Aug 26, 2026
1 check passed
@ken-jo
ken-jo deleted the ci/reduced-motion-gate branch August 26, 2026 12:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant