Trial P-62: the contents API answers a file over 1 MiB whole with the raw media type (#611)
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, sinceadapters/github.pyparses 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+jsonalso returned the bytes exactly (exchange 2). - With the login, the same type was answered 200 with the file's
content-length, butghwrote 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-p62holding one commit,fd71fb0, a child of main7737f8f. The commit addstrial-p62/blob.bin: 1,577,185 random bytes made for the trial, sha256691bf10a…. - It read that file eight ways: the contents API as JSON, as
vnd.github.raw+jsonand asvnd.github.raw, and the git blobs API as JSON and raw. Each was asked with the Maintainer'sghlogin, and withcurl --max-redirs 0and 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_trialredacted every header block, and then the drafted fixture. - Removed: the
authorizationheader of each of the sixghrequests, listed inremoved. - Step 8, undone: the branch
trial-p62was 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
| Check | Result |
|---|---|
SIM_SEEDS=40 make verify | OK, 1713 tests (at 99b4a3e0) |
python3 -m tools.check_trials | ok |
| gitleaks | No leaks |
| Argon (e27e1cc), 2 parts | Clean |
| 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 |
| Muse | Not run (quota); owed after 2026-11-09 |
| Astra | Not 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