lsd lazy-senior-dev
GitHub
v0.1.0 · plugin for 14 agents · GitHub Action · Apache-2.0

Your agent has no memory.
Tenured remembers 2017.

Your agent's change, reviewed by the engineer who has been here longer than the monorepo and remembers the postmortem for the thing you are about to reintroduce. Every objection comes with a commit hash the author can open. We tried that in 2017.

Tenured: a ticket flows in, is checked against the history, and the repository does not repeat itself.
Agentproposes a changeany file, any language
Historygit log · changelog · postmortemsgathered before the review
VerdictTENURED: DO_NOT_REPEATfile:line — evidence — fix
Gatesame hookwith a citation
Branchnothing repeatedNEW → New to me.

No evidence, no objection. NEW is a good verdict.

Recorded

Watch him work on every agent

The same staged diff, one CLI, 4 agents. Real runs captured from the terminal transcript and rendered frame by frame, nothing typed by hand and nothing cut. Captured 2026-09-13.

Verdict
What Tenured concluded. NEW lets the change through, SEEN_BEFORE asks for fixes, DO_NOT_REPEAT stops it.
Findings
How many numbered problems were listed. Each one names a file, a line, what breaks, and the smallest fix.
Time
How long the review took, start to finish, on this machine.
Tokens
What the host reported reading and writing. Some hosts report nothing, and the card says so rather than guessing.
Terminal recording of Tenured reviewing a staged diff with Claude Code: TENURED: DO_NOT_REPEAT
Claude Code
Verdict
TENURED: DO_NOT_REPEAT
Findings
2
Time
7 s
Tokens
7,979 in / 529 out
Terminal recording of Tenured reviewing a staged diff with Codex CLI: TENURED: DO_NOT_REPEAT
Codex CLI
Verdict
TENURED: DO_NOT_REPEAT
Findings
1
Time
5 s
Tokens
15,488 in / 77 out
Terminal recording of Tenured reviewing a staged diff with Antigravity CLI: TENURED: DO_NOT_REPEAT
Antigravity CLI
Verdict
TENURED: DO_NOT_REPEAT
Findings
1
Time
112 s
Tokens
29,085 in / 71,009 out
Terminal recording of Tenured reviewing a staged diff with IBM Bob Shell: TENURED: DO_NOT_REPEAT
IBM Bob Shell
Verdict
TENURED: DO_NOT_REPEAT
Findings
1
Time
4 s
Tokens
not reported
What he asks

Ten questions about what the repository already knows

  1. Resurrection. Does this re-add code, config, or behaviour a previous commit deliberately removed?
  2. Reverted before. Has a change to these files been reverted in the last two years? Why?
  3. Postmortem match. Does any incident note describe a failure this change could reproduce?
  4. Warnings in place. A comment, README line, or ADR near the changed lines that says not to?
  5. Deprecated paths. Does this call something the repository marked for removal?
  6. Copied config. Copied from elsewhere without the parts that made it work there?
  7. Half-migration. Does this extend the old side of a migration in progress?
  8. Ownership. Has the owner of these files rejected a change like this before?
  9. Naming collision. A name, flag, or event that once meant something else?
  10. Lessons recorded. If it is new, does it leave a note the next person will find?

Verdict block: TENURED: NEW | SEEN_BEFORE | DO_NOT_REPEAT. DO_NOT_REPEAT is reserved for changes that reproduce a recorded incident or resurrect a deliberate removal.

Why this and not that

You already have a rules file and a review bot

They fail in opposite directions. One is advice the agent may ignore; the other arrives once the code already exists.

A rules fileA pull-request reviewertenured
When it runsEvery turn, as contextAfter the code is written and pushedBefore the write is allowed to land
When it disagreesNothing happensLeaves a comment to readTenured denies the write until it is fixed
What you can gate onNothingProseNEW · SEEN_BEFORE · DO_NOT_REPEAT, as JSON
Where it worksOne format per host, by handThe forge you host on14 agents, any MCP client, a GitHub Action
How you know it helpsYou do notThe vendor's own blogTwo benchmarks here, raw replies committed

The first column is not a strawman. Anthropic's documentation calls a rules file “context, not enforced configuration” and says that to block an action regardless of what the model decides, you need a PreToolUse hook. That hook is what this is.

What ships

Everything the Grump has, pointed at the repository's memory

14agent adapters, one ruleset
10questions, with a stop rule
3verdicts: NEW · SEEN_BEFORE · DO_NOT_REPEAT
20benchmark cases: 12 seeded · 4 clean · 4 needle

Adapters

Generated from rules/tenured.md for Claude Code, Codex, Copilot CLI, Gemini CLI and Antigravity, OpenCode, Cursor, Windsurf, Cline, Kiro, OpenClaw, Devin, Qoder, IBM Bob, and any AGENTS.md reader. tenured install <host> drops the right files in.

The gate

The same PreToolUse hook. DO_NOT_REPEAT denies the write in every mode; SEEN_BEFORE denies in gate mode.

The benchmark

Three arms (agent alone, generic reviewer prompt, Tenured) on the same diffs, every reply kept. Numbers and the per-diff table live in the README and benchmarks/results.

Have a repeated outage one of the ten questions would have caught? Open an issue; it becomes a benchmark case.

Same desk

The rest of the cast

Open standards

Standards this implements

Citing a standard is easy; implementing one is the part that can be checked. Everything below is running in this repository today, and every body listed governs its specification in the open.

StandardGoverned byWhere it runs here
Model Context ProtocolOpen specification, Anthropic-originated, community-governedmcp/server.mjs, five tools over stdio, listed as io.github.lazy-senior-dev/tenured
SLSA build provenanceOpenSSF, Linux FoundationAttested on every release artefact; verify with gh attestation verify
SigstoreOpenSSF, Linux FoundationThe container image is signed keyless; verify with cosign verify
CycloneDXOWASP, standardised as ECMA-424A bill of materials on every release
SPDXLinux Foundation, ISO/IEC 5962A second bill of materials in the format ISO recognises
OpenSSF ScorecardOpenSSF, Linux FoundationScored weekly, badge above, results public
REUSE licence identifiersFree Software Foundation EuropeSPDX-License-Identifier on the files this project authors
AGENTS.mdAgentic AI Foundation, Linux FoundationGenerated from the ruleset for any agent that reads it
Agent SkillsOpen specificationskills/ and .github/skills/
SARIF 2.1.0OASISThe Action writes findings to sarif_file for any SARIF consumer
Apache-2.0Apache Software FoundationLICENSE and NOTICE