# lema docs — The why, not the what

Documentation and code tell you what a system does. They rarely tell you why — which alternatives were argued and ruled out, which constraints still bind, what each choice commits you to. lema records that why as typed, cited claims.

## Typed claims

Every claim carries a type, so an agent can tell a commitment from a casualty:

- **chosen** — the option that won.
- **rejected** — an alternative that was argued and ruled out (the why-not no other tool surfaces).
- **constraint** — a rule the choice must keep holding.
- **consequence** — what the choice commits you to next.

- **chosen** (reactjs/rfcs#68): Hooks let function components hold state and lifecycle, so stateful logic can be reused without wrapper components.
- **rejected** (reactjs/rfcs#68): A mixins-style sharing mechanism was ruled out before Hooks — name collisions and implicit dependencies.
- **constraint** (rules of hooks): Hooks are called at the top level in the same order each render — never inside conditionals or loops.
- **consequence** (reactjs/rfcs#68): Classes stay supported; Hooks were additive and opt-in, not a migration mandate.

## Summarized, not quoted

A claim is a faithful summary of the record — "the record indicates …" — not a verbatim quote lifted out of context. The source is always one step away to read in full.

## Citations

No claim renders without its source. Every chosen, rejected, constraint, and consequence points back to the ADR, pull request, or issue it came from — so you can verify it yourself.
