aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--todo.org10
-rw-r--r--working/ai-dotfiles-discovery/proposed.diff7
-rw-r--r--working/ai-dotfiles-discovery/request.org41
3 files changed, 58 insertions, 0 deletions
diff --git a/todo.org b/todo.org
index 481eb83..f234e55 100644
--- a/todo.org
+++ b/todo.org
@@ -34,6 +34,16 @@ Tags are assigned and refreshed by =task-audit=; =task-review= keeps them honest
* Rulesets Open Work
+** VERIFY [#B] Parked: add =~/.dotfiles= to the ai launcher's project discovery (from archsetup)
+:PROPERTIES:
+:CREATED: [2026-06-16 Tue]
+:END:
+What arrived: archsetup asks to add =maybe_add_candidate "$HOME/.dotfiles"= to =build_candidates()= in =claude-templates/bin/ai= (right after the =~/.emacs.d= line), so the fzf picker and by-name launch see =~/.dotfiles= now that it's a bootstrapped AI project. Completes the =~/.dotfiles= install done earlier this session. Synced asset, so it parks per the no-approvals Skeptical Review gate rather than self-applying.
+
+Skeptical review: change is correct and minimal — verified =build_candidates()= scans only =~/.emacs.d= / =~/code/*= / =~/projects/*=, and =maybe_add_candidate= guards on =.ai/protocols.org= so the line is inert where =~/.dotfiles= isn't bootstrapped (same safety as the =~/.emacs.d= line). The sender's "check for a discovery test" concern resolves to nothing: no bin/ai test enumerates candidate roots. The =ai-roots.txt= generalization the sender raises is correctly deferred (not needed for two single-$HOME roots).
+
+Prepared change: [[file:working/ai-dotfiles-discovery/proposed.diff]] + [[file:working/ai-dotfiles-discovery/request.org]]. Apply is one line; sync-check mirrors it. Sender notified it's parked. Say "approve the parked dotfiles discovery" to apply.
+
** VERIFY [#B] Helper-instance support — concurrent same-project Claude :feature:spec:
:PROPERTIES:
:CREATED: [2026-06-11 Thu]
diff --git a/working/ai-dotfiles-discovery/proposed.diff b/working/ai-dotfiles-discovery/proposed.diff
new file mode 100644
index 0000000..f22c7a8
--- /dev/null
+++ b/working/ai-dotfiles-discovery/proposed.diff
@@ -0,0 +1,7 @@
+--- a/claude-templates/bin/ai
++++ b/claude-templates/bin/ai
+@@ build_candidates() {
+ candidates=()
+ maybe_add_candidate "$HOME/.emacs.d"
++ maybe_add_candidate "$HOME/.dotfiles"
+ if [ -d "$HOME/code" ]; then
diff --git a/working/ai-dotfiles-discovery/request.org b/working/ai-dotfiles-discovery/request.org
new file mode 100644
index 0000000..3535daf
--- /dev/null
+++ b/working/ai-dotfiles-discovery/request.org
@@ -0,0 +1,41 @@
+#+TITLE: Add ~/.dotfiles to the ai launcher's project discovery
+#+DATE: 2026-06-16
+
+* Request
+
+Add =~/.dotfiles= as an explicit discovery candidate in the =ai= launcher (=claude-templates/bin/ai=), the same way =~/.emacs.d= is handled.
+
+* Why
+
+=~/.dotfiles= was migrated out of archsetup into a standalone stow repo and just got bootstrapped as its own AI project (=.ai/protocols.org= now present). But =build_candidates()= only scans three roots — =~/.emacs.d=, =~/code/*=, and =~/projects/*=. =~/.dotfiles= sits directly in =$HOME=, under none of them, so the fzf picker (bare =ai=) and the "launch dotfiles" by-name trigger never see it. Explicit =ai ~/.dotfiles= already works (=single_mode= only checks for the marker, not a discovery root), but the picker and by-name launch don't.
+
+This is the launcher half of making =~/.dotfiles= a first-class project. The inbox-send half is already handled downstream: =~/.dotfiles= was added to =~/.claude/inbox-roots.txt= (its config-file extension point), so =inbox-send= reaches it now.
+
+* The change
+
+In =claude-templates/bin/ai=, inside =build_candidates()= (currently ~line 89, right after the =~/.emacs.d= line), add:
+
+#+begin_src bash
+ maybe_add_candidate "$HOME/.dotfiles"
+#+end_src
+
+So the head of =build_candidates= reads:
+
+#+begin_src bash
+build_candidates() {
+ candidates=()
+ maybe_add_candidate "$HOME/.emacs.d"
+ maybe_add_candidate "$HOME/.dotfiles"
+ if [ -d "$HOME/code" ]; then
+ ...
+#+end_src
+
+=maybe_add_candidate= already guards on =.ai/protocols.org=, so this is inert on any machine where =~/.dotfiles= isn't bootstrapped — same safety as the existing =~/.emacs.d= line.
+
+* Notes
+
+- I did NOT edit the rulesets canonical from archsetup's session — rulesets had a dirty tree and an interrupted session-context when I checked, so this goes through your own flow instead of interleaving.
+- Worth a glance: if =bin/ai= has a discovery test that enumerates the expected candidate roots, it may need the new line added there too.
+- Generalization to consider (your call, not requested): =~/.emacs.d= and =~/.dotfiles= are both single-project roots in =$HOME=. If more of these accrue, a small explicit list (or a =~/.claude/ai-roots.txt= mirroring =inbox-roots.txt=) would scale better than one =maybe_add_candidate= line each. Not needed for two.
+
+Sender: archsetup (2026-06-16 task-audit follow-through).