# London WC3 1.31 command-stream handoff

Status: disabled for the initial London release. Route 1.31 replays to the
validated AWS renderer. London seats 1-5 remain available for supported
profiles.

`W3CS_ENABLE_131` now defaults to `0` in the London deploy and checkpoint
builder. This prevents a normal deploy from advertising the demo or
rebuilding experimental 1.31 checkpoints. Set it to `1` only for an
isolated continuation of this investigation.

## Proven facts

- The installed client is `1.31.1.12164-retail`. Its CASC store opens and
  indexes correctly: 17,791 indexed blobs and 65,060 root paths.
- The test replay is
  `00594a2a51eae53421156f158bff245a60c8a97c`. It records build `10031`, map
  path `Maps/1.31.1.12164\frozenthrone\community\(2)lastrefuge.w3x`, and map
  CRC `df33d24b`.
- The selected map is a valid external MPQ/Storm archive. Its SHA-1 is
  `56c6b4927012459bed2d29fa22037da07df0ab0a`. The replay and map bytes are
  identical on London and on the successful AWS build.
- Wine file tracing proved that the London game opens this exact external
  map file. The game rejects it after the open. This is not a missing-file,
  path-case, or map-alias failure.
- The D3D9 command proxy and browser WebGPU path work. The error dialog
  streams at about 39 FPS with 1.5-2.3 ms browser GPU submit time. The block
  occurs before gameplay.
- A free AWS slot restored the same replay successfully in 2.35 seconds.
  The AWS process had the same replay and map open. Its parent uses the
  validated 1.31 D3D11/DXVK launch state.

## Experiments that did not fix the rejection

- Copying the map to Documents, Saved Games, the game root, `x86`, and
  `x86_64`.
- Rebuilding the London generic parent with the AWS overlay-prefix layout.
- Rebuilding it with the exact hash-pinned AWS replay-open gate
  (`aa9d46a7...`).
- Using the exact replay and map bytes from the AWS layer.
- A cold London D3D11/DXVK launch with the AWS-style arguments. It reached
  the Blizzard crash reporter before gameplay.

The important distinction is parent state. The AWS per-replay child was
checkpointed only after the 1.31 engine had accepted the replay and map.
The London generic D3D9 parent reaches the replay-open boundary, but its
initialized engine state rejects the same replay/map pair.

## Best next step

1. Use the proven AWS 1.31 layer-builder path on a disposable AMD worker.
2. Install the x64 D3D9 no-raster command proxy before the generic parent is
   created. Keep all other AWS launch and prefix inputs unchanged.
3. Build one generic replay-open checkpoint there. Test it first on the AWS
   host, then test cross-host restore on London.
4. If it still fails with D3D9, attach a read trace after the successful map
   open and compare it with the AWS D3D11 parent. Do not repeat path aliases.
5. Before enabling the profile, test several 1.31 replays on different maps.

The repository CASC reader can extract the 1.31 checksum scripts without a
new dependency:

```sh
W3_INSTALL='/opt/war3-runtime/classic-131/source/Warcraft III' \
  node webplayer/tools/casc-cli.mjs extract \
  'war3.w3mod/scripts/common.j' /tmp/common.j
```

Use the same command for `war3.w3mod/scripts/blizzard.j`, then run
`infra/runtime/classic-map-crc.py` to confirm the replay's `df33d24b` map
CRC. This check is useful evidence, but it is not the primary suspected
failure because the exact map already works on AWS.
