aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-05-29 20:05:37 -0500
committerCraig Jennings <c@cjennings.net>2026-05-29 20:05:37 -0500
commit1a322a70a630afd2495a6c2e88e860464f153c5f (patch)
tree094a53108f612aed51c02491b042f4f4c58e5e15
parent7e36d9d7a878ee592f7d21fa757ae9f6653446ca (diff)
downloadrulesets-1a322a70a630afd2495a6c2e88e860464f153c5f.tar.gz
rulesets-1a322a70a630afd2495a6c2e88e860464f153c5f.zip
chore(session): pre-stage signal-mcp config + snapshot session-context
This commit is end-of-day housekeeping for the rulesets session that ran 2026-05-28 through 2026-05-29. mcp/servers.json gains the signal-mcp stdio entry pointing at the locally-cloned rymurr/signal-mcp install at ~/.local/share/signal-mcp/. The entry uses Craig's primary +15103169357 as --user-id, which will need updating to the Google Voice number once that signal-cli registration lands (TODO scheduled today). The configuration is staged but not registered. The make install-mcp pipeline was interrupted earlier by the GPG pinentry (Craig on vacation, away from desk). Running make install-mcp at the desktop with the GPG passphrase will complete the registration. .ai/session-context.org captures the live session narrative covering the no-approvals batch (6 :quick:solo: TODOs), the codex backlog triage, the page-signal infra, the voice profile Phase 1 plus Phase 2, the SKILL.md / voice-profile.org structural split, and the inbox processing pass. No wrap-up performed. The session-context stays under that name pending the wrap-it-up workflow when Craig is back at the desk. The substantive work in this session shipped across many prior commits, each with its own focused message.
-rw-r--r--.ai/session-context.org126
-rw-r--r--mcp/servers.json10
2 files changed, 136 insertions, 0 deletions
diff --git a/.ai/session-context.org b/.ai/session-context.org
new file mode 100644
index 0000000..3bcfba0
--- /dev/null
+++ b/.ai/session-context.org
@@ -0,0 +1,126 @@
+#+TITLE: Session Context
+#+DATE: 2026-05-28
+
+* Summary
+
+** Active Goal
+
+(in progress)
+
+** Decisions
+
+** Data Collected / Findings
+
+** Files Modified
+
+** Next Steps
+
+* Session Log
+
+** 2026-05-28 07:56 CDT — Startup
+
+Clean startup (no crash-recovery file). Phase A.0 rulesets pull = already up to date; project repo refresh silent. Phase A snapshot: no reminders, no pending decisions, task-review staleness 0, language bundle clean, cross-agent queue empty, no startup-extras.
+
+Inbox held 5 unprocessed arrivals from this morning (all 2026-05-28 0124–0303), plus 1 PROCESSED-prefixed file:
+
+1. .emacs.d 0124 — extend open-tasks.org Next Mode with a pre-step that evaluates whether task-audit is warranted (temporal threshold + state-signal scan); third leg of the recommendation-first / hybrid-output / auto-audit triple.
+2. pearl 0138 — open-tasks.org should run =--archive-done= sweep as first step of Phase A so freshly-DONE tasks don't surface in "what's next."
+3. pearl 0155 — Pattern catalog: 2 more worked examples (label-matches-behavior, default-most-common with friction-proportional-to-consequence).
+4. pearl 0226 — spec-review.org Phase 6 should enumerate implementation tasks (drop-in for todo.org).
+5. pearl 0303 — Pattern 6: collapse N orthogonal prompts into one enriched prompt (cross-product form of the same UX principle).
+
+** 2026-05-28 08:00 CDT — Inbox item 1 implemented + priority scheme adopted
+
+Craig picked option 2 ("implement now"), then directed task-audit and task-review next, then added a new requirement: task-audit should enforce priority + tag every task with one of {feature, chore, spec, bug} (mandatory type) plus optional {quick, solo} (effort/autonomy). Also asked for a priority scheme posted at the top of todo.org.
+
+Research subagent surveyed five projects' priority schemes (Emacs, Pearl, Finances, ArchSetup, rulesets itself). All converge on =[#A]/[#B]/[#C]/[#D]= importance-driven semantics. Emacs has the cleanest verbatim legend. Finances adds importance-vs-urgency split. ArchSetup requires =[#A]= to carry a date.
+
+Priority scheme adopted for rulesets (in todo.org):
+- =[#A]=: urgent risk or current workflow blocker, requires SCHEDULED/DEADLINE date.
+- =[#B]=: important planned work.
+- =[#C]=: useful but optional.
+- =[#D]=: someday or watchlist.
+- Type tags (mandatory, one per task): =:feature:= / =:chore:= / =:spec:= / =:bug:=.
+- Effort/autonomy tags (optional, orthogonal): =:quick:= (≤30 min) and =:solo:= (end-to-end without Craig's input).
+
+LAST_AUDIT marker storage = =notes.org='s new Workflow State section (read by open-tasks.org Phase A.1).
+
+Two commits + push (=ee7049a..1f6cd40=):
+- =4f650f7= docs(todo): add priority and tag scheme
+- =ee7049a= feat(workflows): audit-warranted pre-step + priority and tag enforcement
+
+Each ran =/review-code= (Approve) + =/voice personal= walked inline.
+
+** 2026-05-28 08:18 CDT — Task audit + inbox spillover
+
+Ran task-audit under the new workflow on all 16 open tasks. Phase C (autonomous): tagged 13 tasks with their type tag, bumped LAST_REVIEWED, refreshed #15's body for the accumulating pearl signal. Phase D adjudication (Craig picked option 1): #15 bumped =[#C]= → =[#B]=; filed a new =[#B] :feature:= TODO for the codex Phase 1 race-fix (AI_AGENT_ID + session-context.d/<id>.org) lifted from #16's broader spec. Pearl intake: moved 0155 + 0303 into docs/design/ as pattern-catalog notes referenced from #15; filed 0138 and 0226 as new =[#C]= TODOs. Phase E stamped =:LAST_AUDIT: 2026-05-28= in notes.org.
+
+Caught a staleness false-positive on #15 (the dated sub-entry I added moved the PROPERTIES drawer below a level-3 heading, hiding LAST_REVIEWED from the awk-based checker). Fixed by moving the drawer to standard org placement immediately after the level-2 heading.
+
+Two commits + push:
+- =db7f827= chore(audit): task-audit pass + pearl intake from 2026-05-28 morning
+- =4a7beec= fix(todo): move task #15 PROPERTIES drawer above sub-headings
+
+Staleness check after the fix: 0 stale tasks. Task-review not needed.
+
+** 2026-05-28 08:23 CDT — no-approvals.org promoted + pearl framing merged
+
+Pearl's mid-session inbox arrival (=0814=) delivered its independently-built no-approvals workflow and asked rulesets to compare. The two converged on the same contract. Pearl's version brought a more prominent "What's Suspended" / "What Stays On" split, wider trigger phrases, a mode-resets-on-topic-shift guard, an explicit destructive-action carve-out, and a subagent-review-gate callout. Craig picked option 1 (promote + merge).
+
+Wrote the merged file at =claude-templates/.ai/workflows/no-approvals.org=, mirrored to =.ai/workflows/=, added an INDEX entry under "Tools and meta", deleted the project-only =.ai/project-workflows/no-approvals.org=, deleted the inbox file. History section at the bottom of the workflow records the merge.
+
+One commit + push:
+- =e8702d2= feat(workflows): promote no-approvals.org to template, merge pearl framing
+
+Inbox is now down to the PROCESSED-prefixed file from last session (open-tasks-hybrid-friction-cascade), which holds the integrated cascade+friction content. Not deleted — left for Craig's call.
+
+** 2026-05-28 — rulesets enhancement backlog and emacs ai-kb task read
+
+Codex created =inbox/enhancements.org= with 14 proposed rulesets improvements focused on agent efficiency, knowledge/effectiveness, token reduction, and user experience. Also searched =~/.emacs.d/todo.org= for agent/org-roam-related work and noted the primary open =Implement ai-kb= project (Step 2 org-roam ai-kb profile, edit-safety, browsing, keybinding, ERT-test children) plus a secondary =Org Workflow Related Tools= → =Org-roam node tools= child for exposing personal org-roam nodes/backlinks/dailies to agents as structured context.
+
+Wrote the org-roam shared human+agent KB brainstorm as an inbox item for the Emacs project and delivered it to =/home/cjennings/.emacs.d/inbox/2026-05-28-from-rulesets-org-roam-shared-agent-kb.org=. Staged the content briefly in rulesets' inbox for copying, then removed the local staging file so only the target project receives the item.
+
+** 2026-05-28 08:38 CDT — Codex backlog filed + inbox cleared
+
+Processed =inbox/enhancements.org=. Moved to =docs/design/2026-05-28-rulesets-enhancement-backlog.org= as the canonical reference. Filed a single =[#C] :spec:= TODO "Triage Codex enhancement backlog" to walk the 14 items and decide accept/fold/defer/reject for each — avoids exploding the open list into 14 speculative TODOs while preserving Codex's structure for triage. Two of the 14 already have homes: item #1 (runtime-neutral core) = #16; item #2 (per-agent live session files) = the Codex Phase 1 [#B] TODO filed earlier this session. The triage focuses on the remaining 12.
+
+Also cleared the last-session PROCESSED-prefixed inbox file (open-tasks-hybrid-friction-cascade) — the cascade+friction restructure it tracked landed in this morning's open-tasks.org edits, so the reference is no longer needed.
+
+One commit + push:
+- =3db49d4= chore(intake): file codex enhancement backlog as docs/design + triage TODO
+
+Inbox empty.
+
+** 2026-05-28 08:50 CDT — Codex backlog triaged into actionable TODOs
+
+Craig asked which of the 14 items I'd actually endorse against my own standards. Walked them one by one. Net: 3 strong endorses, 5 selective/pilot, 6 rejects with rationale.
+
+Craig picked option 1 (rewrite the triage TODO into a concrete decomposition). Marked the triage TODO DONE, filed 5 new actionable TODOs, recorded full disposition table in the backlog doc under "Triage Dispositions" — accept/pilot/convention/reject with one-line rationale per item.
+
+New TODOs (all [#C]):
+- =:chore:= .aiignore for agent inventory exclusions (item #8)
+- =:feature:= Workflow test harness (item #10)
+- =:feature:= Token-tier pilot on startup.org and triage-intake.org (item #5)
+- =:feature:quick:solo:= Canonical/mirror drift detection (item #7, reframed — rejected wholesale dedupe)
+- =:feature:quick:solo:= =make status= only (item #12, scope-limited)
+
+Items #11 (script normalization) and #13 (ADR layer) recorded as conventions/watch-and-wait, no TODO. Six items rejected with rationale in the backlog doc — broader runtime arc (#1), INDEX.org compression (#3), universal catalog.json (#4), install manifest JSON (#6), project-facts.org (#9), local model profiles (#14).
+
+One commit + push:
+- =8dfbe5c= chore(intake): triage codex backlog into 5 actionable TODOs + dispositions
+
+** 2026-05-28 09:25 CDT — No-approvals batch: 6 :quick:solo: TODOs
+
+Craig invoked no-approvals mode for a batch of 6 :quick:solo: TODOs Craig had pre-triaged. Each commit ran /review-code (Approve) + /voice personal walked inline.
+
+Tasks shipped:
+1. =beb646e= feat(open-tasks): archive-done sweep at start of Phase A — pearl item.
+2. =9f84ea2= feat(sync-check): canonical/mirror drift detection + pre-commit hook — 8 bats tests green; hook installed via new =make install-githooks=.
+3. =bdf755d= feat(status): add =make status= for compact health summary — six-line output composing audit/doctor/sync/todo/inbox/git.
+4. (bundled into =5c0c7a6=) chore(claude-templates): delete vestigial Makefile — root Makefile already covers install + test.
+5. =5c0c7a6= fix(sync-check): ignore generated python and elisp artifacts — pre-commit caught a false-positive on its first real-world run; added =__pycache__/=, =*.pyc=, =.pytest_cache=, =*.elc= excludes. Bundled Task 4's deletion accidentally because the =git rm= from earlier was still staged.
+6. =814695e= feat(mcp): add uninstall + --check + README section — install.py grew --uninstall and --check modes via argparse; new =make uninstall-mcp= and =make check-mcp= targets; README.org gained an MCP section under "Two install modes".
+
+Six TODOs closed. No real questions hit during the batch. One mistake worth recording: the sync-check fix commit (=5c0c7a6=) accidentally bundled Task 4's Makefile deletion because a previously-staged =git rm= persisted across an intervening attempt. The commit message describes only the sync-check fix. Going forward, I should run =git status= and =git restore --staged= before each commit when intermediate staging may have accumulated.
+
+Mid-batch inbox arrival noted but not processed: =inbox/2026-05-28-0858-from-home-spec-naming-convention-apply-to-spec.org= — out of scope for the batch, queued for the next process-inbox pass.
diff --git a/mcp/servers.json b/mcp/servers.json
index f4a5b43..5554c04 100644
--- a/mcp/servers.json
+++ b/mcp/servers.json
@@ -59,5 +59,15 @@
"GOOGLE_EMAIL": "${GOOGLE_KEEP_EMAIL}",
"GOOGLE_MASTER_TOKEN": "${GOOGLE_KEEP_MASTER_TOKEN}"
}
+ },
+ "signal-mcp": {
+ "type": "stdio",
+ "command": "/home/cjennings/.local/share/signal-mcp/.venv/bin/python",
+ "args": [
+ "/home/cjennings/.local/share/signal-mcp/signal_mcp/main.py",
+ "--user-id", "+15103169357",
+ "--transport", "stdio"
+ ],
+ "env": {}
}
}