agent-compose: Windows load-point (~/.claude/CLAUDE.md) points at dead X:\projects-x path; role has no Windows root branch #445
Labels
No labels
burndown-2026-06
coherence-core
consult
headless
interactive
P0
P1
P2
P3
P4
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
coilyco-flight-deck/infrastructure#445
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
On the Windows host,
~/.claude/CLAUDE.md(the ansible-managed agent-compose load-point) points at a dead path. It currently reads:The fleet checkout on Windows just moved from
X:\projects-xtoX:\projects(org dirs directly under the umbrella;projects-xis now empty). So the single@-include resolves to a nonexistent file and the entire Kai operating context (agentic-os-kai/AGENTS.md) silently fails to load into the session. Companion doc/script sweep for the move: coilyco-bridge/agentic-os-kai@51cf8d3.Deeper: agent-compose has no Windows support
Re-converging won't fix it as-is, because the role isn't wired for Windows:
ansible/roles/agent-compose/defaults/main.ymlroots every load-point at{{ ansible_facts['env'].HOME }}/projects/...with no OS branch (agent_compose_kai_root,agent_compose_aos_root, lines 3-4). On WindowsHOMEisC:\Users\firem, so that computesC:\Users\firem\projects\...— but Kai's checkouts live on theX:drive (X:\projects), not under the home dir.windowsgroup_vars (ansible/inventory/group_vars/has base/personal/work +linux.yml,mac.ymlonly), so no place currently overrides the projects root for theX:drive.X:/projects-x/...value therefore was not produced by this role on Windows (the role would emitC:\Users\firem/projects/...); it's a hand-written / stale artifact now pointing at the abandoned root.Proposed fix
windowsgroup_vars setting the root toX:\projects(default), feedingagent_compose_kai_root/agent_compose_aos_root. Mirrors howagentic-os-pin-convergealready parameterizesaos_pin_projects_root({{ HOME }}/projects, env-overridable viaAOS_PIN_PROJECTS_ROOT).~/.claude/CLAUDE.mdon the Windows host so the load-point resolves toX:\projects\coilyco-bridge\agentic-os-kai\AGENTS.md.~/.claude/CLAUDE.mdmust be hand-maintained; note that in the role/README so it isn't assumed converged.Context
projects-x->projects) also touched the repo-root helpers and docs in agentic-os-kai (up-to-date.py, repo-tests.py, merge-*.py, kai-windows-env, etc.), landed in coilyco-bridge/agentic-os-kai@51cf8d3.~/.bashrc+ both PowerShell$PROFILEs) already repointed toX:\projects.🔒 Reserved by
ward agent --driver claude— containerengineer-claude-infrastructure-445on hostKAI-DESKTOP-TOWERis carrying this issue (reserved 2026-07-05T03:21:41Z). Concurrentward agentruns are blocked until it finishes or the reservation goes stale (2h0m0s TTL);--forceoverrides.Do not comment on or edit this issue to steer the run while it is reserved. The engineer seeded the body once at launch and never re-reads it, so a comment or edit reaches only human readers, never the running engineer. A correction goes to a new issue, dispatched fresh — that is the only channel that reaches a run in flight. Where the forge supports it, ward locks this conversation to make that a road-block rather than a convention (ward#494).
— Claude (she/her), via
ward agentWARD-OUTCOME: done - agent-compose kai/aos roots now branch off one
agent_compose_projects_rootknob, with a stagedwindows.ymloverride toX:/projects; pushed to main (335d62b), CI green, closes #445.Honest retro: this one was more archaeology than surgery. The actual code change is tiny - one derived variable in
defaults/main.yml- but the real work was reading enough of the inventory to know why the Windows path was dead and where the fix honestly belongs. The trap I nearly fell into was wiringsync.yml'sgroup_byto form awindowsgroup sowindows.ymlwould actually converge. Reading further showed native-Windows ansible is a whole blocked foundation (#356, WinRM +ansible.windows), and the repo already has a precedent -fleet-reachability-tower-win- for staging Windows config ahead of that foundation with loud "do not live-apply" headers. So I matched that:windows.ymlis committed but keyed to a group that never forms yet, and every doc says the Windows load-point stays hand-maintained until #356. That keeps the config honest instead of pretending Windows converges.One thing fought back: pre-commit's pylint hook failed on a sandbox quirk (
UV_PYTHON_INSTALL_DIRpointed at a root-owned/opt/uv/python), not my diff - I redirected it to a writable path and it passed clean, no--no-verify.Confidence is high on the parts a machine can verify (ansible refactor is behavior-preserving on every Unix host, all catalog hooks + CI green). The one thing this container cannot close is step 2 of the issue - regenerating the actual
~/.claude/CLAUDE.mdon the Windows host - because that box isn't reachable from here and has no converge path. That remains a hand-edit on the host, which is exactly what the docs now say. Worth a follow-up only when #356 lands: fold thewindowsgroup intogroup_byand drop the hand-maintenance note.