DKR-R v1.0.7 - RELEASE AUDIT AND REPO PREPARATION PLAN
20 October 2026
===================================================

Right. The water is working now, so that is our starting point. We are not
going to undo a working fix while tidying a folder or chasing another FPS.
There is a LOT more to 1.0.7 than the current README suggests. The release
needs to include the work we actually have, explain it properly, and be
something another person can build without needing this PC's old folders.

STATUS OF THIS DOCUMENT
This is the release preparation plan, not a declaration that 1.0.7 has shipped.
The water fix has owner acceptance on Windows. All-platform release builds,
updated public documentation, clean-build reproducibility and release upload
are still future steps. No tag, commit, push or GitHub release was created.

1. WHAT THE AUDIT HAS ACTUALLY COVERED
------------------------------------
The whole C:/DKRPort tree was inventoried without following reparse points.
The second inventory contains 153,199 entries, 24,906,755,539 bytes (23.20 GiB),
1,447 tracked paths, 186 documentation/text candidates and 23 source README
files. There were no enumeration errors. Counts are a dated snapshot; build
logs and generated reports can grow after the scan. This is a complete file
inventory, NOT a claim that every line of 153,199 files received semantic review.

Release-critical sources, effective build recipes, documentation, package
contents, protected boundaries, current Git state, update ordering and active
source receipts were inspected separately. The file-by-file evidence is in:
  C:/DKRPort/build/release-audit-20261020-r2/FULL-FILE-INVENTORY.jsonl
  C:/DKRPort/build/release-audit-20261020-r2/TREE-SUMMARY.json
  C:/DKRPort/build/release-audit-20261020-r2/DOCUMENTATION-INVENTORY.json
  C:/DKRPort/build/release-audit-20261020-r2/WINDOWS-MARKDOWN.json
  C:/DKRPort/build/release-audit-20261020-r2/git-status.txt
  C:/DKRPort/build/release-audit-20261020-r2/tracked-diff-since-1.0.6.txt

Protected trees were inventoried only. Checked-out dependencies, .git,
RecompiledFuncs and RecompiledPatches have not been edited or moved. Every
new authored file for this work is under patches/. Generated inventory and
build output stay outside the public source payload.

The published comparison point is Version1.0.6:
  c3eda4d368afbc729ed4a71312cce38d27f87c37
Local HEAD and the remotely queried main both currently identify:
  fa947aedcc47d90030954d74b02882f754699430
That commit is "Bring main up to v1.0.7 beta 2". A version string alone does
not capture the later local work. The tracked working-tree comparison against
1.0.6 covers 300 files, but DOES NOT include the untracked Patch Pipeline
folders. Those folders must be included explicitly in the release source.

PR #60's merged nightly/cache/Quick Join work is already in this history.
PR #63, "Add macOS accessibility foundation", is an OPEN DRAFT, unmerged and
currently marked non-mergeable by GitHub. It is not part of this baseline.
Its own metadata says real VoiceOver/player acceptance is pending. Do not
silently cherry-pick its Quick Join change or advertise accessibility as
delivered. Recheck main and PR state immediately before the release commit.
  https://github.com/ThatGuyMcd/DKR-R/pull/60
  https://github.com/ThatGuyMcd/DKR-R/pull/63

2. LOCK THE WORKING BASELINE BEFORE ANY RELEASE CHANGES
-----------------------------------------------------
The owner-confirmed Windows package is:
  D:/DiddykongWorkFolder/hd-water-loading-beta10-20261020/windows/
    DKR-R-1.0.7+beta.10-Windows-x64.zip
  SHA-256: ab4ecbc05c9c22cb394696389df10866e7e7f108668567bfc2d2db84c34ffa92
The exact runtime, PDB location and per-revision online IDs are recorded in:
  patches/release-prep/v1.0.7/ACCEPTED-WATER-BASELINE.json
The immutable source is:
  build/liquid-streaming-beta10-20261020-r3/stage

The water acceptance is specific: the owner reports the initial HD-water
flicker is fixed. It is not evidence of every save, online, platform or GPU
scenario passing. Keep that distinction in RELEASE-VALIDATION.md.

The fix admits transparent runtime textures, queues recognised animation
families and keeps each family consistently original until all matching HD
images are resident. Descriptor bindings, dimensions and filtering flags use
one frozen workload decision. Cache reload/eviction invalidate readiness.
No shader, GPU fence, permanent preload, simulation clock or save change was
needed. Genuinely incomplete packs remain consistently original for that
family. Unsupported layouts are not guessed.

Before implementing the release phase:
  1) Preserve the accepted ZIP, exact EXE/PDB, receipts and hashes unchanged.
  2) Snapshot tracked local edits AND untracked authored sources. A git diff
     alone would lose the untracked Store/SDK/camera/save/presentation work.
  3) Record the effective CMake options and all normal/owned v77/v80 inputs.
  4) Establish the release candidate's source/asset/SDK/online identity ledger.
  5) Keep a rollback package independent of any folder about to be archived.

Exit gate: a recoverable, hash-recorded baseline exists and the accepted water
source cannot be accidentally replaced by an older generated header.

