Repository navigation
NavigationMaps
Unified graph routing is authored through NavigationMap, not through a
runtime terrain predicate or a separate medium-specific routing system. One map
binds one stable map ID to one normalized GridForge configuration.
An immutable map contains:
-
MapId; -
NormalizedGridConfiguration GridBinding; - optional
DefaultCell; - canonically ordered explicit
Cells; - directed physical
Connections; - directed semantic
Transitions; - bounded procedural
TransitionRules.
NavigationMapBuilder.Build() validates duplicates, topology-local indices,
cell payloads, transition identities, and rule payloads before creating the
immutable bake. Context-wide and per-map transition-rule limits are enforced at
publication.
NavigationCell stores:
- one or more supported
TraversalMedia; - required capabilities;
- a stable area ID;
- nonnegative enter cost;
- horizontal radius and vertical clearance;
- optional transition-generation hints.
Cell media describes state of matter at that address. Terrain is not a separate runtime truth inside Trailblazer. A host can use terrain, scene metadata, fluid simulation, or any other source to decide which complete cell to publish.
The optional map default applies to every physically present, in-bounds GridForge cell that has no higher-precedence semantic cell. It does not create a GridForge cell and does not fill an absent sparse address.
Explicit entries override the default. This makes both dense and sparse authoring cheap:
- a Gas-default map can list only walls or special areas;
- a Liquid-default map can list islands or hazards;
- a map with no default is fail-closed except at explicit entries.
The effective cell order is:
- overlay cell;
- explicit baked entry;
- map default;
- no navigation cell.
Each layer replaces the entire cell. For example, an overlay that changes Gas to Liquid must also provide the intended area, cost, clearance, capabilities, and flags.
NavigationCellOverlayOperation.Suppress(index) hides every lower layer.
RevertToBake(index) removes the overlay decision and reveals the explicit
bake, then the default, then no cell.
GridForge owns whether an address exists, is blocked, and which exact prism and contacts it has. Trailblazer owns the semantic payload admitted at that address.
Consequences:
- a default never materializes absent physical storage;
- a default-backed map remains fail-closed while its bounded physical baseline is captured across fixed frames;
- an authored semantic cell at an absent sparse address is dormant;
- a GridForge add/remove or blockage event can activate or deactivate graph state without rewriting the map;
- map and physical dependencies both participate in guide staleness.
Structural connectivity uses positive-face contact:
- rectangular prisms: six faces;
- pointy/flat hex prisms: six planar faces plus top and bottom.
The same physical cell may have Solid, Gas, and Liquid search states. Native movement retains medium. Volume shortcuts improve route quality but never create connectivity on their own. Semantic transitions are the only edges that can change medium.
A map is prepared with PreparedNavigationMap and admitted with
NavigationMapCommitOperation. Replacement requires a higher bake version for
the same map ID. Choose:
-
OverlayReplacementPolicy.PreserveAndRevalidateto preserve the exact overlay/dynamic-address set and validate the complete recomposed candidate; -
OverlayReplacementPolicy.Clearto discard them atomically.
Preservation never silently prunes an invalid overlay. If the preserved set is incompatible with the replacement bake, the whole map replacement rejects transactionally.
Runtime cell/connection/transition changes use one
NavigationOverlayCommitOperation. See Map publication.
An applied commit receipt confirms the authored map was accepted. For a map
with a default cell, physical baseline materialization can continue afterward
under the context's maintenance budget. Do not query that map until its
diagnostic IsMaterialized value is true.