Refresh integrated playtest packages and handle disappearing test audio streams

This commit is contained in:
2026-09-20 00:33:58 +02:00
parent 5e742691ad
commit e7b4141f69
46 changed files with 4035 additions and 19 deletions
+31 -15
View File
@@ -1,6 +1,18 @@
# Development playtest build — 19 September 2026
# Development playtest build — 20 September 2026
This is a **development candidate for human testing**, not a qualified release. The handoff target is `/home/jakub/devel/escapistsrereintroduced/.build/playtest-2026-09-19`. The frozen202-file candidate passes two Core scripted escape/restart rounds (616 assertions), all repository checks, exact five-PAK source comparisons, and ordinary packed Core/full-companion startup. Human end-to-end play, remote multiplayer and FPS remain unverified. Run the handoff's `play-full.sh` (or `play-core.sh`) yourself for visible play; separate local profiles/runtime are already prepared and audio stays muted.
This refresh targets `/home/jakub/devel/escapistsrereintroduced/.build/playtest-2026-09-20` from gameplay source commit `5e74269`. It adds mission-owned Chat administration and menu, the owned Intel migration, and fairer HQ contact selection to the previous playtest. **The refreshed handoff is ready for human testing.** All 216 authored files match commit `5e74269`, all five PAK payloads match those sources, and all fifteen copied runtime files are verified. [Packed Core](evidence/packed-core-2026-09-20-playtest/report.json) and [packed full scenario](evidence/packed-chat-2026-09-20-playtest/report.json) pass ordinary startup with zero captured errors, unchanged inputs and verified cleanup. Consult [the exact build record](evidence/playtest-2026-09-20/build.json) and the handoff's raw `checks/`. This remains a development candidate for human testing, not a qualified release.
The source baseline already has native menu/owner-RPC and scripted escape evidence, including the final journal rendering/follow correction; see [Chat integration](chat-integration.md) and [AI/Intel migration](owned-ai-intel-migration.md). Full human play, remote multiplayer and comparative FPS remain unverified. Manual launch scripts use separate profiles and `/home/jakub/devel/escapistsrereintroduced/.local/playtest-compat-20260920`, keep sound muted, and refuse an unfinished handoff. They have not been launched visibly by this refresh. The previous `playtest-2026-09-19` folder remains untouched.
## First playable checks
Use the handoff's [short player route](../.build/playtest-2026-09-20/player-route.md) for prison → clues → radio → helicopter → results/restart. Check these migrated behaviors during that route:
- `/esc menu` works in Core itself. Test saved values, unfinished drafts surviving polls/page changes, normal Close/Escape behavior, and disabled controls for absent companions. Record each original setting and restore it after an Apply check; clock/date/weather choices apply next round.
- With Intel loaded, `/esc intel show`, `/esc intel reroll` and `/esc intel reroll show` expose batch progress. Recovered folders and discovered locations must survive a reroll. Distinct recovered clues update team discovery feedback; repeatedly moving the same folder must not reveal another clue.
- With AI loaded, check readable HQ journal entries, pause/resume, following at the bottom, and Jump to latest. Reports still need radio delivery before physical orders. Multi-target fairness needs a separate two-player observation: both targets remain visible to the same squad, and successive valid reports should not persistently favor only its first target. A solo run cannot establish that result.
The full scenario retains its Chat entrypoint identity and loads Core, AI, Intel, Map and the thin Chat assembly. Chat administration is implemented in Core classes; the assembly is not required for the base menu.
## Build and retain the candidate
@@ -8,7 +20,7 @@ Run these commands from `/home/jakub/devel/escapistsrereintroduced`, after the i
```sh
python3 tools/native_package.py --project chat \
--session /tmp/erri-playtest-packages-20260919 \
--session /tmp/erri-playtest-packages-20260920 \
--compat /tmp/erri-headless-compat --timeout 300 \
--silent-workbench --continue-on-failure
```
@@ -21,7 +33,7 @@ Create the separate editable source ZIP while the same source is frozen:
```sh
python3 tools/source_bundle.py --mode development \
--output /tmp/erri-playtest-source-20260919.zip
--output /tmp/erri-playtest-source-20260920.zip
```
This is source only. Compare its `BUNDLE-MANIFEST.json` authored hashes with the packager's source snapshot before identifying it as the packages' matching source. The ZIP tool refuses an existing output and writes outside the checkout.
@@ -34,13 +46,13 @@ These existing commands perform **hidden, bounded startup checks**; they close t
```sh
python3 tools/headless_game.py --project core \
--packed-core /tmp/erri-playtest-packages-20260919/packages/core \
--packed-session /tmp/erri-packed-core-playtest-20260919 \
--packed-core /home/jakub/devel/escapistsrereintroduced/.build/playtest-2026-09-20/packages/core \
--packed-session /tmp/erri-packed-core-playtest-20260920 \
--compat /tmp/erri-headless-compat --timeout 180
python3 tools/headless_game.py --project chat \
--packed-addons /tmp/erri-playtest-packages-20260919/packages \
--packed-session /tmp/erri-packed-chat-playtest-20260919 \
--packed-addons /home/jakub/devel/escapistsrereintroduced/.build/playtest-2026-09-20/packages \
--packed-session /tmp/erri-packed-chat-playtest-20260920 \
--compat /tmp/erri-headless-compat --timeout 180
```
@@ -56,10 +68,10 @@ Configure the extracted `source/addons` as the addon search directory. Open `sou
Installed regular game: `/home/jakub/.local/share/Steam/steamapps/common/Arma Reforger/ArmaReforgerSteam.exe`; installed Proton: `/home/jakub/.local/share/Steam/steamapps/common/Proton - Experimental/proton`. Use the existing normal visible game/Proton launch workflow, with a **separate playtest profile**, passing one of these argument sets. These are arguments, not shell commands that execute the Windows binary directly. `Z:` is the installed Wine mapping for these Linux paths.
The two local profile discovery links are already prepared. For a fresh copy elsewhere, prepare them once after the handoff directory exists. These commands write only inside that handoff; they do not alter installed vanilla assets. If either link already exists, inspect it instead of replacing it. This mirrors the existing startup runner's private-profile setup.
Prepare the two local profile discovery links after the new handoff directory exists. The build owner also prepares the separate local playtest compatibility directory while native testing is idle. These commands write only inside that handoff; they do not alter installed vanilla assets. If either link already exists, inspect it instead of replacing it. This mirrors the existing startup runner's private-profile setup.
```sh
ERRI_PLAYTEST=/home/jakub/devel/escapistsrereintroduced/.build/playtest-2026-09-19
ERRI_PLAYTEST=/home/jakub/devel/escapistsrereintroduced/.build/playtest-2026-09-20
mkdir -p "$ERRI_PLAYTEST/profile-core/addons" "$ERRI_PLAYTEST/profile-chat/addons"
ln -s '/home/jakub/.local/share/Steam/steamapps/common/Arma Reforger/addons/data' "$ERRI_PLAYTEST/profile-core/addons/ArmaReforger"
ln -s '/home/jakub/.local/share/Steam/steamapps/common/Arma Reforger/addons/data' "$ERRI_PLAYTEST/profile-chat/addons/ArmaReforger"
@@ -68,13 +80,13 @@ ln -s '/home/jakub/.local/share/Steam/steamapps/common/Arma Reforger/addons/data
Base only:
```text
-addonsDir Z:/home/jakub/devel/escapistsrereintroduced/.build/playtest-2026-09-19/packages -addons 2528466DE220D91C -profile Z:/home/jakub/devel/escapistsrereintroduced/.build/playtest-2026-09-19/profile-core -errOrdinaryScenario core -noSplash -noBackend -noSound -logconsole
-addonsDir Z:/home/jakub/devel/escapistsrereintroduced/.build/playtest-2026-09-20/packages -addons 2528466DE220D91C -profile Z:/home/jakub/devel/escapistsrereintroduced/.build/playtest-2026-09-20/profile-core -errOrdinaryScenario core -noSplash -noBackend -noSound -logconsole
```
Full companion scenario:
```text
-addonsDir Z:/home/jakub/devel/escapistsrereintroduced/.build/playtest-2026-09-19/packages -addons FA804F411BDDF2C6 -profile Z:/home/jakub/devel/escapistsrereintroduced/.build/playtest-2026-09-19/profile-chat -errOrdinaryScenario chat -noSplash -noBackend -noSound -logconsole
-addonsDir Z:/home/jakub/devel/escapistsrereintroduced/.build/playtest-2026-09-20/packages -addons FA804F411BDDF2C6 -profile Z:/home/jakub/devel/escapistsrereintroduced/.build/playtest-2026-09-20/profile-chat -errOrdinaryScenario chat -noSplash -noBackend -noSound -logconsole
```
The explicit ordinary launcher requests the native mission **header and MissionSystems**, once from the main menu. Do not substitute a bare `-world` load. The two headers are `{AD62322D5213C440}Missions/ERR_Everon_Base.conf` (“Rereintroduced: Everon Base (development)”) and `{C1E20667DCE324ED}Missions/ERR_Everon.conf` (“Rereintroduced: Everon (development)”). These names also identify the authored scenarios in the normal scenario menu. This local/offline setup uses `-noBackend`; it is not multiplayer hosting instructions. `-noSplash` avoids the separately documented stock splash path. These playtest arguments keep audio muted as requested and send no automated input. Quit through the game's normal menu before running another build/test.
@@ -87,10 +99,14 @@ The explicit ordinary launcher requests the native mission **header and MissionS
| map | ERR_Map | 9AAEE9041D79809E | Core |
| chat | ERR_Chat | FA804F411BDDF2C6 | Core, AI, Intel, Map |
Every project additionally requires installed vanilla Arma Reforger `58D0FB3206B6F859`; it is not bundled. Identities and commands above were checked against the current five projects, scenario headers, ordinary launcher and existing pack/startup runners. The visible launch recipe still needs the human run itself; no new native execution was performed to prepare this document.
Every project additionally requires installed vanilla Arma Reforger `58D0FB3206B6F859`; it is not bundled. Identities and command structure above match the current five projects, scenario headers and ordinary launcher. New package validation belongs to the reports for this handoff. The visible launch recipe still needs the human run itself; editing these instructions performs no native execution.
For the first session, test the ordinary prison → scavenging/documents → radio → helicopter → result/restart loop. Record the chosen scenario, where progression stopped, and the corresponding `profile-core/logs` or `profile-chat/logs` session. Retain known packaging errors separately from any gameplay failures. Remote joins/reconnects, twelve real players, full human completion and comparative FPS remain unqualified.
## This candidate's retained build results
## This candidate's build record
The standard packaging job produced Core, recorded native exit0, then stopped because an owned Wine helper remained until cleanup. Its failed verdict is unchanged. After strict idle verification, the remaining four addon jobs used the same frozen source and existing packaging function, each with native exit0, confirmed cleanup and unchanged source. All15 runtime artifacts and every PAK payload match the source. These separate continuation records and original UI shutdown errors are in the handoff's `checks/packaging/`; they do not qualify a clean build. [Core startup](evidence/packed-core-2026-09-19-playtest/report.json) and [full startup](evidence/packed-chat-2026-09-19-playtest/report.json) independently pass from the exact packages.
The source snapshot contains 216 authored files from `5e74269`. All five PAKs, their project descriptors and the matching source ZIP pass exact content-hash comparison. Both packed startup checks pass from the durable handoff's files. The previous September 19 handoff remains unchanged.
The standard packaging job produced Core with native exit 0, then retained a failed completion verdict because an owned Wine helper remained until cleanup. Separate remaining-addon jobs used the identical source after strict idle verification. AI, Intel and Map produced complete outputs; the first Chat attempt was interrupted by an audio stream disappearing between observation and routing. That failed attempt produced no Chat payload. A narrow helper correction tolerates a failed operation only when a fresh listing proves the exact stream is gone; all 44 focused packaging tests pass. A fresh Chat-only retry produced the matching output. Original failure reports and the retry remain under `checks/packaging-original/` and `checks/packaging-chat-retry/`.
Native resource/UI shutdown errors remain unchanged relative to the previous Core packaging attempt. Neither the retry nor successful packed consumption waives those errors. This is a development playtest candidate with clean ordinary startup, not a clean native build or qualified release.