Specification, shared test vectors, and reference implementations for Meridian Enterprise Unique Identifiers (EUIDs).
Project description
meridian-euid
Meridian defines a compact Enterprise Unique Identifier (EUID) format suitable for printed labels and barcodes. The format is designed to be:
- Opaque — no embedded metadata or semantics
- Immutable — never reused or reassigned
- Robust — checksum detects transcription and scanning errors
- Environment-aware — strict separation between production and sandbox namespaces
Quick Start
Python
cd reference-implementations/python
pip install -e .
# Validate a production EUID
meridian-euid validate TX-1C --env production
# Output: VALID: TX-1C
# Encode an integer as a production EUID
meridian-euid encode 12345 DNA
# Output: DNA-C1SJ
# Parse an EUID into components
meridian-euid parse TX-1C
# Output: {"sandbox": null, "category": "TX", "body": "1", "checksum": "C", "integer": 1}
# Compute check character for a checksum payload
meridian-euid compute-check TX1
# Output: C
TypeScript
cd reference-implementations/typescript
npm install && npm run build
# See reference-implementations/typescript/README.md for API examples
Documentation
| Document | Description |
|---|---|
| SPEC.md | Normative specification — defines syntax, validation, and checksum algorithm |
| CHANGELOG.md | Version history and release notes |
| test-vectors/ | Machine-readable test cases (README) |
| Python README | Python implementation with CLI |
| TypeScript README | TypeScript/Node.js implementation |
Repository Structure
meridian-euid/
├── SPEC.md # Normative specification
├── CHANGELOG.md # Version history
├── LICENSE-SPEC # CC BY 4.0 for specification
├── test-vectors/
│ ├── README.md
│ └── v2.json # Shared test vectors
├── reference-implementations/
│ ├── python/ # Python package with CLI
│ │ ├── meridian_euid/
│ │ ├── tests/
│ │ └── README.md
│ └── typescript/ # TypeScript/Node.js library
│ ├── src/
│ ├── test/
│ └── README.md
└── docs/ # Additional documentation
EUID Format
| Type | Format | Example |
|---|---|---|
| Production | <CATEGORY>-<BODY><CHECKSUM> |
TX-1C, DNA-C1SJ |
| Sandbox | <SANDBOX>:<CATEGORY>-<BODY><CHECKSUM> |
X:TAP-3VX, H:DNA-E8E |
- SANDBOX: optional single letter — 15 available:
H,J,K,M,N,P,Q,R,S,T,V,W,X,Y,Z(A–G reserved) - CATEGORY: 2–3 uppercase letters, Crockford alphabet (no I/L/O/U)
- BODY: Crockford Base32-encoded integer (no leading zeros; MUST NOT start with
0) - CHECKSUM: 1 Crockford Base32 character via Luhn-style MOD 32 (SPEC.md §7.5)
- Uppercase only: lowercase input MUST be rejected (no normalization)
See SPEC.md for complete syntax and validation rules.
License
- Specification (SPEC.md, test-vectors/): CC BY 4.0
- Reference implementations: See individual implementation directories
Contributing
Contributions are welcome. Please:
- Open an issue to discuss proposed changes
- Follow existing code style and conventions
- Ensure all tests pass before submitting a PR
- Update documentation as needed
For specification changes, note that any modification to regexes, checksum algorithm, or environment rules requires a major version bump per SPEC.md §14.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file meridian_euid_spec-0.2.4.tar.gz.
File metadata
- Download URL: meridian_euid_spec-0.2.4.tar.gz
- Upload date:
- Size: 34.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7417f7f6bd87afc1fc975c769a1ddd111636ad73c268eb348845bb9a3fd1ec23
|
|
| MD5 |
a378e28ef1ba55e61a8f084b691e8d31
|
|
| BLAKE2b-256 |
26bd9138df7312fec765438784a96290b5c9cd7c57cdb6e09ef2306701cc65a3
|
File details
Details for the file meridian_euid_spec-0.2.4-py3-none-any.whl.
File metadata
- Download URL: meridian_euid_spec-0.2.4-py3-none-any.whl
- Upload date:
- Size: 3.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5378dead90b7754adca7262457a9ee4f39483892b9a99cec55209cb789cb7a9e
|
|
| MD5 |
a7c894bb711224dfa748c5d0b9873f86
|
|
| BLAKE2b-256 |
a243df0151a4f2129b807796c56aa9f4b9252d3721143a40bda04dcc84f223e5
|