Letterpress usage rules

Copy Markdown View Source

Compile before publication

Call Letterpress.compile/4 when validating preview or publication. Persist the complete returned artifact for every deliverable locale. A compiler error is an authoring/publication failure, not a reason to fall back to another renderer.

Render stored artifacts

Call Letterpress.render/3 at delivery with resolved values. Delivery nodes may omit Letterpress.Compiler.Supervisor; valid stored artifacts still render without Node.

Keep application policy in the host

The host owns authorization, tenancy, locales, publication state, retries, providers, and migrations. Convert legacy formats into a Letterpress profile before calling the normal compiler. Do not add a permissive migration mode.

Treat diagnostics as untrusted structured data

Match on diagnostic codes and ranges, not English prose. Escape messages in the UI. Correlate asynchronous responses with source_hash and document_version before displaying them.

Do not persist resolved values

Artifacts contain expressions and compiler provenance, not recipient data or secrets. Never place source, rendered output, or variable values in telemetry.