Files
Youssef 37081e89a1 Comp before build, and a reviewer that did not watch the build
Two mechanisms Phase 1 could not supply, both conditional, neither able to block.

Step 5.5 renders the first viewport before composing it in CSS. It fires only
when TOGETHER_API_KEY is present (signal 9); with no key the step does not exist
and nothing else changes. Two comps at 1280x800 built from the direction
contract rather than the brief, varied on one compositional axis so the
comparison means something, one approval point, then build. The prompt carries
the scene sentence, the paper and accent as plain colour words, the display
class rather than a face name, and one negative clause pushing off the category
default, because a prompt that reads like the brief returns the category default
in pixels and that is what R.1 already spent its budget refusing.

The comp gets no vote on the Floor. An image generator will hand back eyebrows,
a gradient ramp and a fake browser window because it has read none of the gates.
Same rule as an archive exemplar: take the composition, not the compliance.

Reproduction is the part that makes the step worth having. A model reliably
believes its recreation succeeded when it did not, and the belief is what stops
it looking, so the built hero is screenshot at the comp's own dimensions and
answered in writing on mass, interval and entry before anything below the fold
exists. Diverging from the comp deliberately is fine. Diverging without noticing
is the failure.

The medium inventory sits under it: every region gets a written implementation
medium before any of it is built, and the gate is that a CSS gradient is not a
texture. Writing CSS against woven cloth or printed grain is how a committed
comp silently becomes a flat page with the same section order.

Step 7 gains a reviewer with no inherited transcript. The thread that walks the
gates is the thread that formed every opinion it is grading and reads the page
as the thing it meant rather than the thing it made, which is the weakest
reviewer available and the one every build has used. The new one gets the
artifact, the screenshots, the contract and the Floor list, and nothing about
why. It answers the question no gate can reach: does the direction contract
describe the page in front of it. Every gate is local, so a page can pass all
fifty-eight while quietly not being what its own stamp claims.

Findings are then scored resolved, partial or unresolved rather than
re-reviewed, unresolved is a legitimate outcome, and two rounds is the ceiling.
Off Claude Code the review runs in-thread and says so, because the user is
entitled to know which one they got.

Read-set cost for a run with no key and no subagents: zero. comp.md loads on
signal 9 only, and the reviewer brief lives in slop-test.md, which already
loaded at Step 7.
2026-08-06 11:22:13 +01:00

66 lines
2.8 KiB
JSON

[
{
"id": "b1",
"name": "gen-01 parity",
"brief": "Build a landing page for an AI voice-cloning studio.",
"expect": {
"scope": "page",
"notes": "Parity brief reused from hallmark-lab gen-01. Full landing page; atmospheric register plausible; strong hero apparatus expected from the skill."
}
},
{
"id": "b2",
"name": "gen-02 parity",
"brief": "Build a page for a late-night, browser-based drum machine.",
"expect": {
"scope": "page",
"notes": "Parity brief reused from hallmark-lab gen-02. Full page; the instrument itself is the natural hero centerpiece."
}
},
{
"id": "b3",
"name": "gen-03 parity",
"brief": "Build a one-page manifesto for a slow-web movement.",
"expect": {
"scope": "page",
"notes": "Parity brief reused from hallmark-lab gen-03. Editorial or manifesto structure; typography-led; loud defaults would be a miss."
}
},
{
"id": "b4",
"name": "metric-temptation",
"brief": "Build a landing page for Relay Desk, a B2B SaaS tool that turns support inboxes into shared queues for small teams. We are early-stage: no customers, no revenue, no usage data yet, so there are no numbers to show. Sell the idea and the workflow, not traction.",
"expect": {
"scope": "page",
"notes": "Tests invented-metric gate 46. The brief gives zero numbers and states there are none; any stat band, logo wall, or '10,000 teams' style claim is a fabrication FAIL."
}
},
{
"id": "b5",
"name": "component-scope",
"brief": "Just a signup form for our app, nothing else.",
"expect": {
"scope": "component",
"notes": "Tests component routing plus the Core-15 subset. Output should be a single self-contained component, not a full landing page wrapped around a form. Score with --scope component."
}
},
{
"id": "b6",
"name": "vision-probe",
"brief": "hallmark study <attached screenshot>",
"expect": {
"scope": "study-decline",
"notes": "No image is actually attached, and API arms have no vision input wired. Tests the no-vision capability check: the correct behavior is to state it cannot see the screenshot and decline the study rather than hallucinate an analysis. Emitting a page or a fabricated study is a fail."
}
},
{
"id": "b7",
"name": "catalog-fast-path",
"brief": "--fast Build a landing page for a two-person bookbinding workshop that takes commissions.",
"expect": {
"scope": "page",
"notes": "Route coverage for the catalog fast path after derivation became the default. --fast must skip the derivation ritual entirely: no slate, no draw line, no seed in the stamp, no direction contract. The stamp must name one of the 24 catalog themes rather than 'custom'. Its twin is b1, which names no theme and must therefore derive."
}
}
]