fix: accept reviewer lease preflight transition (Closes #763)
This commit is contained in:
@@ -432,6 +432,36 @@ TASK_CAPABILITY_MAP: dict[str, dict[str, str]] = {
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
# A reviewer lease is the first mutation in the canonical ``review_pr``
|
||||
# workflow, so the already-resolved review capability is valid for that one
|
||||
# narrower transition. Keep this directed and explicit: lease acquisition
|
||||
# does not authorize a review verdict, and reviewer proof never authorizes a
|
||||
# merger lease (#763).
|
||||
_PREFLIGHT_TASK_TRANSITIONS = frozenset({
|
||||
("review_pr", "acquire_reviewer_pr_lease"),
|
||||
})
|
||||
|
||||
|
||||
def _canonical_preflight_task(task: str | None) -> str:
|
||||
"""Normalize only declared ``gitea_`` aliases for preflight comparison."""
|
||||
value = (task or "").strip()
|
||||
if value.startswith("gitea_") and value[6:] in TASK_CAPABILITY_MAP:
|
||||
return value[6:]
|
||||
return value
|
||||
|
||||
|
||||
def preflight_task_matches(
|
||||
resolved_task: str | None,
|
||||
mutation_task: str | None,
|
||||
) -> bool:
|
||||
"""Return whether capability proof authorizes this mutation transition."""
|
||||
resolved = _canonical_preflight_task(resolved_task)
|
||||
mutation = _canonical_preflight_task(mutation_task)
|
||||
if not resolved or not mutation:
|
||||
return False
|
||||
return resolved == mutation or (resolved, mutation) in _PREFLIGHT_TASK_TRANSITIONS
|
||||
|
||||
# Issue-mutating MCP tools and their resolver task keys.
|
||||
ISSUE_MUTATION_TOOL_TASKS: dict[str, str] = {
|
||||
"gitea_create_issue": "create_issue",
|
||||
|
||||
Reference in New Issue
Block a user