* Comp-fidelity review discipline + conciseness pass on core references Process fixes derived from a real Codex session (Hanasaku landing page) where a build drifted wholesale from the approved comp and still shipped under a reviewer pass: - finish reviewer: new Evidence check (check 0) with a fourth disposition, recapture, for malformed screenshots; a review on invalid evidence binds nothing and owes a full re-review, not a verdict pass - finish reviewer: verdict passes exit scoring mode when recaptures fail check 0 or when the packet carries user-supplied screenshots that contradict a prior verdict (those force a fresh full review); a ship earned in a verdict pass covers the scored fixes, not the whole surface - new-work: capture-validity rules (settle entrance motion, capture from document top, comp comparison at comp dimensions, open every file once before sending); user's actual viewport joins the inspected sizes - new-work: hero checkpoint now writes .impeccable/review/hero-repro.png and the reviewer verifies it exists under Persistence - new-work: comp authority is explicit (only the user can downgrade it); handoff reports the verdict at its actual scope; user evidence reopens a full review; documenter re-runs when fixes land after documentation - craft-floor: Refuse entry for geometric masks approximating organic photographic contours (the circular-cutout failure) - editorial conciseness pass over new-work.md, visualize.md, and both agent files: tighter sentences, no dropped rules, all rule markers and mechanical tokens preserved Assisted-by: Claude Code * fix: define the ship disposition in new-work's action paragraph Copilot review finding: the paragraph claimed exactly four disposition words but defined only recapture, rebuild, and fix. Assisted-by: Claude Code * fix: rebuild returns get a full review; recapture return shape in preamble Cursor Bugbot findings: - a return following a rebuild directive is now a fresh full review on both sides of the contract, never a verdict pass, so a wholesale rebuild cannot earn a scoped ship on the directive alone - the turn-ceiling preamble now names the recapture return shape instead of contradicting it with "the five sections" Assisted-by: Claude Code * fix: absent required captures fail the evidence check Greptile finding: a packet with no desktop.png/mobile.png (or missing native device-class captures) routed to the missing-input notice and could still reach ship. A required capture that is absent now fails check 0 exactly like a malformed one and forces recapture; the missing-input allowance in the preamble excludes captures. Assisted-by: Claude Code * fix: user-viewport capture is a required, named input to the review Greptile finding: the evidence gate hard-coded web requirements to desktop.png and mobile.png, so a reported user viewport could join the inspected set and still ship uncaptured. The parent now saves it as user-<width>.png and names every inspected viewport required in the packet; check 0's required set includes every brief-named capture. Assisted-by: Claude Code
7.2 KiB
Craft floor
Load this after the direction is settled, and build without announcing the checklist. A pinned brief or the committed visual world overrides anything here; your own habit does not. When the design hook is active it already enforces the mechanical checks below as you edit: act on its findings instead of re-auditing each rule.
Verify
Each of these is a check on the built result, not an intention. Run them together in the batched inspection rounds, not as separate screenshot trips; the checks share one render.
- Contrast: body and placeholder text ≥4.5:1, large text ≥3:1. On colored surfaces tint secondary text from that hue or the foreground; never gray.
- Depth: shadows carry an offset and a soft blur. A zero-offset colored halo is decoration.
- Spacing: tight groups, generous separation, more space above a heading than below it. Read the computed values.
- Type: body measure 65–75ch, display max 6rem, tracking floor -0.04em, balanced headings, obvious scale and weight steps. Run the real copy at every breakpoint and fix what overflows.
- Motion: one authored moment, not scattered effects and not one identical entrance on every section. Exponential ease-out from an already-visible default. Reach past transform and opacity: blur, backdrop-filter, clip-path, mask, and shadow belong to the palette when they stay smooth.
- States: hover, disabled, loading, error, empty. Plus real content, working controls, responsive composition, keyboard focus.
- Browser surfaces: the parts you did not draw still carry the design. Text selection, the caret, custom scrollbars, focus rings, underline offset, and the numerals in tabular data all ship with browser defaults that belong to no design system. Theme them from the palette. This is the cheapest signal that a page was built rather than assembled, and the one models skip most reliably.
- Copy: the product's own language. Controls name their action; errors name the problem and the recovery.
- Coverage: every brief requirement present and findable within seconds.
Refuse
These are the category's defaults, not bans: the brief's own words can earn any of them. Reaching for one when the axis is free means you were not deciding; recognizing that means rewriting the element, not softening it.
Page scaffolds:
- Same-size cards of icon plus heading plus text as the page structure. Cards are the lazy container; nested cards are always wrong.
- The hero-metric template: big number, small label, supporting stats, accent.
- A kicker or eyebrow above a heading. This one is a ban, not a default: no brief earns it back. The heading carries its own weight; delete the label and let the heading speak.
- Section numbers (01 / 02 / 03) unless the sequence itself carries information the reader needs.
- A modal for a task that needs neither interruption nor protected focus.
Surface habits:
- Gradient text. Emphasis comes from weight or size.
- Glass and blur as decoration rather than as a specific effect.
- A colored
border-leftorborder-rightabove 1px on cards, list items, callouts, or alerts. - Hard offset shadows (
box-shadow: 4px 4px 0) outside a world that is actually neobrutalist. The zero-blur block shadow is a costume, not a depth system; a world that did not choose it never earns it as a default. - Sparklines, progress rings, and soft-shadowed rounded rectangles standing in for content.
- Monospace as a costume for "technical" rather than for code, data, or measurement.
- A system display face (Impact, Arial Black, the platform sans) as the display voice of an own-world page. Source and self-host a face whose character matches the approved lettering; the closest installed font is a failure, not a fallback.
- Unicode glyphs or emoji standing in for an icon system. Icons are drawn, from a real library or authored SVG, in one consistent stroke and weight.
- Geometric masks standing in for organic contours. A circle, polygon, or radial-gradient cutout approximating a photographic subject's edge is the cheap version of the effect and reads worse than omitting it. Derive an alpha matte from the actual image, or produce a cut-out asset.
- Light or dark picked by category. Pick it from the use scene: who, where, under what ambient light.
The floor holds the mechanics; it never picks the direction. With every check green, spend the page on the committed world, and when torn between refined and committed, commit.