update: verify source identity across split builder downloads #331

Closed
monsterlag wants to merge 17 commits from fix/revision-aware-updates into main
monsterlag commented 2026-11-07 21:10:41 +00:00 (Migrated from github.com)

Detect corrected source builds published under an existing release tag, and carry that identity through the current Builder, game-folder launcher and update handoff.

  • Record the packaged source revision in the game metadata. The host offer, skip decision, Builder status/cache and fetched-builder validation compare tag plus revision. Unknown/legacy metadata can offer verification or allow play, but cannot establish that the folder is current.
  • Verify staged public build sources and the compiled GUI's embedded revision before packaging. Bind the GUI bytes and split parts to the declared identity; keep current app validation when unchanged dependency parts are reused. Staged dependency folders take precedence over reused records.
  • Preserve the released updater's five-cycle backoff, alternate asset route, early-EOF handling and JSON timeout. Bound header/per-read inactivity, preserve user cancellation and active progress, and do not retry digest/identity failures or authorization failures.
  • Normally merge current main, retaining its launcher/bin layout, remembered settings, storage choices, build timing/cleanup and automatic run_all.py --strict CI. The native policy and managed identity/transport/folder fixtures are automatically discovered instead of restoring the old workflow's explicit test lists.

Refresh validation: 26 authored metadata/packaging/reuse checks and 13 actual staging-loop checks passed. Actual managed identity/parts/archive/cache/transport/cancellation/handoff fixtures, 28 folder/argument decisions, 69 child-worker assertions, and the portable native policy with its intended tag-only negative passed. The exact-head self-contained WPF Release compiled and both GUI artifacts embedded d702be5f5c3eec41cd6ebe953ebc882405e14ec0. The new isolated test wrapper's first launch-path error was corrected by building and executing its exact temporary DLL; no fixture assertion was relaxed.

No real installed-GUI/network-update/rebuild or game test is claimed. Already-shipped legacy binaries need a one-time manual/new-tag installation; unknown files are not silently stamped current. Same-source toolchain-only repacks are outside this source-revision fix. Updater and installer deployment behavior remains separate from the locally tested player.

Detect corrected source builds published under an existing release tag, and carry that identity through the current Builder, game-folder launcher and update handoff. - Record the packaged source revision in the game metadata. The host offer, skip decision, Builder status/cache and fetched-builder validation compare tag plus revision. Unknown/legacy metadata can offer verification or allow play, but cannot establish that the folder is current. - Verify staged public build sources and the compiled GUI's embedded revision before packaging. Bind the GUI bytes and split parts to the declared identity; keep current app validation when unchanged dependency parts are reused. Staged dependency folders take precedence over reused records. - Preserve the released updater's five-cycle backoff, alternate asset route, early-EOF handling and JSON timeout. Bound header/per-read inactivity, preserve user cancellation and active progress, and do not retry digest/identity failures or authorization failures. - Normally merge current main, retaining its launcher/bin layout, remembered settings, storage choices, build timing/cleanup and automatic `run_all.py --strict` CI. The native policy and managed identity/transport/folder fixtures are automatically discovered instead of restoring the old workflow's explicit test lists. Refresh validation: 26 authored metadata/packaging/reuse checks and 13 actual staging-loop checks passed. Actual managed identity/parts/archive/cache/transport/cancellation/handoff fixtures, 28 folder/argument decisions, 69 child-worker assertions, and the portable native policy with its intended tag-only negative passed. The exact-head self-contained WPF Release compiled and both GUI artifacts embedded `d702be5f5c3eec41cd6ebe953ebc882405e14ec0`. The new isolated test wrapper's first launch-path error was corrected by building and executing its exact temporary DLL; no fixture assertion was relaxed. No real installed-GUI/network-update/rebuild or game test is claimed. Already-shipped legacy binaries need a one-time manual/new-tag installation; unknown files are not silently stamped current. Same-source toolchain-only repacks are outside this source-revision fix. Updater and installer deployment behavior remains separate from the locally tested player.
NotRexed commented 2026-11-07 23:08:22 +00:00 (Migrated from github.com)

Thanks, this is thorough. Since it changes the packaging and the C# builder and the real update path hasn't been run end to end yet, I'll review and test it right after the next release (which is about to go out with the llvm-mingw builder), rather than ship it untested in the same package.

Thanks, this is thorough. Since it changes the packaging and the C# builder and the real update path hasn't been run end to end yet, I'll review and test it right after the next release (which is about to go out with the llvm-mingw builder), rather than ship it untested in the same package.
NotRexed commented 2026-11-09 05:29:08 +00:00 (Migrated from github.com)

Closing to keep the queue clear — please rebase on current main and reopen; thanks!

Closing to keep the queue clear — please rebase on current main and reopen; thanks!
Commenting is not possible because the repository is archived.
No description provided.