01 · Declare
Choose where to declare intent
Repository intent lives in enola-intent.yaml. A cluster can declare the same schema beside its repository list and override a repository file wholesale. A Markdown decision page can opt in with an enola_intent: frontmatter block; Enola reads that block, not the page body.
A repository declaration can name the service, the seams it consumes and serves, its layer order outermost first, and the external dependencies it expects:
service:
name: backend
description: order and payment API
consumes:
- {repo: payments, via: http}
serves:
- {via: http, description: public REST API}
layers:
- {name: handlers, paths: ["app/handlers/**"]}
- {name: domain, paths: ["app/domain/**"]}
- {name: storage, paths: ["app/storage/**"]}
dependencies:
- {name: jwt, ecosystem: rubygems, purpose: "token verification", safety_path: true}Layer paths are repository-relative exact paths or prefix/** subtrees. Run enola constraints lint to see how many measured modules each layer selects before enforcing it.
Components and rules are constraints: they live in enola-intent.yaml or enola/constraints/*.yaml, never on a page. See Policy as Code.
02 · Before the edit
Find the rules for a change
| Question | Tool |
|---|---|
| Which declarations cover this target? | governing_intent |
| Which rules, exemptions, and guidance apply? | constraints_for |
| What would these paths or this patch affect? | plan_check or enola plan |
enola plan --paths internal/auth,internal/api
03 · Modes
Choose how each rule behaves
| Mode | Behavior |
|---|---|
| ratchet | Default. Existing debt can remain; new violations fail the check. |
| advisory | Reports evidence without failing the check. |
| strict | Any violation fails unless it is recorded in the suppression ledger. |
Exemptions name specific allowed violations and remain visible. Guidance gives advice before an edit; it is not a violation.
04 · Evidence
Understand the evidence limits
Enola evaluates declarations against the graph it extracted. Unsupported syntax, dynamic behavior, generated code, or missing provider facts can leave relationships unseen. Receipts record extractor and provider provenance; coverage reports show unresolved boundaries.
05 · Full schema
Use the canonical reference for authoring
For the declaration schema, page frontmatter, vocabularies and how intent findings are graded, read INTENT.md. Components, the 21 rule forms, recipes, modes and exemptions are covered on Policy as Code and in CONSTRAINTS.md. Provider contracts are in PROVIDERS.md.