What's Changed
catalogs— the reference loader for locale catalog sources (#131) — companion to trendvidia/protowire#195, which pinned the RFC-001 §7 catalog-library source format: acatalog_librariesfile is a text-formatprotowire.schema.catalog.v1.Catalogmessage, one locale per file, entries keyed by violation code with{param}templates. The new publiccatalogspackage sits besideengineconfig(the shared-surface argument of trendvidia/protolsp#265):Load(baseDir, paths)merges files into one catalog per locale — per-domain files for the same locale merge, a duplicate code across files for one locale is a hard error naming both files, malformed input never partially loads — andFromConfig(cfg)applies the §7 path rule (relative paths resolve against the config file's directory). Output is plain(locale → entries)data; rendering stays in the engine (protocheck'sNewMapCatalogconsumesEntriesdirectly). The vendored spec set gainsproto/schema/catalog/v1/catalog.proto(covered bycheckspecdrift),config.protois re-vendored for its protowire#195 comment update, and the08_engine_configfixture mirror'scatalog_librariesvalues are.textprotopaths now.
Behavior notes for downstream: no compiler-surface change — this release is additive API only (catalogs package, regenerated internal bindings). Unblocks trendvidia/protolsp#267.
Release gate: ci-local-full verified on this tag — generate/lint/test clean, checkspecdrift matches the protowire checkout, benchmarks pass.
Full Changelog: v0.22.0...v0.23.0