diff --git a/CLAUDE.md b/CLAUDE.md index 7eff6b0..f627257 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -109,7 +109,7 @@ Stage with **explicit paths only** — never `git add -A` or `git add .`. Cursor ## Quality Gates for Example Runs - `docs/VISUAL-STYLE.md` is the **binding** render standard; deviations are defects. -- **Contact-sheet gate:** composite the candidate hero beside the pinned calibration set — currently `armature-bend`, `damped-track-aim`, `bmesh-gear` — commit the composite under `docs/gallery/contact-sheets/`, link it in the PR body, and report per-criterion verdicts (stage darkness, wedge warmth, subject fill, saturation, thumbnail legibility) including mean luminance versus the calibration images. A claim without the committed composite is not acceptable evidence. The pinned set is updated (here and in `docs/new-example-prompt.md`) when a new example outclasses a member; the longer "calibration references" list in `docs/VISUAL-STYLE.md` is a style reference, not this contact-sheet set. +- **Contact-sheet gate:** composite the candidate hero beside the pinned calibration set — currently `armature-bend`, `damped-track-aim`, `bmesh-gear` — commit the composite under `docs/gallery/contact-sheets/`, link it in the PR body, and report per-criterion verdicts (stage darkness, wedge warmth, subject fill, saturation, thumbnail legibility) including mean luminance versus the calibration images. A claim without the committed composite is not acceptable evidence. **This list is the canonical home of the pinned set** — update it here when a new example outclasses a member; `docs/new-example-prompt.md` points here rather than naming members. The longer "calibration references" list in `docs/VISUAL-STYLE.md` is a style reference, not this contact-sheet set. - **Falsification:** every check must be proven to fail once — break the contract, observe the non-zero exit, restore — with the probe and the measured error reported in the PR body. An assertion that cannot fail witnesses nothing. - **After gallery regeneration** (`python scripts/build_gallery.py`), read the **generated HTML** character by character — the `` text and witnesses callouts in `docs/gallery/index.html` and `docs/gallery//index.html` — not just `examples/gallery.json`. Precedent: the `teaches.split(".")[0]` bug truncated 14/21 card alts at dotted API paths like `bmesh.ops` while the source JSON looked fine (fixed in PR #68). diff --git a/docs/new-example-prompt.md b/docs/new-example-prompt.md index e9d1bb0..28ace5e 100644 --- a/docs/new-example-prompt.md +++ b/docs/new-example-prompt.md @@ -98,11 +98,12 @@ objects are not visible unintentionally, and materials, lighting, background, an camera feel designed rather than left at Blender defaults. Contact-sheet gate (required before shipping the still): place the new hero beside -the pinned calibration set — currently `armature-bend`, `damped-track-aim`, -`bmesh-gear` — and compare stage darkness, wedge warmth, subject fill, saturation, -and thumbnail legibility side by side. Do not ship until the new image holds up in -that lineup—not merely "looks fine alone." Update this named set (here and in -`CLAUDE.md`) whenever a new example outclasses one of them. One successful render +the pinned calibration set — canonical membership is listed in `CLAUDE.md` +§ Quality Gates for Example Runs — and compare stage darkness, wedge warmth, +subject fill, saturation, and thumbnail legibility side by side. Do not ship until +the new image holds up in that lineup—not merely "looks fine alone." When a new +example outclasses a member, update the pinned set in `CLAUDE.md`, its canonical +home. One successful render command is not proof that the image is good, and neither is the second. Commit the composite under `docs/gallery/contact-sheets/`, link it in the PR body, and report per-criterion verdicts including mean luminance versus the calibration images — a