Conformance & certification

Certification, decided by a machine

“SIGNET Certified” means an implementation passed the public, machine-runnable conformance suite — nothing subjective, identical for every implementer. The same suite that grades a submission is published for anyone to re-run.

Conformance is determined solely by a machine-runnable test suite, versioned with the Canonical Data Model. Two levels exist — Core (the wire contract plus event and provenance integrity) and Full (Core plus interoperability mapping and behavioural semantics). The suite reports pass, fail, or not-applicable per requirement and computes the highest level fully satisfied. There is no rounding up.

The normative levels and the suite live in conformance/ of concerthq/signet-standard at v0.17.1. This page renders directly from them.

Levels

Core and Full

Generated from the normative conformance/levels.md.

Specification v0.1 (Working Draft) Steward: Concert Foundation Tier: Normative Licence: Apache-2.0 (suite) · CC0-1.0 (this document)

This document defines what it means for a document or an implementation to conform to the SIGNET standard, the conformance levels, and the neutrality rules that govern certification. It is the companion to the SIGNET Canonical Data Model specification (CDM §13 Conformance) and the Concert IP & Licensing Policy.

The accompanying machine-runnable suite (conformance/) tests every requirement below. A claim of conformance is only meaningful when accompanied by a passing report from that suite (report-schema.json).


1. Conformance targets

Two things can conform:

  • A document — a single CDM instance (an Invoice, a Decision, …). Document conformance is purely structural (CDM §13.1).
  • An implementation — a system that reads, writes, and changes CDM documents. Implementation conformance additionally covers behaviour: round-trip fidelity, mapping fidelity, and event/provenance integrity (CDM §13.2).

Only implementations are certified. Document conformance is a building block of implementation conformance.


2. Conformance levels

2.1 SIGNET Core v0.1

The floor. An implementation is Core-conformant if it satisfies every MUST in:

  • C-DOC — Document conformance. Every document it emits validates against the published JSON Schema for its declared version, and it rejects documents that do not (CDM §13.1). Tested by: positive fixtures must validate; negative fixtures must be rejected.
  • C-EVT — Event & audit integrity (Layer 3). Every material change produces an append-only Event carrying Provenance; Events hash-chain via previousEventHash so tampering is evident (CDM §1.7, §7.1, §7.2). Tested by: a valid chain verifies; a tampered chain is detected.
  • C-PROV — Provenance presence. Every Decision and every Event carries a provenance object identifying what generated the assertion and when (CDM §6.4, §7.2). Tested by: provenance presence and shape checks.

Core corresponds to Layer 1 (Wire Contract) + Layer 3 (Event & Audit) of the SIGNET architecture.

2.2 SIGNET Full v1.0

Core, plus:

  • F-MAP — Interoperability mapping fidelity (Layer 4). The implementation performs the normative §8 standards mappings without loss of mapped fields. For v0.1 the tested mapping is Invoice → Peppol BIS Billing 3.0 (EN 16931): the projection must preserve every mapped Business Term and the monetary totals must reconcile (CDM §8, §13.2(b)). Tested by: the mapping-conformance cases.
  • F-SEM — Behavioural semantics (Layer 2). Policy objects carry both an executable expression and a humanReadable statement; Mandates bound agent actions; Decisions reference the inputs and policies they applied (CDM §6.3–6.5, §13.2). Tested by: the semantics cases.

Full corresponds to Core + Layer 2 (Behavioural Semantics) + Layer 4 (Interoperability).

2.3 Reporting

The suite reports, per requirement, pass | fail | not-applicable, and computes the highest level fully satisfied: Full, Core, or none. A partial result (e.g. Core met, Full partially met) is reported honestly as Core with the failing Full requirements listed. There is no rounding up.

not-applicable is narrow, and it never contributes to a level. A requirement is not-applicable only where the implementation does not exchange the object class the requirement constrains at all — the case F-MAP raises for an implementation that never handles invoices. It is not available for a requirement the implementation would rather not meet, and an implementation cannot reach Full on a set of results in which a Full requirement is not-applicable: it reaches Core, with the not-applicable requirement recorded as such. A level is claimed on what passed, never on what was skipped. Where a whole class of implementation cannot reach Full for this reason, the answer is a profile (docs/profiles/), which names the subset that applies to it — not an N/A that rounds up.

2.4 Endorsements — a second axis (proposed, not yet in force)

