Files
EscapistsReintroduced/docs/evidence/playtest-refresh-2026-10-02-ground-depot-guide/handoff-plan.json
T
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

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"
]
}