|
My Project
|
This file covers pull-request review behavior and comment style. Detailed code ownership, style, build, and testing rules live in AGENTS.md files and the project docs linked from the root guide.
Good reviews are direct, specific, and short. The team's comments are almost always 1–3 lines. Reviewers commonly ask a question rather than making a demand — "can we ...?", "why not ...?" — which signals a soft suggestion versus a hard requirement.
Large PRs slow down the entire team. Enforce these hard limits:
Derive required test coverage first from the PR's stated goal, then from the behavioral risks introduced by the implementation. Avoid asking for tests that cover incidental implementation details without a plausible regression risk.
Apply the AGENTS.md discovery rule from the root guide for changed paths, and read any style docs relevant to the diff before posting findings. Check whether changed folders need AGENTS.md updates: add guidance for new recurring patterns, remove stale local guidance, and do not leave ownership gaps.
Review by risk, in order:
Focused checks:
When a finding depends on a code rule, cite the rule from the relevant AGENTS.md, docs/CodeStyle.md, docs/LoggingStyle.md, or docs/OptimizationStyle.md instead of restating broad style guidance.
| Situation | Phrasing pattern | Example |
|---|---|---|
| Hard requirement | Direct statement | blocker: this will crash on NULL |
| Standard request | pls + imperative | pls define all vars at the top of the func |
| Soft suggestion | maybe / can we | maybe we could remove this wrapper? |
| Opinion | IMO | IMO it can be uint8_t and we limit to 256 channels |
| Nit | minor: prefix | minor: pls add blank line before |
| Question about intent | Direct question | does it break wire compatibility? / why is it needed? |
| Alternatives | why not / instead | instead of X, can we use Y? |
| Code suggestion | Inline block | ``suggestion ... `` |
Severity levels:
| Prefix | Meaning |
|---|---|
| blocker: | Must fix before merge: crash, data corruption, security hole, broken CI |
| (none) | Should fix; warrants discussion if there is a good reason not to |
| minor: | Nice to fix, will not block merge |
Severity formatting: Do not use markdown severity headings, emoji labels, [P2], [important], or uppercase labels such as MINOR/BLOCKER. If severity is needed, use only the inline prefixes from the table: blocker: or minor:.
Blocker bar is high. Config naming debates, default value choices, and documentation gaps are never blockers — they go in the no-prefix or minor: bucket.
Length: 1–2 sentences per comment. Use a longer comment only when the issue is complicated and non-obvious.
Language: Use simple English — many contributors are non-native speakers.
Comment order: Start with the requested change, then briefly explain why it is needed when the reason is not obvious. Example: pls add $(UCX_LT_RELEASE) here as well; otherwise libucs_signal stays outside the suffix scheme.
Comment scope: One comment per distinct issue; do not bundle unrelated points.
Comment placement: Inline comments for file-level issues; general PR comment only for PR-level concerns.
Review body: Avoid generic review-summary comments such as Code Review, finding counts, severity counts, or N findings posted inline. Leave the review body empty when inline comments are self-contained. Use a top-level PR comment only for a real PR-level concern.
Code suggestions: Prefer a GitHub suggestion block ( ``suggestion ... ``` `) when the requested change is obvious and mechanical. If needed, add one short sentence after the suggestion explaining why the change is needed. For anything requiring judgment, describe the problem and let the author propose the fix.