Skip to content

fix: keep until-revoked admissions across policy-file revisions - #211

Merged
abrichr merged 1 commit into
mainfrom
grok/until-revoked-policy-hash
Sep 3, 2026
Merged

fix: keep until-revoked admissions across policy-file revisions#211
abrichr merged 1 commit into
mainfrom
grok/until-revoked-policy-hash

Conversation

@abrichr

@abrichr abrichr commented Sep 3, 2026

Copy link
Copy Markdown
Member

Why

The docs twin of validateLiveAdmissions fail-closes the same way as openadapt-web. Live admissions keep the v1 policy_sha256. Policy rev 7 has a different file hash. Until-revoked rows then get dropped even though expires_at is JSON null.

Object-ref rows (kind: "qualification-release", no .target) hit the same byTarget.has(admission.target) check. They are the evidence inventory, not a seventh product target.

What changed

Same contract as the web change:

  • Don't require issued policy_sha256 to equal the current policy file hash when policy is until_revoked, expires_at is JSON null, the row is not revoked, and the admissions digest still matches the pin.
  • Skip object-ref rows. Product Production still needs seven target admissions.
  • Fetch the pinned policy and fail closed when it's missing or unparseable.
  • Keep fail-closed for digest mismatch, revoked rows, timestamp expiry, and identity drift.

Evidence class stays remote-safe-synthetic. No new unsigned ledger row.

Opened by an agent session, not the founder.

A later until-revoked policy hash must not un-admit retained rows.
Object-reference inventory rows are not product targets.
@abrichr
abrichr enabled auto-merge (squash) September 3, 2026 20:59
@abrichr
abrichr merged commit 7045af6 into main Sep 3, 2026
6 checks passed
@abrichr
abrichr deleted the grok/until-revoked-policy-hash branch September 3, 2026 20:59
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