FROZEN NATIVE QUALIFICATION PROPOSAL — no engine launched by author

Apply /tmp/erri-objective-map-proposal/fix.patch first (updated to width360,
root/text Clipping False, icon-centered vertical anchor, SetObjective caching and
actual element setter test), then this directory's fix.patch. Exact source/baseline
hashes are recorded in both source-manifest.json files. Neither target nor original
workspace was edited. Both patches apply-check against current target.

Invocation on the assembled private frozen source, using root-owned disposable
prefix/profile and the existing hidden/muted runner:
 python3 tools/headless_workbench.py --project core --smoke objective-map --rounds 1 --timeout 240 --compat <private-disposable-compat> --profile <new-private-profile>
Optional --steam or external dependency options remain runner policy, unchanged.
Wrong project or rounds now fails immediately after parse_args before any profile
or prefix processing. Actual CLI refusal tested for chat and rounds2, no outputs.

Fixture selector is errBaseSmoke=1 + errSmokeOutcome=objective-map. Ordinary core
NativeBaseSmoke skips this independent fixture; Chat smoke is not enabled. The
fixture has180s total preparation budget and fixed90s budget after construction.
Do not invoke --project chat (prelaunch refused).

Measures actual standard MapMenu FULLSCREEN configuration and actual shared
SharedMapRenderTarget.layout/MapPlain configuration. New overlay root/handler,
native text/image dimensions, disclosed coordinates, pixel placement and icon
screen center, pan/zoom/culling, close/reopen, reusedconfig/differentroot, own stop,
and unchanged annotation count are asserted. No permission flags are altered.

Six bounded native screenshots under profile logs:
 err-objective-map-standard-rough
 err-objective-map-standard-exact
 err-objective-map-standard-reopened
 err-objective-map-shared-root
 err-objective-map-shared-long-warning
 err-objective-map-shared-reused-root
The long-warning stage waits750ms before screenshot. Inspect images manually.
Shared layout RT is disabled and NOT bound to a model. That is intentional: these
screenshots/geometry prove only the shared-root UI layout if it actually renders.
They do NOT qualify physical held texture, actual500ms capture, manual user input,
restricted-platform behavior, multiplayer or remote JIP. A blank shared screenshot
must remain an explicit failed/unproven visual gate; do not count widget identities
as pixel proof. Native icon resource size does not identify the chosen atlas glyph;
rough/exact glyph appearance requires screenshots.

Focus checks:
probe-green.log: actual OwnsMap/Stop methods + native doubles; duplicate and foreign
map cleanup behavior; actual wrong-selector CLI refusal; fixed budget/gating checks.
Producer overlay-green, mine-green and element-green logs are adjacent proposal.
Legacy ERR_NativeDiscoveryMapProbe is unchanged and is not evidence for this path.

Potential native failure boundary deliberately retained: a real foreign map adopted
while the fixture owns an old MapMenu prevents closing that menu, since its native
OnMenuClose would close the foreign map. No such interference is arranged; a failed
run must be reset through private runner cleanup. No broad menu cleanup is used.

SUPPORTED PARENT CORRECTION (after retained native CanvasWidget refusal)
The fixture independently resolves ERR_ObjectiveOverlay for the authored shared
root, otherwise UIIconsContainer.GetParent() for the standard menu. Objectives
are siblings of native icon ownership, not children removed by native faction
refresh. Exact actual widget parent, presentation parent and native canvas are
asserted. FrameSlot coordinates include canvas-screen minus container-screen
origin before DPI conversion; actual icon screen center is independently checked.
probe-parent-green.log executes the entire actual Inspect method, including
nonzero unequal origins, DPI2/1.25, wrong parent/root/canvas, wrong screen box,
rough coordinates, and dedicated-overlay priority. Prior cleanup/selector cases
still pass. Removing the screen-origin adjustment compiled and runtime-failed;
log: /tmp/erri-objective-map-review-0744/parent-offset-mutation/red.log.
No native operations were run for this correction. Existing native compile/GUI
errors remain retained; parent decides separately whether script-specific geometry
assertions succeed. Screenshots must still establish glyph appearance, long-label
fit and clipping. This fixture does not prove manual input or held-map capture.

ASYNCHRONOUS MENU-CLOSE AND EXTERNAL UI CAPTURE CORRECTION
Installed core SDK MenuManager.CloseMenu queues closure for the next manager
update. The fixture now records one accepted request, keeps its original menu
pointer, and waits under the unchanged90s deadline for its exact-config OnMapClose
callback AND closed native map. The overlay-root absence assertion still applies
after these real lifecycle conditions. Foreign open map replacement fails without
closing it; Stop does not queue the same request twice. Actual methods cover
callback-before-IsOpen=false, unrelated callback, no callback, leaked widget,
repeated polling, cancellation and foreign replacement (probe-async-green.log).
Restoring the immediate-close assumption compiles then runtime-fails in
/tmp/erri-objective-map-review-0744/async-close-mutation/red.log.

System.MakeScreenshot(path) has NO include-UI argument in installed core SDK;
attempt3 outputs showed the3D view only, so these world captures are NOT UI proof.
Six exact log checkpoints now hold each inspected state1500ms before mutation:
ERR OBJECTIVE CAPTURE READY: standard-rough
ERR OBJECTIVE CAPTURE READY: standard-exact
ERR OBJECTIVE CAPTURE READY: standard-reopened
ERR OBJECTIVE CAPTURE READY: shared-root
ERR OBJECTIVE CAPTURE READY: shared-long-warning
ERR OBJECTIVE CAPTURE READY: shared-reused-root
Parent's separately authorized private-display capture may read these windows.
After each hold, exact active map ownership is checked again before any following
mutation, pan, close or teardown. No display capture is performed by this fixture.

FINAL STANDARD VISUAL QUALIFICATION CHECKPOINT
Synthetic marker now uses player origin+(1037.25,0,1063.75), without moving any
actor. Existing rough quantization and exact projection assertions remain. This
separates the centered annotation from the nearby native player arrow/coordinates.
The original six checkpoints remain. A seventh checkpoint is now emitted on the
ordinary STANDARD map, after actual Inspect of the long mine-warning label:
ERR OBJECTIVE CAPTURE READY: standard-long-warning
The label is held1500ms, then restored to Radio station before menu close, so
standard reopening/shared stages retain their prior assertions. Actual extracted
phase blocks5/22/23 prove label inspection, bounded delay, single capture, no early
close/reset and final restoration. Existing actual cleanup/async/geometry tests
still pass (probe-final-visual-green.log).

Parent's preceding owned-window run passed91 assertions and displayed standard
overlay text; those earlier markers overlapped native center glyphs. The disabled
shared RT root rendered only the world, so shared-root evidence remains GEOMETRY
ONLY. No physical held texture/input experimentation is added or claimed.

CENTER-CURSOR SEPARATION
Center(zoom) now pans to disclosedX+100.0/zoom, disclosedZ. This places
the annotation100screenpixels left of the centered native cursor at both0.3
and0.6zoom without moving input or changing marker data. Actual Center method
regression verifies both scales, unchanged data and native pan arguments; all
previous checks pass (probe-final-center-green.log). Existing image projection
assertions are unchanged.
