Concerns

Last updated

Every card's rule on one page, and each row links to the full card. Pick one or more concerns to scope a review, such as performance only. A card matches when it lists any picked concern, topic, or level. The picks go in the address, for example ?concern=security,performance&level=function, so you can share the view. Add .md or use cards.json for the same view as text or JSON.

How to report each check

Report each check as PASS, FAIL, or N/A with file:line evidence. A FAIL carries the card's severity. Any block FAIL means request changes. A should-fix or discuss FAIL goes in the review but does not block.

Verdict: request changes - change, function - 2 block, 1 should-fix FAIL, 1 PASS, 14 N/A
FAIL [block] chg-expand-contract - src/a.py:42 - renames the column and drops the old one in one migration
FAIL [block] svc-sqli-authn - src/db.py:88 - proven: builds the WHERE clause with an f-string from request.args
FAIL [should-fix] chg-one-concern - src/b.py:7 - a logging rewrite rides along with the bug fix
PASS chg-breaking-change-taxonomy - src/c.py:15 - no signature or return shape changes
N/A: 14 cards, applies_when does not hold

Filters

Concerns
Levels
Topics

Checklist

Back to filters

What the badges mean

Draft cards

74 draft cards

A draft card is not vetted. Report a FAIL of one under Draft findings, at should-fix at most, never in the ledger or the verdict. Each row links to the full card. How a draft becomes stable

  • code-ai-pr-disclosure should-fixprocessDisclose AI assistance in the PR, and have a human author who can explain and defend every changed line without the tool.
  • code-documented-setup-runs should-fixmaintainabilityprocessKeep the setup, build and run commands in the README or contribution guide accurate: they work as written on a clean checkout, and any drift is fixed or reported.
  • code-test-suite-time-budget should-fixtestingperformanceprocessRecord the suite's total time and its slowest tests on every CI run, and fail the build when the total or a single test passes a written budget.
  • fn-empty-collection-not-none should-fixcorrectnessReturn an empty collection for "nothing found"; return None only when absent differs from empty.
  • fn-known-keys-get-a-type should-fixcorrectnessGive a fixed key set a record type: a model, a dataclass or a typed dict.
  • fn-no-anonymous-tuples should-fixmaintainabilityReturn a small named record, not a positional tuple, once the fields differ in meaning.
  • fn-no-pass-through-wrapper should-fixmaintainabilityDelete a method that only forwards, and keep wrappers that validate, adapt, or narrow.
  • fn-no-stringly-typed-returns should-fixcorrectnesscompatibilityReturn a closed type (an enum, a tagged union or a sealed hierarchy) for a closed set of values, not a bare string. For a boolean flag, see fn-bool-arg-at-callsite.
  • fn-propagate-dont-swallow should-fixcorrectnessChain the original cause when you translate an exception.
  • fn-resource-lifetime should-fixcorrectnessGive every task and handle an owner that waits for it or closes it, on the error path too.
  • inc-perf-regression-guard should-fixperformancetestingAdd an automated check that would have caught the regression (a benchmark, a budget, a load-test threshold, or a resource guard) as one of the postmortem's actions.
  • inc-postmortem-owned-actions should-fixreliabilityprocessGive every postmortem action one named owner, a due date, and a tracker link.
  • inc-review-asks-which-check should-fixreliabilityprocessEvery incident review names the check that should have caught the fault (a test, CI gate, review, canary or alert) and turns the gap into a new or fixed check.
  • mod-central-config should-fixmaintainabilityRead configuration in one settings module and pass it in; business code must not read the environment or hold knobs.
  • mod-cohesive-unit discussmaintainabilityKeep one cohesive concept per module.
  • mod-mock-at-boundaries-only should-fixtestingMock only at the process boundary (HTTP, DB, cloud, clock, I/O).
  • mod-no-repeated-switches discussmaintainabilityWhen the same switch or if-chain on one type appears in more than one place, replace the copies with polymorphism, unless each copy is an exhaustive switch over a closed type that fails the build when a case is missing.
  • mod-no-wire-types-in-public-api should-fixmaintainabilityExpose domain types in a module's public interface, and keep transport, storage and framework types behind it.
  • mod-prefer-sync-api discusscorrectnessKeep logic in plain synchronous functions with no I/O, and add async wrappers at the edge only.
  • mod-shim-fails-loudly should-fixcorrectnessreliabilitytestingA shim or stub must raise for every operation it does not implement; it must not return a success value such as 0, None or an empty result for an unknown call.
  • mod-subtype-passes-parent-tests should-fixmaintainabilityMake a subtype pass its parent's tests: accept every input the parent accepts, promise at least what it promises, and keep its invariants.
  • mod-temporary-field discussmaintainabilityMake a field a local variable or a parameter when every method that uses it assigns it before reading it.
  • mod-thin-entry-point should-fixmaintainabilityKeep the entry module to wiring (bootstrap, configuration, lifespan) and put no business logic in it.
  • mod-validate-at-boundary-once should-fixcorrectnessmaintainabilityValidate at the boundary, once, with a schema or model, so that inner layers receive typed, already-valid data.
  • prod-wide-events-bounded-labels should-fixobservabilityEmit one structured event per request carrying trace, tenant, build and flag state.
  • svc-api-safe-idempotent-methods should-fixcompatibilityKeep GET, HEAD and OPTIONS free of side effects, and make PUT and DELETE give the same end state when repeated.
  • svc-api-spec-matches-impl should-fixcompatibilityKeep the OpenAPI document as the source of truth, and generate it from the code or test the running service against it in CI.
  • svc-api-trace-context should-fixobservabilityForward traceparent and tracestate on every outgoing call, keep the incoming trace id, and set a new parent id for each hop.
  • svc-page-title-per-route should-fixaccessibilityusabilityGive every page and every client-side view its own <title> that says what it is.
  • svc-rate-limit-by-cost should-fixperformancereliabilityWhen request costs differ by orders of magnitude, charge each request its estimated cost against the quota instead of counting it as one.
  • svc-request-id-logging should-fixobservabilityPut the request or trace id on every log line written during a request.
  • svc-security-event-logging should-fixsecurityobservabilityLog every failed authentication with the account name and a timestamp.
  • svc-security-headers should-fixsecuritySend Strict-Transport-Security on every HTTPS response.
  • sys-append-only-stores-have-retention should-fixreliabilityperformanceGive every store that only grows (event, audit and history tables, log files, finished-job registries) a maximum age or count, and a job or setting that enforces it.
  • sys-cache-cold-start should-fixperformancereliabilityCap and coalesce the cache-miss path so an empty cache cannot overwhelm the origin.
  • sys-constraint-not-valid should-fixcompatibilityAdd the constraint NOT VALID, then run VALIDATE CONSTRAINT in a separate step, and never leave the VALIDATE out.
  • sys-leader-two-leaders should-fixreliabilityMake leader work safe if two leaders overlap: make it idempotent, check the lease before acting, and stop when renewal fails.
  • chg-agent-mock-asserting-tests should-fixtestingprocessWrite tests that fail when the behaviour breaks, and reject tests that mostly assert on mocks, copy the implementation, or were edited to match new output without explanation.
  • chg-api-spec-in-same-change should-fixcompatibilityUpdate the API spec in the same change that alters the routes, fields, status codes or headers it describes.
  • chg-bot-approval-not-human should-fixprocesssecurityDo not let a bot or agent approval satisfy a required human approval.
  • chg-fix-root-cause-not-symptom should-fixcorrectnesstestingIn a bug fix, state the cause you saw in evidence, and reject a guard, retry, sleep, longer timeout, swallowed error, cast, skipped or weakened test, or special case for the failing input that the cause does not justify.
  • chg-flag-owner-retirement should-fixreliabilityGive every new flag an owner, a default, and a removal condition or date, and ticket the removal.
  • chg-matches-spec should-fixprocessTrace every behaviour change in the diff to the stated requirement, and flag missing requirements and any change nobody asked for.
  • chg-new-api-has-usage should-fixmaintainabilityShip new API with at least one real caller in the same change, and fail speculative interfaces and options that nothing uses.
  • chg-new-query-has-plan should-fixperformanceAttach the query plan for each new or rewritten query on a growing table, taken on production-sized data.
  • chg-no-per-user-ide-files should-fixprocessmaintainabilityDo not commit a file that holds one developer's editor or IDE state; ignore those paths in the repository or a machine-wide exclude file, and keep the settings the team shares in the repository.
  • chg-review-comment-format discussprocessLabel each review comment with its severity: block, should-fix, or discuss.
  • chg-review-rigour-by-risk should-fixprocessSet the review tier from what the change touches, such as auth, billing, CI or release workflows, and not from who wrote it.
  • chg-review-rounds-capped discussprocessCap the number of review rounds; after the cap, re-review only the new diff and ask the author to rethink the approach if findings keep coming.
  • chg-review-threads-resolved should-fixprocessDo not merge while any review thread is open; each one ends as a fix or as a resolution with a stated reason.
  • chg-sensitive-paths-human-owner should-fixsecurityprocessName a human owner in CODEOWNERS for auth, billing, CI and release paths, and require that owner's approval.
  • go-govulncheck-in-ci should-fixsecurityRun govulncheck ./... in CI and fail the build on a reported vulnerability that your code calls.
  • go-http-client-timeout should-fixreliabilityperformanceNetwork calls carry a deadline: a context.Context passed to NewRequestWithContext, or an http.Client with Timeout, never http.DefaultClient without either.
  • go-mod-readonly-verified should-fixsecurityreliabilityCommit go.sum, build in CI with -mod=readonly, and run go mod verify.
  • go-no-init-side-effects discussmaintainabilitycorrectnessinit() does no I/O, reads no environment and does not depend on other init() functions; do that work from main().
  • go-test-race-in-ci should-fixcorrectnessreliabilitytestingCI runs the test suite with go test -race ./....
  • go-vet-lint-gate should-fixcorrectnessmaintainabilityCI runs go vet and a linter set that includes staticcheck and errcheck, and a finding fails the build.
  • go-wrap-errors-with-w should-fixcorrectnessreliabilityCheck every returned err; when you add context, wrap with fmt.Errorf("...: %w", err) unless the cause must stay hidden.
  • py-await-check-then-act should-fixcorrectnessWhen more than one worker or process can run, make check-then-act an atomic DB statement or constraint, because a Python lock covers one process only.
  • py-error-hierarchy should-fixcorrectnessGive each package one base exception, with the specific ones in an errors module.
  • py-frozen-dataclass-over-tuple should-fixcorrectnessReturn a @dataclass(frozen=True, slots=True) instead of a positional tuple.
  • py-init-assign-only should-fixmaintainabilityKeep __init__ and __post_init__ to assignments, and do I/O in a @classmethod factory.
  • py-init-py-empty should-fixmaintainabilityKeep __init__.py empty unless it re-exports the public API.
  • py-no-silenced-diagnostics should-fixmaintainabilitySuppress a Python diagnostic only with a single named code and a reason on the same line.
  • py-pydantic-validation should-fixcorrectnessValidate request data with a pydantic model, not hand-written checks.
  • py-settings-pydantic-settings should-fixmaintainabilityLoad env config with BaseSettings from pydantic_settings.
  • py-strenum-not-strings should-fixcorrectnessUse StrEnum for fixed string sets and HTTPStatus for HTTP codes.
  • py-test-collection-and-imports discusstestingperformanceSet testpaths in the pytest configuration.
  • typescript-mock-at-the-boundary should-fixtestingmaintainabilityFake the system boundary (network, clock, storage), for example with Mock Service Worker; do not vi.mock your own modules when a boundary fake would do.
  • typescript-no-floating-promises should-fixcorrectnessreliabilityEvery Promise is awaited, returned, or given a .catch; enable @typescript-eslint/no-floating-promises.
  • typescript-partial-mock-keeps-original should-fixtestingcorrectnessA vi.mock factory spreads await importOriginal() and overrides only what the test needs; never swap an exported error class for a stub.
  • typescript-shared-test-setup discusstestingmaintainabilityPut setup that every test file repeats into one file listed in setupFiles, not into each test file.
  • typescript-strict-mode should-fixcorrectnessmaintainabilitytsconfig.json sets "strict": true; switch off a single strict flag only with a written reason.