Skip to content

A case's head is read from the held-out home, pinned by the case, and held to its tree (#611, record NNNN) - #662

Open
don-petry wants to merge 11 commits into
mainfrom
eval/heads-home-611
Open

don-petry wants to merge 11 commits into
mainfrom
eval/heads-home-611

Conversation

@don-petry

@don-petry don-petry commented Nov 9, 2026 •

Copy link
Copy Markdown
Contributor

Issue #611, "A case's head is read from the private home, pinned by its hash, and the run is sharded", PR 1 of 2: the heads. It follows the Factory Builder's rulings (a) to (d) of 2026-11-08 and the ruling on P-62's verdict. It follows #657, the trial P-62, now on main as d465eaa. The second PR shards the run.

Not mergeable until the Maintainer's run. By ruling (c), there is no transition: every case now needs head_sha256 and tree_sha256. The Maintainer runs the tool below against his checkout of the home, and this PR's evals/pr-review/cases.json then takes the hashes it prints. Merged before that, every case would be not_this_set.

What changes

  • Where a head is kept. The home keeps <role>/<id>.tar.gz (the commit's tarball) and <role>/<id>.tree.json (its tree as the API answered it, written compact) beside each case. eval-case/1 requires head_sha256 and tree_sha256.
  • How it is read. adapters/heldout.beside reads each file with the home's token, using the raw media type application/vnd.github.raw (P-62; pinned by the ruling on its verdict, with a mutant, "the eval blob is asked for as raw+json").
    • The answer must be of that type: a +json answer, which the transport would parse, is no file.
    • It must be within its bound (TARRED, or 8 MiB for a tree) and must hash to its pin (hash_differs otherwise).
  • How it is held. head_of unpacks the tarball as before. Then it holds it to the tree file by file, through head.tree_of and held, as a live head is held (decision 0142). That closes 0142's gap for eval heads.
    • A head that isn't the pinned one is hash_differs.
    • One that can't be read, unpacked or held whole is head_unreadable, and its folder is removed.
    • A pin that is no sha256 reads nothing, and the case is not_this_set.
  • Nothing anonymous is left in the eval job. fetch has one transport, the home's, read-only. The canary still reads its own example's head from this public repo.
  • tools/heads_into_home.py, for the Maintainer's terminal:
    • It reads each case's head from GitHub, through the one transport, read-only.
    • It holds the tarball to the tree, writes both beside the case, and writes the case anew with the pins.
    • Each file is written whole and moved over its name, so a link there is replaced, never written through.
    • A case or folder that is a link is not read. A case it can't pin, or whose head is over the job's bounds, is left as it was.
    • It prints counts and hashes alone.
  • Record NNNN, numbered at enqueue (0172 at the earliest). It amends 0138's rows "A transport with no token" and "The eval case", 0138's Boundaries row on the eval head, and 0142's row "An eval case's head".
  • Rules: rows in harness/eval/AGENTS.md and adapters/AGENTS.md, and 0138's Boundaries row now checks the new test.

The Maintainer's command

Run in his checkout of the home, from his checkout of this repo on this branch:

GH_TOKEN="$(gh auth token)" python3 -m tools.heads_into_home <the home's checkout> pr-review

It prints pinned N of M cases and, by code, any it did not pin, then one {"id", "sha256"} line per pinned case. Those lines go into evals/pr-review/cases.json. He then commits the new files and cases in the home.

Checks

Check Result
SIM_SEEDS=40 make verify OK, 1715 tests (at d0a2ada, on a local commit that numbers the record)
Filtered mutants: every mutant on adapters/heldout.py, harness/head.py, harness/eval/canary.py, harness/eval/fetch.py, schemas/eval-case.schema.json and tools/heads_into_home.py, every head, tree and fetch mutant on harness/eval/__init__.py, and every one whose test this changes 160 of 160 killed
gitleaks No leaks
Argon (ca15b26), 12 parts 1 major. Not changed: 0138's Boundaries row keeps its words, since a row may only have its Check changed. The new record's Status amends it instead, as the Builder agreed
Claude review (ca15b26) Blocking: a mutant that survived, now killed by a tree answered 404; and the manifest, which waits by design on the Maintainer's run. Low, fixed: the tree is written compact and held to the job's bounds; a pin of the wrong shape is not_this_set; the tool writes atomically and counts a failure; two stale comments; a cleanup mutant; a faster bound test
Claude security (ca15b26) Nothing blocking. Low, fixed: the tool wrote through a link; it now replaces it. A tree over the bound; a failure part-way. Info, fixed: the token is read-only and the tree path is checked
Muse Pending: read after the lane's owed reads, live PRs first
Astra Only where Muse gives no read

🤖 Generated with Claude Code

View guided diff Turn on auto-fix

don-petry and others added 8 commits November 8, 2026 19:02
… raw media type, and the git blobs API beside it

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… gh calls what they show, and every reader asks for vnd.github.raw

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…pass condition

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… held to its tree

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…P-62

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…no link, a pin that is no sha256 reads nothing, a tree answered otherwise is tested

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…s, each row's mutant and test, and the rules within their limits

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…mutant changes

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@don-petry
don-petry requested a review from a team as a code owner November 9, 2026 02:57
@chatgpt-codex-connector

Copy link
Copy Markdown
Codex Review Summary: ❌ Failed

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ❌ Failed 2026-11-09T02:57:57.624171Z
We couldn’t complete this review. Comment @codex review to try again.
d0a2ada PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@coderabbitai

coderabbitai Bot commented Nov 9, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

Run configuration

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

Base automatically changed from trial/p62-raw-contents to main November 9, 2026 03:06
don-petry and others added 3 commits November 8, 2026 21:08
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…es, and the tool writes a case's three files all or none

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@sonarqubecloud

sonarqubecloud Bot commented Nov 9, 2026

Copy link
Copy Markdown

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant