Combine Workshop addon and fix prison startup
Merge owned systems into one addon while preserving resource identities. Gate player admission on the replicated prison scene, restore the original framed door, and hold enemy AI until escape. Correct scenario branding and author metadata, include publishing assets, and retain regression and native verification evidence.
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# Development source handoff
|
||||
|
||||
`tools/source_bundle.py` assembles the five independently identified successor projects into a deterministic **DEVELOPMENT SOURCE BUNDLE**. This is an editable ZIP, not a native `.pak`, an engine build, a qualified release or a Workshop publication. It does not launch tools, load accounts or change acceptance records.
|
||||
`tools/source_bundle.py` assembles the single combined successor project into a deterministic **DEVELOPMENT SOURCE BUNDLE**. This is an editable ZIP, not a native `.pak`, an engine build, a qualified release or a Workshop publication. It does not launch tools, load accounts or change acceptance records.
|
||||
|
||||
Preview is the default and writes no archive:
|
||||
|
||||
@@ -18,9 +18,9 @@ Existing destinations, symlinks, traversal and missing parent directories are re
|
||||
|
||||
## Included content and validation
|
||||
|
||||
The archive contains the exact authored bytes under `addons/core`, `addons/ai`, `addons/intel`, `addons/chat` and `addons/map`, plus generated `BUNDLE-README.md` and `BUNDLE-MANIFEST.json`. The README explains opening the base/companion projects, the installed vanilla dependency, scenario identifiers, extraction into a new development folder and current validation limits. The manifest records all payload SHA-256 hashes (excluding its own self-reference), pinned project IDs/GUIDs and their complete dependency lists. No absolute source path, machine/user name or timestamp is embedded.
|
||||
The archive contains the exact authored bytes under `addons/core`, plus generated `BUNDLE-README.md`, `BUNDLE-MANIFEST.json` and `EXTERNAL-ADDONS.json`. The README explains opening the combined project, its vanilla and RHS/WCS dependencies, scenario identifiers, extraction into a new development folder and current validation limits. The manifest records all payload SHA-256 hashes (excluding its own self-reference), pinned project IDs/GUIDs and their complete dependency lists. No absolute source path, machine/user name or timestamp is embedded.
|
||||
|
||||
Project identities must match the maintained successor catalog and the five fixed identities in the tool. Dependencies are exactly vanilla plus the project's current successor dependency set. Metadata GUIDs must be unique, refer to an included matching resource, and differ from vanilla identities. Referenced successor resources must be visible through the declared dependencies; external resource references must match `docs/vanilla-resources.json`. Original ecosystem symbols are rejected. These checks protect the known source structure; they cannot establish authorship or license rights for arbitrarily renamed/copied code. The repository's provenance review remains necessary.
|
||||
Project identities must match the maintained successor catalog and the single fixed identity in the tool. Dependencies are exactly vanilla plus the authorized RHS/WCS direct dependencies. Metadata GUIDs must be unique, refer to an included matching resource, and differ from vanilla identities. Referenced successor resources must be visible through the declared dependencies; vanilla and external resource references must match `docs/vanilla-resources.json` or the authorized `docs/external-addons.json` catalog. Original ecosystem symbols are rejected. These checks protect the known source structure; they cannot establish authorship or license rights for arbitrarily renamed/copied code. The repository's provenance review remains necessary.
|
||||
|
||||
The tool reuses the authored addon manifest helper, with a narrower packaging schema covering current text scripts, prefabs, configurations, world/layer, UI/material and resource metadata formats. An unknown asset format or unreviewed directory fails instead of silently dropping a newly required asset. Extend the reviewed schema when intentionally adding another asset kind. Vanilla assets are referenced, never copied from their installation.
|
||||
|
||||
@@ -38,4 +38,4 @@ This invokes the existing `release_check.audit` before and after collection and
|
||||
|
||||
## Tests
|
||||
|
||||
`python3 tests/test_source_bundle.py` exercises the real five-project tree in disposable copies: deterministic bytes and member hashes, timestamp/permission independence, exclusions, changed source, identity/dependency failures, resource visibility and metadata, unknown assets, symlinks/FIFOs, unsafe/case-colliding names, no-overwrite publication, publication cleanup, validation refusal with an output argument, concurrent collection mutation, preview and actual pending-release refusal. The tests create only temporary archives; no engine or network is used. Add this test to the existing `tools/check.py` test list when integrating.
|
||||
`python3 tests/test_source_bundle.py` exercises the real single-project tree in disposable copies: deterministic bytes and member hashes, timestamp/permission independence, exclusions, changed source, identity/dependency failures, resource visibility and metadata, unknown assets, symlinks/FIFOs, unsafe/case-colliding names, no-overwrite publication, publication cleanup, validation refusal with an output argument, concurrent collection mutation, preview and actual pending-release refusal. The tests create only temporary archives; no engine or network is used. This test is included in `tools/check.py`.
|
||||
|
||||
Reference in New Issue
Block a user