3. CLEANUP: WHAT CAN GO, WHAT MUST STAY, AND WHEN
-----------------------------------------------
Already listed and moved recoverably:
  extract.log
  imgui.ini
  modding/__pycache__/
  patches/camera-plus/__pycache__/
  patches/save-layout/__pycache__/
  runtime-recomp/tests/__pycache__/
  runtime-recomp/tests/replay_probe/__pycache__/
  scripts/__pycache__/
  scripts/tests/__pycache__/
  tools/blender/__pycache__/
  tools/blender/dkr_track_editor/__pycache__/
  tools/blender/tests/__pycache__/
  tools/blender/track_lab/__pycache__/
  tools/blender/track_lab/operators/__pycache__/
  tools/blender/track_lab/ui/__pycache__/

That is 271 files in 15 locations, 7,300,741 bytes. No tracked file was moved.
Every file was hashed before relocation and verified at the destination.
Nothing was permanently deleted. Recovery data is here:
  F:/DKR Dist dump/v1.0.7-prep-20261020/repo/
  F:/DKR Dist dump/v1.0.7-prep-20261020/BEFORE-MOVE.json
  F:/DKR Dist dump/v1.0.7-prep-20261020/MOVE-JOURNAL.json
  F:/DKR Dist dump/v1.0.7-prep-20261020/REMOVE-LIST.txt
The full per-file list was created before moving anything, not afterwards.

Do NOT bulk-delete build/. It currently contains about 18.91 GiB of local
output, but some of that output is an input to today's working package.
Current overlays still reference older immutable stages; older receipts also
sometimes include generated bytecode. Those files stay on HOLD. Deleting
them because they look temporary would break verification or reproducibility.

Folder-by-folder decision:
  .git/             KEEP. Never clean Git internals manually.
  .github/          KEEP contributor workflows/actions; check pinned revisions,
                    permissions and references to the eventual release recipe.
  extern/           PROTECTED, read-only. Do not move submodules or aliases.
  .deps/            HOLD local build-copy dependencies until the active input
                    closure is documented. Never add these copies to Git.
  assets/           KEEP runtime art, custom-row backgrounds, filters and
                    controller DB. Preserve provenance/licences and hashes.
  build/            HOLD active stages, generated normal/owned payloads,
                    reference EXE/PDB and required source receipts. Identify
                    abandoned outputs by dependency closure, not by age alone.
  build-logs/       Keep the final release logs privately. Archive superseded
                    logs once their receipts and failure evidence are retained.
  artifacts/        Inventory/inspect individual items. Keep reference reports;
                    archive obsolete local bundles after clean rebuild succeeds.
  dist/             If present, treat as output, not source. Do not wipe a
                    template or package that another recipe still consumes.
  squashfs-root/    Local extraction residue, about 81 MiB, but has three
                    links. HOLD for link-aware archive; the simple residue
                    mover deliberately refused to traverse/move it.
  docs/             KEEP source guides and dated evidence. Update the current
                    guides; stop copying historical reports into game packages.
  modding/          KEEP and reconcile with SDK 2.0. Do not leave the public
                    authoring kit on API 1 while distributing API 2 binaries.
  mods/             KEEP placeholder; exclude installed/user packages.
  packaging/        KEEP recipes/legal/platform source. Android app/build and
                    .gradle are local generated output, not release source.
  patches/          KEEP all authored fixes and additive SDK/runtime adapters.
                    Consolidate composition, not the actual tested behaviour.
  regression/       KEEP contributor scenarios/configuration; keep private ROM
                    recordings and captures outside the public source package.
  runtime-recomp/   KEEP first-party code/tests. Generated guest directories
                    remain protected. Do not infer that untracked code is junk.
  scripts/          KEEP public build/update/inspection tools and references.
  tools/blender/    KEEP Track Lab source and contributor history. Do not drop
                    authoring tools because they do not belong in the game ZIP.
  root files        KEEP entrypoints, locks, version, licence, credits and docs.
                    Retain RELATORIO_IA_BOTS.md in its contributor's language.

Later archive procedure, after a clean release candidate can be reproduced:
  - Produce a SECOND explicit list for obsolete output, including paths,
    sizes, hashes, active-reference checks, links and reason for removal.
  - Exclude every protected path, required stage, current package, symbol
    archive, source file, ROM/profile/save/mod directory and signing material.
  - Copy/verify large cross-volume trees before retiring the source. Preserve
    relative paths, link metadata and a durable recovery journal.
  - Refuse path escapes, overwrites and files changed since the inventory.
  - Put the result under a NEW child of F:/DKR Dist dump; never overwrite
    this first backup or hide a partial move as a successful cleanup.
  - Re-verify the active pipeline/package after the archive, and retain the
    restore instructions. Nothing gets permanently deleted in this task.

4. MAKE THE RELEASE REPRODUCIBLE, NOT DEPENDENT ON OLD TEST FOLDERS
----------------------------------------------------------------
This is the main engineering gate before calling the repo release-ready.
The current overlays chain portraits -> Camera++ -> shadow/UI -> SDK 2 ->
Store -> shared saves -> water/viewport/title/credits -> polish -> surgical
performance -> HD liquid streaming. Several scripts name build stages or
D:/DiddykongWorkFolder inputs directly. The package scripts copy an earlier
accepted distribution as a template. That works here, but it is not yet a
complete clean-clone release recipe.

