Include the current addon, terrain integrations, tools, regression tests and recorded development evidence.
145 lines
7.1 KiB
JSON
145 lines
7.1 KiB
JSON
{
|
|
"kind": "PLAN ONLY: fresh unqualified development handoff; no commands executed",
|
|
"cwd": "/home/jakub/devel/escapistsrereintroduced",
|
|
"parameters": {
|
|
"TAG": "choose a new unique tag after guide fix and source freeze, e.g. 20261002-ground-depot-guide",
|
|
"PACKAGE_SESSION": "/tmp/erri-package-${TAG}",
|
|
"PACKED_SESSION": "/tmp/erri-packed-chat-${TAG}",
|
|
"BUILD": "/home/jakub/devel/escapistsrereintroduced/.build/playtest-${TAG}",
|
|
"PACKAGE_EVIDENCE": "/home/jakub/devel/escapistsrereintroduced/docs/evidence/package-${TAG}",
|
|
"PACKED_EVIDENCE": "/home/jakub/devel/escapistsrereintroduced/docs/evidence/packed-${TAG}",
|
|
"SOURCE_ZIP": "/tmp/erri-source-${TAG}.zip",
|
|
"ROUTE_EVIDENCE": "fresh matching frozen-source native normal route evidence directory",
|
|
"CHECK_LOG": "completed full regression log for the exact final source freeze",
|
|
"COMPAT": "/tmp/erri-headless-compat",
|
|
"EXTERNAL": "/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons"
|
|
},
|
|
"commands": [
|
|
{
|
|
"stage": "process preflight",
|
|
"argv": [
|
|
"python3",
|
|
"tools/headless_game.py",
|
|
"--compat",
|
|
"${COMPAT}",
|
|
"--inspect-processes"
|
|
],
|
|
"rule": "Read-only. Tool still repeats its strict guards under owned prefix lock."
|
|
},
|
|
{
|
|
"stage": "development source archive after source freeze",
|
|
"argv": [
|
|
"python3",
|
|
"tools/source_bundle.py",
|
|
"--mode",
|
|
"development",
|
|
"--output",
|
|
"${SOURCE_ZIP}"
|
|
],
|
|
"rule": "New zip outside checkout, no existing/symlink destination; /tmp quota must permit this. Do not weaken canonical packaging session guards."
|
|
},
|
|
{
|
|
"stage": "native single combined-addon packaging",
|
|
"argv": [
|
|
"python3",
|
|
"tools/native_package.py",
|
|
"--project",
|
|
"core",
|
|
"--session",
|
|
"${PACKAGE_SESSION}",
|
|
"--compat",
|
|
"${COMPAT}",
|
|
"--external-addons",
|
|
"${EXTERNAL}",
|
|
"--timeout",
|
|
"300"
|
|
],
|
|
"rule": "Root serializes hidden/muted launch. Capture stdout/stderr and exact exit code. Nonzero result is retained; never make candidate_created true after cleanup."
|
|
},
|
|
{
|
|
"stage": "ordinary packed-only startup after verified handoff assembly",
|
|
"argv": [
|
|
"python3",
|
|
"tools/headless_game.py",
|
|
"--project",
|
|
"chat",
|
|
"--packed-addons",
|
|
"${BUILD}/packages",
|
|
"--packed-session",
|
|
"${PACKED_SESSION}",
|
|
"--external-addons",
|
|
"${EXTERNAL}",
|
|
"--compat",
|
|
"${COMPAT}",
|
|
"--timeout",
|
|
"180",
|
|
"--settle",
|
|
"15",
|
|
"--failure-grace",
|
|
"120"
|
|
],
|
|
"rule": "Omit --profile: schema4 requires default CLI profile and creates its own session profile. No input/smoke/observer flags. failure-grace extends diagnostic collection only inside timeout and never changes failed verdict."
|
|
}
|
|
],
|
|
"assembly_between_package_and_startup": {
|
|
"existing_helper": "docs/evidence/package-2026-10-01-convoy-stock/assemble-handoff.py",
|
|
"adapt_only_parameters": [
|
|
"package",
|
|
"build",
|
|
"e",
|
|
"route",
|
|
"zip_path",
|
|
"runner-output source path",
|
|
"startup evidence destination"
|
|
],
|
|
"mandatory_checks": [
|
|
"authored-before.json == current source_bundle.inventory(root) == matching route source-sha256.json; never reuse old route after guide source change",
|
|
"one core project, copied authors/profile/external unchanged, native child exit0, cleanup confirmed; record strict candidate result unchanged",
|
|
"pak_inventory unique entry path->sha256 exactly equals authored core payload excluding meta and addon.gproj; package addon.gproj matches exact authored digest",
|
|
"source ZIP has canonical duplicate-free case-insensitive unique names, exact manifest membership and every member digest; addon subset equals authored freeze",
|
|
"route completion and no script/runtime failures; runner cleanup/unchanged source and console hash; preserve resource errors",
|
|
"create BUILD and PACKAGE_EVIDENCE with exist_ok=False; copy only mission packages and source, never external RHS/WCS/BMP content",
|
|
"verify extracted source byte membership and runtime inventory after copy"
|
|
],
|
|
"metadata_corrections": [
|
|
"Set original_packaging_failure_retained to not attempt.candidate_created; old helper hardcodes false despite archived failure. This is description only, never upgrade package verdict.",
|
|
"Label UNQUALIFIED DEVELOPMENT CANDIDATE, release_qualified=false,published=false, startup pending until independent proof."
|
|
]
|
|
},
|
|
"archive_and_finalize": {
|
|
"existing_schema4_helper": "docs/evidence/packed-2026-10-01-convoy-stock/verify-and-finish.py",
|
|
"do_not_use": "tools/archive_packed.py currently accepts schemas1/2, not combined external schema4",
|
|
"adapt_only_parameters": [
|
|
"build",
|
|
"startup",
|
|
"pe",
|
|
"se",
|
|
"runner-output source path",
|
|
"CHECK_LOG and matching freeze evidence"
|
|
],
|
|
"mandatory_checks": [
|
|
"schema4 kind/project/addon_order exactly packed-chat-external-runtime-input/chat/core",
|
|
"runner cleanup/input/external unchanged; no input_error/runner_error; manifest hash+launchUUID+timestamps bind exact run",
|
|
"native log/session under exact fresh startup session; console hash and native/root JSON copies identical",
|
|
"recompute packed_external.evidence from raw console with manifest input/external aliases and exact profile; each recomputed field must equal report",
|
|
"ordinary normal modules, no WORKBENCH, no smoke, correct complete loaded/mount/database paths, mission ready and local participant, zero script/runtime failures and input violations",
|
|
"compare normalized resource error set with prior retained packed report; any new error is a new limitation, not silently accepted or rewritten",
|
|
"runtime inventory BUILD/packages == startup/input/addons == manifest artifacts == handoff runtime_files",
|
|
"archive raw native logs, reports, provenance and dependency descriptors; no dependency assets",
|
|
"bind successful full-suite log to exact final freeze; compute current test count, do not reuse historical source-equality assertion",
|
|
"keep strict_packed_consumption_verified equal actual strict report; failed resource gate remains false even if readiness proved",
|
|
"write archive hashes and reverify all archived bytes; update both handoff copies consistently; prior candidate remains untouched"
|
|
]
|
|
},
|
|
"previous_helpers_sha256": {
|
|
"docs/evidence/package-2026-10-01-convoy-stock/assemble-handoff.py": "2c7597f228cdd2b7aecc7fa3e6247b4fbd6b882afb1d7a29b18e63f2b882f1c8",
|
|
"docs/evidence/packed-2026-10-01-convoy-stock/verify-and-finish.py": "f293ef29aa905e326fa42d1d8255ff1ad25106922c04e48abcab6982c97eb3be"
|
|
},
|
|
"nonclaims": [
|
|
"No release qualification",
|
|
"No native physical depot loading qualification",
|
|
"No human/MP escape or measured FPS qualification",
|
|
"No clean packaging claim from payload hashes or cleanup"
|
|
]
|
|
}
|