sysadmin and Claude Opus 4.8
7eb4884658
fix(auth): route delete_branch capability to the reconciler role ( Closes #729 )
...
Remote post-merge branch deletion was blocked because the capability
resolver classified delete_branch as an author-role task while
gitea.branch.delete is granted only to prgs-reconciler. No configured
profile could satisfy both the permission gate and the role gate, so
every deletion failed closed with performed=false.
Re-home delete_branch from the author role to the reconciler role in
both single-source-of-truth maps:
- task_capability_map.TASK_CAPABILITY_MAP["delete_branch"].role
- role_session_router: TASK_REQUIRED_ROLE + AUTHOR_TASKS/RECONCILER_TASKS
resolve_task_capability("delete_branch") now resolves to prgs-reconciler.
In gitea_delete_branch, the reconciler is now the delete-capable role and
performs raw deletion through the existing reconciliation-cleanup-phase
authorization gate (operator approval + safe_to_delete proof) plus the
preservation/protected guards; the prior reconciler->cleanup redirect is
removed as it would orphan that guarded flow. Author, reviewer, and
merger stay denied by the permission gate and the required-role gate.
gitea_cleanup_merged_pr_branch remains a separate reconciler-owned path
with independent merged/ancestry/ownership verification.
Tests: reconciler resolves + performs eligible deletion; author/reviewer/
merger denied even when holding the permission; protected/preservation
branches remain fail-closed; both role maps asserted in agreement.
Updated pre-existing tests that encoded the superseded author-delete /
#687 reconciler-redirect contract. Full suite: 3190 passed, 6 skipped,
1 pre-existing unrelated failure (test_issue_702 create_pr stale-binding).
Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected] >
Claude-Session: https://claude.ai/code/session_01UracxyRHQw49rZBaexHdft
2026-07-17 19:42:52 -04:00
..
2026-07-02 15:31:56 -05:00
2026-06-21 17:26:18 -04:00
2026-07-17 14:25:08 -04:00
2026-07-15 21:13:21 -04:00
2026-07-15 21:13:21 -04:00
2026-07-10 02:54:20 -04:00
2026-07-07 09:20:50 -04:00
2026-07-07 05:38:32 -04:00
2026-07-12 09:00:45 -04:00
2026-07-13 13:40:38 -04:00
2026-07-15 21:13:21 -04:00
2026-07-17 19:42:52 -04:00
2026-07-15 21:13:21 -04:00
2026-07-10 18:09:19 -04:00
2026-07-05 15:16:36 -04:00
2026-07-08 22:36:10 -04:00
2026-07-17 19:42:52 -04:00
2026-07-13 21:48:28 -04:00
2026-07-08 03:17:38 -04:00
2026-07-08 03:44:58 -04:00
2026-07-07 04:25:02 -04:00
2026-07-02 06:13:26 -04:00
2026-07-05 17:18:48 -04:00
2026-07-15 21:13:21 -04:00
2026-07-15 21:13:21 -04:00
2026-07-15 21:13:21 -04:00
2026-07-05 03:33:12 -04:00
2026-07-02 02:34:16 -04:00
2026-07-08 02:19:37 -04:00
2026-07-04 18:35:45 -04:00
2026-07-15 21:13:21 -04:00
2026-07-08 22:30:21 -04:00
2026-07-10 11:30:53 -04:00
2026-07-09 15:39:54 -04:00
2026-07-12 13:15:58 -04:00
2026-07-15 21:13:21 -04:00
2026-07-15 21:13:21 -04:00
2026-07-06 01:26:33 -04:00
2026-07-17 19:42:52 -04:00
2026-07-05 03:23:40 -04:00
2026-07-07 04:27:02 -04:00
2026-07-09 12:56:12 -04:00
2026-07-07 04:26:58 -04:00
2026-07-13 02:29:46 -04:00
2026-07-07 04:35:34 -04:00
2026-07-07 02:57:45 -04:00
2026-07-10 03:18:54 -04:00
2026-07-12 13:15:58 -04:00
2026-07-12 13:15:58 -04:00
2026-07-17 14:04:45 -04:00
2026-07-13 14:35:15 -04:00
2026-07-13 02:29:46 -04:00
2026-07-13 21:48:28 -04:00
2026-07-13 17:37:13 -04:00
2026-07-13 16:40:58 -04:00
2026-07-13 14:35:15 -04:00
2026-07-15 13:55:06 -04:00
2026-07-15 21:13:21 -04:00
2026-07-17 14:25:08 -04:00
2026-07-16 15:47:52 -04:00
2026-07-08 03:27:37 -04:00
2026-07-07 05:41:33 -04:00
2026-07-15 21:13:21 -04:00
2026-07-15 21:13:21 -04:00
2026-07-15 21:13:21 -04:00
2026-07-07 23:40:12 -05:00
2026-07-07 16:18:42 -04:00
2026-07-10 11:30:53 -04:00
2026-07-08 02:22:54 -04:00
2026-07-15 21:13:21 -04:00
2026-07-10 16:17:31 -04:00
2026-07-15 21:13:21 -04:00
2026-07-10 11:30:53 -04:00
2026-07-07 05:22:08 -04:00
2026-07-07 04:25:02 -04:00
2026-07-15 21:13:21 -04:00
2026-07-08 04:08:07 -04:00
2026-07-15 21:13:21 -04:00
2026-07-10 13:05:27 -04:00
2026-07-07 13:11:36 -04:00
2026-07-13 21:48:28 -04:00
2026-07-06 12:37:04 -04:00
2026-07-08 01:47:34 -04:00
2026-07-09 18:44:04 -04:00
2026-07-08 13:43:39 -04:00
2026-07-17 19:42:52 -04:00
2026-07-08 22:22:34 -04:00
2026-07-16 21:21:39 -04:00
2026-07-13 21:48:28 -04:00
2026-07-05 15:16:55 -04:00
2026-07-09 08:20:21 -04:00
2026-07-17 13:30:52 -04:00
2026-07-15 21:13:21 -04:00
2026-07-12 22:35:14 -04:00
2026-06-21 18:08:53 -04:00
2026-07-07 04:08:27 -04:00
2026-07-09 09:25:08 -04:00
2026-07-09 10:43:42 -04:00
2026-07-15 21:13:21 -04:00
2026-07-15 21:13:21 -04:00
2026-07-15 21:13:21 -04:00
2026-07-09 09:25:08 -04:00
2026-07-07 17:19:37 -04:00
2026-07-15 21:13:21 -04:00
2026-07-09 15:49:14 -04:00
2026-07-15 21:13:21 -04:00
2026-07-17 13:57:22 -04:00
2026-07-08 23:33:51 -04:00
2026-07-08 02:17:58 -04:00
2026-07-17 10:42:53 -04:00
2026-07-07 13:06:07 -04:00
2026-07-12 13:15:58 -04:00
2026-07-08 23:04:44 -04:00
2026-07-07 04:46:48 -04:00
2026-07-05 15:16:55 -04:00
2026-07-10 13:05:27 -04:00
2026-07-07 04:57:50 -04:00
2026-07-07 09:20:50 -04:00
2026-07-09 00:09:47 -04:00
2026-07-07 09:15:13 -04:00
2026-07-12 13:15:58 -04:00
2026-07-12 21:31:00 -04:00
2026-07-09 12:36:50 -04:00
2026-07-07 05:45:51 -04:00
2026-07-07 09:25:55 -04:00
2026-07-07 09:25:55 -04:00
2026-07-02 05:37:41 -04:00
2026-07-15 21:13:21 -04:00
2026-07-07 02:53:25 -04:00
2026-07-17 14:25:08 -04:00
2026-07-13 13:40:38 -04:00
2026-07-09 19:08:28 -04:00
2026-07-08 00:37:54 -04:00
2026-07-09 09:25:08 -04:00
2026-07-07 09:14:29 -04:00
2026-07-05 20:16:04 -04:00
2026-07-13 17:37:13 -04:00
2026-07-08 11:13:43 -04:00
2026-07-08 22:22:34 -04:00
2026-07-07 09:19:33 -04:00
2026-07-07 09:23:50 -04:00
2026-07-07 05:42:08 -04:00
2026-07-07 05:12:01 -04:00
2026-07-07 05:27:24 -04:00
2026-07-08 03:33:31 -04:00
2026-07-07 05:33:12 -04:00
2026-07-07 05:39:43 -04:00
2026-07-07 05:13:30 -04:00
2026-07-07 05:08:53 -04:00
2026-07-07 17:20:01 -04:00
2026-07-07 05:31:24 -04:00
2026-07-09 17:31:14 -04:00
2026-07-07 10:24:54 -04:00
2026-07-07 09:08:38 -04:00
2026-07-07 05:44:18 -04:00
2026-07-07 13:09:58 -04:00
2026-07-07 11:22:00 -04:00
2026-07-07 05:19:22 -04:00
2026-07-07 05:28:19 -04:00
2026-07-07 05:26:37 -04:00
2026-07-06 11:42:14 -04:00
2026-07-15 21:13:21 -04:00
2026-07-15 21:13:21 -04:00
2026-07-11 19:49:16 -04:00
2026-07-07 17:44:22 -04:00
2026-07-15 21:13:21 -04:00
2026-07-12 02:35:47 -04:00
2026-07-09 17:19:29 -04:00
2026-07-10 13:05:27 -04:00
2026-07-06 14:52:12 -04:00
2026-07-11 20:07:40 -04:00
2026-07-11 20:07:40 -04:00
2026-07-16 14:58:43 -05:00
2026-07-08 02:22:54 -04:00
2026-07-17 14:25:08 -04:00
2026-07-08 03:14:32 -04:00
2026-07-13 13:40:38 -04:00
2026-07-07 00:28:32 -04:00
2026-07-07 00:17:26 -04:00
2026-07-16 18:38:17 -04:00
2026-07-13 02:29:46 -04:00
2026-07-08 03:46:25 -04:00
2026-07-07 00:22:28 -04:00
2026-07-07 12:53:55 -04:00
2026-07-07 15:20:47 -04:00
2026-07-09 11:59:23 -04:00
2026-07-09 11:50:40 -04:00
2026-07-07 15:34:39 -04:00
2026-07-07 15:29:56 -04:00
2026-07-09 11:59:23 -04:00
2026-07-07 14:44:27 -04:00
2026-07-07 14:53:16 -04:00
2026-07-09 11:59:23 -04:00
2026-07-09 00:04:11 -04:00
2026-07-09 11:50:40 -04:00
2026-07-07 15:26:22 -04:00
2026-07-06 01:36:10 -04:00
2026-07-06 14:44:41 -04:00
2026-07-15 21:13:21 -04:00
2026-07-11 19:49:16 -04:00
2026-07-07 05:09:44 -04:00
2026-07-08 11:15:55 -04:00
2026-07-07 17:30:35 -04:00