feat: gate Production lifecycle on acceptance evidence - #11
Draft
abrichr wants to merge 3 commits into
Draft
Conversation
- Split the summary policy binding into acceptance_policy_sha256 (pinned private acceptance policy digest) and lifecycle_policy_sha256 so the two authorities cannot be collapsed into one field. - Replace the free-form condition inventory with a closed qualification contract: campaign contract/outcome digests, a task-condition inventory digest, and a zero excluded-trial count. - Domain-separate the target release and artifact inventory digests so a digest cannot be replayed across targets or claim scopes. - Accept millisecond UTC retention timestamps, matching the canonical form the private acceptance certificate records; refuse any other precision. - Apply minimum_trials_per_condition to observed trials, and keep the policy floor of three on required trials per condition. - Keep governed-repair model calls informational while refusing any healthy-path model call through the failure taxonomy. - Keep this PR mechanism-only: restore the profile README and keep Capture's public label Experimental (the Beta relabel stays in draft PR #10 until the final evidence lands). All Production memberships and admission lists remain empty. Co-Authored-By: Claude Fable 5 <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.
What changed
Productionto the machine lifecycle vocabulary without assigning it to any repository or public surfacedocs.openadapt.aiacceptance_policy_sha256(pinned private acceptance-policy digest) andlifecycle_policy_sha256, so the two authorities cannot be collapsed into one fieldminimum_trials_per_conditionapplied to observed trials, and a floor of three required trials per conditionCurrent state
All Production memberships and admissions are empty. This PR is mechanism-only: it does not promote a component, does not change any visible lifecycle label, and does not change public product copy.
profile/README.mdis byte-identical tomain, and Capture keeps its Experimental label here.Public/private boundary
The lifecycle registry never publishes the private Cloud acceptance certificate or its location. The protected private verifier checks that artifact. The public attested summary carries only its schema, digest, and signer-provenance digest. A private Cloud deployment publishes only an opaque release identity and digests.
Coordination
This PR starts from exact
.githubmain4f81ac3768689e0bfa812721cb61871e13d5de07. Draft PR #10 carries the Capture Experimental-to-Beta relabel and the quickstart fix; that visible label change stays out of this PR and ships only with the final evidence, per the one-visible-change-at-the-end decision. After this mechanism merges, rebase #10.The policy names the target protected Evals authority workflow
.github/workflows/production-lifecycle-evidence.yml. That workflow must land with the final reviewed evidence exporter before any admission can exist.Validation
python3 -m unittest discover -s tests -p 'test_*.py'— 40 passedpython3 scripts/validate_production_lifecycle.py— 0 active admissionspython3 scripts/validate_production_lifecycle.py --previous-admissions <main ledger>— rollback gate passespython3 scripts/check_profile.py— 36 linksruff checkandruff format --checkactionlint .github/workflows/profile-consistency.ymlgit diff --check🤖 Generated with Claude Code