Skip to content

Project Status

github-actions[bot] edited this page Oct 6, 2026 · 262 revisions

Project status

Fire/Bridge multi-box credential gate correction (2026-10-06): Runtime-confirmed bounded. Stock handlers 0x8007206C (Fire IDs 0x17..0x19) and 0x80071FE8 (Bridge IDs 0x1D..0x1F) require all three credentials but stock scans only the ten-slot LIVE inventory. The production correction changes only each handler's ownership scan base/count from LIVE 0x800A600C, 10 words to authoritative backing 0x800A6048, 40 words; native physical use-site gating and completion actions remain stock. Disposable v03 composed the real production four-box switching/masking path and BOX n OF 4, distributed each three-credential family across multiple boxes, and used proof-only placement/gate bypass at the exact Fire/Bridge use-zone trigger records. The maintainer manually switched boxes and confirmed both positive and negative controls in both Fire and Bridge: all three owned across boxes succeeds; one credential genuinely absent fails. Positive SHA-256 9952a2ceb4d3e64888bb1f2662560a703f15db0613fd07043906a8ca6539be25; negative SHA-256 f6521862d51ab2899184e41277e56e11c0d2f43630b732ff5e7996218236d812. Runtime scope is the 40-slot ownership correction; the proof bypassed the unchanged stock physical use-site gate for convenience.

Inventory HUD production wording follow-up (2026-10-05): Runtime-confirmed closed. First webapp runtime after #146/#147 exposed that #146 had promoted proof-only slash wording into production. Plain / is a known-bad native-font glyph. PR #148 restored the earlier accepted REQ. POWERS X-Y + right-aligned CHKS XX-85 (Vanilla: REQ. XP 5100), and the maintainer subsequently generated and tested a deployed-webapp ROM and reported that it looks correct. The regression reproduced with Powers-as-pickups both ON and OFF and was presentation-only; Required Powers remains independent of pickup mode.

Native Inventory HUD closure (2026-10-05): v20 Runtime-confirmed the first-load 0x1200 allocation correction; v21 then Runtime-confirmed the completed TEST LAB Inventory presentation with all nine Power pickups, colored STG# credential labels, real paper titles, streamed portraits, ordinary-row font/palette forwarding, plus the accepted native-font-safe status format (REQ. POWERS X-Y, CHKS XX-85); #146 temporarily regressed those strings to slash forms and the follow-up restores them. A dense debug layout exposed a separate rapid-Power lifecycle edge: v22 proved the white-flash wrapper's synchronous sleeps were causal, and v23 Runtime-confirms the accepted correction: award synchronously, run the three 2-tick white pulses in one guarded child process, and allow later rapid Power pickups to award immediately. The shared browser/CLI integration now promotes this architecture without adding a new flash allocation. Final representative full-seed production-composition runtime validation remains the release gate.

Last consolidated: 2026-10-01. Focused global-generation promotion update: 2026-10-03.

PR #137 global-v2 promotion approved: the shared browser/CLI path now generates, solves, and materializes an 85-check global layout. The maintainer reports the global-v2 proof functioning correctly and has approved merging it. Runtime evidence remains bounded; an exhaustive eight-stage/full-seed pass is not claimed. The persistent FX-crunch investigation is deferred and has no established attribution to global generation.

Powers as pickups and Required powers are independent. OFF retains vanilla earned XP; no additional earned-XP simulation or validation gate is required. The solver requires zero shuffled Power Upgrade items in OFF mode because none exist in that pool. This does not change the Fortress gate: Vanilla retains the stock 5100-XP check, and Custom/Seed still apply their selected XP threshold in either mode.

Focused lifecycle update (2026-10-01): lifecycle v06 is Runtime-confirmed and promoted to the shared production pipeline. The exact accepted reference is Very Hard / 9 total lives / 5 continues / persistent HP ON. The shared core now parameterizes that same lifecycle control flow for build-time difficulty, starting lives (1..10), starting continues (0..5), and persistent HP ON/OFF; browser defaults are Very Hard / 5 / 3 / HP ON. Non-reference combinations are Implementation/CI-confirmed pending representative runtime coverage. v04 remains Rejected / unsafe composition. See Lifecycle static closure, Persistence/inventory/lifecycle, and Web patcher/product behavior.

Scope: This page is the current-state dashboard for MKMSZR. It owns production/proof/pending maturity, current blockers, and priority order. It does not own full 1.0 requirements or long proof chronology.

