Skip to content

Add playthrough storage and legacy selected-save access - #155

Closed
Roxas2712 wants to merge 44 commits into
UNDERdecoded:mainfrom
Roxas2712:codex/portable-playthrough-storage
Closed

Roxas2712 wants to merge 44 commits into
UNDERdecoded:mainfrom
Roxas2712:codex/portable-playthrough-storage

Conversation

@Roxas2712

@Roxas2712 Roxas2712 commented Oct 23, 2026 •

Copy link
Copy Markdown

Add native playthrough-scoped records and opaque bytes for API 3, with a title-only storage:selected(game) facade. API-1/2 mods now also receive selected(game), delegated lazily to that same native service. Their existing installation-wide read/write/byte methods, paths and signatures remain unchanged; no automatic migration guesses which save owns an old shared payload.

The service provides detached context/data records, sorted keys, typed-key conflicts, verified staging/backup recovery and opaque identities allocated without gameplay RNG. Normal saves, legacy slot promotion, duplicate imports, failed writes and title/init ownership retain the existing identity contracts. The added legacy method creates its private delegate once, without changing the original storage namespace.

Depends on #154 and the preceding portability series. The original feature comparison remains 5ed6353...aef5650. The API-1/2 extension is isolated at 0740821, with the dependency-attribution correction at fefd080. Merge prerequisites first and rebase before integration. docs/api3-storage.md documents the base storage contract.

Validation:

  • New actual-loader API-1/2 coverage: 20 checks for availability, exact native refusal codes, original record/byte behavior, unchanged root one-time delegate construction and calls from an active mod context without falsely requesting engine permissions. The delegate module is resolved during engine bootstrap.
  • Updated public branch: 109/119 engine suites and 3/3 SDK suites. Fresh unchanged aef5650 parent: 108/118 engine suites. The exact 26 FAIL lines across the same ten inherited failing suites are identical; the new suite passes.
  • Composed fork after the extension: gallery 253/253; 200 contract comparisons / 400 isolated loader runs against pinned 535a5ec088c1ae1bf4d91dd3e35a56f64cf46d91. The authenticated external package gate retains its explicitly named intermediate sprite-interface gap; complete acceptance is not claimed.
  • Earlier base-service qualification at aef5650 remains applicable to the unchanged implementation: 1,013 native storage/lifecycle checks, 54 transaction assertions, 39 legacy-storage checks, 78 save-slot checks and 32 workers / 944 paired observations. Native LÖVE 11.5 prepare/restart/title/Continue checks were run in isolated Red, Gold, FireRed and Emerald profiles. These cover bounded persistence/startup, not full playthroughs.

FrameProfile before/after: not measured. This is an additive compatibility service; no performance switch applies. Hosted workflows require maintainer approval; local results above do not establish a new hosted pass.

Original additions by Roxas2712 are offered to Cedric / UNDERdecoded under the specific PR contribution permission at https://github.com/Roxas2712/Gen2Recomped/blob/4fb81fbf/LICENSE-ROXAS2712.md, with visible contributor credit. Existing rights, notices, credits and earlier permissions remain effective.

Current upstream qualification

Merged 8d5b4387; runtime 91f14c97 passes 120/120 engine suites and all SDK suites. The native supersample draw keeps the existing screen-visibility admission; both visibility suites also pass directly. This earlier standalone dependency host retains the inherited missing gallery files and lacks later contract/external-fixture runners; complete five-gate compatibility is qualified on the composed fork and P9 stack (#323). Existing repair commits #128–#134 and #294 are reused.

# Conflicts:
#	src/mods/Loader.lua
# Conflicts:
#	docs/modding.md
#	src/mods/Loader.lua
#	src/world/WorldAPI.lua
@Roxas2712 Roxas2712 changed the title Add API-3 playthrough storage and shared persistence contracts Add playthrough storage and legacy selected-save access Oct 25, 2026
@Roxas2712 Roxas2712 closed this Nov 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant