Start here:
../AGENTS.mdis the agent operating contract.display-surfaces.mdis the current UI/testing surface contract.design-board-v1-goal.mdrecords the completed multi-window board milestone.release-app-substance-v1-goal.mdis the current release-readiness goal.dynamic-scenario-coverage-v1-goal.mdis the active product slice inside that goal.drawer-navigation-surface-v1-goal.mdrecords the previous drawer/navigation slice.composer-contract-v1-goal.mdrecords the completed composer contract slice.release-ui-readiness-v1-goal.mdis the supporting UI-polish goal.source-ownership-map.mdrecords where product surfaces should move as route files get thinner.
Canonical commands:
./scripts/device.sh board status
./scripts/device.sh board open
./scripts/device.sh board capture
./scripts/device.sh inventory
npm test
npm run test:web:iphone
npm run test:web:headless
npm run doctorUse lower-level scripts only when the canonical command cannot express the job:
device.sh web-slot ...for one explicit managed Chromium slot.remote-demo.shandremote-gui.shfor the remote Air/iOS lane.ios-conversation-harness.shfor simulator fixture injection.capture-window.sh slot:<name>for a direct slot capture.
Managed Chromium capture first tries macOS window capture. If detached app-mode Chromium or local Screen Recording permissions refuse usable pixels, the harness falls back to a deterministic iPhone-profile web render of the same tracked slot URL while keeping the real board window open.
npm run test:web:headless uses Playwright's repo-local global setup to
prewarm /scenarios and /composer-lab before running tests. That keeps cold
Expo web bundle compilation out of the first assertion timeout while preserving
the normal 60 second timeout for actual UI failures.
The web-server start path is lock-protected and writes its manifest atomically,
so simultaneous visible/headless proof commands cannot corrupt
.build-info/web-server.<port>.json.
Archived docs and scripts under docs/archive/ and scripts/archive/ are
forensics only. Do not use archived ui-bench, parity, or older flow docs as
active guidance.