Some properties are worth certifying but do not belong on the Core/Full axis at all, because they are not universally applicable: an implementation may run synthetic agents but hold no access-controlled documents, or the reverse. Putting such a property in Core would fail implementations for which it is irrelevant.

Endorsements are the second axis. An endorsement is prefixed E-, is earned only if every one of its checks passes, and is additive: it changes neither Core nor Full, blocks nobody from certifying, and is inert where unearned. An implementation either holds an endorsement or does not, so no not-applicable arises on this axis. Admission to the closed endorsement register requires the three-part test in the mark grammar R2: the property must be orthogonal to the level axis, not universally applicable, and machine-testable under CN-1.

Two endorsements are proposed:

EndorsementChecksWhat it establishesProposal
E-MDT Mandate EnforcementE-MDT-1…7The limits a Mandate expresses are respected, not merely citedCP-Mandate-enforcement
E-CNS Consent EnforcementE-CNS-1…5The terms a Consent expresses are honoured in the implementation's own authorisation decisionsCP-Consent-revocation

Both proposals are drafts. Their checks are implemented and runnable today (node conformance/rules/check-endorsements.js) so the gap they close is demonstrable rather than argumentative, but they decide nothing: they are not run by run-conformance.js, do not appear in a conformance report, and no endorsement may appear in a mark until the corresponding proposal carries and its register entry moves to active.

2.5 Requirements outside the level axis

RuleRequirementStatus
GRT-1Withdrawal of a grant-type object (Consent, Mandate) MUST be expressed as an appended event; the object MUST NOT be mutated in place (CDM §7.4).Normative in the specification. Exercised only by the endorsement checks above, which are not in force — so it is modelled and specified, not yet certified.

Stating this plainly is the point. A MUST that no suite exercises is a MUST no certification establishes, and the distance between the two is exactly what §5 records.


3. Certification neutrality rules (CN)

These rules are the operational expression of the governance firewall in the IP & Licensing Policy. They bind Concert as the certifier.

  • CN-1 — Machine-runnable. Conformance is determined solely by the machine-runnable suite. No subjective assessment, interview, or discretionary judgement contributes to a pass/fail. If the suite cannot decide a requirement, that requirement is not part of certification.
  • CN-2 — Identical suite. Every implementer is assessed against the byte-for- byte identical suite at a given version. There is no bespoke, relaxed, or extended suite for any party.
  • CN-3 — No preferential path. No implementer — including Score Networks — receives early access to the suite, pre-graded fixtures, a privileged certification route, or any advantage in the process. The suite is public.
  • CN-4 — Reproducible & publishable. A conformance result is reproducible by any third party from the published suite and the implementation's adapter, and the result report is publishable. Certification records which suite version and which CDM version were used.

A certification that cannot cite a passing, reproducible suite report under these rules is invalid.


4. Versioning

The suite is versioned with the CDM. A certification is always qualified by both versions, e.g. "SIGNET Full — CDM v0.1, suite v0.1". A new CDM major version requires re-certification; minor/patch suite updates that only add or clarify tests do not invalidate existing certifications but may be required at renewal.

The canonical form of a mark, and what may be abbreviated where, is fixed by the mark grammar.


5. What certification establishes — and what it does not

Three statements are routinely run together, always in the direction that overstates. They are different claims:

  • Modelled — the CDM represents it. Says nothing about whether any implementation does it.
  • Tested — the public suite exercises it against the implementation's own behaviour.
  • Certified — a passing, reproducible report is on the registry against a named CDM and suite version.

CN-1 says conformance is decided solely by the machine-runnable suite. It does not say that every MUST in the specification is decided that way. The suite decides the requirements listed in §2, and those only.

Two governance properties are currently modelled but not tested, and therefore not certified:

PropertyModelledTestedNote
Consent terms have consequence — access is gated by a live grant, revocation takes effect, Document.accessGrant is honouredYes (CDM §7.3, §7.4)NoConsent is validated structurally by C-DOC and nothing more. Addressed by E-CNS.
Mandate limits are respected — not merely citedYes (CDM §6.3–6.5)NoF-SEM requires a Decision to cite policiesApplied; nothing requires the limits in those policies to have been applied. Addressed by E-MDT.

A reader treating a Full certification as evidence that human oversight was enforced would be relying on something this suite does not establish. Concert's own reference implementation demonstrates the mandate gate, and CI runs that demonstration on every commit — but a demonstration binds only the code demonstrated, not every certified implementation.

Nothing above is a defect in what the suite reports. It is a limit on what the report may be read to mean, and it is stated here so that no positioning copy has to be trusted to state it.

