Specira sample artefact. Rendered from the governed default template on a fictional company. Names, figures and dates are illustrative.All artefacts →
SAMPLE
seeded demo data · specira.ai
Specira Interaction Specifications: Governed Template Rendering
Governed template rendering reference: Interaction Specifications default v2 (draft) definition 36cd2b13…2f10
Interaction Specifications · Project artifact SPECIRA

Interaction Specifications: Dispatch Modernization

Meridian Field Services: instructional example, not project evidence

Draft · watermark policy: draft_only template interaction_specs v2 · pack: specira_default_delivery states, not pictures; wireframes own layout, this owns behavior
§1

Component State Machines

mandatory 1 decision1 evidence rule validators: every_interactive_component_has_full_state_machine · no_orphan_state_undefined_in_wireframe · state_token_references_resolve

The full machine per component; documenting only default and hover is the anti-pattern this table kills.

StateSuggestion card (the board's primary component)
defaultRank, technician code, reason chips (tokens: component tokens[1])
hoverElevation raise; the assign affordance surfaces
focusThe visible focus ring token; matches the a11y indicator (2.4.7[2])
activePress depression on assign
disabledAn ineligible candidate: greyed, the reason on hover (BR-01[3])
loadingThe skeleton while suggestions compute (§3)
errorsuggestions_unavailable renders the full-list fallback, not a broken card (error registry[4])
emptyZero eligible technicians states the reason and opens the full list (EC-01[5])

Every state the board's wireframe implies has a machine here; the disabled and empty states the wireframe only hints at are specified, not left to the build.

§2

Form Validation Interaction

mandatory 1 decision1 evidence rule validators: validation_rules_cited_not_restated · validation_timing_specified_per_field · error_messages_explain_and_recover_never_blame

The rules live in business_rules; this section owns timing and placement.

FieldTrigger · placementRule (cited)
Job address / dates On blur; error adjacent; recovery clears on valid entry VR-04 cross-field[3]: the "end after start" bound lives there
reason_code (override) On submit (a select, no keystroke) VR-03 closed set[3]
Position skew Not a form field; validated server-side; noted so the intake team does not expect a client message VR-02[3]

Error-message discipline: "Choose an end time after the start time," never "Invalid input"; success is silent where the field's validity is obvious.

§3

Loading Patterns

mandatory 1 decision1 evidence rule validators: loading_pattern_cites_latency_budget · loading_pattern_names_response_time_threshold · loading_states_pair_empty_and_error
SurfacePattern · thresholdBudget (cited)
Board initial load Skeleton (layout-bearing: the grid renders before data) · under the 1-second direct-manipulation feel NFR-P1[6]
Suggestion computation Spinner inside the card · instantaneous-to-1s; past the 2-second boundary it degrades to the full list (FLW-01[7]): the empty-and-error pairing NFR-P2[6]
Assignment write Optimistic: the card renders assigned immediately, rolling back on stale_version (error registry[4], reconciliation[8]) success near-certain; perceived latency decouples from the round trip

Every pattern cites its budget; none assumes a number.

§4

Transitions & Motion

mandatory 1 decision1 evidence rule validators: motion_is_purposeful_not_decorative · motion_duration_from_design_tokens · motion_has_reduced_motion_fallback
MotionPurpose · durationReduced-motion fallback (in this entry)
Suggestion panel slide-in on job select Continuity (the panel comes from the selected row); duration/easing from the motion tokens (motion tokens[1]) An instant cross-fade, no translate (reduced motion[2])
Stale-badge pulse on a disconnected board Feedback (attention to staleness) A static badge, no pulse

Decorative motion: none; a transition without a purpose was cut at review. Every motion carries its fallback; none is a follow-up ticket.

§5

Keyboard Shortcuts

conditional · power-user shortcuts exist, ENGAGED 1 decision1 evidence rule validators: shortcut_map_has_no_reserved_chord_conflicts · shortcuts_have_discoverability
ChordActionConflict check
J / KMove job selection No OS/browser/screen-reader conflict
EnterAssign the top suggestionClear
OOpen the override panelClear
/Focus search Scoped to the board canvas so it does not steal the browser quick-find

Discoverability: "?" opens the shortcut sheet; each is hinted in its control's tooltip. No reserved-chord collision; the conflict check ran and is recorded.

§6

Focus Management

mandatory 1 decision1 evidence rule validators: focus_management_cites_a11y_contract · focus_order_matches_logical_order
InteractionFocus rule (cites the a11y contract)
Route → exception-review view Focus lands on the view heading (2.4.3 focus order[2])
Override modal Focus traps inside on open, restores to the triggering card on close (the dialog contract, modal contract[2], not re-specified here)
Live position updates A POLITE live region (announced without stealing focus), the high-risk surface the a11y mapping named (4.1.3[2])

Focus order matches the visual grid; the indicator is the design system's focus token. Every rule cites its contract; none re-derives the dialog mechanics.

§7

Open Questions

mandatory1 decision
QuestionOwnerAnswer byBlocks
Does the "/" search shortcut scope conflict with a screen-reader user's expectation of the browser find (the canvas-scoping needs an AT test to confirm)? UX owner with the QA owner At the accessibility audit The shortcut map's search row only
Refs

References & Package Contents

In the Specira workspace

specira [1] Design system brief: component tokens, motion tokens app.specira.ai/projects/dispatch-modernization/artifacts/design-system-brief
specira [2] Accessibility requirements: 2.4.3, 2.4.7, 4.1.3, the modal contract, reduced motion app.specira.ai/projects/dispatch-modernization/artifacts/accessibility-requirements
specira [3] Business rules: BR-01, VR-02, VR-03, VR-04 (the rules, cited) app.specira.ai/projects/dispatch-modernization/artifacts/business-rules
specira [4] API contracts: the error registry (stale_version, suggestions_unavailable) app.specira.ai/projects/dispatch-modernization/artifacts/api-contracts#errors
specira [5] Edge case analysis: EC-01 the empty set app.specira.ai/projects/dispatch-modernization/artifacts/edge-case-analysis#ec-01
specira [6] NFR catalog: NFR-P1, NFR-P2 (the latency budgets) app.specira.ai/projects/dispatch-modernization/artifacts/nfr-catalog
specira [7] Process flows: FLW-01 the 2-second degradation boundary app.specira.ai/projects/dispatch-modernization/artifacts/process-flows#flw-01
specira [8] Real-time architecture: the optimistic reconciliation app.specira.ai/projects/dispatch-modernization/artifacts/realtime-architecture#reconciliation
Generated by Specira · template interaction_specs v2 (draft) · pack specira_default_delivery lineage 36cd2b13…2f10 · page 1 of 5