mirror of
https://github.com/Nutlope/hallmark.git
synced 2026-08-14 12:35:33 +02:00
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.
66 lines
2.8 KiB
JSON
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."
|
|
}
|
|
}
|
|
]
|