Endorsements — proposed, not in force

A second axis, and what it does not certify

Endorsements certify properties that do not belong on the Core/Full axis because they are not universally applicable. Neither entry below is in force: their checks run today, but they decide no level, appear in no conformance report, and license no mark until the corresponding proposal carries and its register entry moves to active.

Register version: v0.1 Class: Normative. Closed and append-only. Status: Established under the interim-committee bootstrap clause. Both entries are proposed; no endorsement is earnable and none may appear in a mark until its entry is active. Steward: Concert Foundation Licence: CC0-1.0 Governs: the endorsement-list production in mark grammar §4.

An endorsement certifies a property that is worth certifying but does not belong on the Core/Full level axis, because it is not universally applicable. Endorsements are additive: they change neither Core nor Full, nobody is blocked from certifying without one, and an unearned endorsement is inert. See conformance/levels.md §2.4.


1. Register mechanics

Closed. An endorsement exists only if it appears below. An implementation may not coin one, and a profile may not add one.

Append-only. Entries are added, never removed or renamed. Withdrawing an endorsement means marking its entry withdrawn and stating the date; marks already issued keep naming it, and the register keeps explaining what it meant.

Admission is a Standards Committee act, at a suite minor-version boundary only. Every admission records the three-part test (§2) against the entry, which makes admission auditable rather than discretionary.

Ordering is register order, not alphabetical. The endorsement-list in a mark string MUST follow the order below. Register order keeps a given set of endorsements rendering identically as the register grows.

Registry entries record the register version in force at issuance. The register is append-only, so without this every certification issued before a later admission would appear deficient against a register that grew after the fact. That unfairness is created automatically by append-only design unless entries are dated against it.

2. The three-part test (normative)

An endorsement may enter this register only where the property is:

  • (a) genuinely orthogonal to the Core/Full level axis — it is not a stronger version of a level requirement, and adding it to a level would be wrong rather than merely aggressive;
  • (b) not universally applicable — some conformant implementations have no occasion to exhibit it, so requiring it at a level would fail them for an irrelevance; and
  • (c) machine-testable under CN-1 — a public, reproducible check decides it, with no discretionary judgement.

A property failing (a) belongs in a level. A property failing (b) belongs in a level. A property failing (c) belongs nowhere in certification, and should be said out loud as a scope limit instead.

3. Entries

E1 — Mandate Enforcement

FieldValue
Mark stringMandate Enforcement
Requirement IDE-MDT
ChecksE-MDT-1E-MDT-7
Admitted atsuite v0.2 (proposed)
Statusproposed — pending ballot of CP-Mandate-enforcement
Adapteragent adapter — conformance/adapter/endorsement-adapters.md
Tested byconformance/rules/check-endorsements.js

Three-part test. (a) Orthogonal — Core and Full concern document structure, event integrity, provenance, mapping fidelity, and the form of policies and decisions; whether an agent's action was refused when it exceeded its mandate is a behavioural property of a different kind. (b) Not universally applicable — an implementation that runs no synthetic agents has no mandates to enforce. (c) Machine-testable — the harness supplies the Mandate and the Policy objects, so it knows the expected outcome of each scenario, and the Policy carries an executable expression an assessor can re-evaluate independently.

What it establishes. That the boundary sits where the mandate says it does: an action beyond an approvalThresholds policy does not complete on the agent's own authority; actions within all thresholds proceed without demanding approval; capability, scope, and effectiveness limits refuse; a constraints policy is a hard limit that humanApproval cannot cure; and every refusal is evented, so refused and never attempted are distinguishable in the record.

What it does not establish. That the implementation's mandates are well drafted, that its policies express the organisation's actual delegation of authority, or anything about actions taken outside the SIGNET record.

It also establishes nothing about human oversight having occurred — only that autonomous completion did not. A conformance run is unattended, so the suite never observes an approval and does not test what happens after one: real flows resume, and that resumption is out of scope. Nothing here speaks to the identity, authority, or existence of any approver; identity-proofing is outside the standard. An implementation MUST NOT represent this endorsement as evidence that a human reviewed anything.

E2 — Consent Enforcement

FieldValue
Mark stringConsent Enforcement
Requirement IDE-CNS
ChecksE-CNS-1E-CNS-5
Admitted atsuite v0.2 (proposed)
Statusproposed — pending ballot of CP-Consent-revocation
Adapterconsent adapter — conformance/adapter/endorsement-adapters.md
Tested byconformance/rules/check-endorsements.js

