diff options
| author | Craig Jennings <c@cjennings.net> | 2026-05-16 01:48:52 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-05-16 01:48:52 -0500 |
| commit | 9b16fd8c9d5a9707608dec8c6a3c87b79b45863c (patch) | |
| tree | 1c6617677a1d4d46d9918d3e3e09c584b34a2cef | |
| parent | 7121a88f2a2831c83eb7d34f347c725ae572cfc5 (diff) | |
| download | rulesets-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.org | 112 | ||||
| -rw-r--r-- | todo.org | 29 |
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. @@ -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 |
