Repository navigation
v0.8: protocol releases — pin hsenv v0.8.0, validate protocols, research_index protocol block (B1–B3) - #73
Merged
Merged
Conversation
B1: requirements.txt pins the hsenv engine (single pin, by the commit SHA of tag v0.8.0, fd38302) and every workflow reads it from there. scripts/research/effects_core.py re-exports hsenv.effects_core. A golden test checks that every community revision with effects.json gives the same problems, warnings and kg digest as the Bench copy it replaces, and that protocol readers never execute protocol text. B2: scripts/check_contributors.py applies one contributor rule to legacy index.json and protocol study.json. scripts/research/protocols.py checks a protocol release with the pinned engine (schema, public-path allowlist, visibility, signed fidelity, no release_hold, protocol hash, current checks report, effects and capabilities, manifest digest). validate_assets gains a protocol branch; validate-studies.yml gains a validate-protocols job. B3: build_catalog adds a protocol block (counts and ids only) to the research_index entry and derives replayable/humanBenchmark from the protocol. studies_index.json and research_index.json stay byte-identical for current studies. Review fixes: a community proposal holding protocol.json is never accepted on the proposal path (always needs_review with requiresMaintainer, no agent review, regardless of self-declared fidelity or checks); shared protocol block fixture for the web reader; public-only docs; limits on the validate-protocols job. Tests use an invented CC0 fixture release. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Merged
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.
What
The Bench part of the v0.8 platform (B1–B3). A v0.8 study is a folder with
study.jsonandprotocol.json, read by one engine, hsenv. Bench publishes a released protocol as a community revision and checks it with the pinned engine. Bench never interprets or executes protocol files itself.B1, pin the engine.
requirements.txtpinshsenvv0.8.0 by commit SHA (fd38302574260b5876cfeaa6741540c5163ba662). This is the only place the pin is written: the sync-studies-index, research-catalog, maintain-community and validate-studies workflows read that line from it.scripts/research/effects_core.pynow re-exportshsenv.effects_core, so Bench no longer keeps its own copy.B2, validate protocol releases.
scripts/research/protocols.pychecks a release:visibility: publicand a signed HIGH FIDELITY reviewrelease_holdvalidate_assetssends protocol revisions through these checks.validate-studies.ymlgains avalidate-protocolsjob.scripts/check_contributors.pyis one contributor rule for legacyindex.jsonand protocolstudy.json.B3, research_index.
build_catalogadds aprotocolblock to the paper entry: counts and ids only, never protocol text.replayableandhumanBenchmarkare computed from the protocol.studies_index.jsonandresearch_index.jsonstay byte-identical for current studies.tests/fixtures/protocol_release/research-index-protocol.jsonis the shared contract fixture for the web reader.Details are in
docs/v080-protocol.md.Why
Bench, the web runner and the desktop must judge a study with the same engine. Pinning hsenv by SHA means one reviewed engine version decides every verdict, and nothing in a contribution is ever run.
Protocol proposals need a maintainer
On the community proposal path (
maintain-community.yml→revisions.integrate), a proposal that holdsprotocol.jsonis never accepted. It always returnsneeds_reviewwithrequiresMaintainer: true. This holds whatever the review says, including an LLM agent's "accept". It also holds whatever the release says about itself (fidelity.signed_by, a PASSreview/checks-latest.json). No agent review is spent on these proposals. A protocol release is published only through a maintainer release PR, and thevalidate-protocolsjob checks that PR.Tests
pip install -r requirements.txt, which installs hsenv from GitHub at the pinned SHA. Thenpytest tests -o addopts='': 250 passed, 1 failed.tests/test_genius_integration.py::test_hosted_live_contract_preserves_context_and_uses_openrouter. It fails the same way onmainunder Python 3.13, and passes under 3.12. The test comparesid()of backend objects, and 3.13 reuses ids after garbage collection. This PR does not touch it.checks-latest.jsonand the other fixtures pass unchanged with the tagged engine.tests/test_hsenv_pin.py: the pin is a 40-hex SHA and the only one; workflows read it fromrequirements.txt; the installed version matches the tag. The effects golden covers all 42 community revisions witheffects.jsonand matches the pre-hsenv Bench copy exactly. Protocol readers never call eval/exec outside the whitelistedhsenv.expr.tests/test_protocol_release.py: release rules, the maintainer-only rule for proposals, and the protocol block inresearch_index.tests/test_check_contributors.py.example2026lamps), not a real paper.🤖 Generated with Claude Code