{ "schema_version": 1, "name": "act_degraded", "description": "The act path against a Praxis that goes down and comes back. This is the case the harness promised and did not have: the other two scenarios never produce an act, so the ecosystem fakes saw zero requests and the fault lever was inert. Here a scripted act reaches an enabled allowlist row, the row is a Praxis verb, and the same utterance runs healthy, then at 503, then healthy again. The degraded turn must say she cannot reach it and must not send anything at him off the back of it.", "start": "2026-08-01T09:00:00+03:00", "praxis_attention": "[{\"id\":\"item_1\",\"title\":\"medicine not taken\",\"importance\":3.0,\"rule\":\"morning_medicine\"}]", "tools": [{ "name": "list_attention" }], "script": [ { "match": "требует внимания", "route": "[{\"intent\":\"act\",\"verb\":\"list_attention\"}]" }, { "match": "", "route": "[{\"intent\":\"chat\",\"text\":\"привет\"}]", "reply": "{\"response\":\"Я рада тебя слышать.\",\"mood\":\"happy\"}" } ], "steps": [ { "at": "09:00", "note": "a healthy act reaches Praxis and speaks what it found", "say": "что требует внимания?", "expect_reply_contains": ["medicine not taken"], "expect_called": ["/api/v1/tools/attention"], "expect_no_send": true }, { "at": "09:05", "note": "the ecosystem goes down", "fault": 503 }, { "at": "09:10", "note": "the same act against a 503. She says she cannot reach it. She does not invent an answer and she does not push anything at him.", "say": "что требует внимания?", "expect_reply_contains": ["не могу сейчас узнать"], "expect_reply_lacks": ["medicine not taken"], "expect_no_send": true }, { "at": "09:15", "note": "a tick while the ecosystem is down touches nothing out there — the proactive loop has no business calling Praxis", "tick": true, "expect_not_called": ["/api/v1"], "expect_no_send": true, "expect_no_events": true }, { "at": "09:20", "note": "recovery: the same act works again, so the degraded turn left no sticky state", "clear_fault": true, "say": "что требует внимания?", "expect_reply_contains": ["medicine not taken"], "expect_no_send": true } ] }