stylegallery 0.1.4 → 0.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/DOMAINS.md +11 -9
  2. package/GOVERNANCE.md +8 -2
  3. package/LICENSE +28 -0
  4. package/LICENSE-DOCS +42 -0
  5. package/NOTICE +38 -0
  6. package/README.md +43 -6
  7. package/consumer-reference/agent-native/README.md +7 -7
  8. package/consumer-reference/agent-native/v2/admission-policy.json +241 -1
  9. package/consumer-reference/agent-native/v2/material-registry.json +1 -1
  10. package/consumer-reference/agent-native/v2/schema/admission-policy.schema.json +2 -2
  11. package/design-engineering/component-contract.md +114 -0
  12. package/design-engineering/decision-tree.md +70 -0
  13. package/design-engineering/index.md +60 -2
  14. package/design-engineering/loading-and-feedback.md +91 -0
  15. package/design-engineering/native-interaction-contracts.md +94 -0
  16. package/design-engineering/state-management/decision-tree.md +60 -0
  17. package/design-engineering/state-management/index.md +61 -0
  18. package/design-engineering/state-management/patterns/derived-state.md +85 -0
  19. package/design-engineering/state-management/patterns/draft-and-baseline.md +86 -0
  20. package/design-engineering/state-management/patterns/id-selection.md +85 -0
  21. package/design-engineering/state-management/patterns/identity-reset.md +89 -0
  22. package/design-engineering/state-management/patterns/latest-request-wins.md +94 -0
  23. package/design-engineering/state-management/patterns/optimistic-overlay.md +98 -0
  24. package/design-engineering/state-management/patterns/single-flight.md +92 -0
  25. package/design-engineering/state-management/patterns/single-owner.md +89 -0
  26. package/design-engineering/state-management/patterns/submitted-snapshot.md +107 -0
  27. package/design-engineering/state-management/patterns/unsaved-navigation.md +100 -0
  28. package/design-engineering/state-management/patterns/url-state.md +96 -0
  29. package/design-engineering/state-management/patterns/versioned-restore.md +95 -0
  30. package/design-engineering/state-management/recipes/delete-undo.md +65 -0
  31. package/design-engineering/state-management/recipes/index.md +64 -0
  32. package/design-engineering/state-management/recipes/multi-step-form.md +65 -0
  33. package/design-engineering/state-management/recipes/search-detail.md +65 -0
  34. package/design-engineering/state-management/recipes/settings-save.md +64 -0
  35. package/design-engineering/state-management/state-brief.md +83 -0
  36. package/design-engineering/state-management/verification.md +65 -0
  37. package/design-engineering/text-input-and-internationalization.md +91 -0
  38. package/design-engineering/worked-examples.md +129 -0
  39. package/design-terminology/comparison-workflow.md +98 -0
  40. package/design-terminology/conflict-cases.md +87 -55
  41. package/design-terminology/index.md +19 -5
  42. package/design-terminology/interaction-semantics.md +87 -0
  43. package/design-terminology/relation-types.md +12 -6
  44. package/design-terminology/source-vocabularies.md +33 -3
  45. package/design-terminology/token-semantics.md +90 -0
  46. package/design-terminology/typography-semantics.md +86 -0
  47. package/game-ui/decision-tree.md +81 -0
  48. package/game-ui/index.md +11 -1
  49. package/game-ui/screen-recipes.md +101 -0
  50. package/game-ui/verification-workflow.md +100 -0
  51. package/index.md +8 -0
  52. package/log.md +67 -0
  53. package/motion/accessible-motion.md +90 -0
  54. package/motion/decision-tree.md +70 -0
  55. package/motion/index.md +21 -2
  56. package/motion/interaction-recipes.md +170 -0
  57. package/motion/interruption-and-retargeting.md +90 -0
  58. package/motion/motion-brief.md +125 -0
  59. package/motion/observed-choreography.md +73 -0
  60. package/motion/rendering-and-performance.md +89 -0
  61. package/motion/review-workflow.md +8 -0
  62. package/motion/vocabulary.md +2 -2
  63. package/package.json +74 -8
  64. package/platform-guides/adaptation-workflow.md +76 -0
  65. package/platform-guides/adaptive-navigation.md +85 -0
  66. package/platform-guides/android-interaction.md +74 -0
  67. package/platform-guides/apple-interaction.md +9 -1
  68. package/platform-guides/compatibility-matrix.md +97 -0
  69. package/platform-guides/index.md +19 -2
  70. package/platform-guides/input-and-focus.md +91 -0
  71. package/platform-guides/preferences-and-accessibility.md +90 -0
  72. package/platform-guides/windows-interaction.md +75 -0
  73. package/recipes/homepage.md +8 -0
  74. package/scripts/compiler/README.md +112 -0
  75. package/scripts/compiler/cli.mjs +51 -0
  76. package/scripts/compiler/mcp.mjs +53 -0
  77. package/scripts/compiler/operations.mjs +70 -0
  78. package/scripts/compiler/runtime.mjs +156 -0
  79. package/scripts/sg-entry.mjs +20 -0
  80. package/scripts/sg-server.mjs +20 -0