Implement a top-level Patch Pipeline release recipe that:
  - Takes explicit prepared normal/owned v77/v80 inputs and dependency roots.
  - Applies the authored transformations in the reviewed order into NEW output.
  - Preserves every accepted fix, including the water gate and native fade bounds.
  - Replaces hard-coded local stage locations with supplied paths or derived
    stage outputs. Do not just copy an ignored build folder into the repo.
  - Records exact content hashes for every input, output, tool and dependency
    patch. Reject missing/changed anchors instead of silently skipping a fix.
  - Stages approved renderer changes only into isolated dependency copies.
    Checked-out submodules and existing RecompiledFuncs/RecompiledPatches
    remain read-only. Fresh generated output goes to a separate build tree.
  - Preserves per-source C++ dialect/options/include roots across overrides;
    check both MSVC and GCC/Clang rather than relying on cached objects.
  - Builds normal and owned outputs for BOTH US revisions. A single revision
    or old replay probe must not masquerade as the full online backend.
  - Reconstructs the same effective first-party source from a clean checkout
    plus authorised local ROM inputs. Verify this against the frozen baseline.
  - Builds a distribution from an explicit runtime/dependency/legal asset
    allowlist instead of copying every file from a previous playtest package.
  - Produces a single source/feature receipt used by every platform package.

Checkpoints and save formats are not to be changed during this consolidation.
Source paths and line endings must not introduce false online mismatches.
Compare both per-revision online identities after all platform builds.

Exit gate: a fresh build can be produced without the historical external
Windows ZIP, old immutable stage folders or this PC's absolute source paths.
Only THEN can the now-unreferenced old build output be safely archived.

5. WHAT NEEDS TO BE DOCUMENTED AS CHANGES SINCE 1.0.6
-------------------------------------------------
Build the release ledger from Version1.0.6, the local tracked diff AND the
authored Patch Pipeline sources. Do not rely on CHANGELOG.md alone: its newest
entry is still beta 5. Each item needs source evidence, user-facing wording,
platform scope and acceptance status. Do not describe a removed experiment as
a current feature or count something already shipped in 1.0.6 as a new addition.

A. CUSTOM MAGIC CODES AND SDK
  1. Import executable Custom Magic Codes through Mods / Hacks as .nrm packages.
  2. Explicit code permission, enabled state and per-package generated settings.
  3. Supported native hooks/calls, typed game services and execution budgets.
  4. Deterministic host-owned settings and code-mod admission online.
  5. API 2 is additive; existing API 1 mods are not forcibly converted.
  6. SDK 2 module/capability queries, stable handles and stale-scene rejection.
  7. Entity/racer inspection, typed/batched edits and supported overrides.
  8. Scene/lap/checkpoint/item/result events and explicit queue overflow.
  9. Static ray/sphere collision queries and route/checkpoint inspection/editing.
 10. Supported scene/weather/audio/race operations with lifecycle/authority gates.
 11. Published controller-friendly tools UI, ordered actions and live settings.
 12. Opted-in cross-mod setting changes, not unrestricted control over other mods.
 13. Read-only symbol/memory inspection within the admitted contract.
 14. Debug lines/boxes/labels, bounded documents/workspaces and source maps.
 15. Scaffolding, package inspection and relocation-safe authoring tools.
 16. Corrected local/split relocation handling and Dev Menu startup/save seeding.
 17. Separate SDK ZIP and one current Modding Bible in TXT, HTML and PDF.
 18. Clear limits: not arbitrary host code, private engine writes or unrestricted
     ROM execution. Unsupported operations remain unavailable, not guessed.

B. EXAMPLE MODS AND CUSTOM TROPHY RACES
 19. Custom cups below Custom Tracks, without replacing stock trophies.
 20. Six-column custom-track rows, custom cup rows and named validation errors.
 21. Choice of tracks, per-round laps/vehicle and ordered/shuffled lineups.
 22. Cups / full-width Lineup / Share screens, single-line round controls.
 23. Controller navigation, on-screen text entry, bounded nested modals/buttons.
 24. Automatic track-catalogue refresh when opening the mod's details.
 25. Data-only cup import/export/sharing; receiving a cup does not invent or
     automatically install missing track assets or grant code permission.
 26. AI & Boss Difficulty sample, plus the separately scoped live SDK 2 example.
 27. Dev Menu: inspect/watch entities and resources, edit supported racer values,
     teleport, tools pause/step, scene controls, route/geometry inspection,
     debug overlays, supported documents/workspaces and opted-in live settings.
 28. Development saves remain isolated. Normal online lobbies do not silently
     become developer sessions; host authority and participant consent apply.
 29. Package conflicts/permissions, lifecycle limits and unsupported tools are
     explained in the Bible rather than promising that literally anything works.

