Files
EscapistsReintroduced/docs/evidence/playtest-refresh-2026-10-02-objective-map/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

83 lines
11 KiB
Python

from pathlib import Path
import hashlib,json,shutil,subprocess,sys
r=Path('/home/jakub/devel/escapistsrereintroduced');b=Path('/tmp/erri-playtest-0939');build=r/'.build/playtest-2026-10-02-objective-map';e=r/'docs/evidence/playtest-refresh-2026-10-02-objective-map'
sha=lambda p:hashlib.sha256(p.read_bytes()).hexdigest()
sys.path.insert(0,str(r/'tools'));from source_manifest import addon_manifest
baseline=json.loads((b/'baseline.json').read_text());assert addon_manifest(r)==baseline['source']
assert all(sha(r/n)==h for n,h in baseline['working_modified'].items())
assert hashlib.sha256(subprocess.check_output(['git','diff','--cached','--binary'],cwd=r)).hexdigest()==baseline['index_diff_sha256']
original=json.loads(Path('/tmp/erri-heartbeat-20260930-1542-reference.json').read_text())
prior=json.loads((r/'docs/evidence/playtest-refresh-2026-10-02-owner-fixes/candidate-sha256.json').read_text())
assert all(sha(Path('/home/jakub/devel/escapists')/n)==h for n,h in original.items())
assert all(sha(r/'.build/playtest-2026-10-02-owner-fixes'/n)==h for n,h in prior.items())
handoff=json.loads((build/'handoff.json').read_text())
assert handoff['authored_files']==407 and handoff['pak_payload_files']==349 and len(handoff['runtime_files'])==3
assert handoff['normal_mission_ready'] and handoff['local_participant_verified'] and handoff['repository_regression_programs']==283 and not handoff['release_qualified'] and not handoff['strict_packed_consumption_verified']
for name in ['current-status.md','playtest-build.md','original-feature-coverage.md']:assert (r/'docs'/name).read_bytes()==(b/name).read_bytes()
e.mkdir()
for name in ['adaptation.json','artifact-review.json','baseline.json','packed-relative-path-refusal.log']:
shutil.copy2(b/name,e/name)
shutil.copy2('/tmp/erri-base-route-0939/review.json',e/'base-route-review.json')
summary={'artifact':str(build.relative_to(r)),'authored_files':407,'pak_payload_files':349,'runtime_files':3,'regression_programs':283,'exact_unchanged_source_reuses_bound_suite_and_normal_route':True,'included_change':'Authored discovered-site and mine-warning map presentation, supported parent containers and ownership/lifecycle cleanup.','native_map_fixture':{'assertions':101,'completions':1,'script_failures':0,'retained_engine_errors':16,'scope':'Standard map UI appearance and standard/shared-root geometry; physical held-map capture and manual input unqualified.'},'native_normal_route':{'assertions':63,'rounds':1,'script_failures':0,'retained_engine_errors':13},'packed_ordinary_startup':{'normal_mission_ready':True,'local_prisoner_verified':True,'script_failures':0,'retained_engine_errors':17,'strict_failed_verdict_retained':True},'native_packaging':'Exact407 authored/349 PAK payload identities and child exit0; strict completion/shutdown/resource failure retained. Unqualified development candidate.','parallel_reviews':'Three bounded reviews of radio/extraction/player guidance, map teardown/readiness and intel/loot ownership found no demonstrated new ordinary-play defect. No speculative source change.','preserved':{'working_modified_paths_before_doc_updates':len(baseline['working_modified']),'original_reference_files':len(original),'previous_candidate_files':len(prior),'index_unchanged':True},'remaining':'Human escape, physical held-map capture, manual map interaction, restricted-platform behavior, real multiplayer/JIP/reconnect/twelve players, 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, objective map UI
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 previous controller ownership, finite logistics and HQ improvements. Discovered sites and recovered mine warnings now use authored map UI, with rough-to-exact updates and pan/zoom/close/reopen cleanup. Ordinary player annotations retain their existing restrictions. Optional terrain integration remains experimental; validation targets Everon.
**407 authored files, 349 exact PAK payloads and three runtime files** match editable source and `handoff.json`. The exact unchanged source passes **283 registered regression programs**, **101 map-fixture assertions** and **63 normal escape-route assertions**. Fresh ordinary startup of this exact package verifies the mission and local prisoner with zero script/runtime failures.
This is an **unqualified development candidate**. Packaging completion/shutdown failures and 16/13/17 engine errors in the map/route/packed checks remain. Standard-map UI was captured in the small Workbench viewport; shared-map evidence covers widget geometry only. Physical held-map capture, manual input/full escape, real multiplayer, physical logistics, comparative FPS and clean release remain unfinished.
All native checks stayed hidden and muted with confirmed cleanup and unchanged inputs. Previous candidates and original missions 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), [map implementation](../../docs/objective-map-presentation.md), [artifact evidence](../../docs/evidence/package-2026-10-02-objective-map/handoff.json) and [packed startup evidence](../../docs/evidence/packed-2026-10-02-objective-map/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')
p.write_text(s[:start]+'''The latest retained, hash-verified handoff is
[2 October — objective map UI](../.build/playtest-2026-10-02-objective-map/README.md),
at `.build/playtest-2026-10-02-objective-map`. It contains matching editable source
and one packaged addon: **407 authored files and 349 exact PAK payloads**.
It includes the previous controller ownership and logistics/HQ changes plus the
new authored discovery/mine-warning map presentation and lifecycle cleanup.
This is an **unqualified development candidate**. Its exact source passes all 283
registered regression programs, 101 map-fixture assertions and 63 scripted
normal-route assertions. Fresh ordinary startup of the exact package verifies
the mission and local prisoner. The map/route/packed checks retain 16/13/17 engine
errors, and strict packaging/startup verdicts remain failed. Physical held-map
capture, manual play, real multiplayer, 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 owner-fixes and all earlier candidates remain unchanged.
'''+s[end:])
p=r/'docs/current-status.md';s=p.read_text();head='# Current development status\n\n';assert s.startswith(head)
p.write_text(head+'''**2 October 2026 — objective-map playtest package refreshed:** the [new separate development handoff](../.build/playtest-2026-10-02-objective-map/README.md) contains the authored discovery/mine-warning UI alongside the earlier controller ownership, HQ and logistics work. **407 authored files, 349 exact PAK payloads and three runtime files** match editable source. [Artifact hashes](evidence/package-2026-10-02-objective-map/handoff.json).
The unchanged source retains its **283-program regression pass**, **101 map-fixture assertions** and **63-assertion normal escape route**. [Fresh ordinary startup of the exact package](evidence/packed-2026-10-02-objective-map/archive-review.json) verifies the normal mission and local prisoner, with zero script/runtime failures and seventeen retained engine errors. Strict packaging/startup failures remain; this is **not a qualified release**. Shared-map evidence remains geometry-only, with physical held-map capture unverified.
Three bounded parallel reviews of base radio/extraction/guidance, map lifecycle and intel/loot ownership found no demonstrated new defect; no production code changed for this packaging increment. All native work stayed hidden/muted with confirmed cleanup and unchanged inputs. Original missions, existing working changes and the previous 412-file candidate are preserved; nothing was committed or published. [Review and preservation](evidence/playtest-refresh-2026-10-02-objective-map/review.json). Human play, real multiplayer, physical logistics, comparative FPS and clean release remain unfinished.
'''+s[len(head):])
p=r/'docs/original-feature-coverage.md';s=p.read_text();old='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.'
new='The latest retained candidate is the [2 October objective-map playtest](../.build/playtest-2026-10-02-objective-map/README.md). It includes earlier finite logistics and controller ownership work plus authored discovery/mine-warning map presentation and cleanup. Physical held-map capture remains unqualified.'
assert old in s;p.write_text(s.replace(old,new,1))
p=r/'docs/next-gameplay-increments.md';s=p.read_text();old='Most recent packaged checkpoint: [field-update development build](../.build/playtest-2026-10-01-field-update/README.md). It adds recovered mine warnings, HQ force-loss/completed-search pacing and consistent Stinger Random commands to the finite maintenance, engineer, convoy and intel systems.'
new='Most recent packaged checkpoint: [objective-map development build](../.build/playtest-2026-10-02-objective-map/README.md). It includes authored discovery/mine-warning map UI, controller ownership fixes and the earlier finite maintenance, engineer, convoy, HQ and intel changes.'
assert old in s;(e/'next-gameplay-increments-before.md').write_text(s);p.write_text(s.replace(old,new,1))
for name in ['current-status.md','playtest-build.md','original-feature-coverage.md']:shutil.copy2(b/name,e/(name+'.before'))
(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')
for n,h in baseline['working_modified'].items():
if n not in ['docs/current-status.md','docs/playtest-build.md','docs/original-feature-coverage.md','docs/next-gameplay-increments.md']:assert sha(r/n)==h,n
assert addon_manifest(r)==baseline['source']
assert hashlib.sha256(subprocess.check_output(['git','diff','--cached','--binary'],cwd=r)).hexdigest()==baseline['index_diff_sha256']
subprocess.run(['git','diff','--check'],cwd=r,check=True)
print(json.dumps(summary,indent=2))