Files
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

68 lines
9.9 KiB
Python

from pathlib import Path
import json,hashlib,shutil,subprocess,sys
r=Path('/home/jakub/devel/escapistsrereintroduced');b=Path('/tmp/erri-owner-package-0703-baseline');build=r/'.build/playtest-2026-10-02-owner-fixes';e=r/'docs/evidence/playtest-refresh-2026-10-02-owner-fixes'
sys.path.insert(0,str(r/'tools'));from source_manifest import addon_manifest
sha=lambda p:hashlib.sha256(p.read_bytes()).hexdigest()
handoff=json.loads((build/'handoff.json').read_text());assert handoff['authored_files']==403 and handoff['pak_payload_files']==346 and len(handoff['runtime_files'])==3
assert handoff['normal_mission_ready'] and handoff['local_participant_verified'] and handoff['repository_regression_programs']==280 and not handoff['release_qualified'] and handoff['normal_route_reused_without_source_changes'] and handoff['repository_check_reused_for_identical_source']
assert addon_manifest(r)==json.loads((r/'.build/chat-owner-frozen-0624/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-02-ground-depot-guide/candidate-sha256.json').read_text())
for root,files in [(r,old),(Path('/home/jakub/devel/escapists'),original),(r/'.build/playtest-2026-10-02-ground-depot-guide',prior)]:assert all(sha(root/p)==h for p,h in files.items())
for name in ['current-status.md','playtest-build.md','original-feature-coverage.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 [(Path('/tmp/erri-playtest-0703/adaptation.json'),'helper-adaptation.json'),(Path('/tmp/erri-owner-package-review-0703/review.json'),'independent-package-review.json'),(r/'.build/heartbeat-chat-0624/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':280,'unchanged_source_reuses_bound_suite_and_normal_route':True,'included_fixes':['Observer stops former local-controller callbacks and rebinds replacement','Chat cleanup cannot close replacement controller administration panel'],'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, child exit0; strict completion/shutdown/resource failures retained. Unqualified development candidate.','preserved':{'inherited_unstaged_paths':len(old),'original_reference_files':len(original),'previous_candidate_files':len(prior)},'parallel_work':'Bounded discovery-manager and view-distance lifecycle reviews found no demonstrated ordinary new defect. A supported authored map-overlay prototype is being prepared separately, not included in this build. No platform filtering override was applied.','remaining':'Human full escape, real multiplayer/JIP/reconnect/twelve players, native controller replacement, physical logistics, comparative FPS and clean release.','committed':False,'published':False,'release_qualified':False}
(e/'review.json').write_text(json.dumps(summary,indent=2)+'\n')
(build/'README.md').write_text('''# Development playtest — 2 October 2026, controller ownership fixes
The combined addon is **Co10 Escape Reintroduced**, GUID `2528466DE220D91C`. Load the normal Everon scenario `{C1E20667DCE324ED}Missions/ERR_Everon.conf` from `packages/core`. Editable Workbench source is in `source/addons/core/addon.gproj`.
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 the earlier finite camp-to-truck loading, engineer resupply and HQ improvements. It adds observer ownership/rebinding and prevents an old chat controller from closing the current administration panel. The proposed map-overlay redesign is not 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 **280 registered regression programs pass**. The matching unchanged-source normal route completes **63 assertions through extraction/results**, with zero script/runtime failures and thirteen retained installed-resource errors. Fresh ordinary startup of these 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 contents and native child exit zero do not clear recorded resource/shutdown/completion failures. Full human escape, real multiplayer/JIP/reconnect/twelve players, native controller replacement, physical logistics, comparative FPS and clean release remain unfinished.
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-owner-fixes/handoff.json) and [packed startup evidence](../../docs/evidence/packed-2026-10-02-owner-fixes/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 — controller ownership fixes](../.build/playtest-2026-10-02-owner-fixes/README.md),
at `.build/playtest-2026-10-02-owner-fixes`. It contains matching editable source
and one packaged addon: **403 authored files and 346 exact PAK payloads**.
It includes the previous ground-depot/guide features plus observer ownership,
replacement-controller rebinding and chat menu teardown ownership fixes.
This is an **unqualified development candidate**. Its exact source passes all 280
registered regression programs and 63 scripted normal-route assertions. Fresh
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 ground-depot/guide 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 — development package refreshed with controller ownership fixes:** the [separate owner-fixes handoff](../.build/playtest-2026-10-02-owner-fixes/README.md) now includes the tested observer/rebinding and chat-menu cleanup corrections alongside the earlier ground-depot/guide features. **403 authored files, 346 exact PAK payloads and three runtime files** match editable source. [Artifact hashes](evidence/package-2026-10-02-owner-fixes/handoff.json).
The unchanged source retains its **280-program regression pass** and **63-assertion normal escape**. [Fresh ordinary startup of the exact package](evidence/packed-2026-10-02-owner-fixes/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**. The earlier route retains thirteen installed-resource errors.
All native work stayed hidden/muted with confirmed cleanup and unchanged inputs. Original missions, 61 inherited unstaged paths and the previous 412-file candidate are preserved. No production code changed for this packaging increment. A separate authored map-overlay proposal is not included. Human play, real multiplayer, native controller replacement, physical logistics, comparative FPS and clean release remain unfinished. [Independent review and preservation](evidence/playtest-refresh-2026-10-02-owner-fixes/review.json).
''';p.write_text(heading+intro+s[len(heading):])
p=r/'docs/original-feature-coverage.md';s=p.read_text();oldtext='The latest retained candidate is the [2 October ground-depot/guide playtest](../.build/playtest-2026-10-02-ground-depot-guide/README.md). It includes the finite depot loading and zero-stock mine-resupply changes; its exact source/package evidence predates the subsequent observer ownership correction.';newtext='The latest retained candidate is the [2 October controller-ownership playtest](../.build/playtest-2026-10-02-owner-fixes/README.md). It includes the earlier finite depot loading and zero-stock mine-resupply work plus observer/rebinding and chat menu ownership corrections.';assert oldtext in s;p.write_text(s.replace(oldtext,newtext,1))
(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/original-feature-coverage.md','docs/evidence/package-2026-10-02-owner-fixes','docs/evidence/packed-2026-10-02-owner-fixes',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))