C. MOD STORE AND INSTALLATION MANAGEMENT
 30. Built-in catalogue with both grid/browse and detailed browse-and-inspect views.
 31. Item images/details, categories, searching/filtering and download progress.
 32. Discord account flow, reviews and requests, with role-gated catalogue tools.
     Verify the deployed backend contract; no new website deployment is assumed.
 33. One Install action performs automatic verification; no redundant verify click.
 34. Correct direct-package retrieval instead of installing an HTML error page.
 35. Friendly installed mod/texture names instead of the temporary name "package".
 36. Persistent installation receipts for tracks, characters, code and textures.
 37. Installed/Update/Repair state reflects owned content, not download history.
 38. Distinguish exact duplicate evidence from a possible same-name match.
 39. Replace/reinstall, separate copies where supported, editions where identity
     cannot safely be duplicated, and explicit cancel/remove choices.
 40. Update selected/all, skip/pin options, preserved compatible settings and
     reapproval when executable code changes; no silent mod-code activation.
 41. Recoverable background installation with durable transaction journals,
     per-library protection, retained previous editions and startup recovery.
 42. Faster protection of retired whole legacy groups without weakening backups.
 43. Correct canonical managed paths, Unicode and extended Windows ZIP paths.
 44. Complete track extraction including declared music and HD assets.
 45. Nested single-course ZIP discovery fixes the Mario Circuit edge case;
     ambiguous multi-course archives are refused rather than selected randomly.
 46. Exact directory ownership/duplicate-ID handling and stable Installed status.
 47. Viewport-bounded dialogs, reachable cancel, wider keyboard buttons and
     tidier installed/update/account/review/request/moderation layouts.

D. SAVES AND SAVE MANAGER
 48. One personal offline Adventure with ordinary track/character/gameplay mods;
     changing a mod list no longer switches personal save ownership.
 49. Preserve old mod-set saves and migration copies; explicit recovery selection,
     not an automatic merge or deletion of competing progress.
 50. Fixed stock EEPROM layout when added .dkrmap courses extend asset tables.
     Initials/balloon data must not be reinterpreted through a larger course count.
 51. Added-course records use a versioned companion keyed by course/vehicle,
     not extra fields jammed into the 512-byte stock EEPROM.
 52. Save Manager's current personal/online/recovery/Pak views and real targets.
 53. Max Out Entire Save, selected-Adventure completion and shared unlock actions
     commit after confirmation, preserve initials/records and verify the write.
 54. Manual edits use Apply; stale drafts cannot overwrite newer disk progress.
 55. Background save jobs, launch/write fencing, checksum-aware imports and
     recoverable multi-file transfers with old bundle compatibility.
 56. One persistent host online Adventure, Continue default, explicit copy/fresh
     choices and separate client session copies. No personal client overwrite.
 57. Confirmed-only rollback record publication, not speculative persistence.
 58. Development sandboxes seed missing progress from the saved personal file;
     existing sandboxes require explicit refresh. Explain why Dev Menu can show
     different progress, without restoring the old mod-list save-swapping story.
 59. Portable mode remains a different data location, not automatic migration.

E. ONLINE, CONTENT AND PRESENTATION
 60. OS-line-ending-independent replay identity and earlier linked-engine checks.
 61. Prepared playable-resource proofs and component-specific startup failures.
 62. .dkrmap audio/deep-path preparation and native-track admission corrections.
 63. Custom Magic Code backend/launch-state, argument-memory and state-handoff fixes.
 64. Big Donut and Moon Station object-map loading fixes without opening real-ROM DMA.
 65. On/off state for modern .dkrmap cards, not only legacy imports.
 66. My racer fullscreen and local view choices for eligible experimental races.
 67. Native divider removal, full-height sky, offline-style HUD/minimap positioning.
 68. Human display names plus race positions, label sizing/fading and the black-box fix.
 69. PR #60 Quick Join callback/transport and reviewed libjuice callback corrections.
 70. Custom portrait extraction/differences and in-world portraits for Fire Mountain
     and Smokey Castle, including the subsequent crash correction.

IMPORTANT HOLD: Do not automatically advertise independent maximum racer LOD
and expanded online scenery as newly fixed. Those changes were rolled back by
the owner after missing textures, vertex corruption and poor performance.
The current build cache still contains visual-model inputs and the decoder
still references a local-model pass. Compiled presence is NOT proof that a
runtime path is active or accepted. Trace the effective enable/fallback gates,
record the exact retained behaviour and obtain owner acceptance before making
any promise. Keep the working online fullscreen/HUD/nameplate features separate.

