aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.ai/sessions/2026-06-01-15-27-daily-prep-symlink-and-install-ai-inbox.org110
1 files changed, 110 insertions, 0 deletions
diff --git a/.ai/sessions/2026-06-01-15-27-daily-prep-symlink-and-install-ai-inbox.org b/.ai/sessions/2026-06-01-15-27-daily-prep-symlink-and-install-ai-inbox.org
new file mode 100644
index 0000000..15417cf
--- /dev/null
+++ b/.ai/sessions/2026-06-01-15-27-daily-prep-symlink-and-install-ai-inbox.org
@@ -0,0 +1,110 @@
+#+TITLE: Session Context
+#+DATE: 2026-06-01
+
+* Summary
+
+** Active Goal
+
+Reworked the daily-prep storage model (prep docs in =daily-prep/= behind a root symlink), taught =install-ai= to create the cross-project =inbox/= on bootstrap, and bootstrapped =~/code/pearl= as an AI project. Two commits, both pushed; one cross-project handoff to =.emacs.d= sent and confirmed.
+
+** Decisions
+
+- *Daily-prep home = =daily-prep/=, not =assets/=.* Craig first said assets, then corrected to the existing =daily-prep/= dir, which becomes the born-here home (no more inbox birth + archive move).
+- *Stable symlink at project root:* =daily-prep.org= → =daily-prep/YYYY-MM-DD-daily-prep.org=, repointed each run with =ln -sf=. Only the symlink changes day to day.
+- *Emacs opener follows the symlink:* the existing =cj/open-project-daily-prep= pointed at =inbox/today-prep.org= (superseded). Filed a handoff to =.emacs.d= rather than editing another repo from here; that agent repointed it to =daily-prep.org= and confirmed.
+- *=install-ai= creates =inbox/= unconditionally* (both track and gitignore modes), since =inbox/= is a project-root convention independent of =.ai/= tracking, and inbox-send needs both markers.
+- *pearl bootstrapped in gitignore mode* (code project, private cjennings.net remote → session records stay local).
+- *=wrap-it-up.org= left untouched* — its =inbox/= references are =lint-followups.org= routing, not the prep doc, so they stayed correct.
+
+** Data Collected / Findings
+
+- lint-org on the reworked =daily-prep.org=: judgment 16→15 (the Phase 8 rewrite cleared one misplaced-heading false positive), mechanical unchanged at 3 (pre-existing Phase 6 item-number counters). Zero new findings.
+- review-code --staged on the daily-prep diff caught a real inconsistency: the "Phase 8 in standup-only mode" subsection still described the old archive behavior. Fixed.
+- =install-ai.bats= 7/7 green after adding 3 inbox tests (red-then-green).
+- pearl wasn't in inbox-send's list until =inbox/= existed — inbox-send requires =.ai/= AND a top-level =inbox/=.
+
+** Files Modified
+
+- =claude-templates/.ai/workflows/daily-prep.org= (+ mirror) — Phase A/slim-Phase-A lookback now globs =daily-prep/= and takes the file before the symlink target; standup-only "Where the brief lands"; Phase 8 rewritten "Archive Older Prep Docs" → "Repoint the Current-Day Symlink" + standup-only Phase 8; 2026-02-23 note superseded; new 2026-06-01 changelog entry. Commit 225c60d.
+- =claude-templates/.ai/workflows/triage-intake.org= (+ mirror) — sentinel-anchor fallback dropped its =inbox/= prep-doc path. Commit 225c60d.
+- =scripts/install-ai.sh= + =scripts/tests/install-ai.bats= — create top-level =inbox/= with =.gitkeep= on bootstrap; 3 new tests. Commit 19e39ae.
+- =~/code/pearl/.ai/= (bootstrapped, gitignored) + =~/code/pearl/inbox/.gitkeep= — pearl's own repo, not committed from here.
+- =~/.emacs.d/inbox/2026-06-01-handoff-from-rulesets-daily-prep-symlink-move.org= — cross-project handoff, processed and confirmed by that project.
+
+** Next Steps
+
+- pearl: add a language bundle if it's a specific stack (=make install-lang PROJECT=~/code/pearl=); its =docs/local-and-linear-views-spec.org= is Craig's own in-flight work, left for a pearl session.
+- First real adopter of the daily-prep symlink model on a consuming project is the live test (logic is verified, not yet run against an accumulated-inbox tree). The migration block in Phase 8 handles the one-time move.
+- Carryover unchanged from prior sessions: Signal MCP install at the desktop (GPG pinentry blocks remote); build out the real Go bundle so its coverage slice becomes sync-maintainable; first adopters sanity-check the Python/TS coverage scripts against a live run.
+
+* Session Log
+
+** Daily-prep symlink rework (2026-06-01 morning)
+
+Craig asked to change the daily-prep workflow so prep docs reside in their
+permanent home from creation and only a stable symlink flips day-to-day.
+
+Settled through two proposal rounds:
+- Home = =daily-prep/= (the existing archive dir becomes the born-here home; no
+ more inbox birth + archive move). Craig first said assets/, then corrected to
+ daily-prep/.
+- Stable symlink at the *project root*: =daily-prep.org= → =daily-prep/YYYY-MM-DD-daily-prep.org=,
+ repointed each run with =ln -sf=.
+
+Discovered the Emacs side already used a stable symlink but at
+=inbox/today-prep.org= (opener =cj/open-project-daily-prep= in
+=~/.emacs.d/modules/prog-general.el=, bound =C-c p d=, test
+=tests/test-prog-general-open-project-daily-prep.el=). That path is superseded
+by the new root symlink. Per Craig, filed a handoff to the =.emacs.d= project's
+inbox (created =~/.emacs.d/inbox/=, dropped
+=2026-06-01-handoff-from-rulesets-daily-prep-symlink-move.org=) asking that
+agent to repoint the opener from =inbox/today-prep.org= to =daily-prep.org=.
+
+Template edits, all in =claude-templates/.ai/workflows/= (canonical; pre-commit
+hook mirrors into =.ai/=):
+- =daily-prep.org=: standup-only "Where the brief lands" (→ daily-prep/ + symlink),
+ slim-Phase-A step 2 lookback, Phase A step 5 lookback (glob daily-prep/, take
+ file before symlink target), Phase 8 rewritten "Archive Older Prep Docs" →
+ "Repoint the Current-Day Symlink" with one-time migration note, 2026-02-23
+ "Prep doc output" note marked superseded, new 2026-06-01 Updates entry.
+- =triage-intake.org= line 205: sentinel-anchor fallback dropped its inbox/ prep-doc path.
+- =wrap-it-up.org=: deliberately left as-is — its inbox/ references are about
+ lint-followups.org routing, not the prep doc, so they stay correct.
+
+Verification: lint-org --check on daily-prep.org — judgment 16→15 (my Phase 8
+rewrite cleared one misplaced-heading false positive), mechanical unchanged at 3
+(pre-existing Phase 6 item-number counters). Zero new findings from the edits.
+
+Publish flow: review-code --staged surfaced one real inconsistency — the
+"Phase 8 in standup-only mode" subsection still described the old
+archive-from-inbox behavior; rewrote it to the symlink model. Synced mirror via
+=scripts/sync-check.sh --fix=, staged the four workflow files (not the live
+=session-context.org=). /voice personal on the message changed "This replaces"
+→ "I replaced" (#32). Committed 225c60d =feat(daily-prep): store prep docs in
+daily-prep/ with a root symlink= on main; pre-commit sync-check passed. Not
+pushed yet — awaiting Craig's go.
+
+The emacs.d handoff sits untracked in =~/.emacs.d/inbox/= by design — that
+project's next session processes it.
+
+** Bootstrap pearl as an AI project + teach install-ai to create inbox/
+
+=make install-ai PROJECT=~/code/pearl GITIGNORE=1= bootstrapped pearl's =.ai/=
+(code project, private cjennings.net remote → gitignore mode). install-ai
+doesn't create a top-level =inbox/=, and inbox-send requires =.ai/= AND
+=inbox/=, so pearl wasn't a messaging target. Created =~/code/pearl/inbox/.gitkeep=
+manually — pearl now lists as #15.
+
+Then made install-ai do this for every project: =scripts/install-ai.sh= now
+=mkdir -p $project/inbox= + =touch inbox/.gitkeep= unconditionally (both modes,
+idempotent so existing inbox content is preserved), with a banner line. TDD:
+added 3 bats tests to =scripts/tests/install-ai.bats= (inbox in gitignore mode,
+inbox in track mode, preserve pre-existing inbox) — red first, then green. Full
+suite 7/7. Committed 19e39ae =feat(install-ai): create top-level inbox/ on
+bootstrap=, pushed 225c60d..19e39ae.
+
+emacs.d closed its loop fast: a confirmation reply landed in rulesets' inbox
+mid-flow (=2026-06-01-0829-from-.emacs.d-confirmed-daily-prep-opener-repointed.org=)
+— that agent repointed =cj/open-project-daily-prep= to =<project-root>/daily-prep.org=,
+updated docstring/message/tests (3/3 green), live-reloaded the daemon. Acknowledged,
+cleared the processed reply; inbox clean.