8 Commits
Author SHA1 Message Date
rzen 3af5185ae9 pipeline: consolidate content rules into EDITORIAL.md — the charter is now the source of truth; CLAUDE.md/TEAM.md/skills point to it 2026-07-16 17:39:23 -04:00
rzen 64bad7091b pipeline: EDITORIAL.md voice charter + fresh-eyes copy-edit stage
One written standard for every audience-facing word: concise, to the
point, inspiring delight through specificity — with word budgets per
copy type (reviews had drifted from a ~370-word median to 500-1000+).
All writing skills now reference the charter, and daily-pipeline gains
a stage-4 copy-edit pass: a subagent that didn't write the day's copy
tightens it against the charter, prose only, diff reviewed before
commit. Digest gains a copy-edit line.

Claude-Session: https://claude.ai/code/session_01WZaczDJjL3xZ3u5spsN5AL
2026-07-14 19:46:35 -04:00
rzen 06f8a9dc22 pipeline: hard editorial exclusion of tobacco and alcohol content
New rule at every selection stage: daily-finds drops such items at
capture (categorical, overrides design/gift appeal; borderline cases
skip too), build-bundle and cluster-bundles treat legacy alcohol
finds as ineligible for new bundles, and build-review refuses to
graduate them even on explicit slug. Existing finds stay published
per forward-only decision; CLAUDE.md records the policy centrally.

Claude-Session: https://claude.ai/code/session_01WZaczDJjL3xZ3u5spsN5AL
2026-07-14 09:03:05 -04:00
rzen f9bc8f93eb 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
2026-07-14 08:35:00 -04:00
rzen f0f1d8fb61 pipeline: hero floor — bundles require at least 4 items with hero images
Bundles now ship only when at least four of their items have a hero.*
image, purely so the grid never renders image-thin. Clusters that miss
the floor are held back and logged rather than padded or written thin;
the weekly catch widens its window to older unbundled hero-bearing
finds instead of holding. Capture gets a nudge to try a second image
source before giving up on a hero.

Claude-Session: https://claude.ai/code/session_01WZaczDJjL3xZ3u5spsN5AL
2026-07-14 08:08:57 -04:00
rzen 622d9d63fd pipeline: autonomous operation — shortlist stage, auto modes, daily-pipeline orchestrator
- daily-finds: feed-first fetch strategy (fetch: feed + feedUrl), cadence-aware
  scanning, new score-and-shortlist stage (shortlist: true, up to 12/day, top
  1-3 flagged as review candidates), Amazon affiliate lookup for shortlisted
  physical products, and authority to apply mechanical sources.json maintenance
  (skip dead sources, demote dormant ones, record working fetch paths) instead
  of logging recommendations nobody executes.
- build-bundle: auto mode (no confirmation gate when unattended) and a 'weekly'
  date-based catch mode so shortlisted finds never sit invisible for weeks.
- cluster-bundles: auto mode.
- build-review: hero.ts registration step removed (heroes auto-discovered from
  hero.<ext>); mandatory fact-check against the product's own site in auto
  mode; amazonLink carry-through; auto mode publishes and logs instead of
  pausing twice for approval.
- New daily-pipeline skill: capture → bundle → reviews → pick of the day →
  build → commit → push → digest, with granular per-stage commits. This is the
  entrypoint for scheduled runs.
- Project CLAUDE.md documenting the pipeline and its foot-gun conventions.
2026-07-03 15:21:27 -04:00
rzen c998a88934 site: bucket find/ folders by capture date + 2026-05-09 capture (67 finds)
Migrate every find from src/content/find/<slug>/ to src/content/find/<year>/<month>/<slug>/ — all 289 existing finds moved into 2026/05/. The find content-collection loader gets a new leafSlug generateId so ids (and therefore URLs at /find/<slug>/) stay flat; src/lib/find-hero.ts switches to a recursive **/hero glob. Bundle items[], promotedTo/fromFind keys, /sources cross-refs, and category/tag pages all keep working unchanged. Skill docs (daily-finds, build-review, build-bundle, cluster-bundles), README, and CHANGELOG updated for the new on-disk path.

Also: 67 new finds from the 2026-05-09 capture run (Web Curios 8, MoMA 7, r/macapps 7, r/dadjokes 6, icanhazdadjoke 6, Wallpaper* Travel 5, Snow Peak 5, Kottke 3, Boutique Homes 3, etc.); felo-ergonic-screwdriver-set rolled back per editorial decision.
2026-05-09 10:00:04 -04:00
rzen 049c6c5377 site: rename "finds" superpost collection to "bundles"
Disambiguates the one-letter `find` (item) vs `finds` (roundup) split that
kept causing confusion. Audience-facing now: `/bundles/<slug>/`, "Bundle"
labels in home/footer/search.

Internals: `getCollection('finds')` → `('bundles')`, `Entry.type 'finds'`
→ `'bundle'`, `OgFallback 'finds'` → `'bundles'`, `findListMosaic` →
`bundleMosaic`, `FindsPost` → `Bundle`, `findsReferencing` →
`bundlesReferencing`. Build script + generated mosaic dir follow
(`scripts/build-bundle-mosaics.mjs`, `src/generated/bundle-mosaics/`).

Skills `build-finds` → `build-bundle`, `cluster-finds` →
`cluster-bundles`. The `find` collection (individual items) is unchanged.

No URL redirects: low external-link surface area.
2026-05-06 20:43:22 -04:00