diff options
| author | Craig Jennings <c@cjennings.net> | 2026-05-28 03:22:25 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-05-28 03:22:25 -0500 |
| commit | 55adf6e304d1325861710c0475c3db377d4c0506 (patch) | |
| tree | b4f61d58cad586a821c9c9e89862507446f5efc7 /.ai/workflows/spec-review.org | |
| parent | e83e323148e1c4295233a25b1375f661cc65fbef (diff) | |
| download | rulesets-55adf6e304d1325861710c0475c3db377d4c0506.tar.gz rulesets-55adf6e304d1325861710c0475c3db377d4c0506.zip | |
feat(workflows): add iteration-history requirement to spec workflows
Specs reviewed under either workflow now carry a bottom =Review and iteration history= section. Each entry is an org subheading with a compound id (timestamp, contributor, role) plus What/Why/Artifacts body fields. The id is opaque. Timestamp, contributor, and role concatenate without implying any decision ordering.
spec-review.org adds the gate item, the entry-shape spec, and a "Preserve iteration provenance" principle. spec-response.org adds the matching Phase 4 step and a "history explains provenance" principle. Canonical and mirror updated together.
Diffstat (limited to '.ai/workflows/spec-review.org')
| -rw-r--r-- | .ai/workflows/spec-review.org | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/.ai/workflows/spec-review.org b/.ai/workflows/spec-review.org index 2bdcf73..d0c49c2 100644 --- a/.ai/workflows/spec-review.org +++ b/.ai/workflows/spec-review.org @@ -29,7 +29,8 @@ A review is complete when: 1. *The implementation-readiness gate has been evaluated* and a rubric label assigned (=Ready= / =Ready with caveats= / =Not ready= / =Needs research=). 2. *If ready:* the user is told plainly ("This spec is implementation-ready. I have no further blocking review notes."), and the review stops — no churn for its own sake. 3. *If not ready:* a =<spec>-review.org= file is written next to the spec, in the standard structure, with every finding specific and actionable (current behavior named, risk explained, change recommended, blocking-or-not stated). -4. *Deferred work is logged* to =todo.org= (v1 = =[#B]=, vNext/someday = =[#D]=), not left only in chat. +4. *The spec's review history is updated* with who reviewed it, when, which iteration it was, what changed or was recommended, and why. +5. *Deferred work is logged* to =todo.org= (v1 = =[#B]=, vNext/someday = =[#D]=), not left only in chat. *Measurable validation:* after reading the review, an implementer knows exactly what to decide or change before starting, and an author running spec-response can give every finding an accept/modify/reject without guessing what it means. @@ -155,6 +156,22 @@ The most useful reviews move a spec from =Not ready= to =Ready with caveats= or Finding severity maps to blocking power: *high-priority findings block =Ready=* — they hold the rubric at =Not ready= (or =Ready with caveats= if the author accepts and tracks them) until dispositioned; *medium-priority findings are the author's discretion* and don't block. State the blocking status on each finding so the author running spec-response knows which ones gate the rubric. +Then update the spec's review history. Specs should carry a bottom section named =Review and iteration history= (or the nearest existing equivalent) that tracks each material author/reviewer pass. Add a concise entry for this review even when the spec is ready and no review file is written. + +Each entry is an org subheading with a compound id followed by three body fields. + +Heading format: =YYYY-MM-DD Day @ HH:MM:SS -ZZZZ — Contributor — Role= + +The timestamp + contributor + role concatenate as an opaque id — nothing more should be read into it. Timestamp matches the project's todo-format event-log convention and gives natural temporal sort without implying any decision ordering. Contributor uses short parenthetical project context where session matters (e.g. =Claude Code (linear-emacs)=, =Claude Code (rulesets)=, =Codex=, =Craig Jennings=). Role can be compound (e.g. =reviewer + responder=) when one pass fused multiple roles. Author, reviewer, responder, verifier, and researcher are the standard role names. + +Body fields: + +- *What changed or was recommended:* high-signal summary, not a duplicate of the whole review. +- *Why:* the decision pressure or rationale that caused the contribution. +- *Artifacts:* links to the review file, response/disposition section, commits, task IDs, or source checks when useful. + +If the spec has no such section, add it at the bottom. Keep the history short and cumulative; it is provenance for future readers, not a session transcript. + Then log deferred work to =todo.org=: v1 implementation = =[#B]= (unless urgent or speculative); vNext/someday = =[#D]=. Tag =:feature:= / =:bug:= / =:refactor:= / =:test:= / =:quick:= / =:solo:= only when accurate. Don't leave important deferred decisions only in chat. * Principles to Follow @@ -173,6 +190,9 @@ The spec says fetched comments render as subheadings but doesn't define whether ** Decide readiness first, critique second The gate is the product of the review. A long critique on a spec that's actually ready just creates churn; a "looks fine" on one that isn't ships hidden decisions. +** Preserve iteration provenance +Future reviewers and implementers need to know not just the current decision, but how the spec got there: how many review/response loops happened, who contributed, what they changed or recommended, and why. Keep that record in the spec itself under =Review and iteration history= so the trail survives deleted review files, chat loss, and agent handoffs. + ** Be strict about ownership Especially for org-mode features: a user treats visible text as editable unless the representation says otherwise. Make generated-vs-editable explicit. |
