Engine capabilities
This page answers two questions: what the engine can do today, and how a mod
reaches each capability. It is published with the modding docs at
docs.manifold.quest. Each row links to the contract that documents it and to
evidence on main. Use it to orient yourself, then follow the contract link for
the rules. To build something end to end, follow a guide:
make a creature or
add a held item.
Verified against main at 303bc46bd (2026-10-01). A pull request that changes
a capability or how a mod reaches it updates its row (keeping it current).
Reading the table
Status
| Status | Meaning |
|---|---|
| shipped | On main, working on both hosts unless the row says otherwise. |
| preview | On main but partial: one host only, a subset, or not yet wired end to end. The row says what is missing. |
| design | A spec exists; nothing usable is on main. The contract column links the spec. |
Mod reach
| Reach | How a mod uses it |
|---|---|
data/<dir> | RON entries in a data-stage registry. No code. |
| asset | Files in the mod’s assets/, locales/ or similar: models, UI documents, particles, block RON. |
| decl | Declared from the guest’s ModApp and delivered in the declarations() payload of manifold:core/plugin-lifecycle. |
| WIT | A function-bearing import or export of a mod contract package. |
| console | Console commands, usually for operators and testing. |
| tooling | cargo mod and the authoring tools. |
| engine-only | Exists, but no mod route yet. |
| not yet | Neither the capability nor a mod route exists. |
No contract track is released yet. Every 0.2 WIT interface is on the open,
unreleased track, so it may still change before the first release (contract step R1).
The legacy manifold:game@0.1.0 and manifold:client@0.1.0 packages are being
replaced (steps M2 and M3).
How mods reach the engine today
- Data is the widest route. Archetypes, gameplay, AI, navigation, spawning, physics materials and game rules are all RON registries (registries).
- Assets carry blocks, models, animation graphs, particles, UI and text.
- Declarations register blocks, terrain recipes, actions, components, resources, systems and console commands from the guest.
- WIT is narrow today. It covers ECS bundles and systems, player block-edit decisions, text types and logging, plus the legacy UI, storage, asset and clock imports. There is no WIT for entities, gameplay, AI, animation or physics yet. Those packages wait for the contract foundation and each program’s contract step.
World and blocks
| Capability | Status | Mod reach | Contract | Evidence |
|---|---|---|---|---|
| Block types: solidity, render pass, light, collision, textures | preview: only the bundled game module’s blocks register | not yet for other mods: their add_block is dropped (issue #527) | none | crates/manifold-world/src/block_loader.rs, crates/manifold-server/tests/block_defs_handshake.rs |
| Block textures: per-face, flipbook animation, emissive masks, tinted glass | preview: the atlas reads only the bundled game’s archive | not yet for other mods (issue #527) | none | crates/manifold-world/src/block_loader.rs, crates/manifold-texture-atlas/tests/browser_texture_crossing.rs |
| Block shapes: non-cube meshes and custom collision | preview: AABB collision only; all blocks render as cubes | asset (Block RON collision) | Enki D (design) (docs/superpowers/specs/2026-09-27-enki-d-block-models-props-design.md) | crates/manifold-world/src/collision_shape.rs |
| Block states: orientation, properties, layers | design (value vocabulary only) | not yet | Enki A (design) (docs/superpowers/specs/2026-09-27-enki-a-block-data-model-design.md) | crates/manifold-block-model/src/lib.rs |
| Block behaviour hooks: break, place, random tick | preview: native trait, no guest dispatch | engine-only | none | crates/manifold-engine/src/block_behavior.rs |
| Player block-edit decisions: approve, reject, rewrite | shipped (server side); one handler, the first loaded mod that imports it (issue #529) | WIT manifold:world/block-world | Mod contract, block transactions | crates/manifold-server/tests/block_world_roundtrip.rs |
| Guest voxel reads | design | not yet | Mod contract | crates/manifold-wasm-abi/wit/world/block-world.wit |
| Bulk block transactions: all-or-nothing, replicated, undoable | preview: no guest interface | console /fill, /setblock | Block transactions | #479 |
| Terrain recipes and biomes | shipped; browser single-player uses the catalog default | decl add_terrain_recipe + asset (terrain RON) | Terrain mod contract | game/flagship-game/assets/terrain/alpine_world.ron |
| Baked heightfields and water networks | preview: import is native-only | asset (baked recipe) | Terrain mod contract | same page, “Optional water networks” |
| Fluids: flow, reactions, appearance, swimming | shipped | not yet for other mods (issue #527) | Fluid authoring | crates/manifold-world/src/fluid/, #181 |
| Block lighting: RGB emitters, flicker, per-face emission | shipped; the 2026-09-20 audit lists known defects | not yet for other mods (issue #527) | none | docs/benchmarks/lighting-audit-2026-09-20.md |
| Sky and day/night: sun, moons, stars, palette | shipped | WIT ecs/resource-bundle (sky resources) + decl disable_sky | none | game/flagship-game/src/guest_views.rs |
| Far terrain and GPU terrain | shipped (auto-selected per device) | engine-only | Far terrain (docs/architecture/far-terrain-boundary-contract.md), GPU terrain (docs/architecture/gpu-terrain-rendering.md) | crates/manifold-render |
| Game rules: typed, per world and per space, replicated | shipped | data/game-rules + console /gamerule | Game rules | crates/manifold-engine/src/world/game_rules/decl.rs |
Rendering, audio and presentation
| Capability | Status | Mod reach | Contract | Evidence |
|---|---|---|---|---|
| Post-processing: bloom, SSAO, shadows, TAA | shipped | engine-only | Scene TAA (docs/architecture/scene-taa.md) | crates/manifold-render/src/post_process/ |
| Shader packs and custom materials | design (draft ABI) | not yet | Shader modding draft (rendering_stuff/shader-modding-contract.md) | no pack loader in crates/manifold-render |
| Particles: block events, ambient, server cues, editor (F10) | shipped | asset (particles/**, Block RON) + WIT bundle (EffectCue) | Particle system (design) (docs/superpowers/specs/2026-09-26-particle-system-design.md) | crates/manifold-host-core/src/particles.rs |
| Audio cues: spatial one-shots | preview: every module’s sounds.ron in the host’s set; a joining client does not load a delivered module’s sounds yet | WIT bundle (SoundCue) | none | crates/manifold-host-core/src/sounds.rs |
| Placed models and props in the world | design | not yet | Enki D (design) (docs/superpowers/specs/2026-09-27-enki-d-block-models-props-design.md) | — |
UI, text and input
| Capability | Status | Mod reach | Contract | Evidence |
|---|---|---|---|---|
| Mod UI: widget trees, state, events, HUD layers | shipped | WIT legacy game/ui + UI plugin export | UI authoring (validation only) | crates/manifold-wasm-abi/wit/legacy/game/ui.wit |
| Game presentation: title, theme, menus, inventory window | shipped | engine-only (game embedding; .ui.ron, .theme.ron) | Extension contracts (docs/architecture/extension-contracts.md), Manifold look (docs/manifold-look.md) | crates/manifold-ui-chrome/src/lib.rs |
| Client plugins: HUD reskin, overlays, UI overrides | preview: native only, no distribution | WIT legacy manifold:client | none | crates/manifold-client-plugin-host/src/instance.rs |
| UI editor (F6) | shipped (developer tool) | engine-only | UI authoring | crates/manifold-ui-editor/src/lib.rs |
| Localization: message keys, Fluent catalogs, shaping, RTL | shipped | asset (locales/<lang>/*.ftl) + WIT core/text | Text and localization | crates/manifold-wasm-abi/wit/core/text.wit |
| Translation packs | preview: browser players cannot install them | asset (translations/) | Text and localization | — |
| Input actions, contexts and keybinds | shipped | decl add_action, add_context, bind_input_role | Input system (design) (docs/superpowers/specs/2026-09-29-input-system-design.md) | crates/manifold-input/src/lib.rs |
| Gamepad | preview: evaluator only, no device backend | same action bindings | Input system (design) (docs/superpowers/specs/2026-09-29-input-system-design.md) | crates/manifold-input/src/control.rs |
| Console commands from mods | shipped (server registry) | decl register_command | Console commands | crates/manifold-server-state/src/console/command_fold.rs |
Entities and the data stage
| Capability | Status | Mod reach | Contract | Evidence |
|---|---|---|---|---|
| Data stage: declare, patch, final-fixes, validate, freeze, hash | shipped (no hot reload; cargo mod validate --base needs a game-module base’s built component) | data/<dir> + tooling cargo mod validate | Data stage | crates/manifold-engine/src/data/stage.rs, tools/cargo-mod/src/data_validate.rs |
| Structural funnel, hooks and observers | shipped | engine-only | Entity core (docs/architecture/entity-core.md) | crates/manifold-test-support/tests/structural_funnel_guard.rs |
| Archetypes: inheritance, variants, templates, spawning | shipped | data/archetypes + decl add_archetype + console /entity spawn | Archetypes | crates/manifold-engine/src/archetype/def.rs |
| Mod-defined components and guest systems | shipped | WIT ecs/resource-bundle, ecs/plugin-systems + decl add_component, add_resource | Mod contract (packaging only) | crates/manifold-wasm-abi/wit/ecs/resource-bundle.wit |
| Relationships: owned-by, child-of, targets | preview: data-declared kinds get no components yet | data/relationships | Entity core (docs/architecture/entity-core.md) | crates/manifold-ecs/src/relation.rs |
| Spatial index and layers | shipped | data/spatial-layers (layers only) | Entity core (docs/architecture/entity-core.md) | crates/manifold-ecs/src/spatial.rs |
| Durable identity and entity persistence | shipped | engine-only | Entity persistence (docs/architecture/entity-persistence.md) | crates/manifold-server-state/src/entity_persistence.rs |
Gameplay
| Capability | Status | Mod reach | Contract | Evidence |
|---|---|---|---|---|
| Tags, conditions and stats | shipped | data/tags, data/predicates, data/stats | Gameplay | crates/manifold-gameplay/src/stats.rs |
| Effects: stacking, periods, immunity, cleanse | shipped (guest execution waits for Talos B6) | data/effects | Gameplay | crates/manifold-gameplay/src/effects.rs |
| Damage pipeline: types, elements, formulas, hooks, healing, per-region damage | shipped (guest hooks wait for B6) | data/damage_types, data/elements, data/damage_formulas, data/damage_hooks + console /entity damage | Gameplay | crates/manifold-gameplay/src/damage.rs |
| Physics damage sources: impacts, explosions | preview: character impacts deal damage; nothing fills explosions until Daedalus F | data/impact_damage, data/explosion_damage | Gameplay | crates/manifold-gameplay/src/damage/sources.rs |
| Death, corpses and loot tables | shipped | data/loot_tables | Gameplay | crates/manifold-gameplay/src/loot.rs |
| Factions, parties and PvP | shipped | data/factions | Gameplay | crates/manifold-gameplay/src/factions.rs |
| Cues and presentation fields | shipped | data/cues, data/presentation | Gameplay | crates/manifold-gameplay/src/cues.rs |
| Abilities: chains, telegraphs, projectiles, charges, costs | shipped; the HUD draws server-confirmed hit markers and damage numbers on both hosts (issue #532) | data/abilities + console /entity ability | Gameplay | #463, #516 |
| Owner ability prediction | preview: own presses only | data/abilities (predict) | Gameplay | crates/manifold-gameplay/src/abilities/predict.rs |
| Equipment slots and item kinds | shipped (not persisted; no stacks) | data/equipment_slots, data/items + console /entity equip | Gameplay | crates/manifold-gameplay/src/equipment.rs |
| Gameplay config | shipped | data/gameplay | Gameplay | crates/manifold-gameplay/src/data.rs |
Items
| Capability | Status | Mod reach | Contract | Evidence |
|---|---|---|---|---|
| Inventory and hotbar | shipped inside the flagship game, not an engine feature; items there are block ids | engine-only (HotbarBlocks projection) | none | game/flagship-game/src/inventory.rs |
| Game modes and creative catalog | shipped inside the flagship game | WIT bundle (block catalog resource) | Enki C (design) (docs/superpowers/specs/2026-09-27-enki-c-ui-runtime-design.md) | game/flagship-game/src/game_mode.rs |
| Item instances, stacks, containers, moves, pickup, crafting | design | not yet | Items overview (design) (docs/superpowers/specs/2026-09-30-items-overview-design.md) | #481 |
AI and navigation
| Capability | Status | Mod reach | Contract | Evidence |
|---|---|---|---|---|
| Character integrator and motion overrides (players and agents) | shipped | engine-only | Navigation | crates/manifold-player/src/integrator/integrate.rs |
| Ground pathfinding: locomotion profiles, corridors, repair, reachability | shipped (walkers, walker_large, climbers, swimmers) | data/locomotion + console /ai path | Navigation | crates/manifold-nav/src/profile.rs |
| Flow fields, flight, swimming, climbing, doors, flocking | preview: no digging; flow fields serve ground profiles only | data/locomotion | Navigation | crates/manifold-nav/src/flow.rs, crates/manifold-nav/src/flight.rs |
| Perception: sight with voxel line of sight, hearing, awareness states, damage, owner and item sensors | preview: no touch sensor or hearing occlusion | data/awareness | Brains | crates/manifold-ai/src/perception.rs, crates/manifold-ai/src/hearing.rs |
| Brains: archetype brains, utility brains, state trees, memories, curves | shipped | data/brains, data/state_trees, data/memories, data/curves | Brains | crates/manifold-ai/src/data.rs |
| AI level of detail and work budget | shipped: Full, Reduced and Dormant tiers, the degradation ladder | data/ai_lod + console /ai lod | Brains | crates/manifold-ai/src/lod.rs |
| Spawners, spawn rules, caps, despawn bands | preview: no herds, encounters or persistent spawners | data/spawn_rules, data/spawn_categories, data/spawners | Population | crates/manifold-ai/src/coord/spawn/data.rs |
| Reservations | shipped (not saved) | engine-only | Population | crates/manifold-ai/src/coord/reservation.rs |
| Coordination: squads, threat, tokens, directors, smart objects, chores, offline simulation | design | not yet | Talos E (design) (docs/superpowers/specs/2026-09-27-talos-e-coordination-population-design.md) | — |
AI and entity debugging: traces, /ai why, inspector, overlays | shipped | console /entity, /ai | Console commands | crates/manifold-server-state/src/console/ai_commands.rs |
Animation and models
| Capability | Status | Mod reach | Contract | Evidence |
|---|---|---|---|---|
| Model import, recipes and validation | shipped | asset (GLB + .model.ron) + tooling cargo mod validate | Model assets | crates/manifold-model/src/recipe.rs |
| Blockbench exporter and Blender add-on | shipped | tooling | Model assets | tools/blockbench-manifold/manifold_model.js |
| Animation graphs: machines, 1D blends, layers, masks, slots, one-shots | shipped (no nested machines or 2D blends) | asset (.graph.ron) + console /anim | Model assets | crates/manifold-anim/src/graph/compile.rs |
| Skeleton profiles, sockets and held items | preview: one built-in profile; held items show on remote characters only, at hand_r; no player or weapon model ships (issue #533) | asset (recipe skeleton, sockets, item grip) | Model assets | crates/manifold-anim/src/profile.rs |
| Pose modifiers: two-bone IK, look-at, hand-to-grip | preview: no foot placement, springs or ragdolls | asset | Model assets | crates/manifold-anim/src/modifier/mod.rs |
| Binding tables, gameplay events, root motion | shipped | asset (.bind.ron, clip events) | Animated characters (docs/architecture/animated-characters.md) | crates/manifold-anim/src/binding.rs |
| Hit volumes and lag-compensated hit queries | shipped | asset (hit_volumes, body_regions) | Animated characters (docs/architecture/animated-characters.md) | crates/manifold-anim/src/hit.rs |
| NPC replication and interpolation | shipped | engine-only | Animated characters (docs/architecture/animated-characters.md), network time (docs/architecture/network-time.md) | crates/manifold-server-state/src/replication/agent_motion.rs |
| Asset Lab (F7) and asset hot reload | preview: hot reload is native only | asset | Model assets | crates/manifold-model-lab/src/lib.rs |
| Animation interface and custom modifier nodes for mods | preview: console only | console /anim; WIT not yet | Pygmalion H (design) (docs/superpowers/specs/2026-09-27-pygmalion-h-mod-contract-design.md) | crates/manifold-anim/src/api/mod.rs |
| Animation at scale: budgets, followers, baked crowds | design | not yet | Pygmalion F (design) (docs/superpowers/specs/2026-09-27-pygmalion-f-rendering-scale-design.md) | — |
Physics
| Capability | Status | Mod reach | Contract | Evidence |
|---|---|---|---|---|
| Rigid bodies: collider sets, owners, quotas, regions, threads | shipped (clients draw every body as a box) | console /physics; WIT not yet | Physics runtime (docs/architecture/physics-runtime.md) | crates/manifold-physics/src/runtime/mod.rs |
| Terrain colliders, physics events and queries | shipped | engine-only | Physics runtime (docs/architecture/physics-runtime.md) | crates/manifold-physics/src/runtime/terrain/mod.rs |
| Physical materials | preview: every block uses the default material | data/physical-materials | Physics runtime (docs/architecture/physics-runtime.md) | crates/manifold-physics/src/materials.rs |
| Gravity gun: grab, punt, extract | shipped | engine-only + console /physics extract | Physics runtime (docs/architecture/physics-runtime.md) | crates/manifold-physics/src/grab.rs |
| Joints | preview: slider only, created in tests | engine-only | Physics runtime (docs/architecture/physics-runtime.md) | crates/manifold-physics/src/joints/apply.rs |
| Assemblies: block grids as one rigid body | preview: data model and colliders only | engine-only | Physics runtime (docs/architecture/physics-runtime.md) | crates/manifold-physics/src/assembly/grid.rs |
| Riding, seats, carry, knockback, fall damage | preview: carry, knockback and impacts for players and agents; riding, seats and fall damage are design | engine-only | Navigation, Daedalus D (design) (docs/superpowers/specs/2026-09-27-daedalus-d-characters-interaction-design.md) | crates/manifold-player/src/impacts.rs |
| Destruction: cuts, blasts, islands, collapse | preview: algorithms only, not wired in | not yet | Daedalus F (design) (docs/superpowers/specs/2026-09-27-daedalus-f-destruction-world-forces-design.md) | crates/manifold-world/src/destruction/mod.rs |
| Motion stream and path segments | preview: agents’ path segments replicate (manifold-player:active-path); the motion stream is the wire codec only | engine-only | Daedalus E (design) (docs/superpowers/specs/2026-09-27-daedalus-e-replication-prediction-design.md) | crates/manifold-net-protocol/src/motion/segment.rs |
The rigid-body rows run on a vendored parry3d 0.29 with one backported fix
(tools/patches/parry3d). The patch
is temporary: the rapier 0.36 upgrade removes it
(issue #534).
Multiplayer, saves and delivery
| Capability | Status | Mod reach | Contract | Evidence |
|---|---|---|---|---|
| Replicating mod state: synced resources, bridged components | shipped | decl (resource sync, component policy) | Host parity (docs/architecture/host-parity.md), network time (docs/architecture/network-time.md) | crates/manifold-mod-types/src/lifecycle.rs |
| Browser client over iroh, native client and dedicated server | shipped | engine-only | Host parity (docs/architecture/host-parity.md) | crates/manifold-host-web/src/iroh_transport.rs |
| Browser and native parity | preview: guards plus a manual litmus | — | Parity manifest (docs/architecture/browser-native-parity-manifest.md), accepted divergences (docs/parity/ACCEPTED-DIVERGENCES.md) | — |
| World saves: chunks, metadata, entities, fluids | shipped (native redb, browser OPFS) | engine-only | Entity persistence (docs/architecture/entity-persistence.md) (entities only) | crates/manifold-host-web/src/opfs_save.rs |
Mod delivery at join (content-addressed, cached on both hosts; an installed .mod with the server’s bytes is used without a transfer) | preview: a joining client (native or browser) builds its session content from the server’s set before world data applies, so a delivered module’s blocks, actions, components, archetypes, data, textures and sounds join; a failure names the mod | automatic | Mod contract, data stage | crates/manifold-server/tests/mod_delivery_e2e.rs, game/flagship/tests/installed_block_module.rs, crates/manifold-host-web/e2e/assert-block-probe-join.mjs |
| Mod config storage, asset reads, clock | shipped | WIT legacy persistent-storage, asset-source, clock | Mod contract (listing only) | crates/manifold-wasm-abi/wit/legacy/game/ |
| Blob storage and player-local files | design | not yet | Contract foundation (design) (docs/superpowers/specs/2026-09-29-contract-foundation-design.md) | — |
Mods and the data stage
Packaging and loading
| Capability | Status | Mod reach | Contract | Evidence |
|---|---|---|---|---|
.mod archives: manifest, wasm, assets/, data/, locales/ | shipped | tooling | none | crates/manifold-mod-archive/src/lib.rs |
Manifest mod.toml: kinds, dependencies, ordering, collisions, overlays | shipped | tooling | none | crates/manifold-modloader/src/manifest.rs |
| Several game modules: dependencies, load order, asset overlay; installed modules add blocks, actions, components and textures | shipped for baked and installed modules (dedicated server, native singleplayer and hosting); a joining client, native or browser, builds the server’s set (delivered modules included) at connect | tooling | Mod contract | game/flagship/tests/installed_block_module.rs |
Guest SDK: ModApp and #[mod_entry] | shipped | decl + WIT | Mod contract (macro only) | crates/manifold-mod-substrate/src/runtime/mod_app.rs |
cargo mod build, inspect, validate, publish | shipped (no signing or registry) | tooling | none | tools/cargo-mod/src/main.rs |
cargo mod new, dev, test, report | design | not yet | Modding north star (docs/modding-api-north-star.md) | — |
Contract machinery
| Capability | Status | Mod reach | Contract | Evidence |
|---|---|---|---|---|
| Versioned WIT packages, linking by import | shipped | WIT | Mod contract | crates/manifold-contract/src/component.rs |
| Import check: unknown interface or track | preview: native only | engine-only | Mod contract | crates/manifold-modloader/src/contract.rs |
| Old-track adapters and export facades | shipped as machinery; no release to adapt yet | engine-only | Mod contract | crates/manifold-wasm-host/tests/contract_tracks.rs |
| Payload classification and schemas | shipped; ron::Value in UI trees pending (Enki C P0), packed layout tables arrive with their layouts | engine-only | Mod contract, payload reference | crates/manifold-contract/tests/payload_shapes.rs |
contract.json, generated WIT reference, breaking-change gate | shipped; the gate has nothing to compare until the first release | tooling | Mod contract, contract reference | tools/contract-describe/tests/gate.rs |
| Consent prompts, preview tracks, permission catalogue | design (consent classes recorded, not enforced) | not yet | Contract foundation (design) (docs/superpowers/specs/2026-09-29-contract-foundation-design.md) | crates/manifold-wasm-abi/wit/ATTRIBUTES.toml |
| Sandbox: host-assigned trust, native epoch interrupts | shipped natively; browser metering not proven | engine-only | Extension contracts (docs/architecture/extension-contracts.md) | crates/manifold-wasm-host/tests/game_module_sandbox.rs |
| Guest hooks, kernels, extension points, jobs, mod channels | preview: shared hook ABI and native kernel linking only | not yet | Extension contracts (docs/architecture/extension-contracts.md), mod contract | crates/manifold-hook-abi/src/lib.rs |
| Hot reload of guest code and data | design | not yet | Data stage | — |
Data registries a mod can ship. Each is a directory under the mod’s data/.
The data registry reference documents every one,
with its fields and an example; see data stage
for file stages and patching.
| Area | Directories |
|---|---|
| Entities | archetypes, relationships, spatial-layers, game-rules |
| Gameplay | tags, stats, predicates, effects, elements, damage_types, damage_formulas, damage_hooks, impact_damage, explosion_damage, cues, presentation, factions, loot_tables, abilities, equipment_slots, items, gameplay |
| AI and navigation | brains, state_trees, memories, awareness, ai_lod, curves, locomotion, spawn_categories, spawn_rules, spawners |
| Physics | physical-materials |
Components come from code declarations, and binding tables come from model assets.
Neither is declared in data/.
Debugging and tools
| Capability | Status | Mod reach | Contract | Evidence |
|---|---|---|---|---|
| Framescope providers and captures | shipped (engine-side providers) | engine-only | Framescope providers (docs/framescope-provider-guide.md) | crates/framescope-core/examples/custom_provider.rs |
| Deterministic replay | preview: partial coverage | engine-only | Replay design (docs/deterministic-replay-design.md) | crates/manifold-replay/src/lib.rs |
| Deterministic random and maths helpers | shipped | engine-only | none | crates/manifold-det/src/random.rs |
Keeping this page current
A pull request updates the affected rows when it:
- ships, removes or narrows a capability;
- adds a mod route (a registry, an asset format, a declaration, a WIT interface, a console command); or
- adds the capability’s contract page.
Update the “Verified against” revision when you re-check the whole page. A row whose
contract column says “none” or links a spec is a documentation gap: a shipped
capability should get a contract page under docs/architecture/.