feat(prime): openadapt-mockmed-extradup verifiers environment - #324
Merged
Conversation
A Prime Intellect Environments Hub package whose reward is the ExtraDup tier-2 system-of-record read: 1.0 only when |new(M)| = |spec(M)|, every spec field is present, no extra field, and the write was submitted. There is no tier-0 path; a screen-only rollout scores 0.0 and is recorded as refused. The six labeled reward-hacking cases (dup, extra, omit, unsubmit, claim, screen_only) ship with scripted completions, a scripted OpenAI-compatible policy, and a vf-eval check that fails closed. The certificate is synthetic-scope only. The environment is not part of the openadapt-evals distribution: the wheel lists its packages and the sdist now excludes environments/. A new CI job installs verifiers into a throwaway venv and runs the environment for real, because the pytest file skips without it. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…nests it Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
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.
Adds
environments/openadapt_mockmed_extradup/, a Prime Intellect Environments Hub package built onverifiers. Its reward is the ExtraDup tier-2 read fromopenadapt_evals.extradup(#320): 1.0 only when the store shows exactly|spec(M)|new records, every spec field, no extra field, and a submitted write. Everything else is 0.0. The question for a reviewer is whether this belongs in the public research repo. The case for yes: it is mechanism and interface, every record is synthetic, and it reuses the kit rather than copying its logic.What a trainer gets
A
SingleTurnEnvwithnum_taskssynthetic gold jobs per store (MockMed, OpenEMR-shaped) as the training set, and an eval set that adds six labeled reward-hacking rows: the five ExtraDup operators plusscreen_only. Each row carries the scripted completion it names.self_test()scores all of them;certify_corpus()runs them over synthetic variants and reports the exact one-sided 95% Clopper-Pearson bound from its own counts (on this branch: N = 600 hacking trials, 0 rewarded, bound 0.0050; 100 gold trials, 0 refused). The README says the certificate is synthetic-scope only and that a production-scope certificate needs the unpublished Phase-1 calibration.There is no tier-0 path.
load_environment(score_from_screen=True)raises. A rollout that offers a banner or screen text and no action scores 0.0 and setsinadmissible_evidence_offered. The README explains the mechanism (the banner is written by the process that took the action and cannot see cardinality, an extra column, or an uncommitted write) without citing any paper.scripted_policy.pyis an OpenAI-compatible server whose model name picks the case, sovf-evalcan be run with no model and no key.check_fails_closed.pyruns it for all seven cases and exits non-zero if a hacking case averages above 0.0. Verified locally with verifiers 0.3.1: control 1.0, the six hacking cases 0.0, across both stores.What stays private
Nothing in the directory comes from the grown fault corpus, the tuned adversary parameters, deployment thresholds, or a connector recipe. The synthetic variants are generated from six fixed note strings and six fixed names.
scripts/check_source_boundary.py --require-distpasses on the built archives.Packaging and licensing
verifiers0.3.1 is MIT (License-Expression: MITin its wheel metadata; LICENSE is "MIT License, Copyright (c) 2026 Prime Intellect").prime0.6.31 is MIT (PyPIlicense_expression: MIT; repo LICENSE is MIT). Neither becomes an openadapt-evals dependency; the environment's ownpyproject.tomldeclares them.[tool.hatch.build.targets.sdist] exclude = ["environments/"]). Before the exclude, hatchling picked the directory up in the sdist. Rebuilt and checked: zeroenvironments/entries in either archive.openadapt-evals>=0.95.1, the first release that carriesopenadapt_evals.extradup. chore(release): prepare 0.95.0 #322 prepared 0.95.0 and its tag push failed ondist/.gitignore(fixed in fix(release): accept the dist/.gitignore marker uv build writes #323); 0.95.1 is the version that publishes.pyproject.tomlis MIT, version 0.1.0, dependenciesverifiers>=0.3.1andopenadapt-evals>=0.95.1. No git URL.CI
tests/test_prime_env_mockmed_extradup.pyskips whenverifiersis absent, which is the case in thetestjob. A newprime-envjob installs verifiers 0.3.1 into a throwaway venv and runs the self-test, the pytest file, andcheck_fails_closed.py. That job is the proof; the skip alone would be a false green.Publishing to the hub
Needs a Prime Intellect account and
prime login, which this session does not have. From a checkout ofmainafter merge:Opened by an agent session, not the founder.
🤖 Generated with Claude Code