lint-identity

A pre-commit linter that validates references to specific people against a single source of truth. The operator-authored counterpart to agent-authored proof gates.

What this is

A static linter that validates every reference to specific people against a JSON-defined SSOT. Runs at commit time as a pre-commit hook, independent of any LLM agent's response loop. Catches fabricated middle initials, wrong-form bylines, banned credential aliases, incorrect role claims, and wrong MD-school attributions in any text the operator commits.

It exists as the sibling artifact to proof-gate-patterns. The two share a proof modality (observable command output as proof) but differ on two axes: who authors the verification (operator vs agent) and when it fires (commit time vs in-response).

How this differs from proof gates

The paper Proof Gates: Sycophancy-Resistant Self-Verification via Agent-Authored Postconditions (Whittaker 2026) defines a load-bearing distinction between operator-authored and agent-authored verification:

  • Proof gate (paper's pattern): the agent writes the verification code per task and runs it against its own work product as part of producing the response.
  • lint-identity (this artifact): a human operator wrote the linter ahead of time, and it runs at commit time regardless of whether the artifact was produced by an agent, a human, or a script.

Both produce observable command output as proof. The difference is authorship locus (per-task agent-authored vs ahead-of-time operator-authored) and firing point (in-response vs at-commit). The paper's positioning matrix locates both, with proof gates in the agent-authored quadrant and lint-identity in the operator-authored sibling cluster alongside Praetorian lifecycle hooks, AGENTS.md evaluator commands, and pre-commit linters generally.

What it catches

  • Wrong-initial Vancouver-form bylines. For example, "Whittaker NA" when the canonical SSOT entry is "Whittaker NM."
  • Banned shortenings. For example, "Dr. Naomi" without the family name, when audience-style requires "Dr. Whittaker."
  • Wrong credential aliases. For example, "CFCMC" near a person whose canonical credential per SSOT is "NFPMC."
  • Banned role claims in official contexts. For example, "founder" near a person whose canonical SSOT role is something else.
  • Wrong MD school in attribution. For example, claiming someone's MD school is a fellowship-only institution.

Why this exists in our deployment

lint-identity was built in response to a specific incident. An AI-assisted editorial process shipped content with a fabricated middle initial in a person's byline; no existing gate caught the fabrication before publication. The post-incident response was to encode the canonical-form rules as a deterministic linter, integrated into the pre-commit chain across the RRM Academy ecosystem repositories, and additionally enforced at the worker-ingest layer for editorial content. The incident-driven gate-creation pattern is documented in the paper's necessary-vs-sufficient framing: rule sets evolve reactively as incidents reveal unenforced rules.

Cite the paper

Whittaker, B. (2026). Proof Gates: Sycophancy-Resistant
Self-Verification via Agent-Authored Postconditions.
Preprint forthcoming. [Sibling artifact: lint-identity.]