Docs navigation

Concepts

Domains, Meshes & the Registry

The two-level model: identity-bearing Domains and their swappable Meshes.

A two-level model

A Domain is “an identity-bearing entity defined by exactly ONE curated Domain Boundary (hashable). Usually geographic (WNAT, Kansas), but a synthetic outline (UnitSquare) is equally a Domain — category records which.” A Mesh is “a discretization of a Domain. One Domain has zero-or-more Meshes (triangle, quad-dominant, mixed; different resolutions). Identity is per-discretization, not per-Domain.” Composite ID WNAT/hagen@v1.

The Domain is the stable identity a search targets; Meshes are swappable realizations under it, so provenance and comparison happen per-Mesh without fragmenting the registry.

Domains vs Collections

A Collection is “a curated, non-identity-bearing grouping of Meshes under one name (TestCases, Shapes, MiscTests). Has no Domain Boundary and no Identity hash — that is precisely what distinguishes it from a Domain.” What disqualifies an entry as a Domain is not geography but violating one-boundary-one-identity: a named grab-bag of different outlines is a Collection, not a Domain. Legacy manifest entries that are grab-bags currently masquerade as Domains and migrate to Collections; each distinct outline inside a Collection is eligible to become its own Domain.

Geographic or synthetic

One-boundary-one-identity is the admission rule, not geography. A Domain is “an identity-bearing entity defined by exactly ONE curated Domain Boundary (hashable). Geographic or synthetic — category records which.” Two independent meshings of a synthetic outline genuinely share a Domain, and the identity machinery works unchanged.

Three boundary concepts

A Domain Boundary is “the SME-curated outline (coastline + open-ocean cuts) that defines what the Domain IS. Identity-bearing. Stored as a first-class field separate from mesh elements.” A Mesh Boundary is “the geometric outline of a Mesh's elements; auto-derivable from element connectivity. Not identity-bearing for the Domain.” A Boundary Segment is “ADCIRC's own file-format concept: the open/land boundary strings (boundary conditions) in a fort.14 file. Neither Mesh Boundary nor Domain Boundary — a third, format-level thing.”

Prose, docs, and UI always qualify which boundary is meant — Mesh Boundary, Domain Boundary, or Boundary Segment — never bare “the boundary.”

Identity is deterministic

Identity (of a Domain) is a “deterministic hash over the Canonical form of the Domain Boundary. Two Domains are the same iff their canonical bytes hash equal. No thresholds, no predictions, no human review.” Two Domains whose Canonical forms differ are different Domains, full stop; the only way to assert “these are actually the same” is an explicit, Maintainer-set Alias.

content_uid vs normalized_uid

Mesh.content_uid (sha256-v1:) hashes the canonicalized .14 file bytes — it catches byte-identical Mesh files, not geometrically-identical Domains, and is a textual canonicalization distinct from Domain identity. normalized_uid (normalized-v1:) hashes a further canonicalized form — defined node ordering, element ordering, numeric formatting, and whitespace — so semantically identical meshes produced by different toolchains share one digest, with the raw content_uid retained alongside it for forensics. Both layers coexist; they answer different questions.

System overview

Diagram: a Domain has a category of geographic or synthetic, has an identity computed as a hash of its Canonical form, and has many Meshes; a Collection groups Meshes without a Domain identity.

See Trust, Provenance & Authority Boundaries for what is authoritative versus advisory across the registry.