Include the current addon, terrain integrations, tools, regression tests and recorded development evidence.
61 lines
9.2 KiB
Python
61 lines
9.2 KiB
Python
from pathlib import Path
|
|
import hashlib,json,shutil,subprocess,sys
|
|
R=Path('/home/jakub/devel/escapistsrereintroduced');B=Path('/tmp/erri-playtest-crash-2020');C=R/'.build/playtest-2026-10-03-crash-start';F=R/'.build/playtest-source-2026-10-03-crash-start';E=R/'docs/evidence/playtest-refresh-2026-10-03-crash-start'
|
|
sha=lambda p:hashlib.sha256(p.read_bytes()).hexdigest();load=lambda p:json.loads(p.read_text());write=lambda p,v:p.write_text(json.dumps(v,indent=2)+'\n')
|
|
def tree(p):return {str(q.relative_to(p)):sha(q) for q in sorted(p.rglob('*')) if q.is_file()}
|
|
base=load(B/'baseline.json');h=load(C/'handoff.json')
|
|
sys.path.insert(0,str(F/'tools'));from source_manifest import addon_manifest
|
|
assert addon_manifest(R)==addon_manifest(F)==base['authored']
|
|
assert h['authored_files']==437 and h['pak_payload_files']==376 and len(h['runtime_files'])==3
|
|
assert h['normal_mission_ready'] and h['local_participant_verified'] and h['repository_regression_programs']==307 and not h['release_qualified'] and not h['published']
|
|
assert h['packed_script_failures']==0 and h['packed_resource_errors']==17
|
|
for n,v in base['files'].items():assert sha(R/n)==v,n
|
|
assert hashlib.sha256(subprocess.check_output(['git','diff','--cached','--binary'],cwd=R)).hexdigest()==base['staged_diff_sha256']
|
|
original=load(Path('/tmp/erri-heartbeat-20260930-1542-reference.json'));assert all(sha(Path('/home/jakub/devel/escapists')/n)==v for n,v in original.items())
|
|
prior={}
|
|
for label in ['depot-mines','ground-supply','mine-safety','mounted-pair']:
|
|
manifest=load(R/f'docs/evidence/playtest-refresh-2026-10-03-{label}/candidate-sha256.json');assert tree(R/f'.build/playtest-2026-10-03-{label}')==manifest;prior[label]=len(manifest)
|
|
review=load(B/'independent-review.json');assert review['complete'] is True
|
|
text='''# Crash-start development candidate — 3 October 2026
|
|
|
|
This combined addon and matching editable source include the selectable static crash aftermath start, memory-based HQ search areas, BMP interception implementation, configuration recovery and interrupted-resupply fixes, alongside the previous finite supplies and base escape loop. Prison remains the default. Choose the next start in `/esc menu` → Settings or with `/esc mission start set crash` / `/esc mission start set prison`; the choice applies to the next round.
|
|
|
|
Open `source/addons/core/addon.gproj` in Workbench and select `Missions/ERR_Everon.conf`. Runtime files are under `packages/core/`; matching source is under `source/` and in `source.zip`. Install RHS: Status Quo, WCS Armaments, WCS BMP-1 and Parachute Framework with their dependencies separately. Their assets are not bundled. Ordinary play requires no diagnostic, smoke, input or flight flags.
|
|
|
|
The handoff verifies **437 authored files**, **376 exact PAK payloads** and **3 runtime files**. Its code, tests and tools match the completed **307-program regression pass**; three recorded documentation changes followed that suite. The exact source completes the scripted default prison escape with **64 assertions and one round**, zero script/runtime failures and **13 retained engine errors**. The earlier crash route completes **66 assertions** but predates two separately recorded terrain Game Master edits. Startup of these exact packaged bytes reaches the ordinary mission and local prisoner, with zero script/runtime failures and **17 retained engine errors**.
|
|
|
|
This is an **unqualified development candidate**. Strict packaging and startup failures remain recorded. Human escape, actual aircraft piloting, remote multiplayer/JIP/reconnect/twelve-player play, physical logistics/interception, rendered menus, comparative FPS and clean release qualification remain unfinished. Existing missions and older packages are unchanged. Nothing is published. See [handoff manifest](handoff.json), [start controls](../../docs/mission-starts.md), [player route](../../docs/player-route.md) and [checkpoint evidence](../../docs/evidence/playtest-refresh-2026-10-03-crash-start/README.md).
|
|
'''
|
|
(C/'README.md').write_text(text)
|
|
paragraph='''**3 October 2026 — refreshed crash-start development handoff:** [package and editable source](../.build/playtest-2026-10-03-crash-start/README.md).
|
|
|
|
The combined addon now packages the static crash-start choice, memory-based HQ searches, BMP interception implementation and recent configuration/resupply fixes. Prison remains the default. **437 authored files, 376 exact PAK payloads and 3 runtime files** match the handoff. The unchanged code/tests/tools reuse the completed **307-program regression pass** with three recorded subsequent documentation changes. The exact-source scripted default escape completes **64 assertions and one round**; ordinary startup of the exact package reaches the normal mission and local prisoner. Both have zero script/runtime failures, while retaining **13 and 17 engine errors**, respectively. The earlier 66-assertion crash route predates two terrain Game Master edits; that source difference remains recorded.
|
|
|
|
This is an **unqualified development candidate**: strict packaging/startup failures, human play, multiplayer, physical support reliability, comparative FPS and clean release qualification remain outstanding. Tests stayed hidden and muted. Prior packages and existing missions are preserved. [Start controls](mission-starts.md) · [Exact handoff evidence](evidence/playtest-refresh-2026-10-03-crash-start/README.md).
|
|
|
|
'''
|
|
updates={}
|
|
for n in ['docs/current-status.md','docs/playtest-build.md']:
|
|
old=(R/n).read_text();first,rest=old.split('\n',1);updates[n]=first+'\n\n'+paragraph+rest.lstrip('\n')
|
|
n='README.md';old=(R/n).read_text();start=old.index('The [local development playtest handoff]');end=old.index('\n\n',start);updates[n]=old[:start]+'''The [latest development playtest handoff](.build/playtest-2026-10-03-crash-start/README.md) includes selectable static crash starts, memory-based HQ search areas, BMP interception code and recent configuration/resupply fixes. Prison remains the default. Its 437 authored files match 376 packaged payloads and 3 runtime files. The same code/tests/tools pass all 307 regression programs, and the exact source completes a scripted default escape. Ordinary startup of these packaged bytes reaches the normal mission and local prisoner. This remains an **unqualified development candidate**: packaging/startup errors, human play, multiplayer and FPS acceptance are outstanding. Existing missions and earlier candidates are preserved. See [current status](docs/current-status.md) for exact evidence and limits.'''+old[end:]
|
|
records={}
|
|
for n,t in updates.items():
|
|
assert sha(R/n)==base['files'][n];records[n]={'before':sha(R/n),'after':hashlib.sha256(t.encode()).hexdigest()};(R/n).write_text(t)
|
|
assert not E.exists();E.mkdir()
|
|
for p in B.iterdir():
|
|
if p.is_file():shutil.copyfile(p,E/p.name)
|
|
for n,p in [('gameplay-radio-review.json',Path('/tmp/erri-radio-extraction-review-crash-followup/review.json')),('start-guidance-review.json',Path('/tmp/erri-start-guidance-review/finding.json'))]:shutil.copyfile(p,E/n)
|
|
write(E/'candidate-sha256.json',tree(C));write(E/'documentation-updates.json',records)
|
|
write(E/'review.json',{'complete':True,'candidate':str(C),'authored_files':437,'pak_payload_files':376,'regression_programs':307,'fresh_suite_run':False,'frozen_source':str(F),'strict_failures_retained':True,'release_qualified':False,'published':False,'original_reference_files_preserved':len(original),'previous_candidates_preserved':prior,'source_snapshot_matches_live_at_handoff':True,'later_documentation_updates':records,'independent_review_sha256':sha(B/'independent-review.json')})
|
|
(E/'README.md').write_text('''# Refreshed crash-start development handoff
|
|
|
|
The new candidate is `.build/playtest-2026-10-03-crash-start`; it contains the latest frozen 437-file authored source, exact 376 payload PAK and three runtime files. Existing original missions, staged content and four earlier sealed candidates remain unchanged.
|
|
|
|
The sealed 307-program pass is reused only for the same code/tests/tools, with the three recorded documentation updates from the crash-start checkpoint. Its exact source matches the completed default-prison 64-assertion native run. The earlier crash 66-assertion run differs only in the two recorded terrain takeover files; no exact-final-source crash claim is made. Ordinary packed startup reaches the normal mission and local prisoner with no script failures and 17 retained engine errors. Package-native exit 0 does not pass strict packaging gates: the original failure and all logs remain under the package evidence directory. No strict verdict is overridden.
|
|
|
|
Separate bounded read-only reviews found no new demonstrated bug in ordinary radio defence, partial extraction or start guidance/admin/map integration; these reviews are not additional native or multiplayer qualification. See candidate README and handoff.json for controls, dependencies and limits. Human gameplay, physical support reliability, twelve-player multiplayer, comparative FPS and clean release qualification remain pending. No external publication.
|
|
''')
|
|
write(E/'evidence-sha256.json',{str(p.relative_to(E)):sha(p) for p in E.rglob('*') if p.is_file()})
|
|
for n,hsh in base['files'].items():assert sha(R/n)==records.get(n,{}).get('after',hsh),n
|
|
print(json.dumps({'candidate':str(C),'authored_files':437,'pak_payload_files':376,'runtime_files':3,'prior_candidates_preserved':prior,'release_qualified':False}))
|