Repository navigation
Proposal: an independent dispute-handoff profile for AEP (§§2.7, 2.8, 4.3, 6, and 6.5) #14
Replies: 4 comments 8 replies
|
Hi Shunhe, Thank you for a detailed proposal with specific section citations; it is straightforward to evaluate on the merits. Bundle signature (§§2.7, 4.1, 3.10, 4.3, 6.1)Your analysis is correct. Sections 2.7, 4.1 and 3.10 each state that the chain-level fields are integrity-protected by a bundle signature under §4.3, but §4.3 defines only a per-artifact For the record, this gap is already tracked: Your proposal contributes the scope that we had not resolved. It establishes that signing Related findingsYour comment prompted a review of the hash rules against the published vectors. That review identified two defects that we consider prerequisite to the export signature, since a signature computed over an under-determined artifact hash would provide limited assurance. Detail: two defects in the hash rules**(a) Sections 2.7 and 4.1 are inconsistent with the conformance vector.** Both state that the chain-level fields are not part of the per-artifact hash input. Vectors (a) and (b) include `merchant_id` and `spec_version` within `metadata`, which is one of the eight hash-input fields enumerated in §4.1. Section 6.3 establishes vector (a) as the conformance gate, so an implementation that follows the normative prose does not reproduce the gating vector. A single artifact therefore admits three defensible hash values depending on which provision is followed.Two related observations. The (b) The canonical key-sort rule is ambiguous for member names outside the BMP. Section 4.1 states that member names sort by Unicode code point. RFC 8785, which the same paragraph incorporates normatively, sorts by UTF-16 code unit, as do Common cause. These defects, the bundle signature, and the export-record gaps below share a single origin: rc.2 introduced normative requirements in prose without extending the schemas or vectors that would carry them. Two further instances are §6.2, which requires a Your items raise materially different questions, so we will separate them into individual issues in accordance with the one-topic-per-issue convention. Links will follow in this thread. Our preference is to file those issues and invite comment from other actor classes before settling scope, rather than fix it bilaterally here. Detail: preliminary direction per itemThe following is the editors' current reading and not a settled position.
On the final two items. Your reading of §3.9 is correct that it records purchase authority rather than agreement to arbitrate, but determining what constitutes valid consent to a forum is outside what this specification should decide. On the safe harbour, your argument is specific rather than rhetorical; however, platform emission is voluntary, and the actor class whose adoption depends on that term is not represented in this thread. Two of your requests correspond to questions we have already published for comment. The annotation and rebuttal payload schema is granted in principle by §6.5, and its schema is open question 5. A signed disposition referencing a bundle hash overlaps open question 4, concerning a compact verification attestation that a rail can verify without ingesting the chain; we would prefer a single primitive for signed statements about a bundle hash to two closely related objects. Comments against both questions would be welcome. Interoperability exerciseWe are interested in principle. We would want the export record defined first, so that your implementation is not built against a specification still under revision, and we would propose framing the exercise as forum-agnostic, open to any participant, and limited to synthetic data. Detail: proposed terms1. **Forum-agnostic and open.** Published as an independent-handoff interoperability exercise rather than a bilateral engagement. We would seek a second participant, principally because two independent reviewers reaching different conclusions on the same bundle would be the most informative outcome available. 2. **Synthetic data only, and marked as such.** No production transaction data and no raw-plane identifiers per §8.2.1. Signing would use the published test keypair in [`keys.json`](https://github.com/A-Comm-Tech/a-comm-evidence-protocol/blob/main/vectors/v1.0.3-rc.2/keys.json). Because that seed is published, every artifact produced must carry a test-only marker. 3. **Findings on evidentiary sufficiency rather than outcome.** Section 9.3 states that AEP is not a dispute manager, and we take no position on the correctness of any reviewer's determination. The useful output is what could not be determined from the bundle, what had to be assumed, and where the §2.8 signal classes affected the reading. 4. **DCO and Apache 2.0** for any material intended for publication as a conformance vector. 5. **No endorsement.** We would publish the artifacts and findings, and would not present any participant as validating AEP. The convention in CONTRIBUTING.md for listing independent implementations without endorsement ranking would apply.You note that the stablecoin and x402 transactions recognised in §§3.6 and 3.9.10 may have no card-network dispute process. That is correct, and Appendix C and the §6.4 renderers are card-network specific. We would ask you to address one consequence: x402 settlement is final, so a disposition concerning such a transaction has no settlement-layer remedy unless funds were escrowed or the remedy is prospective. A profile designed for irreversible rails may differ materially from one bound to representment, and we would prefer to establish which is being specified before drafting. RequestSeparately from the technical discussion and for our records rather than for the thread: please provide the legal entity operating People's Court and the ruleset under which it conducts proceedings, including whether dispositions are intended to be binding or expressly non-binding. Issue links to follow. Where we have characterised your proposal more narrowly than you intended, particularly on the manifest scope and the single-primitive suggestion, please say so. |
|
Issues now filed. The first was already open before this discussion, and it
#16 and #18 are where your proposal is most directly under discussion. The |
Additional consumers of the evidence exportBuilding on this proposal and the direction in #12: the adjudicator is one member of a larger set of consumers for the export @shunhe-wang describes: auditor, insurer, tax authority, and regulator.
None of these readers produce the export or can re-derive it, yet each must decide something binding from it. So the dispute-handoff profile is the same profile any independent reader will use who has to trust an export they did not produce. Thus, I believe the export layer should be shared, with reader-specific fields living in profiles on top (e.g. forum consent and response windows for disputes, period and reporting basis for audit, policy identifiers for claims). This is the core-and-profiles shape from #12, and I think #14 is reinforces that. Bespoke export formats per reader would force every producer to implement the same integrity machinery independently, allowing the records drift apart. But that drift cannot be tolerated by those same readers: a dispute decided on one record that differs from the record that was booked, insured, or examined is a compliance nightmare. Tying this to organization identifier proposalThe spec identifies agents but has no concept of the organization an agent acted for. For the adjudicator, that compounds the problem this thread already raised: authority to transact is not consent to arbitrate, and consent must come from a party with capacity to give it, which for commercial disputes means a legal entity, not an agent identifier. Who has standing to respond to the bundle? Which entity does the award bind? For the auditor, the same missing field decides whose books the transaction lands on and which jurisdiction's tax attaches. For the insurer and the examiner it decides who the policyholder is and whether the counterparty is one you are permitted to transact with at all. An award that cannot name the entity it binds cannot be confirmed against anyone; an entry that cannot name the entity it belongs to cannot be audited; a claim that cannot name the insured cannot be paid. Same missing field, three dead ends. Concrete suggestion for v1.1.0: agent-to-legal-entity resolutionConcrete suggestion: agent-to-legal-entity resolution (entity identifier, jurisdiction, and the authority chain from entity to agent) belongs in the core evidence record rather than in a profile, because every downstream reader needs it and no one can reconstruct it after the fact. The editors' diagnosis above cuts against proposing that as prose alone: rc.2's defects share the pattern of normative requirements without schema fields or vectors to carry them, so I'll frame my comments on #16 as proposed schema fields plus a conformance vector rather than a requirement statement. #16 and #18 are where these readers overlap most directly, and #3 determines what any export signature actually covers. I’m happy to coordinate language so the adjudicator-reader and relying-party arguments land as one position instead of two. |
|
Hi Shunhe, Your Discussion #14 argument that an outside reviewer needs the whole export signed and every omission listed stayed with me, so I tested the open AEP evidence draft against it, and 5 of 22 attacks on a dispute bundle got past a verifier, two of them producing files byte-for-byte identical to an honest one. The one-pager is below. Would you be open to 20 minutes on which of these gaps actually matters in practice? Thank you either way. Chidera What an AI-commerce dispute bundle can prove, and what it can't When an AI agent buys something and the cardholder later disputes the charge, the merchant's whole defense is the evidence it kept, and the A-Comm Evidence Protocol (AEP) is the most complete open draft for what that evidence should look like. So I built an independent verifier for it from the specification text alone, and it passes all 55 checks in the published conformance vectors. Then I built the other side too, a producer that refuses to emit anything the draft forbids, and I used it to make one disputed $55 purchase and attack the exported bundle 22 different ways, which is where it got interesting. What holds. A recipient holding only the merchant's public key refuses 15 of the 22 attacks and flags 2 more, so the hash chain and signatures do what they are meant to do against anyone who doesn't hold the merchant's key. What doesn't. Five attacks get through, and two of them produce files that are byte-for-byte identical to the honest bundle, which means no verifier that reads only the bundle can ever catch them. The reasons are structural rather than bugs:
What would close them. Anchoring the chain head every time an event arrives (a timestamp token or a transparency-log entry, nothing exotic) takes the five misses down to two, and I measured that rather than argued it. The remaining two are already scoped in the specification's open issues or are one hashed field away. What I'd love from you. Twenty minutes of your view on which of these gaps actually matters in real representment, in the sense that an issuer or processor would weigh it, because that is the part I can't learn from the specification. Chidera Onyebu, Computer Science and Applied Mathematics, University of Maryland |
Uh oh!
There was an error while loading. Please reload this page.
Hi A-Comm team,
I’m writing from People’s Court (peoplescourt.ai), where we are working on a consent-based process for resolving disputes using structured evidence.
AEP is unusually thoughtful about preserving the history of an agent-mediated transaction.
We would like to explore adjudicating disputes from AEP
DisputeBundles.We think a natural next step would be to define what must happen when a
DisputeBundleleaves the merchant, platform, or evidence custodian and goes to an independent decision-maker.This would be especially useful for the stablecoin and x402 transactions recognized in §§3.6 and 3.9.10, which may have no card-network dispute process.
An independent reviewer needs to know who created each important assertion, what may be missing, and whether the affected parties had a fair opportunity to respond.
For that reason, we suggest adding an independent dispute-handoff profile under §6.
At minimum, it should provide:
The complete-bundle signature is already implied by the draft.
Sections 2.7 and 4.1 say the chain-level fields are protected by a bundle signature under §4.3, but §4.3 defines only per-artifact signatures.
Section 6.1 has no bundle-signature field, even though §6.3(c) promises a signed
DisputeBundletest vector.Defining that signature would give an independent forum a stable record to adjudicate.
We would also keep consent to a dispute forum separate from transaction authorization.
Section 3.9 records forms of commerce authority, not agreement to arbitration or to any particular decision-maker.
Forum consent should be its own record, matched to the parties, transaction, rules, and terms in effect.
For this profile, the platform safe harbor in §6.5 should become a non-attribution rule rather than a blanket evidence exclusion.
The preceding sentence in §6.5 and the signal classes in §2.8 already protect platforms from having unverified third-party statements attributed to them.
Platform-authored evidence should remain available to an independent decision-maker, with notice and an opportunity for the platform to explain or rebut it.
A public test vector under §6.3 would make the profile easier to implement.
It could include a valid bundle, a partially disclosed bundle, a modified export, conflicting party annotations, and a final disposition that references the accepted bundle hash.
Would A-Comm consider an independent dispute-handoff profile for v1.0.4 or v1.1?
People’s Court would be interested in adjudicating a synthetic dispute from an AEP bundle and returning a signed test disposition tied to that bundle.
Shunhe
People’s Court
All reactions