Introduction

Purpose and boundaries

A configuration language describes syntax. Its document AST preserves what the operator wrote. An application schema describes fields, types, defaults and documentation. Resolution interprets a declaration using typed services. Code generation emits a static binder and the ordinary Go types the application’s runtime consumes. These are separate layers.

This avoids naive string maps and eager parsing that lose from_env(...) or from_file(...) provenance. Applications need a semantic Credential []byte, not proliferating CredentialFile/CredentialEnv fields. Schema-owned defaults, documentation and samples reduce drift. Explicit migrations prevent accidental renames; document-first editing preserves customization. Inspection need not fetch secrets, and normal field binding requires no runtime reflection.

Provenance and stability

This pre-v1 project was extracted from the architecture proven in Address PR #52, merge 7ca592d9aae476169c568d0bd4ce75654a099e48, with subtree history preserved. See PROVENANCE.md. Application-specific schemas and policy remain outside this library. API stability is not yet promised; review migrations and pin tested versions. No future declarers or release artifacts are implied to exist.