Build-time codegen helpers for the proto-first authoring path.
Phase-1 surface (impl-plan task 1.10):
- [
Config::compile] runsprotoc(or accepts a precompiled FDS), hands the FDS tobuffa-buildfor Rust-type generation, then walks the FDS viabuffa-reflectto extract the(obs.v1.event)and(obs.v1.field)custom options out of each message'sMessageOptions.__buffa_unknown_fields. From those bytes the codegen emitsEventSchemaimpls,EventSchemaErasedimpls, andlinkmeregistrations intoOUT_DIR/obs/schemas.rs. - The byte-identical-output property described in spec 12 § 1.2 (proto-first vs Rust-first land on the same generated bytes when the schemas are equivalent) is verified via Phase-2 task 2.1 integration tests; Phase 1 ships the codegen, the test harness builds on top.
See spec 12 § 4 + spec 14 § 7.