# 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.@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.