Development record
An AI-written interview's role can slow the change guard by writing one large file into the working tree: the reading after its turn hashes every path git status lists whole (hashOne, then contentState's io.Copy), with no byte bound, so an untracked sparse file of many GiB holds the turn for as long as hashing it takes (about 7 s for 16 GiB in the hooks-directory probe, growing with the size) before the new path is reported. The guard fails closed (the path is named), and the budget on what one reading reads outside the tree (iss-2610050315146044) does not cover it, because the path is inside the tree, where a large untracked file can be the person's own.
An AI-written interview's role can slow the change guard by writing one large file into the working tree: the reading after its turn hashes every path git status lists whole (hashOne, then contentState's io.Copy), with no byte bound, so an untracked sparse file of many GiB holds the turn for as long as hashing it takes (about 7 s for 16 GiB in the hooks-directory probe, growing with the size) before the new path is reported. The guard fails closed (the path is named), and the budget on what one reading reads outside the tree (iss-2610050315146044) does not cover it, because the path is inside the tree, where a large untracked file can be the person's own.
Grounds
- pursued: a large file a role writes into the tree or git's own directory is refused promptly, named, before it is hashed; a turn held while the file is hashed, or a refusal naming a smaller path than the largest, would show it wrong
Frontmatter
| id | iss-2610050348533437 |
|---|---|
| type | issue |
| lifecycle | resolved |
| severity | minor |
.abcd/work/issues/resolved/iss-2610050348533437-an-ai-written-interview-s-role-can-slow.md
open on GitHub ↗ · commit history ↗
mentions2
- iss-2610050315146044An AI-written interview's role can slow the change guard by writing core.hooksPath into .git/config, naming a large directory outside the tree: the reading after the turn hashes every file there (toward the 500,000-path bound, with no byte bound) before it reports the configuration change. A probe with a 16 GiB sparse file held the reading about 7 seconds, growing with the size. The guard still fails closed (the change to .git/config and the planted directory are named), but a turn can take minutes first. The followed-link budget (iss-2610040847166532) does not cover it, because the hooks directory is resolved and read whole, not reached through a followed link.
- iss-2610050429322910An AI-written interview's role can slow the change guard through git itself: every reading runs git status before the guard's own bounds apply, and git reads some files in its own directory whole on every command, so a role writing a sparse HEAD, packed-refs or info/exclude there holds the turn while git reads it, before the guard's byte bound refuses the file. A scratch probe of git status with each file grown to 4 GiB sparse: HEAD 0.8 s, packed-refs 2.3 s, info/exclude 0.4 s, growing with the size (so minutes at 128 GiB). The guard fails closed (the file is named once read), and neither the in-tree byte bound (iss-2610050348533437) nor the followed-link budget covers it, since git, not the guard, does the reading. Files git bounds itself are not affected: a tracked file whose size changed is not re-read, a .gitignore or .gitattributes past 100 MiB is skipped, an index of zeros is refused at its header, and a configuration of zeros at its first line.