Fix faction ammunition resupply and settings recovery
Wait for both convoy cargo phases and use actual magazine stock. Resolve empty primary weapon ammunition from muzzle metadata and recover cleanly from failed initial settings saves. Update native fixtures, scoped cleanup guards, packaging evidence and validation documentation. Make reviewed fixture tests checkout-relative. All repository checks pass against the isolated staged tree; native resupply completion and multiplayer qualification remain outstanding.
This commit is contained in:
+15
-9
@@ -3,15 +3,14 @@
|
||||
**Current layout:** all owned modules now live in `addons/core/addon.gproj`.
|
||||
Use [single-mod setup and commands](single-mod.md) for current builds. Both
|
||||
Workbench fixture selectors (`core` and `chat`) load that same project and require
|
||||
the external dependencies. Five-addon and vanilla-only build instructions/results
|
||||
below describe the historical layout.
|
||||
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. AI 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`). Exact locally inspected manifest hashes, versions and resource ownership are in [external-addons.json](external-addons.json).
|
||||
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](external-addons.json).
|
||||
|
||||
`62E71B6F101EB30D` is Escapists Enhanced, not WCS. It and original Escapists, ScrtCore and ScrtSharedContent are excluded. Neither the unrelated Patch addon nor Parachute Framework is admitted by this policy. Original workspaces and installed third-party assets remain unchanged; no third-party asset bytes are included in successor source bundles.
|
||||
`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.
|
||||
|
||||
Core-only tests retain their existing vanilla profile. Full Chat uses a different private profile, exposes six 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.
|
||||
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:
|
||||
|
||||
@@ -29,15 +28,22 @@ To attempt native packaging in a fresh private session:
|
||||
|
||||
```sh
|
||||
python3 tools/native_package.py \
|
||||
--project chat \
|
||||
--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. `--external-addons` is required for AI/Chat targets and rejected for Core/Intel/Map targets. A full Chat build exposes the six audited links only in its private AI and Chat profiles; Core, Intel and Map keep vanilla-only profiles. Each project still searches the copied successor source directory, never the whole workshop tree. Session/per-project evidence retains external input fingerprints before and after the attempt, the policy hash and profile-link checks. Changed or unverifiable inputs stop the build, including diagnostic continuation.
|
||||
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` only permits later addons after a failed candidate that completed naturally, preserved its inputs and cleaned up safely. 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](packed-external-development.md) produces and verifies all five current 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.
|
||||
`--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](packed-external-development.md) 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` rejects external Core dependencies/resources and nonallowlisted addon identities. Source bundles include the policy JSON, never installed external assets. The feature-by-feature owned-source audit is [ai-feature-migration.md](ai-feature-migration.md).
|
||||
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](ai-feature-migration.md).
|
||||
|
||||
|
||||
## Current installed-resource errors (30 September 2026)
|
||||
|
||||
A read-only [resource-owner inventory](evidence/resource-owners-2026-09-30.json) 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.
|
||||
|
||||
Reference in New Issue
Block a user