# Changelog

## 1.0.0 — 2026-08-09

- Published the stable v1 package with the reviewed schemas, signed record
  format, verification APIs, CLI tools, conformance fixtures, and release
  artifacts.

- Completed the AI-assisted adversarial review against a hash-verified beta
  snapshot and recorded every finding and disposition.
- Rejected small-order Ed25519 issuer keys that permit universal signatures.
- Bound cancellation, supersession, replacement, and issuance metadata to the
  original signed issuance relationship.
- Required retained checkpoints to match the exact observed registry prefix.
- Removed unsafe automatic stale-lock takeover from the reference file store.
- Made archive, checkpoint, and restore failures close safely for malformed
  nested records and every JSON string ID.
- Removed the public conformance signing seed from the npm tarball.
- Pinned every CI and release action to its verified immutable commit.
- Added 11 focused security regressions and strengthened package-content and
  reproducibility checks.
- Promoted the reviewed and remediated contract to the first release candidate
  without changing schemas, canonical bytes, signature inputs, or signed
  conformance fixtures.

## 1.0.0-beta.1 — development milestone

- Added a Node-only file registry with lock coordination, transaction batching,
  atomic archive replacement, and signed checkpoints.
- Passed 1,000 competing issuance requests without duplicate IDs or sequences.
- Added complete issuer archives with integrity verification and clean restore.
- Added `open-print-archive` verification and restore commands.
- Added explicit 0.1 and 1.0 compatibility verification without record
  conversion.
- Kept integrity-only legacy trust distinct from signed v1 trust.
- Separated optional public collector names from deletable private local
  labels.
- Added the mandatory v1 claims notice and assurance boundary to verification
  reports.
- Added a deterministic conformance-fixture generator.
- Added a standard-library Python verifier that independently reproduces every
  published v1 digest and signature.
- Limited schema integers to the exact portable range shared by JavaScript and
  other implementations.
- Added isolated reproducibility checks for every shipped file and the final
  package tarball.
- Added deterministic release manifests, SHA-256 checksums, and a normalized
  CycloneDX inventory of runtime dependencies.
- Added a signed-tag release workflow that creates GitHub provenance and SBOM
  attestations, then stops at a draft release for human review.
- Bound signature algorithm, key ID, creation time, and scope into every v1
  certificate, registry event, and checkpoint signature.
- Reject non-canonical base64url encodings and regenerated the signed
  conformance fixtures in both implementations.
- Restricted issuer records to an exact public Ed25519 JWK shape so private or
  ambiguous key material cannot enter public archives.
- Added deterministic adversarial tests for tampering, digest recomputation,
  hostile JSON shapes, and canonical encoding properties.
- Added a 64 MiB input boundary and strict UTF-8 decoding to verification CLIs.
- Added the threat model, vulnerability-reporting policy, and external security
  review brief.
- Added a production-dependency advisory gate to tagged release builds.
- Captured schemas, signed fixtures, package paths, declarations, command
  names, runtime exports, and the Node.js floor in a v1 compatibility baseline.
- Added an external TypeScript consumer check and a deliberate contract-change
  acknowledgement before the baseline can be replaced.
- Expanded CI to cover Node.js 20.10, 22, and 24.
- Added the compatibility policy and the evidence-based `1.0.0-rc.1`
  checklist.

## 1.0.0-alpha.4 — unreleased

- Added retired keys so routine rotation preserves historical signatures.
- Added explicit revocation timestamps and reasons for compromised keys.
- Reject duplicate key IDs and reversed key validity windows.
- Added signed registry checkpoints with rollback and fork detection.
- Added checkpoint and key-lifecycle conformance fixtures.
- Added `open-print-verify-checkpoint`.

## 1.0.0-alpha.3 — unreleased

- Validate certificates, issuer records, and registry events with the published
  JSON Schemas before verification.
- Report malformed fields with stable JSON Pointer paths.
- Reject missing, extra, malformed, and wrong-version data in every public v1
  record type.
- Added negative conformance fixtures and malformed-record CLI coverage.

## 1.0.0-alpha.2 — unreleased

- Added issuer signatures to issuance, cancellation, and replacement events.
- Added trusted and untrusted registry verification states.
- Required a valid certificate signature before reserving an edition sequence.
- Added a fixed signed registry fixture and CLI cancellation coverage.
- Added the production roadmap and release exit tests.

## 1.0.0-alpha.1 — unreleased

- Added signed v1 certificate envelopes with Ed25519 issuer signatures.
- Added issuer records with key status and validity periods.
- Replaced single boolean verification with an explainable report.
- Added chained issuance, cancellation, and supersession events.
- Added v1 JSON Schemas, fixed conformance fixtures, and
  `open-print-verify`.
- Kept the `0.1` API available for compatibility migrations.

## 0.1.0 — 2026-07-29

This is the first proof-of-concept release.

- Added artwork, edition, and certificate schemas.
- Added predictable JSON serialization and SHA-256 integrity helpers.
- Added certificate sealing and local verification.
- Added frozen certificate objects, stable fingerprints, and append-only
  issuance checks.
- Added collision checks for certificate IDs and edition sequence numbers.
- Added content-addressed artwork paths.
- Added the `open-print-publish` command for static releases.