Three-part test. (a) Orthogonal — C-DOC validates a Consent structurally and says nothing about whether the grant has any consequence. (b) Not universally applicable — an implementation may hold no access-controlled documents at all. (c) Machine-testable — the harness supplies the grant, the event stream, and the evaluation time, so effectiveness is deterministic and reproducible under CN-4.

Scope limit (normative for this entry). E-CNS certifies the interoperability of the grant — its representation, its projection from the event stream, and the temporal and party evaluation the model defines. It does not certify runtime access enforcement: whether a production system physically refuses a read is a security-posture property assessed under ISO 27001 and SOC 2 regimes. Concert does not claim to certify it, and no positioning copy may imply otherwise. This limit is why the endorsement is named Consent Enforcement and not Data Sovereignty: a badge reading Data Sovereignty would assert precisely the thing the proposal declines to assert.

What it does establish, stated positively so the limit does not read as a bare deficiency: grant terms are represented interoperably; the implementation's own authorisation decisions honour those terms as the model defines them; revocable acquires its first enforced consequence; and because the effective/not-effective determination is reproducible from the published event stream, a third party can verify after the fact whether access decisions were consistent with the grants then in force.

4. Why two entries and not one

A single "governance" badge covering both properties was considered and rejected. The decisive argument is not accuracy but that a merged badge has no coherent earning rule: the two properties are independently applicable — an implementation may run agents but hold no access-controlled documents, or the reverse. A conjunction rule would make the badge unearnable for most implementations; a disjunction rule would award it on the strength of the half not done.

5. Change log

Register versionChange
v0.1Register established. E1 Mandate Enforcement and E2 Consent Enforcement entered as proposed.

Rendered verbatim from governance/endorsement-register.md at v0.17.1.

The governance firewall, operationalised

How certification stays neutral

Four neutrality rules bind Concert as the certifier. They are the operational face of the governance firewall: no implementer — including Score Networks — gets a bespoke suite, a preferential path, or a private assessment.

CN-1

Machine-runnable

Conformance is determined solely by the machine-runnable suite. No subjective assessment, interview, or discretionary judgement contributes to a pass/fail. If the suite cannot decide a requirement, that requirement is not part of certification.

CN-2

Identical suite

Every implementer is assessed against the byte-for- byte identical suite at a given version. There is no bespoke, relaxed, or extended suite for any party.

CN-3

No preferential path

No implementer — including Score Networks — receives early access to the suite, pre-graded fixtures, a privileged certification route, or any advantage in the process. The suite is public.

CN-4

Reproducible & publishable

A conformance result is reproducible by any third party from the published suite and the implementation's adapter, and the result report is publishable. Certification records which suite version and which CDM version were used.

Reproducible proof

The suite discriminates

The same harness run against two adapters. The reference implementation reaches Full; a deliberately broken implementation reaches none — failing exactly at event-chain integrity (C-EVT) and mapping fidelity (F-MAP). Anyone can reproduce this from the published suite.

Reference implementation
reference-adapter.js
Level achievedFull
C-DOCCore · CDM 13.1
pass
C-EVTCore · CDM 1.7,7.1
pass
C-PROVCore · CDM 6.4,7.2
pass
F-MAPFull · CDM 8,13.2(b)
pass
F-SEMFull · CDM 6.3-6.5
pass
Broken implementation
broken-adapter.js
Level achievednone
C-DOCCore · CDM 13.1
pass
C-EVTCore · CDM 1.7,7.1
fail
C-PROVCore · CDM 6.4,7.2
pass
F-MAPFull · CDM 8,13.2(b)
fail
F-SEMFull · CDM 6.3-6.5
pass

The process

Self-test, submit, reproduce, issue

Generated from conformance/certification.md — identical for every implementer.

Steward: Concert Foundation · Tier: Process · Licence: CC0-1.0

Certification turns a passing conformance result into the right to use the "SIGNET Certified" mark. This document describes the process. It is governed by the neutrality rules (CN-1…CN-4) in levels.md and the Concert IP & Licensing Policy. The process is identical for every implementer, including Score Networks.


1. What certification asserts

SIGNET Certified: Core or SIGNET Certified: Full asserts that, against a stated CDM version and suite version, the implementation produced a passing conformance report at that level from the public, machine-runnable suite. It asserts nothing more: it is not a security audit, or a guarantee of fitness.

