diff --git a/docs/content-model.md b/docs/content-model.md
index a996c49..a372f4d 100644
--- a/docs/content-model.md
+++ b/docs/content-model.md
@@ -143,6 +143,12 @@ published URL never changes meaning; renames add `aliases` and emit permanent re
bundle between sections changes the URL the engine emits, and the old path resolves only through
`aliases` — so a section list is effectively permanent once anything is published.
+**No path segment is ever localised.** Reserved segments stay `page` and `tags` in every language, page
+numbers stay ASCII digits, and a slug is whatever the key says: `/bn/lekha/page/2/`, never a translated
+spelling of it. Localisation is for the words around the content, never the address of it (ADR-0034). A
+Bengali variant is therefore reached at the English key under a prefix — `/bn/posts/hello-world/` — and
+the only thing that can change a variant's path is a `slug` override, which the parser does not read yet.
+
A language prefix wins over a section of the same name, so a site with Bengali content may not also have
a section called `bn`. The engine treats a leading segment as a language only when some bundle is written
in it.
diff --git a/docs/state.md b/docs/state.md
index 467c4d9..078399b 100644
--- a/docs/state.md
+++ b/docs/state.md
@@ -25,6 +25,10 @@ Chrome text, dates and digits render in English or Bengali; authored text is unt
smoothing (ADR-0034). This repo holds engine source only — the site root is external and passed with
`-site` (ADR-0011).
+Frontmatter the parser lifts today: `title`, `date`, `tags`, `aliases`, `order`. Every other key in
+`content-model.md`'s table — including `slug`, `draft` and `type` — lands in `Extra` unread, so that table
+is the accepted format, not a list of what runs.
+
Dependencies: three, all allowlisted — `goldmark`, `golang.org/x/text`, `gopkg.in/yaml.v3`.
## Counters — the earn-it authority
diff --git a/docs/theme-contract.md b/docs/theme-contract.md
index 7267839..422f5f6 100644
--- a/docs/theme-contract.md
+++ b/docs/theme-contract.md
@@ -65,9 +65,10 @@ Phrase keys today: `newer`, `older`, `empty`, `page-of` (two arguments), `positi
unknown language falls back to the default locale and an unknown key returns itself, so a missing
translation can never blank a page or fail a render.
-Two rules a theme must keep: put the machine-readable form in the attribute and the localised form in the
-text — `` — and never localise
-`.Title`, `.HTML` or anything else the author wrote.
+Three rules a theme must keep: put the machine-readable form in the attribute and the localised form in the
+text — ``; never localise
+`.Title`, `.HTML` or anything else the author wrote; and never pass a URL, key or path segment through
+these functions. An address is not chrome (`content-model.md`).
A site root cannot add or override a phrase yet. A theme needing its own words writes them in its own
block; site-supplied strings wait for the settings cascade (`ideas/deferred-decisions.md`).