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

43 lines
6.2 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
from pathlib import Path
import hashlib,json,shutil,subprocess,sys
r=Path('/home/jakub/devel/escapistsrereintroduced');b=Path('/tmp/erri-gameplay-root-2328');e=r/'docs/evidence/intel-reroll-current-2026-10-02';ne=r/'docs/evidence/native-2026-10-02-intel-reroll-current'
load=lambda p:json.loads(p.read_text())
sha=lambda p:hashlib.sha256(p.read_bytes()).hexdigest()
def write(p,v):p.write_text(json.dumps(v,indent=2)+'\n')
base=load(b/'baseline.json');assert all((r/n).is_file() and sha(r/n)==h for n,h in base['files'].items())
sys.path.insert(0,str(r/'tools'));from source_manifest import addon_manifest
source=addon_manifest(r);runner=load(ne/'runner.json.txt');report=load(ne/'report.json')
assert source==base['source']==load(ne/'source-sha256.json')==load(ne/'launch-source-sha256.json')
assert report['assertions_passed']==116 and report['smoke_completions']==1 and not report['script_or_runtime_failures'] and len(report['engine_errors'])==13
assert runner['cleanup_confirmed'] and runner['source_unchanged_after_run'] and runner['external_addons_unchanged_after_run'] and sha(ne/'console.log.txt')==runner['console_sha256']
log=(ne/'console.log.txt').read_text()
for chance in [100,0]:assert f'Intel reroll complete at {chance} percent: 126/126 AI processed, 0 failed, 0 skipped.' in log
assert log.count("ERR SMOKE PASS: reroll preserves player's exact collected clue documents")==4
assert log.count('ERR SMOKE PASS: reroll preserves already identified radio')==2
oldinputs=load(r/'docs/evidence/hunter-capture-2026-10-02/suite-inputs.json')
changed_inputs=[n for n,h in oldinputs.items() if sha(r/n)!=h]
assert changed_inputs==['docs/current-status.md'],changed_inputs
index=hashlib.sha256(subprocess.check_output(['git','diff','--cached','--binary'],cwd=r)).hexdigest();assert index==base['index_diff_sha256']
original=load(Path('/tmp/erri-heartbeat-20260930-1542-reference.json'));assert all(sha(Path('/home/jakub/devel/escapists')/n)==h for n,h in original.items())
candidate=r/'.build/playtest-2026-10-02-convoy-survivors';seal=load(r/'docs/evidence/playtest-refresh-2026-10-02-convoy-survivors/candidate-sha256.json');assert {str(p.relative_to(candidate)):sha(p) for p in candidate.rglob('*') if p.is_file()}==seal
independent=Path('/tmp/erri-reroll-review-2328/native-review.json');assert independent.is_file()
e.mkdir(exist_ok=False)
for n in ['baseline.json','intel-native.log','finish.py']:shutil.copyfile(b/n,e/n)
for folder,name in [('/tmp/erri-reroll-review-2328','intel-review'),('/tmp/erri-maintenance-review-2328','maintenance-review'),('/tmp/erri-extraction-review-2328','extraction-review')]:shutil.copytree(folder,e/name,ignore=shutil.ignore_patterns('__pycache__','*.pyc'))
write(e/'source-after.json',source)
result={'kind':'Current-source native admin and intel-reroll escape check','authored_files':len(source),'assertions':116,'completions':1,'script_failures':0,'engine_errors':13,'batch_cohort':126,'batch_probabilities':[100,0],'batch_failed':0,'batch_skipped':0,'shared_deadline_seconds':90,'earlier_failed_cohort':129,'identical_workload_comparison_claimed':False,'source_unchanged':True,'full_suite_rerun':False,'previous_passing_regression_programs':292,'prior_suite_input_differences':changed_inputs,'cleanup_external_unchanged':True,'strict_failure_retained':True,'original_reference_files_unchanged':len(original),'inherited_files_preserved_before_documentation':len(base['files']),'latest_candidate_files_unchanged':len(seal),'index_diff_sha256':index,'production_changes':False,'package_changes':False,'release_qualified':False,'limits':'Scripted local legacy-site/admin integration. No remote multiplayer, ordinary user input, generated-site balance, repair/refuel consumption or FPS claim; earlier129-actor failure is retained.'}
write(e/'review.json',result)
status=r/'docs/current-status.md';first,tail=status.read_text().split('\n',1)
section='''**2 October 2026 — combined admin and intel reroll fixture completes on current source:** the hidden/muted native run passes **116 assertions and one escape round**, with **zero script/runtime failures and thirteen retained engine errors**. It exercises the administration menu and owner RPCs, then processes **126 original AI at 100% and again at 0%**, both with zero failed or skipped entries inside the unchanged shared ninety-second gate. The checked guards gain/remove their native folders while the player’s exact collected clues and identified radio remain intact. Interrupted radio defence, extraction and results then complete.
No production source changed. The prior **292-program regression pass** covers identical authored source, tests and tools; this was not a new full-suite run. The earlier 129-actor timeout remains preserved, and this 126-actor result is not an identical-workload comparison. Scripted local legacy-site/admin checks do not establish ordinary input, remote multiplayer, generated-route balance or FPS. Strict engine failures remain; cleanup and unchanged external inputs are confirmed. Three bounded gameplay reviews found no new demonstrated defect. Original missions and the existing package remain unchanged. [Evidence and scope](evidence/intel-reroll-current-2026-10-02/review.json).
'''
status.write_text(first+'\n\n'+section+'\n'+tail.lstrip('\n'))
old='Validate ordinary task/map usability, simultaneous real clients, discovery replication and the complete manual objective route; the failed administrative reroll stress remains unqualified.'
new='A current native admin fixture completes two rerolls for 126 actors and the scripted escape; the earlier 129-actor timeout remains retained. Validate ordinary task/map usability, simultaneous real clients, discovery replication and the complete manual objective route.'
for name in ['docs/original-feature-coverage.json','docs/original-feature-coverage.md']:
p=r/name;s=p.read_text();assert s.count(old)==1;p.write_text(s.replace(old,new,1))
coverage=load(r/'docs/original-feature-coverage.json');write(e/'documentation.json',{n:{'before':base['files'][n],'after':sha(r/n)} for n in ['docs/current-status.md','docs/original-feature-coverage.json','docs/original-feature-coverage.md']})
write(e/'evidence-sha256.json',{str(p.relative_to(e)):sha(p) for p in sorted(e.rglob('*')) if p.is_file()})
print(json.dumps(result,indent=2))