Files
jakub 6a667d8deb Capture current mission, AI, map and administration development
Include the current addon, terrain integrations, tools, regression tests and recorded development evidence.
2026-10-13 22:52:53 +02:00

7.7 KiB
Raw Permalink Blame History

Authorized AI dependencies

Current layout: all owned modules now live in addons/core/addon.gproj. Use single-mod setup and commands for current builds. Both Workbench fixture selectors (core and chat) load that same project and require the external dependencies. Earlier five-addon and vanilla-only evidence describes the historical layout.

The user authorized RHS, WCS and BMP integration on 2026-09-20. The combined mission project declares RHS Status Quo (595F2BF2F44836FB), WCS Armaments (629B2BA37EFFD577) and WCS BMP-1 (5E524E4FEECCA92B). The reviewed transitive closure adds RHS Content Pack01 (1337C0DE5DABBEEF), RHS Content Pack02 (BADC0DEDABBEDA5E) and WCS SpaceCore (5E389BB9F58B79A6). Parachute Framework (65930CB4CD0237B2) was separately admitted for the requested paratrooper port on 2026-09-22. The current closure contains seven external addons. Exact locally inspected manifest hashes, versions and resource ownership are in external-addons.json.

62E71B6F101EB30D is Escapists Enhanced, not WCS. It and original Escapists, ScrtCore and ScrtSharedContent are excluded. The unrelated Patch addon is also excluded. Original workspaces and installed third-party assets remain unchanged; no third-party asset bytes are included in successor source bundles.

Both Workbench fixture families load the combined addon in a separate private profile. Each exposes seven explicit dependency links rather than the workshop tree, verifies the exact manifest graph and allowed resource GUID/path records, and accepts the installed flat packed layout and fingerprints every exposed file, including manifests, resource databases, PAKs and permitted workshop metadata/media. Loose source/resource directories, unknown file forms and input symlinks are refused. Fingerprints are cached against file identity, size and nanosecond modification/change timestamps. Native evidence records those inputs in external-addons-inputs.json and verifies unchanged inputs and exact private dependency link targets after cleanup. This proves which installed bytes were used; it does not independently prove their content quality or compatibility.

For a hidden and muted full integration run, from this repository:

python3 tools/headless_workbench.py \
  --compat /tmp/erri-headless-compat \
  --profile /tmp/erri-workbench-external-profile \
  --external-addons '/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons' \
  --project chat --smoke patrol-hq --rounds 1 --timeout 600

The disposable compat prefix must already exist and be idle. Expanded-source local Workbench runs now compile and complete the HQ memory/response fixtures: 56 and 35 total assertions, respectively, with zero script/runtime failures. Both retain four external string-table GUID/name errors, so neither passes the strict native qualifier. These are captured scripted local runs, not multiplayer, FPS or packaged-build qualification.

To attempt native packaging in a fresh private session:

python3 tools/native_package.py \
  --project core \
  --session /tmp/erri-package-external-example \
  --compat /tmp/erri-headless-compat \
  --external-addons '/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons' \
  --continue-on-failure

The session path must not already exist. Packaging accepts only --project core and requires --external-addons; it builds the single combined addon. Its private profile exposes the seven audited external links. The project searches the copied successor source directory. Session evidence retains external input fingerprints before and after the attempt, the policy hash and profile-link checks. Changed or unverifiable inputs stop the build.

--continue-on-failure is retained for historical multi-addon builds and has no later addon to attempt in the combined build. It never upgrades a failed candidate: native errors and missing direct native exit status remain disqualifying. Timeout, unconfirmed cleanup, runner errors or changed inputs stop continuation. Contents inspection and packed-only consumption remain separate requirements, and every package report remains release-unqualified. The later radio/maintenance development build produces and verifies the five historical PAKs, retaining native shutdown failures. Its explicit packed-v3 path verifies the exact thirteen-addon closure and ordinary modules but remains failed on the installed localization errors; participant readiness was not established before the bounded diagnostic ended. Existing vanilla-only artifacts retain their original identities and evidence, and the frozen packed-v2 validator still rejects an expanded dependency closure. Do not qualify a new package using older vanilla-only results.

Validation: tests/test_native_package_external.py adds 17 offline packaging cases, and all 44 existing packaging cases pass. These tests launch no native executable. tests/test_external_addons.py exercises exact closure, resource ownership, missing/duplicate IDs, changed manifests and resource databases, profile contamination, wrong links, symlinked input refusal and post-capture PAK mutation. tests/test_external_profile_review.py covers post-capture link removal/retargeting, loose source/resource additions, allowed media mutations and the packaging verifier. tools/check.py requires the combined project’s reviewed dependency closure and rejects unknown addon identities or unreviewed external resource references. Source bundles include the policy JSON, never installed external assets. The feature-by-feature owned-source audit is ai-feature-migration.md.

Current installed-resource errors (30 September 2026)

A read-only resource-owner inventory binds the native parser errors to exact decompressed payload hashes and field offsets. The six rejected Parent fields are in vanilla BRDM2/BTR70 base prefabs, and SlidingTrackMaterial is in the vanilla M151A2 prefab, all in ArmaReforger/data007.pak. The two rejected landing-velocity fields are in Parachute Framework's DefaultPlayerController.et override. The other four errors are the previously recorded RHS/WCS localization references. Successor prefabs declare none of these rejected fields.

This establishes resource ownership, not the reason for the engine/resource incompatibility. Installed assets were not changed and strict native qualification still retains all thirteen errors. They must not be relabelled as a clean build or suppressed to qualify a release.

Installed dependency review (13 October 2026)

The native preflight correctly refused a changed RHS project manifest. The installed Workshop versions had advanced: RHS Status Quo is now 0.16.5237, both RHS content packs are 0.16.5236, and the three WCS dependencies are 8.3.0. Parachute Framework remains 1.2.0. The read-only review verifies all seven original GUID/dependency closures, each project against its matching download size/SHA512 manifest, every approved resource path/GUID against its owning resource database, and the complete 80-file input inventory with SHA256 hashes. The review updates the policy's version labels and the single changed project hash; it adds no dependency or resource permission.

Installed addon files were not changed. These fingerprints establish the inspected inputs, not engine compatibility. Native runners still capture and verify their own input sets, and any resource/parser errors remain failures.