Instruments01/10
Console
G2G5G6G7The persistent docked control strip at the app frame's bottom edge — not a media player but the app's hands. Six zones: identity, transport+commit, the board, panic, level, status. Exactly ONE per product.
- Use when
The app shell's one console slot — dock it at the frame's bottom edge the way you mount nav. Whatever your product's running thing is lives here.
- Don't use when
Anywhere else. A second 'footer' component is a failing test. Per-surface controls belong to the surface.
- States
- running (identity + glow)empty (teaches, in voice)identity hidden (width yields)board compressedboard scrolling
- Keyboard
- ?opens the surface's generated key map (ConsoleHelpKey)
- Traps
- Two strips that 'look the same' but share no code will drift within a month — this law exists because it happened. The component warns in dev when two consoles mount.
- Acceptance
- The one-instrument test: exactly one implementation, imported by every posture; the store is shared. (Dev warning fires on a second mount.)
- The glance test: from any surface, one glance at the bottom edge answers what is running, is it healthy, how do I stop it.
- The navigation test: nothing in the console navigates away while something is live.
- The honesty test: every printed key fires; every control that can't act sits dark rather than lying.
- The panic test: STOP is reachable in one click from every surface, wears danger, never moves between postures.
- The empty test: with nothing running the console still teaches, in voice, and the commit key shows what's staged.