# 🤖 AGENTS.md: TodoMVC bakeoff

The one rule: **every app gets the same chance.** The same brief, the
same contract, the same UI, the same tests, the same measurement, the
same review-and-fix round, and the same platform defaults. Any difference
in how one app is treated is a defect in the bakeoff, not a detail.

Design: `docs/superpowers/specs/2026-10-23-todomvc-bakeoff-design.md`.
Plan: `docs/superpowers/plans/2026-10-23-todomvc-bakeoff.md`.

## Layout

| Path | What |
|---|---|
| `BRIEF.md`, `CONTRACT.md` | What every builder gets. Binding |
| `shared/` | TodoMVC CSS (`todomvc-common` 1.0.5, `todomvc-app-css` 2.4.3) and the reference page |
| `vendor/carlos-skills/` | The CARLOS skills builders read, pinned (see `SOURCE`) |
| `tests/behaviour/` | Playwright suite, run with JS on and off |
| `harness/` | Go measurement harness and report generator; `harness/refapp` is a test fixture builders never see |
| `builders/` | Prompts, runner scripts, session logs and reviews |
| `apps/<slug>/` | One directory per contestant, written only by its builder |
| `results/` | One JSON file per app, written only by the harness |
| `report/site/` | The generated report page |

## Rules

- **Never fix an app by hand.** Apps change only through their builder's
  session (the build, the one fix round, and the security-only round).
  A pipeline problem is fixed in the scripts or the brief, and then every
  affected app is rebuilt.
- **Never work around Carloku.** A missing capability becomes a Feature
  Request on amadan (`amadan discuss new carlos/platform`), and the report
  names it.
- **The report doesn't crown a winner.** Numbers, context and caveats.
- Servers bind `127.0.0.1` only. Scratch goes in `$TMPDIR`. Don't change
  `GOCACHE`. No `sudo`. Stop what you start.
- Commits end with a `Co-Authored-By:` trailer naming the model.
