aboutsummaryrefslogtreecommitdiff
path: root/todo.org
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-06-23 22:38:43 -0400
committerCraig Jennings <c@cjennings.net>2026-06-23 22:38:43 -0400
commit27da1f1d3290314d32455eac4e049118b00a7a13 (patch)
tree900cd462338236f16b0ecae17f942dfb239e0eab /todo.org
parent6ad044254ee6e7504429b4aba0ef39a71242e599 (diff)
downloadrulesets-27da1f1d3290314d32455eac4e049118b00a7a13.tar.gz
rulesets-27da1f1d3290314d32455eac4e049118b00a7a13.zip
docs: inbox-consolidation spec + backlog filings
The inbox-workflow consolidation reached a Ready spec — one inbox.org engine with process/monitor/roam modes, plus "auto inbox zero" as the interactive recurring roam check (the fully-unattended cron pass deferred to vNext). Files the backlog surfaced while triaging the inbox: the wrap-it-up teardown proposal, the agent-source improvements, the consolidation task itself, and the deferred unattended-cron pass.
Diffstat (limited to 'todo.org')
-rw-r--r--todo.org37
1 files changed, 33 insertions, 4 deletions
diff --git a/todo.org b/todo.org
index 4418afa..c6ab9d9 100644
--- a/todo.org
+++ b/todo.org
@@ -34,14 +34,35 @@ Tags are assigned and refreshed by =task-audit=; =task-review= keeps them honest
* Rulesets Open Work
-** DONE [#C] Bash/shell language bundle :feature:
-CLOSED: [2026-06-23 Tue]
+** TODO [#D] Fully-unattended scheduled inbox check (/schedule cron pass) :feature:
:PROPERTIES:
:CREATED: [2026-06-23 Tue]
:END:
-Built =languages/bash/= the same session it was filed: bash.md + bash-testing.md rules, a shellcheck PostToolUse validate hook (covers =.sh=, =.bash=, and extensionless shell scripts by shebang; 8 bats tests), a shellcheck pre-commit githook, settings.json wiring, gitignore-add.txt, and a "Bash/shell project" CLAUDE.md. shfmt left out of the blocking path on purpose (shell has no canonical style). Makefile test target now discovers =languages/*/tests/*.bats=.
+vNext from the inbox-consolidation spec. =auto inbox zero= (v1) is the interactive =/loop= recurring check that waits for Craig's yes before executing. A fully-unattended =/schedule= cron pass that fires while Craig is away needs its own contract before it can ship: read-only vs may-mutate =todo.org= / =~/org/roam/inbox.org=, how a find surfaces asynchronously when Craig isn't at the session, how dedup state persists across runs that don't share a session, and what session/auth context a cron run carries. Design it after v1 consolidation lands. From the inbox-consolidation spec-review (Codex finding 1). See [[file:docs/inbox-workflow-consolidation-spec.org][spec]].
-No =languages/= bundle fits a shell-heavy project. archangel (437 =.sh= files) and archsetup are bash projects with nothing that matches; installing elisp/python gives them the wrong language rules. Build a =languages/bash/= bundle on the elisp/go pattern: =claude/rules/bash.md= (style — =set -euo pipefail=, quoting, =[[ ]]=, trap/cleanup) + =bash-testing.md= (bats conventions), a PostToolUse validate hook (=shellcheck= on edited =.sh=), a =githooks/pre-commit= running shellcheck on staged shell files, =settings.json= wiring, =gitignore-add.txt=, and its own =CLAUDE.md= headed "Bash/shell project." Urgency dropped 2026-06-23: install-lang now seeds the language-neutral default CLAUDE.md when a bundle ships none, so a bash project no longer gets a mislabeled "Elisp project" header — the bundle is now the accurate-rules win, not a mislabel fix. From archangel 2026-06-23 ([[file:docs/design/2026-06-23-install-lang-claude-md-gap.org][handoff]]).
+** TODO [#B] Consolidate inbox/triage workflows + scheduled inbox check :chore:
+:PROPERTIES:
+:CREATED: [2026-06-23 Tue]
+:END:
+Consolidate the four inbox-named workflows (=process-inbox=, =monitor-inbox=, =inbox-zero=, + nudges) into one =inbox.org= engine with process/monitor/roam modes; =triage-intake= and =no-approvals= stay separate. Plus a documented scheduled inbox check (=/schedule= / =/loop=) with keywords. Spec drafted, awaiting Craig's 4 decisions (engine shape A vs C, phrase preservation, triage-intake-separate, scheduled-check keywords): [[file:docs/inbox-workflow-consolidation-spec.org][spec]]. Then spec-review → spec-response → build. Sequenced before the agent-neutrality workflow sweep. From the roam inbox 2026-06-23.
+
+** TODO [#B] wrap-it-up teardown + "wrap it up and shutdown" :feature:
+:PROPERTIES:
+:CREATED: [2026-06-23 Tue]
+:END:
+Two additions to =wrap-it-up.org=, designed by Craig (home, 2026-06-23). Item 1: bare "wrap it up" also tears down the session — kill the =aiv-<proj>= tmux session (takes =claude= with it), kill the vterm buffer, restore geometry. Teardown is the default; "wrap it up with summary" wraps without teardown (keeps the buffer readable). Must fire from a Stop/SessionEnd hook via a sentinel file, decoupled and last, so the valediction flushes before the session dies, and strictly after commit+push is verified. Item 2: "wrap it up and shutdown" → wrap, then a hard blocking gate (abort unless this is the only live =aiv-*= session), then an abort-able 10→1 countdown, then =sudo shutdown now=. Countdown can't run through the Bash tool (stdout buffers — prints all ten at once); needs a detached tty writer or an Emacs =run-at-time= timer. Companion: =cj/ai-term-quit= (and optional =cj/ai-term-live-count=) must live in =.emacs.d/modules/ai-term.el= — route there via inbox-send when building so both sides land together. Open decisions for Craig first: qualifier wording ("with summary" vs "and summarize"), countdown home (tty script vs Emacs timer), session-count mechanism (=tmux ls= / =pgrep claude= / helper). Shared-asset, review-gated. Proposal: [[file:docs/design/2026-06-23-wrap-teardown-shutdown-proposal.org][proposal]]. From home 2026-06-23.
+
+** TODO [#C] inbox-zero: delete empty roam entries on triage :feature:
+:PROPERTIES:
+:CREATED: [2026-06-23 Tue]
+:END:
+=inbox-zero.org= should drop empty/blank entries from =~/org/roam/inbox.org= whenever it triages the file (a heading with no body and no actionable content is noise). Fold into Phase D's reconcile, after the capture-guard and pull, before/with the claimed-item removal. Shared-asset, review-gated. From the roam inbox 2026-06-23.
+
+** TODO [#C] Multiple agent-source improvements :spec:
+:PROPERTIES:
+:CREATED: [2026-06-23 Tue]
+:END:
+Make the tooling agent-agnostic instead of Claude-specific. Three threads from Craig (roam 2026-06-23): (1) give the agent a name so workflows don't say "Claude" everywhere — a non-Claude agent (Codex) reading "you are Claude" gets confused; evaluate whether naming resolves the confusion or whether other spots also leak Claude-specificity. (2) Pull agent-neutral content out of Anthropic-specific files (=CLAUDE.md=) into a shared source that each agent's own entry file points to, so Codex (which runs more literal) reads the same rules; or link =CLAUDE.md= and the Codex equivalent to one source. Have Codex review the workflows for literal-reading wording gaps. (3) Send =.emacs.d= a note (inbox-send) to let =ai-term= launch Claude / Codex / a local ollama LLM, switchable seamlessly at session start. Spec-shaped — needs design before build. From the roam inbox 2026-06-23 (deferred from the 2026-06-21 session).
** TODO [#B] Anki deck name from #+TITLE :bug:
:PROPERTIES:
@@ -2880,3 +2901,11 @@ Touches four synced template workflows and needs a curation pass on the best-pra
Drafted [[file:docs/design/2026-06-16-encourage-kb-contribution-spec.org][the KB-contribution spec]]: four light workflow prompts (startup nudge, triage-intake + inbox-zero end-of-flow reminders, an early wrap-up reflection feeding the existing KB receipt) plus one Craig-authored best-practices node curated from Ahrens / Matuschak / org-roam guidance. Five open sub-decisions filed as decisions-as-TODO in the spec.
*** 2026-06-20 Sat @ 23:29:10 -0400 Spec ratified + built
Craig ratified all five decisions (2026-06-20) and added D6 — a read-side startup consult-nudge surfacing project-relevant KB node titles, the counterpart the original write-only design lacked. Built all of it: the best-practices node (=~/org/roam/agents/20260620232112-agent-kb-best-practices.org=), startup's two Phase C nudges (consult + contribute, gated on the roam clone), the conditional capture reminders in triage-intake + inbox-zero, and the early wrap-up reflection feeding the existing receipt. Commits 76e5559 (workflows + spec) and the related lint checker f6dde4e. Trigger for the build: receipt data showed "promoted 0 / consulted no" across recent sessions.
+** DONE [#C] Bash/shell language bundle :feature:
+CLOSED: [2026-06-23 Tue]
+:PROPERTIES:
+:CREATED: [2026-06-23 Tue]
+:END:
+Built =languages/bash/= the same session it was filed: bash.md + bash-testing.md rules, a shellcheck PostToolUse validate hook (covers =.sh=, =.bash=, and extensionless shell scripts by shebang; 8 bats tests), a shellcheck pre-commit githook, settings.json wiring, gitignore-add.txt, and a "Bash/shell project" CLAUDE.md. shfmt left out of the blocking path on purpose (shell has no canonical style). Makefile test target now discovers =languages/*/tests/*.bats=.
+
+No =languages/= bundle fits a shell-heavy project. archangel (437 =.sh= files) and archsetup are bash projects with nothing that matches; installing elisp/python gives them the wrong language rules. Build a =languages/bash/= bundle on the elisp/go pattern: =claude/rules/bash.md= (style — =set -euo pipefail=, quoting, =[[ ]]=, trap/cleanup) + =bash-testing.md= (bats conventions), a PostToolUse validate hook (=shellcheck= on edited =.sh=), a =githooks/pre-commit= running shellcheck on staged shell files, =settings.json= wiring, =gitignore-add.txt=, and its own =CLAUDE.md= headed "Bash/shell project." Urgency dropped 2026-06-23: install-lang now seeds the language-neutral default CLAUDE.md when a bundle ships none, so a bash project no longer gets a mislabeled "Elisp project" header — the bundle is now the accurate-rules win, not a mislabel fix. From archangel 2026-06-23 ([[file:docs/design/2026-06-23-install-lang-claude-md-gap.org][handoff]]).