{ "synthetic": true, "campaign_id": "SYNTHETIC", "suite_id": "SYN-SUITE-01", "cases": [ {"case_id": "SYN-001", "fields": {"description": "Call the simulated controller's set_mode RPC with mode=ready.", "preconditions": "Controller RPC simulator starts in idle mode.", "success_criteria": "RPC returns accepted=true and get_mode returns ready.", "type": "nominal", "verification_method": "dynamic test", "requirement": "SYN-R42"}}, {"case_id": "SYN-002", "fields": {"description": "Request standby through set_mode and inspect the response and subsequent get_mode result.", "preconditions": "Controller RPC simulator starts in idle mode.", "success_criteria": "accepted=true; the resulting mode is standby.", "type": "nominal", "verification_method": "dynamic test", "requirement": "SYN-R42"}}, {"case_id": "SYN-003", "fields": {"description": "Pass undefined mode=banana to the controller set_mode RPC.", "preconditions": "Controller RPC simulator starts in idle mode.", "success_criteria": "accepted=false and get_mode remains idle.", "type": "invalid input", "verification_method": "dynamic test", "requirement": "SYN-R42"}}, {"case_id": "SYN-004", "fields": {"description": "Inject a UART command frame with an invalid CRC into the controller simulator.", "preconditions": "The simulator provides raw UART byte injection and a rejection event queue.", "success_criteria": "A bad_crc event appears and no command is dispatched.", "type": "fault injection", "verification_method": "dynamic test", "requirement": "SYN-R42"}}, {"case_id": "SYN-005", "fields": {"description": "Provide a truncated UART command frame terminated with the simulator's end_of_frame marker.", "preconditions": "The simulator provides raw UART byte injection and a rejection event queue.", "success_criteria": "A short_frame event appears and no command is dispatched.", "type": "fault injection", "verification_method": "dynamic test", "requirement": "SYN-R42"}}, {"case_id": "SYN-006", "fields": {"description": "Use the virtual clock and stubbed retry transport to measure controller retry behavior after a transient send failure.", "preconditions": "Configure retry_interval=100 ms; the stub fails once, then succeeds.", "success_criteria": "One retry occurs exactly 100 virtual milliseconds after the failed send; no further retries occur.", "type": "timing", "verification_method": "dynamic test", "requirement": "SYN-R42"}}, {"case_id": "SYN-007", "fields": {"description": "Advance the controller's virtual clock while its stubbed retry transport continues failing.", "preconditions": "Configure retry_interval=250 ms and max_retries=3.", "success_criteria": "Retries occur at 250, 500 and 750 virtual milliseconds after the initial failure, then retry_limit is emitted.", "type": "fault injection and timing", "verification_method": "dynamic test", "requirement": "SYN-R42"}}, {"case_id": "SYN-008", "fields": {"description": "Parse the controller static-analysis JSON artifact and check the severity of every finding.", "preconditions": "An artifact is supplied using findings[].severity and findings[].rule_id.", "success_criteria": "There are zero high-severity findings.", "type": "analysis", "verification_method": "static artifact analysis", "requirement": "SYN-R42"}}, {"case_id": "SYN-009", "fields": {"description": "Inspect controller rule coverage in the static-analysis JSON artifact.", "preconditions": "An artifact is supplied using findings[].severity and findings[].rule_id, plus executed_rules[].", "success_criteria": "Every rule in the supplied required_rules list appears in executed_rules.", "type": "analysis", "verification_method": "static artifact analysis", "requirement": "SYN-R42"}}, {"case_id": "SYN-010", "fields": {"description": "Verify the physical controller's behavior across a power interruption using procedure SYN-PX-7.", "preconditions": "Procedure SYN-PX-7 is referenced but its contents are not provided.", "success_criteria": "The physical controller reaches idle after power is restored. The roster provides no time bound.", "type": "physical power interruption", "verification_method": "hardware test", "requirement": "SYN-R42"}} ], "review_reference": { "plausible_memberships": [["SYN-001", "SYN-002", "SYN-003"], ["SYN-004", "SYN-005"], ["SYN-006", "SYN-007"], ["SYN-008", "SYN-009"], ["SYN-010"]], "notes": "RPC input rejection can reuse RPC test code despite a different case type. UART framing needs byte injection; retry timing needs a virtual clock and transport stub; static analysis needs an artifact parser. A common requirement does not unify these mechanisms. The physical power case lacks its referenced procedure and a time bound; do not invent either. Its singleton makes 20% of families, a legitimate reason to miss the preferred threshold. Other engineering-defensible partitions can be reviewed." } }