
   PASS  Tests\Feature\RiskWorkflowAcceptanceTest
  ✓ V2-AC-07: closure blocked while any mitigation not implemented       1.44s  
  ✓ V2-AC-07: closure succeeds when all mitigations implemented and eff… 1.06s  
  ✓ V2-AC-08: recommendation conversion creates proposed control, never… 1.01s  
  ✓ V2-AC-09: idempotent initiation returns existing assessment on dupl… 1.08s  
  ✓ V2-AC-11: risk owner cannot approve their own risk acceptance        1.34s  
  ✓ V2-AC-11: control owner cannot verify own mitigation effectiveness   1.12s  

   PASS  Tests\Feature\RiskWorkflowTest
  ✓ assignment moves assessment to awaiting_risk_owner                   1.03s  
  ✓ residual assessment is a separate row linked via parent_id           1.09s  
  ✓ acceptance records decision and routes rejected back to risk owner   1.02s  
  ✓ closure gate blocks when mitigations are still in progress           1.09s  
  ✓ ineffective mitigation drives assessment to ineffective, not closed  1.00s  

   PASS  Tests\Feature\RecommendationTest
  ✓ safety manager can issue a recommendation with a generated referenc… 1.26s  
  ✓ recommendation response requires justification and a valid response  1.10s  
  ✓ authenticated user can view recommendations index                    1.35s  

   PASS  Tests\Feature\RiskDispositionTest
  ✓ safety officer can link a new hazard to a report                     1.54s  
  ✓ safety officer can link an existing hazard to a report               1.43s  
  ✓ risk disposition is recorded with rationale validation for no_furth… 1.52s  
  ✓ conduct risk assessment redirects to prefilled assessment create     1.47s  
  ✓ general employee cannot record a risk disposition                    1.34s  

   PASS  Tests\Feature\HazardTest
  ✓ safety officer can create a hazard with a generated reference        2.32s  
  ✓ authenticated user can view hazard index                             2.56s  
  ✓ hazard matching finds existing hazards and taxonomy synonyms         2.04s  
  ✓ relationship service records idempotent source provenance            2.30s  
  ✓ relationship service rejects unknown relationship types              2.03s  
  ✓ hazard transition follows the lifecycle state machine                2.10s  

   PASS  Tests\Feature\ReportingTest
  ✓ authenticated user can view reports index                            2.56s  
  ✓ guest is redirected to login                                         2.81s  
  ✓ anonymous report stores no reporter identity                         2.09s  
  ✓ identified report binds the authenticated reporter                   2.21s  
  ✓ report narrative is limited to 1000 characters                       1.92s  
  ✓ risk assessment store computes deterministic index from matrix       1.68s  
  ✓ report persists escalation flags                                     1.15s  
  ✓ safety officer can triage a submitted report                         1.30s  
  ✓ invalid report transition is rejected                                1.50s  
  ✓ reclassification requires a reason and records history               2.19s  

   PASS  Tests\Feature\RiskLinkTest
  ✓ risk assessment can link an entity                                   1.60s  

   PASS  Tests\Unit\RiskEngineTest
  ✓ risk engine returns deterministic score and band from the active ma… 0.03s  
  ✓ risk engine returns null for an unmapped cell                        0.04s  
  ✓ active matrix prefers tenant-specific matrix over system default     0.03s  

  Tests:    39 passed (95 assertions)
  Duration: 58.02s

