diff --git a/AGENTS.md b/AGENTS.md index af512cc..9fde77f 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -27,45 +27,11 @@ non-Provider attributes that exist to exercise the skip path. ## Workflow -**The spec for a change is its PR body**, not a committed file: why, design, non-goals, -verification, reviewed with the diff. There is no change file and no lane to choose. A trivial PR -(typo, dep bump, formatter, CI tweak) ships a conventional-commit title with no body ceremony. - -Two things outlive the PR, and there are exactly two places to put them: an alternative **rejected** -with reasoning becomes an ADR in [`docs/adr/`](docs/adr/) (`NNNN-slug.md`, sequential, with a -revisit trigger), and real work **not scheduled** becomes a GitHub issue. There is no third state, -and no separate truth-home directory — a behaviour change is reviewed with the diff, not promoted -to a page. - -### Where a fact goes - -Four homes, one owner each: - -| Home | Holds | -|---|---| -| `modern_di_pytest/` | anything readable from the module — the default | -| a named test | an **invariant**: must stay true, and a change could silently break it | -| `docs/adr/` | a rejected alternative, with the reasoning that would otherwise be re-litigated | -| `README.md` | anything a user needs | - -Before writing a line anywhere: - -> Can an agent get this by reading `modern_di_pytest/`? → **don't write it.** -> Would a wrong change here fail a test? → it belongs **in the test**, not in prose. -> Does a user need it? → **`README.md`**. -> Otherwise it does not get written. - -**Prose about mechanism has no home. There is no file to add a paragraph to.** This file included: -it is always loaded, so a line that restates a docstring, a justfile comment, or `pyproject.toml` -costs every turn and rots in two places at once. A package this small tempts a full restatement of -its own source; that is the failure mode to watch for here. +Real work **not scheduled** becomes a GitHub issue. An invariant is a test whose name is the claim, with a docstring opening `INVARIANT:` and a second paragraph naming **what breaks it** — design rationale, not a report of what this one test catches. -Nothing enforces that docstring shape; it is read at review time. A relative link to an ADR *is* -checked — CI runs lychee `--offline` over every `.md` — but a path named in a docstring or a -comment is not. Both ADRs and `INVARIANT:` docstrings ratchet: nothing prunes a record once its -call is settled. Keeping them lean is a standing habit. +Nothing enforces that docstring shape; it is read at review time. ## Agent skills