pipeline: relax hero floor to 2, keep ~4 as the soft aim

The real failure mode is 0-1 images (wall of text); two heroes read
fine on the 1-2 column layouts. Keep ~4 as the aim — prefer
hero-bearing candidates among equal fits, more images for bigger
bundles — since 2 among 8 items still looks thin on the wide
4-column grid. Restores the 3-item minimum bundle size.

Claude-Session: https://claude.ai/code/session_01WZaczDJjL3xZ3u5spsN5AL
This commit is contained in:
2026-07-14 08:35:00 -04:00
parent f0f1d8fb61
commit f9bc8f93eb
4 changed files with 10 additions and 10 deletions
+3 -3
View File
@@ -30,10 +30,10 @@ Also read every existing bundle's `items[]` array — these are pre-clustered an
Aim for 4-7 clusters. Each cluster should:
- Hang off **one specific editorial angle**, phrasable in 4-8 words ("Pocket carry", "The morning kitchen ritual", "Travel as a kind of attention"). Avoid generic buckets ("Tools", "Apps") — those are tag pages.
- Hold **4-8 items**, of which **at least 4 have a hero image** (`hero.<ext>` next to the find's `index.mdx`) — the grid looks broken with fewer than four image cards. Hero-less finds may ride along beyond the four. Above 8 the grid stops being scannable.
- Hold **3-8 items**, of which **at least 2 have a hero image** (`hero.<ext>` next to the find's `index.mdx`) — with 01 images the grid reads as a wall of text. Hero-less finds ride along freely; beyond the floor, aim for ~4 heroes, and give bigger clusters (78 items) proportionally more. Above 8 the grid stops being scannable.
- Be **distinct from existing bundles** in angle, even if a couple of items repeat.
If a cluster can't meet the hero floor, **hold it back** rather than pad it with misfits or write it thin — record it as deferred (theme + items + which lack heroes) and revisit when a fourth hero-bearing find emerges.
If a cluster can't meet the hero floor, **hold it back** rather than pad it with misfits or write it thin — record it as deferred (theme + items + which lack heroes) and revisit when enough hero-bearing finds emerge.
Coverage check: after partitioning, every find should appear in at least one cluster (existing or new). If a find genuinely fits no theme, leave it uncovered and report it — don't pad a cluster with a misfit. Finds left homeless only because their cluster was deferred for the hero floor count as covered-pending — list them under the deferred cluster, not as uncovered.
@@ -94,7 +94,7 @@ Body rules (same as `build-bundle`):
### 6. Verify
- Every slug in every `items[]` must exist at `src/content/find/<year>/<month>/<slug>/index.mdx` (locate with `find src/content/find -type d -name "<slug>"`). Confirm before declaring done.
- Every bundle meets the hero floor: at least 4 of its `items[]` folders contain a `hero.*` file.
- Every bundle meets the hero floor: at least 2 of its `items[]` folders contain a `hero.*` file.
- Run `npm run build`. If any bundle fails to compile, fix and re-run.
### 7. Update the log