Renn F
ce4d02b3c2
fix(gateway): bounded fail-open evidence assembly + PM decision transient-failure bypass
...
Evidence-assembly git legs (diff, changed-files, branch fetch, advisory
conventions run) ran unbounded inside claim_review / claim_doc_task /
claim_gate_review / evidence() / i_am_done's envelope build, so a slow
clone turned the whole verb into a silent 120s FlowVerbTimeout 504.
Each leg now runs through run_bounded_leg under a shared LegBudget
(evidence_assembly_timeout_seconds, 45s total): a timed-out leg — both
asyncio TimeoutError and git's own GitTimeoutError — degrades into an
evidence_gaps note on the envelope instead of hanging the verb, while
non-timeout git errors still propagate. The advisory conventions run
gets an inner-only timeout (conventions_validator_advisory_timeout_
seconds, 30s) threaded down to the subprocess so it is never orphaned
by an outer cancel; the fail-closed i_am_done/pr_pass conventions
gates keep their hardcoded 120s.
_ensure_pm_decision now reports a PmDecisionOutcome: a transient DB
failure recording the PM's decision journal (e.g. lock timeout under
load) no longer launders into a journal:decision gate rejection that
escalates and BLOCKS the task — the verb's own rationale satisfies the
gate with a structured warning, across all seven PM verbs.
Also: repo-wide ruff realignment to the lockfile-pinned ruff (8
format-only diffs, 14 UP038 isinstance conversions) that a transiently
newer venv ruff had masked.
Gate: 15474 passed, 459 skipped; ruff/mypy/xenon/vulture/bandit/
pip-audit/deptry/import-linter/foundation-check all green.
2026-07-31 13:56:19 +02:00
..
2026-07-19 11:50:47 +02:00
2026-07-11 15:51:19 +02:00
2026-07-25 00:41:13 +02:00
2026-07-01 01:11:34 +02:00
2026-07-23 21:09:50 +02:00
2026-07-25 17:13:32 +02:00
2026-07-27 01:28:33 +02:00
2026-06-14 13:43:46 +02:00
2026-06-29 05:38:21 +02:00
2026-06-15 01:23:03 +02:00
2026-07-26 19:11:27 +02:00
2026-07-18 19:11:03 +02:00
2026-07-02 21:05:50 +02:00
2026-06-30 08:08:35 +02:00
2026-07-07 10:09:23 +02:00
2026-07-25 17:13:32 +02:00
2026-07-26 20:01:24 +02:00
2026-07-07 10:09:23 +02:00
2026-06-29 05:38:21 +02:00
2026-07-25 17:13:32 +02:00
2026-07-26 20:01:24 +02:00
2026-07-23 21:09:50 +02:00
2026-06-29 05:38:21 +02:00
2026-06-14 13:43:46 +02:00
2026-07-31 13:56:19 +02:00
2026-07-11 22:54:42 +02:00
2026-07-23 00:05:33 +02:00
2026-07-07 10:09:23 +02:00
2026-06-29 05:38:21 +02:00
2026-07-19 17:38:30 +02:00
2026-06-16 18:01:40 +02:00
2026-06-29 11:32:34 +02:00
2026-07-31 13:56:19 +02:00
2026-07-10 00:15:04 +02:00
2026-07-10 00:15:04 +02:00
2026-06-29 11:32:34 +02:00
2026-07-11 09:21:24 +02:00
2026-07-24 17:50:13 +02:00
2026-07-19 08:12:34 +02:00
2026-07-23 21:54:45 +02:00
2026-06-29 05:38:21 +02:00
2026-06-29 05:38:21 +02:00
2026-07-19 08:12:34 +02:00
2026-07-19 08:12:34 +02:00
2026-06-29 05:38:21 +02:00
2026-07-31 01:53:07 +02:00
2026-06-19 09:15:01 +02:00
2026-06-15 07:03:59 +02:00
2026-07-18 15:55:55 +02:00
2026-07-19 08:12:34 +02:00
2026-07-19 08:12:34 +02:00
2026-07-24 17:50:13 +02:00
2026-07-24 14:34:25 +02:00
2026-07-24 14:34:25 +02:00
2026-07-24 14:34:25 +02:00
2026-06-29 11:32:34 +02:00
2026-07-24 17:50:13 +02:00
2026-06-25 18:35:52 +02:00
2026-06-14 23:18:58 +02:00
2026-06-29 05:38:21 +02:00
2026-07-31 13:56:19 +02:00
2026-07-24 17:50:13 +02:00
2026-07-22 03:31:12 +02:00
2026-07-19 11:50:47 +02:00
2026-07-07 10:09:23 +02:00
2026-07-05 13:37:17 +02:00
2026-07-07 10:09:23 +02:00
2026-07-07 10:09:23 +02:00
2026-07-25 17:13:32 +02:00
2026-07-31 13:56:19 +02:00
2026-07-25 17:13:32 +02:00
2026-06-26 01:43:08 +02:00
2026-06-23 07:26:41 +02:00
2026-07-05 16:12:44 +02:00
2026-07-25 17:13:32 +02:00
2026-07-26 20:01:24 +02:00
2026-07-07 10:09:23 +02:00
2026-07-25 17:13:32 +02:00
2026-07-25 17:13:32 +02:00
2026-07-25 17:13:32 +02:00
2026-07-30 16:35:42 +02:00
2026-07-20 20:59:36 +02:00
2026-07-29 23:23:29 +02:00
2026-07-15 08:25:20 +02:00
2026-06-29 05:38:21 +02:00
2026-07-04 03:10:33 +02:00
2026-06-14 13:43:46 +02:00
2026-06-15 06:12:00 +02:00
2026-07-07 10:09:23 +02:00
2026-07-25 17:13:32 +02:00
2026-07-26 20:01:24 +02:00
2026-07-04 03:10:33 +02:00
2026-07-25 17:13:32 +02:00
2026-07-26 20:01:24 +02:00
2026-06-26 01:43:08 +02:00
2026-07-04 03:10:33 +02:00
2026-06-29 05:38:21 +02:00
2026-06-29 05:38:21 +02:00
2026-07-07 10:09:23 +02:00
2026-07-30 23:37:27 +02:00
2026-07-19 08:12:34 +02:00
2026-07-23 21:09:50 +02:00
2026-07-01 01:11:34 +02:00
2026-07-15 05:45:57 +02:00
2026-07-22 03:31:12 +02:00
2026-07-23 00:06:14 +02:00
2026-07-15 04:34:06 +02:00
2026-07-10 03:59:13 +02:00
2026-07-22 03:31:25 +02:00
2026-07-10 09:38:10 +02:00
2026-07-08 16:03:00 +02:00
2026-06-29 05:38:21 +02:00
2026-06-30 08:08:35 +02:00
2026-06-30 08:08:35 +02:00
2026-06-29 05:38:21 +02:00
2026-07-16 04:30:18 +02:00
2026-07-22 08:11:28 +02:00
2026-07-22 08:11:28 +02:00
2026-07-18 16:35:28 +02:00
2026-07-22 15:53:02 +02:00
2026-07-14 02:22:37 +02:00
2026-07-25 17:13:32 +02:00
2026-07-07 10:09:23 +02:00
2026-07-22 15:53:02 +02:00
2026-07-18 16:48:45 +02:00
2026-07-25 17:13:32 +02:00
2026-07-18 16:48:45 +02:00
2026-07-09 05:26:30 +02:00
2026-06-29 05:38:21 +02:00
2026-07-18 16:41:18 +02:00
2026-06-21 02:48:07 +02:00
2026-06-15 20:47:41 +02:00
2026-06-15 20:47:41 +02:00
2026-07-26 19:11:27 +02:00
2026-07-25 05:39:44 +02:00
2026-07-26 20:01:24 +02:00
2026-07-25 17:13:32 +02:00
2026-07-26 15:07:28 +02:00
2026-07-04 03:10:33 +02:00
2026-07-07 10:09:23 +02:00
2026-07-02 18:28:07 +02:00
2026-07-25 17:13:32 +02:00
2026-07-26 20:01:24 +02:00
2026-07-24 13:53:29 +02:00
2026-06-29 05:38:21 +02:00
2026-07-22 03:31:01 +02:00
2026-07-25 17:13:32 +02:00
2026-07-26 20:01:24 +02:00
2026-07-25 05:39:44 +02:00
2026-06-21 02:48:07 +02:00
2026-07-23 21:09:50 +02:00
2026-07-11 22:54:42 +02:00
2026-07-23 09:41:27 +02:00
2026-07-19 17:38:30 +02:00
2026-07-18 00:44:48 +02:00
2026-06-29 11:32:34 +02:00
2026-07-11 09:21:24 +02:00
2026-07-13 13:57:14 +02:00
2026-07-07 10:09:23 +02:00
2026-07-29 23:23:29 +02:00
2026-07-19 07:40:18 +02:00
2026-07-18 15:54:49 +02:00
2026-07-23 21:09:50 +02:00
2026-07-25 17:13:32 +02:00
2026-07-18 15:54:49 +02:00
2026-06-17 20:50:07 +02:00
2026-07-23 21:09:50 +02:00
2026-07-07 10:09:23 +02:00
2026-06-22 13:02:59 +02:00
2026-06-30 08:08:35 +02:00
2026-06-12 23:10:21 +02:00
2026-07-25 00:49:13 +02:00
2026-07-11 22:54:42 +02:00
2026-07-11 09:21:12 +02:00
2026-07-11 15:51:19 +02:00
2026-07-11 15:51:19 +02:00
2026-07-11 15:51:19 +02:00
2026-07-11 15:51:19 +02:00
2026-07-11 22:54:42 +02:00
2026-07-22 08:11:28 +02:00
2026-07-22 08:11:28 +02:00
2026-07-16 19:49:26 +02:00
2026-07-25 17:13:32 +02:00
2026-07-07 10:09:23 +02:00
2026-07-07 10:09:23 +02:00
2026-06-22 12:37:46 +02:00
2026-06-11 18:16:20 +02:00
2026-07-31 01:53:07 +02:00
2026-07-31 13:56:19 +02:00
2026-07-31 01:53:07 +02:00
2026-07-10 00:15:04 +02:00
2026-06-08 05:17:15 +02:00
2026-07-07 10:09:23 +02:00
2026-06-22 01:59:41 +02:00
2026-06-29 11:32:34 +02:00
2026-06-30 11:05:22 +02:00
2026-07-24 20:29:20 +02:00
2026-06-29 11:32:34 +02:00
2026-07-30 16:35:42 +02:00
2026-07-25 17:13:32 +02:00
2026-07-28 23:52:04 +02:00
2026-07-28 23:52:04 +02:00
2026-07-05 13:37:17 +02:00