F. CAMERA, WATER, CREDITS AND PERFORMANCE
 71. Optional ModernCamera++ importable package, presets, local profiles, input
     bindings and live F7 tuning, with native scripted-scene fallbacks.
 72. Camera++ private renderer ownership and corrected vehicle-shadow interpolation.
 73. Distinguish this from the older built-in Modern camera and preserve migration
     guidance. Camera++ is not automatically enabled or a required gameplay mod.
 74. PC OpenXR work is incomplete. Do not announce working VR, tested headsets,
     standalone Quest output, eye-specific renders or compositor HUD support.
 75. Lighter cached nearby lava glow, independently switchable from water effects.
 76. Hot yellow-white/orange-red pulses, not black; subtle capped surrounding glow.
 77. Original-water river/waterfall interpolation when enhanced optics are off.
 78. Correct source-frame flow/wrap history across fullscreen/windowed presentation.
 79. Owner-accepted transparent HD water family loading and coherent promotion.
 80. Border-free spinning-logo picture, readable rounded translucent copyright
     plaque, original font and RECOMPILED BY THATGUYMCD! line, higher-FOV sky coverage.
 81. Full-width Start menu character-name travel with original proportions.
 82. Full-frame credits, moving original-font text, lower sky and edge-covering fades.
 83. Credits crash correction: native vertical readback bounds, not negative overscan.
 84. Native GPU allocation validation/guarded mip fallback and replacement-cache headroom.
 85. First surgical performance pass: reused flow storage, larger-table texture
     indexing, CPU mip scratch, exact checkpoint reserve and monotonic presentation.
 86. Optional diagnostic launch/logging. No measured FPS gain is claimed without
     comparable owner captures; deeper GPU/scheduler work is not completed.
 87. Withdrawn atmosphere preview: no new volumetric/dynamic lighting/shadow system
     is advertised. Stock effects and the existing water/lava path remain.

G. LAUNCHER, APPLICATION UPDATES AND CONTRIBUTOR WORK
 88. Shorter consistent launcher/overlay wording and tidier mod cards/dialogs.
 89. Removed unnecessary Save Location/connection/reflection disclosures and
     reorganised support summary/credits with compact support actions.
 90. Hide lobby code for streaming; Copy still provides the invitation code.
 91. Startup and Play-tab application update checks, consent, signed verified
     platform packages, recovery and preserved user data.
 92. One public Windows DKR-R.exe; private runtime/helpers remain in libexec/dkr-r.
 93. Keep PR #60 nightly/sanitizer/stress/cache tooling and earlier merged build,
     CI, platform, Track Lab and test-isolation contributions. Attribute actual
     changes in the correct release: many PR #49-#59 items already shipped in
     1.0.6 and belong under carried-forward credits, not invented 1.0.7 additions.

The above is the documentation scope, not 93 fresh runtime test results.
The detailed changelog can cover every sub-fix; the main README should group
them so people can actually find what they need.

6. DOCUMENTATION REWRITE: EXACT APPROACH AND FILES
-----------------------------------------------
The main README will compare specifically with the published 1.0.6 tag.
It keeps the project artwork/Discord link, gives quick launch instructions,
then groups the new work under Store, Magic Codes/SDK, cups/tools, saves,
Online, graphics/presentation and launcher/support. Existing 1.0.6 water
presets/Track Lab features are labelled carried forward, not renamed as new.
Use CHANGELOG.md for the complete breakdown and docs/README.md for navigation.

Voice/style:
  - Direct, friendly and enthusiastic: "There is a LOT in this one", followed
    by what changed and how to use it. Plain UK English, not marketing filler.
  - Say "your save", "choose", "turn on" and actual menu names. Keep deep
    ABI, transaction and renderer details in developer guides.
  - Avoid AI-style over-explanation, repeated safety paragraphs and vague
    "seamless/robust/cutting-edge" promises. No invented performance percentages.
  - No current-player page should read like a playtest handoff. Historical
    reports retain their original dates/results and are explicitly historical.
  - Do not rewrite a licence, contributor report or third-party quotation in
    the owner's voice. Preserve attribution and legal text exactly.
  - Do not describe incomplete VR/LOD/atmosphere work as finished.

README-by-README disposition (all 23 inventoried source README files):
  README.md                         Full 1.0.6 -> 1.0.7 rewrite; release status,
                                    migration, new features, honest limits.
  docs/README.md                    Current guide index; SDK 2/Store/Camera++;
                                    remove API-1-only/proposal-only contradictions.
  packaging/RELEASE-README.md        Short player package template; no beta 5,
                                    old save swapping or obsolete camera promises.
  runtime-recomp/README.md           Current composition/build entrypoint,
                                    personal/online/development owners and SDK 2.
  scripts/README.md                  One clean release command/required inputs,
                                    SDK/Bible generation and package allowlists.
  tools/blender/README.md            Verify current addon/version/export and
                                    supported track/music/portrait instructions;
                                    retain contributor mirror/source details.
  runtime-recomp/tests/legacy_mods/
    README.md                       Update only affected command/fixture paths;
                                    retain coverage/history distinctions.
  packaging/MACOS-BUILD-README.md    Retain source/build support; state macOS
                                    binary exclusion, do not delete the port.
  assets/controllers/README.md      Verify snapshot/hash/licence, keep provenance.
  assets/filters/README.md           Verify assets/hashes, preserve credit/licence.
  patches/android/README.md         Verify staged patch composition and public
                                    platform gates; retain technical scope.
  patches/camera-plus/README.md     Align flat-screen presets/limits; preserve
                                    explicit unfinished VR status.
  patches/character-portraits/
    README.md                       Current portrait extraction, arena artwork
                                    and crash correction; historical beta label
                                    belongs in evidence, not player help.
  patches/save-layout/README.md      Fixed stock save format and added-record
                                    separation; align with shared-save policy.
  patches/shared-saves/README.md     Personal/online/development separation,
                                    migration, readback and current composition.
  patches/vanilla-water/README.md    Accepted flow algorithm and scope; link
                                    final coherent HD family loading layer.
  patches/viewport-flow/README.md    Current viewport/flow composition and inputs.
  patches/title-text/README.md       Retain original-font/full-width behaviour;
                                    use new top-level release entrypoint.
  patches/credits-viewport/README.md Retain full-width fade/sky and native bounds;
                                    no obsolete negative vertical overscan.
  patches/presentation-polish/
    README.md                       Distinguish earlier prefetch from final
                                    accepted HD-water correction; keep crash evidence.
  patches/sdk2/SDK-README.txt        SDK 2 release instructions, exact headers,
                                    compatible API 1 packages and final app baseline.
  patches/sdk2/PLAYTEST-README.txt   Historical/internal only; replace its role
                                    in release packages with one current SDK guide.
  patches/sdk2/STARTUP-FIX-README.txt Historical evidence retained in source,
                                    not another player-facing release README.

