Repository navigation
codex-claude-loop v0.3.1 — a lying index could hold the tree digest still
A scout pass over the plugin landscape turned up a hole in this repo, and it reproduced on the first try.
git update-index --assume-unchanged <path> tells the index to stop reporting edits to that path. git status and git diff HEAD then say nothing, so _cl_tree_id returned a byte-identical digest while the file was rewritten, and cl_release would approve a tree edited after its review. Codex runs with workspace-write and can issue that command itself.
Hashing every tracked file to route around the index costs a process per file. So the tree id now refuses when any path carries assume-unchanged or skip-worktree, and names them:
tree: 1 path(s) carry assume-unchanged or skip-worktree, so git will not report edits to them.
tree: clear them before trusting any approval — git ls-files -v | grep '^[a-zS]'
A check that cannot be trusted reports failure, never success.
58 → 60 assertions, including the reproduction. Also in this release: the leak gate now scans tracked files instead of the working directory, after it flagged an untracked working note and I pushed past it.