magus v0.4.3 is out. See what's new
¶ View markdown source · ✎ Suggest an edit
2 min read

blame

An advisory by default: it explains, and blocks nothing, on a person or past work as the subject of a fault, and contempt for code or a decision.

What it catches

A person or past work as the subject of a fault, and contempt for code or a decision.

Dimension

stance: the text reads as a verdict on a person, or as addressed to someone else. A finding is counted on the dimension of its rule, the cost it names to the reader.

Why

Text loses its tone on the way to a reader, who fills the gap with intent the writer never had. "Whoever wrote this forgot to" reads as an accusation; "the rename left the old key" states the same fact. The first person is left alone, since owning a fault reads as candor. Measured 2026-10-10 before a fix: 85.7% precision on its cases (6 of 7), firing on 0.1% of human AIDev review comments and on 1 magus commit body; of 70 firings read, 30 were wrong. So "should have" counts only before a past participle ("you should have a tests file" is possession, "they should have been kept" a thing), "they" only when it forgot or neglected to, and a contempt word is exempt inside a name ("crazy-max", "dumb-init"), capitalized mid-sentence ("Keep It Simple, Stupid"), and as "go too crazy". Measured 2026-10-11 over the adjudicated labeling round: 52.0% precision (26 of 50) before, 92.9% (26 of 28) after. "lazy" is no longer read (all 7 labeled firings named evaluation on demand), and quoted words, a denied word ("not crazy", "rather than sloppy"), a fault the writer owns ("on my part") and a supposed one ("if they forgot to") are left alone. Labeling round 3 measured 34 of 37, a lower bound of 0.79, which each graded finding weighs.

Default decision

The code is PRF2001. The decision depends on the kind of text judged:

Kind Default
change-description advise
review-summary advise
review-inline advise
review-reply advise
commit-message advise
issue advise
agent-reply advise

Changing it

A decisions table sets this rule to deny, advise or off, for everything judged or for the files a glob matches. Proofread reads the table from the file its -decisions flag names:

{
  "rules": {"blame": "deny"},
  "paths": {"blog/**": {"blame": "off"}}
}

rules applies to every file. A glob in paths applies to the files it matches, and the last match wins. A rule set to off never reports.

Seeing it

A finding names the rule, its code and the decision that applies, and links here:

{"rule": "blame", "code": "PRF2001", "decision": "advise", "url": "https://eli.gladman.cc/magus/reference/proofread/blame/"}

proofread rules prints this entry with every other rule's.

See also

proofreadrulesblameadvise
Last updated (87041fca)
Earlier changes on this page (2)

Full history ↗ · Blame source ↗

Glossary

Op

A single tool-native command a target composes (long form: operation); the middle of the work hierarchy (Spell to Op to Target). Op in full.

CI

An ordinary target you compose yourself with ctx.needs; magus does not hardcode its stages. It is the anchor magus affected ci keys off, and ci strips the rw charm. CI in full.

Agent

A model working through an agent host such as Claude Code, Codex, Cursor or OpenCode. magus treats an agent as one more caller of its CLI, MCP tools and console, held to the same checks as a person. Agent in full.

Session

An agent host's conversation, by the id the host delivers to its hooks. magus never mints one: a record with no session is unattributed, and the OS user it carries says whose account ran it. Session in full.

Advisor

One read-only check from the advice suite: it reads the changeset through magus and writes one titled section of findings. The same advisors run as a pull request comment in CI and inside magus diff --impact locally. Advisor in full.

Conventions

This page uses none of the site's convention markers. The full set is on the conventions page.