Canonical release requirements and acceptance gates: 1.0 requirements and roadmap. Detailed runtime evidence: Runtime validation status. Detailed mechanisms and proof histories remain on their owning domain pages.

Evidence labels are listed concisely on Home and applied under the methodology in Research workflow: Runtime-confirmed, Static-confirmed, Implementation/CI-confirmed, Hypothesis / strong inference, Rejected / failed, and Pending.

Production systems

System Product state Current evidence / limit
Clean-ROM validation, guarded patching, separate output, N64 checksum update Production Implementation/CI-confirmed for the supported USA Rev. 0 ROM; output is separate from the clean input
Compact eight-stage selector Production Runtime-confirmed A-button title entry across all eight safe stages. Accepted v03a also Runtime-confirms the title-blue animated cursor and one title MOVE sound per valid Up/Down press without the delayed audio corruption seen in rejected v02. Stage choice remains Start; an added confirmation chime is deliberately deferred. Unsafe stock entries are excluded.
16 KiB runtime reservation and native payload Production Runtime-confirmed 16 KiB arena floor on the bounded all-stage profiler proof and no regressions reported on the tested full-production TEST 16KB + rainbow composition. The established Runtime V2 layout remains in the first 1 KiB; the remaining 15 KiB is an unassigned build-time expansion pool with CI-enforced bounds.
Ordinary-pickup persistence Production beta Representative Runtime-confirmed collection/restoration in all eight main stages; all 84 ordinary records are statically cataloged, not individually runtime-exhausted
Global seeded pickup randomization / solver Production beta (PR #137) Implementation/CI-confirmed 85-check global permutation, destination-safe materialization, fixed-point validation, selectable completion modes, and a deterministic 10,000-attempt ceiling. Clean input stays 16 MiB; generated output is 32 MiB with eight owned stage-resource slots. Bounded loader/runtime evidence and maintainer approval support promotion; full-seed release validation remains Pending.
Powers as pickups / XP progression Pickup mode Production beta; optional normal-XP choice implemented/static, runtime Pending Pickup mode remains default and Diagnostic B behavior is Runtime-confirmed through XP 85/258, Temple -> Wind, and title -> Fire. Power Upgrade presentation is also Runtime-confirmed in TEST LAB: selected Herbs use the Ice Blue palette and pickup triggers three short white Sub-Zero pulses with no damage/stun/input-lock semantics. OFF retains stock XP stores/caps and ordinary Herbs callbacks. See XP and progression
Four inventory boxes and foreign-key masking Production beta Runtime-confirmed switching, transition preservation, stage-local masking, Fire -> Wind Circle v02 immediate acquisition-time re-masking, and Fire/Bridge all-three credential ownership across separate boxes with matched positive/negative v03 controls. The inert foreign-stage placeholder remains stock item ID 0x08 internally but is displayed as SEALED rather than GLASS. Lifecycle v06 owns Game Over/new-run cleanup.
GAME SETTINGS frontend and modern controls Production beta / Runtime-confirmed v02 composition. The shared browser/CLI builder now exposes TURN / ATTACK / SPECIALS / JUMP / RUN / EXIT. ATTACK and SPECIALS have CLASSIC / MODERN, JUMP has DPAD / BUTTON (BUTTON is editable when both ATTACK and SPECIALS are MODERN), and RUN has HOLD / AUTO. The user accepted the 16-KiB/CI4 v02 full-product composition with real progression; Earth boss detection for TURN remains Pending. See Native HUD and UI and Player actions and special moves.
Native Inventory HUD / box indicator Production beta / Runtime-confirmed bounded BOX n OF 4 remains Runtime-confirmed. The integrated Inventory HUD, including the PR #148 native-font-safe status row, is Runtime-confirmed through the deployed webapp on the tested route. The remaining gate is representative full-seed/lifecycle validation, not HUD implementation. See Native HUD and UI
Boot branding and seeded phrase Production Redesigned legal-screen presentation is Runtime-confirmed; seeded phrase uses a separate deterministic namespace
Rebranded title screen Production beta The new vector/typeset title was user-confirmed through the production webapp on 2026-09-29. Non-vanilla outfit colors now tint the title palette; rainbow uses a fixed five-hue word/edition treatment. The variants fit the stock file-0x5E slot in static checks, with exact in-game color acceptance Pending. See Presentation and branding
Post-legal logo bypass and selector-only save bypass Production Runtime-confirmed bounded routes; legal text and later/manual saves remain intact
Outfit recoloring Production Static modes remain guarded source-TLUT transforms. rainbow uses the Runtime-confirmed 64-phase native palette path. The 2026-09-27 compact-tail proof passed all eight safe stages and removes the duplicated 0x459E0-byte stock fighter copy: production now keeps retail file 0x87 in place and stores only the 0x2000 rainbow bank. See Palette and recoloring
Browser/CLI shared patch core Production beta Both surfaces use the same patch core. Build-time Run Settings now expose difficulty (default Very Hard), lives (default 5, max 10), continues (default 3, max 5), and Persistent HP (default on), alongside the Runtime-confirmed native GAME SETTINGS control suite. The web requires only the MKMSZ N64 target and presents MKT Rev. 2 N64 as an optional donor for supported donor-backed features.

Proof-only systems

These results are important feasibility evidence but are not normal browser/CLI product features unless stated above.

Workstream Current conclusion Remaining gate / owner
Shuffled power / ability order Runtime-confirmed bounded nine-slot mechanism; shared product integration implemented/CI pending. v02 confirmed gameplay/UI decoupling; v04 then exercised the generalized nine-gate remap with Super Slide before Slide and Ice Shatter after Air Ice Blast. The standalone v04 proof also exposed a proof-bootstrap-only 85-XP-on-stage-load bug that is not present in the production XP lifecycle. Shared patch core now has an optional deterministic constrained power-order patch and the web UI defaults Shuffle Power Progression ON while retaining an OFF choice. Single constraint: Ice Shatter after at least one of Ice Blast / Directional Ice / Air Ice Blast; Slide and Super Slide may appear in either order. Final state awaits repository CI and then merge/deployment. See XP and progression.
Cross-stage ordinary-item materialization Runtime-confirmed in bounded proofs. Prison five-import and external-to-embedded conversion remain confirmed. TEST LAB now also confirms the destination-native Fire-file architecture with v26 Fire→Prison-key compatibility, v27 ten distinct simultaneous items, v31 stable 15-live non-Earth entry, and v33 recognizable coherent static-poster rendering for that 15-item set. The v22-v25 standalone-gallery path and v28-v30 corruption line are Rejected. The planner is connected to the shared pipeline; PR #137 supplies accepted global assignments. Earth-key cross-stage materialization is Runtime-confirmed in TEST LAB v38. Checkpoint-free key behavior is Runtime-confirmed for Prison L1 and the native Fire key family on bounded routes, but Wind v01 rejected the attempted generalization. Wind's selector is live stage/checkpoint state; suppressing its key-created selector steps caused a death/world-state mismatch and later live scene failure. Water/Earth analogous runtime proofs are paused. The checkpoint/materializer gate is now to separate logical reward semantics from destination location/stage-state semantics (or independently prove a coherent full-stage-restart-on-death policy), not to NOP remaining key selector writes mechanically. Bridge's stock pickup callback and Fortress's stock crystal award path remain Static-confirmed checkpoint-free. Fortress five-import stress validation and Kia -> Potion boss-defeat reward substitution are Runtime-confirmed on bounded routes. Materializer production-composition v02 is also Runtime-confirmed on a representative Fire -> Wind -> Fortress route using the established shared file-0x1A bootstrap transport, immediate foreign-key re-mask, and destination-native resource plans. v01's extra file-0x19 stage-init load is Rejected. PR #126 implements the guarded shared-pipeline materializer path and generalized Fortress boss-gate emission and is CI-green. Newer main owns 0x801B08E0..0x801B096F for the Temple special check, so the materializer helper is relocated to 0x801B0970..0x801B0A5F. The bounded v03 co-resident build is now Runtime-confirmed: the user reported all requested composition checks working as expected. That bounded composition established the materializer baseline used by PR #137. Fire -> Wind Circle v02 Runtime-confirms the full tested foreign-key mask round trip including immediate post-pickup Glass masking, native-stage reveal/use, and re-masking outside Wind. The Kia/Jataaka/Sareena crystal records remain boss-defeat reward locations whose assigned reward may change globally. See Global item materialization and solvability and TEST LAB proof history.
Cross-stage enemy import / planner Production web/CLI option merged; compact PRIS fallback implemented on follow-up branch, CI Pending. The deterministic 104-record planner preserves five gated/special encounters, models Prison paging/set-piece auxiliaries, and the browser now defaults the shared product switch ON while retaining an OFF choice. The materializer now also promotes the Runtime-confirmed compact Water PRIS15, PRIS16, and mixed PRIS14+16 profiles, regenerating their 16-color Type-5 resources from the clean ROM at build time. Representative merged seed ENEMYPLAN05 remains Runtime-confirmed. The compact builder reproduces the accepted GRUNT3 0x8E/0x90 layouts and applies the accepted hue/material-corrected 16-color mapping; unresolved MONK1/MONK3/MONK4 and GRUNT1/GRUNT2 foreign semantics remain fail-closed. CI and one opportunistic product runtime pass are the remaining promotion checks, not an exhaustive matrix. See Enemy randomization.
Modern control suite — ATTACK / SPECIALS / JUMP / RUN Integrated into the shared patch core. v02 is Runtime-confirmed on the tested full-product route. Slide calls stock recognizer 0x8003C9F8 (tier ≥2); Super Slide calls 0x8003CAF4 (tier ≥7 and resource ≥0x60). The proof-only 20,000-XP write is absent. Accepted v02 SHA-256 b12ed90201ab754aac542b7b89458735b5a756f480fffca89c129c0ed3173147 remains the Runtime-confirmed controls/CI4 baseline. Current builds intentionally differ only in the approved Toasty four-word TLUT purple polish; controls semantics and allocation are unchanged. See Player actions and special moves.
MKT fighter / Sektor takeover Runtime-confirmed proof line through v89; v85 remains built but untested and statically rejected for the ordinary straight branch. v62 remains the stable combo baseline; v75 remains the stable missile-flight baseline. v87 Runtime-confirms the donor-faithful ROCKETD1 + ROCKET_P asset/palette pair for the flying missile. v88 keeps that correct rocket but still shows one frame of stale Sektor-like texture before it, disproving the earlier interpretation that v84 had established synchronous first-frame texture readiness. Static render tracing now separates descriptor binding from texture-slot publication: 0x8001BDA0/0x800304C0 mark +0xFA dirty, 0x800185B8 later queues the slot upload through 0x8001D6EC, and the upload is drained separately. v89 Runtime-confirms the missing pre-publication texture-slot seam: synchronous native 0x8001BF70 preparation before stock actor-list insertion removes the one-frame corrupted Sektor while preserving the correct v87 rocket and v75 flight. This validates first-visible composition as descriptor/frame state + correct dynamic ROCKET_P + texture-slot readiness before publication. The v89 storage/allocation recipe is still a bounded one-shot proof, not production-ready. Helpers, strike/effects/audio, balanced palette/texture release and final integration remain pending. Proof-only, including bootstrap allocation overlap. Preserve the generic donor→MKMSZ adapter; see Sektor takeover proof history, MKT adapter primitives, and Player actions and special moves.
Toasty audio Runtime-confirmed production composition. v46 confirms the dedicated MKT Toasty voice route with ordinary pickup audio restored to stock; v47 confirms that same route in the full current production composition. Production keeps stock pickup 524 -> 681 -> 524 -> 133 untouched and uses dedicated Toasty event 52 -> 68 -> 608 -> 533. The product probability is 80/1000 (8%). See Toasty audio research.
Seeded Temple intro audio Audio-1 and Audio-2 isolated routes Runtime-confirmed. The former global carrier 0x20A -> 0x1A6 -> 579 -> 422 -> 412 is Rejected after runtime evidence showed it also altered unrelated Bridge/Prison robot/miniboss audio. Production candidate now preserves descriptors 0x41/0x42/0x43, replaces only Temple events 123/124/125, and uses isolated host 486 -> 329 -> 319. v03 confirmed Friendship in Temple with Bridge/Prison audio vanilla; the follow-up Audio-2 proof confirmed TEMPLE-0003 -> shao-laugh through event 125 with the opening Scorpion lines left stock. See Audio system.
Toasty visual Runtime-confirmed production composition. v38/v40/v42/v44/v46/v47 remain the accepted visual/trigger/audio/full-composition lineage. Compact-source proof v01 was reported working perfectly and is now the production storage layout. Production keeps the reconciled 08/0E/12/13/14/15/17 family and 80/1000 (8%) while storing the exact padded CI4 source in compressed form. Module size is now 0x1132 = 4,402 B at 0x801B1000..0x801B2131, reclaiming 0xCBE = 3,262 B inside the existing 16-KiB reservation. See Toasty visual research and Toasty audio research.
Reverse Elbow / donor move adapter research Proof/research only. Earlier host-action work established useful MKMSZ action primitives; the accepted direction is genuine donor-to-MKMSZ semantic translation rather than behavioral approximation. Not a 1.0 blocker. Current donor translation work belongs to MKT to MKMSZ compatibility layer and Player actions and special moves
Pickup placement probe + Ice Blast -> Pickup cancel Runtime-confirmed bounded post-1.0 proof. The coordinate probe exposes exact live fixed8 player X/Y/Z for hand-authored pickup locations; accepted visual placement convention is player Y + 28 world units. The separate Wind proof lets normal ground Ice Blast cancel into the stock pickup transition after native pickup gates pass. 4Fun / Post-1.0; not production and not a 1.0 blocker. Reproducers and exact proof seams are in Pickup placement and Ice-Blast cancel proofs.

Current 1.0 blockers

1.0 requirements and roadmap is the canonical owner of the complete requirement text, acceptance criteria, ambiguities, and final release gate. The current blocker summary is:

Blocker Current state
Production-safe global cross-stage item materialization Destination ownership closed; wrapper composition Runtime-confirmed bounded on PR #129. PR #129 composes logical awards with researched Wind/Water/Earth/Fire/Prison destination actions, generic Bridge/Fortress activation gates, portable Strength semantics, immediate foreign-key re-mask, and Prison credential reconstruction after the stock reset. Current-main lifecycle v06 remains unchanged. The former high-tail materializer placement overlapped fixed Toasty audio and is rejected; the corrected helper occupies 0x801B2310..0x801B28EF, immediately after progression flash and before Toasty audio. Wrapper semantics remain unchanged; corrected composition is Implementation/CI-confirmed pending representative runtime. First-item-swap v04 was manually validated successfully, directly confirming the exercised key-without-checkpoint / checkpoint-without-key / non-downgrade split. PR #137 now connects the global generator/solver to this materializer; promotion is approved.
Deterministic global shuffle and retry model Implemented in PR #137; promotion approved. All 85 checks participate, Map 0x0D is excluded, and nine Herbs become explicit Power Upgrade rewards before shuffling when pickup mode is ON. Attempts are deterministic and capped at 10,000. The approved 32 MiB output owns eight 1 MiB resource slots at 0x01000000..0x017FFFFF; clean input remains 16 MiB.
Whole-run solvability validation Implementation/CI-confirmed in PR #137. All 85 available requires every check reachable; Game beatable requires all 21 credentials plus the required shuffled Power Upgrades when ON. OFF retains vanilla XP and the independent Required powers Fortress gate; additional earned-XP accounting is not a blocker. Broader full-run runtime validation remains Pending.
Native randomizer HUD Production beta / bounded Runtime-confirmed architecture. v21 confirms the completed TEST LAB presentation and v23 confirms nonblocking Power feedback; shared browser/CLI integration is guarded/CI-targeted. Final representative full-seed production-composition runtime validation remains Pending.
Run lifecycle invariants Runtime-confirmed baseline and configurable integration. v06 confirms the Very Hard / 9-lives / 5-continues / HP-ON reference behavior. Browser/CLI now expose difficulty, 1..10 starting lives, 0..5 continues, and HP persistence; Game Over/new run reuses those configured defaults. Other combinations preserve the same guarded control flow and are Implementation/CI-confirmed pending runtime sampling.
Final production-composition runtime gate Pending. Run a representative full global seed after the above are integrated, including all nine progression tiers and the major lifecycle boundaries

Current priority order

Current user direction is to promote the completed native Inventory HUD / asynchronous Power feedback, then continue the representative full-seed release work. The FX-crunch investigation is deferred.

  1. Merge and verify the native Inventory HUD / asynchronous Power-feedback production integration.
  2. Run the representative full-seed 1.0 gate across global items, solver, HUD, progression, and lifecycle.
  3. Close only defects exposed by that final composed route; do not reopen already accepted proof lines without new evidence.

Current evidence notes

  • Temple scripted check (2026-10-01): v01 Runtime-confirmed that changing only the scripted Map award 0x0D -> 0x04 preserves the elevator/platform progression. v02 then closed presentation and lifecycle: the location rendered as Herbs, awarded Herbs, moved the elevator, exposed/retained the exit-rope route, stayed collected after title -> Temple re-entry through dedicated MKSV header flag bit 0x0001, and completed Temple -> Wind normally. The promoted patch keeps this scripted check outside the 84 ordinary records and uses the file-0x1A expansion gap for its two helpers. The later global generator may change the assigned reward, but that is global-materializer work rather than unresolved Temple architecture.
  • XP: the first V2 productionization attempt is Rejected / failed because stage initialization called the native tier evaluator too early. Diagnostic B isolated that timing error and is the current production behavior: restore persistent XP at stage entry, evaluate tiers only when a progression pickup is collected. Detailed Diagnostics A/B remain in XP and progression.
  • Title: the approved typeset title was confirmed visually in the production webapp on 2026-09-29. The non-vanilla outfit/title color match and fixed rainbow title are data-only and preserve the 16-color CI8/stock-slot contract; color variants are static-checked, runtime Pending. The old executable wrapper that overlapped pickup-persistence ownership remains Rejected / failed; prior proof hashes and integration history remain in Presentation and branding.
  • Sektor: v62 remains the tested combo baseline; v75 the last stable tested straight-missile flight. v76–v79 remain negative/failed controls; v85 is statically rejected and untested. v87 Runtime-confirms exact retail rocket pixels/colors. v88 preserves the good rocket but still exposes a one-frame corrupted Sektor-like texture, showing that early descriptor/cursor binding alone does not synchronously replace the finalized projectile texture slot before publication. v84's earlier apparent first-frame suppression is therefore reinterpreted as a selector-zero presentation artifact, not proof of ready rocket texture. v89 Runtime-confirms the synchronous pre-publication slot-load proof: the corrupted first-frame Sektor is gone and the correct rocket remains. Next work is lifecycle/ownership productionization, not further first-frame cosmetic iteration.
  • Sektor Run — cadence + variable-length script + compact storage (2026-09-25; Runtime-confirmed): retail MKT Sektor primary slot 0x4A -> +0x1444 contains only RBRUN1,3,5,7,9,11. v03 Runtime-confirms target rate 3 as the donor-equivalent cadence; v04 Runtime-confirms an exact six-visual-entry live Run followed immediately by loop control. v05 (MKMSZR_sektor-run-compact-six-pose_common-proof_v05.z64, SHA-256 3073bd0b77e88a8bb1ea22a5a45ce1fe933512434188e9c578c35adb4f4f5363) physically removes the six obsolete even Run poses and PS1/WIMP Run dependencies while preserving the v04 semantics. Manual runtime validation reports that v05 works perfectly. The compact path is therefore Runtime-confirmed at Sektor scope: 152 frames, 40,577 patterns, file 0x87 = 0x4CD68, 0x17DC below the bounded v49 comparison footprint.
  • Sektor/common-state reachability + P28/P29 owner seam (2026-09-25): inherited animation-table names are no longer treated as importer requirements. The live unresolved host states are P28, P29, P2A, S03, and S05; their host semantics are identified. P28/P29 are HOST-ONLY attachment/turn presentation using token 0x10 and a host-owned companion actor. Disposable owner-probe v06 (MKMSZR_sektor-p28-p29-owner-probe_common-proof_v06.z64, SHA-256 b4b098a411ad5712b3574cc96f8667a7684d2927e9c4df900af52792e9ede644) Runtime-confirms on the tested rope route that genuine Sektor owner art can coexist with the stock narrow companion layer through movement, attached Turn, detach, and reattach without duplication, lingering imagery, corruption, or freeze. Final donor fallback pose policy remains Pending; interruption/stage teardown is not exhaustively runtime-confirmed. P2A is a death fallback candidate; S03/S05 remain HOST-ONLY fallback-policy work. P0D is not an MKMSZ Victory requirement, and Ice-family states remain a separate special-extension track.
  • Generic MKT fighter palette direction (2026-09-25; design-accepted): normalize imported N64 MKT fighter art to a 16-color palette as the default generic importer direction. The Sektor 16-color proof was visually accepted by the user; do not spend effort restoring 32 colors solely for fidelity unless new technical evidence shows the 16-color route creates a real compatibility/quality problem. This policy does not change the requirement to emit MKMSZ-native Type-5 assets or to preserve correct palette-binding/lifetime semantics.
  • Toasty: v47 remains the full-composition presentation/audio baseline, and compact-source proof v01 is now Runtime-confirmed and promoted to production. The same decoded CI4 slices are stored with deterministic PackBits-style compression and expanded by a 0x7C native decoder during init. Production now occupies 0x801B1000..0x801B2131 (0x1132 bytes), leaving 0x12EE bytes before the reserved-pool boundary. The selected product probability remains 80/1000 (8%); the validation proof alone used 100% probability to accelerate testing. Browser donor-asset extraction remains wired through the optional MKT Rev. 2 input. Detailed evidence is canonical in Toasty visual research and Toasty audio research.
  • Modern controls (2026-09-26): v09 frontend and v10 input/control behavior are Runtime-confirmed, but the first real-progression product gate exposed one proof-masked bug: MODERN Slide and Super Slide bypassed stock XP eligibility because the earlier SPECIALS helper called their callbacks directly while also forcing XP=20,000. Static correction routes those two chords through stock recognizers 0x8003C9F8 / 0x8003CAF4. The corrected 16-KiB/CI4 full-product v02 is Runtime-confirmed and reproduced byte for byte by the shared builder; the first CI4 candidate is rejected. The proof-only XP force remains excluded.
  • Cross-stage items: a logical selector is not proof of free physical storage. Production integration must preserve explicit resource ownership, bounded allocation, deduplication, and destination-safe award semantics.
  • Key checkpoint suppression: Prison L1 v08 remains Runtime-confirmed with its acquired-bit/door credential preserved while pickup-created presentation and selector-7 respawn relocation are suppressed. Fire v01 (2026-09-29) now Runtime-confirms the same high-level two-seam policy for the native Fire key family: NOP only ROM 0xE5C28 (direct 0x80062D60 presentation request) and 0xE5C50 (0x802C18F8=s0+2 pickup-created respawn selector), while keeping the stock award/progression path. Runtime showed no key-created checkpoint event, natural stage-start respawn after death, successful Fire God completion, and transition onward. A one-off crunchy-audio observation did not reproduce in v02/v03 controls or a later v01 retest and is not currently attributed to the patch. Wind/Water/Earth runtime closure remains Pending; Bridge and stock Fortress crystal checkpoint behavior are Static-confirmed closed. Fortress still separately needs arbitrary boss-reward materialization.
  • Fortress boss rewards (2026-09-27): Runtime/user-observed semantics establish the Kia, Jataaka, and Sareena crystal records as rewards spawned by defeating those three bosses. For the global randomizer, the boss defeat is the reward-location trigger and the crystal is only the stock reward: each boss location must be able to spawn whichever logical item the global layout assigns, while the three crystal items remain globally movable rewards.
  • Current test-build shuffle: the full-production checkpoint proof still used STAGE-LOCAL:V1; finding all three Fire keys inside Fire was expected and is not evidence of a global shuffle. That proof predates PR #137, which integrates the 85-check global generator/materializer/solver. The Wind ownership trace additionally shows that this interim mode moves mixed callback/parameter state with same-stage rewards; that limitation is now tracked explicitly.

Explicit exclusions and non-blockers

  • Enemy randomization and Reverse Elbow / foreign-move completion are not 1.0 blockers.

  • Bosses and scripted encounters are not ordinary-enemy entries.

  • The Temple Map is not one of the 84 ordinary pickup records. 1.0 policy is now explicit: logical item 0x0D is excluded from the randomizer pool, while the scripted Temple location remains a special check whose elevator/progression side effect is location-owned. PR #137 integrates arbitrary assigned rewards into the established special-check persistence/elevator seam.

  • Zero/unused-looking resource selectors are not automatically free physical storage.

  • PS1 addresses and platform behavior do not transfer to N64 without demonstrated compatibility.

  • Disposable proof ROM patches, proof caves, and archive handoffs are not silently part of the production pipeline.

  • Runtime confirmation is always limited to the documented route; CI/static success does not imply exhaustive gameplay validation.

  • First-item-swap v04 validation correction (2026-10-02): v03's coordinate clustering is superseded. v04 returns to v02's exact wrapper/Safe-Stage-Select base and swaps logical/visual identities only: Wind first Herbs <-> Circle, Water first Mana <-> Triangle, Earth first Formula <-> Square, Fire starting Potion <-> Triangle Up, and Prison first Herbs <-> L1 key. Each moved key therefore awards from a non-checkpoint destination, while its original physical key location now holds the mundane first-stage reward but retains the researched destination wrapper. This directly tests key-without-checkpoint, checkpoint-without-key, and late revisit/non-downgrade behavior. Runtime status remains Pending.

Clone this wiki locally