diff --git a/AGENTS.md b/AGENTS.md index ecb41e3..eaa4bd4 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -91,8 +91,9 @@ should carry this so any vendor's agent surfaces pending items at session start: - The git-tracking standard ("What git tracks") is now in `portability.md`, and this repo's `.gitignore` follows it. - `/roundup` is built: a cross-project status report that reads every repo's - AGENTS.md/ROADMAP.md plus the inbox and groups all to-dos by priority — reads and reports - only; deciding focus stays with the user. + AGENTS.md/ROADMAP.md plus the inbox and groups all to-dos by priority. It now **writes a + tracked `STATUS.md` snapshot** to the standards repo each run (overwritten, committed + + pushed — diffable over time) alongside the inline report; deciding focus stays with the user. - The cross-repo git-hygiene audit (ROADMAP item 6) is **DONE**: all 9 git repos under `~/Projects` audited (one read-only `portability-checker` each). No safety issues anywhere — zero tracked `.env`/`.DS_Store`/`*.local.json`, all in-repo symlinks relative. 6 repos diff --git a/README.md b/README.md index c5fef0c..7f9f6d6 100644 --- a/README.md +++ b/README.md @@ -43,6 +43,6 @@ The governing question: **would a different agent need this to work on the repo? One session = one task. Close every session with `/handoff` (updates Current state in AGENTS.md, commits, pushes). `/compact` is for mid-task overflow only, never to extend a finished chat. Dropped or closed by accident? `claude -c` resumes the latest session in that folder. -Between tasks, ideas flow through the inbox: `/capture` logs an idea or bug for any repo to `INBOX.md` from wherever you are (no routing decision at capture time); `/triage`, run inside a project, drains that repo's items into its Current state or `ROADMAP.md`; and `/roundup` reads every repo's AGENTS.md/ROADMAP plus the inbox and compiles one priority-grouped to-do list across all projects (reports only — deciding focus stays with you). Canonical home: `AGENTS.md` → "The capture → triage → roadmap loop." +Between tasks, ideas flow through the inbox: `/capture` logs an idea or bug for any repo to `INBOX.md` from wherever you are (no routing decision at capture time); `/triage`, run inside a project, drains that repo's items into its Current state or `ROADMAP.md`; and `/roundup` reads every repo's AGENTS.md/ROADMAP plus the inbox and compiles one priority-grouped to-do list across all projects, written to a tracked `STATUS.md` snapshot in the standards repo (it gathers and groups — deciding focus stays with you). Canonical home: `AGENTS.md` → "The capture → triage → roadmap loop." Full daily rhythm: retrofit-playbook.md, Part 5. diff --git a/ROADMAP.md b/ROADMAP.md index 54fa68c..2b26d7c 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -46,10 +46,11 @@ checklist doc alongside the other four standards docs. Built and live: `guides/roundup.md` + `adapters/claude/commands/roundup.md`. Fans out a read-only reader per repo over AGENTS.md/ROADMAP.md, folds in the inbox, and synthesizes one -priority-grouped to-do list across all projects; reads and reports only (prioritizing stays -with the user). **Remaining option:** output is shown inline by default — decide later -whether to also persist a `STATUS.md` in the standards repo for diffing over time like -`EVALUATION.md`. +priority-grouped to-do list across all projects (prioritizing stays with the user). Every run +**writes the report to a tracked `~/Projects/standards/STATUS.md` snapshot** (overwritten each +run, then committed + pushed) so the portfolio state is diffable over time — and shows the +same report inline. That snapshot file is the *only* thing roundup writes; all project repos +stay read-only. ## 3. Deterministic inbox surfacing — SessionStart hook (optional upgrade over the portable line) diff --git a/adapters/claude/commands/roundup.md b/adapters/claude/commands/roundup.md index 6e14d0f..5c27d12 100644 --- a/adapters/claude/commands/roundup.md +++ b/adapters/claude/commands/roundup.md @@ -1,5 +1,5 @@ --- -description: Cross-project status roundup — read every repo's AGENTS.md/ROADMAP.md plus the inbox and compile one priority-grouped to-do list across all projects +description: Cross-project status roundup — read every repo's AGENTS.md/ROADMAP.md plus the inbox, compile one priority-grouped to-do list across all projects, and write it to a tracked STATUS.md snapshot in the standards repo argument-hint: [optional focus, e.g. "only P0/P1" or a subset of repos] allowed-tools: Bash, Read, Grep, Glob, Agent, Write --- @@ -15,6 +15,8 @@ per repo, the inbox pass, and the report format — is at: Read it in full first, then follow it exactly. If you cannot read that file, stop and report precisely that — do not improvise the roundup. -Read and report only: gather and group by the priorities you find, but do not rank the -projects against each other or tell me what to work on — deciding the best use of time is -mine. After you present the report, help me reason about ordering only if I ask. +Write exactly one file — the `STATUS.md` snapshot in the standards repo (committed + pushed +so it's tracked and diffable over time); every project repo stays read-only. Don't decide for +me: gather and group by the priorities you find, but do not rank the projects against each +other or tell me what to work on — deciding the best use of time is mine. After you present +the report, help me reason about ordering only if I ask. diff --git a/guides/roundup.md b/guides/roundup.md index c5c88a4..1de969d 100644 --- a/guides/roundup.md +++ b/guides/roundup.md @@ -42,13 +42,14 @@ existing one. Wait for all readers before synthesizing. If a reader fails or a repo has neither file, note it honestly rather than dropping the repo. -## Phase 3 — Synthesize (one report) +## Phase 3 — Synthesize (one report → STATUS.md + inline) -Present ONE report in the chat. Default to showing it inline; if the user wants a tracked -snapshot they can diff over time (like `EVALUATION.md`), offer to write it to -`~/Projects/standards/STATUS.md` — their call, and don't commit it yourself. +Produce ONE report. **Write it to `~/Projects/standards/STATUS.md`**, overwriting the +previous snapshot, **and** show the same report inline in the chat — the file is the durable, +diffable record; the inline copy is for reading right now. Title it with today's date (run +`date +%F`). -Structure: +Structure (used identically for the file and the inline copy): ``` # Roundup — @@ -73,9 +74,26 @@ The (new)/(new:name) inbox items — ideas awaiting the new-repo bootstrap. Repos missing AGENTS.md or a Current state; stale-looking states; anything that blocked a reader. ``` +## Phase 4 — Persist the snapshot + +`STATUS.md` is only a *tracked* snapshot if it's committed — that's the whole point of the +file (a dated history you can diff over time). So after writing it, commit and push **only +that file** to the standards repo, without asking (the same durability reflex as `/capture`): + +- `git -C ~/Projects/standards add STATUS.md` +- `git -C ~/Projects/standards commit -m "Roundup snapshot — " -- STATUS.md` + (the `-- STATUS.md` pathspec commits only the snapshot — never sweep unrelated standards + changes into a roundup commit) +- `git -C ~/Projects/standards push` (only if a remote is configured; if the push fails, + report it but don't treat the snapshot as lost — it's committed locally) + +This write-and-commit of `STATUS.md` is the *only* thing `/roundup` changes on disk; +everything else — every project repo, every other file — stays strictly read-only. + ## Rules -- Read-only. The only file you may write is `STATUS.md`, and only if the user asks for it. +- The only file you may write or commit is `~/Projects/standards/STATUS.md` (the snapshot). + Every project repo and every other file stays strictly read-only — never edit or commit them. - Quote priorities and states as found; never re-rank projects or recommend what to do next unprompted — that's the user's call. - Preserve every item; if you can't place one, list it under "needs triage" rather than