-
Notifications
You must be signed in to change notification settings - Fork 0
Conformance and CI
Identifold is specification-first. The language-neutral JSON vectors under vectors/ are the executable compatibility contract.
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.
pnpm install --frozen-lockfile
pnpm verifyRun the conformance runner directly:
python conformance/runner.py --adapter <adapter-command> --vectors vectors --jsonSee the conformance guide for the adapter protocol and manifest.
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.
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.
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.