aboutsummaryrefslogtreecommitdiff
path: root/.ai/sessions
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-05-31 14:02:58 -0500
committerCraig Jennings <c@cjennings.net>2026-05-31 14:02:58 -0500
commitaee7793ddf1802c1574c2d23bf5acd823e7eba1e (patch)
tree97a2efe5c6e6210a360b89839d0720e0afaeb7d9 /.ai/sessions
parentee903e4b63257573773e93d10612250e3634cae9 (diff)
downloadrulesets-aee7793ddf1802c1574c2d23bf5acd823e7eba1e.tar.gz
rulesets-aee7793ddf1802c1574c2d23bf5acd823e7eba1e.zip
chore(ai): archive session record + sweep resolved tasks
Move the completed solo-batch, rename-tool, and coverage-fan-out tasks into Resolved, and file the lint-org judgment items for the next daily-prep.
Diffstat (limited to '.ai/sessions')
-rw-r--r--.ai/sessions/2026-05-31-14-01-solo-batch-coverage-fanout-rename-tool.org63
1 files changed, 63 insertions, 0 deletions
diff --git a/.ai/sessions/2026-05-31-14-01-solo-batch-coverage-fanout-rename-tool.org b/.ai/sessions/2026-05-31-14-01-solo-batch-coverage-fanout-rename-tool.org
new file mode 100644
index 0000000..01598f1
--- /dev/null
+++ b/.ai/sessions/2026-05-31-14-01-solo-batch-coverage-fanout-rename-tool.org
@@ -0,0 +1,63 @@
+#+TITLE: Session — solo-task batch, rename tool, coverage-summary fan-out
+#+DATE: 2026-05-31
+
+* Summary
+
+** Active Goal
+
+Started as one spec-review solo task and grew into a full no-approvals solo-task batch, then two larger tooling builds Craig directed interactively: a generic =.ai/= artifact-rename tool (dogfooded by renaming the drill-deck family to flashcard), and the coverage-summary fan-out across all four language bundles.
+
+** Decisions
+
+- Solo-task tagging (0989698): seven tasks tagged =:solo:=. A1 — leave the category-3 deepsat rule copies alone (no cross-repo dependency on private rulesets). B2 — hold the google-docs token-rotation helper (1050) until a real rotation lets write+verify happen together; not tagged solo. C2 — restructure both startup.org and triage-intake.org into the four-lane structure.
+- No-approvals mode for the seven solo tasks: interaction gates off, review-code + voice + tests + session-log stay on.
+- Rename tooling: build a script (not just a workflow doc), make it a general artifact renamer (handles scripts too), build it first and dogfood it on the flashcard rename. Renamed the whole family (workflow + four scripts + tests) for consistency, not just the workflow.
+- Coverage fan-out: Elisp-first pilot, then Python/Go/TS. Go shipped as a coverage-only slice (no rule file yet). Each script written in the bundle's native language; the kernel is missing-file-as-0% + file-weighted project number; don't reimplement the per-file table the native reporter already prints.
+
+** Data Collected / Findings
+
+- Dogfooding the rename tool caught a real bug: it rewrote only the literal hyphen stem and missed the underscore module-name variant (drill_deck_stats in importlib). Fixed + tested. A SIGPIPE from piping the script to =head= mid-run left references half-rewritten once; the end-of-run integrity+sync checks caught the drift. Lesson: don't pipe it to a truncating reader.
+- Modern =go test ./...= lists every module package in the profile at 0% even when untested, so Go's missing-file list is usually empty for in-module code — the detection earns its keep on build-tagged files and dirs outside =./...=.
+- coverage.py and nyc aren't installed in this env: Python and TS scripts proven against faithful fixtures + CLI, not a live run. Go and Elisp were dogfooded against real reports.
+
+** Files Modified
+
+- =spec-review.org= — Phase 6 implementation-task enumeration (5641182).
+- =scripts/workflow-integrity.py= + bats — workflow integrity checker (58434f4); later accepts "Summary" orientation heading (3640664).
+- =.aiignore= + recursive-read convention (0f0905f); language rule-dup audit, left project-local (976d41c, a072f7c).
+- =daily-prep.org= — triage delegated to the triage-intake engine (5438c31).
+- =startup.org= + =triage-intake.org= — four-lane restructure, content-preservation-guarded (3640664).
+- =languages/{elisp,python,go,typescript}/= — coverage-summary scripts + tests + Makefile fragments + gitignore; =make test= discovery for ERT/pytest/go test/node --test (b46619c, af478a4, 47ca509, ee903e4).
+- =scripts/rename-ai-artifact.sh= + bats + =rename-artifact.org= workflow; flashcard family rename (ddf48dc).
+
+** Next Steps
+
+- Build out the real Go bundle (=go.md= / =go-testing.md= + =CLAUDE.md=) so the coverage slice becomes sync-maintainable (sync fingerprints on a rule file, which the slice lacks).
+- First adopters of the Python and TS coverage scripts should sanity-check against a live =coverage json= / nyc run.
+- Held: google-docs token-rotation helper (1050) — do it when a rotation is imminent.
+
+* Session Log
+
+** 2026-05-31 10:34 CDT — startup
+
+Fresh session, clean boot. Prior session wrapped cleanly (no session-context.org at start). Both repos current. The .ai/ sync dogfooded the new skip-when-dirty guard (rulesets clean → synced) and the AI_AGENT_ID session-context-path helper (unset → singleton). Inbox empty, no cross-agent messages, no stale tasks, no reminders/pending decisions, language bundle clean.
+
+** 2026-05-31 ~10:39 CDT — solo task: spec-review Phase 6 implementation-task enumeration
+
+Craig asked for remaining :solo: tasks; one was open ([#C] :feature:solo:, from a pearl handoff). Did it: added a Phase 6 step to =spec-review.org= that lifts a spec's =Implementation phases= section into a drop-in =todo.org= block (one =[#B]= TODO per phase + a test-surface entry mirroring =Acceptance criteria=); a spec lacking phase decomposition raises that as a finding instead of inventing phases. Added Exit Criterion 6 and a review-history entry. Mirror-synced, sync-check clean, full suite 409/1skip green. Task marked DONE. Committed 5641182, pushed.
+
+** 2026-05-31 ~10:50 CDT — solo-task review + tagging
+
+Craig: re-review every open task for true solo-ness. Walked all 18 bodies. Tagged seven =:solo:= (0989698) with each decision recorded in its task body (A1/B2/C2 above). Cadence check: inbox 0 pending.
+
+** 2026-05-31 ~10:55 CDT — no-approvals batch: the seven solo tasks
+
+No-approvals ON, scoped to the seven tasks. Items, in order, all committed + pushed: workflow-integrity checker (58434f4); .aiignore + recursive-read convention (0f0905f, after surfacing that the named walking scripts don't do whole-tree walks — Craig chose ship-file-skip-script-wiring); language rule-dup audit left project-local (976d41c); category-3 deepsat copies left alone (a072f7c); daily-prep→triage-intake delegation (5438c31); four-lane restructure of startup.org + triage-intake.org with a content-preservation guard (3640664); Elisp coverage-summary pilot (b46619c). Full suite green throughout.
+
+** 2026-05-31 ~13:00 CDT — rename tooling + flashcard rename
+
+Craig asked whether the flashcard workflow should be renamed, then to build a rename tool so the oversight (assuming renames are costly; missing scattered references) doesn't recur. Built =scripts/rename-ai-artifact.sh= (TDD, 9 bats): moves an artifact in both canonical + mirror trees, rewrites references on a token boundary plus the underscore module-name variant, skips =sessions/= history, runs workflow-integrity + sync-check. Added =rename-artifact.org= + INDEX entry. Dogfooded it on the whole drill-deck family → flashcard (workflow + flashcard-stats/sync/to-anki/diff-ids + tests). The dogfooding caught the underscore-variant bug and a SIGPIPE partial-rewrite (verify step caught the drift); both noted. Committed ddf48dc, pushed.
+
+** 2026-05-31 ~13:40 CDT — coverage-summary fan-out: Python, Go, TypeScript
+
+Fanned the Elisp pilot out to the other three bundles, each TDD, native-language parser, same kernel. Python (af478a4): coverage.py JSON, 12 pytest, new =languages/*/tests/test_*.py= discovery, added the bundle's missing gitignore-add.txt. Go (47ca509): cover.out parser in Go, black-box test in its own module, dogfooded against a live profile, coverage-only slice (no rule file → not sync-fingerprintable, documented). TypeScript (ee903e4): Istanbul json-summary parser in JS, node --test discovery, added gitignore-add.txt. Fan-out complete across all four bundles. Follow-up filed for the Go bundle buildout; task marked DONE.