Implement open-enum codegen using the PR #23 generator invariant.
Scope:
- Generate unknown-safe wrappers for open protocol vocabularies, defaulting to sealed
Known<T> / Unknown(rawValue).
- Preserve raw unknown values exactly; no generic
UNKNOWN sentinel that loses the wire string.
- Emit Jackson serializer/deserializer bindings for each open vocabulary so the wire shape remains a flat scalar string.
- Drive open/closed classification from schema metadata such as
enumMetadata, not value count.
- Treat at least these vocabularies as open in the first pass:
ErrorCode
media_buy_status
creative_status
recovery
- action-discovery enums in
allowed_actions[] / available_actions[]
- notification types, including wholesale-feed webhook events
- task status values
References:
Implement open-enum codegen using the PR #23 generator invariant.
Scope:
Known<T>/Unknown(rawValue).UNKNOWNsentinel that loses the wire string.enumMetadata, not value count.ErrorCodemedia_buy_statuscreative_statusrecoveryallowed_actions[]/available_actions[]References:
ROADMAP.mdTrack 2specs/codegen-open-enums.md