aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-05-16 05:18:45 -0500
committerCraig Jennings <c@cjennings.net>2026-05-16 05:18:45 -0500
commit684891d57166953f4314b060afc78403a1d6976d (patch)
tree11ec97dfa87576c79faf9fd49517674aa9bf72d4
parent9b16fd8c9d5a9707608dec8c6a3c87b79b45863c (diff)
downloadrulesets-684891d57166953f4314b060afc78403a1d6976d.tar.gz
rulesets-684891d57166953f4314b060afc78403a1d6976d.zip
fix(workflows): default LINT_ORG_FOLLOWUPS to current project inbox
wrap-it-up's lint-org and date-coverage scans both defaulted LINT_ORG_FOLLOWUPS to `$HOME/projects/work/inbox/lint-followups.org`. The intent was to land findings where the next morning's daily-prep would pick them up. The bug: every project running wrap-up dumped its findings into the work project's inbox regardless of which project's todo.org was scanned. The fallback at `.ai/lint-followups.org` never fired because `$HOME/projects/work/inbox/` exists on every machine. I found this morning that work's inbox/lint-followups.org had accumulated lint output from .emacs.d, rulesets, and work across multiple wrap-up runs on 2026-05-15 and 2026-05-16. I routed the foreign sections back to the right inboxes via inbox-send. The fix changes the default to `./inbox/lint-followups.org` in the current project's cwd, with `.ai/lint-followups.org` as the fallback when the project has no `inbox/` directory. The env var still overrides for projects that want to route somewhere else. I applied the same change to both bash blocks (lint-org sweep at line 137, date-coverage scan at line 173) and rewrote the prose paragraph that documented the old default, with a note explaining why hardcoding a single project's path was wrong.
-rw-r--r--claude-templates/.ai/workflows/wrap-it-up.org32
1 files changed, 24 insertions, 8 deletions
diff --git a/claude-templates/.ai/workflows/wrap-it-up.org b/claude-templates/.ai/workflows/wrap-it-up.org
index 496bebe..e2a535b 100644
--- a/claude-templates/.ai/workflows/wrap-it-up.org
+++ b/claude-templates/.ai/workflows/wrap-it-up.org
@@ -134,8 +134,13 @@ emacs --batch -q -l .ai/scripts/todo-cleanup.el --check-child-priority todo.org
*** Lint org files (mechanical sweep, judgments deferred)
#+begin_src bash
-followups="${LINT_ORG_FOLLOWUPS:-$HOME/projects/work/inbox/lint-followups.org}"
-[ ! -d "$(dirname "$followups")" ] && followups=".ai/lint-followups.org"
+if [ -n "$LINT_ORG_FOLLOWUPS" ]; then
+ followups="$LINT_ORG_FOLLOWUPS"
+elif [ -d "./inbox" ]; then
+ followups="./inbox/lint-followups.org"
+else
+ followups=".ai/lint-followups.org"
+fi
[ -f todo.org ] && emacs --batch -q -l .ai/scripts/lint-org.el \
--followups-file="$followups" todo.org
#+end_src
@@ -148,11 +153,17 @@ links, verbatim-asterisk inside body prose, suspicious src-block languages)
to the follow-ups file as a dated org section. Mechanical fixes show up in
the wrap-up commit's diff for review before push.
-The follow-up path defaults to =~/projects/work/inbox/lint-followups.org=
-(where the next morning's daily-prep merges it in). If that directory
-doesn't exist on the machine, the script falls back to
+The follow-up path defaults to =./inbox/lint-followups.org= in the current
+project (where the next morning's daily-prep merges it in). If the project
+doesn't have an =inbox/= directory, the script falls back to
=.ai/lint-followups.org= inside the current project. Override with
-=LINT_ORG_FOLLOWUPS=<path>= in the environment if needed.
+=LINT_ORG_FOLLOWUPS=<path>= in the environment if needed — useful for
+routing all wrap-up output to a single shared inbox across projects.
+
+Each project's own =inbox/= is the right default because daily-prep reads
+that project's inbox at startup. Hardcoding a single project's path
+(formerly =~/projects/work/inbox/=) routed every project's wrap-up findings
+into the wrong inbox.
Preview without writing — same flags as =--check= on the other scripts:
@@ -170,8 +181,13 @@ Scan =todo.org= for open =[#A]= and =[#B]= tasks that have neither a =DEADLINE:=
The two timestamps mean different things (=DEADLINE:= = external, consequence-bearing; =SCHEDULED:= = social, accountability-bearing — see the priority spec at the top of =todo.org=). High-priority work that carries neither is suspicious: either it has an implicit deadline that should be made explicit, or it has someone waiting that should surface in the agenda, or its priority is wrong. The scan flags candidates; the operator decides.
#+begin_src bash
-followups="${LINT_ORG_FOLLOWUPS:-$HOME/projects/work/inbox/lint-followups.org}"
-[ ! -d "$(dirname "$followups")" ] && followups=".ai/lint-followups.org"
+if [ -n "$LINT_ORG_FOLLOWUPS" ]; then
+ followups="$LINT_ORG_FOLLOWUPS"
+elif [ -d "./inbox" ]; then
+ followups="./inbox/lint-followups.org"
+else
+ followups=".ai/lint-followups.org"
+fi
[ -f todo.org ] && awk '
/^\*\* (TODO|DOING|VERIFY) \[#[AB]\]/ {
if (heading != "" && !has_date) print line ": " heading