-
Notifications
You must be signed in to change notification settings - Fork 0
Validation and Conformance
SIGNET ships its normative model as JSON Schema (Draft-07) and enforces it in CI, so documents and examples can never silently drift from the standard.
npm install # ajv@8 + ajv-formats@3 (devDependencies)
npm run validate # validates every example in examples/ against the schemasnpm run validate runs node validate.js, which compiles the schemas with Ajv 8 (plus
ajv-formats for date-time, uri, etc.) and validates each instance in examples/.
To also prove the e-invoicing projection (requires Node and Python 3):
npm run transform # node tools/signet-to-ubl.js > examples/invoice.ubl.xml
npm run verify-ubl # python3 tools/verify-ubl.py.github/workflows/validate.yml runs on every push to main/dev and every PR to main.
It performs four checks — a PR cannot merge while any fail:
-
Schema validation.
node validate.jsvalidates every example against the schemas. -
Codelist lint. Every
codelists/*.csvmust start with the headerCode,Title,Description. -
JSON well-formedness. Every file in
schema/*.json,examples/*.json, andschema/context.jsonldmust parse. -
Invoice projection + verification. Projects
examples/invoice.jsonto Peppol BIS Billing UBL and runstools/verify-ubl.pyto reconcile every EN 16931 Business Term and the monetary totals.
A separate workflow, .github/workflows/pages.yml, renders docs/specification.md to HTML
and publishes it to GitHub Pages (it runs tools/build-pages.js with marked).
- Draft-07 is targeted for maximum implementer-tooling compatibility. A migration to JSON Schema 2020-12 will be considered before v1.0.
- Foundation blocks live in
schema/definitions.schema.jsonand are referenced via$reffrom the per-object schemas. -
EN 16931 BT annotations on
$reffields are preserved by wrapping the reference inallOf, because Draft-07 ignores keywords sitting beside a bare$ref. This keeps the BT/BG traceability structurally intact — see Foundation Layer → InvoiceLine. - Most objects set
additionalProperties: false, so unknown fields are rejected rather than silently ignored.
A document conforms to the CDM if it validates against the published SIGNET JSON Schema for its declared version and satisfies the structural rules in the specification.
That is exactly what npm run validate checks for the shipped examples.
An implementation conforms if it:
- reads and writes conforming documents;
- performs the normative standards mappings without loss of mapped fields; and
- preserves provenance and event integrity for every material change it makes.
Conformance is verified against the SIGNET conformance test suite (a separate normative artifact, Apache-2.0 licensed) and its synthetic test datasets (CDLA-Permissive). Certification of conformance, and the "SIGNET Certified" mark, are administered by Concert under the IP & Licensing Policy on identical terms to all implementers.
When sources disagree, this is the order of authority:
- The JSON Schema (
schema/) — the source of truth. - The prose specification (
docs/specification.md). - This wiki.
- Worked Examples — the instances CI validates.
- Repository Structure — where everything lives.
- Governance & Versioning — how the normative artifacts change.
SIGNET Standard — stewarded by Concert Foundation · Licensed CC0 1.0 · The JSON Schema is the source of truth. · Comments: hello@concert.foundation
Concepts
The Data Model
Interoperability
Using SIGNET
Extensions & demonstrations
- Extension & profile specs
- Agent demo — governed award
- Onboarding demo — conditional qualification
- Auction demo — deterministic close
Project