# Space Bunny, paired v1 rerun · 29 September 2026

All five v1 briefs built twice: once with **no optional skill** and once with the repo-pinned
official `anthropic-frontend-design-v1` snapshot, so the two conditions sit side by side for the
same model, briefs, isolation rules and declared budget. Ten fresh sessions, one per brief and
condition, launched one at a time.

| | |
| --- | --- |
| Model alias | Space Bunny (underlying identity undisclosed by the runtime) |
| Harness | OpenCode, opencode 1.18.30 |
| Reasoning | requested `high`; the runtime exposes no reasoning setting, so it could be neither applied nor verified |
| Skill | `benchmark/skills/anthropic-frontend-design-v1/SKILL.md`, SHA-256 `d9197063…c1d3`, 9,390 bytes, **matching the manifest** |
| Contract | [`../prompts.md`](../prompts.md) only. The v2 journey requirements, awkward cases and overnight revision were deliberately not applied |
| Token usage | unavailable in every session, so the two conditions cannot be compared on cost |
| Parent sweep | 250 checks, 250 pass, [`verify.cjs`](verify.cjs), evidence in [`verification.json`](verification.json) |

| Brief | no optional skill | pinned skill |
| --- | --- | --- |
| Borrowed Weekend | `no-skills/borrowed-weekend.html` | `skills/borrowed-weekend.html` |
| Afterlight Archive | `no-skills/afterlight-archive.html` | `skills/afterlight-archive.html` |
| FieldLedger | `no-skills/fieldledger.html` | `skills/fieldledger.html` |
| Second Sunday | `no-skills/second-sunday.html` | `skills/second-sunday.html` |
| Quiet Practice | `no-skills/quiet-practice.html` | `skills/quiet-practice.html` |

## Skill provenance, and one thing to know before comparing cohorts

The pinned file hashes to `d9197063…c1d3` at 9,390 bytes, which is what
[`../benchmark/skill-manifest.json`](../benchmark/skill-manifest.json) records, so **this cohort
is directly comparable to the recorded snapshot.** During the previous run that file had been
altered to a different hash and size by another agent, and it has since been restored.

That matters for one comparison: the earlier [`../space-bunny-free/`](../space-bunny-free/)
cohort was built against the **altered** bytes (`f921de71…b5f`, 9,347 bytes). Those five skills
pages and these five are therefore **not** a like-for-like skills comparison. Comparing the two
skills sets against each other would measure a change in the skill file as if it were a change in
the model. This run did not edit the skill file or the manifest.

## Session design

Ten sessions, launched in order: the five no-skills cells first, then the five skills cells.
Every cell got the same brief text, the same engineering requirements, the same isolation rules
and the same declared budget, and only its own brief. The single intended difference was the
skill paragraph — the skills cells were told to read the pinned file in full before designing,
the no-skills cells were told to load no skill at all and each confirmed in writing that it did
not. No cell could read any other build in the repository, including the other condition's five
pages and this model's own earlier v1 and v2 work.

| # | Condition | Brief | Window (UTC) |
| --- | --- | --- | --- |
| 1 | no skill | Borrowed Weekend | 17:58:00 – 18:15:13 |
| 2 | no skill | Afterlight Archive | 18:15:54 – 18:31:22 |
| 3 | no skill | FieldLedger | 18:32:14 – 18:57:11 |
| 4 | no skill | Second Sunday | 18:58:01 – 19:12:52 |
| 5 | no skill | Quiet Practice | 19:13:42 – 19:51:07 |
| 6 | skill | Borrowed Weekend | 19:52:09 – 20:12:59 |
| 7 | skill | Afterlight Archive | 20:14:02 – 20:28:18 |
| 8 | skill | FieldLedger | 20:32:58 – 20:52:46 |
| 9 | skill | Second Sunday | 20:59:52 – 21:18:52 |
| 10 | skill | Quiet Practice | 21:19:39 – 22:01:58 |

## What the two conditions did

Both conditions are competent, self-contained and honest about being local: no network calls
beyond Google Fonts, no storage, no payment, no claim that a booking or contribution was really
made, recoverable empty states, real form controls with accessible names, and no horizontal
overflow or crushed column at any of 1440, 1280, 1024, 768 or 390 px. The differences are in
design decisions rather than in whether the pages work.

