Secret Slide missing Star box: verified preflight, implementation handoff
SUPERSEDED IMPLEMENTATION STATUS: see native-item-block-integration-2026-10-24.txt.
Native profile21/resources/42 callback adapters and spawn now pass. Hit/reward
still unverified; two failed input-pilot attempts need Astra Low investigation.
The original preflight below remains historical evidence, not current source state.
2026-10-24. Status PARTIALLY VERIFIED; native actor not connected yet.
Recommended next model Sol High. Saved goal says Luna selected. This is a
native ABI/resource/reward integration task, beyond the previous renderer fix.
No implementation/debug attempts have failed; this handoff precedes code changes.

Previous goal turn made verified progress: black rear-plane fix, native build,
five rendering tests and muted before/after plus original-entry regression.
This turn verified the original Star-box placement and exact callback/resource
closure needed to begin native integration. The known working build is preserved.

Authoritative working EXE:
BA95AB9AE7F7AAFDC90A8ADBEDE38C5F997EAAF4476CCB31E659A8B61A02489A
Do not replace it or install/promote a new build until relevant tests pass.

Cause established: original level29 Mission1 places actor21 ITEM_BLOCK with
CONTENT_STAR and StarId1. Native actor registry does not assign21, and the
current native linker map has no ITEM_BLOCK factory. This is not merely the
box being clipped or hidden. No scene placement or reward was synthesized.

Original implementation is src/actors/daObjHatenaBlock_c.cpp and its header.
One class owns20..25, but initially register only the requested/verified21;
other prize and cap variants retain their original code and need later coverage.
Do not substitute the unrelated daSlide_Box_c ship crate. The original Star
spawner is func_ov102_02149478: actor178, mStarId|0x40, then destroy block.
The original collision callbacks accept attacks from below, ground pound,
kick/attack and mega-hit according to the existing tests/state. Preserve them.

Verified against local overlay102: all42 PMF constants referenced by the source
have8-byte original records, zero adjustment, and unique methods in this class.
These feed3 enter/update state rows,8x4 prize cells and1x4 VS prize cells.
Never call their original ARM addresses on PC. Rebind to native methods using
the established host-transform/data-audit patterns. Explicitly check actual
MSVC member-pointer representation; do not assume it matches the ROM record.
All8 static resource handles were identified: models/animation/collision;
ITEM_BLOCK model0x800e and KCL0x800d use the original archive-handle scheme.
Construct/release through existing SharedFilePtr lifetime rules after native
filesystem startup; do not create a separate file-handle implementation.
Audit exact native profile against original g_profile_ITEM_BLOCK; keep original
priority/flags/ranges. Add sizeof/embedded-field assertions for native class,
base/model/collider/shadow resources. Keep matched src/ untouched; adapt in
port/tools and the existing native registry/bridge where needed.

Useful existing architecture:
port/tools/boot_closure.py DEFAULT_ROOTS and per-TU host transforms.
port/tools/block_host.py / koopa_host.py / battlefield_platform_host.py.
port/hal/actor_vtables.cpp PcNativeActorProfile and spawn-table assignments.
port/tools/check_native_actor_data.py PE/profile/callback comparison pattern.
port/tools/link_data.py owns private generated ROM data. Do not export it.
Grow/build the closure through the existing generation workflow; do not stub
unresolved reward/collision methods just to make linking pass.

Private repeatable audit: work/audit-secret-slide-item-block-20261024.py
Private output: work/secret-slide-item-block-preflight-20261024.json
It checks actual scene entry/category/mission/param, all42 callback targets,
the original native-profile metadata,8 resource handles, missing native factory
and unchanged known EXE. Placement coordinates and callback data stay private.
The recovered class source SHA256 is recorded to detect stale mappings.

Next runtime gates: original castle portrait-to-slide entry; input-only route
to authored box; native spawn/render/collision; ordinary accepted hit, bounce,
particles/audio, exactly one original PowerStar; collection/credit/save/reload
and repeat collection without duplicate credit. Tests muted, isolated saves,
show screenshots. No teleports, forced actor state, fake reward or collider bypass.
Current background diagnostic route falls off before reaching the box; it is
not a completion route. Derive a safe route from original collision/placement
data and inspect actual state after each attempt rather than blindly retrying.

Separate unresolved slide work: authored finish mechanism and timer/HUD.
Player special surface15 starts Timer,16 stops/checks it and can spawn a timed
PowerStar with param0x42. Native Timer methods already exist. Trace actual
surface/contact/flag/time and RenderTimeTimer before changing them. No separate
finish-line actor has been established. Do not invent one or change the timing
threshold. Full-game actor coverage and all other planned features remain open.

No new native gameplay code, compilation, game launch, F install, publication
or stable promotion in this preflight turn. No runtime screenshot claimed.
