Trial P-62: the contents API answers a file over 1 MiB whole with the raw media type (#611)

Merged
DO
1d ago
+358-0

Trial P-62 for issue #611, "A case's head is read from the private home, pinned by its hash, and the run is sharded". It follows the Factory Builder's ruling (d) of 2026-11-08, which asked for a trial before PR 1. The question: does the contents API answer a file over 1 MiB with its bytes whole when asked with the raw media type, and does the git blobs API answer the same blob as base64?

Verdict: pass, by the Factory Builder's ruling of 2026-11-08 on the verdict. The ruling is quoted in the fixture, in exchange 5's call, and in the section-6 row:

  • "The raw media type" in the pass condition is answered by application/vnd.github.raw. That is the type the transport must ask for, since adapters/github.py parses any type ending in json as JSON.
  • Asked that way, it returned the file's bytes exactly, by sha256, with no redirect, both with the Maintainer's login (exchange 5) and with no credential (exchange 6).
  • The pass condition stays as it was written before the run.
  • With no credential, application/vnd.github.raw+json also returned the bytes exactly (exchange 2).
  • With the login, the same type was answered 200 with the file's content-length, but gh wrote no body, saying "transform: short source buffer" three times (exchanges 1 and 7). That is a fault of the client on a type the Factory will not use.

Section 6: a new row, P-62. It is plan tuning: pre-approved by the Maintainer 2026-11-08, ruled by the Factory Builder.

What the trial did

  • In combsmith/software-factory-canary alone, as the Maintainer, it made a branch trial-p62 holding one commit, fd71fb0, a child of main 7737f8f. The commit adds trial-p62/blob.bin: 1,577,185 random bytes made for the trial, sha256 691bf10a….
  • It read that file eight ways: the contents API as JSON, as vnd.github.raw+json and as vnd.github.raw, and the git blobs API as JSON and raw. Each was asked with the Maintainer's gh login, and with curl --max-redirs 0 and no credential where noted.
  • Every capture went outside the repo and was never read raw. A program split each body off unread and recorded it only by its length and sha256. tools.redact_trial redacted every header block, and then the drafted fixture.
  • Removed: the authorization header of each of the six gh requests, listed in removed.
  • Step 8, undone: the branch trial-p62 was deleted after each of the three passes. Its commit and blob are left unreachable, holding only random bytes. No other change was made to the canary: no secret, token, workflow, issue or pull request. Its branches are as they were: main, trial/machine-user-write, trial/p-25-config, trial/p-59.

No grounding change: no rule in sim/grounding.py asks this trial.

Checks

CheckResult
SIM_SEEDS=40 make verifyOK, 1713 tests (at 99b4a3e0)
python3 -m tools.check_trialsok
gitleaksNo leaks
Argon (e27e1cc), 2 partsClean
Claude review (e27e1cc)One blocking finding, settled by the Builder's ruling above: the verdict against raw+json with the login. Minor findings fixed in c9d7ab0e: how the summaries were made, what each gh call shows, a narrower claim about gh, and the question's punctuation
Claude security (e27e1cc)Nothing to fix. One minor finding, fixed: every reader, the transport among them, asks for vnd.github.raw
MuseNot run (quota); owed after 2026-11-09
AstraNot run (quota); owed after 2026-11-09

PR 1 of #611, the heads read from the home, is stacked on this branch. It merges only once this fixture is on main.

🤖 Generated with Claude Code