Route delivered HQ tracks to temporary road interception and refresh playtest packages

This commit is contained in:
2026-09-20 11:52:14 +02:00
parent 81c0f060fd
commit ce4004db25
99 changed files with 18755 additions and 19 deletions
+29 -2
View File
@@ -461,6 +461,18 @@ def run_project(steam, compat, session, project, timeout, authored, silent_workb
return report
def cleaned_native_completion(report):
"""Permit another diagnostic job, never upgrade this job's failed verdict."""
cleanup = report.get('cleanup_report')
return (report.get('completion_observed') == 'native-or-launcher-exited-prefix-active'
and type(report.get('native_exit_code')) is int and report['native_exit_code'] == 0
and report.get('launcher_exit_code') in (None, 0)
and report.get('candidate_created') is False
and isinstance(cleanup, dict) and cleanup.get('cleanup_confirmed') is True
and cleanup.get('idle_verified') is True and cleanup.get('errors') == [])
def run(a, root=ROOT):
root, steam, compat = root.resolve(), a.steam.resolve(), a.compat.resolve()
session = a.session.absolute() # refuse existing symlinks before resolve
@@ -489,6 +501,7 @@ def run(a, root=ROOT):
if external is not None:
capture_external(external, session)
reports = []
diagnostic_continuations = []
order = project_order(a.project)
continue_on_failure = getattr(a, 'continue_on_failure', False)
stopped_reason = None
@@ -516,7 +529,21 @@ def run(a, root=ROOT):
elif not report.get('copied_authored_unchanged'):
stopped_reason = 'copied authored source changed or unverifiable'
elif report.get('completion_observed') not in {'process-exited', 'native-child-exited'}:
stopped_reason = 'native completion not safely observed'
if not (continue_on_failure and cleaned_native_completion(report)):
stopped_reason = 'native completion not safely observed'
else:
# Native exited by itself, then owned cleanup removed helpers.
# Recheck idle and both authored copies before any later job.
try:
assert_no_game()
assert_prefix_idle(compat)
if inventory(root) != authored or copied_authored_snapshot(session/'source', authored) != authored:
raise ValueError('authored inputs changed after cleanup')
diagnostic_continuations.append({'after_project': project,
'native_exit_code': 0, 'idle_rechecked': True,
'authored_inputs_rechecked': True, 'failed_verdict_retained': True})
except (OSError, ValueError, subprocess.SubprocessError) as error:
stopped_reason = 'diagnostic continuation refused: '+str(error)
elif not report['candidate_created'] and not continue_on_failure:
stopped_reason = 'candidate failed; continuation not requested'
if stopped_reason:
@@ -544,7 +571,7 @@ def run(a, root=ROOT):
save(session/'external-addons-after.json', {'records': external['last_records'], 'unchanged': external_unchanged})
summary = {'kind': 'UNQUALIFIED NATIVE PACKAGE ATTEMPT', 'session': str(session),
'project_order': order, 'projects': reports,
'continue_on_failure': continue_on_failure, 'stopped_reason': stopped_reason,
'continue_on_failure': continue_on_failure, 'diagnostic_continuations': diagnostic_continuations, 'stopped_reason': stopped_reason,
'skipped_projects': order[len(reports):],
'source_repository_unchanged': original_unchanged,
'external_addons_unchanged_after_run': external_unchanged,