diff options
| author | Craig Jennings <c@cjennings.net> | 2026-06-02 21:22:43 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-06-02 21:22:43 -0500 |
| commit | 291103803495cd1937244dc7c993faaaf00023ab (patch) | |
| tree | 6944bb3ed502665dddfd634297471a4106b7030b | |
| parent | 2cff51e377c89e325ccbc10fae7c76b730a88571 (diff) | |
| download | rulesets-291103803495cd1937244dc7c993faaaf00023ab.tar.gz rulesets-291103803495cd1937244dc7c993faaaf00023ab.zip | |
feat(task-audit): chain a task-review pass as the final phase
A task audit verified the surviving tasks are factually honest but left their relevance and priority untouched, so keeping the list lean still needed a separate task-review run. Added Phase F: after the audit stamps :LAST_AUDIT:, run task-review on the oldest-unreviewed batch in the same pass. The two stay distinct (audit owns facts and :LAST_AUDIT:, review owns relevance and the per-task :LAST_REVIEWED:); chaining just refreshes both markers in one invocation. open-tasks does not invoke task-review, so nothing there needed to change. Mirror synced.
| -rw-r--r-- | .ai/workflows/task-audit.org | 10 | ||||
| -rw-r--r-- | claude-templates/.ai/workflows/task-audit.org | 10 | ||||
| -rw-r--r-- | todo.org | 3 |
3 files changed, 20 insertions, 3 deletions
diff --git a/.ai/workflows/task-audit.org b/.ai/workflows/task-audit.org index c999dab..5269563 100644 --- a/.ai/workflows/task-audit.org +++ b/.ai/workflows/task-audit.org @@ -12,7 +12,7 @@ That distinction is the whole point, and it separates this workflow from its two - =task-review.org= — *relevance/priority hygiene*: walk the oldest-unreviewed tasks, re-grade / keep / kill / mark DOING, stamp =:LAST_REVIEWED:=. Decides whether a task still belongs and at what priority. - =task-audit.org= (this one) — *content reconciliation*: take the surviving tasks and check their recorded facts against reality (sessions, email, chat, ticketing, calendar, meeting recordings), update the stale facts, mark statuses that moved, consolidate duplicates, and flag the judgment calls only the user can answer. -They compose: =task-review= keeps the list lean; =task-audit= keeps the survivors honest. Run a task audit when a task's *content* looks stale (a "waiting on X" that already happened, a date that passed, a status that moved), not just when its priority is in question. +They compose: =task-review= keeps the list lean; =task-audit= keeps the survivors honest. Run a task audit when a task's *content* looks stale (a "waiting on X" that already happened, a date that passed, a status that moved), not just when its priority is in question. As its final phase, =task-audit= chains a =task-review= pass (Phase F), so one audit run also refreshes relevance and priority without a second invocation. * When to Use This Workflow @@ -98,6 +98,14 @@ Use today's =date= output (=date "+%Y-%m-%d"=). Overwrite the previous value — If the *Workflow State* section doesn't exist yet, create it (placement: after *Active Reminders*). Other workflows (notably =open-tasks.org= Next Mode's audit-warranted check) read this marker to decide whether to offer running another audit. +** Phase F — Chain a task-review pass + +The audit confirmed the surviving tasks are factually honest. The lighter relevance/priority sweep is the natural follow-on, and running it here spares a second invocation. After Phase E's stamp, run [[file:task-review.org][task-review.org]] as the final phase: select the oldest-unreviewed batch, walk it (re-grade / keep / kill / mark DOING), and stamp =:LAST_REVIEWED:= per that workflow. + +The split holds. =task-audit= owns factual accuracy and the =:LAST_AUDIT:= marker; =task-review= owns relevance, priority, and the per-task =:LAST_REVIEWED:= marker. Chaining keeps both markers fresh in one pass without merging the two concerns. Under no-approvals mode, the review walk proceeds under the same mode. + +Skip the chain only when the user scoped the run to "audit only," or when =task-review= already ran today (its =:LAST_REVIEWED:= stamps are current). Otherwise it runs by default. + * Common Mistakes 1. *Guessing a judgment call instead of flagging it.* If the answer isn't in the sources, it's bucket 3. Ask. diff --git a/claude-templates/.ai/workflows/task-audit.org b/claude-templates/.ai/workflows/task-audit.org index c999dab..5269563 100644 --- a/claude-templates/.ai/workflows/task-audit.org +++ b/claude-templates/.ai/workflows/task-audit.org @@ -12,7 +12,7 @@ That distinction is the whole point, and it separates this workflow from its two - =task-review.org= — *relevance/priority hygiene*: walk the oldest-unreviewed tasks, re-grade / keep / kill / mark DOING, stamp =:LAST_REVIEWED:=. Decides whether a task still belongs and at what priority. - =task-audit.org= (this one) — *content reconciliation*: take the surviving tasks and check their recorded facts against reality (sessions, email, chat, ticketing, calendar, meeting recordings), update the stale facts, mark statuses that moved, consolidate duplicates, and flag the judgment calls only the user can answer. -They compose: =task-review= keeps the list lean; =task-audit= keeps the survivors honest. Run a task audit when a task's *content* looks stale (a "waiting on X" that already happened, a date that passed, a status that moved), not just when its priority is in question. +They compose: =task-review= keeps the list lean; =task-audit= keeps the survivors honest. Run a task audit when a task's *content* looks stale (a "waiting on X" that already happened, a date that passed, a status that moved), not just when its priority is in question. As its final phase, =task-audit= chains a =task-review= pass (Phase F), so one audit run also refreshes relevance and priority without a second invocation. * When to Use This Workflow @@ -98,6 +98,14 @@ Use today's =date= output (=date "+%Y-%m-%d"=). Overwrite the previous value — If the *Workflow State* section doesn't exist yet, create it (placement: after *Active Reminders*). Other workflows (notably =open-tasks.org= Next Mode's audit-warranted check) read this marker to decide whether to offer running another audit. +** Phase F — Chain a task-review pass + +The audit confirmed the surviving tasks are factually honest. The lighter relevance/priority sweep is the natural follow-on, and running it here spares a second invocation. After Phase E's stamp, run [[file:task-review.org][task-review.org]] as the final phase: select the oldest-unreviewed batch, walk it (re-grade / keep / kill / mark DOING), and stamp =:LAST_REVIEWED:= per that workflow. + +The split holds. =task-audit= owns factual accuracy and the =:LAST_AUDIT:= marker; =task-review= owns relevance, priority, and the per-task =:LAST_REVIEWED:= marker. Chaining keeps both markers fresh in one pass without merging the two concerns. Under no-approvals mode, the review walk proceeds under the same mode. + +Skip the chain only when the user scoped the run to "audit only," or when =task-review= already ran today (its =:LAST_REVIEWED:= stamps are current). Otherwise it runs by default. + * Common Mistakes 1. *Guessing a judgment call instead of flagging it.* If the answer isn't in the sources, it's bucket 3. Ask. @@ -34,7 +34,8 @@ Tags are assigned and refreshed by =task-audit=; =task-review= keeps them honest * Rulesets Open Work -** TODO [#C] task-review pass at end of task-audit :chore:solo: +** DONE [#C] task-review pass at end of task-audit :chore:solo: +CLOSED: [2026-06-02 Tue] :PROPERTIES: :LAST_REVIEWED: 2026-06-02 :END: |
