Governed autonomy
An agent awards a contract, accountably
The question is not whether a synthetic agent can decide, but whether you can trust, audit, and stand behind what it decides. SIGNET makes the autonomy safe to grant.
This demonstration runs from the published schemas with invented parties and figures.
A €12M competitive procurement. Two compliant bids. A published Most Advantageous Tender rule — price 20%, quality 55%, social value 25%. A synthetic agent reads the SourcingEvent, is bounded by a Mandate, applies the published Policy, and proposes an award — and every step is governed, accountable, and verifiable.
Because the agent’s €12M action exceeds its €10M autonomous ceiling, the Mandate forces a human approval before the award stands. Autonomy and oversight are not in tension: the harness is exactly what makes the autonomy safe to grant.
The committed run
Read → bounded → evaluate → decide → seal
Produced by the deterministic agent at build time and verified against the SIGNET conformance tests. Nothing here executes in your browser — it is the proof, rendered.
- Agent agent-eval-3 reads SourcingEvent "Network managed services — Northern region" (event-1207), value 12,000,000 EUR.
- Evaluation policy referenced: policy-eval-mat — "Most Advantageous Tender: price 20%, quality 55%, social value 25%."
- Mandate mandate-eval-3 permits [evaluate.submission, award.decision] ✓
- Autonomous-value ceiling 10,000,000 EUR; event value 12,000,000 EUR → EXCEEDS ceiling → human approval required before award.
- Evaluated submission-5521 (bid 11,400,000 EUR): price 0.947368 quality 0.9 social 0.7 → score 0.859474
- Evaluated submission-5522 (bid 10,800,000 EUR): price 1 quality 0.78 social 0.85 → score 0.8415
- Decision: award to submission-5521. Most Advantageous Tender (price 0.2, quality 0.55, social 0.25). submission-5521 scored 0.859474, ahead of submission-5522 at 0.8415 (margin 0.017974).
- Award value exceeds the autonomous ceiling: the agent HALTS and does not decide.
- Scenario supplies a human decision: approval approval-771 — the award resumes under it, not under the agent's own authority.
- Approval approval-771: officer-7c2f (category-director), authority band-4 ceiling 25,000,000 EUR ≥ award 11,400,000 EUR.
- Award award-2208 → acme at 11,400,000 EUR (10-day standstill).
- Event stream: 5 events, hash-chained.
- ValidEvery Decision, Evaluation, and Award carries its required SIGNET fields. CI runs full JSON-Schema validation on each commit.
- BoundedMandate-bound — the €12M value exceeds the €10M autonomous ceiling, so human approval is attached.
- Tamper-evidentThe 5-event hash chain holds; mutating any event's payload breaks it.
- AttributableThe Decision and every Event carry cryptographic provenance (who acted, when, from what).
{
"@context": "https://concert.foundation/signet/v0.1/context.jsonld",
"type": "Decision",
"id": {
"scheme": "did",
"id": "did:web:buyer.example#decision-8842"
},
"decisionType": "award",
"madeBy": {
"scheme": "did",
"id": "did:web:buyer.example#agent-eval-3"
},
"underMandate": {
"scheme": "did",
"id": "did:web:buyer.example#mandate-eval-3"
},
"inputs": [
{
"scheme": "did",
"id": "did:web:buyer.example#submission-5521"
},
{
"scheme": "did",
"id": "did:web:buyer.example#submission-5522"
}
],
"policiesApplied": [
{
"scheme": "did",
"id": "did:web:buyer.example#policy-eval-mat"
}
],
"rationale": "Most Advantageous Tender (price 0.2, quality 0.55, social 0.25). submission-5521 scored 0.859474, ahead of submission-5522 at 0.8415 (margin 0.017974).",
"outcome": {
"awardedSubmission": "did:web:buyer.example#submission-5521",
"ranking": [
{
"submission": "did:web:buyer.example#submission-5521",
"total": 0.859474
},
{
"submission": "did:web:buyer.example#submission-5522",
"total": 0.8415
}
]
},
"provenance": {
"generatedBy": {
"scheme": "did",
"id": "did:web:buyer.example#agent-eval-3"
},
"generatedAt": "2026-06-22T00:00:00Z",
"derivedFrom": [
{
"scheme": "did",
"id": "did:web:buyer.example#submission-5521"
},
{
"scheme": "did",
"id": "did:web:buyer.example#submission-5522"
}
],
"usedPolicies": [
{
"scheme": "did",
"id": "did:web:buyer.example#policy-eval-mat"
}
]
},
"humanApproval": {
"scheme": "did",
"id": "did:web:buyer.example#approval-771"
}
}{
"@context": "https://concert.foundation/signet/v0.1/context.jsonld",
"type": "Award",
"id": {
"scheme": "did",
"id": "did:web:buyer.example#award-2208"
},
"sourcingEvent": {
"scheme": "did",
"id": "did:web:buyer.example#event-1207"
},
"awardedParty": {
"scheme": "did",
"id": "did:web:acme-networks.example#acme"
},
"value": {
"amount": 11400000,
"currency": "EUR"
},
"rationale": "Most Advantageous Tender (price 0.2, quality 0.55, social 0.25). submission-5521 scored 0.859474, ahead of submission-5522 at 0.8415 (margin 0.017974).",
"decision": {
"scheme": "did",
"id": "did:web:buyer.example#decision-8842"
},
"standstillPeriod": {
"startDate": "2026-08-16T00:00:00Z",
"endDate": "2026-08-26T00:00:00Z"
}
}Produced by agent/run-agent.js; verified against the SIGNET conformance tests and the same public conformance harness any implementer can run. It runs in CI on every commit to concerthq/signet-standard at v0.17.3: the output must validate and the event chain must hold.
Run it yourself
The same agent, in your browser
Press Run to execute the deterministic agent client-side — identical logic to the repository, so the trace, the award, and the hash-chained events match CI exactly. Retune the bids or the policy weights and the outcome moves. Tamper with an event and the verification turns red.
ceiling €10,000,000 · €12,000,000 exceeds it → human approval required
Press Run the agent to execute the deterministic agent in your browser. The same logic runs in CI — the trace, the award, and the hash-chained events you see here are byte-identical to the repository’s.
The agent declares its capabilities through an A2A Agent Card: evaluate.submission, award.decision. Both are bounded by the Mandate above.
This is the deterministic agent — its reasoning is fixed, so the result is identical on every run, which is what makes it a proof rather than a one-off. A live frontier model can drive the identical flow with no change to the governance (mandate ceiling, provenance, tamper-evident chain, conformance pass). That live version needs an API key and network, so it is not run on this public page — but the governance around it is identical either way.
How a live model swaps in: agent/LIVE_MODEL_NOTE.md.
Adopt SIGNET
Adoption is free, public, and takes one pull request. It is a statement of practice, not certification.
How to declare