@@ -0,0 +1,90 @@
1
+ ---
2
+ type: Domain Guide
3
+ title: Accessible Motion And Equivalent Feedback
4
+ description: Separate motion preferences, automatic updates, flashing, and semantic feedback before designing reduced-motion behavior.
5
+ domain: motion
6
+ lifecycle: experimental
7
+ provenance_kind: local
8
+ reviewed_on: 2026-09-21
9
+ ---
10
+
11
+ # Accessible Motion And Equivalent Feedback
12
+
13
+ Primary role: source-backed motion accessibility decision guide.
14
+
15
+ ## Repository Boundary
16
+
17
+ This page owns product-motion decisions and their evidence requirements. Shared [accessibility evidence](../quality/evidence/accessibility.md) governs conformance claims. No motion values or decorative declarations become reusable Layout CSS.
18
+
19
+ ## Reusable Method
20
+
21
+ Inventory each effect by trigger, duration, affected area, information conveyed, and available controls. Evaluate the separate source conditions below; one reduced-motion media query is not a complete accessibility review. Then specify an equivalent path that exposes the same information and actions with less movement.
22
+
23
+ ### What The Sources Establish
24
+
25
+ | Source | Bounded finding | Decision it informs |
26
+ | --- | --- | --- |
27
+ | [WCAG 2.2 SC 2.3.3 explanation](https://www.w3.org/WAI/WCAG22/Understanding/animation-from-interactions.html) | The AAA criterion concerns disabling interaction-triggered motion animation unless essential. | Identify extra movement induced by scrolling, dragging, expanding, or changing routes. |
28
+ | [SC 2.2.2 explanation](https://www.w3.org/WAI/WCAG22/Understanding/pause-stop-hide.html) | The A criterion has distinct conditions for automatically moving information and automatically updating information. The latter has no five-second exception. | Audit rotating content and live updates separately from a short transition. |
29
+ | [SC 2.3.1 explanation](https://www.w3.org/WAI/WCAG22/Understanding/three-flashes-or-below-threshold.html) | Flash evaluation includes frequency and defined area/luminance thresholds. | A pause button cannot substitute for evaluating flashing content. |
30
+ | [Media Queries Level 5](https://www.w3.org/TR/mediaqueries-5/#prefers-reduced-motion) | `prefers-reduced-motion` exposes a preference; it does not select an application-specific replacement. | Author the replacement and verify preference changes. |
31
+ | [SC 4.1.3 explanation](https://www.w3.org/WAI/WCAG22/Understanding/status-messages.html) | Status information can require programmatic exposure without moving focus. | Preserve feedback when a spinner, movement, or success effect disappears. |
32
+
33
+ WCAG Understanding pages are informative explanations of the [normative WCAG 2.2 requirements](https://www.w3.org/TR/WCAG22/). Media Queries Level 5 is a Working Draft. These sources do not establish implementation support for a particular browser or certify a product.
34
+
35
+ ### Classify Before Replacing
36
+
37
+ | Product behavior | Local replacement proposal | Failure to look for |
38
+ | --- | --- | --- |
39
+ | Scroll-linked zoom into a product detail | Keep the reading sequence; switch details at explicit boundaries or expose them together. | Essential copy is available only at an intermediate animation frame. |
40
+ | Reordering a list | Update the order and selection immediately; provide a concise completion message if needed. | Visual order changes while reading order or selected identity does not. |
41
+ | Loading shimmer | Use a stationary placeholder and textual waiting state. | The placeholder is mistaken for loaded content or the request appears to have stopped. |
42
+ | Modal entrance | Present the usable modal immediately, with the same focus and dismissal contract. | Focus is delayed until a completion event that never fires in reduced mode. |
43
+ | Automatically advancing announcement | Provide durable stop/control behavior appropriate to the applicable criterion. | Moving focus elsewhere restarts an update the user had paused. |
44
+ | Success celebration | Retain the durable success state and next action. | Removing confetti also removes the only completion signal. |
45
+
46
+ These are proposed product choices, not W3C-prescribed recipes. A fade is another effect to evaluate; reducing translation does not prove that every replacement is comfortable.
47
+
48
+ ### Preference Changes During Work
49
+
50
+ Record whether an in-product setting inherits the system preference or further reduces motion. Define how an active effect settles when the effective preference changes. The settlement must preserve the current task, release transient visual resources, and make the destination usable. Avoid replaying an entrance merely because the preference changed back.
51
+
52
+ Separate pausing the presentation from pausing the underlying process. A dashboard may stop replacing visible figures while data collection continues. A resumed display must say whether it shows current information or replays buffered history. For transaction feedback, stopping an animation never means a server write was cancelled.
53
+
54
+ ## Opinionated Guidance
55
+
56
+ Start with a complete stationary interaction, then add motion with a named explanatory purpose. This makes the no-motion path directly inspectable. Keep user-chosen pauses durable across focus changes and make preference controls reachable before the effect they govern.
57
+
58
+ Do not infer an accessibility need from a device class. The effective preference, explicit user action, and actual interaction matter more than a touch/desktop label.
59
+
60
+ ## Platform-Specific Guidance
61
+
62
+ Web CSS and script-driven effects need a coordinated preference owner. Native Reduce Motion behavior belongs to its named OS/API; see [Preferences And Accessibility](../platform-guides/preferences-and-accessibility.md). Animated media, canvas, and embedded content require their own controls and evidence because disabling a CSS transition does not govern them.
63
+
64
+ ## Unsupported Absolutes
65
+
66
+ “Under five seconds is accessible,” “a crossfade is always safe,” and “the media query makes the page WCAG AA compliant” are unsupported. A criterion's conformance level is not a reason to claim that another criterion covers its behavior.
67
+
68
+ ## Verification Contract
69
+
70
+ The following cases are unexecuted test designs. Record actual outcomes in the consumer's evidence, including source revision, browser/OS, input, effective preference, and the asserted result.
71
+
72
+ | Case | Required observation |
73
+ | --- | --- |
74
+ | Reduced motion is active before load | Essential content and actions appear without waiting for motion. |
75
+ | Preference changes halfway through a transition | The active task settles once; no stranded overlay, stale focus, or rejected-promise error remains. |
76
+ | Keyboard activates the same action | The destination and feedback match the pointer path. |
77
+ | Animation support is removed | The state transition still completes. |
78
+ | User pauses automatic information, then tabs away | The pause persists; resumption follows the documented policy. |
79
+ | Visual completion feedback is removed | The result remains available visually and through relevant assistive technology. |
80
+
81
+ Source inspection verifies the criterion distinctions. DOM checks can verify state and focus; recordings can reveal movement. Neither alone establishes vestibular comfort or screen-reader announcement behavior. Re-review when source conditions, effect ownership, or the target runtime changes.
82
+
83
+ ## Source, License, And Attribution
84
+
85
+ Locally authored synthesis. All linked external sources were inspected on 2026-09-21. No upstream prose, example code, or assets are reproduced. `consumer_reference: not_applicable` because this guide selects no consumer implementation record.
86
+
87
+ ## IA Navigation
88
+
89
+ Parent: [Motion](index.md).
90
+ Next: [Interruption And Retargeting](interruption-and-retargeting.md).
@@ -0,0 +1,70 @@
1
+ ---
2
+ type: Domain Guide
3
+ title: Motion Decision Tree
4
+ description: Choose a motion responsibility from a user task, state change, and failure case.
5
+ domain: motion
6
+ lifecycle: experimental
7
+ provenance_kind: local
8
+ ---
9
+
10
+ # Motion Decision Tree
11
+
12
+ Primary role: motion selection workflow.
13
+
14
+ ## Repository Boundary
15
+
16
+ Use this route to decide whether a product interaction needs motion and which behavior contract to write. Layout continues to own final geometry, semantic order, and scrolling. This route selects a responsibility, not a timing preset.
17
+
18
+ ## Reusable Method
19
+
20
+ 1. Write the before and after state without animation. If either is unusable, fix that state first.
21
+ 2. Name the information motion would add: acknowledgement, continuity, progress, or guidance. If none is needed, use an immediate update.
22
+ 3. Choose the first matching responsibility below; compose only when one transition has multiple explicit jobs.
23
+ 4. Complete the [Motion Brief](motion-brief.md), including interruption and a reduced-motion path.
24
+ 5. Use an [Interaction Recipe](interaction-recipes.md) and verify through the [Review Workflow](review-workflow.md).
25
+
26
+ ## Selection Table
27
+
28
+ | Observed task | Choose | Failure to prevent | First verification |
29
+ | --- | --- | --- | --- |
30
+ | Explain an already rendered effect | [Vocabulary](vocabulary.md) | Inferring an API from appearance | Exact, ambiguous, and unknown observations |
31
+ | Acknowledge a command | [Action feedback](interaction-recipes.md#action-feedback) | Decorative feedback mistaken for successful completion | Pending, success, failure, repeated activation |
32
+ | Show or hide supporting content | [Disclosure](interaction-recipes.md#disclosure) | Hidden content retaining focus or delayed access to content | Keyboard activation and reversal |
33
+ | Enter or dismiss a modal task | [Modal transition](interaction-recipes.md#modal-transition) | Focus or input blocking tied to an animation timer | Focus entry, cancellation, return |
34
+ | Preserve identity when items move | [Reorder and filter](interaction-recipes.md#reorder-and-filter) | Visual movement changing logical reading order | Stable identity and focused-item removal |
35
+ | Explain an operation that takes time | [Progress and completion](interaction-recipes.md#progress-and-completion) | An invented percentage or success before confirmation | Delayed result, cancellation, failure |
36
+ | Follow direct manipulation | [Drag and settle](interaction-recipes.md#drag-and-settle) | A cancelled gesture committing data | Release, reversal, cancellation, alternative input |
37
+ | Explore a product through scroll-controlled chapters | [Scroll-driven story](interaction-recipes.md#scroll-driven-story) | Entry callbacks mistaken for continuous progress; inaccessible pinned content | Reverse, jump, middle reload, static reading |
38
+ | Navigate a whole page as fixed-viewport scenes | [Full-viewport scene navigation](interaction-recipes.md#full-viewport-scene-navigation) | Gesture bursts skipping chapters; trapped input or lost history | Burst, boundary, direct link, Back, Escape, native copy scroll |
39
+ | Decorate an idle surface | [Practice Reference](practice-reference.md) | Repetition competing with the user's task | Compare against removal and reduced motion |
40
+
41
+ ## Worked Selection
42
+
43
+ A search result list changes after a filter selection. The task is to understand which results remain; it is not to watch every row arrive. Choose reorder/filter only if stable result identities can be preserved. Keep the filter control focused. Announce the resulting count separately from any visual interpolation. When no results remain, present an actionable empty state immediately. If identity cannot be mapped reliably, replace the list without implying continuity.
44
+
45
+ The decision record is a proposal until tested on the consuming product. It does not establish that motion improves search comprehension.
46
+
47
+ ## Opinionated Guidance
48
+
49
+ Prefer one explanatory event over a sequence of unrelated effects. Evaluate high-frequency interactions with realistic repetition; a first-use recording can hide accumulated cost.
50
+
51
+ ## Platform-Specific Guidance
52
+
53
+ Choose implementation APIs only after the behavior contract. Native gestures, browser navigation, scroll timelines, and animation libraries have different cancellation and lifetime behavior. Platform adaptation starts at [Platform Guides](../platform-guides/index.md).
54
+
55
+ ## Unsupported Absolutes
56
+
57
+ An immediate update is a valid outcome. A recipe name does not imply a spring, compositor execution, fixed duration, or proven usability improvement.
58
+
59
+ ## Verification Contract
60
+
61
+ For the selected row, verify normal completion, interruption, repeated input, the reduced-motion path, and a failed or empty result where relevant. Record the actual outcome separately from the expected outcome. Revisit this route when a task cannot find a suitable contract or two recipes imply conflicting ownership.
62
+
63
+ ## Source, License, And Attribution
64
+
65
+ Locally authored selection workflow based on this domain's existing vocabulary and review contracts. No external code or expressive examples are adapted.
66
+
67
+ ## IA Navigation
68
+
69
+ Parent: [Motion](index.md).
70
+ Next: [Motion Brief](motion-brief.md).
package/motion/index.md CHANGED
@@ -8,17 +8,36 @@ In scope: naming observable motion, reviewing declared behavior, distinguishing
8
8
 
9
9
  Out of scope: universal timing or easing rules, unmeasured performance claims, and permission to add animation or decorative properties to reusable Layout pattern CSS.
10
10
 
11
+ ## Start Here
12
+
13
+ | Task | Route |
14
+ | --- | --- |
15
+ | Choose a behavior from the user task. | [Motion Decision Tree](decision-tree.md) |
16
+ | Record states, owners, interruption, and evidence. | [Motion Brief](motion-brief.md) |
17
+ | Build a scroll-driven product story and inspect runnable examples. | [Scroll-driven Story](interaction-recipes.md#scroll-driven-story) and [Scroll Story Lab](../examples/scroll-story/README.md) |
18
+ | Keep the page fixed while navigating between full-screen chapters. | [Full-viewport Scene Navigation](interaction-recipes.md#full-viewport-scene-navigation) and [runnable example](../examples/scene-navigation/README.md) |
19
+ | Apply feedback, disclosure, modal, reorder, progress, and drag contracts. | [Motion Interaction Recipes](interaction-recipes.md) |
20
+
21
+ These workflows and worked cases are usable experimental guidance. Expected-result tables are test designs; actual product, engine, and reader evidence must be recorded separately. Review on a failed task, a source change, or a changed ownership contract.
22
+
11
23
  ## Documents
12
24
 
13
25
  - [Motion Vocabulary](vocabulary.md) maps observed behavior to implementation-neutral terms while preserving ambiguity.
14
26
  - [Motion Review Workflow](review-workflow.md) structures evidence-first review and remediation.
15
27
  - [Motion Practice Reference](practice-reference.md) classifies mechanics, heuristics, platform notes, and unsupported claims.
28
+ - [Observed Choreography Transcription](observed-choreography.md) transcribes an observed scroll choreography into Scene Composition Contract vocabulary.
29
+
30
+ ## Source-Backed Deep Dives
31
+
32
+ - [Accessible Motion And Equivalent Feedback](accessible-motion.md). Separate motion preferences, automatic updates, and equivalent feedback.
33
+ - [Interruption And Retargeting](interruption-and-retargeting.md). Resolve repeated input, cancellation, and stale completion callbacks.
34
+ - [Motion Rendering And Performance](rendering-and-performance.md). Choose native mechanisms and diagnose measured delivery failures.
16
35
 
17
36
  ## Domain Contract
18
37
 
19
- See [StyleGallery Domains](../DOMAINS.md) for lifecycle, provenance, page membership, and promotion rules.
38
+ See [StyleGallery Domains](../DOMAINS.md) for lifecycle, provenance, page membership, and staleness rules.
20
39
 
21
40
  ## IA Navigation
22
41
 
23
42
  Parent: [StyleGallery](../index.md).
24
- Next: [Motion Vocabulary](vocabulary.md).
43
+ Next: [Motion Decision Tree](decision-tree.md).
@@ -0,0 +1,170 @@
1
+ ---
2
+ type: Domain Guide
3
+ title: Motion Interaction Recipes
4
+ description: State-based product motion recipes for feedback, disclosure, modal transitions, rearrangement, progress, and dragging.
5
+ domain: motion
6
+ lifecycle: experimental
7
+ provenance_kind: local
8
+ ---
9
+
10
+ # Motion Interaction Recipes
11
+
12
+ Primary role: motion behavior catalog.
13
+
14
+ ## Repository Boundary
15
+
16
+ These recipes describe product behavior and failure cases. They compose with Layout instead of supplying reusable spatial CSS or visual defaults. Start with a [Motion Brief](motion-brief.md); use [Vocabulary](vocabulary.md) for the visual effect's name.
17
+
18
+ ## Reusable Method
19
+
20
+ Choose the task below, assign semantic and presentation owners, implement the immediate state change first, and then test any visual interpolation against that baseline. The traces below are expected behavior, not evidence of a tested implementation.
21
+
22
+ ### Action Feedback
23
+
24
+ Use for a command whose acknowledgement and completion are different events.
25
+
26
+ `ready → pending → success | error`; a retry is a new request. Press feedback may acknowledge input immediately, but a success treatment waits for actual confirmation. Decide explicitly whether repeated activation is ignored, queued, or replaces the request. Keep essential status available without motion. Test delayed completion, duplicate input, failure, and a response arriving after navigation.
27
+
28
+ ### Disclosure
29
+
30
+ Use for optional content controlled by a nearby trigger. A native `details`/`summary` baseline can be enough:
31
+
32
+ ```html
33
+ <details>
34
+ <summary>Delivery restrictions</summary>
35
+ <p>Some destinations need an additional delivery day.</p>
36
+ </details>
37
+ ```
38
+
39
+ If a custom disclosure is necessary, keep the trigger's expanded state consistent with content availability. The [APG disclosure contract](https://www.w3.org/WAI/ARIA/apg/patterns/disclosure/) describes button activation and state semantics. When closing while focus is inside, move focus to an available logical target before hiding it. Test repeated toggle, long content, and removal of the trigger. Avoid fixed maximum heights that clip real content; Layout owns intrinsic sizing.
40
+
41
+ ### Modal Transition
42
+
43
+ Use when a temporary task must block the surrounding interface. Assign one owner to opening, focus placement, blocking, cancellation, and focus return. An entrance effect may decorate this change; semantic availability must not wait for an arbitrary timeout. If exit animation is retained, define whether the dialog remains modal until cleanup and how reopening supersedes a pending close.
44
+
45
+ The [APG modal dialog guidance](https://www.w3.org/WAI/ARIA/apg/patterns/dialog-modal/) supplies the web interaction baseline. Test close during entry, reopen during exit, nested overlays, trigger removal, and reduced motion. After final close there must be no surviving blocker or focus trap.
46
+
47
+ ### Reorder And Filter
48
+
49
+ Use when the same identifiable items move or are removed. Commit the intended logical order, retain stable item keys, and interpolate presentation only where the source/destination mapping is valid. Preserve focused items; if one disappears, choose a documented neighboring item or controlling filter. Do not reorder DOM solely to produce a pleasing stagger.
50
+
51
+ Trace: filter A → filter B → late A data → B remains current. Test empty results, long item labels, list updates during movement, keyboard navigation, and a focused item's removal. An immediate redraw is the fallback when continuity cannot be established.
52
+
53
+ ### Progress And Completion
54
+
55
+ Use when an ongoing operation needs visible status. Show determinate progress only when backed by a meaningful measurement; otherwise use a pending state. Completion, failure, and cancellation come from the operation, independently of the progress decoration.
56
+
57
+ Trace: pending → cancellation requested → confirmed cancelled or completed; do not promise cancellation succeeded before the operation confirms it. Essential information persists beyond a transient flourish. Use urgent alerts sparingly; [APG alert guidance](https://www.w3.org/WAI/ARIA/apg/patterns/alert/) distinguishes announcements from focus-taking dialogs.
58
+
59
+ ### Drag And Settle
60
+
61
+ Use when direct manipulation previews a change before commitment. Separate the preview value from the committed value. Release on a valid target commits; cancellation restores or reconciles with the current model. A new gesture retargets from the presented position where continuity is intended. Provide a task-equivalent non-drag operation.
62
+
63
+ The non-drag operation has two separate audiences. [WCAG 2.2 Success Criterion 2.5.7 Dragging Movements](https://www.w3.org/TR/WCAG22/#dragging-movements) (Level AA) asks that functionality operated by dragging also be achievable with a single pointer without dragging: a click or tap, not a held path. Its [Understanding document](https://www.w3.org/WAI/WCAG22/Understanding/dragging-movements.html) states that keyboard equivalence does not meet this criterion by itself unless those controls can also be clicked or tapped, and that the keyboard and single-pointer requirements are evaluated independently. A sortable list with arrow-key reordering therefore still needs pointer-operable move controls, and move buttons that only respond to a pointer still need keyboard operation.
64
+
65
+ Two exceptions bound the criterion. Dragging may remain the only pointer method when it is essential to the task, and the criterion does not cover dragging that the user agent determines and the author has not modified, such as native scrolling. The alternative cannot itself be a path-based gesture such as a swipe or flick; the Understanding document's own examples are tapping a slider track, move controls beside a sortable item, and a text input for a precise value. It does cover content that suppresses native scrolling and interprets the drag itself, which includes a custom carousel, a canvas pan, or the art-surface swipe in [full-viewport scene navigation](#full-viewport-scene-navigation). Record an essential claim with its reason rather than assuming it.
66
+
67
+ Failure cases: the alternative exists only in a keyboard handler; the alternative appears only on hover, so touch cannot reach it; the alternative commits a different value or skips the validation that release performs; the alternative moves the item but leaves focus or the announced position on the old location.
68
+
69
+ Test release inside/outside, cancellation, pointer loss, a changing destination, and repeated reversal. Run the same task three ways (drag, single-pointer activation without movement, keyboard only) and compare the committed value and the final focus. Focus and the selected item must remain traceable while visual position changes. The engine or browser adapter owns gesture events; the product owns acceptance of the new value.
70
+
71
+ ### Scroll-Driven Story
72
+
73
+ Use when a visitor explores a product through ordered visual chapters: scroll a phone into view, enlarge the device, change its screen, then release the scene into the next section. The story is presentation; scrolling must not commit a payment or other application action.
74
+
75
+ | Responsibility | Contract | Failure to exercise |
76
+ | --- | --- | --- |
77
+ | Scroll reveal | Entry triggers a time-based effect; declare once or replay | Re-enter, preference change, content hidden before script starts |
78
+ | Scroll scrub | Position continuously determines a bounded progress value | Reverse, jump over a segment, load at the middle |
79
+ | Pinned story | Document scroll advances a locally sticky stage | Short viewport, long copy, wrong ancestor overflow, release boundary |
80
+ | Layered parallax | Each decorative layer maps progress to a bounded displacement | Cropping, text overlap, reduced-motion alternative |
81
+ | Media sequence | Progress requests an image frame or media time | Slow decode, stale completion, missing frame, unavailable media |
82
+
83
+ The [Scroll Story Lab](../examples/scroll-story/README.md) links runnable Flow and headphones examples, a native CSS scrub, source files, and observed verification. It implements scrub, pinning, scene crossfades, and a small image sequence. Parallax and video seeking remain contracts rather than claimed executed examples.
84
+
85
+ #### Scene Composition Contract
86
+
87
+ Layout owns document scroll, the containing block, sticky offset, available stage height, and track distance. Motion owns progress, scene ranges, continuity, and teardown. The consuming product owns imagery, typography, colors, and visual values. First compose `stack`, `content-limiter`, and `overlay-stack` responsibilities with local sticky positioning; a new Layout pattern requires a distinct demonstrated spatial failure.
88
+
89
+ Record `start`, `distance`, `scene_ranges`, `resize_policy`, `direct_entry`, `static_path`, and `media_budget` alongside the [Motion Brief](motion-brief.md). For positive distance, clamp `(scroll_position - start) / distance` to `[0, 1]`; a nonpositive distance selects the static path. Derive the entire scene from current progress, not from which callbacks have already fired. This makes reversal and skipped segments well defined.
90
+
91
+ The worked three-scene example centers chapters at progress 0, 0.5, and 1. Copy crossfades between centers while decorative scale and position interpolate. These values are local choices, not universal timing or easing defaults. No wheel interception or artificial scroll smoothing is needed for the example.
92
+
93
+ #### Implementation And Fallback
94
+
95
+ Choose the smallest rendering mechanism that meets the contract. CSS scroll/view timelines suit declarative interpolation; a scheduled JavaScript renderer can coordinate semantic availability and decoded media. Feature detection only chooses an implementation candidate, not a supported-device claim. The lab demonstrates CSS continuous rotation separately from its JavaScript three-scene controller; it does not claim visual parity between them.
96
+
97
+ Keep all chapters in ordinary semantic HTML before enhancement. In animated mode, only the presented chapter is available to interaction and accessibility APIs; a visible reading-mode control exposes every chapter in order. Provide a skip link outside the changing panels. Do not put essential actions only inside a fading chapter. Narrow or low windows, overflowing copy, no script, and reduced motion must retain a readable path. React to preference changes during use.
98
+
99
+ Cache geometry on layout changes, batch scroll updates, and avoid a perpetual idle animation loop. Recompute on resize, delayed fonts/images, and history restoration. Dispose observers, queued frames, and stale media callbacks on removal. A restored page must recompute from its restored position.
100
+
101
+ #### Media Contract
102
+
103
+ Record frame order, dimensions, poster, compression, source/license, decoded-memory estimate, cache limit, concurrent decode limit, timeout, and fallback. A successful older decode must never replace a newer requested frame. Retain a poster or last good frame while loading or after failure. Keep essential text outside the image. For video, additionally define duration readiness, seek granularity, pending-seek replacement, and seek failure; selecting `currentTime` is not proof of frame-accurate delivery.
104
+
105
+ The lab uses twelve locally drawn 480×480 SVG illustrations, one in-flight decode, three cached frames, and an eight-second example timeout. These low-detail illustrations verify the loading lifecycle, not photographic quality or production video performance.
106
+
107
+ #### Verification Trace
108
+
109
+ Exercise `0 → 0.5 → 1 → 0.5 → 0`, direct entry at 0.5, and jumps across both scene boundaries. Compare presented state at the same progress in both directions. Also exercise resize mid-scene, text growth, image failure, a slow obsolete request, idle updates, reading-mode activation, preference changes, and teardown. Record browser and OS separately from emulated viewport/input. A screenshot proves one state; performance and perceptual continuity need separate evidence.
110
+
111
+ Technical sources rechecked on 2026-09-09: [W3C Scroll-driven Animations draft](https://www.w3.org/TR/scroll-animations-1/), [requestAnimationFrame](https://developer.mozilla.org/en-US/docs/Web/API/Window/requestAnimationFrame), and [image decode](https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/decode). These support the API distinctions and decode lifecycle; they do not establish local frame rate, comfort, or adoption.
112
+
113
+ ### Full-Viewport Scene Navigation
114
+
115
+ Task: explore a short sequence as screen transitions while the document stays at one position. This is discrete navigation driven by input, not a scroll-position timeline. Use the [Scene Navigation example](../examples/scene-navigation/README.md) for a runnable contract.
116
+
117
+ | Model | State source | Scroll responsibility |
118
+ | --- | --- | --- |
119
+ | Pinned scrub | Continuous document position | Document traverses a track; the local stage sticks and releases |
120
+ | Native snapping | Browser scroll position and snap targets | Document or named pane scrolls between real positions |
121
+ | Fixed-viewport scenes | Selected chapter identity | Document stays fixed in scene mode; overflowing copy owns native scrolling |
122
+
123
+ Choose explicitly; similar appearance does not make their input, history, or recovery behavior equivalent. A short showcase may justify scene navigation. Articles, search results, forms, and long task flows should retain ordinary reading and scrolling unless a tested task requires otherwise.
124
+
125
+ #### Input And Navigation Contract
126
+
127
+ One controller owns the selected chapter. Commit that state immediately and let product CSS retarget presentation; never wait for an animation timer before accepting navigation. Keep the same decorative subject node across scenes when object continuity is intended.
128
+
129
+ - Declare the input surface. The example owns vertical wheel gestures only within its stage and touch swipes only over its decorative art; visible chapter and previous/next controls remain available.
130
+ - Aggregate small wheel deltas and accept at most one navigation per burst. Declare threshold, unit conversion, silence interval, reversal, and edge behavior as local choices. Test long momentum tails on actual target hardware before claiming trackpad support.
131
+ - Exempt editable controls, native overflowing copy, modifier gestures, and horizontal scrolling. Do not capture Tab, browser history shortcuts, or pinch zoom. Do not auto-advance from a copy pane when its scroll reaches the edge.
132
+ - Support direct chapter links, keyboard commands, Back/Forward restoration, and invalid-fragment fallback. Do not loop at the first or last chapter. Preserve unrelated URL state.
133
+ - Make only the selected panel interactive in scene mode. If focus was inside the outgoing panel, move it to the incoming heading; otherwise retain control focus. Announce the chapter separately from animation.
134
+ - Provide a persistent reading-mode control and an escape command. All chapters remain ordinary semantic HTML with no script. A short viewport selects reading mode; long copy remains a named native scroll region.
135
+ - Reduced motion may preserve discrete navigation while making transitions immediate. State this separately from the pinned example's static fallback, and react to preference changes during use.
136
+
137
+ The example's 60-pixel aggregate threshold, 180-millisecond silence interval, 55-pixel swipe threshold, and 540-pixel minimum height are product experiments. They are not gallery-wide defaults or measured usability recommendations.
138
+
139
+ #### Verification Trace
140
+
141
+ Record `0 → 1 → 2 → 1 → 0` with document position unchanged, a long wheel burst, fresh reverse gesture, rapid opposite commands, boundary commands, direct entry, Back/Forward, and Escape. Exercise long copy and text editing without changing chapters, cancelled/multi-touch gestures, no script, reduced motion, resize, and teardown. Desktop touch emulation does not establish iOS Safari, Android, physical trackpad, or assistive-technology behavior.
142
+
143
+ Locally authored interaction contract. The worked example's verification is bounded to its recorded source and runtime; no external homepage implementation is inferred from its appearance.
144
+
145
+ ## Opinionated Guidance
146
+
147
+ For frequent operations, compare with removing motion before increasing its complexity. When two recipes compose, one controller must arbitrate the shared state rather than letting competing completion callbacks decide it.
148
+
149
+ ## Platform-Specific Guidance
150
+
151
+ For the web, [`prefers-reduced-motion`](https://www.w3.org/TR/mediaqueries-5/#prefers-reduced-motion) is a preference signal. Define the alternative per recipe and respond to preference changes during use. API support, native gesture physics, and rendering performance require the exact target runtime.
152
+
153
+ ## Unsupported Absolutes
154
+
155
+ These recipes establish no universal duration, spring configuration, frame rate, device coverage, or aesthetic result. A static snippet does not prove animated or assistive-technology behavior.
156
+
157
+ ## Verification Contract
158
+
159
+ For each implemented recipe record before, intermediate, interrupted, and final states; logical order and focus; reduced-motion behavior; and completion/error cleanup. Source inspection can check declared ownership. Rendered interaction and assistive-technology behavior require the consuming application. Review when an API changes or a trace fails.
160
+
161
+ The [Interaction Lab](../examples/domain-interactions/README.md) provides a bounded web implementation of feedback, native disclosure, modal dismissal, stale search results, reward reveal, and range-input preview. Its [verification notes](../examples/domain-interactions/verification.md) record exercised states and preferences; they do not establish coverage for every possible implementation of these recipes.
162
+
163
+ ## Source, License, And Attribution
164
+
165
+ Locally authored recipes and HTML. The linked W3C APG pages and Media Queries Level 5 were rechecked on 2026-09-08 for the specific semantics and preference signal above. WCAG 2.2 (W3C Recommendation, 12 December 2024) and its Understanding page for Success Criterion 2.5.7 (updated 10 August 2026) were rechecked on 2026-09-19 for the criterion text, its two exceptions, and its relationship to keyboard operation; the Understanding page is informative, and the failure cases above are local and unexecuted. No upstream examples or timing prescriptions are copied.
166
+
167
+ ## IA Navigation
168
+
169
+ Parent: [Motion](index.md).
170
+ Next: [Motion Review Workflow](review-workflow.md).
@@ -0,0 +1,90 @@
1
+ ---
2
+ type: Domain Guide
3
+ title: Interruption And Retargeting
4
+ description: Keep semantic intent, presented motion, cancellation, and teardown consistent under repeated input.
5
+ domain: motion
6
+ lifecycle: experimental
7
+ provenance_kind: local
8
+ reviewed_on: 2026-09-21
9
+ ---
10
+
11
+ # Interruption And Retargeting
12
+
13
+ Primary role: motion lifecycle and ownership guide.
14
+
15
+ ## Repository Boundary
16
+
17
+ This page describes presentation behavior when an interaction is interrupted. Application state and request authority remain in [State Management](../design-engineering/state-management/index.md). A presentation controller cannot silently cancel a transaction or overwrite newer semantic intent.
18
+
19
+ ## Reusable Method
20
+
21
+ For each transition, record four independent facts: the committed application state, the current user intent, the presented visual state, and the current transition identity. Choose which fact authorizes each callback. A visible intermediate frame is not necessarily a valid application state.
22
+
23
+ ### Source Findings
24
+
25
+ | Source | Bounded finding | Consequence |
26
+ | --- | --- | --- |
27
+ | [Web Animations, cancellation](https://www.w3.org/TR/web-animations-1/#canceling-an-animation-section) | Cancelling a non-idle animation rejects its current finished promise with `AbortError` and resets timing state. | Treat expected cancellation separately from an implementation failure. |
28
+ | [Web Animations, playback](https://www.w3.org/TR/web-animations-1/#the-animation-interface) | Play, pause, reverse, finish, and cancel are distinct operations. | Select an operation by desired lifecycle behavior, not its convenient name. |
29
+ | [CSS Transitions Level 2](https://www.w3.org/TR/css-transitions-2/) | Transition events include cancellation; entry styling can be supplied with `@starting-style` when prior rendered styling is absent. | A normal end event is not the only exit path. |
30
+ | [View Transitions Level 1](https://www.w3.org/TR/css-view-transitions-1/#viewtransition) | Skipping the visual transition does not prevent its DOM update callback. | Visual cancellation is not transaction rollback. |
31
+ | [Pointer Events Level 3](https://www.w3.org/TR/pointerevents3/#the-pointercancel-event) | A pointer stream can be cancelled by the user agent. | A drag needs an explicit cancellation path, not only pointer-up handling. |
32
+
33
+ These are specification contracts at the documents read on 2026-09-21. Draft maturity and API presence do not prove behavior on a target browser; name the tested implementation separately.
34
+
35
+ ### Choose The Interruption Policy
36
+
37
+ | Policy | Suitable local scenario | Cost or boundary |
38
+ | --- | --- | --- |
39
+ | Retarget from current presentation | A panel is asked to close before it finishes opening. | Sample or preserve the current pose; do not restart from a stale endpoint. |
40
+ | Reverse the same effect | The underlying states and path are genuinely reversible. | Reversing visual time cannot undo committed external effects. |
41
+ | Settle immediately | Motion is disabled, the surface is disposed, or presentation continuity is unimportant. | Preserve semantic state and focus even when no animation runs. |
42
+ | Coalesce pending presentation | Several updates describe only the newest displayed reading. | Do not drop independent operation acknowledgements. |
43
+ | Queue meaningful steps | The user explicitly needs a sequential demonstration. | Provide interruption or escape; state which queued events can be discarded. |
44
+
45
+ The policy is a product proposal. Keep the queue bounded and its meaning explicit. A list of queued animations is not an audit log of business actions.
46
+
47
+ ### Worked Race: Open, Close, Open
48
+
49
+ The user opens a details pane, closes it during entrance, and opens it again during exit. Give each new intent an identity. The oldest entrance completion may release its own animation handle, but it cannot mark the current pane closed, move focus, or remove the latest pane instance.
50
+
51
+ | Event | Owner action | Invariant |
52
+ | --- | --- | --- |
53
+ | Open A | Commit open intent; establish an accessible pane and entrance effect. | Required semantics do not wait for an effect to finish. |
54
+ | Close B during A | Invalidate A's authority; choose the exit policy and focus destination. | A's completion cannot restore open intent. |
55
+ | Open C during B | Invalidate B; retarget or settle from the current presentation. | B cannot remove C's DOM instance. |
56
+ | B's delayed completion | Clean up only B's resources. | Current intent remains C. |
57
+ | Dispose surface | Invalidate all callbacks; release listeners and handles. | No later callback changes focus or another surface. |
58
+
59
+ Specify when leaving content stops accepting input. If an exiting visual remains on screen after the semantic close, it must not leave a second active focus surface. Conversely, a modal's focus containment must remain correct until the chosen modal-close operation occurs. Review that timing with the [native interaction contract](../design-engineering/native-interaction-contracts.md).
60
+
61
+ ## Opinionated Guidance
62
+
63
+ Prefer one owner per animated property and one lifecycle owner per surface. When multiple effects compose, explicitly name the composite rule and cleanup ownership. Do not use a timer equal to a nominal duration as the authority for saving data, unlocking an action, or removing a currently reused element.
64
+
65
+ For direct manipulation, preserve the position reached by the user. Whether a release should preserve velocity, overshoot, or snap is a local perceptual decision; no spring parameter follows from this ownership model.
66
+
67
+ ## Platform-Specific Guidance
68
+
69
+ CSS events, Web Animations promises, framework unmount hooks, and native gesture callbacks have different lifecycle semantics. Bind them through the same declared policy without claiming interchangeable APIs. Coordinate reduced-motion settlement through [Accessible Motion](accessible-motion.md).
70
+
71
+ ## Unsupported Absolutes
72
+
73
+ `cancel()` does not mean “restore the original screen.” A resolved animation promise does not prove a server operation succeeded. A reverse animation does not guarantee that focus, history, or side effects were reversed.
74
+
75
+ ## Verification Contract
76
+
77
+ Run repeated input at several points in the effect, including immediately before completion. The points are race probes, not statistically representative samples. Record request/intent identity, callback identity, final state, focused element, and remaining active effects.
78
+
79
+ Exercise normal completion, cancellation, reversal, removal, reduced-motion change, and pointer cancellation. Inject a late callback from the previous transition and verify it cannot remove or refocus the current instance. Compare the no-animation path against the same semantic outcomes.
80
+
81
+ These are unexecuted scenarios. A model test can prove callback acceptance rules in that model; actual event order and visual continuity require browser evidence. Re-review after a lifecycle adapter or animation API changes.
82
+
83
+ ## Source, License, And Attribution
84
+
85
+ Locally authored synthesis of the linked specifications, inspected 2026-09-21. No upstream implementation is copied. `consumer_reference: not_applicable` because the example specifies a proposed interaction and selects no consumer record.
86
+
87
+ ## IA Navigation
88
+
89
+ Parent: [Motion](index.md).
90
+ Next: [Rendering And Performance](rendering-and-performance.md).
@@ -0,0 +1,125 @@
1
+ ---
2
+ type: Domain Guide
3
+ title: Motion Brief
4
+ description: Author a product-owned transition contract with interruption, preference, and evidence requirements.
5
+ domain: motion
6
+ lifecycle: experimental
7
+ provenance_kind: local
8
+ ---
9
+
10
+ # Motion Brief
11
+
12
+ Primary role: motion implementation handoff template.
13
+
14
+ ## Repository Boundary
15
+
16
+ This brief records one product-owned behavior. Its timings, distances, and treatments never become reusable Layout values. Use the [Decision Tree](decision-tree.md) before filling it in.
17
+
18
+ ## Reusable Method
19
+
20
+ Complete every field, using `unknown` for missing observations and a reason for non-applicability. A blank field is not an accepted exception.
21
+
22
+ ```yaml
23
+ interaction: # a user action and the state it changes
24
+ purpose: # the information motion adds
25
+ frequency: # observed or estimated, with its basis
26
+ trigger: # input, data event, navigation, or scroll progress
27
+ semantic_owner: # who commits the real application state
28
+ presentation_owner: # who starts, retargets, cancels, and disposes motion
29
+ layout_owner: # final geometry and scroll responsibility
30
+ states: # initial, in-flight, completed, failed, cancelled
31
+ identity: # stable object or item key, if continuity is claimed
32
+ parameters: # product-local values and why they are being tried
33
+ interruption: # reverse, retarget, finish, or cancel, and from which state
34
+ focus_and_input: # entry, availability during motion, exit, fallback target
35
+ reduced_motion: # equivalent state/feedback without unnecessary movement
36
+ teardown: # navigation, removal, preference change, and stale callbacks
37
+ verification: # exact actions, expected outcomes, runtime and artifacts
38
+ observed_result: # not_run until evidence exists
39
+ boundary: # what those observations cannot establish
40
+ review_trigger: # source/API change, a failed case, or reader task
41
+ consumer_reference: not_applicable
42
+ consumer_reference_reason: This blank template selects no consumer reference record.
43
+ ```
44
+
45
+ ## Filled Example: Search Status Feedback
46
+
47
+ | Field | Example decision |
48
+ | --- | --- |
49
+ | Interaction and purpose | Submit a search; distinguish waiting, zero results, results, and failure |
50
+ | Frequency | Unknown; measure in the consuming search task |
51
+ | Semantic owner | Search controller; only the active request may replace results |
52
+ | Presentation owner | Status component; progress decoration may stop independently |
53
+ | Layout owner | Consumer's result region; [Feed](../patterns/stacking/feed.md) can own vertical repetition |
54
+ | Transition | Idle → pending → results/empty/error; a new query supersedes the old request |
55
+ | Parameters | No movement needed for the baseline; a loading treatment is an optional later hypothesis |
56
+ | Interruption | Query B supersedes query A; A's late completion is ignored |
57
+ | Focus | Remains on the initiating control unless the user moves it |
58
+ | Reduced motion | Static pending text and the same final result or error |
59
+ | Teardown | Abort where supported and reject stale completion by request identity |
60
+ | Verification | Submit A, submit B, resolve B, then resolve A; B remains presented |
61
+ | Observed result | `not_run`: illustrative contract, not captured product evidence |
62
+ | Review trigger | The product changes its request lifecycle, navigation, or status announcement |
63
+
64
+ Example handoff: `consumer_reference: not_applicable` because no profile or consumer evidence record is selected. A real consumer replaces this with its applicable repository-relative record or its own reason.
65
+
66
+ ## Scroll Story Extension
67
+
68
+ For scroll-linked scenes, fill these fields in addition to the general brief:
69
+
70
+ ```yaml
71
+ scroll_owner: document
72
+ stage_owner: # sticky containing block and offset
73
+ start_and_distance: # measured start, positive distance, zero-distance alternative
74
+ scene_ranges: # each chapter's entry, hold, exit, and semantic availability
75
+ resize_policy: # recompute geometry and fall back when content cannot fit
76
+ direct_entry: # derive state from restored scroll position without replay
77
+ static_path: # source-order reading, no script, reduced motion, explicit user choice
78
+ media_budget: # poster, dimensions, cache, decode concurrency, timeout, fallback
79
+ performance_protocol: # exact runtime, input trace, measurements and local targets
80
+ ```
81
+
82
+ See [Scroll-driven story](interaction-recipes.md#scroll-driven-story) and the [worked lab](../examples/scroll-story/README.md). A brief must distinguish view-entry triggers from continuous scroll progress.
83
+
84
+ ## Fixed-Viewport Navigation Extension
85
+
86
+ Use this instead of assuming a document scroll track when the selected chapter drives the page:
87
+
88
+ ```yaml
89
+ state_source: selected chapter ID
90
+ input_owner: # stage, exempt editable/native scroll regions, visible alternatives
91
+ gesture_policy: # wheel units/threshold/burst/reversal; swipe start/cancel/multi-touch
92
+ navigation: # chapter hashes, direct entry, Back/Forward, invalid destination
93
+ boundaries: # first/last behavior; no implicit wrap or browser-navigation trap
94
+ focus_policy: # outgoing panel focus, retained control focus, status announcement
95
+ reading_escape: # visible control, Escape, short viewport, no-script path
96
+ reduced_motion: # immediate chapter changes or a declared static alternative
97
+ teardown: # input listeners, pending state, document overflow restoration
98
+ ```
99
+
100
+ See [Full-viewport scene navigation](interaction-recipes.md#full-viewport-scene-navigation). Record ordinary document scrolling, pinned scrubbing, native snapping, and input-driven navigation as distinct choices.
101
+
102
+ ## Opinionated Guidance
103
+
104
+ Write cancellation before tuning curves. An animation completion callback should report presentation completion; it should not be the sole authority for network success, focus cleanup, or saving data.
105
+
106
+ ## Platform-Specific Guidance
107
+
108
+ Record actual browser, OS, input mode, and relevant animation-library version in the consumer's verification record. A preference query indicates a requested behavior; it does not prove the implemented alternative is comfortable.
109
+
110
+ ## Unsupported Absolutes
111
+
112
+ No fixed timing, animation technology, or one reduced-motion treatment works for every brief. A filled template is not executed evidence.
113
+
114
+ ## Verification Contract
115
+
116
+ The brief is ready to implement when every state has an owner, every interruption has a resulting state, and every acceptance claim names an observable. Execution must add artifacts and pass/fail results. Use the [Review Workflow](review-workflow.md) for findings and retesting.
117
+
118
+ ## Source, License, And Attribution
119
+
120
+ Locally authored template and fictional search scenario. The existing domain contracts provide its evidence boundary.
121
+
122
+ ## IA Navigation
123
+
124
+ Parent: [Motion](index.md).
125
+ Next: [Motion Interaction Recipes](interaction-recipes.md).