verify_chain: judge revocation by snapshot membership while windows are judged at at_time
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 48/100
- Issue type
- Feature
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- python
- Domain
- authentication, security
Research direction
Start by reading the implementation and tests for verify_chain and effective_revocation, then trace how _check_revocation handles authority and snapshot membership. Decide which proposed public API fits the existing interface while preserving the current default, and add coverage for a snapshot statement whose issued_at is later than at_time. Done means the public API supports the log-order reading, documents that the caller supplies the exact snapshot, and the existing behavior remains covered.
Written by the indexing model from the issue text.
Description
Problem statement
An auditor that replays a past decision from a transparency log needs two different clocks. Validity windows are judged at the decision time (at_time). Revocation is judged by log order: the snapshot holds exactly the statements the log published before the receipt, so every statement in it should count, whatever its issued_at says.
Today verify_chain(at_time=T, revocations=S) passes at_time=T on to effective_revocation, which skips statements with issued_at > T. A statement logged before the receipt, but stamped later by the revoker's clock, is ignored. The only way to get the log-order reading is to run verify_chain(..., revocations=None) and then the private _check_revocation(chain, S, at_time=None, now=T, max_staleness=None). That is what the MUSUBI companion does now (horizon-shield workers/hs-ledger/nenrin/musubi-v0/ca2a-companion-v0/companion_v0.py, _ca2a, pinned to ca2a-runtime 0.4.0). A private call will break on refactors that never touch its reading.
Proposed solution
Either of these, with today's default unchanged:
- A keyword on
verify_chain, for examplerevocation_at_time, defaulting toat_time, whereNonemeans every statement in the supplied snapshot is in force. - A public
check_revocation(chain, revocations, *, at_time=None, now, max_staleness=None)with the semantics_check_revocationhas now, documented as valid only on a chain whose structure has already verified.
Alternatives considered
- Re-implementing the authority walk in the companion. Rejected: it would drift from cA2A's own rule that a delegate cannot revoke the grant it received.
- Rewriting
issued_atin the snapshot. Rejected: it changes signed statements.
Security/TEE impact
None on the TEE boundary or attestation flow. The new reading only counts more revocations, never fewer. When it is used, the caller asserts that the snapshot is exactly the set in force, and the docstring should say the caller owns that.
Spec alignment
No trace-spec change required.
Context: agentrust-io/.github discussion #65. Once this ships, the integrations entry switches to it and drops the 0.4.0 pin.
- Dominant language
- Python
- Stars
- 9
- Forks
- 14
- Avg merge
- 17h 24m
- Merged PRs (30d)
- 56
Getting set up
- Ships a Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from agentrust-io/ca2a
-
Difficulty 5/5 Over a week Newbie friendliness 30/100
agentrust-io/ca2a#222 · 1 comment · 1 assignee ·
Maintainers usually reply within 1 day
-
design: correction-aware supersession for delegated authority and pending action evidenceMay be free again @Evalbound claimed this 44 days ago, and no pull request is open. Openenhancement
agentrust-io/ca2a#129 · 3 comments · 1 assignee ·
Maintainers usually reply within 1 day
-
Scope proposal: financial mandate evidence for delegated limits, in-flight revocation, and decision receiptsMay be free again @amyli1996 claimed this 44 days ago, and no pull request is open. Openenhancement
agentrust-io/ca2a#109 · 8 comments · 1 assignee ·
Maintainers usually reply within 1 day
-
tracker: complete confidential-hardware conformance and release assurance decisionMay be free again @imran-siddique claimed this 44 days ago, and no pull request is open. Openattestation enhancement tier-3
agentrust-io/ca2a#47 · 7 comments · 1 assignee ·
Maintainers usually reply within 1 day
-
test(conformance): finish ACTION historical validity-window replay casesMay be free again @K611-dot claimed this 56 days ago, and no pull request is open. Openhelp wanted
agentrust-io/ca2a#36 · 15 comments · 1 assignee ·
Maintainers usually reply within 1 day
All issues in agentrust-io/ca2a
Similar issues
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
anchore/grype-db#1149 · 1 comment ·
Maintainers usually reply within 1 day
-
[Bug]: `hermes plugins update` clones an entire monorepo twice - `subdir` is resolved but dropped at both catalog-update call sitesPossibly taken @HootRock claimed this today. Opencomp/cli P2 type/perf
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
NousResearch/hermes-agent#142417 · 2 comments ·
Maintainers usually reply within 1 day
-
SMC SPEC
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
tenstorrent/tt-oca-harness#3287 ·
Maintainers usually reply within 1 day
-
bug enhancement python
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
DewaldOosthuizen/tech-cheat-sheets-and-notes#392 ·
Maintainers usually reply within 1 day
-
security
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
fabriziosalmi/wildbox#801 ·
Maintainers usually reply within 1 day