aboutsummaryrefslogtreecommitdiff
path: root/todo.org
Commit message (Collapse)AuthorAgeFilesLines
* chore(todo): close language-ruleset audit itemsCraig Jennings2026-05-221-24/+12
|
* chore(todo): close architecture audit itemsCraig Jennings2026-05-221-45/+24
|
* chore(todo): close branch-workflow and c4 audit itemsCraig Jennings2026-05-221-36/+18
|
* chore(todo): close v2mom, prompt-engineering, and codify audit itemsCraig Jennings2026-05-221-36/+18
|
* chore(todo): close frontend, security, and pairwise audit itemsCraig Jennings2026-05-221-44/+18
|
* chore(todo): close add-tests audit items (1 fixed, 1 moot)Craig Jennings2026-05-221-12/+6
|
* chore(todo): close debugging-skills audit itemsCraig Jennings2026-05-221-17/+9
|
* chore(todo): close playwright headed/headless itemCraig Jennings2026-05-221-6/+3
|
* chore(todo): close PR-response audit items (2 fixed, 2 moot)Craig Jennings2026-05-221-24/+12
|
* chore(todo): close review-code CI-trust and CLAUDE.md-citation itemsCraig Jennings2026-05-221-15/+7
|
* chore(todo): close GH-assumption and review-code strengths tasksCraig Jennings2026-05-221-5/+5
|
* chore(ai): archive session record and task-review todo cleanupCraig Jennings2026-05-201-96/+94
| | | | Archive the DONE task-review implementation and the cancelled OV-1 skill from Open Work to Resolved. The follow-ups file picks up one lint judgment and the review-habit staleness line for the next daily-prep.
* chore(todo): close the task-review implementation as doneCraig Jennings2026-05-201-2/+3
| | | | The habit is built and smoke-tested — the staleness script with count and --list modes, the wrap-up health check, the task-review workflow, and the startup nudge all shipped, and the first review cycle ran clean against the live list. The elisp component was dropped under Shape B. The daily habit carries on through the startup nudge and the wrap-up watchdog.
* chore(todo): re-grade and prune tasks in a review passCraig Jennings2026-05-201-5/+26
| | | | This is the first task-review cycle. I re-graded create-documentation, the 2026-05-04 audit review pass, and /update-skills from [#A] to [#C]; bumped the wrap-it-up GitHub-remote chore to [#A] and tagged it :quick:; and cancelled the OV-1 DoDAF skill. The kept and re-graded tasks get a :LAST_REVIEWED: stamp so the staleness watchdog and the rotation know they've been looked at.
* docs(design): record task-review Shape B revisionCraig Jennings2026-05-201-8/+9
| | | | | | The spec recommended an Emacs keystroke mode (task-review.el). Implementation went the other way — a pure Claude workflow, no elisp — because the interactive mode would couple a rulesets-owned file to archsetup's init.el, and the daily Claude touchpoint already exists in daily-prep. I added a Revision section at the top recording the change: pure workflow, rulesets-owned, the task-review.org / open-tasks.org name swap, the staleness --list selection, and the startup nudge promoted to template-level. The elisp architecture and ERT sections stay as a record of the abandoned approach, flagged superseded. The todo task moves to DOING with per-component status: everything but the smoke test is done, and component 3 (the elisp) is dropped.
* chore(ai): archive session record and wrap-up lint followupsCraig Jennings2026-05-191-13/+12
| | | | Records this session's process-rule additions (Discovery check in commits.md Step 1; mechanical primary trigger for session-context writes), ai launcher polish (per-project opening line + explicit end-of-session window placement), and the new triggers.md for cross-project launch phrases. Lint-followups carries the recurring misplaced-heading judgment at line 2143 (false positive: `**` inside `=...=` verbatim, leave alone) plus a date-coverage list, both deferred per the task-review spec.
* chore(todo): close Phase A inbox-blind-spot task as mootCraig Jennings2026-05-191-1/+4
| | | | | | The bug was real on 2026-05-15 but is moot in current state. inbox-send.py's discovery scans ~/code/* and ~/projects/* single-level, so claude-templates/ (two levels under ~/code/) is never routable as a target. The 2026-05-15 incident was a one-time manual workaround because rulesets/inbox/ didn't exist yet; 470085f added that root inbox and the same session removed claude-templates/inbox/. Nothing routes to the subtree inbox now, and the subtree inbox doesn't exist. Phase A scanning only ./inbox/ is correct given current state. No code change needed; this is just a depth-based completion flip per the todo-format convention.
* docs(design): task-review spec + filed [#A] taskCraig Jennings2026-05-161-0/+14
| | | | | | docs/design/task-review.org captures the brainstorm output for a daily 5-min keystroke-driven review habit that walks 7 oldest-unreviewed top-level [#A]/[#B]/[#C] tasks per session, rotating through the list over ~12 days. Replaces wrap-it-up.org's date-coverage scan once implemented; the watchdog flips from "do all priorities have dates?" to "is the review habit happening?" with a 30-day threshold. todo.org gets a [#A] entry at the top of Rulesets Open Work pointing at the spec, so the implementation work isn't lost. Six components in the spec's Next Steps: extract task-review-staleness.sh, replace the wrap-up section, author task-review.el in archsetup, author the workflow file plus INDEX entry, add the startup nudge, smoke test.
* docs(todo): archive wrap-it-up github task; file Step 3.5 follow-upCraig Jennings2026-05-161-5/+24
| | | | | | | | | | 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.
* chore(ai): wrap stale-cleanup + bats harness for audit/install-aiCraig Jennings2026-05-151-47/+44
| | | | Two arcs this session: closed two stale todo entries (/lint-org retroactively, pull-ordering doc proactively after writing the missing protocols.org paragraph), then built scripts/tests/audit.bats and scripts/tests/install-ai.bats covering the three deferred destructive edges from yesterday's fold-epic test plan. A dotemacs cross-project handoff for a cj-scan nested-fence bug landed during commit staging and shipped as its own commit, separate from the test-harness work. archive-done moved three DONE level-2 entries to Rulesets Resolved.
* docs(todo): close test harness; file Phase A inbox-scan bugCraig Jennings2026-05-151-1/+12
| | | | Flipped the test harness task at line 1766 to DONE (work landed in 7ef200a). Filed a new [#B] for a fold side-effect surfaced during the publish flow: Phase A's inbox check at startup.org:107 only looks at the project root, so it never scans claude-templates/inbox/ (the canonical's inbox, now in-repo after the subtree merge). This session received a cross-project handoff there at startup and missed it entirely; the drift surfaced only during commit staging.
* fix(cj-scan): suppress detection inside nested non-cj begin_* blocksCraig Jennings2026-05-151-0/+27
| | | | | | cj-scan.py matched =#+begin_src cj:= / =#+end_src= line-by-line without awareness of enclosing block scopes. A cj fence embedded inside =#+begin_example= (typical when documenting what the <cj yasnippet emits) or =#+begin_src snippet= (the yasnippet definition itself) was misclassified as a live cj annotation. Two false positives surfaced from a /respond-to-cj-comments run against an org file with yasnippet docs. Track an active wrapper_type. When the scanner sees =#+begin_<type>= for any type other than cj: (the cj-open regex is checked first), enter a wrapper state where every line is content until the matching =#+end_<type>= closer fires. Inside a wrapper, both fence patterns and legacy inline cj: lines stay suppressed. Added the TestCjScanNestedFencesIgnored class with 6 tests: nesting inside example, src <other-lang>, and quote; regression guards for clean wrapper close and unclosed-wrapper non-swallow. Canonical pytest: 302 passed, 1 skipped.
* docs(todo): close /lint-org and pull-ordering doc tasksCraig Jennings2026-05-151-18/+10
| | | | /lint-org at line 1292 shipped on 2026-05-14 but never got flipped. The pull-ordering doc task at line 36 shipped partially earlier (Phase A.0 wired in the 2026-05-15 fold) and just got its protocols.org paragraph in the previous commit. This commit rewrites the body to reflect what actually landed and flips it to DONE.
* chore(ai): wrap fold-claude-templates + audit/install-ai + ratio migrationCraig Jennings2026-05-151-175/+173
|
* docs(todo): close consolidate .ai/ template infra epic; ratio migratedCraig Jennings2026-05-151-2/+4
|
* docs(start-work): encode follow-up filing placement rulesCraig Jennings2026-05-151-1/+2
| | | | | | Phase 4 step 5's "Disposition for each candidate" now spells out where to file a "file a ticket" follow-up in todo.org: siblings for epic-style parents (level-2 with level-3 children), new level-2 entries for standalone tasks. Both cases require a "Triggered by:" line so a future reader sees the origin. The placement rule lived in project memory but didn't propagate across projects. Encoding in start-work makes it cross-project default behavior.
* docs(todo): mark fold-epic children 1-3 done (audit, install-ai, fold), ↵Craig Jennings2026-05-151-3/+6
| | | | child 5 awaits ratio
* feat(make): add catchup-machine target for cross-machine .ai/ syncCraig Jennings2026-05-151-1/+1
| | | | | | | | scripts/catchup-machine.sh runs the four steps that bring a machine in sync with rulesets canonical: git pull, make install (symlink refresh), make audit APPLY=1 (rsync .ai/ across all projects), and make doctor (verify). Idempotent, safe to re-run any time. Built for the post-fold ratio migration but applies generally: after a fresh rulesets clone on a new machine, or whenever the canonical source has advanced since last sync. Handles dirty working trees by skipping the pull and surfacing a warning; user commits or stashes before re-running.
* docs(todo): close fold-epic test plan, file edge-case follow-upCraig Jennings2026-05-151-1/+16
| | | | Audit and install-ai both pass their core test paths (report-only, --apply convergence, idempotency, fresh install, refusal-on-existing, GITIGNORE mode, doctor 36/0/0, pytest 296+1 skipped). Three destructive edge cases (--force on dirty, missing .ai/ FAIL, install-ai fzf-pick form) were deferred to a [#C] sibling task that proposes a self-contained test harness rather than running them against real projects.
* feat(make): add install-ai target for bootstrapping .ai/ in fresh projectsCraig Jennings2026-05-151-1/+1
| | | | | | | | scripts/install-ai.sh copies canonical .ai/ content from claude-templates/ into a fresh project. Rsyncs protocols.org, workflows/, scripts/, someday-maybe.org as-is; templates notes.org with project-name and date placeholders substituted; creates empty sessions/, references/, retrospectives/ dirs. Two tracking modes: TRACK=1 adds .gitkeep files inside otherwise-empty dirs so they survive in git history; GITIGNORE=1 appends .ai/ to the project's .gitignore so session records stay local. Prompts interactively if neither flag is set. Refuses if PROJECT/.ai/ already exists with a message pointing to `make audit APPLY=1` for sync of existing installs. Without a PROJECT argument, fzf-picks from ~/code/* + ~/projects/* git checkouts that don't already have .ai/.
* feat(make): add audit target for cross-project .ai/ drift detectionCraig Jennings2026-05-151-1/+1
| | | | | | | | scripts/audit.sh walks every .ai/-using project under ~/code/, ~/projects/, and ~/.emacs.d/, compares each .ai/ against the canonical source at claude-templates/.ai/, and reports drift per project. Default mode is report-only; APPLY=1 rsyncs detected drift into each project (no auto-commit). FORCE=1 also rsyncs into projects with uncommitted .ai/ changes (default: skip with a warning). Uses diff -rq for content comparison rather than rsync --itemize-changes to avoid false positives on attribute-only drift (mtime, permissions). Skips the rulesets repo itself, the in-repo canonical source, and the legacy standalone ~/projects/claude-templates/ during the fold transition. Output mirrors make doctor: per-project ok/drift/applied/skipped/FAIL lines, summary tally, exit 0 when all ok. Runs make doctor as the final check by default; NO_DOCTOR=1 skips.
* docs(todo): file start-work follow-up filing rule taskCraig Jennings2026-05-151-0/+15
| | | | Top-level [#B] task captures a gap in /start-work Phase 4 step 5: the "file a ticket" disposition doesn't say where to file, so follow-ups land ad-hoc. Proposed rules in the task body — siblings for epic parents, new top-level for standalone tasks. Triggered by today's fold-epic session surfacing the gap.
* docs(todo): file Makefile redundancy as fold-epic siblingCraig Jennings2026-05-151-0/+11
| | | | After the bin/ai fold (commit 2d645fc), claude-templates/Makefile still has install/uninstall/list/test-scripts targets, and its bin/ai install logic duplicates rulesets/Makefile. [#C] sibling task captures the cleanup options (delete, strip down, leave) without gating the parent epic's DONE state.
* docs(todo): start consolidate .ai/ template infra epicCraig Jennings2026-05-151-12/+125
| | | | Parent task at todo.org:1774 umbrellas five children: fold claude-templates into rulesets, build make audit + make install-ai, test plan, ratio migration. Existing [#B] fold and audit tasks demoted as children, promoted to [#A]. Parent marked DOING.
* docs(todo): start memory-sync investigation, bump audit prioritiesCraig Jennings2026-05-141-47/+69
| | | | | | | | | | | | | | | | | | Memory-sync [#A] TODO flipped to DOING. Added a dated work-log subheader recording what's on disk under ~/.claude/projects/ (plain files, no symlinks, no git) and the proposed fix (stow ~/.claude/projects via archsetup/dotfiles/common/). Added a VERIFY child awaiting approval on the stow approach before any moves. Side effect of the wrap-up's --sync-child-priority pass: 43 [#B] children of the [#A] "Review pass: tighten skills and rulesets after 2026-05-04 audit" parent bumped to [#A] to match the parent. Tag any of them :no-sync: if they should stay at [#B]. Archived 2026-05-14-21-43-lint-org-build-and-memory-sync-investigation to .ai/sessions/. The day shipped /lint-org as a four-commit feature across claude-templates and rulesets, then this short follow-on pass processed the line-11 src-block via /respond-to-cj-comments.
* feat(lint-org): add /lint-org command + file design specCraig Jennings2026-05-141-0/+21
| | | | | | | | | | | | | | | A new /lint-org command at .claude/commands/lint-org.md orchestrates the elisp script: invokes it, parses the stdout plist stream, walks each judgment item with the user via inline numbered options (per interaction.md, no popup), and reports pre/post-pass deltas. Two modes: interactive (default, walks judgments now) and mechanical-only (defers them to a follow-ups file via --followups-file). The spec at .ai/specs/lint-org-skill-spec.md is the design doc that motivated this work, captured from yesterday's manual 55→1 lint pass on todo.org. todo.org gains a [#A] entry pointing at the spec.
* docs(todo): track pull-before-project ordering rule for protocols.orgCraig Jennings2026-05-131-0/+19
|
* chore: updating todo.org fileCraig Jennings2026-05-131-0/+4
|
* docs(todo): plan daily-prep delegation to triage-intakeCraig Jennings2026-05-111-0/+11
|
* docs(todo): mark --archive-done task doneCraig Jennings2026-05-111-11/+13
|
* docs(todo): add --archive-done task for todo-cleanup.elCraig Jennings2026-05-111-0/+11
|
* docs(todo): add make-audit and claude-templates-fold tasksCraig Jennings2026-05-111-0/+39
| | | | I added two [#B] entries. The first folds the standalone claude-templates repo into rulesets/claude-templates/ via subtree merge, bridging the path change with a transitional symlink while every project picks up the updated startup.org. The second adds a make audit target that diffs each .ai/-using project against the canonical template source. Both are on hold for now — the entries just record the plan.
* docs(todo): nest entries under a "Rulesets Open Work" headingCraig Jennings2026-05-111-194/+199
| | | | Add a single top-level "Rulesets Open Work" heading and demote every entry one level so the file has one root section.
* docs(todo): add follow-ups for category-3 rules and language-rule auditCraig Jennings2026-05-071-0/+19
| | | | | | | Two open decisions from the 2026-05-07 rulesets centralization pass: - Category-3 rule copies in the deepsat tree (`coding-rulesets/` and `orchestration_dashboard_mvp/`) — read each and decide between leave, sync, or symlink. - Language-specific rule files (python-testing, typescript-testing, elisp-testing, elisp) duplicated across multiple project mirrors — audit and possibly canonicalize.
* chore(skills): remove humanizer (superseded by voice)Craig Jennings2026-05-071-0/+210
| | | | | | | | I deleted humanizer/SKILL.md now that all three callers (commits.md, respond-to-cj-comments.md, start-work.md) invoke /voice instead. The 25 humanizer patterns live on as patterns 1-25 in voice/SKILL.md. Same source (Wikipedia's Signs of AI writing), same prose, same examples — just renumbered alongside the universal good-writing additions and the personal-only patterns. I also updated .ai/notes.org and .ai/workflows/wrap-it-up.org to reference /voice personal instead of the old humanizer + manual-passes flow. The wrap-it-up change landed upstream in claude-templates first so it survives the next startup rsync. todo.org gets the matching update: the voice TODO is marked DONE with a "Built and shipped" timestamp, the publish-mode terminology is renamed to personal-mode throughout, the V1 scope checklist is ticked, the open questions are resolved with the answers we landed on during implementation, and the migration section records the delete-not-alias decision.
* feat(make): add doctor target for ~/.claude drift detectionCraig Jennings2026-05-071-0/+83
| | | | | | | | | | | | =make doctor= scans =~/.claude/= and reports drift against the repo + settings.json. Read-only diagnostic. Eight checks cover skills, rules, default hooks, claude config, settings.json hook references, enabledPlugins, MCP server registrations, and dangling symlinks. Each line prints =ok= / =WARN= / =FAIL= with a final summary. Exit 1 on any FAIL. A sweep last night found =~/.claude/hooks/= didn't exist on this machine even though =settings.json= referenced a PreCompact hook there. Compaction would have silently failed to invoke it. doctor catches that kind of drift in one command instead of relying on a manual look. The MCP drift check reads =~/.claude.json= directly rather than parsing =claude mcp list=. The CLI has no JSON output and runs a per-server health probe (~10s). The JSON file is the user-scope source of truth for registrations and parses in well under a second. I verified by injecting four drift scenarios — removed hook symlink, removed skill symlink, moved-aside plugin data dir, unregistered MCP server. Each produced the expected =FAIL= line and exit 1. After restoring state, doctor came back clean (33 ok). Bundling four other improvement TODOs from the same sweep — =mcp/README.org=, =make uninstall-mcp= and =mcp/install.py --check=, a README.org section for the MCP install pipeline, and a token-rotation helper for =@a-bonus/google-docs-mcp= OAuth refresh. Plus a stale-bullet note on the existing =make remove= TODO (the bridge symlink it references was removed earlier).
* docs(todo): add make-remove fzf-picker taskCraig Jennings2026-05-061-0/+1130
| | | | | | Captures the design discussion for an interactive Makefile target that lists installed rulesets and removes selected entries via fzf. Granular alternative to the bulk make uninstall.
* docs(todo): add OV-1 skill build plan triggered by SOFWeek (May 2026)Craig Jennings2026-04-191-0/+74
|
* docs(todo): expand c4-* rename entry with DoD notation landscape (SysML / ↵Craig Jennings2026-04-191-0/+101
| | | | DoDAF / UAF / IDEF1X)
* docs(todo): note c4-* rename trigger and future notation skills (UML, ERD, ↵Craig Jennings2026-04-191-0/+42
| | | | arc42)