Skip to content

feat(community): v2 — the Ears hear external PRs + review requests#126

Merged
Jammy2211 merged 1 commit into
mainfrom
feature/community-ears-v2-prs
Jul 16, 2026
Merged

feat(community): v2 — the Ears hear external PRs + review requests#126
Jammy2211 merged 1 commit into
mainfrom
feature/community-ears-v2-prs

Conversation

@Jammy2211

Copy link
Copy Markdown
Contributor

Summary

v2 of the community conductor (the Ears, #119 / #122): the scan and triage surfaces now hear pull requests — external contributors' PRs and PRs with review requested — closing the follow-up staged in the conductor's AGENTS.md at birth. Same principles: read-only, stdlib-only, never posts; every outward reply/review is drafted in the /community session and human-gated. Closes #125.

API Changes

Brain CLI surface only; no Python library API is touched.

  • community scan additionally returns open_external_prs and awaiting_review (+ counts); external PRs join the awaiting-response ranking.
  • community triage accepts PR refs (incl. /pull/ URLs) and returns type + a pr change-shape block; PR routes name a human review, never /start_dev_for_user.
  • New env knob COMMUNITY_SEARCH_PAUSE (default 2s) between search calls.
    See full details below.

Test Plan

  • python3 -m pytest tests/ — 77 passed (8 community contract tests; 2 new: PR scan + review-requested leg, PR triage change-shape block)
  • Live: bin/pyauto-brain community — issue + external-PR legs pass against real GitHub (0 open external PRs is correct); review-requested legs degraded honestly under the day's account-level secondary throttle, with the now-distinct review-requested degraded label
  • bash bin/check_skill_line_counts.sh — 42 skills within budget
  • Post-merge: bash bin/install.sh from the canonical checkout
Full API Changes (for automation & release notes)

Added

  • CommunityScan.open_external_prs — open PRs authored by non-self humans (bot-filtered), same entry shape as issues plus type: "pr"; merged into awaiting_response ranking via the same last-actor detection (PR conversation comments; review-thread comments are a recorded limit).
  • CommunityScan.awaiting_review — open PRs with review-requested:<self> (any author).
  • CommunityScan.counts.open_external_prs / counts.awaiting_review.
  • CommunityTriage.type (issue | pr) and CommunityTriage.pr{draft, changed_files, additions, deletions, mergeable_state, requested_reviewers, base, head} via repos/<o>/<r>/pulls/<n>; null for issues (and on an unreadable pulls endpoint — degrade, never invent).
  • parse accepts https://github.com/<o>/<r>/pull/<n> refs.
  • Env: COMMUNITY_SEARCH_PAUSE (seconds between search-API calls, default 2; hermetic tests set 0).

Changed Behaviour

  • scan runs three search passes per qualifier group (issues, external PRs, review-requested) — up to six calls; failures degrade per-pass with distinct labels.
  • Triage route for a PR names human review with session-drafted comments explicitly and never routes a community PR through the ship-gate review faculty (boundary recorded in the conductor AGENTS.md).
  • All-entry shape gains type; scan human output prefixes PRs with PR and lists review requests under Review requested:.

Migration

  • Additive for consumers of the human output; --json consumers should expect the new keys (type, pr, open_external_prs, awaiting_review, two new counts).

Ship gate (recorded)

Heart RED at ship time — the same six unrelated organism-scope reasons acked throughout 2026-07-16 (PyAutoLens uncommitted source, stale 2026-07-09 workspace validation, 58 stale parked scripts, tenant-firewall manifest drift — now ×4 from the day's merges, install verification not run, release validation stale). Human acknowledged and authorized PR-open and merge.

Generated by the PyAutoLabs agent workflow.

🤖 Generated with Claude Code

)

The community scan and triage surfaces now cover pull requests, closing the
staged v1 follow-up (#119 / #122):

- scan: two new legs per qualifier group — open PRs authored by non-self
  humans (bot-filtered, same awaiting-response detection, merged into the
  ranked waiting list) and open PRs with review requested from a self login
  (any author). Surface gains open_external_prs + awaiting_review + counts;
  degraded labels now distinguish the review-requested pass.
- triage: accepts PR refs (incl. /pull/ URLs); a PR carries the change-shape
  block (draft, changed files, +/-, requested reviewers, mergeable state,
  head -> base) and routes to *human review with session-drafted comments* —
  never the ship-gate review faculty.
- rate-limit hardening: COMMUNITY_SEARCH_PAUSE (default 2s) between the up-to
  six search calls — GitHub's secondary limit trips on bursts (found live).
- docs: conductor AGENTS.md (modes, capability audit, v1-scope note retired,
  review-thread-comments limit recorded), /community skill body, dispatcher
  description; command surface regenerated.
- tests: 8 hermetic contract tests (2 new: PR scan + review-requested leg,
  PR triage block); no-mutation proof covers the new endpoints.

Tests: 77 passed. Live-verified: issue + external-PR legs pass against real
GitHub; review-requested legs degraded honestly under the account throttle.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@Jammy2211
Jammy2211 merged commit 2a75453 into main Jul 16, 2026
@Jammy2211
Jammy2211 deleted the feature/community-ears-v2-prs branch July 16, 2026 14:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: community conductor v2 — external PRs + review requests

1 participant