Round 7: zero-text frames, escaped/curly titles, plan-driven banner crops
Deploy / build (push) Successful in 19s
Deploy / build (push) Successful in 19s
The consultant's review of the shipped set found two defects, both ours, and both fixed at the source rather than in the output: 1. The banner/thumb crop re-framing detected only the glowing core of the object. Column brightness measures 2-6 levels above the background on dark glass, so it boxed 8 % of the frame for an object group spanning 35 %+. The detector is now a background-plane deviation plus the largest connected components (`plan_banner_crops.py`, detector in `probe_band_crop.py`), 0 % false-positive on the frame's own negative space, stable across thresholds. The crop plan is frozen as `banner-plan.json` and consumed by the renderer; a thin subject is centred at 53.5 % of the banner width with the shortfall filled by the art's own edge pixels, one row at a time (a single averaged fill left a visible tonal step, tried and rejected). Measured on the delivered 72: 0 clipped, silhouette median 47.0 %, centre median 53.5 % (`verify_banner_crops.py`). 2. `art-meta.json` pinned two slugs to the hand-accepted sample frames — the very frames that carried the HUD readouts — which also kept them out of the crop plan. Pins removed. Prompt side: 9 frames still printed glyphs at the consultant's bar (>=12 px and >=2 characters). Every offending noun is measured and now asserted against: a literal `marked at 28` printed "28"; `storefront kiosk` printed "PRINATA"; `voucher card` printed "Voucher"; `market booths` printed "10MARKET"; `glass button` printed "OC"; `gateway pylon` printed "GATELY". 50 forbidden words, 0 hits across 72 captions, and all 9 frames re-rendered clean. Also: YAML escapes are honoured in the frontmatter reader and straight quotes become curly ones (the ZH cards shipped a literal backslash), the evidence line is capped at 65 characters, and the light theme gives dark artwork a hairline border plus a soft shadow (consultant option A) so it reads as a dark display case instead of a black slab. OCR gate at the consultant's bar: 72/72 frames clean (16 carry sub-threshold single glyphs, exempt as geometry noise).
This commit is contained in:
1 parent
576a43a034
commit
f391682fc3
513 files changed
+2223
-174
No files matched your search
@@ -7,8 +7,8 @@ that exists in that post's body — nothing is derived from the title, and nothi
|
||||
invented. The renderer refuses to run for a slug that has no entry, so this file is
|
||||
also the checklist for the 72-post rollout.
|
||||
|
||||
The two hand-accepted sample entries keep their explicit `art` paths; every other
|
||||
slug uses the renderer's default `<art-dir>/<slug>.png`, so they need no `art` key.
|
||||
Every slug uses the renderer's default `<art-dir>/<slug>.png`, so no entry needs an `art`
|
||||
key — that is what lets `banner-plan.json` (keyed by slug) cover all of them.
|
||||
|
||||
Usage: python scripts/og-gen/build_art_meta.py # rewrite art-meta.json
|
||||
python scripts/og-gen/build_art_meta.py --check # report coverage only
|
||||
@@ -107,11 +107,12 @@ EVIDENCE: dict[str, str] = {
|
||||
"your-disk-full-alert-is-lying": "3% free = 500 GB · alert fires wrong way",
|
||||
}
|
||||
|
||||
# The two consultant samples keep their explicit frame paths.
|
||||
ART_OVERRIDES = {
|
||||
"running-production-infrastructure-solo": "C:/AI/ideogram4/out/sample_prod_169_00001_.png",
|
||||
"docker-reported-exit-0-the-oom-killer-disagreed": "C:/AI/ideogram4/out/sample_oom_169_00001_.png",
|
||||
}
|
||||
# No overrides any more. Two slugs used to point at the hand-accepted consultant samples
|
||||
# (sample_oom_169_00001_.png / sample_prod_169_00001_.png); those frames were the ones that
|
||||
# carried the HUD readouts the consultant flagged, and both slugs now have proper zero-text
|
||||
# art of their own, so every entry goes through the renderer's default `<art-dir>/<slug>.png`.
|
||||
# Keeping the old paths would also hide them from banner-plan.json, which is keyed by slug.
|
||||
ART_OVERRIDES: dict = {}
|
||||
|
||||
|
||||
def main() -> None:
|
||||
|
||||
Reference in new issue
Block a user