Skip to content

Conformance and CI

AstorisTheBrave edited this page Aug 30, 2026 · 1 revision

Conformance and CI

Identifold is specification-first. The language-neutral JSON vectors under vectors/ are the executable compatibility contract.

What conformance means

An implementation is conformant only after it passes every required vector without changing:

  • canonical MID, PID, or REF values;
  • normalization rules;
  • accepted non-canonical input;
  • invalid-input classifications;
  • stable error codes; or
  • deterministic dependency-injected generation results.

Adapters communicate with the runner through JSON lines. They do not read expected answers from implementation source.

Run the core verification

pnpm install --frozen-lockfile
pnpm verify

Run the conformance runner directly:

python conformance/runner.py --adapter <adapter-command> --vectors vectors --json

See the conformance guide for the adapter protocol and manifest.

Protected main checks

The branch requires 17 strict, up-to-date hosted checks:

  • Node.js 22, 24, and 26;
  • JavaScript/TypeScript CodeQL;
  • PostgreSQL 18;
  • Python 3.12, 3.13, and 3.14;
  • Python CodeQL;
  • Go 1.26;
  • Rust stable;
  • Java 17;
  • .NET 9;
  • PHP 8.5;
  • Ruby 4.0;
  • Kotlin 2.4; and
  • Swift 6.3.

Force pushes and branch deletion are disabled, linear history is required, and each protected check must pass against the latest commit.

Production examples

Every supported language has an executable example. TypeScript and Python run in their dedicated workflows; Java, C#, Go, PHP, Kotlin, Rust, Ruby, and Swift run in the language matrix. This catches public API or packaging drift that low-level vectors alone might miss.

What a green build does not mean

A green CI build proves the checked commit passed its declared verification. Registry publication is a separate external state. Release documentation marks a distribution live only after its public registry responds with that version.

Clone this wiki locally