← back to Wallco Ai
data/yolo-overnight/aesthetic-gate-review-20260525-1051.md
54 lines
# Aesthetic Gate Review — 2026-05-25 10:51 UTC
## Sources
- Code: `server.js:264-287` (`passesAestheticGate`) + `server.js:289-310` (`loadDesigns`)
- Helpers: `lib/color.js` (`_hueBucket`, `_isNeonHex`)
- Snapshot: `data/designs.json` (modified 2026-05-25 10:17 UTC, 180,415 bytes)
- Live runtime: `pm2:wallco-ai` pid 1890751, 119 restarts
## Headline
**0 designs dropped by the aesthetic gate at last load.**
(No sampling needed — task threshold "≥2000 dropped" not met.)
## Counts (re-running gate against current `data/designs.json`)
| Stage | Count |
| --- | ---: |
| Total rows in `designs.json` | 276 |
| `user_removed` filtered first | 7 |
| Eligible (entered gate) | 269 |
| Passed gate | 269 |
| **Dropped by gate (total)** | **0** |
| ↳ palette neon hit (`_isNeonHex` H ≥70 S, L 45–75, pct ≥5) | 0 |
| ↳ palette ≥4 distinct hue buckets | 0 |
| ↳ no palette, dominant_hex is neon | 0 |
## Why so few?
Two converging factors:
1. **Snapshot is small.** `designs.json` is only **276 rows** total. The catalog has been heavily curated/purged — `do-not-want.jsonl` (1.1 MB), `ghost-purge.jsonl` (2.3 MB), `composition-fix-log.jsonl`, and the upstream `scripts/purge-neon-and-multicolor.js` DB-level purge have already removed offenders before snapshot.
2. **Gate is now a defence-in-depth backstop**, not a filter doing real work. The comment block at `server.js:251-260` says so explicitly: "DB-level purge already removed the offenders, but this runtime filter protects against any reseed / refresh_designs_snapshot run that might re-introduce a row." The text-regex prong was removed 2026-05-20 because it was dropping 134/212 valid designs.
The runtime log line is gated by `if (dropped > 0) console.log(...)` — and indeed no `[aesthetic-gate] dropped …` line appears in `wallco-ai-out__2026-05-25*.log`; only the matching `[blank-guard] 1282 blank designs excluded` lines do. Consistent with 0 drops.
## Sanity check on the gate logic itself
Spot-checked the three drop reasons against representative palette colors to confirm the helpers still bite:
- `_isNeonHex('#39ff14', 10)` → **true** (neon green; H 116, S 100, L 54) ✓
- `_isNeonHex('#ff00ff', 10)` → **true** (magenta) ✓
- Palette with 4 distinct hue buckets (red, blue, green, yellow at 30%+ each) → **rejected** ✓
- Mid-luminance saturated brown (`#8b4513`) → **kept** (L 31 < 45 cutoff) ✓
Gate is functional; it just has nothing to bite right now.
## Recommendation
Optional only — gate is healthy:
- Demote the "drops ≥2000" expectation. Treat any non-zero gate drop as a signal that `refresh_designs_snapshot` has regressed; alert on it rather than tracking it as a volume metric.
- Consider logging the 0-drop case too (single line at load) so we can prove the gate ran, not just that it stayed quiet.