Build1 distinct publisher3 min readPublished
A dev.to reviewer who uses Cursor and Claude Code daily now blocks only on findings that can page someone or corrupt data, each cited to path:line with a named rollback, which quietly prices whatever platform gaps you have.
The Engineer · Build desk

Compiled by The EngineerSomething wrong?How this is made
The pairing is what makes the rubric enforceable. A finding has to cite path:line, and a pass has to point at either a flag, a trivially revertible change, or the rollback plus who can execute it [4][9]. Each half removes a class of comment. path:line removes "this feels risky" [4]. The named rollback removes the finding nobody can act on when the pager goes off.
The smallest data blocker in the post is a one-line diff: `status TEXT` becomes `status TEXT NOT NULL` [12]. No default, no UPDATE [11]. Which failure mode you get depends on your migration runner, because either the migration fails on apply, or the check is skipped and reads throw later [13]. The prescribed order is backfill first, set NOT NULL in a follow-up, or choose a default that matches what the product currently means and write that down [14]. A TODO with an owner is a warning, not a pass [15].
The contract case is where the model's fluency does the damage. `GET /v1/invoices/:id` returned `amount` as integer cents, and the model returns `(invoice.cents / 100).toFixed(2)` with the field name untouched [16]. Existing mobile builds read `"12.50"` as 12 cents or throw, and cannot be force-updated that afternoon [17]. On a $12.50 invoice that is 1250 against 12, off by a factor of about 104 [18]. The author reports the review comment such a diff attracts: "nice, more readable for clients" [16]. The fix is additive, `amount_decimal` or a `/v2`, with `amount` left as integer cents until the old clients are gone [19].
What the rubric costs to adopt sits in its pass conditions rather than its blocker list. "Gate it, or keep the legacy path behind something you can flip at 2am without a deploy" is a review comment if you already have flags, and a quarter of platform work if you do not [20]. Same for being able to ship a `/v2` [19], and for expand/migrate/contract being a sequence your tooling supports [15]. Point this at an agent-heavy repo without that infrastructure and most risky PRs score as blockers, which converts a review policy into a platform backlog. That is useful information, delivered by an unusual route.
Scope note. The supplied text names eight blockers and details four, cutting off inside the authz section, where the examples are IDOR from a client-supplied id and an "internal" endpoint becoming newly reachable [22][21]. It is one practitioner's rubric published on dev.to, with no defect rates and no before-and-after [1]. For the rest of it to transfer you need the conditions it assumes: clients you cannot redeploy in lockstep, and CI that goes green because the new function has unit tests while proving nothing about the rows already in the table [8].
Ranked by verification strength, evidence, and original report placement.
The supplied text of the post announces eight blockers but details four (reversibility, contract, stored data, authz) and cuts off mid-sentence inside the authz section.
The author of the dev.to post says he refuses to open sloppy AI-authored PRs, and that he is not anti-agent because he uses Cursor and Claude Code every day.
The post presents a rubric of eight blockers that the author runs before a PR exists, and says that if a finding is not one of those eight, stay quiet.
The post defines a blocker as something that can page someone, corrupt data, leak access, or ship a change nobody can undo without a forward-fix.
The rubric requires every finding to cite path:line; if you cannot cite it, it is not a finding, and "This feels risky" is not a finding.
Naming, file length, "consider extracting a helper," and architecture taste are not blockers under the rubric; those conversations can happen after the change is safe, or never.
Distinct publishers with included, body-backed reporting in this cluster.
dev.to
1 article · September 2, 2026
Follow any of these and your For You feed starts watching them — no settings page required.
build
AI-written code fails the same four ways, and every gate you own reports green1 distinct publisher
build
NocoBase documents an AI kernel role for itself thirteen alphas before the 3.0 announcement1 distinct publisher
build
Your reviewing model is reading the diff when it should be reading the session1 distinct publisher
build
255 tool schemas, 91K tokens: pricing the two MCP costs nobody budgets1 distinct publisher
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
Diff-level detail, single pair of eyes
The failure modes are unusually checkable for an opinion piece: a one-line status TEXT NOT NULL, (invoice.cents / 100).toFixed(2) behind an unchanged field name, a DELETE /accounts/:id that never calls the guard. Any engineer can verify those mechanisms against their own stack, which is why this scores above the usual 'AI code is risky' essay. What is missing is anyone else — no postmortem, no incident counts, no second reviewer, and the text runs out before the promised eight blockers are all specified.
One engineer's own gate
Adoption here is a single workflow: the author says he runs the rubric before a PR exists and uses Cursor and Claude Code daily. There is no team rollout, no shared repository or prompt to point at, no count of PRs it has scored, and no second practitioner anywhere in this reporting. That is a floor, not diffusion.
Headline promises eight; the text delivers the front half
Modest overreach, and it is structural rather than rhetorical. The title says these eight blockers are the whole review, yet the piece stops mid-sentence with a rollout blocker unfinished, and the claim that noisy bots get muted within a week is offered as experience with nothing behind it. Against that, the individual prescriptions are narrow and testable — gate it, backfill first, add amount_decimal — so the gap sits in the framing, not the engineering.
Reputation stake, no cash stake
Nothing is being sold. There is no sponsor, no product, no repository to star, and the two commercial tools named — Cursor and Claude Code — appear as things the author pays for rather than promotes. What remains is the ordinary pull of a strong take on a developer publishing platform: the 'I refuse' framing and the eight-blocker number are shaped to travel, and the piece is graded on nobody's outcomes but its author's credibility.
Trust the mechanisms, discount the coverage
Split verdict. The engineering is specific enough that a reader can check it in an afternoon against their own migrations and clients, and none of it is exotic. But every word comes from one author on one platform, the outcome claims are anecdotal, and the piece is truncated — so we are confident about what the post says and how plausible its failure modes are, and not confident that this rubric is the eight blockers rather than one experienced reviewer's eight.