07. Algorithm Registry

This chapter defines the canonical algorithm identifiers used across CMN.

1. Purpose

CMN uses text algorithm identifiers in hashes, signatures, keys, and tree configuration. A shared registry ensures:

2. Registry Entries

2.1 Value Prefix Algorithms (algorithm.value)

These identifiers appear as prefixes in values such as b3.<base58> and ed25519.<base58>.

KindIdentifierMeaningStatus
Hashb3BLAKE3 32-byte digest, Base58-encodedActive
Keyed25519Ed25519 public key, Base58-encodedActive
Signatureed25519Ed25519 signature, Base58-encodedActive

2.2 Tree Algorithms (capsule.core.tree.algorithm)

IdentifierMeaningStatus
blob_tree_blake3_nfcGit-like blob/tree construction + BLAKE3 hashing + NFC filename normalizationActive

3. Processing Rules

Implementations MUST reject values with unknown algorithm.value prefixes when verification is required.

Implementations MUST fail content verification when tree.algorithm is unknown.

Implementations SHOULD return explicit machine-readable errors for unknown algorithms (for example, unsupported_algorithm).

4. Registry Evolution

Adding a new optional algorithm identifier is non-breaking when existing identifiers remain supported.

Removing support for an active identifier is a breaking change.

New identifiers SHOULD be documented here before production use.