What
Audit b00t's build.rs/proc-macro codegen sites and convert the ones whose shape is fixed at compile time to declarative macros, following the pattern `DatumType`'s own `datum_type_table!` macro already uses (`datum_types.rs`) — a pure syntactic transform expanded from one static table, zero filesystem/environment dependence, hermetic by construction.
Why
This is a real, already-proven pattern in this exact codebase (not a hypothetical) — `DatumType` already avoids the non-hermetic-codegen problem entirely for its own derived methods. Extending the same technique elsewhere removes those sites from the hermeticity-audit backlog (#882) entirely rather than just documenting them as excluded from caching.
Scope note
Only applies to codegen whose input set is fixed/enumerable at compile time. Environment/filesystem-dependent codegen (e.g. "generate a match arm per file found in a directory scan") needs the different fix in the companion issue (include_str! + runtime parse), not this one.
Depends on
#882 (need the catalog first to know which sites are candidates)
What
Audit b00t's build.rs/proc-macro codegen sites and convert the ones whose shape is fixed at compile time to declarative macros, following the pattern `DatumType`'s own `datum_type_table!` macro already uses (`datum_types.rs`) — a pure syntactic transform expanded from one static table, zero filesystem/environment dependence, hermetic by construction.
Why
This is a real, already-proven pattern in this exact codebase (not a hypothetical) — `DatumType` already avoids the non-hermetic-codegen problem entirely for its own derived methods. Extending the same technique elsewhere removes those sites from the hermeticity-audit backlog (#882) entirely rather than just documenting them as excluded from caching.
Scope note
Only applies to codegen whose input set is fixed/enumerable at compile time. Environment/filesystem-dependent codegen (e.g. "generate a match arm per file found in a directory scan") needs the different fix in the companion issue (include_str! + runtime parse), not this one.
Depends on
#882 (need the catalog first to know which sites are candidates)