Other current documentation that must change together:
  CHANGELOG.md: one 1.0.7 release section with full grouped ledger, dated beta
    history retained underneath; no duplicate "released" declarations.
  RELEASE-VALIDATION.md: identify exact new source/artifact hashes; separate
    compiler/static checks, contributor historical evidence, owner acceptance
    and outstanding hardware/WAN checks. Do not reuse old test counts as new.
  docs/SAVES.md: replace mod-list save swapping with the shared personal save,
    explicit recovery, host continuation, custom records and Dev Menu sandbox.
  docs/LAUNCHER.md: Mod Store, current Save Manager pages, support ordering,
    removed disclosures, controller keyboard entry and update controls.
  docs/GRAPHICS.md + HUD-WORKSHOP.md: accepted flow/HD loading, intro/credits,
    lava glow, Camera++ and verified online/local graphics restrictions.
  docs/ONLINE_MULTIPLAYER.md: exact backends/protocols/compatibility, prepared
    resource proof, code/development consent, save ownership and local view.
  docs/MAGIC_CODES.md: stock codes versus Custom Magic Codes, API 1/2, explicit
    executable approval, import/settings, cups, AI and development tools.
  docs/LEGACY-MODS-BETA.md: current import/support guide, not a beta promise;
    modern-track toggles, Store/manual installs, portraits and behaviour limits.
  docs/CUSTOM_TRACKS.md: current native format/music/HD ZIP layouts, course
    identity, companion records and trophy sharing dependencies.
  docs/TEXTURE_PACKS.md: names, managed installations, updates/priority,
    coherent HD liquid loading and incomplete-pack behaviour.
  docs/UPDATES.md: signing/ownership/recovery, stable/beta transition, APK
    certificate requirements and actual supported release platform IDs.
  docs/TROUBLESHOOTING.md: actual log history/export, installed-data recovery,
    save scope, Store repair and actionable water/allocation reports.
  docs/BUILDING.md + DEVELOPMENT.md + ARCHITECTURE.md + F3DDKR.md +
    RENDER_SNAPSHOT_ARCHITECTURE.md: final reproducible pipeline, source ownership,
    staged dependency policy and private renderer/SDK boundaries.
  docs/PLATFORMS.md + ANDROID-CI.md + IOS-CI.md + NIGHTLY-CHECKS.md +
    REGRESSION.md: actual delivered platforms, current ABI requirements and
    contributor checks; no implied device/performance acceptance.
  docs/MODDING_ARCHITECTURE.md: retain as a dated proposal/reference, with a
    clear link to the implemented SDK 2 contract, not conflicting current advice.
  docs/PUBLIC-1.0.7-NOTES.txt: full release notes from the same change ledger.
  modding/USER-GUIDE.txt + SDK.txt + MODDERS-GUIDE.txt + IMPLEMENTATION-STATUS.txt:
    reconcile the public kit with API 2 source and exact released examples.
    Generate Bible TXT/HTML/PDF from ONE current source and public headers.
  tools/blender/CHANGELOG.md: only changes actually in this addon since its
    previous release; do not invent a new addon release from game changes.

All remaining inventoried documents receive a named disposition in the
documentation inventory: current/update, technical/verify, historical/retain
or legal/preserve. Historical investigations stay in source, outside runtime
packages. Keep existing discussion links or add compatibility redirects if a
later approved reorganisation moves them. No mass deletion of docs/.

Documentation checks before publication:
  - Relative links/anchors exist in the source AND in any offline guide bundle.
  - Menu labels, defaults, formats and platform limits match the effective code.
  - No active guide says beta 5, mod-list personal saves, SDK 1 only, fully
    working VR, guaranteed performance parity or unqualified online LOD parity.
  - Historical and legal files are exempt from blind version-word replacement.
  - Package README is platform-specific and concise; README.txt is canonical
    in Windows. Do not ship a stale duplicate README.md beside it.

7. SLIM DOWN THE ACTUAL PLAYER PACKAGES
-------------------------------------
The accepted Windows test package has 13 .md files. The extension alone does
not decide whether a file can go. These are the exact decisions for RELEASE
assembly; the accepted test ZIP has not been edited in place.

