Skip to main content

Specification, shared test vectors, and the Python reference implementation for Meridian Enterprise Unique Identifiers (EUIDs).

Project description

meridian-euid

Python CI Tag Spec License: CC BY 4.0

Meridian defines a compact Enterprise Unique Identifier (EUID) format suitable for printed labels and barcodes.

For v0.4.0, Meridian is intentionally strict:

  • Canonical: one shape only, DOMAIN-PREFIX-BODYCHECKSUM
  • Lookup-first: the string identifies an object but does not explain it
  • Sequence-backed: BODY is a PostgreSQL BIGINT-bounded value
  • Governed: (DOMAIN, PREFIX) ownership is tracked in checked-in JSON registries
  • Python-first: Python is the only supported reference implementation in this repo

Quick Start

Python

cd reference-implementations/python
pip install -e ".[dev]"

# Validate a canonical EUID
meridian-euid validate A1-Z9-3V9

# Encode an integer as a canonical EUID
meridian-euid encode 123 Z9 --domain-code A1

# Parse an EUID into its structural components
meridian-euid parse MAX-MAX-7ZZZZZZZZZZZZB

# Compute the check character for DOMAIN + PREFIX + BODY
meridian-euid compute-check A1Z93V

Documentation

Document Description
SPEC.md Normative specification
meridian_clinical_lab_profile.md Minimal barcode and rendering profile for clinical lab use
checksum_elaboration.md Why Meridian keeps the checksum inside the same safe alphabet
domain_code_registry.json Checked-in manual registry of valid domain codes
prefix_ownership_registry.json Checked-in manual registry of (domain, prefix) ownership
test-vectors/README.md Shared machine-readable vectors and contract notes
reference-implementations/python/README.md Python reference implementation and CLI

Repository Structure

meridian-euid/
├── SPEC.md
├── CHANGELOG.md
├── domain_code_registry.json
├── prefix_ownership_registry.json
├── meridian_clinical_lab_profile.md
├── checksum_elaboration.md
├── test-vectors/
│   ├── README.md
│   └── v3.json
└── reference-implementations/
    └── python/

EUID Format

Canonical format:

DOMAIN-PREFIX-BODYCHECKSUM

Example:

A1-Z9-3V9

Rules:

  • DOMAIN: 1-4 uppercase Crockford Base32 characters from 0123456789ABCDEFGHJKMNPQRSTVWXYZ
  • PREFIX: 1-4 uppercase Crockford Base32 characters from the same alphabet
  • BODY: Crockford Base32 encoding of an integer in 1..9223372036854775807, with no leading 0
  • CHECKSUM: 1 Crockford Base32 character
  • Forbidden everywhere: I, L, O, U
  • Lowercase input MUST be rejected
  • Checksum payload is DOMAIN + PREFIX + BODY; hyphens are syntax only

Governance

The repo carries a lightweight manual governance model:

  • domain_code_registry.json declares valid domains.
  • prefix_ownership_registry.json maps each (DOMAIN, PREFIX) pair to exactly one issuer_app_code.

issuer_app_code is a lowercase ASCII governance token matching:

^[a-z0-9]+(?:[._-][a-z0-9]+)*$

Claims are explicit JSON objects, for example:

{
  "Z9": {
    "issuer_app_code": "meridian.lims"
  }
}

Canonical validation does not require a governance lookup. Issuance and resolver routing typically do.

Breaking Note

v0.4.0 removes the older split shapes and compatibility surfaces:

  • no absent-domain form
  • no : separator
  • no sandbox/production mode split
  • no legacy aliases
  • no supported TypeScript reference implementation

Contributing

Before proposing changes:

  1. Run the Python test suite under reference-implementations/python.
  2. Keep the registries human-auditable.
  3. Update the shared vectors and docs in the same change when syntax or governance expectations move.
  4. Treat syntax, alphabet, checksum, and integer-range changes as major-version work.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

meridian_euid_spec-0.4.2.tar.gz (27.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

meridian_euid_spec-0.4.2-py3-none-any.whl (3.7 kB view details)

Uploaded Python 3

File details

Details for the file meridian_euid_spec-0.4.2.tar.gz.

File metadata

  • Download URL: meridian_euid_spec-0.4.2.tar.gz
  • Upload date:
  • Size: 27.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for meridian_euid_spec-0.4.2.tar.gz
Algorithm Hash digest
SHA256 af573fd0b7c38b44227b53978095231a6e20274008d3b168895e499ed0501055
MD5 d68a851ab02c8778fbf01446fda7b83d
BLAKE2b-256 75f87c20fbe23d05a86084b39256b6ebf6250eda79aba049aad82b5f571d4146

See more details on using hashes here.

File details

Details for the file meridian_euid_spec-0.4.2-py3-none-any.whl.

File metadata

File hashes

Hashes for meridian_euid_spec-0.4.2-py3-none-any.whl
Algorithm Hash digest
SHA256 06e6d74a3ee0d0ff0769d5e73effb119bc904ceee4af2e2d749529342ad8c6bc
MD5 7a3e6c73cc981b58949acf0328917b35
BLAKE2b-256 0189591ca4d0cc73bf06f4dfd90232e524618730ae0911ccda264b2e61aa900d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page