-
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.pyTo run the conformance harness (new in v0.4.0 — see Conformance Harness):
npm run conformance # reference adapter must reach Core+ (exits 0)
npm run conformance:broken # the broken adapter must be rejected (exits 1)To run the three demonstrations (each ends with a conformance-clean check; see Agent Layer and Extensions):
npm run agent # an agent awards a contract under a Mandate (governed, conformance-clean)
npm run onboarding # a supplier onboarding case reaches a conditional qualification
npm run auction # a reverse auction closes deterministically to a single winnerTo run the extension conformance rules (cross-object checkers beyond schema validation):
npm run conformance:commodity-risk # reconciliation arithmetic, scenario integrity, rule ordering
npm run conformance:extensions # onboarding, auction, and identity cross-object rules.github/workflows/validate.yml runs on every push to main/dev and every PR to main.
It performs eleven 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. - Conformance — reference implementation. Runs the harness; the bundled reference adapter must reach Core+.
- Conformance — broken implementation. The deliberately broken adapter must be rejected (the step inverts its exit code), proving the suite discriminates.
-
Agent demonstration. Runs
node agent/run-agent.js; the agent's governed action must be conformance-clean — every Decision, Evaluation, and Award validates, the event chain holds, and tampering is detected. -
Supplier-onboarding demonstration. Runs
node onboarding/run-onboarding.js; an onboarding case reaches a conditional qualification, conformance-clean. -
Reverse-auction demonstration. Runs
node auction/run-auction.js; the auction closes deterministically to a single winner, conformance-clean. -
Commodity-risk conformance rules. Runs
node conformance/rules/check-commodity-risk.js— the six commodity-risk extension rules, including the cross-object reconciliation, scenario-integrity, and rule-ordering checks. -
Extension conformance rules. Runs
npm run conformance:extensions— the cross-object checkers for the onboarding, auction, and identity extensions.
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.
Since v0.4.0 this is verified by the machine-runnable conformance harness shipped in
conformance/ (Apache-2.0 licensed). It defines two levels — Core (C-DOC, C-EVT,
C-PROV) and Full (Core + F-MAP, F-SEM) — runs them against any implementation through a
small adapter, and emits a reproducible report. Certification of conformance, and the
"SIGNET Certified" mark, are administered by Concert under the IP & Licensing Policy on
identical terms to all implementers (neutrality rules CN-1…CN-4).
See the dedicated Conformance Harness page for the levels, the requirements, the adapter contract, and the certification process.
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.
- Conformance Harness — levels, requirements, and certification.
- 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