Concepts
Every table the registry stores, in the order you’ll encounter them.
The nav-pack registry has eight tables. Read them top-down — each depends on the ones above.
NavArea
A bounding box on Earth, scoped to one customer. Usually one-per- site, occasionally one-per-zone-of-a-large-site. The unique key is (owner_customer_id, name); an area can be resolved by polygon overlap.
{
"area_id": "<uuid>",
"owner_customer_id": "<uuid>",
"name": "depot_north_lot",
"bbox_min_lon": -97.74,
"bbox_min_lat": 30.26,
"bbox_max_lon": -97.73,
"bbox_max_lat": 30.27,
"visibility": "private",
"shared_with_customer_ids": []
}RobotProfile
The shape of pack a class of robot expects. Profile keys are strings (e.g. autoware_outdoor_v1). A profile pins:
pack_kind— the family (autoware,nav2, custom).required_layers+optional_layers.min_autonomy_tier— the lowest tier this profile will accept.allowed_crs— coordinate reference systems the robot understands.signature_required+block_on_stale— gate behavior.
NavPack
One row per (area_id, profile_key) pair. Owns 0+ NavPackVersions. Soft-deletable.
NavPackVersion
A single published cut. Each version has:
produced_at— wall-clock of the source capture.autonomy_tier+autonomy_status(active/blocked).supersedes— the version this replaces, building a chain.
The registry serves the newest active version for each (area, profile). Operators can flip autonomy_status to blocked to pause a regression without rolling back.
NavPackLayer
Typed asset inside a version. Required examples: manifest, map, lanelet, semantic, signature. Each row carries:
layer_kind+role(requiredoroptional).sha256— content hash of the bytes.artifact_id— opaque S3 key (or external ref).byte_uri+byte_uri_expires_at— server-generated short-lived presign URL the robot fetches.
NavPackSignature
Cryptographic proof attached to a version. One row per signing key (you can publish a version signed by multiple keys for key- rotation transitions). Holds:
alg—ed25519,ecdsa_p256, orrsa_pss_sha256.key_id— the public key identifier.manifest_sha256— the prefixed canonical hash that was signed.signature_b64— raw bytes, base64.verification_status—valid,invalid, orerror.last_verify_check_at+next_verify_due_at— periodic re-check timestamps.
NavPackDelta
Precomputed diff between two version ids. Robots that already have version N can fetch GET /packs/<id>/delta?from=N&to=N+1 and apply just the changed layers instead of downloading the full pack.
NavPackGrant
Cross-customer share. The owning customer can grant another customer read_manifest or read_bytes access for a window of time. Grants show up in the ACL predicate alongside the visibility flag.
NavPackAuditEvent
Append-only log of every state-changing operation: publish, soft-delete, status-change, signature-flip, grant-create, grant-revoke, robot-device-register, token-issue, token-revoke. Queryable via GET /v1/nav-pack/audit.
NavPackWebhookSubscriber
Registered HTTP endpoint to receive event notifications. HMAC secret is stored as a KMS-encrypted blob via the secret_handle column (kms:<key>:<b64-ct> format).