From 74a063bff5cfd1f77a4e9e86afb941ed8a32abc7 Mon Sep 17 00:00:00 2001 From: rzen Date: Sat, 18 Jul 2026 11:06:23 -0400 Subject: [PATCH] =?UTF-8?q?pipeline:=20pick=20decisions=20must=20be=20logg?= =?UTF-8?q?ed=20and=20committed=20every=20run=20=E2=80=94=20holds=20includ?= =?UTF-8?q?ed;=20digest=20alone=20is=20not=20a=20record?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .claude/skills/daily-pipeline/SKILL.md | 5 +++-- TEAM.md | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.claude/skills/daily-pipeline/SKILL.md b/.claude/skills/daily-pipeline/SKILL.md index 357462a..b302325 100644 --- a/.claude/skills/daily-pipeline/SKILL.md +++ b/.claude/skills/daily-pipeline/SKILL.md @@ -61,11 +61,12 @@ Make an explicit pick decision **every run** — the pick is a daily editorial c - "Strongest" = best hero visual + broadest audience appeal; when torn, the one whose virtue is most immediately legible from the tile. - New reviews usually win (freshness matters on a daily site), but a weak new review must not displace a strong current hero. - If the current hero has held for several days, lean toward rotating to another strong review even when nothing graduated — the homepage shouldn't look frozen. -- Keeping the current pick is a valid outcome, but it's a decision: say why in the digest. +- Keeping the current pick is a valid outcome, but it's a decision like any other. +- **Every pick decision gets a log entry — holds included.** Append `## YYYY-MM-DD — pick of the day: ` (or `— pick of the day: held `) to `daily-finds.log.md` with the reasoning: what it beat and why, or why the incumbent kept the slot. The digest line alone is not a record — the digest is ephemeral; the log is the audit trail. Write `src/data/pick.json` → `{"hero": ""}`. -**Commit** (only when the pick changed): `site: pick of the day — `. +**Commit** (every run): `site: pick of the day — ` when the pick changed (include the log entry); when held, commit the log entry alone as `content: pick held — `. ### 6. Verify + push diff --git a/TEAM.md b/TEAM.md index f86f8f2..4a7c4f5 100644 --- a/TEAM.md +++ b/TEAM.md @@ -19,7 +19,7 @@ Each role's prompt is its skill file — the canonical, version-controlled text. | **Curator** | 2 — bundle | `.claude/skills/build-bundle/SKILL.md`, `.claude/skills/cluster-bundles/SKILL.md` | Themes finds into bundles (the pool's discovery vehicle). Enforces the hero floor; holds themes that can't meet it. `cluster-bundles` is the batch variant when the backlog passes ~25. | | **Reviewer** | 3 — reviews | `.claude/skills/build-review/SKILL.md` | Graduates 2–4 shortlist finds to full reviews. Fact-check against the product's own site is mandatory unattended — it substitutes for the human eye. | | **Copy editor** | 4 — copy edit | Brief below (referenced from `daily-pipeline` stage 4); mandate: `EDITORIAL.md` | A fresh-eyes **sonnet subagent** that did not write the day's copy. Prose only; diff reviewed by the conductor before commit. | -| **Editor-in-chief (picker)** | 5 — pick of the day | `.claude/skills/daily-pipeline/SKILL.md` §5 | Explicit pick decision every run — front page must be uncontroversial; keeping the current pick is a decision that gets a stated reason. | +| **Editor-in-chief (picker)** | 5 — pick of the day | `.claude/skills/daily-pipeline/SKILL.md` §5 | Explicit pick decision every run — front page must be uncontroversial; every decision (holds included) gets a reasoned `daily-finds.log.md` entry and commit, not just a digest line. | | **Conductor** | 0, 6–7 | `.claude/skills/daily-pipeline/SKILL.md` | Preflight, verify (`npm run build` gate), push, digest. Owns all judgment calls and the digest the user actually reads. | ## House rules (bind every role)