mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-10-04 21:33:58 +08:00
Show rendered presentation cues and record recovery checkpoint
This commit is contained in:
@@ -1,3 +1,7 @@
|
||||
2026-09-19 standalone recovery: current generic planner conditioning is being prepared for local cached use; fresh native ACE sampling remains per launch. Main includes the standalone cache consumer contract, visible-home badge correction, exact archived Mac replay fixes, and conservative-v2 presentation. Native acceptance is NOT complete: the sole hardware owner cannot reach the comma on the latest network. No current run, GPU health, or startup improvement is claimed. Protected gold and fallback remain unchanged.
|
||||
|
||||
Mac archived replay passed actual UI capture and exact final-sample playback against a complete historical archive. Presentation passed 33 offline tests; an actual 27-second opening gives a coherent estimated beat after removing the former 30-second minimum. Native alert accents are sparse, beat-aligned and suppressed during competing cues. Subjective cue salience still requires listening.
|
||||
|
||||
# Event checkpoint — clean 45 W native replay
|
||||
|
||||
Prism completed a full 254.1-second muted route on the event comma + Chestnut with six accepted fresh music jobs, no holds, no underflows, no worker failure, and clean causal timing. Camera, path, lanes, navigation and ten curve activations were recorded. See [event evidence](EVENT.md). This is an instrumented replay pass; physical listening, Bluetooth and modeld coexistence remain unverified. Community judging has not begun.
|
||||
|
||||
@@ -33,6 +33,15 @@ GESTURE_LABELS = {
|
||||
|
||||
|
||||
def gesture_view(state):
|
||||
engagement = state.get('engagement_presentation') or {}
|
||||
if engagement.get('enabled') and engagement.get('input_fresh') and engagement.get('rendered_state') == 'transition':
|
||||
return ('Engaged / Opening music' if engagement.get('active') else 'Disengaged / Contained music'), 'active', 'engagement'
|
||||
for field, label, kind in [('core_apex', 'Curve apex / Musical breath', 'curve_apex'),
|
||||
('signal_shaker', 'Turn signal / Shaker', 'turn_signal'),
|
||||
('alert_accent', 'Road alert / Percussion', 'native_alert')]:
|
||||
presentation = state.get(field) or {}
|
||||
if presentation.get('enabled') and presentation.get('rendered_active'):
|
||||
return label, 'active', kind
|
||||
active = state.get('gesture_active')
|
||||
active = [kind for kind in active if isinstance(kind, str)] if isinstance(active, (list, tuple)) else []
|
||||
for kind, (_, label) in GESTURE_LABELS.items():
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
import unittest
|
||||
from overlay_view import gesture_view, EventPresentation, overlay_view
|
||||
|
||||
class RenderedCueTests(unittest.TestCase):
|
||||
def test_enabled_is_not_audible(self):
|
||||
self.assertEqual(gesture_view({'signal_shaker':{'enabled':True,'sequence_active':True,'rendered_active':False}}),('','',None))
|
||||
def test_actual_rendered_cues(self):
|
||||
for field,kind in [('signal_shaker','turn_signal'),('core_apex','curve_apex'),('alert_accent','native_alert')]:
|
||||
self.assertEqual(gesture_view({field:{'enabled':True,'rendered_active':True}})[2],kind)
|
||||
def test_engagement_transition_then_recent(self):
|
||||
presentation=EventPresentation()
|
||||
state={'readiness':'READY','engagement_presentation':{'enabled':True,'input_fresh':True,'rendered_state':'transition','active':True}}
|
||||
self.assertEqual(presentation.update(overlay_view(state),1)['event_state'],'active')
|
||||
state['engagement_presentation']['rendered_state']='open'
|
||||
self.assertEqual(presentation.update(overlay_view(state),2)['event'],'Recent: Engaged')
|
||||
self.assertEqual(presentation.update(overlay_view(state),4)['event'],'')
|
||||
|
||||
if __name__=='__main__':unittest.main()
|
||||
Reference in New Issue
Block a user