plan(recipe-report): separate configurable report model (default opus); link CI results, no embedded images

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
autonomic-bot
2026-06-02 22:52:27 +00:00
parent 81984c84da
commit 73aa20e8ab

View File

@ -28,9 +28,14 @@ A tiny static-file server mirroring `dashboard.nix`:
## B. The skill — `.claude/skills/recipe-report/` (orchestrator repo)
A SKILL.md (LLM-driven review + HTML generation) + a helper script for the deterministic survey/scaffold.
- **Runs:** right after the weekly `/upgrade-all` completes. **Recommended:** the upgrader invokes
`/recipe-report` as its final step (it has the fresh run context + the dated summary). *(Alt: a separate
`cc-ci-recipe-report` systemd service `After=` the upgrade timer.)*
- **Runs as its OWN agent session — model independent of the upgrader.** The report must use a model
configured **separately** from the upgrader, so it canNOT be a step inside the sonnet upgrader session.
A new `launch-report.py` (mirroring `launch-upgrader.py`) starts a `cc-ci-report` session on
**`REPORT_MODEL` (default `opus`)** / `REPORT_BACKEND` (default `claude`) — independent of the
upgrader's `sonnet`. **Initial config: upgrader = sonnet, report = opus.** It's launched right after the
weekly `/upgrade-all` completes (the weekly job launches the report agent as its final step / a
follow-on). It reads the dated summary + PR/CI state from disk + the APIs, so it needs none of the
upgrader's in-context state.
- **Inputs:** the dated `upgrade-all-<date>.md` summary; open PRs per recipe (Gitea API); each recipe's
current vs latest version + CI verdict (Drone); the **previous** week's report (to note "new since last
week"). Runs from the orchestrator; writes the HTML to `cc-ci:/var/lib/cc-ci-reports` over ssh.
@ -47,6 +52,9 @@ Each `week-<date>.html`:
- **② Routine** (below): the less-important items (minor upgrades, stale-test, skipped) — compact.
- **③ Comprehensive table** (bottom): every recipe → `current → target` · upgrade status · CI verdict ·
open PR (link) · notes.
- **CI results: LINK only, no embedded images.** For each run, show its level/result as a number / short
info string (e.g. `level 8 ✓` or `RED · restore`) and hyperlink to the Drone build + dashboard summary —
do **not** embed the summary-card images.
- **Footer:** generated timestamp, link to the live dashboard (ci.commoninternet.net), link back to the index.
`index.html` (home): "The Recipe Report" + a reverse-chronological list of all weekly reports (date +
@ -68,8 +76,10 @@ Styling: self-contained, inline CSS, clean + mobile-friendly, no JS (fully stati
4. Page is public-safe (no secrets); renders cleanly on desktop + mobile.
5. NOT merged anything; the report only *reports* (read-only on PRs/CI).
## F. Open decisions
- Trigger: upgrader final step (recommended) vs separate timer.
- Static server: `nginx:alpine` new stack (recommended) vs extend the dashboard.
- Embed the dashboard's per-run summary-card images in the report, or just link them?
- Retention: keep all weekly reports indefinitely (they're tiny static HTML) — assumed yes.
## F. Decisions
- **Report model is separately configurable** — `REPORT_MODEL` (default **`opus`**), independent of the
upgrader (`sonnet`). The report runs as its own `cc-ci-report` agent (per §B). ✓ (operator-set)
- **CI results: link only**, with the level/result shown as a number/info string — no embedded images. ✓
(operator-set)
- Static server: `nginx:alpine` new stack (recommended) vs extend the dashboard. *(open)*
- Retention: keep all weekly reports indefinitely (tiny static HTML) — assumed yes. *(open)*