Exclude from the release game ZIP and preserve in source/backup:
  README.md                         Redundant beside canonical README.txt.
  ONLINE-STABILITY.md               1.0.5 beta 3 report with obsolete peer rules.
  LEGACY-MOD-COMPATIBILITY-BETA7.md   Historical compatibility report, not setup.
  MODERN-CAMERA-README.md            Old camera guidance; replace its useful
                                    instructions with current Camera++ guidance.

Revise/consolidate rather than silently lose useful instructions:
  HUD-WORKSHOP.md
  LEGACY-MODS-BETA.md
  ONLINE_MULTIPLAYER.md
  UPDATES.md
Put their relevant content into a single optional Player Guide.html (with an
index) plus the source docs. Keep the top-level README.txt short. All links
must point to shipped content or an explicit public URL, not missing files.

Keep legal/provenance content intact:
  LICENSE.md
  COPYING-NOTICE.md
  THIRD_PARTY.md
  ThirdPartyLicenses/CRT-FILTERS-NOTICE.md
  ThirdPartyLicenses/DXC-NOTICE.md
Retain every other required dependency licence, the Wave Race MIT notice,
icon/font/controller database attribution and source-code notices. If moved
into a Licences/ folder, fix paths and verify obligations before packaging.

Proposed Windows player layout:
  DKR-R.exe
  README.txt
  RELEASE-NOTES.txt
  Player Guide.html                Optional concise offline help.
  assets/                          Only runtime-required assets/update ownership.
  libexec/dkr-r/                   Runtime, input host, mod worker, updater, DLLs.
  ThirdPartyLicenses/              Required legal notices.
  LICENSE.md / COPYING-NOTICE.md / THIRD_PARTY.md

Distribute SDK/Bible/source examples/authoring utilities as a separate clearly
named SDK 2.0 ZIP. Put optional sample NRMs/ModernCamera++ in an explicit Mods
download or Samples folder, never silently install or approve them. Do not
make the runtime depend on that authoring bundle. Decide whether to retain a
Samples folder in the game ZIP before finalising the allowlist.

Collapse layered playtest notes such as SAVE-MANAGER-BETA10.txt,
TITLE-TEXT-UPDATE.txt, VIEWPORT-FLOW-UPDATE.txt, WATER-ANIMATION-UPDATE.txt,
CREDITS-UPDATE.txt, PRESENTATION-UPDATE.txt, SURGICAL-PERFORMANCE.txt and
HD-WATER-LOADING.txt into the one current changelog/player guide. Use the
inventory to confirm actual filenames before moving anything. Detailed
qualification notes, receipts, captures and PDBs remain in the PRIVATE release
evidence bundle. Never distribute private keys, ROMs, profiles, installed mods,
save files, crash dumps, CMake caches, test fixtures or local paths as player data.

Perform package cleanup BEFORE generating install ownership and ZIP/AppImage
hashes. Removing a file afterwards invalidates the inventory/update contract.
Regenerate the ownership manifest, scan the final tree and archive, then sign
the final bytes. Keep exact EXE/PDB pairs privately for crash diagnosis.

8. VERSION, UPDATER AND PLATFORM RELEASE GATES
-------------------------------------------
Use v1.0.7 for the public release and 1.0.7 internally. Update all version
sources together: VERSION, native build override, Windows resources/bootstrap,
Linux AppStream/desktop metadata, APK versionName/versionCode, installer/update
ownership, example minimum app requirements and package names. Do not rename a
beta ZIP and call it a release.

Important updater finding: Version::parse removes +metadata, and compare uses
the three core numbers plus '-' prerelease fields. Therefore 1.0.7+beta.10
compares EQUAL to 1.0.7 in already-shipped beta readers. update_service skips
equal/older releases. A new stable binary cannot retroactively repair an old
client's comparison. Plan an explicit manual stable upgrade for these betas;
do not weaken signature/version checks or silently publish a different number.
Future prereleases should use a correctly ordered convention only after SDK
minimum-version compatibility and update migration have been designed.

Keep the existing Ed25519 trust anchor. The public key file is present, but
possession of that file does NOT mean the release private key is available.
Do not regenerate a replacement key or put it in the repo. Resolve signing
with the owner before promising automatic installation metadata. If the key
cannot be recovered, normal manually downloadable release assets can still
be prepared; a deliberate trust-rotation design is a separate decision.

Android must keep the existing application ID/signing certificate and choose
a versionCode above EVERY distributed APK. The local latest output metadata
already shows beta 7 code 1070016, while the Gradle default is only 1070010.
Do not blindly use that default. Inventory actual published/beta APK metadata
and signer fingerprints before selecting the release code. Do not uninstall
the app as a workaround for an upgrade failure; preserve private user data.

Intended release artifacts, using one frozen source/features ledger:
  - Windows x64 ZIP, one public DKR-R.exe and required private helpers.
  - Linux x86_64 AppImage (and checksum/receipt).
  - Steam Deck named AppImage/delivery with the same x86_64 engine payload;
    qualify SteamOS/controller/overlay separately, not as a different backend.
  - Linux ARM64 AppImage, actual ARM64 ELF and correct libraries/runtime.
  - Android ARM64 APK with a monotonically increasing code and original signer.
  - Separate SDK 2.0 ZIP and matching Bible TXT/HTML/PDF.
