# Combined-addon development playtest build The current project is **Co10 Escape Reintroduced**, `ERR_Core`, GUID `2528466DE220D91C`, in `addons/core/addon.gproj`. Mission, AI, Intel, Map and Chat are included in this one addon. There are no separate companion projects to build or enable. See [the combined layout](single-mod.md). The latest retained, hash-verified handoff is [2 October — controller ownership fixes](../.build/playtest-2026-10-02-owner-fixes/README.md), at `.build/playtest-2026-10-02-owner-fixes`. It contains matching editable source and one packaged addon: **403 authored files and 346 exact PAK payloads**. It includes the previous ground-depot/guide features plus observer ownership, replacement-controller rebinding and chat menu teardown ownership fixes. This is an **unqualified development candidate**. Its exact source passes all 280 registered regression programs and 63 scripted normal-route assertions. Fresh ordinary startup of the exact package verifies the mission and local prisoner. The 13/17 installed-resource errors and strict failed packaging/startup verdicts remain. Human play, real multiplayer, native controller replacement, physical logistics, comparative FPS and clean release still require qualification. Optional terrain integration remains experimental. See [current status](current-status.md). Later edits are not automatically present; the ground-depot/guide and all earlier candidates remain unchanged. ## Identities and required dependencies | Role | Project or dependency | GUID | | --- | --- | --- | | Single successor addon | ERR_Core / Co10 Escape Reintroduced | `2528466DE220D91C` | | Direct base dependency | Arma Reforger | `58D0FB3206B6F859` | | Direct external dependency | RHS: Status Quo | `595F2BF2F44836FB` | | Direct external dependency | WCS Armaments | `629B2BA37EFFD577` | | Direct external dependency | WCS BMP-1 | `5E524E4FEECCA92B` | | Direct external dependency | Parachute Framework | `65930CB4CD0237B2` | | Transitive external dependency | RHS Content Pack 01 | `1337C0DE5DABBEEF` | | Transitive external dependency | RHS Content Pack 02 | `BADC0DEDABBEDA5E` | | Transitive external dependency | WCS SpaceCore | `5E389BB9F58B79A6` | Install the seven external addons separately. The audited versions, descriptor hashes and dependency graph are in [external-addons.json](external-addons.json); a source bundle includes this as `EXTERNAL-ADDONS.json`. The private runners expose only that audited closure. Original Escapists and its extensions are not part of the successor's dependency graph. Third-party assets are not bundled. The normal scenario is `{C1E20667DCE324ED}Missions/ERR_Everon.conf` (“Co10 Escape Reintroduced — Everon”). The Base header `{AD62322D5213C440}Missions/ERR_Everon_Base.conf` is a hidden diagnostic entry; it also loads the combined addon and its dependencies. ## Build from frozen source Run from `/home/jakub/devel/escapistsrereintroduced`. Replace the example prefix and installed-addon paths below, and use fresh names for every private session, profile and output ZIP. The compatibility directory must be an existing idle, disposable Tools prefix under `/tmp`, not the installed Steam prefix. ```sh ERRI_COMPAT=/tmp/YOUR-IDLE-DISPOSABLE-TOOLS-PREFIX ERRI_EXTERNAL=/path/to/installed/workshop/addons python3 tools/headless_game.py --compat "$ERRI_COMPAT" --inspect-processes python3 tools/check.py ``` The inspection is read-only. If a game, Tools session or another native runner is active, leave it untouched and wait before building. The existing runners manage their own hidden display, muted audio, isolated source/profile, prefix lock and cleanup. Do not bypass their refusal or cleanup checks or launch another native job concurrently. They do not require opening windows on either physical monitor. With source frozen, package the one project: ```sh python3 tools/native_package.py --project core \ --session /tmp/erri-playtest-package-NEW \ --compat "$ERRI_COMPAT" --external-addons "$ERRI_EXTERNAL" \ --timeout 300 python3 tools/source_bundle.py --mode development \ --output /tmp/erri-playtest-source-NEW.zip ``` The packager accepts `--project core`; the removed `--project chat` packaging recipe does not apply. Output is exactly `packages/core/{addon.gproj,data.pak,resourceDatabase.rdb}`. The ZIP is editable source only and must be written outside the checkout. Compare its `BUNDLE-MANIFEST.json` authored hashes against the packager's frozen source snapshot before describing it as matching source. `--silent-workbench` and `--exit-after-init` are optional, mutually exclusive packager lifecycle experiments. `--continue-on-failure` is diagnostic only; it does not turn a failed build into a pass. Keep resource/localization, shutdown and cleanup failures in the retained reports. Native exit code 0 alone is not build qualification. See [packaging control evidence](native-packaging-control.md). ## Check the normal route and exact packaged bytes These commands launch **hidden, muted, bounded diagnostics**, then close their own processes. They are not human play launchers. Run them sequentially while the frozen source and private runtime remain idle between jobs. ```sh python3 tools/headless_workbench.py \ --compat "$ERRI_COMPAT" \ --profile /tmp/erri-playtest-route-NEW \ --external-addons "$ERRI_EXTERNAL" \ --project chat --smoke normal-escape-route --rounds 1 --timeout 360 python3 tools/headless_game.py --project chat \ --packed-addons /tmp/erri-playtest-package-NEW/packages \ --packed-session /tmp/erri-packed-chat-playtest-NEW \ --compat "$ERRI_COMPAT" --external-addons "$ERRI_EXTERNAL" \ --timeout 180 --failure-grace 120 ``` Workbench `core` and `chat` select diagnostic fixture families, not different addon projects. Both need the external dependencies. `normal-escape-route` checks the normal generated Everon catalog; the older `escape-route` uses its fixture catalog. Scripted movement/actions do not establish human walking, interaction, combat or piloting. The ordinary packed command uses schema 4: one successor addon plus seven external addons, ten engine/vanilla/mod/dependency mounts altogether. Keep its default fifteen-second readiness interval. `--failure-grace 120` only retains a failed run for additional logs within the original timeout; it does not waive a failure. Historical `--packed-core`, vanilla Chat v2 and five-addon external v3 results do not validate this combined dependency graph. After reviewing both results, retain a new handoff with only the three runtime files inside `packages/core/`. Keep matching `source.zip`, extracted `source/`, raw reports/logs, provenance, cleanup results and SHA-256 hashes in separate sibling paths. Verify all three runtime hashes after copying. Never overwrite a previous candidate or mix newer loose source with an older PAK. Packed startup proves loading, normal mission readiness and local admission; it does not prove remote multiplayer or a full human escape. ## Human playtest Use the matching handoff's `source/addons/core/addon.gproj` for editable Tools work, with its installed external dependencies registered. Select `Missions/ERR_Everon.conf`. For packaged play, enable the single successor addon and its required dependencies in a separate playtest profile, then select that normal scenario. Use the mission header/scenario workflow, not a bare world load. The old five-addon launch scripts and Chat GUID `FA804F411BDDF2C6` are historical and must not be used for the current combined package. A visible human session is separate from the hidden commands above. Keep it on the user's chosen right monitor and muted, and quit normally before another native build or test. Do not enable smoke plugins, `errSmoke`/`errBaseSmoke`, input exercises or aircraft-fixture flags for ordinary play. This guide does not supply a new visible launcher or multiplayer server configuration. Follow [the current player route](player-route.md): prison → scavenging/clues → radio defence → helicopter → result/restart. `/esc menu`, Intel commands and the HQ journal are included in the combined addon. Restore settings changed during admin checks. Record the exact candidate, scenario, point of failure and profile log session. Remote joins/reconnects, partial escape, twelve connected players, full human completion and comparative FPS still need their own evidence. ## Retained candidate evidence The 30 September installed-slot candidate contains 376 matching authored addon files, 321 matching PAK payloads and three verified runtime files. Its normal route completes 55 scripted assertions through extraction/results, with zero script/runtime failures and thirteen installed-resource errors. Its [ordinary packed startup](evidence/packed-2026-09-30-installed-slot/packed-startup-report.json) verifies normal mission readiness and a local prisoner, with zero script/runtime failures and seventeen installed-resource errors. Both strict verdicts remain failed. [Packaging](evidence/package-2026-09-30-installed-slot/package-report.json) emitted matching files and exited 0 but retained localization and shutdown resource-leak errors. Consult the handoff README and hashes for its exact scope; later alarm/memory and mounted-ammunition source evidence does not update these packaged bytes. ## Historical five-addon handoffs The vanilla-only `.build/playtest-2026-09-20` candidate was frozen at `5e74269`: 216 authored files, five matching PAKs and fifteen verified runtime files. Its [build record](evidence/playtest-2026-09-20/build.json), [packed Core startup](evidence/packed-core-2026-09-20-playtest/report.json) and [packed full startup](evidence/packed-chat-2026-09-20-playtest/report.json) retain that snapshot's zero-error startup evidence. Native packaging/shutdown failures remained separate; human play, multiplayer and FPS were not qualified. The later [road-interception handoff](../.build/playtest-2026-09-20-road-interception/README.md) and [five-addon external workflow](packed-external-development.md) also describe an older layout. Their companion GUIDs, five-project build order, vanilla-only profile links and launch commands are not current instructions. Existing historical handoffs, source and failure records remain unchanged.