amduat/registry/hash-asl1.schema.md

53 lines
1.8 KiB
Markdown
Raw Permalink Normal View History

# HASH/ASL1 Registry Manifest (draft)
This file documents the JSONL rows in `registry/hash-asl1.jsonl`. Each line is
one entry descriptor for a single `HashId` assignment. The key is the `HashId`
itself (a concept); the descriptor is data.
## Field definitions
- `registry`: string. Constant `"HASH/ASL1"`.
- `hash_id`: string. Hex `u16` formatted as `0x0000`.
- `handle`: string. Stable concept handle for this HashId assignment, e.g.
`amduat.hash.asl1.id.0001@1`.
- `name`: string or null. Algorithm name if assigned (e.g. `HASH-ASL1-256`).
- `digest_len`: integer or null. Digest length in bytes; null if unknown.
- `status`: string. One of: `mandatory`, `reserved`, `deprecated`, `experimental`.
- `spec_ref`: string. Document/version that defines the assignment.
- `notes`: string. Short human-readable note.
- `descriptor_sha256`: string. Lowercase hex SHA-256 digest of the canonical
descriptor (see below).
## Canonical registry key
`hash_id` is the registry key. Its key bytes are the big-endian `u16` encoding
defined in `ENC/ASL1-CORE` (see `amduat_hash_asl1_key`).
## Handle naming scheme
Handles are opaque identifiers in the `amduat` namespace:
```
amduat.hash.asl1.id.<hex4>@1
```
`hex4` is the 4-digit lowercase hex of the `HashId` (zero-padded).
## Descriptor digest rule
`descriptor_sha256` is computed as SHA-256 over the UTF-8 bytes of the
canonical JSON object with these fields **in order**:
```
registry, hash_id, handle, name, digest_len, status, spec_ref, notes
```
The canonical JSON uses no extra whitespace and does **not** include the
`descriptor_sha256` field itself.
## Intended use
- Source of truth for codegen (C tables, enums) and documentation tables.
- `descriptor_sha256` can be treated as the stable digest for mapping entries
into graph references or evidence tables.