MacOS binaries remain excluded as requested. Preserve macOS/iOS source ports
and contributor CI; do not delete them to make the repository look simpler.
No new IPA is implicitly added by the phrase "all platforms" in this plan.

Verify each final binary's architecture, dependency paths, version, required
features and declared minimum OS. Determine glibc baseline from actual final
ELF symbol requirements rather than copying an old documentation number.
An AppImage does not supply the user's GPU driver or replace system glibc.
ARM cross-builds/compilation are not proof of cross-architecture determinism,
physical GPU compatibility or Windows-equivalent Android performance.

9. ACCEPTANCE AND PUBLICATION: NO PAPERING OVER FAILURES
------------------------------------------------------
Assistant work: source/receipt checks, compiler/linker builds, package/archive
integrity, architecture/dependency/version inspection, legal/private-data scans,
link checks and exact content/compatibility comparison. No game, CTest, replay
benchmark or gameplay/device test is run without a new owner instruction.

Owner acceptance checklist for the release candidate:
  - Same opening HD-water scene and packs used for the accepted fix; cold/warm
    loads, Original/enhanced water, reload and windowed/fullscreen transitions.
  - Hub, Whale Bay, Pirate Lagoon, rivers/waterfalls and lava; keep accepted flow.
  - Both logo sequences, plaque fade/skip, wide Start-menu text and COMPLETE
    credits including lower sky, black fades and screen edges at high FOV.
  - Both US revisions; normal/offline, 2/3/4-player local, online eligible views.
  - Personal mod/no-mod continuity, old-save recovery, full/selected completion,
    unlocks, records, Paks, transfer bundles and separate Dev Menu progress.
  - .dkrmap music/HD assets, legacy Big Donut/Moon Station, custom portraits in
    the two arenas, cups, AI difficulty and existing API 1/API 2 packages.
  - Store install/update/reinstall/duplicate/repair with characters, native and
    legacy tracks, code and textures; correct names, stable receipts/status,
    no unwanted extra copies, readable cancel/keyboard dialogs and role gates.
  - Windows/SteamOS online, correct common IDs/resources, host/client save
    isolation, code settings, full-screen HUD/nameplates and reconnect/return.
  - Camera++ presets/shadows/local input; do not count incomplete VR as a pass.
  - 60/120/180 presentation targets and normal warm-up; judge interval tails,
    sustained performance and quality, not only average FPS or fans/noise.
  - Actual ARM/Android/Deck checks for input, audio, save reload, startup,
    pause/background/resume and sustained performance before platform claims.

Record exact package hashes and the person/device/result for each acceptance.
Do not reuse a contributor's old successful CI run as this candidate's runtime
acceptance, or describe an untested port as equivalent because it compiles.

Before publishing:
  1) Recheck origin/main and merged PRs; review any new changes in isolation.
  2) Create a dedicated codex/release-v1.0.7 branch only when implementation is
     authorised. Preserve authorship, notices and contributor changes.
  3) Commit authored Pipeline/runtime-source integration/docs/packaging only.
     Keep ROMs, generated functions, staged dependencies, build products,
     credentials, developer data and local reports out of Git.
  4) Generate source archive, runtime assets, SDK and Bible from that commit.
     Release notes must identify the same source revision as the binaries.
  5) Rebuild all intended platforms after the final version/documentation/
     package changes; verify final online identities and ABI contracts.
  6) Assemble allowlisted distributions; regenerate install ownership; scan
     paths/content/legal/private data; generate final SHA256SUMS and receipts.
  7) Retain private symbols/evidence. Sign final update metadata only with the
     existing approved key and compatible per-platform asset identifiers.
  8) Obtain owner acceptance and explicit approval to push/tag/publish.
  9) Push the agreed commit/main update safely; create the v1.0.7 release/tag
     and upload verified artifacts only under that later publishing authority.
 10) Check the published files/links/hashes and document manual beta upgrade.
     Keep a recovery package and do not silently replace a published asset.

10. REQUIRED OUTPUTS AND DEFINITION OF DONE
-----------------------------------------
The implementation phase should produce:
  - A clean, documented release source commit containing all accepted changes.
  - One reproducible Patch Pipeline entrypoint and an explicit input contract.
  - A per-feature/per-platform evidence ledger and owner acceptance record.
  - Revised current READMEs/guides/changelog in the owner's voice, with honest
    limits, correct menu names and no beta handoff notes in player packages.
  - An allowlisted game package with no obsolete report/duplicate-readme clutter.
  - All five intended platform deliveries plus SDK 2.0 and the three Bible formats.
  - Final checksum/ownership/signing records, private symbols and recovery copies.
  - A second reviewed obsolete-output list and verified archive to the named
    F: backup, after the new clean recipe no longer needs those old outputs.

Release readiness is blocked until reproducible composition, current docs,
version/updater/APK-signing decisions and owner platform acceptance are resolved.
That is the point of this plan: lock the bits that work, fix the release process,
and explain what is ACTUALLY in the update. Not just put a new label on beta 10.
