Date: 2026-04-30
While creating a new Ito change in a fresh worktree, ito create change failed before it could scaffold the change. The first failure mode was clearly caused by missing .ito coordination symlinks in the new worktree. After wiring those symlinks with ito init --update --tools none, ito create change still failed with a generic I/O error: No such file or directory, so a second issue likely exists beyond the missing symlinks.
This file records the exact commands and observations from the session so future agents can recover more quickly and so Ito can be improved to self-heal or auto-wire worktrees.
In the main worktree, these paths are symlinks:
.ito/audit -> /Users/jack/.local/share/ito/withakay/ito/.ito/audit.ito/changes -> /Users/jack/.local/share/ito/withakay/ito/.ito/changes.ito/modules -> /Users/jack/.local/share/ito/withakay/ito/.ito/modules.ito/specs -> /Users/jack/.local/share/ito/withakay/ito/.ito/specs.ito/workflows -> /Users/jack/.local/share/ito/withakay/ito/.ito/workflows
Those symlinks were missing in newly created worktrees until ito init --update --tools none was run inside each worktree.
Read guidance from:
AGENTS.md.ito/AGENTS.md
Observed rule: create a temporary proposal worktree first when no final change ID exists yet, then create the final change worktree before editing generated artifacts.
Workdir:
<repo-root>
Command:
git worktree add "<repo-root>/ito-worktrees/proposal-ddd-workflow" -b proposal-ddd-workflow mainResult:
- Worktree was created successfully.
- No
.itocoordination symlink wiring happened automatically.
Workdir:
<repo-root>/ito-worktrees/proposal-ddd-workflow
Command:
ito create change "add-ddd-discovery-workflow" --module 001 --schema spec-drivenResult:
- Ito printed warnings that the following were regular directories rather than symlinks to the coordination worktree:
.ito/changes.ito/specs.ito/modules.ito/workflows.ito/audit
- Ito then failed with:
Error: Module '001' not found
Conclusion:
- Missing coordination symlinks prevented the worktree from seeing shared module/change/spec state.
Workdir:
<repo-root>/ito-worktrees/proposal-ddd-workflow
Commands:
ito worktree --help
ito agent instruction worktree-initResult:
ito worktreeadvertisedensure,setup, andvalidate.ito agent instruction worktree-initdocumented how to useito worktree ensure --change <change-id>.- The instruction did not explain how to wire
.itocoordination symlinks in a temporary proposal worktree created via rawgit worktree add.
Conclusion:
- The documented worktree path does not appear to cover the temporary proposal worktree recovery case.
Workdirs:
- Main:
<repo-root>/main - Temp:
<repo-root>/ito-worktrees/proposal-ddd-workflow
Command used in both places:
ls -ld ".ito/changes" ".ito/specs" ".ito/modules" ".ito/workflows" ".ito/audit"Result:
- Main worktree: all five paths were symlinks.
- Temporary proposal worktree: most of the paths were absent, and
.ito/modulesexisted only as a regular directory.
Conclusion:
- Fresh worktrees were not inheriting or creating the expected coordination links.
Workdir:
<repo-root>/ito-worktrees/proposal-ddd-workflow
Command:
ito init --update --tools noneResult:
- Ito initialized the worktree.
- Afterward, the same
ls -ldcheck showed all expected.ito/*coordination symlinks were present.
Conclusion:
ito init --update --tools noneis an effective manual recovery step for missing.itocoordination symlinks in a fresh worktree.
Workdir:
<repo-root>/ito-worktrees/proposal-ddd-workflow
Commands:
ito sync
ito list --modules
ito create change "add-ddd-discovery-workflow" --module 001 --schema spec-drivenResult:
ito syncsucceeded.ito list --modulesshowed module001_workflow-enhancementscorrectly.ito create changestill failed, but now with a generic error instead of the symlink/module warning:
Error: I/O error: No such file or directory (os error 2)
Conclusion:
- Fixing the symlinks solved the first problem, but there is likely a second bug in
ito create changefor this workflow.
Workdir:
/Users/jack/Code/withakay/ito/main
Command:
ito path project-root && ito path worktrees-root && ito path worktree-rootResult:
project-root-><repo-root>worktrees-root-><repo-root>/ito-worktreesworktree-root-><repo-root>/main
Conclusion:
- Path configuration matched the documented bare/control layout.
Workdir:
<repo-root>/ito-worktrees/proposal-ddd-workflow
Command:
ito worktree ensure --change "001-34_add-ddd-discovery-workflow"Result:
- Ito created the final worktree path:
<repo-root>/ito-worktrees/001-34_add-ddd-discovery-workflow
- But immediately after creation, the new final worktree still had no
.ito/changes,.ito/specs,.ito/modules,.ito/workflows, or.ito/auditpaths.
Conclusion:
ito worktree ensureappears to create the worktree directory/branch, but it did not wire the expected coordination symlinks in this run.
Workdir:
<repo-root>/ito-worktrees/001-34_add-ddd-discovery-workflow
Command:
ito init --update --tools noneResult:
- Ito initialized the worktree.
- The expected
.ito/*coordination symlinks were created successfully.
Conclusion:
- The same recovery step works in both temporary and final worktrees.
Workdir:
<repo-root>/ito-worktrees/001-34_add-ddd-discovery-workflow
Command:
ito create change "add-ddd-discovery-workflow" --module 001 --schema spec-drivenResult:
- Same generic error remained:
Error: I/O error: No such file or directory (os error 2)
Conclusion:
- Even with symlinks fixed,
ito create changestill needs deeper debugging.
Workaround:
- Manually scaffolded
.ito/changes/001-34_add-ddd-discovery-workflow/... - Updated
.ito/modules/001_workflow-enhancements/module.md - Ran:
ito validate 001-34_add-ddd-discovery-workflow --strict
ito audit reconcile --change 001-34_add-ddd-discovery-workflow
ito audit validate --change 001-34_add-ddd-discovery-workflowResult:
- Validation and audit passed.
If a new worktree is missing .ito coordination symlinks, this recovered them in both test cases:
ito init --update --tools none- Raw
git worktree add ...created a usable Git worktree but not a fully wired Ito worktree. ito worktree ensure --change <id>also did not appear to wire the.itocoordination symlinks in this session.ito create change ...could not recover from the missing symlinks automatically.
Ideal behavior:
- A worktree created for Ito work should already contain the expected
.ito/*coordination symlinks.
Potential fixes:
- Make
ito worktree ensurerun the equivalent of the symlink-wiring part ofito init --update --tools noneautomatically. - Add a dedicated
ito worktree repairorito worktree initcommand that only wires coordination state for the current worktree.
Ideal behavior:
- The documented temp-worktree flow should include the exact recovery or setup command needed after raw
git worktree add.
Potential fixes:
- Update
ito agent instruction worktree-initto document the required follow-up step for temporary proposal worktrees. - If raw
git worktree addremains the recommended temp-worktree path, explicitly mention running:
ito init --update --tools noneIdeal behavior:
- If
.itosymlinks are missing,ito create changeshould either repair them or fail with a direct hint.
Potential fixes:
- Detect missing coordination symlinks and print:
This worktree is missing Ito coordination symlinks. Run `ito init --update --tools none` in this worktree, then retry.
- Better: offer automatic repair before proceeding.
Ideal behavior:
ito create changeshould report the exact missing path and operation.
Potential fixes:
- Improve the error context in the create-change path so the message answers:
- what path was missing
- during which step
- how to fix it
For the next debugging pass, try this exact sequence and capture the first failing path in Rust logs if available:
git worktree add "<temp-worktree>" -b "<temp-branch>" main
cd "<temp-worktree>"
ls -ld .ito/changes .ito/specs .ito/modules .ito/workflows .ito/audit
ito init --update --tools none
ls -ld .ito/changes .ito/specs .ito/modules .ito/workflows .ito/audit
ito sync
ito list --modules
ito create change "<name>" --module 001 --schema spec-drivenThen separately:
ito worktree ensure --change "<change-id>"
cd "$(ito path worktree --change <change-id>)"
ls -ld .ito/changes .ito/specs .ito/modules .ito/workflows .ito/audit
ito init --update --tools none
ito create change "<name>" --module 001 --schema spec-drivenThe most useful short-term fix for agents is:
- After any new worktree is created, run
ito init --update --tools nonein that worktree. - If
ito create changestill fails, improve its error reporting to expose the missing path. - Long term, make
ito worktree ensurecreate a fully wired Ito worktree by default.