diff --git a/roadscore/prototype/archive_native.py b/roadscore/prototype/archive_native.py index 547370dd80..098ef123f9 100644 --- a/roadscore/prototype/archive_native.py +++ b/roadscore/prototype/archive_native.py @@ -11,7 +11,7 @@ if not blocks:raise RuntimeError('No final audio blocks; refusing empty archive' for b in blocks:b.update(host_audio_s=b['audio_s'],host_dac_wall=b['callback_wall']+b['dac_delay'],presentation_host='comma') (out/'host_audio.jsonl').write_text(''.join(json.dumps(b)+'\n' for b in blocks)) (out/'host_audio_summary.json').write_text(json.dumps({'first_host_dac_wall':blocks[0]['host_dac_wall'],'presentation_host':'comma','muted':blocks[0]['muted'],'portaudio_flags':sum(bool(b.get('portaudio_status')) for b in blocks)})) -for name in ['summary.json','jobs.jsonl','boundaries.jsonl','ending.json','bridge.json','trace.jsonl','runtime_manifest.json','song_form.json','gesture_grid.json','gestures.json','shaker_grid.json','shaker_events.json','core_apex_events.json','alert_accent_events.json','dry.wav','audio_blocks.jsonl','composition.json','quality_events.jsonl']: +for name in ['summary.json','jobs.jsonl','boundaries.jsonl','ending.json','bridge.json','trace.jsonl','runtime_manifest.json','song_form.json','gesture_grid.json','gestures.json','shaker_grid.json','shaker_events.json','core_apex_events.json','rhythm_timeline.json','alert_accent_events.json','dry.wav','audio_blocks.jsonl','composition.json','quality_events.jsonl']: if (run/name).exists():shutil.copy2(run/name,out/name) if (run/'quality').exists():shutil.copytree(run/'quality',out/'quality') if (root/'generated/ace_link.jsonl').exists():shutil.copy2(root/'generated/ace_link.jsonl',out/'ace_link.jsonl') diff --git a/roadscore/prototype/normal_onroad.py b/roadscore/prototype/normal_onroad.py index 9960eaa226..a43c290605 100644 --- a/roadscore/prototype/normal_onroad.py +++ b/roadscore/prototype/normal_onroad.py @@ -179,7 +179,7 @@ try: subprocess.run([str(py),str(R/'prototype/archive_native.py'),str(out),a.routeid,str(a.start)],env=env,cwd=rt,check=True) if not native: # Preserve generated decisions with the exact host presentation audio. - for filename in ['summary.json','jobs.jsonl','boundaries.jsonl','ending.json','bridge.json','trace.jsonl','runtime_manifest.json','song_form.json','gesture_grid.json','gestures.json','composition.json','quality_events.jsonl','shaker_grid.json','shaker_events.json','core_apex_events.json','alert_accent_events.json','dry.wav','audio_blocks.jsonl']: + for filename in ['summary.json','jobs.jsonl','boundaries.jsonl','ending.json','bridge.json','trace.jsonl','runtime_manifest.json','song_form.json','gesture_grid.json','gestures.json','composition.json','quality_events.jsonl','shaker_grid.json','shaker_events.json','core_apex_events.json','rhythm_timeline.json','alert_accent_events.json','dry.wav','audio_blocks.jsonl']: subprocess.run(['scp',a.bench+':/data/roadscore/results/current/'+filename,str(out/filename)],stdout=subprocess.DEVNULL,stderr=subprocess.DEVNULL,check=filename in ('dry.wav','audio_blocks.jsonl')) subprocess.run(['scp','-r',a.bench+':/data/roadscore/results/current/quality',str(out/'quality')],stdout=subprocess.DEVNULL,stderr=subprocess.DEVNULL) if a.composer=='ace':subprocess.run(['scp',a.bench+':/data/roadscore/generated/ace_link.jsonl',str(out/'ace_link.jsonl')],stdout=subprocess.DEVNULL,stderr=subprocess.DEVNULL) diff --git a/roadscore/prototype/runtime_manifest.py b/roadscore/prototype/runtime_manifest.py index cfe09354d2..2a40a88a76 100644 --- a/roadscore/prototype/runtime_manifest.py +++ b/roadscore/prototype/runtime_manifest.py @@ -5,7 +5,7 @@ from presentation_policy import effective_config,selected as presentation_policy from pathlib import Path from composer_choice import choice,NAMES from ace_profiles import selected -root=Path('/data/roadscore');files=[root/'prototype'/name for name in ['app.py','alert_accent.py','engagement_presentation.py','signal_shaker.py','core_apex.py','presentation_policy.py','presentation_status.py','render_policy.py','worker.py','core.py','musical.py','rolling.py','event_music.py','render_clock.py','song_form.py','section_bank.py','bar_grid.py','audio_policy.py','musical_gestures.py','gesture_bank.py','composition_policy.py','graph_cache.py']]+[Path('/data/sa3-feasibility/native_sa3.py')] +root=Path('/data/roadscore');files=[root/'prototype'/name for name in ['app.py','rhythm_timeline.py','alert_accent.py','engagement_presentation.py','signal_shaker.py','core_apex.py','presentation_policy.py','presentation_status.py','render_policy.py','worker.py','core.py','musical.py','rolling.py','event_music.py','render_clock.py','song_form.py','section_bank.py','bar_grid.py','audio_policy.py','musical_gestures.py','gesture_bank.py','composition_policy.py','graph_cache.py']]+[Path('/data/sa3-feasibility/native_sa3.py')] result={'presentation_policy':presentation_policy_selected(),'render_mode':render_mode_selected(),'backend':NAMES[choice()],'composer':choice(),'implementation_sha256':{str(p):hashlib.sha256(p.read_bytes()).hexdigest() for p in files if p.exists()},'runtime':effective_config(json.loads((root/'runtime.json').read_text())),'weight_hash':'not collected in this integration pass'} source=root/('assets/source_'+result['runtime'].get('identity','legacy')+'.wav') if choice()=='ace':