DRIFTLANDS co-op survival on drifting tides — studio progress

Requirements Traceability Matrix (RTM)

Last Updated: 2026-09-07
Mode: /architecture-review (full, RTM built — first RTM for this project)
Coverage: 54 % full chain complete (GDD → ADR → Story → Test): 61 / 112
Report: architecture-review-2026-09-07.md

How to read this matrix

Column Meaning
TR-IDStable requirement ID from tr-registry.yaml (never renumbered)
GDD systemSource system (traceability-index.md carries the GDD file per system)
ADRArchitectural decision governing implementation (from traceability-index.md; ⚠️/❌ remainders named there)
StoryStory file(s) under production/epics/*/ whose Requirement line names this TR-ID — or, for six bootstrap/game-data stories that cite ADR sections instead, the attribution confirmed by the test file's own header
Test FileTest file(s) named in the story's Test Evidence / Status line, resolved on disk by path or basename under UnityProject/Assets/Driftlands/Tests/
Test StatusCOVERED (Done story + existing test) · NO STORY (ADR exists, not storied) · NO ADR (architectural gap) · BLOCKED (Gate 0) · COVERED / NO ADR = the single-machine half is implemented and tested while the ADR-0010 half is not

Method notes: 87 stories parsed; 118 test files indexed; three Done stories name a test class under a drifted name (InputAdapterPlayModeTests→InputAdapterTests, RebindRoundTripTests→RebindServiceTests, TintFenceTests→TideTintFenceTests) — resolved by basename and reported in the review as documentation drift. Manual-evidence stories (UI / Visual-Feel) are credited only where the named production/qa/evidence/*.md file exists.

Full Traceability Matrix

TR-ID GDD system Requirement ADR Story Test File Test Status
TR-IDSystemRequirementADRStoryTest FileTest Status
TR-tide-001TideDockedLands(seed, t, config) pure function in an engine-free assemblyADR-0001, ADR-0003story-001-docking-sequence; story-005-schedule-instance-fixtureTests/EditMode/Tide/DeterminismTests.cs; Tests/EditMode/Tide/DockingSequenceTests.cs; Tests/EditMode/TideMathTests.csCOVERED
TR-tide-002Tidelong UTC seconds, StableHash64, FloorDiv/FloorMod; `System.RandoADR-0001story-005-schedule-instance-fixtureTests/EditMode/Tide/DeterminismTests.cs; Tests/EditMode/TideMathTests.csCOVERED
TR-tide-003Tidehost-authoritative t replicated; client evaluation presentation-onlyADR-0001 (roles)story-010-clock-adapter—BLOCKED (Gate 0)
TR-tide-004Tidemonotonic lastKnownGoodT, persistedADR-0001, ADR-0004story-007-tide-clockTests/EditMode/Tide/TideClockTests.csCOVERED
TR-tide-005TideNextBoundary schedule-one-wake-up, no polling, ±5 sADR-0001story-004-boundary-and-tintTests/EditMode/Tide/BoundaryAndTintTests.csCOVERED
TR-tide-006Tidedock/undock edge events + PreloadLeadTime noticeADR-0001, ADR-0005story-007-tide-clock; story-009-boundary-legalityTests/EditMode/Tide/BoundaryLegalityTests.cs; Tests/EditMode/Tide/TideClockTests.csCOVERED
TR-tide-007Tidederived-only API; raw t/φ/W never exposedADR-0001story-003-variation-recurrence; story-007-tide-clock; story-009-boundary-legalityTests/EditMode/Tide/BoundaryLegalityTests.cs; Tests/EditMode/Tide/TideClockTests.cs; Tests/EditMode/Tide/VariationAndRecurrenceTests.csCOVERED
TR-tide-008Tideamber/violet intensities (double); violet held through EvictionGraceADR-0001, ADR-0013 §5 (driver; neutral onstory-004-boundary-and-tint; story-002-tint-driverTests/EditMode/Tide/BoundaryAndTintTests.cs; Tests/EditMode/Tint/TideTintDriverTests.csCOVERED
TR-tide-009TideTideConfig data-driven, validated, versioned; epoch on N changeADR-0001, ADR-0006story-001-data-bootstrap; story-003-tide-config; story-009-configversion-epoch; story-008-epochs-and-reconcileTests/EditMode/Tide/EpochAndReconcileTests.cs; Tests/EditMode/TideMathTests.csCOVERED
TR-tide-010Tide≤ 50 µs / 0 alloc hard gates (TD ruling); ≤ 0.1 ms advisoryADR-0001story-006-performance-gates; story-010-clock-adapterTests/EditMode/Tide/PerformanceGateTests.csCOVERED
TR-tide-011Tidesigned long cycle/docking/round indices — negatives legitimateADR-0001story-001-docking-sequence; story-002-global-deck; story-008-epochs-and-reconcileTests/EditMode/Tide/DeckTests.cs; Tests/EditMode/Tide/DockingSequenceTests.cs; Tests/EditMode/Tide/EpochAndReconcileTests.csCOVERED
TR-tide-012Tideculture/thread-independent bit-identical schedule mathADR-0001story-005-schedule-instance-fixtureTests/EditMode/Tide/DeterminismTests.cs; Tests/EditMode/TideMathTests.csCOVERED
TR-tide-013Tideclient extrapolated t ≤ host t + one replication interval—story-010-clock-adapter—BLOCKED (Gate 0)
TR-net-001NetcodeNGO 2.x host-and-play; no dedicated server / migration / rollbacktechnical-preferences; every ADR——NO STORY
TR-net-002Netcodetwo authority railsADR-0002 (host rail)——NO STORY
TR-net-003Netcodelate-join full snapshot———NO ADR
TR-net-004Netcodedisconnect retains HP/Downed/timer; rejoin = late joinADR-0015 (PlayerKey rows), ADR-0004 §6——NO STORY
TR-net-005NetcodeSteam transport (package TBD)———NO ADR
TR-net-006Netcodeone ordered arrival channel; tiebreak lowest OwnerClientIdADR-0002story-006-host-commit-queueTests/EditMode/HostCommitQueueTests.csCOVERED
TR-net-007Netcodeevery host-rail commit a non-yielding critical sectionADR-0002, ADR-0003story-004-command-shapes; story-005-commands-execute-syncTests/EditMode/CommandShapeTests.cs; Tests/EditMode/CommandEnforcementTests.csCOVERED
TR-net-008Netcodedrain phase pinned vs owner movement writesADR-0002——NO STORY
TR-net-009Netcodefired commits never un-happen on disconnect; un-fired intents are no-opsADR-0002 §9story-006-host-commit-queueTests/EditMode/HostCommitQueueTests.csCOVERED
TR-cam-001Cameraorthographic 64 px/u at 1080p, integer multiples; PPU 32, pointADR-0003 (unit/PPU pin), ADR-0013 (fragmenstory-005-camera-rule-and-import-gateTests/EditMode/Tint/CameraRulesTests.cs; Tests/EditMode/Tint/TextureImportGateTests.csCOVERED
TR-cam-002Camerasmoothed follow + aim bias; never detaches; hard cuts; no shake———NO ADR
TR-save-001Saveone host-owned file; write-temp-then-swap; rolling backupsADR-0004story-004-flush-worker-durability; story-008-durability-measurementTests/EditMode/Save/AtomicFileWriterDurableTests.cs; Tests/PlayMode/FlushWorkerTests.csCOVERED
TR-save-002Savepersisted tables incl. both instanceId counters, TideState, equippedADR-0004story-001-save-seam-json; story-007-tide-table-counters-roundtripTests/EditMode/Save/SaveSeamTests.cs; Tests/EditMode/Save/TideAndCountersTests.csCOVERED
TR-save-003Saveper-drain durability within flushDeadlineMs; loss unit = drains sinceADR-0004story-003-registry-dirty-flush-queue; story-007-tide-table-counters-roundtrip; story-008-durability-measurementTests/EditMode/Save/SavePersistenceTests.cs; Tests/EditMode/Save/TideAndCountersTests.csCOVERED
TR-save-004SavesaveFormatVersion/configVersion gate; never migrate silentlyADR-0004story-002-reader-and-manifest; story-009-configversion-epoch; story-001-save-seam-json; story-005-load-pick-gate-clockTests/EditMode/Save/SaveLoaderTests.cs; Tests/EditMode/Save/SaveSeamTests.csCOVERED
TR-save-005Savefixed reconcile pipeline; owners' predicates; only HarvestDiff droppabADR-0004, ADR-0003story-003-registry-dirty-flush-queue; story-006-reconcile-order-placementTests/EditMode/Save/SavePersistenceTests.cs; Tests/EditMode/Save/SaveReconcileTests.csCOVERED
TR-save-006Saveload: full HP, no Downed, position per tide EC1; no merge/import pathADR-0004, ADR-0003story-005-load-pick-gate-clock; story-006-reconcile-order-placementTests/EditMode/Save/SaveLoaderTests.cs; Tests/EditMode/Save/SaveReconcileTests.csCOVERED
TR-save-007Saveno file I/O on the host main thread during playADR-0004story-004-flush-worker-durabilityTests/EditMode/Save/AtomicFileWriterDurableTests.cs; Tests/PlayMode/FlushWorkerTests.csCOVERED
TR-save-008Savelate flush = loud log, never a gameplay effectADR-0004story-002-save-config-stage; story-004-flush-worker-durabilityTests/EditMode/Save/AtomicFileWriterDurableTests.cs; Tests/EditMode/Save/SaveConfigTests.cs; Tests/EditMode/SourceDataSmokeTests.cs; Tests/PCOVERED
TR-save-009Saveloading raises no gameplay eventsADR-0004story-006-reconcile-order-placementTests/EditMode/Save/SaveReconcileTests.csCOVERED
TR-move-001MovementInput System; one action map; decoupled persistent aimADR-0007story-001-action-asset; story-002-input-shapes-aim; story-003-build-mode-routing; story-004-input-config-stage; story-005-input-adapterTests/EditMode/GameDataLoaderTests.cs; Tests/EditMode/GameDataShapeTests.cs; Tests/EditMode/Input/AimResolverTests.cs; Tests/EditMode/Input/COVERED
TR-move-002Movementowner-authoritative predicted locomotion 6 u/s, instant accel———NO ADR
TR-move-003Movementcollision blocks never damages; no player/enemy body collision———NO ADR
TR-move-004Movementremotes interpolated never extrapolated———NO ADR
TR-move-005Movementclosed teleport-snap list; EC21 correction as interpolated writeADR-0015 (Snap), ADR-0005 (deposit event——NO STORY
TR-move-006Movementschema-negative: no MoveSpeedModifier/stamina/encumbranceADR-0003story-002-input-shapes-aimTests/EditMode/GameDataShapeTests.cs; Tests/EditMode/Input/AimResolverTests.cs; Tests/EditMode/Input/InputShapeTests.csCOVERED
TR-inv-001InventoryItemStack + CanAdd/Add/Remove/Count; tagged stacks never mergeADR-0003 (shape)story-001-stack-rules; story-002-inventory-config; story-003-carry-and-storage-componentsTests/EditMode/CiDataGateTests.cs; Tests/EditMode/GameDataShapeTests.cs; Tests/EditMode/Inventory/InventoryComponentsTests.cs; Tests/EditModCOVERED
TR-inv-002InventoryCarryInventory owner-auth; SharedStorage host-auth instances—story-003-carry-and-storage-componentsTests/EditMode/Inventory/InventoryComponentsTests.csCOVERED / NO ADR
TR-inv-003Inventorytransfers atomic host transactions in arrival orderADR-0002 (model)story-004-transfer-commandTests/EditMode/CommandEnforcementTests.cs; Tests/EditMode/Inventory/InventoryTransferCommandTests.csCOVERED
TR-inv-004Inventoryno world-item entities; 2 equipment slots—story-001-stack-rules; story-003-carry-and-storage-componentsTests/EditMode/GameDataShapeTests.cs; Tests/EditMode/Inventory/InventoryComponentsTests.cs; Tests/EditMode/Inventory/StackBagTests.csCOVERED / NO ADR
TR-inv-005Inventorystack-list serialization (CARRY per player, STORAGE per container)ADR-0004story-005-save-tablesTests/EditMode/GameDataShapeTests.cs; Tests/EditMode/Inventory/InventorySaveTablesTests.cs; Tests/EditMode/Save/SaveSeamTests.csCOVERED
TR-inv-006InventorytransferBatchWindow host-transaction batching knob—story-002-inventory-config; story-004-transfer-commandTests/EditMode/CiDataGateTests.cs; Tests/EditMode/CommandEnforcementTests.cs; Tests/EditMode/GameDataShapeTests.cs; Tests/EditMode/InventoryCOVERED
TR-inv-007InventoryCARRY replication representation (undefined in the quick-spec)———NO ADR
TR-combat-001Combatplayer state machine + Hurt overlayADR-0015——NO STORY
TR-combat-002Combatunified strike intent at windup startADR-0015——NO STORY
TR-combat-003Combathost resolves at host-stamped instant vs current positionsADR-0015——NO STORY
TR-combat-004Combatpredicted vs host-confirmed feedback splitADR-0015 §6story-001-feedback-rules; story-002-outcome-bus; story-003-predicted-presenter; story-004-confirmed-presenter; story-006-fences-and-honestyTests/EditMode/Feedback/ConfirmedPresenterTests.cs; Tests/EditMode/Feedback/FeedbackFenceTests.cs; Tests/EditMode/Feedback/FeedbackRulesTestCOVERED
TR-combat-005CombatF1–F5 pure, AwayFromZero, EditModeADR-0003, ADR-0015——NO STORY
TR-combat-006CombatIEnemyCombat.EnterTelegraph; telegraph ≥ 400 ms; stagger; knockback; iADR-0015——NO STORY
TR-combat-007Combattelegraph phase replicated stateADR-0015 (named)——NO STORY
TR-combat-008Combatdash i-frames owner-auth; host wins if not receivedADR-0015——NO STORY
TR-combat-009CombatDowned/revive/bleed-out/Dead → home; keep-everythingADR-0015——NO STORY
TR-combat-010Combatsoft-close first on the host tickADR-0002——NO STORY
TR-combat-011CombatSwingLanded/DamageAbsorbed host-confirmed onlyADR-0003, ADR-0015story-002-outcome-busTests/EditMode/Feedback/OutcomeBusTests.csCOVERED
TR-combat-012Combatload validation (telegraph, phase sum, DR, bands, unarmed)ADR-0006story-010-combat-configTests/EditMode/CombatStageTests.csCOVERED
TR-combat-013CombatHUD data: own/party HP, Downed indicator, damage numbersADR-0015 (IPlayerCombatView), ADR-0014 (story-004-confirmed-presenter; story-005-flyouts-and-edges; story-007-hudTests/EditMode/Feedback/ConfirmedPresenterTests.cs; Tests/EditMode/Feedback/WorldSpaceUiFenceTests.cs; Tests/EditMode/Ui/HudTests.cs; Tests/COVERED
TR-combat-014Combatsame-tick mutual kill: enemy damage first, both applyADR-0002 (1b), ADR-0015——NO STORY
TR-combat-015Combatcombat state never persistedADR-0004 §6——NO STORY
TR-ldu-001LDUpreload / activate at φ / teardown at grace expiryADR-0005story-006-addressables-groups-gates; story-008-land-lifecycle-slots; story-009-landnet-ngoTests/EditMode/Land/AddressablesGateTests.cs; Tests/EditMode/Land/LandLifecycleTests.cs; Tests/PlayMode/LandCatalogCheckTests.cs; Tests/PlayCOVERED
TR-ldu-002LDUlayout() pure, byte-identicalADR-0003, ADR-0005story-003-layout-build; story-007-candidate-cells-toolTests/EditMode/Land/CandidateCellsTests.cs; Tests/EditMode/Land/LayoutTests.csCOVERED
TR-ldu-003LDUKnownLandTemplates append-only, seeded, permanentADR-0004, ADR-0005story-001-land-shapes; story-004-known-land-templatesTests/EditMode/Land/KnownLandTemplatesTests.cs; Tests/EditMode/Land/LandShapeTests.csCOVERED
TR-ldu-004LDUsole-source warning; depositPoint + socketNoBuildRadius per socketADR-0005, ADR-0006story-001-land-shapes; story-002-templates-and-knobs; story-005-sole-source-strip-readoutTests/EditMode/Land/LandShapeTests.cs; Tests/EditMode/Land/StripReadoutTests.cs; Tests/EditMode/Land/TemplateDataTests.cs; Tests/EditMode/SoCOVERED
TR-ldu-005LDUenemy spawn contractADR-0005 (call)story-008-land-lifecycle-slotsTests/EditMode/Land/LandLifecycleTests.cs; Tests/PlayMode/LandLifecyclePlayTests.csCOVERED
TR-ldu-006LDUtraversalProfile; stripTimeEstimate CI readoutADR-0006story-001-land-shapes; story-002-templates-and-knobs; story-005-sole-source-strip-readoutTests/EditMode/Land/LandShapeTests.cs; Tests/EditMode/Land/StripReadoutTests.cs; Tests/EditMode/Land/TemplateDataTests.cs; Tests/EditMode/SoCOVERED
TR-ldu-007LDUmemory: ≤ 2 GB; one atlas per template; 64 MB budget owned by LandLifecyADR-0005story-002-templates-and-knobs; story-006-addressables-groups-gatesTests/EditMode/Land/AddressablesGateTests.cs; Tests/EditMode/Land/TemplateDataTests.cs; Tests/EditMode/SourceDataSmokeTests.cs; Tests/PlayMoCOVERED
TR-ldu-008LDUAppend at first φ only, never at preloadADR-0005story-004-known-land-templates; story-008-land-lifecycle-slotsTests/EditMode/Land/KnownLandTemplatesTests.cs; Tests/EditMode/Land/LandLifecycleTests.cs; Tests/PlayMode/LandLifecyclePlayTests.csCOVERED
TR-harv-001Harvestingnode swingsRemaining host-auth, replicatedADR-0005 (LandNet list home)story-003-node-table-and-diffsTests/EditMode/GameDataShapeTests.cs; Tests/EditMode/Harvest/NodeTableAndDiffsTests.cs; Tests/EditMode/Save/SaveReconcileTests.cs; Tests/EdiCOVERED
TR-harv-002Harvestingthree-gate resolution in one critical sectionADR-0002story-004-harvest-resolve-command; story-005-soft-close-drop-and-teardown-orderTests/EditMode/CommandEnforcementTests.cs; Tests/EditMode/Harvest/HarvestResolveCommandTests.cs; Tests/EditMode/Harvest/SoftCloseDropAndTearCOVERED
TR-harv-003HarvestingHarvestDiff sparse, synchronous writeADR-0004 (order/predicate)story-003-node-table-and-diffs; story-008-diff-reconcileTests/EditMode/GameDataShapeTests.cs; Tests/EditMode/Harvest/DiffReconcileTests.cs; Tests/EditMode/Harvest/NodeTableAndDiffsTests.cs; Tests/COVERED
TR-harv-004Harvestingreferent chosen at windup start; own phase constantsADR-0003, ADR-0015story-001-harvest-rules; story-002-harvest-config; story-006-referent-and-intent; story-007-harvest-phase-machineTests/EditMode/AssemblyEnforcementTests.cs; Tests/EditMode/CiDataGateTests.cs; Tests/EditMode/GameDataLoaderTests.cs; Tests/EditMode/GameDatCOVERED
TR-harv-005Harvestinginteger deterministic yield; teardown after last-tick resolutionADR-0002, ADR-0003story-001-harvest-rules; story-004-harvest-resolve-command; story-005-soft-close-drop-and-teardown-orderTests/EditMode/CommandEnforcementTests.cs; Tests/EditMode/Harvest/HarvestResolveCommandTests.cs; Tests/EditMode/Harvest/HarvestRulesTests.csCOVERED
TR-harv-006Harvestingload validationADR-0006story-002-harvest-configTests/EditMode/AssemblyEnforcementTests.cs; Tests/EditMode/CiDataGateTests.cs; Tests/EditMode/GameDataLoaderTests.cs; Tests/EditMode/GameDatCOVERED
TR-harv-007Harvestinghost proximity sanity check; confirmed crack/flyoutADR-0002, ADR-0015story-004-harvest-resolve-command; story-006-referent-and-intentTests/EditMode/CommandEnforcementTests.cs; Tests/EditMode/Harvest/HarvestResolveCommandTests.cs; Tests/EditMode/Harvest/ReferentAndIntentTesCOVERED
TR-harv-008HarvestingharvestWindup + harvestActive ≥ 0.18 load ruleADR-0006 stage 3story-002-harvest-configTests/EditMode/AssemblyEnforcementTests.cs; Tests/EditMode/CiDataGateTests.cs; Tests/EditMode/GameDataLoaderTests.cs; Tests/EditMode/GameDatCOVERED
TR-craft-001CraftingRecipeDef + 11-row validationADR-0006——NO STORY
TR-craft-002CraftingKnownRecipes union reconcileADR-0004——NO STORY
TR-craft-003Craftingcraft legality + commit critical sectionADR-0002 (model)——NO STORY
TR-craft-004CraftingInstanceMetadata table; orphan/mystery reconcileADR-0004, ADR-0003 (IGearHooks)——NO STORY
TR-craft-005Craftinghook values per tier + override; ceilings validatedADR-0006——NO STORY
TR-craft-006Craftingdurability drain from events; instant repairADR-0003, ADR-0015 (events)——NO STORY
TR-craft-007Craftingera gate reads KnownLandTemplates; ItemDef.SourceTemplatesADR-0006, ADR-0005——NO STORY
TR-craft-008Craftingcraft beat predicted; host commit; no occupancy lock———NO ADR
TR-craft-009Craftingschema-negatives; instant swap equipADR-0003——NO STORY
TR-craft-010CraftingstationRange one knob, two semantics (Craft reach / BB cost draw)ADR-0006 stage 6——NO STORY
TR-bb-001Base BuildingStructureDef + 12-row validationADR-0006——NO STORY
TR-bb-002Base BuildingStructureInstance registry; replicationADR-0003 (shape)——NO STORY
TR-bb-003Base Buildingclient-local build mode; pure snap; no-alloc F1ADR-0003story-007-unity-interopTests/EditMode/InteropEnforcementTests.csCOVERED
TR-bb-004Base BuildingplacementLegality 8 conjuncts, pure; one critical sectionADR-0002, ADR-0003——NO STORY
TR-bb-005Base BuildingdemolishLegality; refund to CARRY; relic reconcileADR-0004——NO STORY
TR-bb-006Base Buildingtwo station predicates; storage placement spawns SharedStorageADR-0003——NO STORY
TR-bb-007Base Buildingwall colliders; EC21 owner-rail correctionADR-0003 (FindCorrectionCell)——NO STORY
TR-bb-008Base BuildingCI gates live-recomputedADR-0006 stage 10story-004-validation-pipelineTests/EditMode/PipelineTests.csCOVERED
TR-bb-009Base Buildingghost outline + grid overlay < 100 draw callsADR-0013 §8 (ghost 0 + grid 1 = +1; V4 marstory-004-build-overlayTests/EditMode/Tint/BuildOverlaySetupTests.cs; Tests/EditMode/Tint/ReachGridMeshTests.cs; Tests/PlayMode/BuildOverlayPlayTests.cs; Tests/PlaCOVERED
TR-bb-010Base BuildingEC21 four-neighbour ring-check algorithm pinnedADR-0003——NO STORY
TR-bb-011Base Buildinghost-position read semantics (exact host / one-RTT remote)ADR-0003 (IHostPositions)——NO STORY
TR-ai-001Enemy AIhost-simulated flat state machines; no client AIADR-0015 (step 3)——NO STORY
TR-ai-002Enemy AIseparation steering; aggro/leash/de-aggro heal———NO ADR
TR-ai-003Enemy AImaxUninterruptibleTelegraphsPerTarget = 1ADR-0006, ADR-0015——NO STORY
TR-ai-004Enemy AIcomposition pure of (template, variationSeed); ephemeralADR-0003 (home)——NO STORY
TR-ai-005Enemy AIdensity monotonic load-check; only EnterTelegraphADR-0006, ADR-0015——NO STORY
TR-ui-001UI/HUDclosed screen-space HUD list; UI Toolkit (architecture ruling)ADR-0014 §1 (UI Toolkit screens + sprite wstory-001-theme-panels-uss-gate; story-007-hudTests/EditMode/Ui/HudTests.cs; Tests/EditMode/Ui/UiSetupTests.cs; Tests/PlayMode/HudPlayTests.cs; Tests/PlayMode/UiScaleSpikeTests.csCOVERED
TR-ui-002UI/HUDco-op affordancesADR-0014 (edge indicators, who-took-what)——NO STORY
TR-ui-003UI/HUDreason-string precedence / stability / hysteresisADR-0014 §6 (ReasonSelector.Step pure, istory-003-reason-selectorTests/EditMode/Ui/ReasonSelectorTests.csCOVERED
TR-ui-004UI/HUDaggregation ban; gamepad nav + focus; contrast; no animation-gated inputADR-0007 (rebind, capture), ADR-0014 (schestory-006-binding-persistence; story-007-rebind-service; story-002-ui-json-config; story-004-settings-service; story-005-panel-manager; story-006-rebind-disposal-timeout; story-008-title-and-pause; story-009-settings-screen; story-010-schema-fencesTests/EditMode/Input/BindingPersistenceTests.cs; Tests/EditMode/Ui/PanelManagerTests.cs; Tests/EditMode/Ui/SchemaFenceTests.cs; Tests/EditMoCOVERED
TR-tint-001Tide-Tintone Shader Graph sprite shader; _TideTint/_TideAmount globals; neverADR-0013 §1 (Scope = Global; V1 + abstory-001-driftlayer-shader-gate; story-003-taxonomy-batching-negativesTests/EditMode/Tint/TideTintNegativesTests.cs; Tests/EditMode/Tint/TideTintShaderGateTests.cs; Tests/PlayMode/TideTintRenderTests.cs; Tests/COVERED
TR-tint-002Tide-TintDriftLayer taxonomy exclusionsADR-0013 §2 (exclusion by material, notstory-003-taxonomy-batching-negativesTests/EditMode/Tint/TideTintNegativesTests.cs; Tests/PlayMode/TideTintTaxonomyTests.csCOVERED
TR-tint-003Tide-Tintconsumes tide floats per frame; future post-process Render-Graph-nativeADR-0013 §5–§6 (TideTintDriver; no custostory-002-tint-driver; story-006-tint-fencesTests/EditMode/Tint/TideTintDriverTests.cs; Tests/EditMode/Tint/TideTintFenceTests.csCOVERED
TR-tint-004Art/Netcodeflipbook animation via synced frameIndex———NO ADR

Coverage Summary

Status Count %
COVERED — full chain complete5952 %
COVERED / NO ADR — single-machine half implemented; ADR-0010 half pending21 %
NO STORY — ADR exists, not yet implemented3833 %
NO ADR — architectural gap108 %
BLOCKED (Gate 0)21 %
Total requirements112100 %

Per layer (full chain): Foundation 31/39 (79 %) · Presentation 6/8 (75 %) · Core 21/38 (55 %) · Feature 3/26 (11 %) · System 0/1 (0 %)

Uncovered Requirements (Priority Fix List)

Foundation layer gaps

Core layer gaps

Presentation layer gaps

Feature layer gaps (lower priority — Gate 0 / not yet designed for implementation)

History

Date Full Chain % Notes
2026-09-0754 % (61/112)Initial RTM. Foundation 31/39, Presentation 6/8, Core 21/38, Feature 3/26. Every Done story has a real test file; three stated-name drifts recorded.