Include the current addon, terrain integrations, tools, regression tests and recorded development evidence.
83 lines
11 KiB
Python
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))
|