Files
StarPilot/openpilot/starpilot/flm/tests/test_closed_fd_reference_reuse.py
T
2026-10-21 23:28:39 -05:00

105 lines
5.1 KiB
Python

"""Actual controller/native numeric reuse, explicitly mocked original seals.
Root fresh owner fitting with real whole keys is still required. No fixture
below grants original, shadow, profile or current/native admission.
"""
from dataclasses import replace
import pickle
from unittest import mock
import pytest
def closed_engine(monkeypatch,domain='torque',*,neutral_full=False):
from openpilot.starpilot.flm.tests.test_candidate_feedback import actual_caller_fixture
from openpilot.starpilot.flm import feedback_replay
from openpilot.starpilot.flm.feedback_replay import FeedbackReplayEvidence,_SEAL
engine,old,_,_=actual_caller_fixture(domain)
if neutral_full:
from openpilot.starpilot.flm.canonical_surface_adapter import GROUPS
from openpilot.starpilot.flm.event_objective import EffectObjective
from openpilot.starpilot.flm.event_controller_replay import EventControllerReplay
envelope=engine.records[0].effect_trace.envelope.for_trial(GROUPS['ff.left'])
records=[replace(frame,effect_trace=None) for frame in engine.records]
engine.engine.records.clear()
engine.engine.records.extend(records)
objective=EffectObjective('ff.left',envelope.trial_names,envelope.trial_anchor,envelope.context_key)
engine=EventControllerReplay(engine.engine,objective,envelope.replay_anchor(),activation_plan=engine.activation_plan)
evidence=FeedbackReplayEvidence(old.binding,old.original,old.windows,old.engine_input_digest,_SEAL,old.candidate_policy)
monkeypatch.setattr(engine, 'verified_feedback_tape', evidence, raising=False)
monkeypatch.setattr(feedback_replay,'require_feedback_engine',lambda owner:evidence)
# Unit isolation only. Existing full key mutation tests and fresh owner tests
# independently qualify production key generation.
monkeypatch.setattr(engine,'_causal_input_key',lambda epsilon:b'unit-owned-key')
return engine,evidence
def certificate(engine):
result=engine._rollout(engine.reference)
saved=engine._EventControllerReplay__strict_rollouts
assert saved is not None
entry=saved[1]['baseline']
assert len(entry)==3
return (saved,entry,pickle.dumps(engine.reference,protocol=5)),result
@pytest.mark.parametrize('domain',['torque','starpilot','pid'])
def test_completed_actual_strict_closed_loop_is_exact_fd_reference_only(monkeypatch,domain):
engine,_=closed_engine(monkeypatch,domain)
proof,result=certificate(engine)
with mock.patch.object(engine,'_rollout_uncached',side_effect=AssertionError('reuse must not execute')):
copied=engine._strict_fd_reference(engine.reference,proof)
assert copied==result[1] and copied is not result[1]
first=next(iter(copied))
copied[first]+=1
assert engine._strict_fd_reference(engine.reference,proof)==result[1]
for coordinates in (tuple(0 for _ in engine.reference),tuple(-0. for _ in engine.reference),tuple(.001 for _ in engine.reference)):
assert engine._strict_fd_reference(coordinates,proof) is None
@pytest.mark.parametrize('change',['missing','shadow','coordinates','source','original','chronology','count','source_key','lost','feedback'])
def test_closed_reference_declines_changed_certificate_and_owned_inputs(monkeypatch,change):
engine,evidence=closed_engine(monkeypatch)
cert,_=certificate(engine)
saved,entry,bits=cert
if change=='source_key':
monkeypatch.setattr(engine,'_causal_input_key',lambda epsilon:b'changed')
elif change=='lost':
saved[1].pop('baseline')
elif change=='feedback':
object.__setattr__(evidence,'engine_input_digest','f'*64)
else:
proof,fingerprint=entry[2]
fields={'shadow':{'native_policy':'native-shadow-identification'},'coordinates':{'coordinates_digest':'0'*64},
'source':{'source_digest':'0'*64},'original':{'original_digest':'0'*64},
'chronology':{'chronology_digest':'0'*64},'count':{'row_count':proof.row_count-1}}
replacement=(entry[0],entry[1]) if change=='missing' else (entry[0],entry[1],(replace(proof,**fields[change]),fingerprint))
saved[1]['baseline']=replacement
cert=(saved,replacement,bits)
assert engine._strict_fd_reference(engine.reference,cert) is None
@pytest.mark.parametrize('index',[1,2])
def test_neutral_full_torque_turnin_unwind_induction_matches_actual_closed_native(monkeypatch,index):
engine,_=closed_engine(monkeypatch,neutral_full=True)
proof,result=certificate(engine)
coordinate=list(engine.reference)
coordinate[index]=.01
coordinate=tuple(coordinate)
expected=engine._rollout_uncached(coordinate,_identification_token=engine._EventControllerReplay__identification_token)
assert expected==result
assert engine._zero_gain_fd_reference(coordinate,proof)==expected[1]
for other in (0,3):
coordinate=list(engine.reference)
coordinate[other]=.01
assert engine._zero_gain_fd_reference(tuple(coordinate),proof) is None
def test_zero_gain_reuse_rejects_traces_and_nonzero_original_gain(monkeypatch):
engine,_=closed_engine(monkeypatch)
proof,_=certificate(engine)
assert engine._zero_gain_fd_reference((.01,),proof) is None
full,_=closed_engine(monkeypatch,neutral_full=True)
full_proof,_=certificate(full)
full.prior_full['ff_gain_left']=.001
assert full._zero_gain_fd_reference((0.,.01,0.,0.),full_proof) is None