feat(roles): add the read-only pr_reviewer role end-to-end

A global, read-only PR reviewer agent (pr-reviewer-1) that reviews inbound
external/fork PRs and posts one change-request. Wired end-to-end:

- identity: Role.PR_REVIEWER + agent + ROLE_LEVEL (QA-peer) + REVIEWER_ROLES
- lifecycle: CLAIM_RULES + ROLE_TEAM_RULES + a dedicated claim_pr_review /
  post_pr_review verb pair (distinct from QA's) + the pr_review_done action and
  its in_progress->completed transition; give_me_work / i_am_idle gain the role
- role_config: a read-only RoleConfig (allows_write=False)
- journaling: ALL_CELLS read tier so it can read internal intent like QA
- tracing: post_pr_review requires a learning entry; claim_pr_review is waived
- seeds presentation + factory prompt layer + builtin tools + the agentrole
  enum migration (037) + regenerated verb/lifecycle artifacts

Read-only at /app like QA/auditor; default-off — nothing dispatches review work
until external_pr_enabled. Foundation + role-config + enum suites green; ruff +
mypy clean; orchestrator boots.
This commit is contained in:
Renn F
2026-06-16 10:37:06 +02:00
parent beb2287316
commit 5902c0fe38
18 changed files with 294 additions and 4 deletions
+38
View File
@@ -17,6 +17,9 @@
"main_pm": [
"pending"
],
"pr_reviewer": [
"pending"
],
"product_owner": [],
"qa": [
"awaiting_qa"
@@ -33,6 +36,19 @@
"pre_side_effects": [],
"side_effects": []
},
{
"allowed_roles": [
"pr_reviewer"
],
"composes": [
"claim",
"start"
],
"description": "Claim an inbound external-PR review task and start work. pending -> claimed -> in_progress.",
"name": "claim_pr_review",
"pre_side_effects": [],
"side_effects": []
},
{
"allowed_roles": [
"qa"
@@ -114,6 +130,7 @@
"developer",
"documenter",
"main_pm",
"pr_reviewer",
"qa"
],
"composes": [],
@@ -157,6 +174,7 @@
"documenter",
"head_marketing",
"main_pm",
"pr_reviewer",
"product_owner",
"prompter",
"qa",
@@ -234,6 +252,18 @@
"pre_side_effects": [],
"side_effects": []
},
{
"allowed_roles": [
"pr_reviewer"
],
"composes": [
"pr_review_done"
],
"description": "Post one complete change-request to the external PR and finish the review task. in_progress -> completed.",
"name": "post_pr_review",
"pre_side_effects": [],
"side_effects": []
},
{
"allowed_roles": [
"cell_pm"
@@ -528,6 +558,14 @@
"source": "in_progress",
"target": "cancelled"
},
{
"action": "pr_review_done",
"roles": [
"pr_reviewer"
],
"source": "in_progress",
"target": "completed"
},
{
"action": "pause",
"roles": null,