---
title: "Standards and specifications"
description: "What NovaFabric implements, how to verify each claim yourself, and — kept deliberately prominent — what is not claimed."
canonical: https://novafabric.ai/docs/standards-conformance/
last_updated: 2026-10-23
source: https://github.com/MSKazemi/novafabric/blob/main/docs/standards-conformance.md
---

# Standards and specifications

What NovaFabric implements, how to verify each claim yourself, and — kept deliberately
prominent — **what is not claimed**.

This page exists because "supports EU AI Act" is not a checkable statement. A standards
engineer, an auditor, or a reviewer needs to know *which artefact*, *produced by which
command*, *against which version of which specification*, and *how mature that
implementation is*. Everything below is stated in those terms.

> **The distinction this whole page rests on.** NovaFabric produces **evidence** and
> **conformance receipts**. It does **not** issue verdicts, certificates, or attestations
> of compliance, and no software can. A receipt records that a stated check ran against
> stated inputs and what it observed. Deciding whether that satisfies an obligation is a
> judgement made by a qualified human — an auditor, a notified body, a regulator, a DPO.
>
> The codebase enforces this distinction rather than merely promising it; see
> [Assurance cases §4, "Conformance receipts — never verdicts"](https://novafabric.ai/docs/assurance-cases/).

**Maturity labels** are the project's standard ones and are not rounded up:
**works today** (in `main`, tests pass) · **experimental** (implemented, interface may
change) · **planned** · **future design**. See [Project status](https://github.com/MSKazemi/novafabric/wiki/Project-Status).

---

## 1. Evidence, signing, and provenance formats

These are the load-bearing ones: they define the artefact a third party verifies, and they
are the part of the system that must keep working offline in five years.

| Specification | Version / profile | What NovaFabric does | Verify it yourself | Maturity |
|---|---|---|---|---|
| **in-toto Attestation / DSSE** | DSSE envelope, ECDSA P-256 or Ed25519 | Signs Evidence Bundles, and seals capsules when sealing is configured (opt-in: `novaseal.yaml` + your key), as DSSE envelopes | `nova verify <capsule-dir>` · `nova verify-envelope <file>` | works today |
| **RFC 3161** | Time-Stamp Protocol | Adds a trusted timestamp to a seal when a `tsa_url` is configured (opt-in since v0.103.0); CRL caching so verification works air-gapped | `nova verify <capsule-dir>` | works today (opt-in) |
| **RFC 8785** | JSON Canonicalization Scheme | Canonicalization of the promotion proposal envelope, so `proposal_digest` is reproducible by any JCS implementation (other digests use sorted-key JSON, not JCS) | inspect `proposal_digest` in a `nova promote` approval attestation | works today |
| **JSON Schema** | draft 2020-12 | `schemas/run-capsule.schema.json` and siblings define every artefact the system emits | `nova validate <run-id>` — or validate the schema with any 2020-12 validator | works today |
| **Merkle inclusion proofs** | RFC 6962 / 9162 tree hash | NovaSeal Merkle log: RFC 6962 for logs created since ADR-0313 (root v2); legacy v1 roots duplicate the last odd node and verify only with their `tree_size` | `nova merkle-tree <tree.json>` renders the proof tree from a document of leaf hashes | works today |
| **SLSA** | provenance for released artefacts | Build provenance and signed release artefacts in the publish pipeline | release attestations on the GitHub release | works today |
| **CycloneDX** | 1.7, AI/ML profile | AI Bill of Materials built from the capsule's evidence files: one `machine-learning-model` component per distinct model in `model-calls.jsonl` with tokens summed per model, plus every tool in `tool-calls.jsonl` | `nova export-aibom <capsule-dir>` | experimental |
| **C2PA** | v2.3 content credentials | Provenance manifest for generated media, emitted as **unsigned** JSON (signing deferred) | `nova export-c2pa <capsule-dir>` | experimental |

**Why this section matters most.** An Evidence Bundle is designed to be verifiable with
`sha256sum` and an ed25519 verifier — **no NovaFabric installation required**. If you can
only check our evidence with our tool, it is not evidence. That constraint is what forced
the choices above toward boring, widely-implemented formats.

## 2. Telemetry and lineage interoperability

NovaFabric records against open conventions rather than a proprietary shape, so capsule
data can leave the system.

| Specification | Version / profile | What NovaFabric does | Verify it yourself | Maturity |
|---|---|---|---|---|
| **OpenTelemetry** | traces, GenAI semantic conventions | Model calls and spans are recorded against the GenAI semconv; `trace.jsonl` is OTel-shaped | inspect `model-calls.jsonl` / `trace.jsonl` in any capsule | works today |
| **OpenLineage** | run/job/dataset events | Emits lineage as OpenLineage events for ingestion by Marquez and others | `nova lineage emit-openlineage` | works today |
| **W3C PROV** | PROV-JSON and PROV-N | Exports a run's provenance — the run as a PROV `activity`, each evidence file as an `entity` `wasGeneratedBy` it, plus cross-capsule lineage edges | `nova lineage export-prov` · `--format prov-n` | works today |
| **W3C PROV** | PROV-O (RDF) | Maps capsule provenance to PROV-O for the semantic knowledge graph — a *different* surface from `export-prov` above | `nova kg build-provenance --format turtle` with the `novafabric[spkg]` extra | experimental |
| **SHACL** | shape validation | Validates provenance triples on ingest into the knowledge graph | `novafabric[spkg]` extra | experimental |
| **openCypher** | query | Fixed agent → model/tool queries over the embedded KùzuDB (openCypher) store (`nova kg query <agent-id>` — no user-written Cypher); Neo4j-ready Cypher export via `nova lineage export-graph --format cypher` | `nova kg query`, `nova lineage export-graph` | experimental |
| **Model Context Protocol** | MCP tool exchanges | Transparent MCP proxy records tool calls; a conformance suite runs in CI | `nova mcp conformance` · `.github/workflows/mcp-conformance.yml` | experimental |

## 3. Regulatory and management-system frameworks

**Read the caveat before the table.** Everything in this section produces a *document or
receipt derived from captured run facts*. It is an input to a compliance process, never an
output of one. NovaFabric cannot and does not determine whether you comply with any of
these instruments.

| Framework | What NovaFabric produces | Command | Maturity |
|---|---|---|---|
| **EU AI Act** | Annex IV technical-documentation export; risk-tier classification | `nova export-annex-iv` · `nova classify run` | experimental |
| **NIST AI RMF 1.0** | Risk report mapped from capsule facts | `nova export-nist-rmf` | experimental |
| **ISO/IEC 42001** | AI management-system evidence export; examiner package | `nova export-compliance iso42001` · `nova export-examiner iso42001` | experimental |
| **GDPR** | Art. 30 Records of Processing; Art. 17 crypto-shredding of PII captured with `nova capture --pii-subject` (ADR-0314; other capsules are not encrypted); DSAR assembly | `nova export-ropa` · `nova pii erase` · `nova dsar assemble` | experimental |
| **NIS2** | Incident report export | `nova export-nis2` | experimental |
| **HIPAA** | Safe Harbor de-identification proof | `nova export-hipaa-proof` | experimental |
| **OMB M-24-10** | Risk-tier vocabulary in classification | `nova classify list-vocabularies` | experimental |
| **SR 26-2 / SR 11-7** | Model-risk evidence file; validation-independence evidence read from the maker-checker record (records independence, never assesses the validation) | `nova export-model-risk` · `nova export-model-independence` | experimental |
| **SEC 17a-4 / MiFID II** | Retention-posture attestation over Evidence Bundles: retention policy, legal hold, WORM lock, per-bundle RFC 3161 timestamp, audit trail (attests posture, never compliance) | `nova export-retention` | experimental |
| **ECOA / Reg B (12 CFR 1002.9)** | Credit-decision specific-reasons evidence pack from a sealed capsule: model call digests, digest-bound inputs, recorded feature-attribution reasons in recorded order (`missing` when no attribution facet — always, today, since `feature_attribution` is not yet a registered run-capsule facet; not a notice, no credit decision, no legal verdict) | `nova export-adverse-action` | experimental |
| **SEC Rule 613 / CAT NMS Plan (event-lifecycle pattern only)** | Firm-owned, lifecycle-ordered agent-event trail from a sealed capsule (origination / decision / authorization / action / disposition, recorded actor identity refs and timestamps; missing required stage → `partial`). Modelled on the CAT event lifecycle — not a CAT submission, not in CAT technical-spec format, never connects to the CAT central repository | `nova export-cat` | experimental |

### Records-retention (WORM) conformance

A separate, installable behavioural test suite that verifies an **object-storage backend**
meets write-once-read-many requirements. It tests the storage, not your compliance.

Ten mandatory cases covering immutability, retention locks, legal holds, and lifecycle
exemptions, referenced against **SEC 17a-4**, **MiFID II**, **CFTC 1.31** and
**FINRA 4370**. Backends: S3, MinIO, Ceph RGW (S3-compatible) and Azure Blob.

```bash
pip install "git+https://github.com/MSKazemi/novafabric#subdirectory=packages/nova_worm_conformance"
nova-worm-test --backend s3 --endpoint https://s3.example.com \
  --bucket my-capsule-store --framework sec-17a-4 --output report.json
```

The package is `nova-worm-conformance`; its console script is `nova-worm-test`. The in-tree
`nova storage validate` is a much narrower pre-flight — it only checks that the bucket's Object
Lock default retention is `COMPLIANCE` (not `GOVERNANCE`, not absent) and does not run the
conformance cases. **Maturity: experimental.**

To attest the retention *posture* of a specific set of Evidence Bundles (not the backend),
`nova export-retention --bundle <zip> --registry <name>` renders the policy window, legal-hold
state, each run's WORM lock, the RFC 3161 timestamp each bundle actually carries, and the
audit-trail entries — each `complete` / `partial` / `missing` with a reason. **Maturity:
experimental.**

## 4. Identity and access (server mode only)

| Specification | What NovaFabric does | Maturity |
|---|---|---|
| **OIDC** | Token verification for the multi-user API | experimental |
| **SAML 2.0** | SSO assertion verification, XML-DSIG with XML-Signature-Wrapping resistance (`novafabric[saml]`) | experimental |
| **SCIM 2.0** | User/group provisioning events | experimental |

None of these are required for local mode, which has no accounts at all.

---

## What is explicitly **not** claimed

Stated plainly, because a standards page that only lists strengths is not useful to anyone
evaluating the project.

1. **No certification, of anything, by anyone.** NovaFabric is not certified, accredited,
   or endorsed under any framework listed here. Nothing on this page has been assessed by a
   notified body, an accredited certification body, or a regulator.

2. **Producing an Annex IV export is not EU AI Act compliance.** The export is a document
   assembled from what a run actually did. Whether your system is high-risk, whether the
   documentation is adequate, and whether your obligations are met are determinations for
   qualified people. The same applies to every row in §3.

3. **Conformance receipts are observations, not verdicts.** A receipt says "this check ran,
   against these inputs, and observed this". It does not say "you pass". This is a
   deliberate architectural constraint, not a disclaimer bolted on afterwards.

4. **No byte-exact replay of remote LLM calls.** `exact` mode requires a deterministic
   environment and a per-call seed — realistic for a local or on-prem model, not for a
   hosted endpoint that can change under you. For drifting remote models, `semantic` mode
   scores similarity of meaning on a 0.0–1.0 scale. Any claim of "deterministic replay" for
   hosted models should be read carefully, including ours.

5. **Capsule and Evidence Bundle formats are not frozen.** They change until the v1.0
   freeze — additively, with old capsules staying readable, but they move. If you are
   building a long-lived integration against the schema, that is the milestone to watch.

6. **Most of §3 is `experimental`.** Implemented and tested, interface may change. Do not
   build a submission pipeline on an experimental exporter without pinning a version.

7. **Standards coverage is not uniform.** Implementing a *format* (DSSE, CycloneDX) is a
   much stronger claim than mapping to a *framework* (ISO 42001). §1 is where the rigour
   is; §3 is best understood as structured evidence assembly.

---

## For standards bodies and working groups

If you maintain or contribute to any specification above, three things may be useful, and
all three are things we would rather hear about than guess at:

**1. Implementation feedback.** NovaFabric is a real implementation of DSSE + RFC 3161 +
in-toto in an AI-workload context, of the OTel GenAI conventions, and of OpenLineage. Where
a specification was ambiguous, under-specified for AI workloads, or expensive to implement
correctly, that is recorded in the [ADR ledger](https://novafabric.ai/docs/decisions/) — those are exactly the
findings an editor usually has to extract from implementers by hand.

**2. Conformance suites you can run.** `nova-worm-test` (package `nova-worm-conformance`, object-storage WORM) and
`nova mcp conformance` are executable, not prose. If your group wants an independent
implementation to test a draft against, these are available under Apache-2.0.

**3. Corrections.** If any row above misstates your specification — wrong version, wrong
clause, an overstated claim, a profile we do not actually meet — that is a **bug**, and one
we want reported. Open an issue with the `documentation` label, or start a
[Discussion](https://github.com/MSKazemi/novafabric/discussions). A correction from a
specification's own maintainers is the most valuable kind of contribution this page can
receive, and it will be credited in the release notes.

**Contact:** [open a Discussion](https://github.com/MSKazemi/novafabric/discussions) or see
[SUPPORT.md](https://github.com/MSKazemi/novafabric/blob/main/SUPPORT.md). For anything security-sensitive use the private reporting path
in [SECURITY.md](https://github.com/MSKazemi/novafabric/blob/main/SECURITY.md).

## See also

- [Assurance cases](https://novafabric.ai/docs/assurance-cases/) — the receipts-not-verdicts model in detail
- [Concepts](https://novafabric.ai/docs/concepts/) — what a capsule contains and why
- [Benchmarks](https://novafabric.ai/docs/benchmarks/) — measured overhead, every number with its command and hardware
- [Architecture decisions](https://novafabric.ai/docs/decisions/) — the reasoning ledger
- [Trust surfaces](https://novafabric.ai/docs/trust-surfaces/) — what is signed, by whom, and what that proves
- [Human-oversight evidence](https://novafabric.ai/docs/human-oversight/) — EU AI Act Art. 14 and Art. 86 facts as capsule evidence (experimental)
- [Frontier-safety evidence](https://novafabric.ai/docs/frontier-safety/) — runtime events behind frontier-safety framework commitments (experimental)
