# Discovery markers during ordinary play `ERR_DiscoveryMap.c` now creates successor-owned objective markers with their label already set, refreshes the existing native text widget when knowledge changes, and prevents native annotation editing/dragging/deletion from altering objective facts. Discovery knowledge and location coordinates remain server-owned; local marker presentation adds no synchronization or mission progress authority. The installed native implementation establishes the defects: - `SCR_MapMarkerManagerComponent.InsertStaticMarker:169–175` assigns a local player owner and synchronously calls `OnCreateMarker`. - `SCR_MapMarkerBase.SetCustomText:198–201` changes only stored data. `OnCreateMarker:344–378` initializes a widget from that data; `OnUpdate:409–431` updates position, not label text. Previously a map already open during discovery could show a blank newly-created marker or retain `Unknown location` after identification until reopening. - `SCR_MapMarkersUI.IsOwnedMarker:114–123` controls editing and dragging at lines 1080,1287,1303. Its deletion entry and quickbind check `CanBeRemovedByOwner` at lines947,1049. Previously objective markers passed all these native checks, so a player could remove a discovery marker permanently or move it to a false coordinate; the successor's cached knowledge prevented restoration. The new `ERR_DiscoveryMarker` subclass changes only these authored local markers. It clears the insertion-assigned owner at the native creation boundary and marks itself nonremovable. Its label is scenario-authored rather than a player annotation, so its own creation and label updates use the native synchronous text path; unrelated player marker filtering and behavior remain unchanged. Label updates while closed retain model data for native recreation without creating duplicate markers. `ERR_NativeDiscoveryMapProbe.Run()` is an opt-in WORKBENCH check, to invoke once after a real local fixture participant and native marker manager exist. It creates two owned hidden native marker widgets: the unchanged vanilla marker demonstrates the stale text and user-annotation eligibility; the successor marker demonstrates immediate label refresh and protected ownership. It then detaches/recreates its own widget and checks retained text and exact marker-count cleanup. No mission locations, discovery state, inventories, map menus or player input are altered. Invoke `Stop()` from fixture cleanup if interrupted. The probe has not been run by this agent; native compilation and the actual result remain pending centrally. `python3 tools/check.py` passed after these changes. The audit also inspected native prison gate inheritance/context, stock `SCR_OpenStorageAction`, radio tuning phase/knowledge checks and native helicopter/result presentation. Source alone does not establish held-input reachability, collision clearance while walking through the gate, dragging stock in a real inventory window or manual boarding/flying. These remain ordinary-play tests; direct completion fixtures cannot substitute for them. A separate inherited-gate destruction/progression vulnerability was reported for follow-up, without changing gate health in this marker patch.