test(vk): cover staging fallback ownership and publication #1741

Merged
Arkex-ai merged 1 commit from test/staging-fallback-publication into main 2026-11-10 15:29:22 +00:00
Arkex-ai commented 2026-11-10 15:07:48 +00:00 (Migrated from github.com)

The complete texture-staging source fixture no longer compiles after #1505 and #1514: it lacks the ASTC failure diagnostic, <atomic> and the new unmapped-arena destruction boundary. This breaks the game-free source checks on current main, independently of any later feature patch.

Restore the fixture dependencies and execute the new fallback path with separate modeled host/device caches. Preserve the existing publication, atom-alignment, reuse and failure assertions; add cases for a smaller mapped arena, an allocated-but-unmapped large attempt, both attempts unmapped, ASTC fallback publication and completed fallback reuse. Model destruction ownership explicitly and reject flushing dead allocations. ASTC gathers now cross multiple noncoherent atoms, so a truncated flush cannot pass merely because atom rounding covers the whole tiny test payload.

Only the two test files change. The authored large-arena threshold is2MiB to bound test memory while keeping production's actual1MiB size rounding. Production Vulkan code, the API, retirement policy and shaders are unchanged.

Validation at fe1c22ceb699830965d75168bfe13efc9db690ef, based on main 8bac8aa67dc1260e18cb1bf50e844b0d943967eb:

  • 24 coherent/noncoherent execution cases pass with LLVM/MinGW, Linux GCC and ASan/UBSan.
  • Nine behavioral mutants are rejected: missing/wrong-sized fallback, unmapped admission or cleanup leak, missing CPU/ASTC publication, truncated ASTC flush and incorrect publication offsets.
  • Full local suite: 247 passed / 2 failed / 20 skipped, versus main 246 / 3 / 20. The staging fixture compilation failure is removed. The remaining NUP symlink-privilege and missing Windows-SDK guard failures are identical local environment failures in both runs. No assertion, compiler warning or workflow check is disabled.
  • Fresh all-open file-overlap check found no existing PR changing these two fixture files. No game data is needed or included; this test-only repair makes no native GPU-OOM, performance or campaign claim.

Exact-head fork workflows have been dispatched and are pending:

Current-head validation

Current head fe1c22c, based on main 8bac8aa. Earlier local/runtime results describe their recorded source hashes.

Fork runs are separate from upstream Actions approval; no maintainer approval gate is bypassed.

The complete texture-staging source fixture no longer compiles after #1505 and #1514: it lacks the ASTC failure diagnostic, `<atomic>` and the new unmapped-arena destruction boundary. This breaks the game-free source checks on current main, independently of any later feature patch. Restore the fixture dependencies and execute the new fallback path with separate modeled host/device caches. Preserve the existing publication, atom-alignment, reuse and failure assertions; add cases for a smaller mapped arena, an allocated-but-unmapped large attempt, both attempts unmapped, ASTC fallback publication and completed fallback reuse. Model destruction ownership explicitly and reject flushing dead allocations. ASTC gathers now cross multiple noncoherent atoms, so a truncated flush cannot pass merely because atom rounding covers the whole tiny test payload. Only the two test files change. The authored large-arena threshold is2MiB to bound test memory while keeping production's actual1MiB size rounding. Production Vulkan code, the API, retirement policy and shaders are unchanged. Validation at `fe1c22ceb699830965d75168bfe13efc9db690ef`, based on main `8bac8aa67dc1260e18cb1bf50e844b0d943967eb`: - 24 coherent/noncoherent execution cases pass with LLVM/MinGW, Linux GCC and ASan/UBSan. - Nine behavioral mutants are rejected: missing/wrong-sized fallback, unmapped admission or cleanup leak, missing CPU/ASTC publication, truncated ASTC flush and incorrect publication offsets. - Full local suite: **247 passed / 2 failed / 20 skipped**, versus main **246 / 3 / 20**. The staging fixture compilation failure is removed. The remaining NUP symlink-privilege and missing Windows-SDK guard failures are identical local environment failures in both runs. No assertion, compiler warning or workflow check is disabled. - Fresh all-open file-overlap check found no existing PR changing these two fixture files. No game data is needed or included; this test-only repair makes no native GPU-OOM, performance or campaign claim. Exact-head fork workflows have been dispatched and are pending: - [Game-free source regressions](https://github.com/Arkex-ai/Hookshot/actions/runs/42840860984) - [Windows builder](https://github.com/Arkex-ai/Hookshot/actions/runs/42840866428) - [Linux AppImage](https://github.com/Arkex-ai/Hookshot/actions/runs/42840872035) <!-- goal15-current-validation --> ### Current-head validation Current head `fe1c22c`, based on main `8bac8aa`. Earlier local/runtime results describe their recorded source hashes. - [Linux AppImage](https://github.com/Arkex-ai/Hookshot/actions/runs/42840872035): success. - [Windows builder](https://github.com/Arkex-ai/Hookshot/actions/runs/42840866428): success. - [Game-free source regressions](https://github.com/Arkex-ai/Hookshot/actions/runs/42840860984): queued. Fork runs are separate from upstream Actions approval; no maintainer approval gate is bypassed.
Commenting is not possible because the repository is archived.
No description provided.