diff options
| author | Craig Jennings <c@cjennings.net> | 2026-05-28 08:18:10 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-05-28 08:18:10 -0500 |
| commit | db7f82711978da5e7f152297942854c7b753f480 (patch) | |
| tree | 68ea4ce52cbb278114acf0243fe7397d2f1d6efc /todo.org | |
| parent | ee7049aaa62d0c38e83f20c0b3796e5eded4ca23 (diff) | |
| download | rulesets-db7f82711978da5e7f152297942854c7b753f480.tar.gz rulesets-db7f82711978da5e7f152297942854c7b753f480.zip | |
chore(audit): task-audit pass + pearl intake from 2026-05-28 morning
All 16 open tasks bucketed and updated. 14 received autonomous Phase C
edits (13 type-tag additions per the new scheme plus #15's body refresh
for the accumulating pearl signal). Phase D adjudicated two priority
bumps and the morning's inbox spillover. Phase E stamped :LAST_AUDIT:
in notes.org Workflow State.
Autonomous Phase C:
- Tagged tasks 1-11 and 13-14 with their type tag (:feature:, :chore:,
:spec:), bumped LAST_REVIEWED to 2026-05-28. Tasks 12, 15, 16 already
carried type tags.
- Refreshed task #15 body to reference the four pearl pattern-catalog
notes now in docs/design/ (six worked patterns total).
Phase D adjudication:
- #15 (cross-project pattern catalog) bumped [#C] to [#B]. Pearl shipped
6 worked examples plus a synthesizing principle and is asking for
spec-review iterations. Design questions still open but evidence is
past the tipping point.
- Filed new [#B] :feature: TODO for the codex Phase 1 race-fix
(AI_AGENT_ID + session-context.d/<id>.org), lifted from the broader
runtime spec (#16). Phase 1 alone is low-risk and fixes a real
correctness issue under simultaneous agents.
Pearl intake (4 inbox files from this morning):
- Moved 0155 (patterns 4-5) and 0303 (pattern 6) into docs/design/
alongside the prior two pattern-catalog notes. Referenced from #15.
- Filed new [#C] :chore:quick:solo: TODO for pearl 0138's
--archive-done sweep at the start of open-tasks.org Phase A.
- Filed new [#C] :feature:solo: TODO for pearl 0226's spec-review.org
Phase 6 implementation-task enumeration.
- Deleted 0124. Already implemented this session as the audit-warranted
pre-step plus the LAST_AUDIT stamp now live in the workflow files.
Diffstat (limited to 'todo.org')
| -rw-r--r-- | todo.org | 105 |
1 files changed, 76 insertions, 29 deletions
@@ -1,4 +1,4 @@ -#+TITLE: Rulesets — Open Work +#+TITLE: Rulesets — Work #+AUTHOR: Craig Jennings #+DATE: 2026-04-19 @@ -34,9 +34,9 @@ Tags are assigned and refreshed by =task-audit=; =task-review= keeps them honest * Rulesets Open Work -** TODO [#C] Check that memories are sync'd across machines via git +** TODO [#C] Check that memories are sync'd across machines via git :spec: :PROPERTIES: -:LAST_REVIEWED: 2026-05-26 +:LAST_REVIEWED: 2026-05-28 :END: *** 2026-05-16 Sat @ 01:12:52 -0500 Spec #+begin_src cj: comment @@ -74,9 +74,9 @@ Created bare =git@cjennings.net:claude-memory.git=, cloned to =~/.claude-memory= *** 2026-05-24 Sun @ 01:53:35 -0500 Reversed the migration — back to unmanaged per-project memory Cancelled the follow-up brainstorm and undid the dedicated-repo migration at Craig's call. Moved all 7 memory dirs back to =~/.claude/projects/<enc>/memory/= (content preserved), deleted the =~/.claude-memory= clone, and deleted the bare =claude-memory.git= on the server. Memory is back to its original at-risk state, so the task reopens at [#C] pending a direction. The brainstorm landed on a two-tier idea for whenever this resumes: promote general lessons into a rulesets-tracked file symlinked into =~/.claude/rules/= (loaded into every project natively, one repo), and keep project-specific memory under each project's own =.ai/memory/= (committed where =.ai/= is tracked, at-risk where it's gitignored). Not implemented. -** TODO [#C] Build =create-documentation= skill for high-quality project/product docs +** TODO [#C] Build =create-documentation= skill for high-quality project/product docs :feature: :PROPERTIES: -:LAST_REVIEWED: 2026-05-26 +:LAST_REVIEWED: 2026-05-28 :END: Create a Claude skill named =create-documentation= that can plan, write, @@ -711,9 +711,9 @@ The skill should reject: public/library/API docs: =llms.txt= or markdown export is valuable, but normal human navigation remains primary. -** TODO [#C] Build =/update-skills= skill for keeping forks in sync with upstream +** TODO [#C] Build =/update-skills= skill for keeping forks in sync with upstream :feature: :PROPERTIES: -:LAST_REVIEWED: 2026-05-26 +:LAST_REVIEWED: 2026-05-28 :END: The rulesets repo has a growing set of forks (=arch-decide= from @@ -797,9 +797,9 @@ write the specification here. - [ ] Rate-limit / offline mode: if GitHub is unreachable, should skill fail or degrade gracefully? Likely degrade; print warning per fork. -** TODO [#C] Build /research-writer — clean-room synthesis for research-backed long-form +** TODO [#C] Build /research-writer — clean-room synthesis for research-backed long-form :feature: :PROPERTIES: -:LAST_REVIEWED: 2026-05-26 +:LAST_REVIEWED: 2026-05-28 :END: Gap in current rulesets: between =brainstorm= (idea refinement → design doc) @@ -854,9 +854,9 @@ Triggers that would prompt "let's build it now": Upstream reference (do not vendor): ComposioHQ/awesome-claude-skills =content-research-writer/SKILL.md=. -** TODO [#C] Try Skill Seekers on a real DeepSat docs-briefing need +** TODO [#C] Try Skill Seekers on a real DeepSat docs-briefing need :chore: :PROPERTIES: -:LAST_REVIEWED: 2026-05-26 +:LAST_REVIEWED: 2026-05-28 :END: =Skill Seekers= ([[https://github.com/yusufkaraaslan/Skill_Seekers]]) is a Python @@ -901,9 +901,9 @@ discard and stick with hand briefing. - Companion =skill-seekers-configs= community repo has only 8 stars despite main's 12.9k — ecosystem thinner than headline adoption -** TODO [#C] Revisit =c4-*= rename if a second notation skill ships +** TODO [#C] Revisit =c4-*= rename if a second notation skill ships :chore: :PROPERTIES: -:LAST_REVIEWED: 2026-05-26 +:LAST_REVIEWED: 2026-05-28 :END: Current naming keeps =c4-analyze= and =c4-diagram= as-is (framework prefix @@ -1047,9 +1047,9 @@ having a skill to generate or check OV-1-shaped artifacts. Don't build speculatively — defense-specific notations are narrow enough that each skill should be driven by a concrete contract need, not aspiration. -** TODO [#C] Add =make uninstall-mcp= + =mcp/install.py --check= for symmetry :solo:quick: +** TODO [#C] Add =make uninstall-mcp= + =mcp/install.py --check= for symmetry :feature:solo:quick: :PROPERTIES: -:LAST_REVIEWED: 2026-05-26 +:LAST_REVIEWED: 2026-05-28 :END: Currently the MCP install pipeline only flows one direction. No way to remove rulesets-managed MCP servers in one command. No way to ask "what's the drift between =servers.json= and =claude mcp list=" without eyeballing. @@ -1068,16 +1068,16 @@ Dry-run mode. Decrypt secrets, but instead of registering, print the drift repor Useful for diagnosing connection failures and for the eventual =make doctor= integration. -** TODO [#C] Update =README.org= with MCP install pipeline section :solo:quick: +** TODO [#C] Update =README.org= with MCP install pipeline section :chore:solo:quick: :PROPERTIES: -:LAST_REVIEWED: 2026-05-26 +:LAST_REVIEWED: 2026-05-28 :END: =README.org= covers global install, per-project language bundles, and design principles, but doesn't mention =make install-mcp= or the =mcp/= directory. Add a short section after "Per-project language bundles" describing the user-scope MCP install pattern (decrypt → expand → register) and pointing at the eventual =mcp/README.org=. -** TODO [#C] Token-rotation helper for =@a-bonus/google-docs-mcp= OAuth refresh +** TODO [#C] Token-rotation helper for =@a-bonus/google-docs-mcp= OAuth refresh :feature:quick: :PROPERTIES: -:LAST_REVIEWED: 2026-05-26 +:LAST_REVIEWED: 2026-05-28 :END: When a Google refresh token gets revoked (re-grant scopes, removed Connected App, account password reset), recovery is currently manual: run =npx -y @a-bonus/google-docs-mcp= with the right env, follow the URL in a browser, kill the process, base64-encode the new =token.json=, decrypt =secrets.env.gpg=, replace the var, re-encrypt. A small =mcp/refresh-google-docs-token.sh <profile>= would chain that into one command. @@ -1100,9 +1100,9 @@ rm /tmp/secrets.env.tmp The flow tonight worked but took a handful of manual steps. One script collapses it. -** TODO [#C] Decide on category-3 rule copies in the deepsat tree +** TODO [#C] Decide on category-3 rule copies in the deepsat tree :chore:quick: :PROPERTIES: -:LAST_REVIEWED: 2026-05-26 +:LAST_REVIEWED: 2026-05-28 :END: While symlinking personal-project =.claude/rules/= mirrors to the rulesets canonical on 2026-05-07, two locations didn't fit the "personal mirror → symlink" pattern and were left untouched pending judgment: @@ -1112,9 +1112,9 @@ While symlinking personal-project =.claude/rules/= mirrors to the rulesets canon For each: read the file, diff against the rulesets canonical, decide whether it's an intentional diverge (leave alone), stale (sync content), or should canonicalize (replace with symlink and accept the cross-repo dependency). The orchestration_dashboard_mvp pair is the project where Vrezh's PR review surfaced this whole thread, so any decision there has team-visibility implications. -** TODO [#C] Audit language-specific rule files for cross-project duplication +** TODO [#C] Audit language-specific rule files for cross-project duplication :chore: :PROPERTIES: -:LAST_REVIEWED: 2026-05-26 +:LAST_REVIEWED: 2026-05-28 :END: The four canonical rules (=commits=, =testing=, =verification=, =subagents=) are now symlinked across the five personal-project mirrors as of 2026-05-07. But several language-specific rule files exist in multiple project mirrors and may be duplicated or drifted: @@ -1127,7 +1127,7 @@ The Elisp pair is the most suspicious — three repos using essentially the same ** TODO [#C] Consolidate =claude-templates/Makefile= after fold :chore:quick:solo: :PROPERTIES: -:LAST_REVIEWED: 2026-05-26 +:LAST_REVIEWED: 2026-05-28 :END: Sibling follow-up from the fold child (2026-05-15). After the subtree merge, =rulesets/claude-templates/Makefile= still has its standalone =install= / =uninstall= / =list= / =test-scripts= targets. The =install= target's =bin/ai= logic is now duplicated in =rulesets/Makefile=. Both work; the redundancy is harmless but worth cleaning up. @@ -1139,9 +1139,9 @@ Options: Triggered by: 2026-05-15 fold session's refactor audit (commit =2d645fc=). -** TODO [#C] Refactor =daily-prep.org= to delegate to =triage-intake.org= for the triage section +** TODO [#C] Refactor =daily-prep.org= to delegate to =triage-intake.org= for the triage section :chore: :PROPERTIES: -:LAST_REVIEWED: 2026-05-26 +:LAST_REVIEWED: 2026-05-28 :END: =daily-prep.org= still does its own inline triage (Gmail × 3 accounts, Slack, Linear, GHE PRs, calendars) as part of the full prep flow. =triage-intake.org= is now a source-agnostic engine that loads =triage-intake.<source>.org= plugins (refactored 2026-05-26), so daily-prep could call the engine and consume its synthesis instead of duplicating the source-scan logic. That DRYs up a large workflow and keeps both flows in sync when sources change — a source change now lives in one plugin that both flows pick up. @@ -1154,9 +1154,9 @@ Scope: Origin: came up while authoring =triage-intake.org= on 2026-05-11; body refreshed after the engine/plugin refactor on 2026-05-26. -** TODO [#C] Templatize =make coverage-summary= into the language bundles +** TODO [#C] Templatize =make coverage-summary= into the language bundles :feature: :PROPERTIES: -:LAST_REVIEWED: 2026-05-26 +:LAST_REVIEWED: 2026-05-28 :END: Borrow dotemacs's =make coverage-summary= into the language bundles. After =make coverage= writes a coverage file, =coverage-summary= prints per-unit covered/total with percentages, a unit-weighted project number, and a list of source files present on disk but missing from the coverage report. @@ -1183,7 +1183,7 @@ Reference (dotemacs): =scripts/coverage-summary.el=, =modules/coverage-core.el=, Origin: handoff from the .emacs.d session, 2026-05-25. -** TODO [#C] Cross-project pattern catalog :spec:thinking: +** TODO [#B] Cross-project pattern catalog :spec:thinking: From pearl handoffs [[file:docs/design/2026-05-27-pattern-catalog-pearl-notes.org][2026-05-27]] + [[file:docs/design/2026-05-28-pattern-catalog-no-empty-input.org][2026-05-28 follow-up]]. Meta-question: how do good patterns travel from project A to project B? Pearl shipped three worked examples worth capturing — one-prompt picker with typed prefix (pearl-pick-source), magit-transient state buttons, and "no empty input as meaningful" (none-sentinel as first candidate). Each is a small principle with wide surface area; without a catalog, every project re-derives them from scratch. @@ -1197,6 +1197,9 @@ Open design questions before any implementation: Pearl recommends a one-page spec (problem + design + open questions + acceptance) before implementation. Pearl available to come back for spec-review iterations. +*** 2026-05-28 Thu @ 08:12:55 -0500 Pearl shipped patterns 4-6, filed alongside the prior two +Three more pearl handoffs landed and were filed during this audit. Filed: [[file:docs/design/2026-05-28-pattern-catalog-prompt-labels-and-defaults.org][prompt-labels-and-defaults]] (patterns 4-5: label-matches-behavior, default-most-common with friction-proportional-to-consequence) and [[file:docs/design/2026-05-28-pattern-catalog-prompt-collapse.org][prompt-collapse]] (pattern 6: collapse N orthogonal prompts into one enriched prompt). The catalog's evidence base is now four pearl notes in =docs/design/= covering six patterns plus the synthesizing principle Pearl articulated — "choices on screen, accurately labeled, ordered by what the user most often wants, friction sized to the cost of being wrong." + :PROPERTIES: :LAST_REVIEWED: 2026-05-28 :END: @@ -1216,6 +1219,50 @@ Before any implementation: needs a real review pass on the spec, and a decision :LAST_REVIEWED: 2026-05-28 :END: +** TODO [#B] Codex Phase 1 — AI_AGENT_ID + session-context.d/<id>.org :feature: +:PROPERTIES: +:CREATED: [2026-05-28 Thu] +:LAST_REVIEWED: 2026-05-28 +:END: + +Lifted from the broader codex runtime spec ([[file:docs/design/2026-05-28-generic-agent-runtime-spec.org]]) as the immediate-correctness slice independent of the larger arc. The singleton =.ai/session-context.org= is unsafe under simultaneous agents — two LLMs running in the same project at the same time would overwrite each other's session state. + +Scope: introduce an =AI_AGENT_ID= environment variable and split the single =session-context.org= into a per-agent =session-context.d/<id>.org= directory. No other phases of the runtime refactor are in this task — keep the surface small, fix the race, ship. + +Touches: =.ai/protocols.org= (rename rule + recovery anchor), =.ai/workflows/startup.org= (Phase A check), wrap-up workflow (rename target), per-project session record discoverability. + +Verification: simulate two agents sharing a project (separate AI_AGENT_ID values) and confirm session-context writes land in distinct files without interleaving. + +Parent: see [[#16 Generic agent runtime support][Generic agent runtime support — Codex spec v0]] above for the larger arc this is sliced from. + +** TODO [#C] Run =--archive-done= sweep at start of =open-tasks.org= Phase A :chore:quick:solo: +:PROPERTIES: +:CREATED: [2026-05-28 Thu] +:LAST_REVIEWED: 2026-05-28 +:END: + +From pearl handoff 2026-05-28. =open-tasks.org= Next Mode reads =* Project Open Work= and skips =* Project Resolved= correctly, but a level-2 task that completed during a session sits as =** DONE= under Open Work until something archives it. Between cleanups, a freshly-DONE task can surface as a "what's next" candidate. + +Proposed fix: as the first step of =open-tasks.org= Phase A, run =emacs --batch -q -l .ai/scripts/todo-cleanup.el --archive-done todo.org=, then read =todo.org=. The cleanup tool already exists; this is wiring it into the workflow. + +Cost: a few hundred ms at the start of every "what's next" invocation. Win: recommendations never include DONE work. + +Optional refinement: gate behind a check for read-only / dry-run mode if that's ever introduced. The default invocation archives. + +** TODO [#C] Enumerate implementation tasks in =spec-review.org= Phase 6 :feature:solo: +:PROPERTIES: +:CREATED: [2026-05-28 Thu] +:LAST_REVIEWED: 2026-05-28 +:END: + +From pearl handoff 2026-05-28. =spec-review.org= Phase 6 currently says "log deferred work to =todo.org=: v1 implementation = [#B] ... vNext/someday = [#D]." That covers deferred and v1 in passing but doesn't lift the spec's =Implementation phases= section into a drop-in =todo.org= block. + +Proposed addition to Phase 6: a structured step that reads the spec's =Implementation phases= section and produces a =[#B] TODO= entry per phase (subject line, tags, one-line body, pointer back to spec), plus a final entry for the test surface (unit / integration / e2e / manual-verify mirroring the spec's =Acceptance criteria= when present). Emit under a new section "Implementation tasks (drop-in for todo.org)" in the review file. Format follows =todo-format.md= (terse heading, body holds context, tags on heading). + +Three wins: handoff is one paste not a re-read; forces specs to be implementable in pieces (a spec without a phase decomposition fails this step, surfacing the shape problem); closes the loop on =Acceptance criteria= as manual-verify entries. + +If the spec lacks an =Implementation phases= section, the step is the prompt to ask the author to add one before =Ready=. + ** DONE [#C] Iteration-history backfill for spec-review and spec-response :docs:followup: CLOSED: [2026-05-28 Thu] Source: org-drill inbox 2026-05-28. |
