Skip to content

fix(client-assets): verify configured release archives - #97

Open
blakinio wants to merge 5 commits into
mainfrom
ci/OTC-20260730-client-assets-real-release-rehearsal
Open

fix(client-assets): verify configured release archives#97
blakinio wants to merge 5 commits into
mainfrom
ci/OTC-20260730-client-assets-real-release-rehearsal

Conversation

@blakinio

@blakinio blakinio commented Jul 30, 2026

Copy link
Copy Markdown
Owner

Purpose

Close the production-integrity blocker exposed by the first real-release rehearsal for merged PR #37.

Change

  • normalize the SHA-256 digest supplied by the configured GitHub release asset;
  • bind it only to the exact selected browser_download_url;
  • verify downloaded archive bytes before the installer can begin extraction;
  • fail closed on read/hash mismatch;
  • leave codeload fallback and unrelated HTTP downloads unchanged;
  • restore both conditional HTTP wrappers on module unload;
  • add focused Lua coverage and owning asset documentation.

Real-release evidence

The operational workflow queries the actual configured dudantas/tibia-client releases endpoint, verifies the upstream manifest identifier, builds a clean Linux client, drives the shipped installer under Xvfb and proves exact client version 1525 loads appearances/static data. The workflow remains temporary and will be removed before merge after final evidence is recorded.

Safety

No account or game-world login, deployment, committed/downloaded game bytes, workflow artifact upload, hash relaxation or alternate runtime asset path.

Coordination

Shared docs/agents/MODULE_CATALOG.md and docs/agents/CHANGELOG.md remain untouched because draft PR #23 owns those paths.

Validation

  • focused Lua and repository CI: running on exact head;
  • real-release rehearsal: running on exact head;
  • final workflow removal and exact-head merge checks: pending successful rehearsal.

Task

OTC-20260730-client-assets-real-release-rehearsal

@blakinio
blakinio force-pushed the ci/OTC-20260730-client-assets-real-release-rehearsal branch from 73ddebd to e5bce44 Compare August 1, 2026 08:17
@blakinio blakinio changed the title ci: rehearse client-assets real release fix(client-assets): verify configured release archives Aug 1, 2026
@blakinio
blakinio marked this pull request as ready for review August 1, 2026 08:21
Restack the release archive integrity fix on current main, request the GitHub API version that exposes asset digests, and fail closed before download when an authoritative SHA-256 digest is absent.
@blakinio
blakinio force-pushed the ci/OTC-20260730-client-assets-real-release-rehearsal branch from e5bce44 to 0941f09 Compare August 1, 2026 11:53
Keep the versioned GitHub API headers active until the asynchronous release response completes, retain fail-closed digest binding, and cover the request lifetime in Lua tests.
Before any configured GitHub release archive download without a cached digest, refresh the versioned release catalog, bind the exact asset URL, and fail closed if the authoritative SHA-256 remains unavailable.
Wrap the exported ensureClientVersion entry point so the configured GitHub release and download wrappers are installed after HTTP startup. Preserve fail-closed archive digest verification and cover the late-initialization runtime ordering.
Verify any exact archive URL bound from the configured release response, while limiting cache-miss refreshes to the configured GitHub release download namespace. This keeps synthetic fixtures faithful to the URL-binding contract.
@blakinio blakinio added programme:client Oteryn client programme state:stalled No meaningful update within the configured threshold labels Aug 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

programme:client Oteryn client programme state:stalled No meaningful update within the configured threshold

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant