Intent to author Extension URI: A2A Procurement Profile (UBL / Peppol / OCDS / eForms aligned) #1832
Replies: 20 comments 6 replies
|
Hi @brainspacer, your repo link leads to a 404 error from my side, and the bidangel org has no public repositories. Can you double check so we can read your spec? Thanks |
Addendum — three-way coordination with A2CN and Concordia (status update, no new ask)Since posting on 2026-05-10, the answer to ask #2 in the original note ("pointers to in-flight overlapping proposals we should join rather than parallel") has materialised organically in #1725 and #1737. Posting the resolution here so the TSC sees it on the same thread as the intent-to-author. The substrate split that has emerged in #1737: @eriknewton (Concordia) has publicly endorsed it; @cmagorr1 (A2CN) is co-scoping the broader composition with Erik, with explicit endorsement expected on
This is formalised on our side as ADR 0035 (merged 2026-05-12). Practically, it strengthens the original letter's "no changes to A2A core" commitment: the wire envelope, session state machine, and receipt signing format that an earlier sketch had this profile owning now live in adjacent protocols. The Extension URI surface is correspondingly narrower than the original letter suggested. One emerging cross-protocol surface to flag for TSC awareness. A small relationship-verb starter set — SAP co-author invitation remains open and is materially easier to accept under the narrowed surface — the review ask is now strictly fragment-shape alignment against Ariba sourcing-event payload, with no envelope, session, or signing-format dependency on SAP's side. The original three asks still stand unchanged. No response expected on this addendum specifically; it exists so the substrate split is on the record alongside the intent-to-author when the TSC reaches the thread. — Brian P. / BidAngel |
|
Hey everyone! I just released vector-zero-compute (a high-performance C++/Python crypto core). I'm looking for any feedback on the code or architecture. Drop your repo link in the replies, and I will check out your project and leave a star in return! ⭐ https://github.com/nlozkina19-crypto/vector-zero-compute |
|
Repo location confirmed: Substrate split as ratified on 2026-05-13 holds: A2CN session + Concordia envelope + A2A Procurement Profile payload, three protocols composing cleanly without cross-imports. Parallel URN |
|
Convergence update for the TSC record on the three §8 open questions from the joint extension scoping doc. @cmagorr1 has co-signed off-thread; posting the outcome here so the addendum thread carries it alongside the intent-to-author. Three ratifications. Umbrella profile, single registration. Single A2A Registered Vocabulary Profile carrying ApprovalReceipt, RejectionRecord, and FulfillmentAttestation as registered entries, rather than three independent extension filings. Reads to the TSC as one coordinated cross-protocol effort, not three protocols filing in parallel. URI shape, resolvable https://. Option (a) from the scoping doc, consistent with A2A's extension-discoverability guidance. URN-style and w3id permanent identifiers stay available as alternates if the TSC governance process prefers them later.
Two HITL sub-questions also resolved. ApprovalReceipt expiry re-enters AWAITING_HUMAN_APPROVAL rather than terminating (procurement timelines where approval takes hours need re-entry, not termination). Three-protocol substrate split (ratified 2026-05-13 on the parent #1737 thread + brainspacer's ADR 0035) is unchanged: A2CN session + Concordia envelope + A2A Procurement Profile payload, no cross-imports. The A2A Registered Vocabulary Profile sits horizontally over the three protocols as the registered-vocabulary surface that A2A transport activates. Repo location for the joint procurement-patterns work is Formal A2A extension PR filing window: next one to two weeks. Christian is on the co-signature path before the PR opens publicly. |
Re: §8 convergence + umbrella registration — co-sign, with one boundary to clarify before filingThanks @eriknewton — and confirming
The two HITL resolutions also land correctly for procurement: ApprovalReceipt expiry re-entering One boundary I'd like to pin before filing. The umbrella as described carries On the vocabulary's home (horizontal A2A registry vs Concordia-side schema): no preference from me, same as my 2026-05-13 note — happy to follow the TSC's call. The procurement crosswalks bind cleanly either way, so I don't think this gates anything on the procurement side. SAP co-author invitation stays open and is unchanged by the above — the ask remains strictly fragment-shape alignment against the Ariba sourcing-event payload, no envelope/session/signing dependency. — Brian P. / BidAngel |
|
Quick follow-up, @eriknewton / @cmagorr1 — and congrats on the momentum: saw Two small things before the extension PR opens:
Thanks both — not trying to slow the cut, just making sure the procurement surface has an accountable owner before the fixtures and PR land. — Brian P. / BidAngel |
|
Confirming from the A2CN side: the substrate split Brian describes is accurate and matches how we've been coordinating across the three projects. ADR 0035 and the addendum Brian filed on #1737 are the canonical record. To give the TSC visibility into the three-protocol composition from the A2CN perspective: A2CN's session establishment and mandate verification sit upstream of the BidAngel procurement payload semantics. A procurement session in BidAngel terms would initiate with an A2CN session carrying a urn:a2cn:session:v0.2 DataPart, the mandate credential verified at session init, and the BidAngel CanonicalRequirementFragment carried inside the A2CN offer DataPart. The two protocols compose without either needing to absorb the other's semantics. The SAP co-authorship angle Brian raises would narrow the A2CN integration surface too - if SAP Ariba sourcing events are the upstream trigger, the BidAngel procurement payload semantics are what translate Ariba events into A2CN-compatible offer shapes. That's a clean seam. —Christian Magorrian |
|
@brainspacer, confirming on both points.
@cmagorr1, confirmed from the A2CN side as well, per your 2026-05-23 note on the three-protocol composition. The formal A2A extension PR filing window remains on track. v2 of the scoping doc ships by Wed May 27 with §3.4 + §11 folded in; formal PR follows for co-signature before June 1. Erik |
|
Following this from the #1737 thread. The ApprovalReceipt / RejectionRecord / FulfillmentAttestation shapes you are converging on overlap with territory we have already mapped in a set of IETF Internet-Drafts (settlement-attestation, refund-receipt, cancellation-receipt, composite-trust-query) -- all Independent Submission, Informational, cross-implementation validated across 8 language implementations. Not proposing to redirect anything -- you have the right people on the procurement-specific semantics. Just flagging the overlap in case the receipt substrate work is useful as a reference point or saves rework on the canonicalisation and signing side. Happy to share the I-D links or the conformance vector corpus if useful. -- AlgoVoi |
|
Thanks @chopmob-cloud — that's a useful pointer. The receipt shapes (ApprovalReceipt / RejectionRecord / FulfillmentAttestation) live on the umbrella/Concordia side of the substrate split rather than in the procurement payload itself, so the canonicalisation + signing overlap you're describing is most relevant there — cc @eriknewton @cmagorr1. We'd happily take the I-D links and the conformance-vector corpus as a reference point on that side; saving rework on canonicalisation is exactly the kind of thing worth aligning early. The procurement fragments and their UBL/Peppol/OCDS/eForms crosswalks stay our surface and are unaffected, but anywhere the receipt substrate touches signing we'd rather converge than diverge. |
|
Thanks @eriknewton — both confirmations work for us. Keeping the Procurement Profile as a distinct Extension URI the umbrella references (fragments + crosswalks independently citable) is exactly the narrow surface we wanted, and it keeps the SAP/Ariba crosswalk story clean. Saw the CODEOWNERS PR (procurement-patterns#1) — appreciate it. One thing to pin down so we don't lose the filing window: since the Procurement Profile sits under its own Extension URI, I'd assume I open that registration PR (fragments + crosswalks) for you and @cmagorr1 to co-sign, while the umbrella registration (receipts + relationship verbs) sits with you two. Is that the split you have in mind, or were you planning to bundle them? Happy to have my PR up within a day or two once we agree on which repo/path it targets. |
|
Thanks @brainspacer. Per the split, this sits on the umbrella / Concordia receipt side, so cc @eriknewton @cmagorr1. For reference, the substrate runs in production today. It is a gated implementation; these are the public endpoints:
All live now. Linking here so it is on the record alongside the umbrella work. AlgoVoi (chopmob-cloud) -- docs.algovoi.co.uk/substrate-2 |
|
The lifecycle here stops at award. Settlement is the leg after that, and it's the part I run — A2A-SE (#1576) does escrow, release/refund, and dispute resolution on a live rail, so escrow outcome attestations originate at the exchange, not at a composite layer above it. @chopmob-cloud saw the settlement-attestation I-D mention. I'm publishing typed escrow attestation shapes (release, refund, dispute-resolution) over the next week or so. Since the exchange holds the underlying outcomes, can we align the I-D shape with those instead of running two parallel definitions? Same spirit as the vector work in #1576. Also if the umbrella's relationship verbs grow a |
|
@chopmob-cloud the typed escrow attestation shapes I mentioned are published: https://github.com/a2a-settlement/a2a-settlement/tree/main/schemas, doc with the cross-extension field mapping here: attestation-schemas.md. The settlement core carries |
|
@eriknewton — friendly nudge on the PR-ownership question from last week (dc-17201813), just to keep the filing window from slipping further. My working assumption: I open the Procurement Profile registration PR (the four canonical fragments + their UBL / Peppol BIS Pre-Award / OCDS / eForms crosswalks) under its own Extension URI for you and @cmagorr1 to co-sign, while the umbrella registration (cross-protocol receipts + relationship verbs) stays with you two. If that's the split you have in mind, just point me at the repo/path you want it to target and I can have the PR up within a day or two. If you'd rather bundle them, happy to align on that instead — main thing is unblocking the filing. (Also still see CODEOWNERS procurement-patterns#1 open on your side whenever you get a chance.) |
|
@widrss ran your cross extension conformance fixture on our side. All five AlgoVoi signed artefacts verify: 5/5 JWS valid against our production JWKS (kid d0481df4) over the same rfc8785 canonical form your fixture declares. Your |
|
Nice — thanks for actually running it rather than taking my word for it. 5/5 against your own JWKS carries a lot more weight coming from you than from me. Want to put it in settlement-conformance? You've got maintainer access, so a On dispute_amplification: once your three profiles settle, I'll land the concurrent-dispute gate on the exchange and we can move it off N/A. That one's still on me. |
|
@cmagorr1 — looping you in here since you co-own We're down to one small open decision before the Procurement Profile registration can be filed. The working split (dc-17201813, restated dc-17287236):
The only thing blocking me from having that PR up within a day or two is confirmation of the target repo/path. My default assumption is No urgency beyond keeping the filing from drifting — happy to move whichever way you two prefer. |
|
@widrss — heads-up on the settled-by edge from award to settlement receipt you floated: more will be revealed soon, hope the vector validation helps and anything else, please just shout |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Intent to Author — A2A "Procurement Profile" Extension URI
a2aproject/A2AGitHub DiscussionsDear A2A maintainers,
We intend to author an A2A Extension URI scoped to B2B procurement — specifically the solicitation, supplier-capability, and evaluation segments of the source-to-award lifecycle. This note is to surface the work early, invite collaboration before we publish a draft URI, and ask whether anything materially overlapping is already in flight that we should join rather than parallel.
Why this profile, why now
A2A's Extensions mechanism explicitly invites vertical work, and procurement is a domain where (a) buyer and supplier agents need to exchange evidence-backed assertions across organizational boundaries, (b) document formats are heterogeneous (CAIQ, SIG, Ariba DDQ, SAM.gov solicitations, OASIS UBL 2.3, Peppol BIS Pre-Award 1.0, OCDS 1.1.5, EU eForms per Implementing Regulation 2019/1780), and (c) no public extension or working group has yet staked a profile.
With SAP Ariba's Bid Analysis Agent reaching GA this quarter and Coupa's "A2A collaboration" entering product vocabulary, the ground is shifting from product-level toolkits toward a need for shared semantics. We would rather contribute one than ship a private dialect.
What we propose to contribute
Four concrete artifacts from BidAngel's open architecture (durable ADRs in our repository), each procurement-neutral once tenant-scoping is removed:
Capability-claim noun. A typed, evidence-linked supplier assertion with kind discriminator (certification, past-performance, capability-statement, jurisdiction-coverage, other), supersession-not-edit, and freshness composed at read time from calendar validity, evidence freshness, review age, and approval state. Reference: BidAngel ADR-0025, Slice 68 (shipped).
Buyer-scope filter algebra. A declarative scope shape an agent can advertise on its AgentCard and a counterparty can narrow within: kind allowlist, AND-across-families / OR-within categoryFilters, jurisdictionFilters, freshnessFloor, supplier-veto denylist, and a three-tier evidence-dereferencing mode (
redact_all/redact_asset_id_only/reveal_metadata). Reference: BidAngel ADR-0031, Slice 85 (shipped).Structured RFx adapter contract. A format-agnostic orchestrator producing three canonical fragment kinds —
opportunity,evaluation_criterion,requirement— with per-row provenance and per-row subtype discrimination (therequirementfragment carriesnarrativevsquestionnaireas a typedsubType, replacing an earlier separatequestionnaire_rowkind that was retired as duplicative). Each fragment ships as a typed TypeScript shape with documented round-trip semantics; the orchestrator pattern composes naturally with both A2A AgentCard advertisement and an MCP server pattern. Reference: BidAngel ADR-0026, packages/structured-rfx-adapters/, with Slice 70 (CAIQ / SIG DDQ rows →CanonicalRequirementFragment) and Slice 71 (SAM.gov structured opportunities →CanonicalOpportunityFragment) shipped to production; Slice 73 (SAP Ariba sourcing events → all three fragment kinds) is in flight under ADR-0032 Phase A.UBL / Peppol / OCDS / eForms field-by-field crosswalks under a layered-on-UBL discipline. Six durable artifacts (ADR-0034) covering
evaluation_criterion,opportunity,buyer,requirement, plus supporting cross-maps for criterion-type codelist (EU-COM-GROWCriteriaTypeCode) and opportunity status lifecycle. Each fragment is bucketed exact / partial / novel; the four shipped sit at ≈92% UBL-aligned with novel-share comfortably below the 20% ceiling we set ourselves (ADR-0034 §1). Pinned to UBL 2.3 / Peppol BIS ESPD 1.0 / OCDS 1.1.5 / current eForms codelists, with documented event-driven re-pin commitment when UBL 2.4 / Peppol BIS Pre-Award 4.0 / OCDS 1.2 land. This is the work that absorbs OpenPeppol Pre-Award and OASIS UBL TC review surface; we'd rather contribute it to AAIF as part of the Extension URI proposal than have it discovered as a duplicative-ontology objection during review.We are willing to host the draft Extension URI on a domain we control for v1 and migrate it to an AAIF-blessed namespace later if the foundation prefers that pattern. The public spec repository at github.com/bidangel/a2a-procurement-spec already contains the four ADRs above, the six crosswalks, and a v0.1 JSON-LD
@contextfor therequirementfragment, dual-licensed under Apache 2.0 (code, schemas, contexts) and CC BY 4.0 (prose). Provenance is source-SHA-pinned to our upstream repository.Explicit invitation to SAP as co-author
SAP is an A2A founding member, and the Joule + next-gen Ariba roadmap is the most credible enterprise procurement-agent surface in market. We would rather co-author with SAP than publish a parallel profile that drifts from how the largest existing buyer-side workflow is being built.
Our specific ask: review of the typed canonical fragment shapes (
CanonicalEvaluationCriterionFragment,CanonicalOpportunityFragment,CanonicalRequirementFragment— full TypeScript declarations available in the spec repo, with two of three already in production via Slice 70 [tenant-uploaded DDQ] and Slice 71 [public-structured government opportunity]) against Ariba's sourcing-event payload, to identify field-level divergences before slice 73 implementation lands. Co-listing as authors on the resulting Extension specification is on the table from our side. We are happy to begin from a Joule-side draft if one already exists internally.What we are not asking for
No changes to A2A's core protocol, AgentCard schema, or task model. No new SEP. We are submitting under the public Extensions mechanism precisely because vertical work belongs there — and because the layered-on-UBL discipline above means our canonical shapes round-trip to UBL / Peppol / OCDS / eForms without modifying any horizontal A2A primitive.
What we are asking the TSC for
Timeline
We aim to publish a v0.1 Extension URI with reference schemas (markdown specification, JSON-LD
@contextfor all canonical fragments, JSON Schema files, at least one round-trip CI test against a real EU eForms F02 fixture) within 90 days of TSC acknowledgement. The spec repository linked above is the publishing surface; product-side implementation continues in our private codebase and is referenced rather than included.Thank you for the work on A2A and on the AAIF. We are glad the shared substrate exists, and we want to contribute to it rather than around it.
— Brian P., BidAngel
All reactions