**No skill.** Every cell reached for the same available register: a warm paper ground, a
high-contrast serif for display (Fraunces in all five), a sans for UI, and a coloured accent
doing the signalling. Structure is card-and-section, borders and soft shadow. Copy is competent
and occasionally generic. The pages read as a coherent set because one model made them, not
because a rule made them.

**With the skill.** Each cell picked a different structural metaphor, and in four of five cases
it is a metaphor taken from the subject rather than from the medium: a workshop circulation card
for Borrowed Weekend with a punch-card weekend rail, a municipal card catalogue for Afterlight
Archive, a laminated dispatch card with a ruled day band for FieldLedger, a tool-library pegboard
for Second Sunday, and a sound-allowance meter as the spine of Quiet Practice, where the decibel
scale encodes the room's real constraint and doubles as the filter. Display and body type are
clearly distinct pairs. Cards largely give way to ledgers, tables, rules and spec sheets, and
the accent is spent in one place per page rather than used as decoration. Several cells report
catching themselves on the tells the skill names and revising: a single coloured word in a
headline, numbered markers where the content was not a sequence, a continuously crawling
marquee, a card grid of impact figures.

**Where the skill did not obviously help:** both conditions produced similar depth of content
and equally careful local-only honesty, and the no-skills cells found the same class of bugs the
skills cells did, including collapsed grid tracks and focus lost across re-renders. Structural
narrative and restraint are the visible difference; engineering care was present in both.

## Repairs requested after the check set

The first parent pass was 247 of 250. All three failures were genuine, all were repaired in the
originating session, and the re-run is 250 of 250. No visual design was changed by either repair,
and neither condition received a repair the other did not need.

1. **no-skills Afterlight Archive** persisted submitted memories to `localStorage`, which no
   other page in the cohort did — a difference between conditions caused by an accident rather
   than a choice, which is exactly what this cohort must not contain. Storage removed, the
   saved-memory behaviour kept in page memory, and three pieces of copy corrected because they
   had implied persistence.
2. **skills FieldLedger**, at 390 px, the decisions and upcoming-work list collapsed to a **0 px
   column**, wrapping text one word per line across 17 to 33 lines, with no horizontal overflow
   to give it away. Root cause was a cross-tier CSS specificity leak: a `dd.why` rule at
   `max-width:860px` outranked the `max-width:700px` rule, so the browser created an implicit
   column and gave it the whole width. Fixed in three rules.
3. **skills FieldLedger** also had no `h1` at all — the page started at `<h2>` with the product
   name in a `<span>`. The span became the `h1` with identical rendered geometry, and 14 job
   titles that skipped from `h2` to `h4` were corrected to `h3`. The cell also corrected the
   parent: it had earlier dismissed these measurements as an artefact of measuring inline
   elements, and on re-investigation agreed the column was collapsing.

## Verification

`verify.cjs` is a parent sanity sweep, not the benchmark's evaluation. 250 of 250 pass across
the ten pages: one parsing inline script and no external scripts, no network or storage APIs, no
code comments, fonts as the only remote asset, no uncaught errors on load, no unexpected
requests, a page heading, visible focus styling, `prefers-reduced-motion` respected, every
visible control with an accessible name, no duplicate ids, no positive tabindex, and no
horizontal overflow, offscreen element or text column crushed under 40 px while wrapping past
four lines at any of the five widths.

It does **not** score pages against a rubric, does not verify each page's business-specific
journey end to end, and is not an accessibility audit. Each cell ran deeper interaction and
layout checks of its own and reported them at the time — those reports, including the defects
each cell found and fixed in its own build, are the richer evidence and have not been
independently reproduced here.

## Limitations

- One build per brief and condition, one run, no repetition. Nothing here is a reliability
  estimate, and the two conditions were not run in interleaved order, so time-of-day and
  parent-context effects are not ruled out even though each cell started empty.
- Reasoning could not be set or confirmed and no token accounting exists, so neither condition
  can be compared on effort or cost.
- The two conditions share a host and a parent that wrote the shared requirements. Only the
  skill paragraph differed, but that is not the same as two fully independent runs.
- The check suite was written by the same model it measures, and repairs were requested after
  it ran, so it is not blind.
- Not comparable like-for-like with the earlier `space-bunny-free/` cohort: different skill
  bytes were in place then.
- Independent testing and website integration are out of scope for this run.

No commit, push or deployment was performed, and no shared file, no other model's directory and
no earlier cohort output was modified.
