Scope proposal: financial mandate evidence for delegated limits, in-flight revocation, and decision receipts
I maintainer di solito rispondono entro 1 giorno
@amyli1996 ci sta già lavorando.
Dal 7/9/2026.
Valutazione
Questa issue non è ancora stata valutata.
Descrizione
Problem statement
Would maintainers be open to scoping a small, informative profile for financial mandate evidence that composes existing cA2A delegation/action verification, Agent Manifest constraints and human approvals, and TRACE external execution evidence?
I reviewed current cA2A main, issue #36, and the new temporal-validity proposal in issue #108. The current ACTION-001–ACTION-011 suite already covers the delegation-linked base cases: provenance binding, credential and scope failures, local-policy denial, negative controller outcome, multi-hop attenuation, scope widening, and delegatee mismatch. Issue #108 separately proposes issuer-signed validity periods and runtime active-at evaluation. This proposal does not duplicate those checks; it assumes successful base cA2A verification and temporal-validity evaluation, then asks about a narrower financial authorization/evidence layer.
The three additional problems are:
- Delegated authority often needs typed limits: currency, per-action ceilings, rolling or cumulative budgets, permitted counterparties, and purpose restrictions.
- Mandate- or credential-specific early termination can occur before authorization, after authorization but before irreversible commit, or after commit. Those times have different consequences and should not collapse into the validity interval proposed in #108 or into one generic status.
- A decision receipt needs to bind the evaluated action, the effective mandate snapshot, the freshness of revocation state, any action-bound human approval, and the authoritative budget-state version without claiming settlement or business completion.
Proposed solution
Minimum proposed semantics:
- consume a verified cA2A action-evidence result instead of reproducing signature, chain, DAG, or delegatee verification;
- carry typed per-action and rolling-budget constraints, counterparty and purpose allowlists, and typed attenuation checks;
- distinguish authorization time, irreversible commit time, and external outcome time;
- consume the active-at result proposed in #108, then require a fresh mandate-specific active/revoked observation when early termination is supported;
- bind human approval to the canonical action hash and a validity interval;
- fail closed or require retry when the observed cumulative-budget state version conflicts with the authoritative controller state;
- preserve TRACE's boundary that an allowed decision receipt is not proof of settlement, custody, KYC/AML, sanctions compliance, or other legal/business completion.
I have a clean-room ADR, Draft 2020-12 JSON Schema, thirteen synthetic conformance vectors, and a dependency-free profile-layer evaluator. Illustrative synthetic cases include: an action within typed limits, a per-action-limit denial, revocation between authorization and commit, stale revocation status, action-hash approval mismatch, and an authoritative budget-state conflict. The local suite currently passes 17 tests; that result is not a cA2A compatibility or adoption claim.
Could maintainers advise whether this belongs in cA2A, Agent Manifest, TRACE, or should remain out of scope for now? If the direction is positive, would the smallest useful next artifact be an informative ADR plus five synthetic fixtures, with vocabulary and repository placement determined by maintainers before any PR?
Alternatives considered
- Treat temporal validity alone as sufficient: this does not represent mandate-specific early termination, authorization/commit boundaries, or cumulative-budget state conflicts.
- Put the whole proposal directly into cA2A: this may instead belong partly in Agent Manifest or TRACE, so maintainer routing is needed first.
- Open a PR immediately: deliberately avoided until maintainers confirm scope, vocabulary, repository placement, and contribution requirements.
Security/TEE impact
No TEE-boundary, attestation-flow, secret-handling, or production threat-model change is proposed at this scope stage. Any later implementation would need freshness, replay, TOCTOU, privacy-minimization, and fail-closed behavior reviewed explicitly.
No real financial data or W-Axis proprietary implementation is included. The proposal uses only synthetic identifiers, amounts, counterparties, timestamps, and fixtures. It includes no private accounts, transactions, customers, product architecture, scoring, datasets, prompts, or unreleased implementation.
Spec alignment
No trace-spec change is asserted yet. The proposal intentionally composes current cA2A ACTION verification, the temporal-validity direction in #108, Agent Manifest constraints/human approvals, and TRACE external execution evidence. Maintainer guidance is requested on whether any informative profile, field, or event belongs in cA2A, Agent Manifest, TRACE, or outside the current project scope.
- Lingua principale
- Python
- Stelle
- 9
- Fork
- 14
- Merge medio
- 19h 33m
- PR unite (30g)
- 48
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di agentrust-io/ca2a
-
fix(delegation,attestation): enforce RFC 8785 safe-integer bounds and canonical lowercase hex on HolderProof and CallerPossessionForse già presa @drk-ram l’ha presa 1 giorno fa. Apertaneeds-review:MEDIUM
agentrust-io/ca2a#274 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
fix(transport): enforce canonical base64url in b64url_decode and reject non-string fields in parse_channel_offerForse già presa @drk-ram l’ha presa 1 giorno fa. Apertaneeds-review:MEDIUM
agentrust-io/ca2a#271 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
fix(cli,transport): reject duplicate JSON keys, non-finite constants, and non-string coercion in CLI and HTTP transportForse già presa @drk-ram l’ha presa 1 giorno fa. Apertaneeds-review:MEDIUM
agentrust-io/ca2a#272 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
fix(config,tdx): reject bool max_delegation_depth, non-mapping attestation config, and trailing/empty TDX quote containersForse già presa @drk-ram l’ha presa 1 giorno fa. Apertaneeds-review:MEDIUM
agentrust-io/ca2a#273 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
fix(verify,runtime): reject private JWK members, non-canonical base64url, lone surrogates, duplicate JSON keys, and future revocation snapshotsForse di nuovo libera Una pull request per questa issue è stata chiusa senza essere unita. Apertaneeds-review:MEDIUM
agentrust-io/ca2a#267 · 5 commenti ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di agentrust-io/ca2a
Issue simili
-
Project submission:Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 72/100
slavakurilyak/awesome-ai-agents#845 ·
I maintainer di solito rispondono entro 1 giorno
-
tests: pin that the atomic writers in utils/paths.py stage the temporary file in the target's directoryForse già presa Una pull request collegata a questa issue è aperta o già unita. Apertadifficulty:2 enhancement good first issue
Difficoltà 1/5 1-3 ore Idoneità per principianti 92/100
MakazhanAlpamys/Soup#2178 ·
I maintainer di solito rispondono entro 1 giorno
-
[BUG] dcg.waggr permutation p-values are folded twice, so near-zero scores get the smallest p-valuesAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
scverse/rapids-singlecell#854 ·
I maintainer di solito rispondono entro 1 giorno
-
Slang input: int8_t4_packed and uint8_t4_packed are copied into CrossGLForse già presa @ninglinLiu l’ha presa oggi. Apertaarea:frontend backend:slang bug direction:input
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
I maintainer di solito rispondono entro 1 giorno
-
random_elements(unique=True) on an OrderedDict: ZeroDivisionError once only zero weights remain, AssertionError with use_weighting=FalseForse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
I maintainer di solito rispondono entro 13 giorni