30 lines
1.3 KiB
Python
30 lines
1.3 KiB
Python
import json
|
|
|
|
from spacesafeml_certification_benchmark_and_.verification import VerificationEngine
|
|
from spacesafeml_certification_benchmark_and_.dsl import (
|
|
SafetyContract,
|
|
LocalCapabilities,
|
|
Scenario,
|
|
ResourceBudgets,
|
|
)
|
|
|
|
|
|
def test_trace_id_is_deterministic_and_sensitive_to_seed():
|
|
plan = {"name": "mission-x", "actions": ["go", "scan"]}
|
|
|
|
# Create a contract with a scenario that has an explicit seed
|
|
sc = Scenario(scenario_id="sc-1", deterministic_replay=True, seed=12345, description="seeded")
|
|
contract = SafetyContract(contract_id="c-1", local_capabilities=[LocalCapabilities(name="A")], scenarios=[sc])
|
|
|
|
engine = VerificationEngine()
|
|
|
|
tid1 = engine._trace_id(plan, contract, scenario_id="sc-1")
|
|
tid2 = engine._trace_id(plan, contract, scenario_id="sc-1")
|
|
assert tid1 == tid2, "Trace id should be stable for same plan + scenario seed"
|
|
|
|
# Changing the seed should change the trace id
|
|
sc2 = Scenario(scenario_id="sc-1", deterministic_replay=True, seed=54321, description="seeded-different")
|
|
contract2 = SafetyContract(contract_id="c-1", local_capabilities=[LocalCapabilities(name="A")], scenarios=[sc2])
|
|
tid3 = engine._trace_id(plan, contract2, scenario_id="sc-1")
|
|
assert tid3 != tid1, "Different scenario seed should change trace id"
|