evidence · 7.4 KiB

interaction-contract.md

Committed at docs/research/handheld-ux/interaction-contract.md. This is what grounds the requirements that cite it.

Open raw source

Portrait visual and interaction contract

This contract is a successor-facing constraint, not a claim that its proposed pixels are shipped. Values are in logical panel pixels for the 568×1232 portrait mode. A native grim frame establishes composition; camera and real-finger checks establish the separate optical and reachability gates.

Visual tokens

TokenCurrent evidence / proposed ruleAcceptance methodEvidence classCitationOpen gate
CanvasDark, stable background behind launcher content; preserve the persistent 56px top bar.Native frame is 568×1232 and bar remains visible with keyboard.nativedocs/evidence/launcher-gestures/integrated-injected/keyboard-visible.pngPanel scanout/optical contrast UNVERIFIED.
TitleOne page title, 40–44px visual role; one short state line below it.Title/state remain distinct at keyboard-visible height.nativedocs/evidence/launcher-gestures/integrated-injected/keyboard-visible.pngPhysical readability UNVERIFIED.
CardCard title 30–34px, hint 19–22px; content inset at least 24px; no essential text only in color.Native screenshot plus text/focus state review.nativedocs/evidence/offline-wifi-image/help.pngOptical readability UNVERIFIED.
Spacing8px micro-gap, 16px control gap, 24px content inset; retain a clear gap between cards and footer.Inspect native frame at full resolution.nativedocs/evidence/launcher-gestures/integrated-injected/overview.pngFuture card layout must remeasure.
TargetsPrimary controls are at least 56px tall; retain visible Previous, Back, Next and the persistent controls.Host geometry review and finger capture.native, real-fingerdocs/evidence/launcher-gestures/real-finger/README.mdAll-edge reachability UNVERIFIED.
StateFocus has a text/state cue; pressed, loading, empty, stale, failure, EOF, and cancelled states name a next action.Successor fixture plus native capture for each new state.injecteddocs/evidence/network-video/installed-controls/README.mdCross-surface state wording UNVERIFIED.
Keyboard viewportKeep an explicit Back/fallback route above the shown keyboard; do not place essential controls in its reserved lower region.Shown keyboard native frame and real-finger sequence.native, real-fingerdocs/evidence/shell-real-touch-keyboard/README.mdExact physical reach envelope UNVERIFIED.
RoutePrimary ownerVisible fallbackRequired statesSuccessor / dependencyOpen gate
Appslauncher/catalogBack closes the overlay to current workloading, empty catalog, launch failureshell launcher/catalogPhysical catalog readability UNVERIFIED.
Windows / overviewtouch-launcher-gestures-overviewBack/down returns to Apps; persistent Apps opens catalogloading, empty, stale, helper failurecatalog helper; card architectureStale/empty board result UNVERIFIED.
Cardsthe-shell-manages-apps-as-cardsButton entry plus Back/Home recoveryunavailable/private content, refusal to closecard composition decisionEntire live-card route UNVERIFIED.
Keyboardshell keyboardKeyboard control and Back/Home remain visibleshown, hidden, focused app exitswvkbd and launcher viewportFull drag/reach UNVERIFIED.
Systemshell system controlsCancel returns to shellconfirmation, denial/failure, reboot returnprivileged action helperCold USB-powered recovery timing UNVERIFIED.
Stop / EOFthe-shell-plays-network-videoHome/Apps after cleanupStop, EOF, network failurevideo session controllerNetwork failure treatment UNVERIFIED.
Helplauncher/catalogBack returns to Appspage bounds, empty catalog remains recoverablelauncher catalogFocused real-finger Help test UNVERIFIED.

Motion and accessibility acceptance

InteractionRequired behaviorMeasured budget / proofReduced-motion behaviorOpen gate
Page releaseA completed page or overview release settles in at most 200ms CPU-side release-to-final-submit; report wall and process-CPU measures separately.Existing injected matrix: 41 settled transitions, max 163ms wall.Settle immediately only after preserving the same page/card result and visible state.Real-finger latency and scanout UNVERIFIED.
Card finger trackingThe future live card visibly follows the finger, with continuous tracking measured separately from release.Card owner must record frame/input/memory evidence before acceptance.Reduce decorative interpolation, never remove live visual, finger tracking, expand, close/refusal, or recovery.UNVERIFIED.
Status and focusLabels explain focused, loading, empty, stale, failed, cancelled, Stop and EOF states without color alone.Fixture covers state transitions; native capture records visible text.Same text and fallback stay present.Cross-surface test/capture UNVERIFIED.
ReachabilityEvery gesture has a visible button, Back, or Home alternative.Flow matrix routes every named control.No gesture-only operation.Physical all-edge review UNVERIFIED.

Review record

See design-review.md for the completed coordinator review of the native captures and proposed layouts. That review does not substitute for the physical readability and interaction gates listed above.

Measurable review checks

CheckBaseline / thresholdHost review methodPhysical gate
Text contrastCurrent source colors calculate to 16.96:1 title (#f8fafc/#111827), 11.95:1 secondary (#cbd5e1/#111827), 9.65:1 card-title (#ffffff/#24495a), 6.50:1 card-hint (#cbd5e1/#24495a), and 9.35:1 error (#fca5a5/#111827). Successors must retain at least 4.5:1 for text over its actual fill.Compute sRGB relative luminance from the source colors and keep the calculation with the source test.Camera/glass review checks glare does not make the measured design contrast unusable.
FocusThe selected window currently changes its card fill and adds the focused state text. A successor must use both a non-color state label and a visible shape/border/fill change.State-machine fixture compares unfocused/focused render metadata and asserts the label/state change.Real-finger selection capture.
PressedPressing a card must show a bounded visual response before launch/focus; cancellation must restore the original card without launch.Pointer/touch fixture checks press, moved-out cancel, and release-on-same-card transitions.Real-finger tap/cancel capture.
Error and recoveryUser-facing messages are short, avoid raw paths/GLib text, and name an available next action such as Back, Apps, Home, Retry, or Cancel.Fixture asserts normalized state ID, copy key, and visible fallback for launch/helper/system/video states.Integrated board state capture.
Reduced motionWith motion reduced, no decorative interpolation is required, but page/card result, finger tracking, expansion, close/refusal, focus, and all button fallbacks remain.Card/gesture state-machine fixtures run with animation duration zero and assert identical end state and recovery controls.Physical preference/flag exercise once implemented.

The measurements above are source-color and host-state checks. They do not measure panel luminance, scanout, or camera exposure.