7.2 KiB
External dependency development packages
Current AI/Chat requires the six installed dependencies in external-addons.json. Historical vanilla-only Core v1/Chat v2 packed contracts and evidence remain unchanged. Build only owned successor files; dependencies stay in their installed locations and are never bundled or published.
Freeze addon sources and serialize this command with other private native runs. The session must be new:
python3 tools/native_package.py --project chat \
--session /tmp/erri-radio-maintenance-packages \
--compat /tmp/erri-headless-compat --timeout 300 \
--external-addons '/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons' \
--silent-workbench --continue-on-failure
This uses the established hidden display, muted audio and owned cleanup. Native shutdown failures and the four installed external localization errors remain failures. Diagnostic continuation cannot waive unsafe cleanup or changed inputs. Inspect produced files before testing ordinary consumption; a PAK emitted during a failed build is only an unqualified development artifact.
Explicit packed Chat v3
Implementation:
tools/headless_game.py: lazy v3 dispatch and private profile hook/CLI flag.- new
tools/packed_external.py: exact v3 inventory, profile, provenance, evidence. - new
tests/test_packed_external_game.py.
Existing Core v1 and vanilla-only Chat v2 are unchanged by default, continue to reject expanded AI dependencies, and retain their old schemas. The new contract is selected only by --project chat --packed-addons plus --external-addons. It does not enable externals for loose source, Core, control or old packed inputs.
After native output content inspection:
python3 tools/headless_game.py --project core \
--packed-core /tmp/erri-radio-maintenance-packages/packages/core \
--packed-session /tmp/erri-packed-core-radio-maintenance \
--compat /tmp/erri-headless-compat --timeout 180
python3 tools/headless_game.py --project chat \
--packed-addons /tmp/erri-radio-maintenance-packages/packages \
--packed-session /tmp/erri-packed-chat-radio-maintenance \
--external-addons '/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons' \
--compat /tmp/erri-headless-compat --timeout 180 --failure-grace 30
Default canonical 15-second readiness settling is mandatory. Optional 30-second failure grace above retains later diagnostic output; it cannot turn an observed native error into success or extend the original timeout. The runtime remains hidden/muted and uses the existing exact prefix/process ownership and cleanup. No broad installed workshop directory is given to -addonsDir: only the private copied five successor packages, plus six allowlisted dependency links in profile.
Schema3 is packed-chat-external-runtime-input. It records all 15 runtime files,
exact external policy/hash, six installed addon file fingerprints/project names,
private paths, command and launch identity. Candidate and private copy bytes,
external inputs, policy/cache, exact dependency links, private profile containment
and provenance copies are reverified after cleanup. Failed verification prevents
packed-consumption success. Metadata/media are hashed along with executable PAK/
resource inputs; extra loose source or retargeted links are refused.
Runtime evidence must show all 13 exact engine/vanilla/successor/external addon identities, packed mounts, actual external PAK counts and resource databases, ordinary Game/GameLib flags, expected addon search directories and native ordinary header/participant readiness. Loose successor/external mounts, missing or extra addons/databases, whole-workshop searches and native errors fail. Only the captured canonical external folder and its exact private alias are accepted for each addon. No generic symlink/path resolution of logged paths admits arbitrary locations.
Retain complete new sessions as raw evidence. Existing archive_packed.py v2 archive contract has not been broadened: do not archive/qualify new v3 as historical v2. Report v3 results directly from the new session's packed-runner.json, packed-startup-report.json, packed-input-provenance.json, external snapshot files and native console. All outcomes remain build_qualified=false/release_qualified=false.
Offline validation: 18 new cases pass (closure/CLI, copies, exact private links, source/runtime/policy/cache/profile/provenance mutation, CRLF descriptors, multi-PAK external mounts, full logged closure, redirects/extra/loose/missing inputs and native error rejection). Existing unchanged packed Core's 21 and Chat's 9 tests pass against the integrated runner. These tests are synthetic; no native launch.
Radio/maintenance source checkpoint
The editable /tmp/escapistsrereintroduced-radio-maintenance-source.zip contains 253 payload files (251 authored addon files), 1,622,377 bytes, SHA-256 b12d16fc4cf331462002e79a58841e40c956a371ef66988fe03b06db6e26f336. Every authored file matches the frozen source used by /tmp/erri-radio-maintenance-packages. No installed dependency assets are included.
The first packaging attempt emitted Core's three runtime files but stopped with native-or-launcher-exited-prefix-active, native exit 0 and the existing Workbench shutdown resource errors. Owned cleanup and unchanged source/external inputs were confirmed. That failed report remains intact. A separately reviewed remaining-addon helper requires verified native exit, exact inputs/profile and an independently idle prefix before each further job; it does not promote any failed build verdict.
Core's PAK contains exactly 132 expected authored non-metadata files with matching hashes and no extra paths. Its ordinary packed startup passes with no captured errors, unchanged exact input bytes, normal Game/GameLib modules and a verified prisoner participant/header. Cleanup is confirmed. This is startup evidence; it is not a clean native build, normal held-interaction/full escape or multiplayer qualification.
All four separate remaining jobs completed with native exit 0, confirmed cleanup and unchanged source/external inputs. Their failed candidate verdicts remain in the raw build record. Exact payload comparison verifies Core 132, AI 58, Intel 4, Map 6 and Chat 12 paths/hashes: 212 total, with exactly fifteen runtime files. The matching development handoff is .build/playtest-2026-09-20-radio-maintenance; older playtests are unchanged.
The explicit v3 packed Chat diagnostic verifies all thirteen exact addon paths/mounts/databases and normal modules, with no input violations or script/runtime failures. Four installed localization errors appear twice; the run remains failed. Its bounded failure grace ended after site/prison preparation, before local participant readiness. Sources/packages/external inputs remained unchanged and cleanup was confirmed. No full ordinary-startup or release qualification is claimed; the raw v3 evidence was not relabeled as a legacy v2 archive.