Files
EscapistsReintroduced/docs/evidence/playtest-refresh-2026-10-02-ground-depot-guide/finalize.py
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

67 lines
9.7 KiB
Python

from pathlib import Path
import json,hashlib,shutil,subprocess,ast,sys
r=Path('/home/jakub/devel/escapistsrereintroduced');b=r/'.build/heartbeat-0406-baseline';build=r/'.build/playtest-2026-10-02-ground-depot-guide';e=r/'docs/evidence/playtest-refresh-2026-10-02-ground-depot-guide'
sha=lambda p:hashlib.sha256(p.read_bytes()).hexdigest()
sys.path.insert(0,str(r/'tools'));from source_manifest import addon_manifest
review=json.loads((build/'handoff.json').read_text());assert review['authored_files']==403 and review['pak_payload_files']==346 and len(review['runtime_files'])==3
assert review['normal_mission_ready'] and review['local_participant_verified'] and review['repository_regression_programs']==277 and not review['release_qualified']
assert addon_manifest(r)==json.loads((r/'.build/playtest-frozen-0406/frozen-source.json').read_text())
old=json.loads((b/'unstaged.json').read_text());original=json.loads(Path('/tmp/erri-heartbeat-20260930-1542-reference.json').read_text());prior=json.loads((r/'docs/evidence/playtest-refresh-2026-10-01-convoy-stock/candidate-sha256.json').read_text())
for root,files in [(r,old),(Path('/home/jakub/devel/escapists'),original),(r/'.build/playtest-2026-10-01-convoy-stock',prior)]:assert all(sha(root/p)==h for p,h in files.items())
for name in ['current-status.md','playtest-build.md']:
assert (r/'docs'/name).read_bytes()==(b/(name+'.working')).read_bytes()==(b/(name+'.index')).read_bytes()
assert subprocess.check_output(['git','show',':docs/'+name],cwd=r)==(b/(name+'.index')).read_bytes()
e.mkdir()
for src,dest in [(r/'.build/heartbeat-0406-package/review.json','packaging-review.json'),(r/'.build/heartbeat-0406-package/handoff-plan.json','handoff-plan.json'),(b/'suite-result.json','suite-result.json')]:shutil.copy2(src,e/dest)
summary={'artifact':str(build.relative_to(r)),'authored_files':403,'pak_payload_files':346,'runtime_files':3,'regression_programs':277,'full_suite_matches_final_source':True,'new_gameplay_fix':'Retained former local controllers stop their own objective-hint callbacks; current-controller timer and retry/reacquisition preserved. Actual-method red-before/green-after independently reproduced.','native_normal_route':{'assertions':63,'rounds':1,'script_failures':0,'retained_installed_resource_errors':13},'packed_ordinary_startup':{'normal_mission_ready':True,'local_prisoner_verified':True,'script_failures':0,'retained_installed_resource_errors':17,'strict_failed_verdict_retained':True},'native_packaging':'Exact403 authored/346 payload identities, native exit zero; strict completion/shutdown/resource failures retained. New development candidate only.','readonly_audits':'No demonstrated new admission/reconnect defect in inspected controller/account/cancellation/disconnect callbacks. Packaging refusal remains justified: helper teardown required owned cleanup and native errors independently fail qualification.','preserved':{'inherited_unstaged_paths':len(old),'original_reference_files':len(original),'prior_convoy_candidate_files':len(prior)},'remaining':'Human full escape, real multiplayer/JIP/reconnect/twelve players, native controller replacement, physical depot/infantry/mine/mounted/maintenance interactions, comparative FPS and clean release.','committed':False,'published':False}
(e/'review.json').write_text(json.dumps(summary,indent=2)+'\n')
(build/'README.md').write_text('''# Development playtest — 2 October 2026
Open `source/addons/core/addon.gproj` for editable Workbench work, or use the three files in `packages/core/` in a separate test profile. Choose **Co10 Escape Reintroduced — Everon**, `{C1E20667DCE324ED}Missions/ERR_Everon.conf`. Mission, AI, Intel, Map and Chat are combined in one addon.
Install RHS: Status Quo, WCS Armaments, WCS BMP-1, Parachute Framework and their supporting packs separately. `source/EXTERNAL-ADDONS.json` records the audited closure. Original Escapists is not required; third-party assets are not bundled.
This snapshot includes finite camp-to-truck ammunition loading, zero-stock replenishment for originally designated engineers, the HQ planning count optimization and the protected-fatal lifecycle test correction. It also fixes old local controllers continuing to display objective hints after ownership changes. Earlier mine warnings, convoy cargo/status, maintenance, pursuit and companion behavior remain included. Optional terrain integration remains experimental; validation targets Everon.
**403 authored files, 346 exact PAK payloads and three runtime files** match editable source and `handoff.json`. All **277 registered regression programs pass** on this source. A fresh native normal route completes **63 assertions through extraction/results**, with zero script/runtime failures and thirteen retained installed-resource errors. Ordinary startup of the exact packaged bytes verifies the normal mission and local prisoner, with zero script/runtime failures and seventeen retained installed-resource errors.
This is an **unqualified development candidate**. Exact package contents and native child exit zero do not clear the recorded resource/shutdown/completion failures. Full human escape, real multiplayer/JIP/reconnect/twelve players, native controller replacement, physical depot delivery, infantry/mine/mounted resupply, maintenance consumption, comparative FPS and clean release remain unfinished. The normal-route check does not exercise autonomous physical logistics.
All native checks stayed hidden and muted, with confirmed cleanup and unchanged inputs. Original missions and previous candidates are preserved. Nothing was published.
See the [player route](../../docs/player-route.md), [setup guide](../../docs/playtest-build.md), [current status](../../docs/current-status.md), [artifact evidence](../../docs/evidence/package-2026-10-02-ground-depot-guide/handoff.json) and [packed startup evidence](../../docs/evidence/packed-2026-10-02-ground-depot-guide/archive-review.json).
''')
p=r/'docs/playtest-build.md';s=p.read_text();start=s.index('The latest retained, hash-verified handoff is');end=s.index('## Identities and required dependencies');s=s[:start]+'''The latest retained, hash-verified handoff is
[2 October — ground depot and guide](../.build/playtest-2026-10-02-ground-depot-guide/README.md),
at `.build/playtest-2026-10-02-ground-depot-guide`. It contains matching editable
source and one packaged addon: **403 authored files and 346 exact PAK payloads**.
It includes finite camp-to-truck loading, designated-engineer zero-stock replacement,
the HQ count optimization and the stale-controller objective-hint correction.
This is an **unqualified development candidate**. Its exact source passes all 277
registered regression programs and 63 scripted normal-route assertions. Ordinary
startup of the exact package verifies the mission and local prisoner. The 13/17
installed-resource errors and strict failed packaging/startup verdicts remain.
Human play, real multiplayer, native controller replacement, physical logistics,
comparative FPS and clean release still require qualification. Optional terrain
integration remains experimental.
See [current status](current-status.md). Later edits are not automatically present;
the previous convoy-stock and all earlier candidates remain unchanged.
'''+s[end:];p.write_text(s)
p=r/'docs/current-status.md';s=p.read_text();heading='# Current development status\n\n';assert s.startswith(heading)
intro='''**2 October 2026 — updated development playtest and objective-hint ownership fix:** the [separate ground-depot/guide handoff](../.build/playtest-2026-10-02-ground-depot-guide/README.md) now includes recent finite camp loading, zero-stock engineer resupply, HQ count optimization and a correction preventing a retained old controller from displaying hints after local ownership changes. It contains **403 authored files, 346 exact PAK payloads and three runtime files**, with matching editable source. [Artifact hashes and strict limits](evidence/package-2026-10-02-ground-depot-guide/handoff.json).
All **277 registered regression programs pass**; the guide regression independently fails on the old code and passes with the fix. The [fresh source-matched normal escape](evidence/native-2026-10-02-ground-depot-guide/report.json) passes **63 assertions and one round**, with zero script/runtime failures and thirteen retained installed-resource errors. [Ordinary startup of the exact package](evidence/packed-2026-10-02-ground-depot-guide/archive-review.json) verifies the normal mission and local prisoner, with zero script/runtime failures and seventeen retained installed-resource errors. Strict packaging/startup failures remain; this is **not a qualified release**.
A bounded admission/reconnect source audit found no demonstrated additional bug. [Guide fix and exact validation scope](evidence/guide-controller-2026-10-02/review.json). Native controller replacement, human play, real multiplayer, physical logistics, comparative FPS and clean release remain unfinished. All native sessions stayed hidden/muted and cleaned up; original missions, 61 inherited unstaged paths and the prior 409-file candidate are preserved. Nothing was committed or published. [Preservation and build review](evidence/playtest-refresh-2026-10-02-ground-depot-guide/review.json).
''';p.write_text(heading+intro+s[len(heading):])
(e/'candidate-sha256.json').write_text(json.dumps({str(p.relative_to(build)):sha(p) for p in sorted(build.rglob('*')) if p.is_file()},indent=2)+'\n')
shutil.copy2(__file__,e/'finalize.py')
subprocess.run(['git','add','--','docs/current-status.md','docs/playtest-build.md','docs/evidence/package-2026-10-02-ground-depot-guide','docs/evidence/packed-2026-10-02-ground-depot-guide',str(e.relative_to(r))],cwd=r,check=True)
subprocess.run(['git','diff','--check'],cwd=r,check=True)
assert all(sha(r/p)==h for p,h in old.items())
print(json.dumps(summary,indent=2))