aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-05-16 01:48:52 -0500
committerCraig Jennings <c@cjennings.net>2026-05-16 01:48:52 -0500
commit9b16fd8c9d5a9707608dec8c6a3c87b79b45863c (patch)
tree1c6617677a1d4d46d9918d3e3e09c584b34a2cef
parent7121a88f2a2831c83eb7d34f347c725ae572cfc5 (diff)
downloadrulesets-9b16fd8c9d5a9707608dec8c6a3c87b79b45863c.tar.gz
rulesets-9b16fd8c9d5a9707608dec8c6a3c87b79b45863c.zip
docs(todo): archive wrap-it-up github task; file Step 3.5 follow-up
todo.org bookkeeping for the night: - Wrap-it-up github task moved to Rulesets Resolved by archive-done (CLOSED 2026-05-16 Sat). The fix shipped in 7121a88. - New [#C] filed: wrap-it-up Step 3.5 assumes GitHub-family remote. Triggered by the same-file audit during tonight's start-work. Step 3.5 says "the project's GitHub remote — use gh pr list ..." which is generic GitHub (not github.com literal) but still bakes in a host-family assumption that would break on a future non-GitHub Linear project. Currently fine for DeepSat-on-GHE. - Spec stubs added under DOING memory-sync and TODO /update-skills: placeholders for cj: comment blocks to fill in during the next session on each. Date-coverage scan flagged 8 [#A] / [#B] tasks lacking DEADLINE or SCHEDULED; appended to lint-followups for morning review.
-rw-r--r--.ai/sessions/2026-05-16-01-45-daily-prep-quick-reactive-and-github-cleanup.org112
-rw-r--r--todo.org29
2 files changed, 136 insertions, 5 deletions
diff --git a/.ai/sessions/2026-05-16-01-45-daily-prep-quick-reactive-and-github-cleanup.org b/.ai/sessions/2026-05-16-01-45-daily-prep-quick-reactive-and-github-cleanup.org
new file mode 100644
index 0000000..be733ae
--- /dev/null
+++ b/.ai/sessions/2026-05-16-01-45-daily-prep-quick-reactive-and-github-cleanup.org
@@ -0,0 +1,112 @@
+#+TITLE: Session Context — daily-prep :quick: propagation + wrap-it-up github cleanup
+#+AUTHOR: Craig Jennings & Claude
+#+DATE: 2026-05-16
+
+* Summary
+
+** Active Goal
+
+Three pieces of work tonight. (1) Process the 2026-05-15 handoff from the work project propagating the =:quick:reactive:= triage-response convention into rulesets' =daily-prep.org=. (2) Catch the project mirror up to last session's =dc1661c= cj-scan canonical commit. (3) Run =/start-work= on the new =[#A]= task removing the github.com mention from =wrap-it-up.org='s Push step parenthetical. A second =/start-work= invocation against the =[#C]= daily-prep → triage-intake delegation refactor was deferred at the Justify gate (L-effort architectural work, 02:00 AM, no daylight clarity).
+
+** Decisions
+
+- *Two commits, not one, for the inbox absorption.* The cj-scan mirror sync was a separate concern from the daily-prep convention change. Bundling would've muddied =git log= for two unrelated changes. Committed as =c67b9aa chore(ai)= and =8209c5f docs(workflows)= back-to-back.
+- *Add sub-step 3a step 4 to daily-prep — pull open =:reactive:= tasks.* Without it, sub-steps 3b/3d/3e/3f's forward references to "sub-step 3a's =:reactive:= pull" pointed at a step that didn't exist. The new step ensures reactive tasks created in prior preps surface on subsequent ones.
+- *Move the convention spec to the Prep Doc Structure section.* Added new =** Triage Action items become =:quick:reactive:= todo.org tasks (2026-05-15 rule)= subsection capturing form/rules/placement. Sub-steps 3b/3d/3e/3f reference it instead of repeating themselves.
+- *Generalize wrap-it-up's push parenthetical hostname-agnostically.* Original wording named "github.com + cjennings.net mirrors" as the canonical case — accurate for rulesets, misleading for the rest. New wording covers both the mirror case and the different-audience-per-remote case without specific hosts.
+- *Audit follow-up filed*: =[#C] wrap-it-up Step 3.5 assumes GitHub-family remote :chore:= at todo.org:14. Step 3.5 says "the project's GitHub remote — use =gh pr list ...=". Generic "GitHub" not "github.com", but still bakes in a host-family assumption. Currently fine in practice (Linear-gated step, DeepSat on GHE), would break on a future non-GitHub Linear project.
+- *Deferred the daily-prep → triage-intake delegation refactor.* =[#C]= priority, L-effort, real architectural decisions on where Action classification and =:quick:reactive:= task creation should live. 02:00 AM is the wrong time. Rolled back the DOING claim.
+
+** Data Collected / Findings
+
+- =.ai/scripts/cj-scan.py= and =tests/test_cj_scan.py= in the project mirror were 140 lines behind canonical post-=dc1661c=. Phase A rsync caught it on startup.
+- =daily-prep.org= edit footprint: +164 / -116 lines across canonical + mirror.
+- =wrap-it-up.org= has two GitHub references: line 207 (Step 3.5 Linear hygiene, "GitHub remote", generic, Linear-gated) and line 276 (Step 4 push, "github.com + cjennings.net mirrors", literal, generalized in this session).
+- Triage-intake (=triage-intake.org=, 123 lines, authored 2026-05-11) and daily-prep (825 lines) overlap on source fan-out but diverge on what they do with the results: daily-prep classifies into Action/FYI/Noise-trash/Noise-keep, runs People-Context Check, applies Recommended Approach Pattern, and (post-=8209c5f=) creates =:quick:reactive:= tasks. Triage-intake just synthesizes and reports. The delegation refactor would need an architectural call on which layer absorbs daily-prep's per-source logic.
+- =todo.org= modified concurrently by Craig in Emacs during the session: new =[#A]= for the wrap-it-up github task (lines 10-13), spec stub under DOING memory-sync (lines 14-19) with empty cj: comment block, Specification block under /update-skills (lines 1287-1295) with another empty cj: comment block. None acted on by Claude; left in working tree for Craig to commit at wrap-up.
+
+** Files Modified
+
+Rulesets (3 commits, all pushed to =origin/main=):
+- =c67b9aa chore(ai): sync cj-scan from claude-templates= — project mirror catches up to =dc1661c=. +140 lines.
+- =8209c5f docs(workflows): route triage Action items to todo.org as :quick: tasks= — daily-prep convention propagation. Both canonical + mirror. +164 / -116 lines.
+- =7121a88 docs(workflows): generalize wrap-it-up push parenthetical= — one-line prose fix, both canonical + mirror.
+
+Working-tree artifacts at wrap time:
+- =inbox/2026-05-15-handoff-from-work-triage-response-task-convention.org= — deleted (one-time signal absorbed).
+- =inbox/= empty.
+- =todo.org= — uncommitted modifications: my DOING→DONE flip + CLOSED line on the wrap-it-up github task, my new =[#C]= follow-up filing, plus Craig's WIP (new =[#A]=, memory-sync spec stub, /update-skills Specification block). The DOING→DONE + follow-up filing will commit cleanly at wrap-up alongside Craig's WIP.
+
+** Next Steps
+
+Open carryover:
+- =[#C]= Refactor daily-prep.org to delegate to triage-intake.org for the triage section — deferred tonight. Needs daylight; L-effort with architectural decisions about which layer owns Action classification and =:quick:reactive:= task creation.
+- =[#C]= Consolidate claude-templates/Makefile after fold.
+- =[#C]= wrap-it-up Step 3.5 assumes GitHub-family remote — filed tonight by tonight's audit.
+- =[#B]= Phase A inbox-scan blind-spot for claude-templates/inbox/.
+- =DOING [#A]= memory-sync investigation (pending VERIFY on stow approach — Craig started a spec stub tonight, left empty).
+- =[#A]= /update-skills skill (Craig started a Specification block tonight, left empty).
+- =[#A]= create-documentation skill.
+- =[#A]= 2026-05-04 audit review pass.
+
+* Session Log
+
+** Startup (01:11 CDT)
+
+Clean startup — previous session wrapped cleanly, no cross-agent traffic, no Active Reminders, no Pending Decisions. Read the 5 most recent session Summaries. Inbox had one file: =2026-05-15-handoff-from-work-triage-response-task-convention.org=, a propagation request from the work project asking to update =daily-prep.org= to drop the grouped Response sub-sections and route every Action item to =todo.org= as a =:quick:reactive:= task.
+
+Surfaced findings and proposed three options. Craig picked option 1: proceed with the daily-prep changes.
+
+** Daily-prep edit work
+
+Read the canonical =claude-templates/.ai/workflows/daily-prep.org= to map the change surface. Identified six edit targets: the Prep Doc Structure table row, the trailing parenthetical on the 2026-05-12 thin-links rule, the Phase 3 intro paragraph's obsolete "empty response sub-section headers" rule, each of sub-steps 3b/3d/3e/3f's format blocks + don't-duplicate closers, sub-step 3g's cross-source dedup + urgency re-sort, and a new sub-step 3a step 4 to pull open =:reactive:= tasks.
+
+Added a new top-level subsection in Prep Doc Structure: =** Triage Action items become =:quick:reactive:= todo.org tasks (2026-05-15 rule)= capturing the form, rules, and placement guidance from the handoff. Sub-steps 3b/3d/3e/3f reference it instead of repeating themselves.
+
+Rsync'd canonical to mirror — diff verified byte-identical.
+
+** cj-scan sync surfaced
+
+=git status= showed unexpected modifications to =.ai/scripts/cj-scan.py= and =tests/test_cj_scan.py= alongside the daily-prep edits. Traced to last session's =dc1661c= — that commit only touched =claude-templates/.ai/scripts/= (the canonical), not the project mirror. Phase A's rsync this morning brought the mirror current. Treated as a separate concern from the daily-prep work; committed as =chore(ai): sync cj-scan from claude-templates= ahead of the daily-prep commit.
+
+=todo.org= also showed modifications — Craig editing in Emacs concurrently (new =[#A]= about wrap-it-up github, plus a couple of empty cj: spec stubs). Left alone.
+
+** Commit + push (handoff absorption)
+
+Pre-flight reconcile 0/0. Voice mode check → general-voice (=.ai/= tracked), approval gate skipped. Two commits drafted, =/voice= general (31 patterns) run on each:
+- =c67b9aa=: pattern #13 fired (em-dash → period split).
+- =8209c5f=: pattern #13 fired (em-dash → period split in para 2), pattern #22 fired (cut "where applicable"), small wording cleanup.
+
+Pre-push reconcile 0/2. Craig picked option 1 (push both). Pushed cleanly to =origin/main=. Deleted the handoff file.
+
+** /start-work on wrap-it-up github fix
+
+Craig invoked =/start-work= on the new =[#A]= task at =todo.org:10= ("wrap it up mentions github, which isn't the remote for many projects"). Phase 0 walked clean: eligibility ok, reconcile 0/0, existence check confirmed the literal "github.com + cjennings.net mirrors" string at =wrap-it-up.org:276=. Claimed: DOING + =:chore:= tag.
+
+Phase 2 justification surfaced: line 276 names a specific host that isn't accurate for most projects (most have only =git.cjennings.net=; DeepSat lives on =deepsat.ghe.com=). The push loop itself is already remote-agnostic (=for r in $(git remote)=); just the parenthetical text needed alignment. Estimated S. Craig approved.
+
+Phase 3 approach: drop the github.com + cjennings.net example, replace with hostname-agnostic explanation covering both the mirror case and the different-audience-per-remote case. Direct-to-main per recent precedent. Craig approved.
+
+Phase 4 implementation: one-line edit in canonical, rsync to mirror.
+
+Phase 4 refactor audit on touched file (=wrap-it-up.org=): found one candidate — line 207's "the project's GitHub remote" still assumes GitHub-family (works for DeepSat-on-GHE today, breaks on a future non-GitHub Linear project). Out of this task's ticket scope (singular "the reference to github.com"). Filed as =[#C] wrap-it-up Step 3.5 assumes GitHub-family remote :chore:= at todo.org:14 with "Triggered by: 2026-05-16 wrap-it-up github.com cleanup" pointer.
+
+Phase 5 verify: read new wording in context, confirmed it explains the why without naming a specific host, loop code unchanged.
+
+Phase 6 gate cleared. Phase 7 commit + push: staged only the two =wrap-it-up.org= paths (excluded todo.org to avoid entangling with Craig's WIP). =/voice= general fired pattern #13. Committed =7121a88 docs(workflows): generalize wrap-it-up push parenthetical=, pre-push reconcile 0/1, Craig picked option 1, pushed.
+
+Flipped =todo.org:10= → =DONE [#A]= with =CLOSED: [2026-05-16 Sat]=. Working tree update only (not committed in this session — bundles with Craig's other Emacs WIP at wrap).
+
+** /start-work on daily-prep → triage-intake delegation (deferred)
+
+Craig invoked =/start-work= on =[#C] Refactor =daily-prep.org= to delegate to =triage-intake.org= for the triage section= at todo.org:1774. Phase 0 walked: eligibility ok, reconcile 0/0, existence check confirmed both files (daily-prep 825 lines with rich Phase 3 per-source logic, triage-intake 123 lines with lighter scope). Real overlap on source fan-out but daily-prep does substantially more per source (Action/FYI/Noise classification, People-Context Check, Recommended Approach Pattern, =:quick:reactive:= task creation as of =8209c5f=).
+
+Phase 1 claimed: DOING + =:chore:= tag.
+
+Phase 2 justification surfaced the real cost: not a pure delegation. Either triage-intake grows to absorb daily-prep's classification + task-creation logic (compromising its "lighter scope" principle), or daily-prep keeps that logic and delegates only raw fan-out (smaller DRY win). Real architectural decision needed at Phase 3. Estimated L. Recommended deferring given hour, =[#C]= priority, and architectural depth.
+
+Craig picked option 1: defer. Rolled back DOING → TODO, removed :chore: tag. Task back at =[#C] TODO= status at todo.org:1774.
+
+** Wrap-up
+
+Craig said "wrap it up" at 01:58 CDT.
diff --git a/todo.org b/todo.org
index 343176f..7c4d713 100644
--- a/todo.org
+++ b/todo.org
@@ -7,7 +7,15 @@ Project-scoped (not the global =~/sync/org/roam/inbox.org= list).
* Rulesets Open Work
+** TODO [#C] wrap-it-up Step 3.5 assumes GitHub-family remote :chore:
+Triggered by: 2026-05-16 wrap-it-up github.com cleanup (audit of the same file).
+
+Step 3.5 (Linear ticket-state hygiene) at =wrap-it-up.org:207= says "the project's GitHub remote — use =gh pr list ...=". Currently fine in practice: the step is Linear-gated, and the only Linear-using project is DeepSat (on =deepsat.ghe.com=, a GitHub-family host where =gh= works). Would break if a future Linear-using project lived on a non-GitHub host (gitlab, gitea, bitbucket). Either drop the GitHub-family assumption (provider-agnostic lookup, harder) or document the assumption explicitly so future projects know the step needs an update if they don't fit.
** DOING [#A] Check that memories are sync'd across machines via git.m
+*** 2026-05-16 Sat @ 01:12:52 -0500 Spec
+#+begin_src cj: comment
+write the spec here.
+#+end_src
*** 2026-05-14 Thu @ 19:14:11 -0500 Investigate current memory storage
@@ -1279,7 +1287,13 @@ new templates, or scope expansions that we'd want to pull in without losing
our local modifications. A skill should handle this deliberately rather than
by manual re-cloning.
-*** Design decisions (agreed)
+*** 2026-05-16 Sat @ 01:14:40 -0500 Specification
+#+begin_src cj: comment
+write the specification here.
+#+end_src
+
+*** 2026-05-16 Sat @ 01:14:20 -0500 original goals and decisions
+**** Design decisions (agreed)
- *Upstream tracking:* per-fork manifest =.skill-upstream= (YAML or JSON):
- =url= (GitHub URL)
@@ -1297,7 +1311,7 @@ by manual re-cloning.
or corrupt (can't run 3-way merge): write =.local=, =.upstream=,
=.baseline= files side-by-side and surface as manual review.
-*** V1 Scope
+**** V1 Scope
- [ ] Skill at =~/code/rulesets/update-skills/=
- [ ] Discovery: scan sibling skill dirs for =.skill-upstream= manifests
@@ -1317,7 +1331,7 @@ by manual re-cloning.
- [ ] On successful sync: update =last_synced_commit= in the manifest
- [ ] =--dry-run= to preview without writing
-*** V2+ (deferred)
+**** V2+ (deferred)
- [ ] Track upstream *releases* (tags) not just branches, so skill can propose
"upgrade from v1.2 to v1.3" with release notes pulled in
@@ -1332,13 +1346,13 @@ by manual re-cloning.
=M-x smerge-ediff= as an alternate path for users who prefer ediff over
per-hunk prompts
-*** Initial forks to enumerate (for manifest bootstrap)
+**** Initial forks to enumerate (for manifest bootstrap)
- [ ] =arch-decide= → =wshobson/agents= :: =plugins/documentation-generation/skills/architecture-decision-records= :: MIT
- [ ] =playwright-js= → =lackeyjb/playwright-skill= :: =skills/playwright-skill= :: MIT
- [ ] =playwright-py= → =anthropics/skills= :: =skills/webapp-testing= :: Apache-2.0
-*** Open questions
+**** Open questions
- [ ] What happens when upstream *renames* a file we fork? Skill would see
"file gone from upstream, still present locally" — drop, keep, or prompt?
@@ -2159,3 +2173,8 @@ Build a self-contained test harness under =.ai/scripts/tests/= that spins up =/t
Pattern reference: bats or shell-based assertions (similar to the elisp ERT suites for =todo-cleanup= and =lint-org=, but for shell scripts).
Triggered by: 2026-05-15 fold-epic, child 4 test plan; commits =94782ee= (audit) + =d364cf2= (install-ai).
+** DONE [#A] wrap it up mentions github, which isn't the remote for many projects. :chore:
+CLOSED: [2026-05-16 Sat]
+For many of them, git.cjennings.net mirrors to github.com, and github.com isn't the remote.
+For many others, git.cjennings.net is the remote with no mirror.
+Remove or replace the reference to github.com