Skip to content

feat(spec): add InteractionSurface contract for keyboard-first surfaces#56

Merged
mdheller merged 15 commits intomainfrom
feat/keyboard-surface-contracts
Apr 24, 2026
Merged

feat(spec): add InteractionSurface contract for keyboard-first surfaces#56
mdheller merged 15 commits intomainfrom
feat/keyboard-surface-contracts

Conversation

@mdheller
Copy link
Copy Markdown
Contributor

@mdheller mdheller commented Apr 24, 2026

Summary

  • add a canonical keyboard-first interaction contract family to sourceos-spec
  • introduce InteractionSurface, CommandBus, FocusState, FocusTransition, and KeymapProfile as first-class typed contracts
  • add concrete example payloads and short contract-addition notes for each tranche

Files added

  • schemas/InteractionSurface.json
  • schemas/CommandBus.json
  • schemas/FocusState.json
  • schemas/FocusTransition.json
  • schemas/KeymapProfile.json
  • examples/interaction_surface.json
  • examples/command_bus.json
  • examples/focus_state.json
  • examples/focus_transition.json
  • examples/keymap_profile.json
  • docs/contract-additions/interaction-surface.md
  • docs/contract-additions/command-bus.md
  • docs/contract-additions/focus-state.md
  • docs/contract-additions/focus-transition.md
  • docs/contract-additions/keymap-profile.md

Intent

This PR places the first canonical cross-surface keyboard-navigation contract family in the correct repo: SourceOS-Linux/sourceos-spec.

The current family covers:

  • typed interaction surfaces
  • typed command routing / command-bus semantics
  • typed focus ownership state
  • typed focus transitions
  • typed keymap/modifier profile binding
  • host-boundary preservation vs mirroring vs opt-in replacement

Non-goals

  • does not yet implement Linux-side runtime behavior directly
  • does not yet define every possible browser/editor/app-local shortcut surface
  • does not yet define downstream execution-plane evidence contracts for these interaction types

Follow-up

  • bind a Linux-side implementation repo against these contracts without scattering runtime ownership across unrelated workstreams
  • keep browser / office / Mac-on-Linux streams as downstream consumers of the canon rather than separate canonical owners
  • extend the family further only when the first Linux-side binding exposes real gaps

@mdheller mdheller marked this pull request as ready for review April 24, 2026 19:10
@mdheller mdheller merged commit 3a40d6a into main Apr 24, 2026
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