feat(review-workflow): add repo-name disambiguation and complete-inventory proofs (#184)
This commit is contained in:
@@ -18,6 +18,54 @@ import re
|
||||
|
||||
_FULL_SHA = re.compile(r"^[0-9a-f]{40}$")
|
||||
|
||||
|
||||
# Repo name disambiguation rules for blind PR queue review.
|
||||
# User phrases referencing the "MCP Gitea tool" (or similar) must resolve to
|
||||
# Gitea-Tools repo, not be confused with mcp-control-plane.
|
||||
# If ambiguous (e.g. just "open PRs"), check both configured repos.
|
||||
REPO_ALIASES = {
|
||||
"gitea-tools": "Scaled-Tech-Consulting/Gitea-Tools",
|
||||
"gitea tool": "Scaled-Tech-Consulting/Gitea-Tools",
|
||||
"mcp gitea tool": "Scaled-Tech-Consulting/Gitea-Tools",
|
||||
"gitea mcp tool": "Scaled-Tech-Consulting/Gitea-Tools",
|
||||
"gitea-tools repo": "Scaled-Tech-Consulting/Gitea-Tools",
|
||||
"mcp-control-plane": "Scaled-Tech-Consulting/mcp-control-plane",
|
||||
"mcp control plane": "Scaled-Tech-Consulting/mcp-control-plane",
|
||||
}
|
||||
|
||||
|
||||
def resolve_repos_from_user_reference(
|
||||
reference: str, configured: list[str] | None = None
|
||||
) -> list[str]:
|
||||
"""Resolve a user reference string to the list of target repos to inventory.
|
||||
|
||||
- Exact aliases for Gitea-Tools map only to Gitea-Tools.
|
||||
- mcp-control-plane aliases map only to it.
|
||||
- Empty, ambiguous, or general "open PRs" default to all configured repos
|
||||
(both by default).
|
||||
- Returns subset of configured; never invents new repos.
|
||||
"""
|
||||
if configured is None:
|
||||
configured = [
|
||||
"Scaled-Tech-Consulting/Gitea-Tools",
|
||||
"Scaled-Tech-Consulting/mcp-control-plane",
|
||||
]
|
||||
if not reference or not reference.strip():
|
||||
return list(configured)
|
||||
|
||||
ref_lower = reference.lower()
|
||||
matched = []
|
||||
for alias, full_name in REPO_ALIASES.items():
|
||||
if alias in ref_lower:
|
||||
if full_name not in matched:
|
||||
matched.append(full_name)
|
||||
if matched:
|
||||
# return only the matched ones that are in configured, preserving order
|
||||
return [r for r in configured if r in matched]
|
||||
# no specific alias match → check all (complete inventory required)
|
||||
return list(configured)
|
||||
|
||||
|
||||
SAFE_NEXT_ACTION_UNKNOWN_CONTAMINATION = (
|
||||
"evidence missing: report contamination as unknown and "
|
||||
"choose another PR or stop"
|
||||
|
||||
Reference in New Issue
Block a user