|
| 1 | +--- |
| 2 | +title: 003 contribution governance |
| 3 | +--- |
| 4 | + |
| 5 | +# ADR-003: Contribution governance for async agents and humans |
| 6 | + |
| 7 | +**Status:** accepted |
| 8 | +**Date:** 2026-05-19 |
| 9 | + |
| 10 | +## Context |
| 11 | + |
| 12 | +ABCA is designed for multiple autonomous agents to work concurrently on the codebase. Without explicit governance rules, agents duplicate effort, start unapproved work, ignore priority order, miss predecessors, and create merge conflicts that require human intervention to untangle. |
| 13 | + |
| 14 | +The rules below define how any contributor — human or AI — picks up, owns, and delivers work. They prevent priority inversion, wasted rework, unauthorized scope creep, and silent conflicts at scale. |
| 15 | + |
| 16 | +## Decision |
| 17 | + |
| 18 | +### No PRs without an Issue |
| 19 | + |
| 20 | +Every PR references an issue. The issue provides rationale, sufficient context for the solution to be obvious, and verifiable acceptance criteria. |
| 21 | + |
| 22 | +### Issue quality bar |
| 23 | + |
| 24 | +An issue is "ready for work" when the body, together with its linked context — comments, replies, predecessor issues, related PRs (open and merged), and downstream goals — gives the implementer enough to proceed without ambiguity. The body is the primary directive; comments and threads add solution-space context; predecessors establish environmental architecture; downstream issues inform alignment. |
| 25 | + |
| 26 | +### Roadmap alignment |
| 27 | + |
| 28 | +Issues align to the [product roadmap](https://github.com/aws-samples/sample-autonomous-cloud-coding-agents/blob/main/docs/guides/ROADMAP.md). Issues that do not align require explicit approval from a permitted user. |
| 29 | + |
| 30 | +### Gated approval |
| 31 | + |
| 32 | +Only permitted users can mark an issue `approved` — a GitHub Actions workflow validates that the label applicant is authorized. An issue is not workable until it is both approved and assigned. After approval, the issue is considered scope-frozen: further revisions that change deliverables require re-approval. |
| 33 | + |
| 34 | +### Self-assignment on start |
| 35 | + |
| 36 | +Unassigned means available. On starting work, self-assign. Multiple assignees (>1) require intentionality verification. |
| 37 | + |
| 38 | +### Issue body as primary directive |
| 39 | + |
| 40 | +The issue body provides the primary directive for implementation. Comments, replies, and clarifying answers add context to the solution space. Ideally the body is sufficient, but it need not be the exclusive source — the reviewer for implementation readiness should synthesize comments and replies with the body to surface inconsistencies and resolve ambiguities before commencing work. |
| 41 | + |
| 42 | +Unresolved conflicts are marked explicitly: |
| 43 | +- `**UNRESOLVED:** <question>` — blocks implementation |
| 44 | +- `**DEFERRED:** <question> — tracked in #N` — does not block |
| 45 | + |
| 46 | +### Pre-start review |
| 47 | + |
| 48 | +Before implementation, the assigned contributor must: |
| 49 | + |
| 50 | +**Synthesize context:** Read all comments and replies. Review predecessor issues and PRs (both merged and in-flight). Consider downstream goals and adjacent state (other open PRs, recent merges, dependency changes). Surface inconsistencies between body and thread before proceeding. |
| 51 | + |
| 52 | +**Priority evaluation:** Identify priority (`p0`/`p1`/`p2`). If asked to work a lower-priority item while higher-priority items are unassigned, challenge: "Should I work on #X (p0) instead?" |
| 53 | + |
| 54 | +**Predecessor validation:** If predecessors are incomplete, unassigned, and not in a stacked PR — challenge: "Steps 1-3 are incomplete. Starting step 4 may cause rework." |
| 55 | + |
| 56 | +**Cross-reference audit:** Search open issues for duplicates. Search open PRs (including drafts) for conflicts. Flag overlaps. Check the full dependency graph. Forward-look into downstream actions to ensure alignment. |
| 57 | + |
| 58 | +**Final gate:** If all checks pass, comment "Starting implementation." |
| 59 | + |
| 60 | +### Identity and attribution |
| 61 | + |
| 62 | +Agents use identifiable credentials. The prompting user and acting agent must be distinguishable. PRs include `Co-Authored-By` for AI contributors. |
| 63 | + |
| 64 | +### Work-in-progress discipline |
| 65 | + |
| 66 | +Provide progress signals at checkpoints. If blocked or abandoning, comment and unassign. Do not start multiple issues simultaneously unless explicitly parallelizable or serializable with declared ordering (where context from one directly informs the next). |
| 67 | + |
| 68 | +### Completion and handoff |
| 69 | + |
| 70 | +CI passes before requesting review. After merge, verify acceptance criteria and close. Create follow-up issues for discovered work before closing. |
| 71 | + |
| 72 | +## Consequences |
| 73 | + |
| 74 | +- (+) Prevents duplicate effort — assignment signals ownership |
| 75 | +- (+) Prevents priority inversion — agents challenge low-priority requests |
| 76 | +- (+) Prevents rework — predecessor validation catches out-of-order work |
| 77 | +- (+) Issue body stays current — threads are folded back |
| 78 | +- (+) Cross-reference audit catches duplicates early |
| 79 | +- (-) Pre-start overhead for small tasks |
| 80 | +- (-) Requires discipline to fold threads into body |
| 81 | +- (!) Assumes priority labels exist and are maintained |
| 82 | +- (!) Self-assignment is not atomic — concurrent agents may race; mitigate by verifying assignment after claiming via refresh |
| 83 | + |
| 84 | +## References |
| 85 | + |
| 86 | +- Issue #134 — full RFC with open questions and automation requirements |
| 87 | +- Roadmap: Scale and collaboration (Agent swarm, Multi-user and teams) |
| 88 | +- ADR-001 — delivery methodology referenced by completion rules |
0 commit comments