Repository navigation
docs: add a review guide and a pre-PR self-review checklist - #206
Conversation
REVIEW.md says what a defect looks like in dokimi, how to raise a finding, and how to keep review rounds short. AGENTS.md gains a self-review section to run before opening a PR and a soft size limit. The PR template asks how to revert the change and whether it was self-reviewed. Signed-off-by: vchamarthi <123653452+vchamarthi@users.noreply.github.com>
Changelog fragments are reviewed for accuracy, findings on unchanged code are noted as pre-existing, a finding is raised again when its fix did not hold, re-review covers callers of the changed code, and threads close with a commit or a reason. The self-review checklist reverts mutation checks, keeps sibling fixes within the PR's scope, and asks to say what could not be run. The soft PR size limit is removed. .github/copilot-instructions.md points Copilot review at REVIEW.md. Signed-off-by: vchamarthi <123653452+vchamarthi@users.noreply.github.com>
There was a problem hiding this comment.
🟢 Approval recommended
The four documentation changes are consistent with the stated scope, with no unresolved defects identified.
No open issues 🎉
What changed in this PR
Adds contributor and reviewer guidance to catch defects before PR submission and reduce repeated review rounds. The changes affect workflow documentation only; application code, CI, and merge checks are unchanged.
Changes:
- Defines actionable findings, review rounds, and thread-resolution expectations.
- Adds pre-PR self-review checks for test effectiveness, related bug sites, bad inputs, and documentation accuracy.
- Connects Copilot to the guidance and adds rollback and self-review prompts to the PR template.
| File | Description |
|---|---|
REVIEW.md |
Defines defects, finding expectations, and review follow-up. |
AGENTS.md |
Adds the pre-PR self-review checklist. |
.github/pull_request_template.md |
Adds a Revert section and self-review checkbox. |
.github/copilot-instructions.md |
Points Copilot to review and coding guidance. |
Review effort: Balanced
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #206 +/- ##
==========================================
+ Coverage 91.85% 92.81% +0.96%
==========================================
Files 223 241 +18
Lines 27712 30516 +2804
Branches 4563 5039 +476
==========================================
+ Hits 25455 28324 +2869
+ Misses 1600 1487 -113
- Partials 657 705 +48 🚀 New features to boost your workflow:
|
|
I ran dokimi's own repo eval on this change, with and without the PR. It is safe to merge as text, but at this sample size it doesn't change what agents do, and agents never open Static ( Agent run (
Suggestions:
Caveats: n=3, one model, guidance ported onto an older base. A stronger test would re-pin the tasks to a base that has AGENTS.md and add a task with a test that can't fail. Runs are available if useful. |
antonwolfy
left a comment
There was a problem hiding this comment.
LGTM. The guide's defect list matches the repo's real failure classes, and every path, command and CI gate it names exists in the tree. Two nits inline.
What I ran, on a Linux review host at a54f76c:
make ci-local: 26 passed, 7 skipped, 3 failed. The failures are the gitleaks tool download (HTTP 504), the gitleaks scan that depends on it, andpip-audit; none touch files in this PR. A manualgitleaks detectoverorigin/main..HEADfound no leaks. Ruff, mypy, deptry, bandit and 7,610 tests pass.- Added lines are ASCII (grep for non-ASCII bytes on the diff returns nothing). No changelog fragment is needed: no path under
dokimi/dokimi/,dokimi/data/orpyproject.tomlchanges.
Checked, no issues
- Paths and gates:
dokimi/changelog.d/,make ci-local,.github/.licenserc.yamland the CI gates named inREVIEW.mdall exist and matchAGENTS.md. - License headers:
REVIEW.mdandcopilot-instructions.mdcarry the SPDX header;AGENTS.mdand the PR template are exempt in.licenserc.yaml.
@napetrov's question on whether REVIEW.md should reach coding agents (it is only read by review bots) and on the three-nit cap for human reviewers waits for the author.
…EW.md in doc ref test Signed-off-by: vchamarthi <123653452+vchamarthi@users.noreply.github.com>
c9f3431 to
97676db
Compare
napetrov
left a comment
There was a problem hiding this comment.
Re-review at 97676db. Nothing to fix: no new findings, and none still open.
Earlier threads: all three of antonwolfy's inline nits (repeat vs count rule, REVIEW.md not scanned, nit definition) are addressed in d925913 and read correctly at head. My earlier eval comment (no measured lift at n=3, REVIEW.md not opened by agents) still stands as context, not as a blocker; this is a text-only, one-commit revert.
What I ran at 97676db
uv run pytest tests/test_docs_code_refs.py: 41 passed (one new case,[REVIEW.md]).- Mutation check on the new scan: appending a bogus path and
maketarget to REVIEW.md makestest_doc_code_references_resolve[REVIEW.md]fail; reverted, passes again. So the added line is a real check. - CI at head: 16 success, 2 skipped. Mergeable.
Fixes pushed: none.
antonwolfy
left a comment
There was a problem hiding this comment.
LGTM. All three nits from my earlier review are fixed at 97676db, and the new text reads correctly. Nothing new to fix.
What I ran, on a Linux review host at 97676db:
make ci-local: 28 passed, 1 failed, 7 skipped. The failure ispip-audit:filelock3.32.7 has three new advisories, fixed in 4.2.1.mainpins the same version and this PR touches no lock file, so it is not from this change. Ruff, mypy, deptry, bandit, gitleaks, the mkdocs build and 7,611 tests pass.tests/test_docs_code_refs.py: 41 passed, including the new[REVIEW.md]case. Changingdokimi/changelog.d/todokimi/changelogs.d/inREVIEW.mdmakes it fail, so the added scan is a real check.
Checked, no issues
- Earlier nits: the repeat and count rules no longer combine into a false "nothing to fix" (
REVIEW.md:39-42). The nit definition is atREVIEW.md:34-36.REVIEW.mdis scanned. - Claims: the ruff statement (E501, quotes and import order not selected) and the growth-baseline rule match
pyproject.tomlandAGENTS.md. The CI gates,make ci-localand.github/.licenserc.yamlexemptions named in the new text exist.
@napetrov's question on whether REVIEW.md should reach coding agents and on the three-nit cap for human reviewers waits for the author.
Signed-off-by: vchamarthi <123653452+vchamarthi@users.noreply.github.com>
|
@napetrov @antonwolfy suggestions applied at eb77363, ready for another review.
|
antonwolfy
left a comment
There was a problem hiding this comment.
LGTM. The two changes since 97676db, the new reader note and the reworded nit bullet, are correct, and nothing new needs fixing.
What I ran, on a Linux review host at eb77363:
make ci-local: 28 passed, 1 failed, 7 skipped. The failure ispip-audit: three known advisories infilelock3.32.7. This PR touches no lock file, so it is not from this change. Ruff, mypy, deptry, bandit, the build and 7,611 tests pass.tests/test_docs_code_refs.py: 41 passed with[REVIEW.md]in the scan. Renamingdokimi/changelog.d/todokimi/changelogs.d/inREVIEW.mdmakes it fail withmissing path, and the unmutated file is clean. The lines added since 97676db introduce no false positive.
Checked, no issues
- Reader note (
REVIEW.md:12-14):.github/copilot-instructions.mdpoints review atREVIEW.mdand code writing atAGENTS.md, andAGENTS.mdhas the "Before opening a PR" section it names. This takes @napetrov's first point. - Nit rule (
REVIEW.md:36-41): "nits only after the must-fix findings, at most three" does not conflict with the nit definition or the repeat and count rules. This takes @napetrov's third point. - Ruff and growth claims:
pyproject.tomlselects no E501, Q or I, and the growth-baseline rule matchesAGENTS.md. - Repo rules: SPDX headers are present or exempt in
.github/.licenserc.yaml, there are no added non-ASCII bytes, no generated artifacts, no nav change and no changelog fragment is needed.
@napetrov's second point (docstring exit codes and None/Windows-path inputs as make ci-local gates) is code and waits for the author's follow-up PR.
Summary
Adds a review guide and a pre-PR self-review checklist, so that most findings are caught before a PR is opened and each review round closes more of them. Text only; no code, CI or gate changes.
Why: what the data shows
The figures below are self-measured and keyword-matched, not independently audited.
REVIEW.mdis read by review bots; coding agents readAGENTS.md.PR history of intel/dokimi (GitHub API, all 185 PRs, 13 to 23 Oct 2026):
Recurring themes in thread openers (keyword match, overlapping): tests that cannot fail 680, nits 387, docs or docstrings that disagree with code 246, timing or flakiness 161, error handling 121, changelog 101, exit codes 88, Windows paths 35. Several are the same bug class found one command at a time, for example the unreadable-input exit code across #189 to #194, a docstring claiming exit 1 where the code exits 2 (#190),
Nonefromos.cpu_count()(#112), and backslash paths in generated config (#116).One week of agent review on this repo (self-measured audit of 301 review points on 65 PRs, 14 to 20 Oct 2026):
main, a mutation check), not from reading it.How the Claude Code team runs review (Solving code review at Anthropic):
REVIEW.mdper repo: say what failure looks like there, cap nits, require file and line as evidence, open with a count and say plainly when there is nothing to fix.Changes
REVIEW.md: defects defined for this repo (wrong number, verdict or exit code; a test that cannot fail; docs that say what the code does not; schema drift; Windows orNonebehaviour). Findings name file, line and a breaking input, name the bug class and its other sites, are pushed as fix plus test when short, are marked must-fix or nit (nits only after must-fix findings, three at most), and are not repeated unless the fix did not hold. Bugs in unchanged code are noted once as pre-existing. Later rounds review the new diff and its callers and re-run the original input. After three rounds of must-fix findings, agree the approach in the thread. Threads close with the fixing commit or a reason. Repeated comments become a test, amake ci-localcheck or anAGENTS.mdline.AGENTS.md, "Before opening a PR": mutate the code under each test of changed behaviour and revert; fix sibling sites in scope and list the rest; run bad inputs where they apply and say what was not run; check the title, docs and changelog against the code; re-review your own fix commits..github/copilot-instructions.md: Copilot review followsREVIEW.md.How this helps later PRs
AGENTS.mdNothing here adds a required check or blocks a merge.
Risk
Two-way door: text only, reverted in one commit. Blast radius: contributor and reviewer workflow. Agents that load
AGENTS.mdorREVIEW.mdchange how they self-review and comment; CI, the package and stored records are unaffected.Testing
pytest tests/test_docs_code_refs.py: 40 passed (paths and commands named inAGENTS.mdresolve).Revert
git revertof this PR. Nothing is left behind.Checklist
pytestpasses (no code change; doc reference test run)ruff,mypy, and schema checks pass (N/A, no code)AGENTS.md.github/.licenserc.yaml)