Nor does it assert that every MUST in the specification was met — only the requirements in levels.md §2, which the suite decides. Two governance properties are modelled but untested at any level, and levels.md §5 says which and why. A Full certification is not evidence that human oversight was enforced.

2. The process

  1. Self-test. The implementer writes a conformance adapter for their system (see adapter/adapter-contract.md) and runs the public suite:
    node conformance/runner/run-conformance.js --adapter <their-adapter>
    
    This produces a report conforming to report-schema.json.
  2. Submit. The implementer sends Concert the report, the adapter source, and the suite + CDM versions used. Because the suite is public and the result is reproducible (CN-4), no private assessment is needed.
  3. Reproduce. Concert re-runs the identical suite against the submitted adapter and confirms the report. The check is mechanical (CN-1).
  4. Issue. On a confirmed pass, Concert records the certification (implementer, level, CDM version, suite version, date, report hash) in the public registry — certification-register.md — and licenses the "SIGNET Certified" mark for that level and version.
  5. Publish. The report is publishable; the registry entry is public.

There is no committee judgement, interview, or discretionary gate at any step.

The register is empty. No certification has been issued to anyone, including Score Networks, so no mark is licensed and no short form resolves today. It is empty as a statement of fact, not as a placeholder: this document specified a public registry from the moment it was written, and for as long as no artifact existed a mark string had nothing to resolve to (governance/defects.md D-44).

3. Marks and their use

The form of every mark Concert issues is fixed by the mark grammar, which is normative for licensees. In outline:

  • The canonical implementation mark is SIGNET Certified: <Core|Full>[; <endorsements>] (CDM vX.Y, suite vX.Y) — for example SIGNET Certified: Full (CDM v0.1, suite v0.1). Mark strings are ASCII, and the punctuation is fixed so the form can be linted in CI (npm run lint:marks).
  • The registry record is the source of truth; the string is a projection. No mark string is authored by hand. The registry is certification-register.md.
  • Short forms resolve or they are not licensed. SIGNET Certified: Full is permitted only alongside a resolvable link to the registry entry; the bare badge only as a hyperlink. Print, slides, and spoken claims require the canonical form — the qualification is the claim.
  • An endorsement MUST NOT appear without a level.
  • The mark licence is granted under the IP & Licensing Policy, on identical terms to all implementers, and is conditional on a current passing report.
  • Misuse — claiming a level not achieved, or omitting the version qualification in a way that misleads — is grounds for withdrawal of the mark licence, under the complaint-driven escalation in mark grammar R5.

Anyone may say they implement SIGNET. The artifacts are CC0, so "Implements SIGNET CDM v0.1" and "Self-assessed against the SIGNET conformance suite v0.1 — Core" need no permission. What requires a licence is the assertion that Concert assessed you. The qualifier self-assessed is mandatory in that construction.

3.1 Registry entries

The registry is certification-register.md: closed, append-only, and currently empty.

A registry entry records the implementer, the level, the CDM and suite versions, the date, the report hash, any endorsements held — and the endorsement register version in force at issuance. The endorsement register is append-only, so without that last field every certification issued before a later admission would appear deficient against a register that grew after the fact.

Failed attempts are not published. An implementation that tries, fails, fixes, and retries is behaviour worth encouraging.

4. Renewal and versioning

  • A certification is valid for its stated CDM + suite versions.
  • A new CDM major version requires re-certification.
  • A suite minor/patch update (added or clarified tests) does not invalidate an existing certification immediately, but the current suite applies at renewal.
  • Concert publishes the current versions and a deprecation window for superseded ones.
  • A mark for a superseded CDM major version is not false, but it is misleading in any form that hides the version — so it survives in canonical form only, and the short and minimal forms are withdrawn (mark grammar §9).

5. Fees and neutrality

Certification may carry a fee that funds Concert's neutral stewardship. The fee is published, identical for all implementers at a given level, and unrelated to the outcome (you pay to be assessed, not to pass). No implementer — including Score Networks — receives a discount, a fast track, or any other preference (CN-3). Fees are the Foundation's primary sustaining revenue, by design, so that the standard itself can remain free.

6. Disputes

Because conformance is mechanical and reproducible, a dispute is resolved by re-running the public suite. If an implementer believes a test is wrong (rather than their implementation), they raise it through the normal standard change-control process; the suite is corrected for everyone or not at all (CN-2).

Concert

Adopt SIGNET

Adoption is free, public, and takes one pull request. It is a statement of practice, not certification.

How to declare