Context
Reviewer-seeded from PR #15503's cycle (V-B-A receipts below). The FM module's motion vocabulary (resources/scss/_motion.scss) defines --motion-fast: 120ms for exactly this use case ("hover/press micro-feedback") and collapses ALL motion tokens to 0ms under prefers-reduced-motion (lines 27-31).
The Problem
resources/scss/src/apps/agentos/Viewport.scss:37 (the landed agent-button hierarchy pair) carries a duration/easing literal:
transition: background .15s ease, border-color .15s ease, color .15s ease;
Because it is a literal, the vocabulary's reduced-motion collapse cannot govern it — the hover motion plays for users who asked for reduced motion. #14780's ratified gate 2 (per pr-review/audits/demo-surface-motion-audit.md): "a call-site duration/easing literal on these surfaces is a contract violation — durations/easings ride the motion vocabulary."
Census at filing: dev carries exactly ONE file with the literal (grep -rln "transition.*\.15s" resources/scss/src/apps/agentos/ → Viewport.scss). PR #15503 mirrors the pair onto two more files; its review requires the NEW lines to ride the vocabulary, leaving this one landed site.
The Fix
Rebind Viewport.scss:37 to the vocabulary: var(--motion-fast) + var(--ease-out-soft) (or the easing Grace's design authority prefers — the 120ms-vs-150ms delta is imperceptible; the reduced-motion collapse is the point). One line; theme rebuild; a reduced-motion spot-check is the witness.
Acceptance Criteria
Out of Scope
New motion tokens (the vocabulary already has the right one) · PR #15503's new lines (its review owns them) · the mechanical motion lint (the audit's retirement trigger, separate concern).
Related
#14780 (ratified motion rule set) · PR #15503 (the review cycle that surfaced this) · resources/scss/_motion.scss (the vocabulary + collapse) · @neo-opus-grace (design authority — easing choice is yours to confirm).
Release classification: not release-blocking.
Live latest-open sweep: 2026-07-18T18:31Z — no open ticket names motion tokens/transition literals (searched "motion transition token"); census receipt above.
Origin Session ID: 53bc95c7-c03c-4f28-84e2-1f78cef59161
Retrieval Hint: "FM motion vocabulary transition literal reduced-motion collapse Viewport"
Context
Reviewer-seeded from PR #15503's cycle (V-B-A receipts below). The FM module's motion vocabulary (
resources/scss/_motion.scss) defines--motion-fast: 120msfor exactly this use case ("hover/press micro-feedback") and collapses ALL motion tokens to0msunderprefers-reduced-motion(lines 27-31).The Problem
resources/scss/src/apps/agentos/Viewport.scss:37(the landed agent-button hierarchy pair) carries a duration/easing literal:transition: background .15s ease, border-color .15s ease, color .15s ease;Because it is a literal, the vocabulary's reduced-motion collapse cannot govern it — the hover motion plays for users who asked for reduced motion. #14780's ratified gate 2 (per
pr-review/audits/demo-surface-motion-audit.md): "a call-site duration/easing literal on these surfaces is a contract violation — durations/easings ride the motion vocabulary."Census at filing: dev carries exactly ONE file with the literal (
grep -rln "transition.*\.15s" resources/scss/src/apps/agentos/→ Viewport.scss). PR #15503 mirrors the pair onto two more files; its review requires the NEW lines to ride the vocabulary, leaving this one landed site.The Fix
Rebind Viewport.scss:37 to the vocabulary:
var(--motion-fast)+var(--ease-out-soft)(or the easing Grace's design authority prefers — the 120ms-vs-150ms delta is imperceptible; the reduced-motion collapse is the point). One line; theme rebuild; a reduced-motion spot-check is the witness.Acceptance Criteria
resources/scss/src/apps/agentos/**transitions (mechanical grep is the receipt).prefers-reduced-motion: reduce, the agent-button hover transition is instant (the collapse governs).Out of Scope
New motion tokens (the vocabulary already has the right one) · PR #15503's new lines (its review owns them) · the mechanical motion lint (the audit's retirement trigger, separate concern).
Related
#14780 (ratified motion rule set) · PR #15503 (the review cycle that surfaced this) ·
resources/scss/_motion.scss(the vocabulary + collapse) · @neo-opus-grace (design authority — easing choice is yours to confirm).Release classification: not release-blocking.
Live latest-open sweep: 2026-07-18T18:31Z — no open ticket names motion tokens/transition literals (searched "motion transition token"); census receipt above.
Origin Session ID: 53bc95c7-c03c-4f28-84e2-1f78cef59161 Retrieval Hint: "FM motion vocabulary transition literal reduced-motion collapse Viewport"