# Interface Experiments: agent guide

This private lab contains 160 original or attributed interface studies, sixteen per source. All interactions use local synthetic data. No purchases, messages, deployments or real account mutations occur.

## Discover

GET `/api/catalog.json` returns a versioned read-only catalog with `sources`, demo IDs, titles, task categories, tags, original prompts, provenance, and exact action expectations. Check `schemaVersion === 1`, `sourceCount === 10`, and `demoCount === 160`.

Navigate to `/experiments/{source}?demo={demo}`. Unknown demo IDs display an explicit recovery notice. Use browser back/forward to return to prior selections.

For a production export, GET `/build-info.json` identifies the built Git revision, runtime-input fingerprint and build timestamp. Browser sweeps compare its fingerprint with the checkout before starting; a running server alone does not establish that it serves the current build.

## Operate

The workbench exposes `data-source-id`; its canvas uses `data-testid="demo-stage"` and `data-demo-id`. Choose a demo with `data-testid="demo-select-{id}"`. The stage primary button uses `data-testid="primary-action"` and its accessible name equals catalog `actionLabel`. After activation, a visible `data-testid="action-result"` contains exact catalog `actionResult`. These are deterministic smoke contracts; deeper controls are available through accessible labels.

Search finds tasks and patterns. Reset remounts the selected demo and clears its local state. Copy prompt and Copy link expose reusable intent and canonical navigation. Prompt and provenance lists the actual implementation relationship to the cited source; an original study is not an official vendor asset or verified proprietary runtime.

## Extend and verify

Read repository `AGENTS.md`, `src/lib/demo-types.ts`, `plans/expansion.md` and `skills/interface-lab/SKILL.md` before changing demos. Each source owns a component, scoped CSS, and one metadata JSON array. Keep sixteen entries, meaningful task diversity and real controls. Maintain concise user-facing copy.

Run catalog checks, TypeScript, lint and static build. Sweep each set of sixteen with Playwright and the actual Dark Reader extension. API injection cannot substitute for extension evidence. Record exact cases, browser/version, diagnostics, geometry, captures and image review separately. Missing coverage or unreviewed captures remain incomplete. Do not deploy or migrate this lab unless separately requested.
