# Promotion Contract (load-bearing)

When implementing a learnings-ladder **promotion ticket** — turning prose
knowledge into an executable control (lint / ast-grep / type / test / hook /
`package.lisa.json` force) — the change must be **atomic**: one PR that
**enables the control**, **fixes the existing violation population**, **ships a
remediation-teaching diagnostic** (violated invariant + why + concrete fix),
and **deletes the superseded prose**. A PR missing any of the four is
**rejected by rule** — promote-without-remove double-pays forever;
remove-without-diagnostic strands agents.

Eager-tier admission is **demotion-biased** and earned only by repeated-miss
evidence; the gardener audits the eager tier every run, including Lisa's own
shipped eager rules.

Full contract, diagnostic-quality bar, and the AC template the gardener embeds
in EXECUTABLE-CONTROL promotion tickets:
[reference/promotion-contract.md](../reference/promotion-contract.md).
