You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
adopt-project.py: under a failing clean filter that a rule names for .gitattributes, check also prints plan-file-reencoded for a file the split stores as its blob, beside the right plan-attributes-reencoded (#1136) #1192
Found by f1169, writing #1169's rows (#1136) at 25805102.
Measured with git 2.43. A parent's attr.tree names a side tree whose rule gives .gitattributes a required clean filter that fails, over a root *.md text.
check prints the right plan-attributes-reencoded, naming the filter's failure.
It also prints plan-file-reencoded, naming specs/001-feature/spec.md, a file the split stores as its blob.
There is no false plan ok: execute still refuses before any leg.
Likely cause, not traced: the rehearsal's update-index -q --refresh over its TAKEN index (_reencoded_files_findings) stops at .gitattributes. diff-files then lists the files it did not refresh.
Trace it, and name only the filter's failure.
Add a row: the side tree's failing filter over *.md text gives plan-attributes-reencoded alone.
Outside v1.2.0 by Brett Heap's ruling of 2026-10-21T10:32:04Z ("leave the follow-ups out of v1.2.0").
(lane openRepoShape-1, 2026-10-23T08:22:26Z) A likely cause, measured by r1169b while re-reviewing #1169. See issuecomment-6360685539 on #1169.
The cause: the rehearsal picks the files it asks about with check-attr --cached (_SplitRehearsal.reached), and git 2.43 does not read attr.tree for --cached.
The test: with --cached dropped (r1169b's X1, a temporary change in a scratch clone), this issue's case gives only the right plan-attributes-reencoded. Head gives both findings.
(lane openRepoShape-1, 2026-10-23T20:44:08Z) The cause is now traced, and the case is wider than this issue says. From r1169d's review of #1169 at 76c9b767 (#1169 issuecomment-6374351753, SHOULD-2), with git 2.43.
The trace (r1169c's expB): under the failing required filter, update-index -q --refresh over the rehearsal's TAKEN index exits 128 with fatal: .gitattributes: clean filter 'w1136' failed. The exit code is never read (adopt-project.py:13021 at 76c9b767). diff-files --name-only then exits 0 and lists .gitattributes specs/spec.md. With no filter, the refresh exits 0 and diff-files lists nothing.
Both rules in the side tree. The own root says *.png binary; the side tree says /.gitattributes filter=w1136 and *.md text, and attr.tree names it. In all three forms (global config, GIT_CONFIG_PARAMETERS, GIT_CONFIG_COUNT):
Control: the tree's *.md text alone, with no filter, says plan ok on every tree. So spec.md is stored as its blob, and the second finding names a file that is not reencoded.
The fix this issue asks for: read the refresh's exit code, and where it fails, name only the filter's failure.
Activity
brettheap commentedon Oct 23, 2026
(lane openRepoShape-1, 2026-10-23T08:22:26Z) A likely cause, measured by r1169b while re-reviewing #1169. See issuecomment-6360685539 on #1169.
check-attr --cached(_SplitRehearsal.reached), and git 2.43 does not readattr.treefor--cached.--cacheddropped (r1169b's X1, a temporary change in a scratch clone), this issue's case gives only the rightplan-attributes-reencoded. Head gives both findings.check's rehearsal and_stored_as_writtentake a parent's-csettings,attr.treetoo, and the source's objects,GIT_ATTR_SOURCEis refused by name before any question, and each throwaway reads its environment first (#1136) #1169's cause, more than theupdate-index --refreshthis issue guessed at.Lane 1's next round on #1169 makes that change. This issue gets a row there, or stays open with what is left.
Lane: openreposhape-1 (openRepoShape-1)
checkpoint: adopt-project.py: the rehearsal's `check-attr` drops `--c…
brettheap commentedon Oct 23, 2026
(lane openRepoShape-1, 2026-10-23T20:44:08Z) The cause is now traced, and the case is wider than this issue says. From r1169d's review of #1169 at
76c9b767(#1169 issuecomment-6374351753, SHOULD-2), with git 2.43.update-index -q --refreshover the rehearsal'sTAKENindex exits 128 withfatal: .gitattributes: clean filter 'w1136' failed. The exit code is never read (adopt-project.py:13021at76c9b767).diff-files --name-onlythen exits 0 and lists.gitattributes specs/spec.md. With no filter, the refresh exits 0 anddiff-fileslists nothing.*.png binary; the side tree says/.gitattributes filter=w1136and*.md text, andattr.treenames it. In all three forms (global config,GIT_CONFIG_PARAMETERS,GIT_CONFIG_COUNT):check's rehearsal and_stored_as_writtentake a parent's-csettings,attr.treetoo, and the source's objects,GIT_ATTR_SOURCEis refused by name before any question, and each throwaway reads its environment first (#1136) #1169's head76c9b767gives exit 1, withplan-attributes-reencodedand the misnamedplan-file-reencodedforspecs/001-feature/spec.md.25805102givesplan-attributes-reencodedalone.bba168bdsaysplan ok.check's rehearsal and_stored_as_writtentake a parent's-csettings,attr.treetoo, and the source's objects,GIT_ATTR_SOURCEis refused by name before any question, and each throwaway reads its environment first (#1136) #1169's read without--cachedbrings this case into all three forms. It is not wrong behaviour:checkrefuses with the right first finding, where the base saidplan ok.*.md textalone, with no filter, saysplan okon every tree. Sospec.mdis stored as its blob, and the second finding names a file that is not reencoded.Lane: openreposhape-1 (openRepoShape-1)