Development record
An AI-written interview's role can slow the change guard, and change a submodule's refs unseen, through a tracked submodule's git directory: git status in the checkout runs status inside each populated submodule, which reads that submodule's git directory under the common directory's modules/ (its HEAD, config, packed-refs, info/exclude) whole, and the guard neither sizes those files before git runs nor hashes the submodule's HEAD and refs (readModules hashes its hooks and config only). A check's probe grew .git/modules/sub/packed-refs to 128 GiB sparse and held the reading past 20 s; a small write to the same file was unseen (changedSince empty).
An AI-written interview's role can slow the change guard, and change a submodule's refs unseen, through a tracked submodule's git directory: git status in the checkout runs status inside each populated submodule, which reads that submodule's git directory under the common directory's modules/ (its HEAD, config, packed-refs, info/exclude) whole, and the guard neither sizes those files before git runs nor hashes the submodule's HEAD and refs (readModules hashes its hooks and config only). A check's probe grew .git/modules/sub/packed-refs to 128 GiB sparse and held the reading past 20 s; a small write to the same file was unseen (changedSince empty).
Remainder after the 2026-10-07 review
The branch that sized and watched submodule git directories (fix/guard-commondir-bound) was reviewed adversarially before it merged (verdict SHIP-WITH-FIXES). Fixed on that branch: a write to a submodule's commondir is now named, and a pipe or device where git reads a file whole is refused before git runs. Two placements are still not pinned, so this record stays open for them:
- A submodule's
commondiris named only after git has run, not pinned before it: a write pointing it at a foreign directory is caught at that reading, but git reads the foreign directory's configuration and refs (unsized) during that same reading. Remedy: pin everymodules/**/commondirbeside the checkout's own pointers at the first reading, refusing a changed one before git runs (the redirectedError path). - A submodule's own
.gitpointer file (<path>/.git,gitdir: …) is never read: rewriting it moves the submodule's git directory anywhere, and the superproject's status does not list it. Remedy: enumerate gitlinks (mode 160000 ingit ls-files -s, or.gitmodules) at the first reading and pin each<path>/.gitas a pointer, refusing a changed one before git runs.
Frontmatter
| id | iss-2610050504094430 |
|---|---|
| type | issue |
| lifecycle | resolved |
| severity | minor |
.abcd/work/issues/resolved/iss-2610050504094430-an-ai-written-interview-s-role-can-slow.md
open on GitHub ↗ · commit history ↗