docs(AGENTS): capture recurring PR review feedback as conventions - #487
Conversation
Six rules that reviewers have had to repeat across recent PRs, so they are followed the first time instead of in a review round-trip: - Supported ClickHouse versions floor at 25.8 LTS (matches the CI matrix) - Don't tax a common path for a niche case; where benchmarks belong - Integration tests over mocks; don't restate TestCases.cs coverage - No redundant #if NET5/6_0_OR_GREATER guards; comments must be verified - Changelog and release-notes entries stay short
There was a problem hiding this comment.
Pull request overview
This PR updates AGENTS.md (the repository’s development guide) to codify several recurring review points as explicit conventions, aiming to reduce review round-trips by making expectations discoverable up-front.
Changes:
- Document the supported ClickHouse version floor (25.8 LTS+) and explicitly de-scope fixes/workarounds for older server behaviors.
- Add clearer performance guidance (avoid taxing hot paths for niche cases; prefer maintainer-run
/benchmark-compareover committing benchmark additions). - Expand testing/style guidance (integration-test rationale, avoid duplicating existing type coverage, avoid redundant
NET6_0_OR_GREATER-style guards, and avoid over-claiming in comments/changelog entries).
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
|
Pushed The two review comments behind it (#480 "I don't think the new test cases cover anything that pre-existing tests don't", #482 "check for duplicates, probably in TestCases.cs") were both really about control cases: tests that pin behavior the change never touched, added as a safety net. Those are exactly what Self-audit while writing it: my own open #484 has one — |
Performance-related changes should be measured with BenchmarkDotNet. The rule is about what ships, not whether to benchmark: an ad-hoc benchmark written to answer one question can stay out of the PR, but one worth re-running later belongs in the repo.
|
Pushed I'd written "don't commit a new benchmark file", but that conflates two things. Performance-related changes should be measured with BenchmarkDotNet — the ask on #481/#482 was about what ships, not whether to benchmark. And #445 was the opposite ask ("can you do a quick benchmark?"), so a blanket prohibition would have contradicted it. Now: measure perf changes with BenchmarkDotNet and put the numbers in the PR description; an ad-hoc benchmark written to answer one question doesn't need to ship, but one worth re-running later belongs in the repo. |
Review feedback, and now also the house rules AGENTS.md picked up in #487: comments stay short and assert only what has been verified, and changelog entries stay to the user-visible change with the detail left to the PR. The two XML doc blocks in JsonType.cs kept only the non-obvious part -- that the text/bytes decision has to come from the ClickHouse type, since Array(UInt8) also reads as a byte[]. The changelog entry goes from 73 words to 52, identical in both files. No behaviour or test-assertion change. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
I reviewed the review comments on my last 10 PRs in this repo (#467, #469, #473, #474, #477, #479, #480, #481, #482, #484, plus #445/#446) and pulled out the feedback that recurred. Each rule below was asked for at least twice, or once in a way that killed a PR. Documenting them so they're followed the first time instead of costing a review round-trip.
What was repeated, and what I added
#if NET6_0_OR_GREATER, we already only target .net 6+"Two of these narrow existing guidance rather than adding new rules: the integration-test bullet already existed but didn't say why a mock passes when the server disagrees, and the framework list already said net6+ but not that guards below it are dead.
Notes
.github/workflows/tests.yml, so it stays checkable rather than becoming stale prose.Utilities/TestCases.cs/GetDataTypeSamples()verified as the shared source feeding the select, parameter, bulk-copy, serialisation, Dapper and DataAdapter suites — that's why it's the first place to check before adding a type test./benchmark-compareverified as a maintainer-gated PR-comment trigger (stresshouse-benchmark-compare.ymlrequiresOWNER/MEMBER/COLLABORATOR), so the wording says to ask a maintainer for it.