repo: pin the content surface to the object store - #10
Merged
Conversation
A working-tree scan skipped what `grep -I` calls binary and followed symlinks to their targets, so a tracked blob carrying the name could land while the wall reported clean. The content surface is now every tracked blob, read from the object store, bytewise; a symlink is scanned as the blob it is, never followed; a blob that is not UTF-8 reports `[binary blob]` in place of the line. Source: original Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012Jj94rkp3tfHAxUkTCthgY Apply-Push-Job: 20260901T234752Z-apply-push-4f650a Patch-SHA256: 82bfe322636865f3130a554e957100917ee1f99402bea2137f9635d8cc838575
Five subprocess tests, each in its own temporary repository: a blob that is not UTF-8 carrying the planted fault, a symlink whose target text carries it, a clean symlink to a clean file, a clean commit with a dirtied working tree, and a committed fault deleted from the working tree. Written against the pinned contract, before the implementation; red until it moves. Source: original Co-Authored-By: Codex <noreply@openai.com> Claude-Session: https://claude.ai/code/session_012Jj94rkp3tfHAxUkTCthgY Apply-Push-Job: 20260901T235011Z-apply-push-77cd09 Patch-SHA256: 7b9e0252dd5761078e3b1a1f88134326ef7d53ec10efdb4b55d5b9538c9d5e06
Enumerate the scanned commit's tree with `git ls-tree -r -z`, read each blob with `git cat-file`, scan bytewise; a symlink is scanned as the blob it is and never followed; a blob that is not UTF-8 reports `[binary blob]` in place of the line; a blob that cannot be read is a `git work tree` refusal. Implementation moves to the pinned contract; the tests stand. Source: original Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012Jj94rkp3tfHAxUkTCthgY Apply-Push-Job: 20260901T235752Z-apply-push-437ac9 Patch-SHA256: 47bcffbb08b404c5732c0e9ef2ed74a2344887559f096ab5c6dfe6f74048ccd2
The pinned content surface makes every tracked blob scannable, so the pre-existing test asserting that a binary blob passed as clean contradicts the contract. The binary-blob test written against the amendment covers the case. Source: original Co-Authored-By: Codex <noreply@openai.com> Claude-Session: https://claude.ai/code/session_012Jj94rkp3tfHAxUkTCthgY Apply-Push-Job: 20260901T235927Z-apply-push-91f0e5 Patch-SHA256: 5f57e606b263e185759beacf0f8ec59baa69a00b7b4c23c80e85b3c8e6aa3a9f
xor-machine
marked this pull request as ready for review
September 1, 2026 23:59
The content surface is the scanned commit's tree, so a planted file that is only staged is not on it. The self-test now commits the plant before expecting the wall to fire. Source: original Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012Jj94rkp3tfHAxUkTCthgY Apply-Push-Job: 20260902T000046Z-apply-push-aa7d57 Patch-SHA256: fa75a5987b8760303465c1ab5e6ec4a2aa9e52100f37a9e9a34a7537baa00fd6
xor-machine
pushed a commit
to minspec/workbench
that referenced
this pull request
Sep 2, 2026
minspec/.github#10 pins the content surface to every tracked blob, read from the object store, bytewise, symlinks never followed. Point the wall step at that merge. Source: original Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012Jj94rkp3tfHAxUkTCthgY Apply-Push-Job: 20260902T004028Z-apply-push-4faea8 Patch-SHA256: 57e5b08eab2bf07672c3ea101dcf7443de3419d46713583a712cf8cef7c1c6ba
xor-machine
pushed a commit
to minspec/skeleton
that referenced
this pull request
Sep 2, 2026
minspec/.github#10 pins the content surface to every tracked blob, read from the object store, bytewise, symlinks never followed. Point the wall step at that merge. The e2e job called the reusable workflow in workbench at the mutable `dev`; pin it to the current dev commit. Source: original Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012Jj94rkp3tfHAxUkTCthgY Apply-Push-Job: 20260902T004034Z-apply-push-c1e45f Patch-SHA256: 34fe6902c5e921f8d37c9bba39cbd394b7cc91b70275cc46eab878199b8942c7
xor-machine
pushed a commit
to minspec/workbench-fixtures
that referenced
this pull request
Sep 2, 2026
minspec/.github#10 pins the content surface to every tracked blob, read from the object store, bytewise, symlinks never followed. Point the wall step at that merge. The e2e job called the reusable workflow in workbench at the mutable `dev`; pin it to the current dev commit. Source: original Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012Jj94rkp3tfHAxUkTCthgY Apply-Push-Job: 20260902T004040Z-apply-push-42a20d Patch-SHA256: ab87de44654606fe4f2e2e2132496610a1aa6e59013b28a94c079f930ed6f575
xor-machine
pushed a commit
to minspec/recipes
that referenced
this pull request
Sep 2, 2026
minspec/.github#10 pins the content surface to every tracked blob, read from the object store, bytewise, symlinks never followed. Point the wall step at that merge. The e2e job called the reusable workflow in workbench at the mutable `dev`; pin it to the current dev commit. Source: original Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012Jj94rkp3tfHAxUkTCthgY Apply-Push-Job: 20260902T004046Z-apply-push-2cfd0c Patch-SHA256: 63cb576da555e6faa8de431db398c22cf34346acb764980d5792b988df5bd105
xor-machine
pushed a commit
to minspec/discussions
that referenced
this pull request
Sep 2, 2026
minspec/.github#10 pins the content surface to every tracked blob, read from the object store, bytewise, symlinks never followed. Point the wall step at that merge. Source: original Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012Jj94rkp3tfHAxUkTCthgY Apply-Push-Job: 20260902T004053Z-apply-push-b507a7 Patch-SHA256: 6e2ac3b46cc179bb7757c9e87d797f7304beb2346b944b3db8dadb6829f53c2f
xor-machine
pushed a commit
to minspec/docker
that referenced
this pull request
Sep 2, 2026
minspec/.github#10 pins the content surface to every tracked blob, read from the object store, bytewise, symlinks never followed. Point the wall step at that merge. Source: original Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012Jj94rkp3tfHAxUkTCthgY Apply-Push-Job: 20260902T004100Z-apply-push-167d53 Patch-SHA256: 12e1e77943a5566f4eae02f325f05a8e1363f3b0b7769ef98d99b87e7b1955bd
xor-machine
pushed a commit
to minspec/minspec
that referenced
this pull request
Sep 2, 2026
minspec/.github#10 pins the content surface to every tracked blob, read from the object store, bytewise, symlinks never followed. Point the wall step at that merge. Source: original Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012Jj94rkp3tfHAxUkTCthgY Apply-Push-Job: 20260902T004105Z-apply-push-17e0de Patch-SHA256: 0d300294f6fba987585568490ad4453f29eb540d2766d69cd4fbc71fc9bdef4d
xormania
pushed a commit
to minspec/workbench
that referenced
this pull request
Sep 2, 2026
minspec/.github#10 pins the content surface to every tracked blob, read from the object store, bytewise, symlinks never followed. Point the wall step at that merge. Source: original Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012Jj94rkp3tfHAxUkTCthgY Apply-Push-Job: 20260902T004028Z-apply-push-4faea8 Patch-SHA256: 57e5b08eab2bf07672c3ea101dcf7443de3419d46713583a712cf8cef7c1c6ba
xor-machine
pushed a commit
to minspec/workbench-fixtures
that referenced
this pull request
Sep 2, 2026
minspec/.github#10 pins the content surface to every tracked blob, read from the object store, bytewise, symlinks never followed. Point the wall step at that merge. The e2e job called the reusable workflow in workbench at the mutable `dev`; pin it to the current dev commit. Source: original Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012Jj94rkp3tfHAxUkTCthgY Apply-Push-Job: 20260902T004040Z-apply-push-42a20d Patch-SHA256: ab87de44654606fe4f2e2e2132496610a1aa6e59013b28a94c079f930ed6f575
xor-machine
pushed a commit
to minspec/docker
that referenced
this pull request
Sep 2, 2026
minspec/.github#10 pins the content surface to every tracked blob, read from the object store, bytewise, symlinks never followed. Point the wall step at that merge. Source: original Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012Jj94rkp3tfHAxUkTCthgY Apply-Push-Job: 20260902T004100Z-apply-push-167d53 Patch-SHA256: 12e1e77943a5566f4eae02f325f05a8e1363f3b0b7769ef98d99b87e7b1955bd
xor-machine
pushed a commit
to minspec/minspec
that referenced
this pull request
Sep 2, 2026
minspec/.github#10 pins the content surface to every tracked blob, read from the object store, bytewise, symlinks never followed. Point the wall step at that merge. Source: original Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012Jj94rkp3tfHAxUkTCthgY Apply-Push-Job: 20260902T004105Z-apply-push-17e0de Patch-SHA256: 0d300294f6fba987585568490ad4453f29eb540d2766d69cd4fbc71fc9bdef4d
xor-machine
pushed a commit
to minspec/discussions
that referenced
this pull request
Sep 2, 2026
minspec/.github#10 pins the content surface to every tracked blob, read from the object store, bytewise, symlinks never followed. Point the wall step at that merge. Source: original Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012Jj94rkp3tfHAxUkTCthgY Apply-Push-Job: 20260902T004053Z-apply-push-b507a7 Patch-SHA256: 6e2ac3b46cc179bb7757c9e87d797f7304beb2346b944b3db8dadb6829f53c2f
xor-machine
pushed a commit
to minspec/skeleton
that referenced
this pull request
Sep 2, 2026
minspec/.github#10 pins the content surface to every tracked blob, read from the object store, bytewise, symlinks never followed. Point the wall step at that merge. The e2e job called the reusable workflow in workbench at the mutable `dev`; pin it to the current dev commit. Source: original Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012Jj94rkp3tfHAxUkTCthgY Apply-Push-Job: 20260902T004034Z-apply-push-c1e45f Patch-SHA256: 34fe6902c5e921f8d37c9bba39cbd394b7cc91b70275cc46eab878199b8942c7
xor-machine
pushed a commit
to minspec/recipes
that referenced
this pull request
Sep 2, 2026
minspec/.github#10 pins the content surface to every tracked blob, read from the object store, bytewise, symlinks never followed. Point the wall step at that merge. The e2e job called the reusable workflow in workbench at the mutable `dev`; pin it to the current dev commit. Source: original Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012Jj94rkp3tfHAxUkTCthgY Apply-Push-Job: 20260902T004046Z-apply-push-2cfd0c Patch-SHA256: 63cb576da555e6faa8de431db398c22cf34346acb764980d5792b988df5bd105
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Two P1 findings from the Codex adversarial review of the organisation's CI: the wall scanned the working tree with
grep -I, so a tracked binary blob carrying the banned name passed as clean, and a symlink was followed to its target instead of being scanned as the blob it is.The contract now pins the content surface: every blob the scanned commit's tree tracks, read from the object store, bytewise; a symlink scanned as its own blob and never followed; a blob that is not UTF-8 reported with
[binary blob]in place of the line; an unreadable blob agit work treerefusal.Commits, in producer order: the amendment; five subprocess tests written by Codex against it, red before the implementation existed; the implementation by Claude, which moves to the contract while the tests stand; then the one pre-existing test that asserted the superseded behaviour, brought onto the contract by the test producer.
🤖 Generated with Claude Code
https://claude.ai/code/session_012Jj94rkp3tfHAxUkTCthgY