# Network protocol consistency prerequisite 9 October 2026. Bounded prerequisite discovered by the Task3 manual four-player gate. Protocol repair and guard are implemented and verified; the broader prefab-identity repair hypothesis is explicitly deferred. ## Completed narrow repair The saved MainMenu protocol override was reverted through the Editor, retaining the source protocol 10 and other overrides. `NetworkProtocolBuildValidation` checks effective entry/source protocol for all builds; `CombatReadabilityBuilder` uses the existing canonical constant. `network-protocol-native-red` retains the native failure; `network-protocol-full-green` passes 1053 EditMode tests. Saved/imported idempotence and effective Editor config are retained in `network-config-editor-after-protocol.json`. Fresh normal/debug/release builds have zero errors. Actual Editor-host/four-player clustered/split acceptance passes in `pack-manual-four-d87e155889ee4f2bae963aec9141c32f`; matching two/four debug, ten-phase menu and 23-phase full-stage reports also pass. No prefab identity repair, protocol increment, authority or matching relaxation was performed. ## Decisive runtime evidence The diagnostic prototype `3fe04990632f47b4aa9a3ee58674c6e4` reports effective protocol9; the initialized Editor host reports10. All six initialized registered keys and named prefab mappings are identical. Other hashed settings match. Client fresh config hash is6287651363099250907; Editor cached/fresh hash is9575698677361938262. This isolates the protocol difference, rather than prefab source identity drift, as the failed mixed-entry join cause. Evidence: `TestResults/network-config-editor-before-repair.json` and retained client reports under `pack-manual-four-c05203af768e4e29961fa6146e0211ee` (clean cleanup). `Assets/_Project/Scenes/MainMenu.unity` has the sole stale serialized `NetworkConfig.ProtocolVersion = 9` override on source manager fileID1390116560248512097/AppRoot GUID38b57d87ab30cbf44bfb5bbd09cd7496. The source prefab is10. Normal built entry carries that persistent menu manager into the stage, whereas direct Editor stage entry instantiates the source prefab. Native preview inspection reads exactly one manager, effective9/source10/override true. Matching standalone pairs pass because both enter through9. All three independent reviewers approve the narrowed repair: revert only that override through `PrefabUtility.RevertPropertyOverride`, preserving scene GUID/component IDs/every other override and saving only MainMenu. Add a read-only shared build preprocessor checking source/effective entry protocol against existing `PlayerWarpPrefabUpgrade.ProtocolVersion = 10`; no protocol increment or matching/authority bypass. Replace the historical `CombatReadabilityBuilder.UpdateProtocolGuard` literal9 with the canonical constant; do not run its broad scene rewrite. Native tests/repair/reimport, idempotence, rebuilt Editor/client config parity and actual four-player/standalone gates remain required. No prefab hash asset repair or broader identity guard is part of this slice. ## Evidence and boundary Matching standalone two/four arena, normal-menu and full-stage runs pass. Editor normal host to three matching players fails before fixture actors spawn: host NGO reports `NetworkConfig mismatch`, and clients subsequently report Relay not connected / `NetworkManagerStartFailed`. `TestResults/pack-manual-four-3a332cfebefa47a19fb0b528ff7f7d5a/result.json` retains the failure and successful owned cleanup. The saved AppRoot is shared by both entries and retains protocol10/tick30/approval/scene management/ForceSamePrefabs, unchanged length-safety/RPC-hash settings. Pinned NGO hashes those flags, its protocol constant and sorted initialized registered prefab keys; scene lists are not part of this hash. Actual built-client initialized keys remain necessary causal evidence. | Registered prefab | Loaded Editor hash | Saved source hash | |---|---:|---:| | Player | 1166317964 | 3028890874 | | Melee | 1852363599 | 1623899482 | | Ranged | 3715369289 | 3715369289 | | Pulse | 2092721090 | 4258574631 | | Siege | 2742082191 | 4258574631 | | Bombardier | 3808684707 | 3715369289 | Loaded assets/components report not dirty, while saved Player/Melee/Pulse/Siege include prefab scene-placement state. NGO validates persistent GlobalObjectId hashes and normalizes imported prefab placement. Existing authoring helpers save preview contents without a final persistent identity/source proof; copied identities are a supported hypothesis, not a proven last-writer attribution. ## Reviewed decision Independent technical/gameplay/overall-design reviews approve a bounded disposable native persistence experiment, read-only saved/imported/unique identity validation and shared build guard. No protocol, prefab matching, approval, transport or gameplay relaxation is authorised. Preserve GUIDs, root/NetworkObject/component local IDs, NetworkBehaviour ordering, definitions, transforms/hitboxes, authority and all other serialized settings. Manual terrain/surfaces/pins and unrelated user settings remain untouched. Earlier provisional decision: collect bounded read-only initialized Editor/client config diagnostics before any identity repair. That diagnostic stage proved identical actual keys and a different protocol. The identity experiment, repair and identity build guard are therefore deferred; no such asset repair was performed. Prefer one `IPreprocessBuildWithReport` read-only validator for every build entry. It must name the affected assets and distinguish duplicate registration from duplicate identity. No new player UI/F8 feature is needed. Future authoring helpers need a final persistent identity check; broad helper rewrites are outside this prerequisite. ## Required proof - Actual initialized Editor and built-client config flags/hash/registered key-to-prefab mapping before claiming causality. - Disposable copy’s own identity, native save/import preservation and byte-stable repeat; exact-document parser/zero/duplicate/drift rejection without asset mutation. - Approved original asset diffs limited to canonical hash and native normalized placement fields, with unique registered keys and stable GUIDs/IDs/order/settings. - Fresh normal/debug/release builds; actual Editor-to-player admission; distinct remote player/enemy type presentation; matching two/four lifecycle/progression and the previously blocked clustered/split manual gate. The required identity proof below records the abandoned hypothesis's future boundary, not current authorised implementation. Current work is the narrow protocol override/guard above. Exact-origin Git push approval remains separate and pending.