<!-- BEGIN OPENLORE (managed — edits inside this block will be overwritten) -->
<!-- openlore-fingerprint: 25cdd746ebf39b56 -->
This project uses OpenLore for persistent architectural memory.

ALWAYS call `orient()` (via the openlore MCP server, or `npx openlore orient --json`)
before reading source files when starting a new task. This returns the relevant
functions, callers, spec sections, and insertion points for the task at hand —
one structural lookup instead of file-by-file rediscovery.

OpenLore prefixes tool responses with a brief, factual freshness note (the
Epistemic Lease) once your cached context has aged or the repo has moved since
your last `orient()`. It is informational — re-`orient()` if you are relying on
cached cross-module structure; otherwise carry on.

For the MCP setup, ensure `openlore mcp` is configured as an MCP server.
See https://github.com/clay-good/OpenLore for details.
<!-- END OPENLORE -->

## Using Anvilate correctly

Anvilate turns a described part into a **scorecard**: one typed result per check, each
citing the clause behind it. It is a T1 analytical screening library — closed-form,
unit-checked, fast — and it is not a certified analysis.

The full guidance, with a worked example for every rule, ships inside the package at
`src/anvilate/skills/anvilate/SKILL.md` (installed as `anvilate/skills/anvilate/SKILL.md`,
so it is available offline). Read it before driving the library. The seven rules it
expands on, in short:

- **Retrieval, not recall.** Standard dimensions come from the bundled databases with
  their citations attached. A refusal names the near misses; do not answer it with a
  remembered number.
- **Read the scorecard.** Report `Scorecard.status` and `governing()`, not an impression
  of how the calculation went.
- **Not evaluated is not a pass.** A check that could not run is `NOT_EVALUATED`, a card
  containing one is never `passed`, and "two of three checks pass" is a true sentence that
  reads as a passing part.
- **Inverse first repair.** A failing check may carry a repair hint; where a design
  inverse exists it solves for the value that lands at the required margin. Use it before
  guessing sizes, reach for the inverse yourself when a check offers no hint, and say out
  loud when you round to a stock size.
- **Confirm before use.** Values read from a requirements document or a calibration
  certificate are drafts. `release()` refuses until a named person confirms them — do not
  read the drafts directly, and never make the confirmation decision for the user.
- **Screen the document.** When the part is described by a Design Spec, screen the spec
  with `screen_spec` rather than rebuilding a pack element by hand: the tag it declares
  selects the screen, and the required safety factor comes from the document. A spec that
  declares neither reports `NOT_EVALUATED` saying so — supply what is missing by asking,
  never by choosing a house number.
- **Screening, not certified.** Say what a green scorecard is: the closed-form checks that
  ran were satisfied by the inputs given. Report what the evidence bundle says it does not
  cover.

The skill is documentation. It grants nothing, loosens no gate, and changes no result;
identical calls behave identically whether or not it was loaded.
