Repository navigation
input_interaction_spec
Date: 2026-03-01 Status: Canonical interaction contract Priority: Pre-renderer/WGPU required
Related:
ASPECT_INPUT.md../2026-02-28_ux_contract_register.md../subsystem_focus/focus_and_region_navigation_spec.md../aspect_command/command_surface_interaction_spec.md../system/register/input_registry_spec.md../../design/KEYBINDINGS.md-
../../TERMINOLOGY.md—ActionRegistry,InputRegistry
This spec defines the canonical contract for how hardware input events become routed intents in Graphshell.
It covers:
- what the Input aspect owns and what it does not own,
- the input context stack and how context switches,
- how raw events are resolved to bound actions,
- chord and sequence recognition rules,
- remapping and profile contract,
- cross-surface routing priority,
- fallback and degraded-mode behavior,
- diagnostics obligations,
- acceptance criteria.
This spec covers input routing, not semantic action meaning. Action meaning belongs to
ActionRegistry and the Command aspect. Focus advancement belongs to the Focus subsystem.
Canvas-space pointer interaction (hit testing, drag, lasso) belongs to the Canvas spec.
- hardware event ingestion: keyboard, pointer, gamepad, touch
- input context stack: which surface and mode owns input at any moment
- keybinding/button-binding resolution within the active context
- chord recognition and sequence detection
- user-defined remapping configuration
- dispatch of resolved bindings to the Command aspect or Focus subsystem
- unresolved pointer event passthrough to the canvas or active viewer
- action semantics — owned by
ActionRegistry - focus routing — owned by the Focus subsystem
- canvas-space pointer semantics (hit testing, drag, lasso) — owned by Canvas
- command availability and targeting — owned by
ActionRegistry+ Command aspect - viewer-internal input handling — owned by the viewer (Servo, Wry, EmbeddedEgui viewers may consume events before the Input aspect sees them)
An input context is a named scope that determines:
- which bindings are active,
- which raw events are intercepted before passthrough,
- whether global bindings remain available or are suppressed.
| Context | Active when | Global bindings |
|---|---|---|
Normal |
default application state | all active; bare Escape has no global mode-toggle meaning |
TextEntry |
omnibar, search field, inline editor, any text input is active | most suppressed; Escape clears/unfocuses/exits according to the owning surface contract |
Modal |
a blocking dialog, confirmation surface, or overlay that requires resolution | all suppressed except modal-specific |
GamepadNav |
gamepad input mode is active (radial menu / D-pad navigation) | gamepad-specific active; keyboard still resolves |
CommandPalette |
command palette or radial menu is open | palette-specific active; Escape exits |
GraphDrag |
pointer button held for node drag or lasso in canvas | drag/lasso-specific; most keyboard suppressed |
EmbeddedContent |
keyboard focus is inside a Servo webview or embedded viewer | webview-local events consumed by viewer; host escape path must remain |
- The input context stack has exactly one active context at a time.
- Opening a surface pushes a new context; closing restores the prior context.
- Context stack transitions are deterministic — no implicit context changes from hover or pointer position alone.
- A context pushed without a matching pop is a correctness bug.
Invariant: EmbeddedContent context must always expose at least one host-reachable
escape binding (e.g. Escape or a configurable host-focus-reclaim binding) that the
embedded viewer cannot suppress.
Invariant: TextEntry and Modal suppress global bindings exactly — they do not
suppress each other's entry/exit keys. A modal opened while in TextEntry must produce a
clean context push.
This table is canonical and mirrored verbatim in:
subsystem_focus/focus_and_region_navigation_spec.mdsubsystem_ux_semantics/ux_tree_and_probe_spec.md
| Transition / surface state | Capture owner while active | Required escape path(s) | Deterministic focus return target |
|---|---|---|---|
| Modal opened from any host region | Modal surface (Modal context) |
Escape or explicit dismiss action |
Stored pre-modal semantic region if still valid; otherwise next valid visible region |
| Modal dismissed/confirmed | Focus router on pop from Modal context |
Dismiss action completion | Same region/control anchor captured on modal open (or deterministic fallback as above) |
| Command palette or radial opened | Command surface (CommandPalette context) |
Escape, click-away dismiss, or explicit close action |
Prior semantic region/control captured at open |
| Command palette or radial dismissed | Focus router on pop from CommandPalette context |
Dismiss action completion | Prior captured region/control; must not default to omnibar |
| Omnibar/search explicit focus acquisition | Text-entry control (TextEntry context) |
Escape, explicit unfocus, or region-cycle command |
Prior semantic region/control captured before text-entry capture |
| Graph-owned transient management surface (for example Overview Plane, tag panel, facet rail, graph search shell) | Owning graph/control surface context |
Escape or explicit close action |
Prior graph semantic region/control or focused graph view if still valid; otherwise next valid visible region |
| Embedded content focused | Embedded viewer (EmbeddedContent context) with host escape guarantee |
Host-focus-reclaim binding (Escape or configured equivalent) |
Last host semantic region before embedded capture |
No dismissible surface or capture active (Normal) |
None | No-op unless a scope-owned non-destructive back/cancel rule explicitly applies | Existing focus owner remains unchanged; Escape must not toggle persistent mode or launch settings/control surfaces |
Region-cycle command (F6) while not modal-captured |
Focus router | Repeated region-cycle / reverse cycle binding | Next/previous visible landmark in deterministic order; wraps predictably |
Invariant: Any transition that violates this table is a correctness bug and must emit
ux:navigation_violation or ux:contract_warning with enough context to identify transition
source and failed return target.
Invariant: Escape is a dismiss/back key, not a persistent mode toggle.
If no dismissible surface or scoped back path is active, bare Escape defaults to no-op.
Top-level shell overview, settings, or view-mode changes require their own explicit bindings.
For each incoming hardware event, the Input aspect executes in order:
- Check whether the active viewer consumes the event first (Servo/Wry/EmbeddedEgui handle their own keyboard/pointer events before host routing). If consumed, stop.
- Check the active input context's binding table for an exact match.
- Check whether the event extends an in-progress chord (§4.2).
- Check whether the event resolves a pending sequence (§4.3).
- If a binding is found, dispatch to the Command aspect with the resolved
ActionId. - If no binding is found in the active context, check context-independent global bindings
(e.g.
F6for region cycling, which must remain accessible from all contexts exceptModal). - If still unresolved, pass the raw event through to the active canvas or viewer for canvas-space interpretation.
A chord is a binding that requires two or more keys held simultaneously.
Rules:
- Chords are always specified as an ordered modifier + trigger set (e.g.
Ctrl+Shift+K). - Modifier keys (
Ctrl,Shift,Alt,Meta) are recognized as chord participants, not as standalone triggers unless explicitly bound alone. - Partial chord state (modifiers held but trigger not yet pressed) must not fire any action.
- Chord resolution is immediate when the trigger key is pressed; no timeout.
A sequence is a binding that requires two or more distinct key presses in order, each pressed and released before the next.
Rules:
- Sequences have a configurable timeout; the default is 1000 ms between presses.
- If the timeout expires mid-sequence, the partial sequence is abandoned and each key is re-evaluated as a standalone event from that point.
- Sequences only fire on completion; partial sequences do not dispatch partial actions.
- Sequences and chords do not interact: a chord mid-sequence resets the sequence.
When multiple bindings could match the same event:
- Context-specific bindings take priority over global bindings.
- More specific bindings (longer chord or sequence) take priority over less specific ones.
- If two bindings of equal specificity conflict, the one registered later wins, and a
CHANNEL_INPUT_BINDING_CONFLICTdiagnostic is emitted atWarnseverity.
Invariant: The Input aspect owns event resolution and routing, but does not own canvas
selection, lasso, zoom, or edge-focus semantics. Those meanings remain in
canvas/graph_node_edge_interaction_spec.md and reducer-owned intents.
Invariant: For a pointer gesture sequence, ownership is exclusive once resolved
(GraphDrag/canvas path, viewer path, or command/modal path). Mid-gesture reclassification
from unrelated hover/state drift is forbidden.
Invariant: Edge inspection routing (SetHighlightedEdge / ClearHighlightedEdge) is
input dispatch only; traversal-history mutation is not permitted in Input dispatch paths.
User-defined remapping allows binding tables to be modified at runtime without recompilation.
Rules:
- Remapping operates on named
InputProfileobjects registered inInputRegistry. - The active profile is selected globally and applies to the
Normalcontext by default. - Per-context profile overrides are supported (e.g. gamepad-specific profile activates with
GamepadNavcontext).
Invariant: Remapping may not suppress the host-focus-reclaim escape path from
EmbeddedContent context.
Invariant: Remapping may not remove bindings that are marked system-reserved in the
binding table. System-reserved bindings are a fixed set declared by Graphshell core
(e.g. Escape exits Modal; F6 cycles regions).
Invariant: A remapping that produces a conflict between two active bindings must be detected at profile activation time and reported as a diagnostic, not silently resolved at event time.
- Profiles are registered in
InputRegistryat startup (native mods) or at runtime (WASM mods). - Profile changes take effect immediately; no restart is required.
- The active profile name is persisted in app preferences.
When multiple surfaces are active (e.g. graph pane + viewer pane + command palette), the Input aspect routes using the following priority order:
| Priority | Surface | Condition |
|---|---|---|
| 1 | Modal / blocking surface |
Modal context active |
| 2 | Command palette / radial menu |
CommandPalette context active |
| 3 | Omnibar / text entry |
TextEntry context active |
| 4 | Active viewer (Servo/Wry) |
EmbeddedContent context active; viewer-local event handling runs first |
| 5 | Active canvas pane |
Normal or GraphDrag context; canvas-space pointer passthrough |
| 6 | Workbench chrome | fallback for unresolved events with no canvas or viewer active |
Invariant: A lower-priority surface must never intercept an event that a higher-priority surface has claimed. Event consumption is exclusive per event.
Graphshell detects active input mode based on the most recently active input device:
- gamepad button/axis activity → activates
GamepadNavcontext - keyboard/pointer activity → deactivates
GamepadNavcontext if it was active
Mode transitions are immediate. The user can switch freely between keyboard/pointer and gamepad mid-session.
Gamepad bindings use the same InputProfile mechanism as keyboard bindings.
- D-pad directions map to navigation actions (focus advance, radial menu sector selection).
- Analog sticks map to scroll / camera pan in canvas or viewer panes.
- Shoulder buttons and face buttons map to
ActionIdentries. - Trigger axes may be mapped to actions or treated as analog; no implicit analog → discrete conversion unless the binding specifies a threshold.
In GamepadNav context, the radial menu is the primary command surface.
- D-pad or left stick selects a radial sector.
- Confirm button (A / Cross) invokes the selected action.
- Cancel button (B / Circle) closes the radial menu without action.
- The radial menu opening/closing is a context push/pop (
CommandPalettecontext).
| Channel | Severity | Condition |
|---|---|---|
CHANNEL_INPUT_BINDING_CONFLICT |
Warn |
Two bindings of equal specificity conflict on the same event |
CHANNEL_INPUT_CONTEXT_PUSH |
Info |
Context stack push |
CHANNEL_INPUT_CONTEXT_POP |
Info |
Context stack pop |
CHANNEL_INPUT_CONTEXT_LEAK |
Error |
Context pushed without matching pop (stack leak detected) |
CHANNEL_INPUT_ESCAPE_SUPPRESSED |
Error |
Host-focus-reclaim escape is suppressed in EmbeddedContent context |
CHANNEL_INPUT_SEQUENCE_TIMEOUT |
Info |
In-progress sequence timed out and was abandoned |
CHANNEL_INPUT_DISPATCH_US_SAMPLE |
Info |
Sampled event-to-dispatch latency in microseconds |
CHANNEL_INPUT_REMAP_CONFLICT |
Warn |
Profile activation produced a binding conflict |
All channels follow the Graphshell diagnostics channel schema (severity field required;
Info for normal observability, Warn for recoverable policy violations, Error for
correctness invariant breaks).
- per-context profile override selection in settings surface,
- chord timeout configurability,
- sequence timeout configurability per-profile,
- richer gamepad axis mapping (dead zones, curves, per-game profiles),
- input macro recording (sequence → action batch, gated on
ActionRegistrybatch support), - input replay for diagnostics (record event stream, replay for regression testing).
- voice input context and speech-to-action pipeline,
- eye-tracking integration as a pointer supplement,
- adaptive binding suggestions based on usage patterns (AgentRegistry),
- hardware-specific input packs distributed as WASM mods.
- Exactly one input context is active at all times; context stack is never empty.
- Chords and sequences do not fire partial actions.
-
EmbeddedContentcontext always preserves a host-reachable escape path. -
Modalcontext suppresses global bindings completely except its own exit path. - Binding conflicts are detected and reported as diagnostics, not silently resolved.
- Remapping cannot suppress system-reserved bindings.
- Gamepad and keyboard/pointer contexts switch immediately on device activity.
- All input routing is diagnosable through the defined channel set.
- Input dispatch latency is sampled and available in diagnostics.
- Input-to-canvas ownership boundaries for lasso/zoom/edge-focus are explicit and deterministic.
- Home
-
design_docs
-
archive_docs
- checkpoint_2026-01-29
- checkpoint_2026-02-01
-
checkpoint_2026-02-09
- [Claude ANALYSIS 2.9.26](design_docs/archive_docs/checkpoint_2026-02-09/Claude ANALYSIS 2.9.26)
- [Gemini Graphshell Analysis 2.9.26](design_docs/archive_docs/checkpoint_2026-02-09/Gemini Graphshell Analysis 2.9.26)
- GRAPHSHELL_CHANGELOG
- checkpoint_2026-02-10
- checkpoint_2026-02-11
- checkpoint_2026-02-12
- checkpoint_2026-02-14_no_legacy_cleanup
-
checkpoint_2026-02-16
- 2026-02-11_camera_zoom_plan
- 2026-02-11_center_camera_plan
- 2026-02-11_graph_persistence_plan
- 2026-02-11_phase1_refinement_plan
- 2026-02-11_search_filtering_plan
- 2026-02-11_thumbnails_favicons_plan
- 2026-02-12_architecture_reconciliation
- 2026-02-12_egui_tiles_implementation_guide
- 2026-02-12_egui_tiles_implementation_plan
- 2026-02-12_persistence_ux_plan
- 2026-02-12_physics_selection_plan
- 2026-02-12_servoshell_inheritance_analysis
- 2026-02-13_committed_vs_planned_architecture
- 2026-02-13_graph_tile_architecture_research
- 2026-02-13_graph_tile_unification_plan
- 2026-02-14_graph_tile_parity_research
- 2026-02-14_servo_architecture_constraints
- 2026-02-15_navigation_control_plane_plan
- NAVIGATION_NEXT_STEPS_OPTIONS
- SERVO_INTEGRATION_BRIEF
- checkpoint_2026-02-17
- checkpoint_2026-02-19
- checkpoint_2026-02-20
- checkpoint_2026-02-21
- checkpoint_2026-02-22
- checkpoint_2026-02-23
-
checkpoint_2026-02-24
- 2026-02-11_performance_optimization_plan
- 2026-02-16_architecture_and_navigation_plan
- 2026-02-18_edge_operations_and_cmd_palette_plan
- 2026-02-19_graph_ux_polish_plan
- 2026-02-19_layout_advanced_plan
- 2026-02-20_cross_platform_sync_and_extension_plan
- 2026-02-24_input_surface_polish_plan
- 2026-02-24_step5_5_workspace_access_control
- 2026-02-24_sync_logic_validation_plan
- 2026-02-24_workspace_routing_polish_plan
- GRAPHSHELL_P2P_COLLABORATION
-
checkpoint_2026-02-25
-
stubs
- 2026-02-21_control_panel_async_scaling
- 2026-02-25_planning_register_backlog_and_copilot_guides
- 2026-02-25_subsystem_accessibility
- 2026-02-25_subsystem_diagnostics
- 2026-02-25_subsystem_history_temporal_integrity
- 2026-02-25_subsystem_persistence_integrity
- 2026-02-25_subsystem_security_access_control
- IMPLEMENTATION_ROADMAP.pointer_stub
- 2026-02-24_immediate_priorities
- 2026-02-24_spatial_accessibility_plan
- 2026-02-25_accessibility_contracts_diagnostics_and_validation_strategy
- 2026-02-25_backlog_ticket_stubs
- 2026-02-25_copilot_implementation_guides
- 2026-02-25_planning_register_lane_sequence_receipt
- IMPLEMENTATION_ROADMAP
-
stubs
- checkpoint_2026-02-26
-
checkpoint_2026-02-27
-
graphshell_docs
- technical_architecture
- testing
- 2026-02-27_planning_register_historical_tail_archive_receipt
-
graphshell_docs
-
checkpoint_2026-03-01
- 2026-02-27_ux_baseline_done_definition
- 2026-02-28_current_milestone_ux_contract_checklist
- 2026-02-28_ux_issue_domain_map
- 2026-03-01_embedder_debt_host_ui_boundary_ownership_receipt
- 2026-03-01_issue_171_compositor_chaos_mode_receipt
- 2026-03-01_issue_175_content_open_routing_receipt
- 2026-03-01_issue_180_bridge_diagnostics_wishlist_receipt
- 2026-03-01_issue_180_bridge_probe_instrumentation_receipt
- 2026-03-01_issue_180_bridge_spike_export_harness_receipt
- 2026-03-01_issue_180_bridge_spike_run_01_receipt
- 2026-03-01_issue_180_bridge_spike_run_02_receipt
- 2026-03-01_issue_180_bridge_spike_run_03_receipt
- 2026-03-01_issue_180_bridge_spike_sample_schema_receipt
- 2026-03-01_issue_180_gl_to_wgpu_bridge_baseline_receipt
- 2026-03-01_issue_180_scissor_box_restoration_fix_receipt
- checkpoint_2026-03-05
- checkpoint_2026-03-07
-
checkpoint_2026-03-10
-
graphshell_docs
- implementation_strategy
- 2026-03-10_planning_register_audit_cleanup_receipt
-
graphshell_docs
-
checkpoint_2026-03-18
-
graphshell_docs
- implementation_strategy
- 2026-03-18_event_log_fact_store_query_architecture
- 2026-03-18_fact_query_type_sketch
- node_navigation_history_spec
-
graphshell_docs
-
checkpoint_2026-03-19
-
graphshell_docs
- implementation_strategy
-
graphshell_docs
- checkpoint_2026-03-21
-
checkpoint_2026-03-22
-
graphshell_docs
- implementation_strategy
-
graphshell_docs
-
checkpoint_2026-03-27
-
graphshell_docs
- technical_architecture
-
graphshell_docs
-
checkpoint_2026-03-28
-
graphshell_docs
- implementation_strategy
-
graphshell_docs
-
checkpoint_2026-04-01
-
graphshell_docs
-
implementation_strategy
-
graph
- 2026-02-20_node_badge_and_tagging_plan
- 2026-02-22_multi_graph_pane_plan
- 2026-02-23_graph_interaction_consistency_plan
- 2026-02-23_udc_semantic_tagging_plan
- 2026-02-25_progressive_lens_and_physics_binding_plan
- 2026-03-05_hybrid_graph_view_overview_atlas_plan
- 2026-03-31_node_badge_and_tagging_follow_on_plan
-
graph
-
implementation_strategy
-
graphshell_docs
-
checkpoint_2026-04-02
-
graphshell_docs
- implementation_strategy
-
graphshell_docs
-
checkpoint_2026-04-03
-
graphshell_docs
- implementation_strategy
-
graphshell_docs
-
checkpoint_2026-04-06
-
graphshell_docs
-
implementation_strategy
- subsystem_ux_semantics
-
implementation_strategy
-
graphshell_docs
-
checkpoint_2026-04-07
-
graphshell_docs
-
implementation_strategy
- subsystem_ux_semantics
-
implementation_strategy
-
graphshell_docs
-
checkpoint_2026-04-09
-
wr-wgpu-notes
- 2026-03-01_webrender_wgpu_renderer_implementation_plan
- 2026-04-03_p6_progress_report
- 2026-04-03_p8_progress_report
- 2026-04-04_p10_progress_report
- 2026-04-04_p9_progress_report
- 2026-04-05_p11_progress_report
- 2026-04-05_p12_progress_report
- 2026-04-07_p13_progress_report
- 2026-04-07_p14_progress_report
- 2026-04-08_live_full_reftest_confirmation
- draw_context_plan
- PROGRESS
- project_wgpu_backend
- servo_wgpu_integration
- shader_translation_journal
- texture_cache_cleanup_plan
- typed_pipeline_metadata_plan
- wasm-portability-checklist
- wgpu-backend-minimal-plan
- wr_wgpu_debug_plan
- wr_wgpu_diagnostics_archive
-
wr-wgpu-notes
-
checkpoint_2026-04-15
-
graphshell_docs
-
implementation_strategy
- aspect_render
- graph
- system
- workbench
-
implementation_strategy
-
graphshell_docs
-
checkpoint_2026-04-17
-
graphshell_docs
- implementation_strategy
-
verse_docs
- technical_architecture
-
graphshell_docs
-
checkpoint_2026-04-19
-
graphshell_docs
- implementation_strategy
-
graphshell_docs
-
checkpoint_2026-04-20
- graphshell_docs
-
verso_docs
- implementation_strategy
-
checkpoint_2026-04-21
-
graphshell_docs
-
implementation_strategy
- aspect_control
- system
-
implementation_strategy
-
graphshell_docs
-
checkpoint_2026-04-23
-
graphshell_docs
- implementation_strategy
-
graphshell_docs
-
graphshell_docs
- design
-
implementation_strategy
- aspect_command
- aspect_control
- aspect_distillery
- aspect_input
- aspect_projection
-
aspect_render
- 2026-03-03_servo_wgpu_upgrade_audit_report
- 2026-03-12_compositor_expansion_plan
- 2026-03-23_webrender_wgpu_backend_implementation_plan
- 2026-03-27_egui_retained_state_efficiency_and_physics_worker_evaluation_plan
- 2026-03-27_physics_spike_metrics
- 2026-04-10_wgpu_gui_bridge_interop_architecture_plan
- 2026-04-12_rendering_pipeline_status_quo_plan
- 2026-04-30_renderer_and_host_refactor_plan
- ASPECT_RENDER
- frame_assembly_and_compositor_spec
- gl_to_wgpu_plan
- render_backend_contract_spec
- running_app_state_boundary_spec
- theme_and_tokens_spec
-
graph
- 2026-02-24_physics_engine_extensibility_plan
- 2026-02-25_doi_fisheye_plan
- 2026-02-27_roadmap_lane_19_readiness_plan
- 2026-02-27_viewdimension_acceptance_contract
- 2026-03-11_graph_enrichment_plan
- 2026-03-14_canvas_behavior_contract
- 2026-03-14_edge_operability_matrix
- 2026-03-14_edge_visual_encoding_spec
- 2026-03-14_graph_relation_families
- 2026-03-21_edge_family_and_provenance_expansion_plan
- 2026-03-21_edge_payload_type_sketch
- 2026-04-01_swatch_spec_extraction_plan
- 2026-04-02_parry2d_scene_enrichment_plan
- 2026-04-02_scene_mode_ux_plan
- 2026-04-03_damping_profile_follow_on_plan
- 2026-04-03_edge_routing_follow_on_plan
- 2026-04-03_layout_backend_state_ownership_plan
- 2026-04-03_layout_transition_and_history_plan
- 2026-04-03_layout_variant_follow_on_plan
- 2026-04-03_node_glyph_spec
- 2026-04-03_physics_preferences_surface_plan
- 2026-04-03_physics_region_plan
- 2026-04-03_semantic_clustering_follow_on_plan
- 2026-04-03_twod_twopointfive_isometric_plan
- 2026-04-03_wasm_layout_runtime_plan
- 2026-04-10_vello_scene_canvas_rapier_scene_mode_architecture_plan
- 2026-04-11_graph_canvas_crate_plan
- 2026-04-13_graph_canvas_phase0_plan
- 2026-04-19_layouts_as_pluggable_mods_plan
- 2026-04-19_step5_spatial_pattern_layouts_plan
- agent_derived_edges_spec
- facet_pane_routing_spec
- faceted_filter_surface_spec
- force_layout_and_barnes_hut_spec
- frame_graph_representation_spec
- GRAPH
- graph_backlog_pack
- graph_node_edge_interaction_spec
- layout_algorithm_portfolio_spec
- layout_behaviors_and_physics_spec
- multi_view_pane_spec
- node_badge_and_tagging_spec
- petgraph_algorithm_utilization_spec
- semantic_tagging_and_knowledge_spec
- view_dimension_spec
- navigator
-
shell
- 2026-04-03_shell_command_bar_execution_plan
- 2026-04-14_iced_host_migration_execution_plan
- 2026-04-17_chrome_port_cleanup_plan
- 2026-04-19_graph_canvas_input_accessibility_followon_plan
- 2026-04-20_configurability_sweep_phase2_plan
- 2026-04-24_blitz_shaped_chrome_scoping
- 2026-04-24_graphshell_runtime_crate_plan
- 2026-04-24_iced_content_surface_scoping
- 2026-04-25_servo_into_verso_plan
- 2026-04-27_gpui_host_integration_plan
- 2026-04-28_egui_tiles_retirement_plan
- 2026-04-28_iced_jump_ship_plan
- 2026-04-29_gpui_research_lanes
- iced_agent_pane_spec
- iced_browser_amenities_spec
- iced_command_palette_spec
- iced_composition_skeleton_spec
- iced_node_finder_spec
- iced_omnibar_spec
- search_providers_and_fuzzy_spec
- SHELL
- shell_backlog_pack
- shell_composition_model_spec
- shell_overview_surface_spec
- social
- subsystem_accessibility
- subsystem_diagnostics
- subsystem_focus
-
subsystem_history
- 2026-03-08_unified_history_architecture_plan
- 2026-03-18_mixed_timeline_contract
- 2026-04-02_bookmarks_import_plan
- 2026-04-02_browser_history_import_plan
- 2026-04-09_owner_scoped_temporal_branching_follow_on
- 2026-04-11_browser_import_normalized_carrier_sketch
- 2026-04-17_graph_memory_architecture_note
- 2026-04-21_graph_runtime_projection_layer_plan
- edge_traversal_spec
- history_timeline_and_temporal_navigation_spec
- node_audit_log_spec
- SUBSYSTEM_HISTORY
- subsystem_mods
- subsystem_security
- subsystem_storage
-
subsystem_ux_semantics
- 2026-02-28_ux_contract_register
- 2026-03-01_automated_ux_testing_research
- 2026-03-01_ux_execution_control_plane
- 2026-03-04_model_boundary_control_matrix
- 2026-03-04_per_control_audit_grid
- 2026-03-08_unified_ux_semantics_architecture_plan
- 2026-03-13_chrome_scope_split_plan
- 2026-04-05_command_surface_observability_and_at_plan
- SUBSYSTEM_UX_SEMANTICS
- ux_event_dispatch_spec
- ux_scenario_and_harness_spec
- ux_tree_and_probe_spec
-
system
-
register
- 2026-03-08_registry_development_plan
- 2026-03-08_sector_b_input_dispatch_plan
- action_registry_contract_spec
- action_registry_spec
- agent_registry_spec
- canvas_registry_spec
- diagnostics_registry_spec
- identity_registry_spec
- index_registry_spec
- input_registry_spec
- knowledge_registry_spec
- layout_domain_registry_spec
- layout_registry_spec
- lens_compositor_spec
- mod_registry_spec
- physics_profile_registry_spec
- presentation_domain_registry_spec
- protocol_registry_spec
- SYSTEM_REGISTER
- theme_registry_spec
- viewer_registry_spec
- viewer_surface_registry_spec
- workbench_surface_registry_spec
- workflow_registry_spec
- 2026-02-21_lifecycle_intent_model
- 2026-03-03_graphshell_address_scheme_implementation_plan
- 2026-03-05_cp4_p2p_sync_plan
- 2026-03-05_network_architecture
- 2026-03-06_foundational_reset_implementation_plan
- 2026-03-06_reducer_only_mutation_enforcement_plan
- 2026-03-12_architectural_inconsistency_register
- 2026-03-12_workspace_decomposition_and_renaming_plan
- 2026-03-17_multi_identity_binding_rules
- 2026-03-17_runtime_task_budget
- 2026-04-23_execution_isolation_and_worker_runtime_plan
- control_panel_spec
- coop_session_spec
- graphshell_net_spec
- register_layer_spec
- registry_runtime_spec
- signal_bus_spec
- system_architecture_spec
- VERSIONING_POLICY
-
register
-
viewer
- 2026-02-24_universal_content_model_plan
- 2026-02-25_interactive_html_export_plan
- 2026-02-26_composited_viewer_pass_contract
- 2026-02-26_visual_tombstones_plan
- 2026-03-02_filesystem_ingest_graph_mapping_plan
- 2026-03-02_unified_source_directory_mapping_plan
- 2026-03-05_node_viewport_preview_minimal_slice_plan
- 2026-03-08_servo_text_editor_architecture_plan
- 2026-03-28_wry_composited_texture_feasibility_spike
- 2026-04-03_clipping_viewer_follow_on_plan
- 2026-04-16_smolweb_compliance_and_middlenet_html_contract
- clipping_and_dom_extraction_spec
- node_lifecycle_and_runtime_reconcile_spec
- node_viewport_preview_spec
- universal_content_model_spec
- VIEWER
- viewer_presentation_and_fallback_spec
- visual_tombstones_spec
- webview_backpressure_spec
- webview_lifecycle_and_crash_recovery_spec
- wry_integration_spec
-
workbench
- 2026-03-03_pane_opening_mode_and_simplification_suppressed_plan
- 2026-03-26_frame_layout_hint_spec
- 2026-04-10_graph_tree_implementation_plan
- 2026-04-11_egui_tiles_retirement_strategy
- frame_persistence_format_spec
- graph_first_frame_semantics_spec
- graphlet_projection_binding_spec
- navigator_backlog_pack
- navigator_graph_isomorphism_spec
- pane_chrome_and_promotion_spec
- pane_presentation_and_locking_spec
- tile_view_ops_spec
- WORKBENCH
- workbench_backlog_pack
- workbench_frame_tile_interaction_spec
- workbench_layout_policy_spec
- workbench_profile_and_workflow_composition_spec
- 2026-02-28_ux_contract_register
- 2026-03-01_complete_feature_inventory
- 2026-03-01_ux_migration_design_spec
- 2026-03-01_ux_migration_feature_spec_coverage_matrix
- 2026-03-01_ux_migration_lifecycle_audit_register
- 2026-03-01_webrender_readiness_gate_feature_guardrails
- 2026-03-02_scaffold_registry
- 2026-03-03_pre_wgpu_feature_validation_gate_checklist
- 2026-03-03_pre_wgpu_plot
- 2026-03-03_spec_conflict_resolution_register
- 2026-03-11_boa_scripting_engine_plan
- 2026-04-20_middlenet_direct_lane_v1_5_plan
- 2026-05-01_workspace_architecture_proposal
- core-interaction-model-plan
- domain_interaction_acceptance_matrix
- plan-featureFirstNowRefactorFriendlyLater.prompt
- PLANNING_REGISTER
-
research
- 2026-02-18_graph_ux_research_report
- 2026-02-20_edge_traversal_model_research
- 2026-02-24_diagnostics_research
- 2026-02-24_interaction_and_semantic_design_schemes
- 2026-02-24_spatial_accessibility_research
- 2026-02-24_visual_tombstones_research
- 2026-02-26_architecture_terminology_alignment_gap_analysis
- 2026-02-26_original_vision_to_current_architecture_mapping
- 2026-02-27_all_docs_context_bootstrap
- 2026-02-27_egui_stack_assessment
- 2026-02-27_egui_wgpu_custom_canvas_migration_requirements
- 2026-02-27_freenet_takeaways_for_graphshell
- 2026-02-27_viewer_state_matrix
- 2026-02-28_graphshell_ux_research_agenda
- 2026-02-28_knowledge_capture_research_agenda
- 2026-02-28_navigation_semantics_mental_models_research
- 2026-02-28_performance_visual_scaling_research_agenda
- 2026-02-28_viewer_backend_research_agenda
- 2026-03-01_servo_script_engine_alternatives
- 2026-03-01_webrender_wgpu_renderer_research
- 2026-03-02_ux_integration_research
- 2026-03-04_standards_alignment_report
- 2026-03-24_tool_comparison_product_lessons
- 2026-03-27_ambient_graph_visual_effects
- 2026-03-29_graph_interaction_brainstorm
- 2026-03-30_middlenet_vision_synthesis
- 2026-04-02_intelligence_capability_tiers_and_blockers
- 2026-04-02_intelligence_taxonomy
- 2026-04-02_scene_mode_ux_sketch
- 2026-04-03_servo_slint_wgpu_hal_interop_research
- 2026-04-09_smolweb_browser_capability_gaps
- 2026-04-09_smolweb_discovery_and_aggregation_signal_model
- 2026-04-09_smolweb_graph_enrichment_and_accessibility_note
- 2026-04-10_servo_wpt_mountain_and_wr_wgpu_leverage
- 2026-04-10_ui_framework_alternatives_and_graph_tree_discovery
- 2026-04-11_linked_data_over_middlenet_relevance_note
- 2026-04-11_tabfs_tablab_graphshell_relevance_note
- 2026-04-14_wasm_portable_renderer_feasibility
- 2026-04-16_rendering_architecture_vision
- 2026-04-24_iced_renderer_boot_and_isolation_model
- scene_customization
- STANDALONE_EXTRACTION
-
technical_architecture
- 2026-02-18_universal_node_content_model
- 2026-02-27_presentation_provider_and_ai_orchestration
- 2026-03-01_dependency_inventory
- 2026-03-08_graphshell_core_extraction_plan
- 2026-03-12_specification_coverage_register
- 2026-03-29_middlenet_engine_spec
- 2026-03-29_portable_web_core_host_envelopes
- 2026-03-29_workspace_restructuring_plan
- 2026-03-30_protocol_modularity_and_host_capability_model
- 2026-04-09_browser_envelope_coop_and_degradation_policy
- 2026-04-09_graph_object_classification_model
- 2026-04-09_graphshell_verse_uri_scheme
- 2026-04-09_identity_convergence_and_person_node_model
- 2026-04-11_core_intent_inventory
- 2026-04-16_middlenet_lane_architecture_spec
- 2026-04-20_graphshell_gpu_spec
- 2026-04-22_browser_subsystem_taxonomy_and_mapping
- 2026-04-22_portable_shell_state_in_graphshell_core
- ARCHITECTURAL_OVERVIEW
- BUILD
- codebase_guide
- domain_interaction_scenarios
- domain_projection_matrix
- graph_canvas_spec
- graph_tree_spec
- graphlet_model
- GRAPHSHELL_AS_BROWSER
- node_object_query_model
- QUICKSTART
- TERM_ARCHITECTURE_DESC
- unified_view_model
- testing
- matrix_docs
-
nostr_docs
- implementation_strategy
- technical_architecture
-
verse_docs
-
implementation_strategy
- 2026-02-26_intelligence_memory_architecture_stm_ltm_engrams_plan
- 2026-03-09_agent_wal_and_distillery_architecture_plan
- 2026-03-28_decentralized_storage_bank_spec
- 2026-04-06_sync_badge_verse_controls_plan
- community_governance_spec
- engram_spec
- flora_submission_checkpoint_spec
- lineage_dag_spec
- proof_of_access_ledger_spec
- self_hosted_model_spec
- self_hosted_verse_node_spec
- verseblob_content_addressing_spec
-
research
- 2026-02-22_aspirational_protocols_and_tools
- 2026-02-23_modern_yacy_gap_analysis
- 2026-02-23_storage_economy_and_indices
- 2026-02-24_local_intelligence_research
- 2026-02-24_wasm_mod_abi_research
- 2026-02-27_freenet_takeaways_for_verse
- 2026-02-28_verse_concrete_research_agenda
- 2026-03-28_libp2p_nostr_synergy_for_verse
- 2026-04-13_storage_system_comparison_for_verse
- SEARCH_FINDINGS_SUMMARY
- VERSE
- technical_architecture
-
implementation_strategy
-
verso_docs
-
implementation_strategy
- 2026-02-22_verse_implementation_strategy
- 2026-02-23_verse_tier1_sync_plan
- 2026-02-25_verse_presence_plan
- 2026-03-08_simple_document_engine_target_spec
- 2026-03-27_session_capsule_ledger_plan
- 2026-03-28_cable_coop_minichat_spec
- 2026-03-28_gemini_capsule_server_plan
- coop_session_spec
- PHASE5_STEP5.1_COMPLETE
- PHASE5_STEP5.2_COMPLETE
- PHASE5_STEP5.3_COMPLETE
- research
- technical_architecture
-
implementation_strategy
- 2026-03-14_documentation_compression_plan
- 2026-05-03_lexicon_brief
- AI_USAGE
- DOC_POLICY
- DOC_README
- OPERATOR_GUIDE
- PROJECT_DESCRIPTION
- TERMINOLOGY
-
archive_docs