busya
def2bf4038
feat(automation): poisoned-run quarantine policy with durable failure signatures (SCHED-SOAK offline)
- poisoned_store.py: durable JSONL identical-failure counter (fcntl.flock + intra-process lock
+ thread-local reentrancy, append+fsync, torn-line tolerant, CAS quarantine epoch); no
Alembic/ORM changes (046 migrations frozen).
- poisoned.py: N=3 identical infra failures -> typed POISONED_RUN_QUARANTINE, matching
schedules disabled, exactly one blocked notification carrying the DLQ payload; success
resets the pair; operator unquarantine (CAS) re-enables schedules and resets counters.
- REST: GET /scenario-automation/quarantine and POST /quarantine/{scenario_id}/release
(scenario:automation MANAGE; 404 NOT_QUARANTINED / 409 STALE_QUARANTINE_VERSION).
- Tests: 13 policy + 2 API quarantine vectors; merged with the master ReadAcl/RetentionReceipts
classes (conflict resolved keeping both). Focused 31 passed; 046 T023 offline slice.
2026-09-22 12:35:39 +03:00
..
2026-05-31 22:32:20 +03:00
2026-08-19 17:14:32 +03:00
2026-07-22 11:48:15 +03:00
2026-09-07 11:26:34 +03:00
2026-08-02 23:09:08 +07:00
2026-09-04 13:07:08 +03:00
2026-08-06 18:26:50 +07:00
2026-08-20 11:32:26 +03:00
2026-08-07 01:56:36 +07:00
2026-09-04 20:56:41 +03:00
2026-07-23 15:49:45 +03:00
2026-07-22 11:48:15 +03:00
2026-09-16 16:11:02 +03:00
2026-09-16 11:13:50 +03:00
2026-07-22 11:48:15 +03:00
2026-07-22 11:48:15 +03:00
2026-07-22 11:48:15 +03:00
2026-07-22 11:48:15 +03:00
2026-09-16 11:13:50 +03:00
2026-08-09 08:22:16 +03:00
2026-07-22 11:48:15 +03:00
2026-09-16 16:11:02 +03:00
2026-08-18 12:20:42 +03:00
2026-09-11 19:05:20 +03:00
2026-07-23 12:32:50 +03:00
2026-07-23 12:32:50 +03:00
2026-08-18 12:20:42 +03:00
2026-09-04 13:07:08 +03:00
2026-07-22 11:48:15 +03:00
2026-08-19 17:14:32 +03:00
2026-09-16 11:13:50 +03:00
2026-09-16 11:13:50 +03:00
2026-08-10 07:29:08 +03:00
2026-07-31 11:28:50 +03:00
2026-07-31 11:28:50 +03:00
2026-07-31 11:28:50 +03:00
2026-07-31 11:28:50 +03:00
2026-07-31 11:28:50 +03:00
2026-08-20 11:32:26 +03:00
2026-08-07 14:21:25 +07:00
2026-07-31 11:28:50 +03:00
2026-07-31 11:28:50 +03:00
2026-09-01 12:24:42 +03:00
2026-09-01 12:24:42 +03:00
2026-09-01 12:24:42 +03:00
2026-08-25 11:42:31 +03:00
2026-08-25 11:42:31 +03:00
2026-08-19 17:14:32 +03:00
2026-08-19 17:14:32 +03:00
2026-08-07 10:24:32 +07:00
2026-07-22 11:48:15 +03:00
2026-07-31 11:28:50 +03:00
2026-07-31 11:28:50 +03:00
2026-09-01 12:24:42 +03:00
2026-07-31 11:28:50 +03:00
2026-08-07 14:21:25 +07:00
2026-08-19 17:14:32 +03:00
2026-08-19 17:14:32 +03:00
2026-08-19 17:14:32 +03:00
2026-08-19 17:14:32 +03:00
2026-07-31 11:28:50 +03:00
2026-07-31 11:28:50 +03:00
2026-07-22 11:48:15 +03:00
2026-09-16 16:11:02 +03:00
2026-09-01 12:24:42 +03:00
2026-07-31 11:28:50 +03:00
2026-09-16 11:13:50 +03:00
2026-08-19 17:14:32 +03:00
2026-08-19 17:14:32 +03:00
2026-08-19 17:14:32 +03:00
2026-08-19 17:14:32 +03:00
2026-09-10 10:57:18 +03:00
2026-09-10 10:57:18 +03:00
2026-09-10 10:57:18 +03:00
2026-09-10 10:57:18 +03:00
2026-09-10 10:57:18 +03:00
2026-08-09 08:22:16 +03:00
2026-09-10 10:57:18 +03:00
2026-08-19 10:29:28 +03:00
2026-09-04 20:41:38 +03:00
2026-08-19 17:14:32 +03:00
2026-07-31 11:28:50 +03:00
2026-07-31 11:28:50 +03:00
2026-09-18 11:39:37 +03:00
2026-09-04 20:56:41 +03:00
2026-07-22 11:48:15 +03:00
2026-09-18 14:54:09 +03:00
2026-09-10 14:14:40 +03:00
2026-09-07 11:26:34 +03:00
2026-09-22 12:35:39 +03:00
2026-08-20 11:32:26 +03:00
2026-09-11 10:10:01 +03:00
2026-09-07 11:26:34 +03:00
2026-09-07 16:52:38 +03:00
2026-09-15 10:12:17 +03:00
2026-09-10 16:13:44 +03:00
2026-08-20 11:32:26 +03:00
2026-08-02 23:51:32 +07:00
2026-08-19 17:14:32 +03:00
2026-09-16 11:13:50 +03:00
2026-07-27 11:49:18 +03:00
2026-08-19 17:14:32 +03:00
2026-08-25 11:42:31 +03:00
2026-09-16 11:13:50 +03:00
2026-09-01 12:24:42 +03:00
2026-07-31 11:28:50 +03:00
2026-07-31 11:28:50 +03:00
2026-07-22 11:48:15 +03:00
2026-09-08 06:09:25 +03:00
2026-07-31 11:28:50 +03:00
2026-07-31 11:28:50 +03:00
2026-07-31 11:28:50 +03:00
2026-07-31 11:28:50 +03:00
2026-07-31 11:28:50 +03:00
2026-07-31 11:28:50 +03:00
2026-07-31 11:28:50 +03:00