@@ -366,6 +366,40 @@ def test_primer_in_session_nudges_success(mock_get_signals, mock_get):
366366 assert "Debugging playbook" in result
367367
368368
369+ @patch ("primer.mcp.tools.httpx.get" )
370+ @patch ("primer.mcp.tools.get_live_session_signals" )
371+ def test_primer_in_session_nudges_falls_back_when_coaching_payload_is_invalid (
372+ mock_get_signals , mock_get
373+ ):
374+ mock_get_signals .return_value = LiveSessionSignalsResponse (
375+ session_id = "session-123" ,
376+ agent_type = "claude_code" ,
377+ project_name = "api-server" ,
378+ total_messages = 12 ,
379+ risk_level = "high" ,
380+ satisfaction_signal = "negative" ,
381+ signals = [
382+ LiveSessionSignal (
383+ signal_type = "verification_failure" ,
384+ severity = "warning" ,
385+ title = "Verification is failing" ,
386+ detail = "Recent test runs are failing repeatedly." ,
387+ )
388+ ],
389+ )
390+ mock_resp = MagicMock ()
391+ mock_resp .status_code = 200
392+ mock_resp .json .return_value = {"brief_type" : "session_start" , "sections" : "invalid" }
393+ mock_get .return_value = mock_resp
394+
395+ from primer .mcp .tools import primer_in_session_nudges
396+
397+ result = primer_in_session_nudges (project_name = "api-server" )
398+
399+ assert "In-Session Workflow Nudges" in result
400+ assert "Tighten the verification loop" in result
401+
402+
369403@patch ("primer.mcp.tools.get_live_session_signals" )
370404def test_primer_in_session_nudges_error (mock_get_signals ):
371405 mock_get_signals .side_effect = ValueError ("No local sessions found" )
0 commit comments