Skip to main content

Dual-surface factor lab

Reader​

A designer or engineer comparing enough page options to freeze factors — and anyone evaluating human–system interface loops for Outer Voice or Stackmates.

Primary job​

Demonstrate one canonical state projected onto dual surfaces: a human exploration panel (spatial, narrative, recoverable) and an agent protocol panel (typed, explicit, no visual inference required). Factor contrast lives on the human side; freeze and learning return to the earliest owner.

Composition thesis​

Dream specimen, not production catalogue. Dark full-bleed shell with Orient → Explore → Act → Observe → Correct → Learn loop rail. One LabState controls both surfaces. Human panel shows live-stage claim + factor options; agent panel shows canonical JSON, permitted actions, and constraints. Same frozen claim across options. Vary placement, evidence, density, nav scent — never invent a second identity. A second specimen on Explore is the public journey navbar: four chrome-only options (A–D) for the live doors Principles → Priorities → Platform → Process → Play. Current door in every specimen is Process. Shared claim copy does not change. Thoughts may appear only as option D, after a hairline, as a glossary door — a Wik product choice, not doctrine. No clinic CTA. No crimson current-door. No live navbar swap from this page.

Experiment binding​

FieldValue
Signalhermes:ux:human-system-interface-loop
CandidateDual-surface + one canonical state (human + agent panels)
Dispositionmatched trial only — discovery ≠ adoption
FalsifierTreating this page as a promoted OV standard without three matched trials + Wik COMMIT; separating human and agent surfaces into two apps or unlinked states

Loop stations (HSI)​

The human–system interface loop follows Orient → Explore → Act → Observe → Correct → Learn. Each phase has explicit human and agent responsibilities:

  • Orient: human sees job/constraints; agent discovers identity and authority
  • Explore: human compares options; agent reads state and legal transitions
  • Act: human names the factor that mattered; agent validates and executes freeze
  • Observe: human sees consequence; agent receives result and exposes variance
  • Correct: human recovers or stops; agent corrects, retries, or escalates
  • Learn: human keeps what changed judgment; agent returns evidence to earliest owner

Loop architecture from Inner hermes:ux:human-system-interface-loop. PE helpers (popover + command/commandfor) trial under hermes:ux:signal:html-platform-mid-2026 — present in doctrine popover only.

Design instruments (reference)​

Factor contrast is one station on this wireframe lab. Station→instrument map:

StationInstrumentPurpose
Shape (contrast)Factor contrastName the factor that changed judgment; freeze for next tighter round
Shape + craftInspo (inspomcp.dev)Real-world composition contrast for open factors
WriteSlopMonster (pnpm slop)Score shared copy once before options diverge
Compose + govern@shadcn/lintWarnings on local TypeScript against design-system tokens
AI interactionjson-render (hold)Guardrailed generative UI catalog with one canonical state
Craft (spatial only)ThreeUI + checklistFrozen spatial factors; HTML completes task; meaning survives without WebGL

Live craft skill: .agents/skills/impeccable/SKILL.md. Instruments supply evidence, gates, or reference at their station only — do not install a parallel taste stack.

Protected constraints​

  • Local design-system primitives for the live stage claim/CTA/evidence.
  • Same copy across options (CONTENT_DRIFT kill signal).
  • Human names the deciding factor; agents do not declare a visual winner.
  • Do not invent clinic CTA or Attention/COMMIT via new widgets.
  • One canonical state; both surfaces are projections of that state.
  • Navbar specimens reuse live door labels and routes from src/data/site-navigation/navigation-registry.js. Do not mass-rename Playbook to Process here; the public navbar already says Process.
  • Thoughts-in-navbar is optional (option D). Do not present it as Inner doctrine.

Public journey navbar (Explore)​

Same A–D switcher grammar as page composition. Factors: sequence marks, current-door mark, density, Thoughts door.

OptionTitleWhat the reader getsVaries
ASequential spineNumbered 1–5 with hairline connectorssequenceMarks
BCurrent-door emphasisSame five doors; current is a muted pill, not crimsoncurrentMark
CCompact listTighter type; current is ink weight onlydensity
DExpanded with ThoughtsFive journey doors, then a quieter /thoughts/ glossary linkthoughtsDoor

Recommendation for freeze (not a shipped winner): B. It teaches “where I am” without implying every reader walks 1–5, and without promoting Thoughts.

Observable proof​

  1. Human and agent panels resolve to the same freeze, constraints, and stop authority.
  2. A reader can switch options and see live-stage factor variation (A–D).
  3. A reader can name which factor to freeze next and record learning.
  4. An agent can read data-agent-state JSON without scraping pixels.