aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-05-26 13:36:27 -0500
committerCraig Jennings <c@cjennings.net>2026-05-26 13:36:27 -0500
commitadce315f9b2db47f8be376bbc63f0f66a6f5aedd (patch)
tree6ef72ed18de2921e13c8a60e4b84e2cd7c0a81d0
parentf332b2169d47d0c7bb9847e4ecf299197803c860 (diff)
downloadrulesets-adce315f9b2db47f8be376bbc63f0f66a6f5aedd.tar.gz
rulesets-adce315f9b2db47f8be376bbc63f0f66a6f5aedd.zip
chore(ai): archive session record
-rw-r--r--.ai/sessions/2026-05-26-13-35-inbox-sweep-voice-prose-and-command-invocability.org97
1 files changed, 97 insertions, 0 deletions
diff --git a/.ai/sessions/2026-05-26-13-35-inbox-sweep-voice-prose-and-command-invocability.org b/.ai/sessions/2026-05-26-13-35-inbox-sweep-voice-prose-and-command-invocability.org
new file mode 100644
index 0000000..52318a1
--- /dev/null
+++ b/.ai/sessions/2026-05-26-13-35-inbox-sweep-voice-prose-and-command-invocability.org
@@ -0,0 +1,97 @@
+#+TITLE: Session — triage engine promotion + notify persist sweep
+#+DATE: 2026-05-26
+
+* Summary
+
+** Active Goal
+Process a full inbox (a multi-file triage-engine handoff from home, kit's voice-skill proposal, pearl's notify request, plus mid-session arrivals), run a full task-review, then handle two ad-hoc requests: make /start-work agent-invocable and document the WIP popup-deny hook. Eleven commits, all reviewed + voice-walked + pushed.
+
+** Decisions
+- *Triage-intake refactor adopted as-is* from home's handoff: source-agnostic engine + per-source plugins, dotted names restored (inbox-send had flattened them). INDEX + startup drift-check generalized so =<engine>.*.org= plugins aren't flagged as orphans.
+- *Voice skill — third mode "prose"* (Craig's call, option 1): general (#1-31) → prose (adds Craig's-voice patterns) → personal (adds the 3 artifact-mechanics patterns #32/#39/#40). Curated set, not personal-minus. Closed kit's 3 gaps: #13 em-dash zero-tolerance incl. examples/quotes, #37 widened to prose, new #41 no-emphasis-formatting.
+- *notify --persist is the default for page-me cases* (pearl): protocols alarm/reminder + completion examples and cross-agent-watch now persist; page-me and status-check already did.
+- *Command agent-invocability* = remove =disable-model-invocation: true= (one line). Commands/skills have merged in current Claude Code, so location doesn't gate it, the flag does. Opened start-work, codify, refactor, respond-to-cj-comments. 13 commands still carry the flag.
+- *WIP popup-deny hook was already correctly placed* — =~/.claude/settings.json= symlinks to the repo's =.claude/settings.json=, so it's machine-wide as-is. No relocation.
+- *Credential-leak warnings gate on project type, not the credential* (elibrary): private-server personal projects with tracked =.ai/= are fine.
+
+** Data Collected / Findings
+- =~/.claude/settings.json= → symlink to =rulesets/.claude/settings.json=; =~/.claude/commands= → symlink to =rulesets/.claude/commands=. Editing the repo edits the live global config.
+- 17 commands carried =disable-model-invocation: true= (the aa69245 user-only batch); 4 cleared this session, 13 remain.
+- Task-review: all 14 open tasks [#C], none worth killing; re-stamped 2026-05-26, dropped two stale past SCHEDULED dates, tagged the Makefile task =:quick:solo:=, refreshed the daily-prep→triage delegation task for the engine/plugin split.
+
+** Files Modified
+Eleven commits, all pushed to origin/main (=8abcc1a..f332b21=):
+- =9838292= fix(inbox-send): preserve dots in copied filenames (home's slugify_filename fix + tests).
+- =f9c72c8= refactor(workflows): split triage-intake into engine + source plugins (engine + 4 plugins + INDEX + startup).
+- =15cca70= feat(notify): default page notifications to --persist.
+- =b7b932d= chore(todo): full review pass.
+- =4fac2a0= feat(voice): add prose mode + strengthen em-dash/fragments/formatting (+ commits.md count sync).
+- =b255a74= docs(protocols): document .ai/project-scripts/.
+- =e9d6ebe= chore(inbox): clear processed lint follow-ups.
+- =7beb8d1= docs(protocols): gate credential-leak warnings on project type.
+- =9bfb13a= feat(hooks): hard-deny the AskUserQuestion popup machine-wide (Craig's WIP pair).
+- =fa4f8d6= feat(start-work): let the agent invoke it, not just the user.
+- =f332b21= feat(commands): let the agent invoke codify, refactor, and respond-to-cj-comments.
+
+** Next Steps
+- 13 commands still carry =disable-model-invocation: true=; clear the flag on any Craig wants agent-invocable (weigh auto-fire risk — security-check, brainstorm, the arch-* set are riskier).
+- Carryover open tasks unchanged (all [#C]): memory-sync direction, create-documentation + /update-skills skills, coverage-summary templatization, the daily-prep→triage delegation, MCP follow-ups, etc.
+- The triage engine now expects project-specific source plugins in =.ai/project-workflows/=; work-account sources would live there, not in the synced template.
+
+* Session Log
+
+** 2026-05-26 ~01:50 CDT — Startup + inbox triage
+Clean startup: no crash recovery, project repo current, templates synced, no reminders/pending decisions, task-review staleness 0, language bundle clean, cross-agent queue empty.
+
+Inbox held four items: (1) triage-intake engine refactor handoff from home (engine + 4 plugins + correction note about flattened dots), (2) voice skill edits from kit (needs mode-scope decision), (3) notify --persist sweep from pearl, (4) lint-followups carryover.
+
+Craig chose: do items 1 (triage engine) and 3 (notify sweep) now, then a full task-review, then discuss the voice edits.
+
+** 2026-05-26 ~01:55 CDT — Item 1: triage engine + inbox-send fix
+Placed the new engine + 4 plugins into claude-templates/.ai/workflows/ with corrected DOTTED names (inbox-send had flattened them to hyphens in transit). Updated INDEX.org (engine entry rewritten + source-adapters note; Drift Check now exempts <engine>.*.org plugins) and startup.org (workflow-discovery: added the engine+plugin naming convention, generalized the drift check to not flag plugins as orphans, added the routing rule that engine requests never route to a plugin). Synced both mirrors (.ai/workflows/, .ai/scripts/).
+
+Home delivered the inbox-send dot-flattening fix (slugify_filename) uncommitted in the tree — that's why startup skipped the rulesets pull. Committed it separately as 9838292 fix(inbox-send): preserve dots in copied filenames (review: Approve; /voice personal walked, fired #13/#33/#32; tests 22 green). Cleared 4 home inbox notes (engine + 4 plugins delivery, handoff, correction, fix-done, design-note).
+
+Pre-existing WIP left untouched and flagged for Craig: .claude/settings.json (AskUserQuestion deny hook) + claude-rules/interaction.md (its enforcement note) — a coherent pair, his prior-session work, kept out of my commits.
+
+Committed: 9838292 (inbox-send fix) + f9c72c8 (triage engine refactor). Item 1 done.
+
+** 2026-05-26 ~02:05 CDT — Item 3: notify --persist sweep (pearl)
+Swept notify invocations across claude-rules + rulesets skills/workflows. Findings: page-me.org and status-check.org already ship --persist on every page (authored that way). claude-rules and the top-level skills have no notify invocations at all. The gaps were in protocols.org (alarm/reminder examples + long-running-process task-complete) and the cross-agent-watch script. Added --persist to all of those, plus a "default to --persist for any page meant to get attention" note in the protocols alarm section and a why-line on the completion ping. cross-agent-watch (script + .md) now persists the message-arrived notification. Synced both mirrors. bash -n clean, cross-agent-watch tests 6/6 green.
+
+Committed 15cca70 feat(notify): default page notifications to --persist. Cleared the pearl inbox file. Item 3 done.
+
+Three commits this session, all unpushed: 9838292, f9c72c8, 15cca70. Push decision deferred to Craig / wrap-up.
+Inbox now holds only the kit voice note (deferred to discussion) + lint-followups carryover.
+
+** 2026-05-26 ~02:20 CDT — Full task-review
+Staleness was 0 (last session stamped all on 05-25, plus 3 at 05-20 just under the 7-day line). Craig asked for a full walk of all 14 open top-level tasks anyway. All 14 are [#C]; none worth killing (all wait-for-trigger or nice-to-have). Applied: re-stamped all 14 LAST_REVIEWED to 2026-05-26 (scoped sed to lines 1-1159 so Resolved's stamps stayed put); dropped the stale SCHEDULED <2026-05-15> lines from research-writer and Skill-Seekers (both are wait-for-trigger, the past schedule showed them as overdue); tagged the claude-templates/Makefile consolidation :quick:solo:; refreshed the daily-prep→triage-intake delegation task body to reflect tonight's engine/plugin split, adding a scope bullet about loading the work-account project plugins so daily-prep's current coverage doesn't drop. Staleness still 0, no stale schedules left in open work.
+
+** 2026-05-26 ~02:35 CDT — Item 2: voice-skill edits (kit)
+Craig chose a third mode named "prose" (option 1: curated set, not personal-minus). Implemented in voice/SKILL.md: three nesting modes (general #1-31 → prose adds Craig's-voice patterns → personal adds the 3 artifact-mechanics patterns). Re-tagged #33-38 + new #41 as (prose + personal); #32/#39/#40 stay (personal only). Closed the three kit gaps: #13 em-dash now zero-tolerance in prose/personal (incl. examples + quotes), #37 strong-fragment widened to prose, #41 new no-emphasis-formatting (bold/italic/underscore) pattern. Updated frontmatter description, Modes, Your Task, Process, Output Format, Reference, and both worked examples. Synced commits.md publish-flow references from "39 patterns / 8 personal-only" to "41 patterns / 3 artifact-mechanics". Lint clean. Committed 4fac2a0 (review: Approve; /voice personal caught 2 em-dashes + 2 semicolons in my own draft — the strengthened #13 working as intended). Cleared the kit inbox file.
+
+** Session state at this point
+Planned work done: items 1 (triage engine), 3 (notify persist), full task-review, item 2 (voice). Five commits this session, all unpushed: 9838292, f9c72c8, 15cca70, b7b932d, 4fac2a0. Push decision still deferred to Craig.
+WIP pair still untouched: .claude/settings.json + claude-rules/interaction.md (AskUserQuestion deny hook).
+New inbox items that arrived mid-session, NOT yet processed: elibrary git-privacy note (fold a code-vs-non-code credential-leak distinction into the rules layer), home "please document a new .ai directory" note. lint-followups carryover (1 judgment item) still parked.
+
+** 2026-05-26 ~02:40 CDT — Home note: document .ai/project-scripts/
+Craig: deleted lint-followups, then proceed on the home note. Documented the .ai/project-scripts/ convention (sync-safe home for project-owned scripts, script-side counterpart to project-workflows/): added a row to the Directory Architecture table in protocols.org (and clarified the scripts/ row as synced for parallelism), and a note in startup.org's rsync-notes that project-workflows/ and project-scripts/ are deliberately outside the synced set, with the importable-name (underscores) vs kebab-case naming guidance. Synced both mirrors, parity confirmed, lint clean. Committed b255a74 (review: additive doc, Approve; /voice personal clean). Then deleted the processed home note + the lint-followups file; committed the lint-followups removal as e9d6ebe.
+
+Seven commits now, all unpushed: 9838292, f9c72c8, 15cca70, b7b932d, 4fac2a0, b255a74, e9d6ebe.
+Inbox now holds only the elibrary git-privacy note (unprocessed, Craig hasn't directed it yet).
+
+** 2026-05-26 ~02:50 CDT — Push + elibrary git-privacy note
+Craig: push all, then process elibrary. Pre-push reconcile clean (0 behind, 7 ahead), pushed 8abcc1a..e9d6ebe to origin/main.
+
+Then processed the elibrary git-privacy note: added a "gate credential-leak warnings on project type, not the credential" rule to protocols.org, right next to the existing "should .ai/ be committed?" decision (its natural corollary — code projects on public GitHub gitignore .ai/ and carry the leak risk; personal/doc projects push to private cjennings.net repos, so tracked credentials in their .ai/ are fine and shouldn't trigger a warning). Placed in protocols.org per the note's first suggestion, since it's read every session across all projects. Synced mirror, lint clean. Committed 7beb8d1 and pushed (e9d6ebe..7beb8d1). Cleared the elibrary inbox file.
+
+Inbox now EMPTY. All 8 commits pushed, origin/main at 7beb8d1, tree in sync.
+Still uncommitted (intentionally): Craig's WIP pair (.claude/settings.json + claude-rules/interaction.md, the AskUserQuestion deny hook) + the live session-context.org.
+
+** 2026-05-26 ~03:00 CDT — WIP pair committed + start-work made agent-invocable
+WIP pair: investigated Craig's flagged "machine-wide enforcement" concern. Finding — ~/.claude/settings.json is a SYMLINK to rulesets/.claude/settings.json, so the repo-local file IS the global machine-wide settings; the AskUserQuestion deny hook was already correctly placed, no relocation needed. Committed the pair as-is: 9bfb13a feat(hooks): hard-deny the AskUserQuestion popup machine-wide. (My earlier "repo-local vs global" caveat was wrong — the symlink makes them one file.)
+
+start-work agent-invocability: Craig reported /start-work couldn't be invoked by the agent. Root cause via two claude-code-guide consultations — start-work is .claude/commands/start-work.md and carried =disable-model-invocation: true= in its frontmatter. Commands and skills have MERGED in current Claude Code, so location doesn't gate model-invocation; the flag does. Fix was a one-line removal (no skill relocation, no SKILL.md move). start-work now appears in the available-skills list, agent-invocable, /start-work still works for Craig. Committed fa4f8d6. The other 16 converted commands still carry the flag (the aa69245 user-only stance) — same one-liner opens any if needed; left untouched.
+
+Ten commits this session total, all pushed. origin/main at fa4f8d6, tree clean (only WIP pair now committed; session-context still live).