fix: count until-revoked admissions as active - #37
Merged
Conversation
Policy revision 7 restores admission_validity=until_revoked. expires_at JSON null is the live window. A timestamped expiry is refused. The signed remote-safe-synthetic ledgers stay active until revoked. Does not write a ledger row, start a signer-registry clock, or activate the refuse-closed issuer.
sign_receipt verifies against wall-clock. The 7-day fixture expired at 2026-09-03T12:00:00Z and failed CI. Null expiry stays active. This does not start a signer-registry clock.
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.
#35 counted every
expires_at: nullrecord as inactive, so the validator reported 0/7 even though the signed ledgers were still there. The issuer interface already saysadmission_validity: until_revoked. Policy revision 6 disagreed with that.Revision 7 puts them back in agreement.
expires_atJSON null is the live window. A timestamped expiry on a live v2/v4 object is refused. The retained v1 ledger still uses its 30-day bound.python3 scripts/validate_production_lifecycle.pynow prints 7 active target admissions and 7 active workflow admissions. Evidence class is stillremote-safe-synthetic. Workflowbundle_versionis still0.0.0-synthetic. This does not invent MockMedproduction_acceptance, write a ledger row, start a signer-registry clock, or turn the refuse-closed issuer on.What a reviewer should check:
is_product_productionis true only with all seven targetsFollow-up, not this PR: ops and web still pin
078db7a/fe51c2cand their renderers treat null as inactive. Don't merge openadapt-web#492; it encodes the revision-6 rule.Opened by an agent session, not the founder.