aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.ai/sessions/2026-05-25-16-51-elisp-bundle-fixes-and-velox-ssh-cache.org74
-rw-r--r--inbox/lint-followups.org3
2 files changed, 77 insertions, 0 deletions
diff --git a/.ai/sessions/2026-05-25-16-51-elisp-bundle-fixes-and-velox-ssh-cache.org b/.ai/sessions/2026-05-25-16-51-elisp-bundle-fixes-and-velox-ssh-cache.org
new file mode 100644
index 0000000..eea7c17
--- /dev/null
+++ b/.ai/sessions/2026-05-25-16-51-elisp-bundle-fixes-and-velox-ssh-cache.org
@@ -0,0 +1,74 @@
+#+TITLE: Session — elisp bundle fixes, auto-dim bootstrap, velox SSH cache
+#+DATE: 2026-05-25
+
+* Summary
+
+** Active Goal
+
+A multi-strand maintenance session in rulesets. Started from startup-inbox housekeeping (a stale lint follow-up + a task-review nudge), grew into: (1) a full task-review pass over the 10 stale tasks, (2) bootstrapping =~/code/auto-dim-other-buffers.el= as an ai project + elisp bundle, (3) fixing the elisp bundle to gitignore its whole Claude tooling footprint, (4) adding voice pattern #40 (a parallel .emacs.d session's work) + wiring review-code to it, (5) a validate-el.sh themes load-path fix from a .emacs.d handoff, and (6) diagnosing + fixing velox's recurring git-auth re-prompt (the SSH cache TTL gap).
+
+** Decisions
+
+- *Task review (10 stale tasks):* re-graded /research-writer [#B]→[#C] (deferred until a real task triggers it); tagged the two MCP tasks (=uninstall-mcp=, README-MCP-section) =:solo:quick:=; kept the other seven as-is. All ten stamped =:LAST_REVIEWED: 2026-05-25=. Staleness count 10→0.
+- *auto-dim-other-buffers.el = code project:* gitignore =.ai/= (and then the whole Claude footprint). It's mina86's upstream package checkout, so none of Craig's tooling should enter its history.
+- *elisp bundle gitignore reversal:* the bundle had tracked =.claude/rules=, =CLAUDE.md=, and =githooks/= (ignoring only personal overrides). Changed it to ignore the *whole* footprint — for code projects the tooling is delivered by install/sync, never committed. Consistent with =.ai/= already being gitignored for code projects.
+- *coverage-summary task (from .emacs.d handoff):* filed as [#C], rescoped — the only novel value is "missing file counts as 0%, not omitted" (built-in reporters already do per-file + total). Start Elisp-first. Delivery: owned summary script under =.claude/= (synced), plus one per-language text file holding a Makefile-include fragment + coverage-setup recommendation; copy into new projects to own, drop into existing projects' inbox. Never edit the project's Makefile.
+- *velox "400-day expiration" = gpg-agent cache TTL,* not key expiry (GPG keys are no-expiry by design). GPG TTLs were already 400d; the SSH TTLs (=default-cache-ttl-ssh= / =max-cache-ttl-ssh=) were unset, defaulting to 30 min / 2 h. That gap was the recurring push/pull re-prompt cause, since git-over-ssh uses the SSH key.
+
+** Data Collected / Findings
+
+- velox: SSH connection to cjennings.net completes TCP + KEX, then stalls at userauth because gpg-agent needs a pinentry passphrase to sign and pinentry-fuzzel (Wayland) has no surface over a headless ssh. Fix = set both SSH cache TTLs to 34560000 + one interactive unlock on velox itself; then cached 400 days.
+- The bundle fix only affects future installs; auto-dim's already-installed .gitignore was patched by hand to match.
+- Lint on todo.org: 1 judgment item (line 1519, misplaced-heading — verbatim-marker false positive class). Staleness >30d = 0.
+
+** Files Modified
+
+Six commits, all pushed to origin/main (=9ebd26d..e1b5bc7=):
+- =a1adba8= chore(inbox): clear processed lint follow-ups.
+- =45dda25= chore(todo): review and stamp ten stale tasks.
+- =d27d07e= fix(elisp): gitignore the full Claude tooling footprint (+ new =scripts/tests/install-lang.bats=, TDD red→green).
+- =a5b955f= docs(skills): add voice pattern 40, praise/correction asymmetry (parallel .emacs.d work, committed here).
+- =8863993= chore(todo): add coverage-summary language-bundle task.
+- =e1b5bc7= fix(elisp): add themes/ to the validate-el.sh load path (verified by reproducing the false positive).
+
+System-side (no repo change): auto-dim-other-buffers.el bootstrapped as ai project (.ai/ + elisp bundle, full Claude footprint gitignored). velox gpg-agent.conf gained the two SSH cache TTL lines; pulled to e1b5bc7. Memory: added =feedback_notify_attention_project=; corrected =reference_ssh_auth_gpg_agent= (SSH vs GPG cache TTL distinction).
+
+** Next Steps
+
+- coverage-summary task ([#C], Elisp-first) is filed with the settled delivery design if Craig picks it up.
+- velox SSH key now caches 400 days; if a fresh boot ever empties the agent, one interactive unlock on velox restores silent pushes.
+- inbox/lint-followups.org holds one judgment item (line 1519) for next daily-prep.
+
+* Session Log
+
+** Startup + inbox
+
+Ran the startup workflow: clean tree, rulesets + project both current, templates synced, no crash-recovery file. Inbox had lint-followups.org (a verbatim-marker false positive at todo.org line 1460 + a recurring staleness note) and a task-review nudge (10 tasks >7 days). Confirmed the line-1460 warning was the known false-positive class.
+
+** Task review
+
+Walked all 10 stale (never-reviewed) tasks with Craig. Re-graded /research-writer to [#C], tagged the two MCP tasks :solo:quick:, kept the rest, stamped all ten 2026-05-25. Staleness 10→0. Committed the review (45dda25) and the inbox clear (a1adba8).
+
+** auto-dim-other-buffers.el as an ai project
+
+Craig asked to make =~/code/auto-dim-other-buffers= an ai project; the actual dir is =auto-dim-other-buffers.el= (mina86's upstream package, already cloned). Ran =make install-ai PROJECT=... GITIGNORE=1=, then =make install-elisp=. Craig then asked to gitignore the whole =.claude/= (and later CLAUDE.md + githooks/). Patched auto-dim's .gitignore; all four tooling paths confirmed ignored.
+
+** elisp bundle gitignore fix
+
+The install-elisp run exposed that the bundle only ignored two .claude subpaths. Craig: fix the bundle to gitignore the right things including CLAUDE.md and githooks/. TDD: wrote install-lang.bats asserting the full footprint (red), changed languages/elisp/gitignore-add.txt to ignore .claude/ + CLAUDE.md + githooks/ (green). All 32 scripts bats pass. Shipped d27d07e. review-code Approve, /voice personal.
+
+** voice pattern 40 + review-code (parallel .emacs.d work)
+
+git status showed voice/SKILL.md + review-code/SKILL.md modified — a parallel .emacs.d session's work (pattern #40, praise/correction asymmetry, + review-code wiring + tightened inline-comment guidance). Craig authorized committing them. One logical commit a5b955f, described as the change, /voice personal.
+
+** coverage-summary handoff
+
+Inbox handoff from .emacs.d proposed templatizing make coverage-summary into the bundles. Discussed achievability/value/effort; the novel kernel is missing-file-as-0%. Settled the install design (owned script under .claude/, per-language Makefile-include fragment + setup recommendation, copy for new / inbox for existing, never edit the project Makefile). Filed as [#C] task (8863993).
+
+** validate-el.sh themes fix
+
+Second .emacs.d handoff: theme files requiring siblings under themes/ fail byte-compile because themes/ isn't on the hook's load path. Added -L themes to both blocks. Verified by reproducing: without themes/ the require fails ("Cannot open load file"), with the fix exit 0. Shipped e1b5bc7. Pushed all three pending commits.
+
+** velox SSH cache
+
+Craig asked to remote-pull rulesets on velox. The pull hung at SSH userauth. Diagnosed: gpg-agent needs pinentry to sign, no surface over headless ssh. Craig asked whether GPG + SSH keys both had a 400-day expiration — found it meant the agent cache TTL: GPG TTLs were 400d but SSH TTLs were unset (30 min / 2 h), the real recurring-re-prompt cause. Added default-cache-ttl-ssh + max-cache-ttl-ssh = 34560000, reloaded agent, verified all four at 400d. After Craig's interactive unlock on velox, the remote pull succeeded → e1b5bc7. Saved the notify-with-project preference and corrected the SSH-auth memory.
diff --git a/inbox/lint-followups.org b/inbox/lint-followups.org
new file mode 100644
index 0000000..a1f9d3e
--- /dev/null
+++ b/inbox/lint-followups.org
@@ -0,0 +1,3 @@
+
+* 2026-05-25 lint-org follow-ups — todo.org
+** TODO line 1519 — misplaced-heading — Possibly misplaced heading line