Wire rejection_reason into review records + fix ingestion domain routing
Some checks are pending
CI / lint-and-test (push) Waiting to run
Some checks are pending
CI / lint-and-test (push) Waiting to run
rejection_reason was always NULL in review_records — now populated with comma-joined issue tags (near_duplicate, frontmatter_schema, etc.) at both rejection call sites. Also fixes stale reviewer_model="gpt-4o" hardcoding to use config.EVAL_DOMAIN_MODEL (currently Gemini Flash). Ingestion branches (ingestion/futardio-*, ingestion/metadao-*) now resolve to internet-finance domain instead of falling through to "general". Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
7a753da68b
commit
b7242d2206
2 changed files with 17 additions and 2 deletions
|
|
@ -37,6 +37,11 @@ _AGENT_PRIMARY_DOMAIN: dict[str, str] = {
|
||||||
"leo": "grand-strategy",
|
"leo": "grand-strategy",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_INGESTION_SOURCE_DOMAIN: dict[str, str] = {
|
||||||
|
"futardio": "internet-finance",
|
||||||
|
"metadao": "internet-finance",
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
def agent_for_domain(domain: str | None) -> str:
|
def agent_for_domain(domain: str | None) -> str:
|
||||||
"""Get the reviewing agent for a domain. Falls back to Leo."""
|
"""Get the reviewing agent for a domain. Falls back to Leo."""
|
||||||
|
|
@ -82,6 +87,14 @@ def detect_domain_from_branch(branch: str) -> str | None:
|
||||||
"""Extract domain from branch name like 'rio/claims-futarchy' → 'internet-finance'.
|
"""Extract domain from branch name like 'rio/claims-futarchy' → 'internet-finance'.
|
||||||
|
|
||||||
Uses agent prefix → primary domain mapping for pipeline branches.
|
Uses agent prefix → primary domain mapping for pipeline branches.
|
||||||
|
For ingestion branches, checks the rest of the name for source-type hints.
|
||||||
"""
|
"""
|
||||||
prefix = branch.split("/")[0].lower() if "/" in branch else ""
|
prefix = branch.split("/")[0].lower() if "/" in branch else ""
|
||||||
return _AGENT_PRIMARY_DOMAIN.get(prefix)
|
if prefix in _AGENT_PRIMARY_DOMAIN:
|
||||||
|
return _AGENT_PRIMARY_DOMAIN[prefix]
|
||||||
|
if prefix == "ingestion":
|
||||||
|
rest = branch.split("/", 1)[1].lower() if "/" in branch else ""
|
||||||
|
for source_key, domain in _INGESTION_SOURCE_DOMAIN.items():
|
||||||
|
if source_key in rest:
|
||||||
|
return domain
|
||||||
|
return None
|
||||||
|
|
|
||||||
|
|
@ -261,7 +261,8 @@ async def evaluate_pr(conn, pr_number: int, tier: str = None) -> dict:
|
||||||
)
|
)
|
||||||
db.record_review(
|
db.record_review(
|
||||||
conn, pr_number, "rejected",
|
conn, pr_number, "rejected",
|
||||||
domain=domain, agent=agent, reviewer=agent, reviewer_model="gpt-4o",
|
domain=domain, agent=agent, reviewer=agent, reviewer_model=config.EVAL_DOMAIN_MODEL,
|
||||||
|
rejection_reason=",".join(domain_issues) if domain_issues else None,
|
||||||
notes=(domain_review or "")[:4000],
|
notes=(domain_review or "")[:4000],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -398,6 +399,7 @@ async def evaluate_pr(conn, pr_number: int, tier: str = None) -> dict:
|
||||||
conn, pr_number, "approved-with-changes",
|
conn, pr_number, "approved-with-changes",
|
||||||
domain=domain, agent=agent, reviewer="leo",
|
domain=domain, agent=agent, reviewer="leo",
|
||||||
reviewer_model="sonnet" if tier == "STANDARD" else "opus",
|
reviewer_model="sonnet" if tier == "STANDARD" else "opus",
|
||||||
|
rejection_reason=",".join(all_issues) if all_issues else None,
|
||||||
notes=(leo_review or domain_review or "")[:4000],
|
notes=(leo_review or domain_review or "")[:4000],
|
||||||
)
|
)
|
||||||
logger.info(
|
logger.info(
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue