Skip to content

ci(ai-review): port Argus PR reviewer from adcp main#762

Open
bokelley wants to merge 1 commit into
mainfrom
bokelley/pull-argus-code-reviewer
Open

ci(ai-review): port Argus PR reviewer from adcp main#762
bokelley wants to merge 1 commit into
mainfrom
bokelley/pull-argus-code-reviewer

Conversation

@bokelley
Copy link
Copy Markdown
Contributor

Summary

Ports the Argus AI PR reviewer from adcontextprotocol/adcp to this repo. Two files:

  • .github/workflows/ai-review.yml — the workflow (App-token mint, skip-on-trivial-resync, claude-code-action, posted-review verification, failure-comment fallback).
  • .github/ai-review/expert-adcp-reviewer.md — the Argus prompt (voice + format unchanged; MUST FIX / coverage / triage adapted for this repo).

Uses IPR_APP_ID / IPR_APP_PRIVATE_KEY (shared with ipr-agreement.yml) plus ANTHROPIC_API_KEY to post reviews as the IPR bot, so they count toward branch protection.

Key adaptations vs upstream

Upstream (adcp main) Ported (adcp-client-python)
Trivial paths: .changeset/*, mintlify-docs/*, static/schemas/cache/*, *.test.ts, package-lock.json docs/*, examples/*, tests/*, test_*.py, *_test.py, src/adcp/types/generated_poc/*, src/adcp/types/_generated.py, CHANGELOG.md, schemas/*, llms.txt
MUST FIX: spec drift on static/schemas/source/** Dropped — schemas are downloaded, not authored
MUST FIX: breaking wire change without major changeset Replaced: breaking public-API change without conventional-commit ! / BREAKING CHANGE: (release-please semver signal)
MUST FIX: missing changeset on wire-touching PR Dropped — repo uses release-please
MUST FIX: oneOf walker regression Replaced: Pydantic discriminated-union regression (drops UnknownFormatAsset-style fallback, narrows additionalProperties, removes discriminator value)
(none) Added: type-system layering breach — non-stable/aliases/_ergonomic modules importing from generated_poc/ or _generated.py, per CLAUDE.md
(none) Added: CI gate regression — disabled tests, blanket # type: ignore, suppressed ruff rule
Coverage: schema-vs-docs coherence audit Replaced with public-API coherence audit (breaking-change vs commit prefix, README/AGENTS.md/SKILL.md drift) and generated-type regeneration audit (confirm regen, not hand-edit)
Domain-expert triggers retargeted to src/adcp/types/** (non-gen), protocols/**, decisioning/**, migrate/**, mypy plugin → python-expert

Voice, sign-off ladder, decision tree, largest-file rule, test-plan-honesty rule, and the verify-posted / failure-comment steps are unchanged.

Test plan

  • CODEOWNERS gate fires on this PR (changes touch .github/workflows/) — @bokelley approval required.
  • After merge, the next non-draft PR triggers AI PR Review (Argus) and Argus posts a review as the IPR bot.
  • Re-pushing a docs-only change to an already-approved PR triggers the Check for skippable re-run step and skips.
  • Failure path: if the action exits without posting, the workflow leaves an ⚠️ Argus review could not complete comment on the PR.

🤖 Generated with Claude Code

Adds the Argus AI PR review workflow plus its prompt, adapted for the
Python SDK's wire surface and toolchain.

Adaptations vs upstream:
- Trivial-paths list retargeted to docs/, examples/, tests/, generated
  types (src/adcp/types/generated_poc/**, _generated.py), schemas/.
- MUST FIX rules dropped: spec drift on static/schemas/source/**,
  missing changeset, oneOf-walker regression — none apply here.
- MUST FIX rules added: breaking public-API change without conventional-
  commit ! / BREAKING CHANGE: (release-please semver signal);
  type-system layering breach (non-stable modules importing from
  generated_poc/ or _generated.py) per CLAUDE.md; Pydantic
  discriminated-union regression (drops UnknownFormatAsset-style
  fallback, narrows additionalProperties, removes discriminator value);
  CI gate regression (disabled tests, blanket # type: ignore).
- Coverage checks: schema-vs-docs audit replaced with public-API
  coherence audit + generated-type regeneration audit.
- Expert triggers retargeted to src/adcp/types, src/adcp/protocols,
  src/adcp/decisioning, src/adcp/migrate, mypy plugin → python-expert.

Uses IPR_APP_ID / IPR_APP_PRIVATE_KEY (shared with ipr-agreement.yml)
to mint the App token so reviews count toward branch protection.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant