Follow-up from trendvidia/protowire#64 (PR trendvidia/protowire#99, spec/064-literal-shape).
That PR revises the Literal carrier in protowire's proto/schema/v1/descriptor.proto in place (pre-freeze window):
string enum_name = 1 → EnumLiteral enum_value = 1 ({enum_type, value_name, number}, linker-resolved)
ListLiteral.elements: repeated AnnotationArg → repeated LiteralValue (scalar oneof mirroring AnnotationArg 10–14 + nested Literal; homogeneous kind enforced)
- Message literals unchanged (
google.protobuf.Any), explicit-typing rule pinned
protocompile's lowering (fdp/annotations.go) emits against a vendored descriptor.pb.go — it must be regenerated from the revised carrier once the protowire PR train (trendvidia/protowire#94–#99) merges.
Blast radius today is nil: no shipped grammar path emits enum/message/list annotation args (protowire fixtures 01–06 contain none). When the grammar grows those paths, lowering must also implement the new normative checks: resolved enum emission, list homogeneity rejection, explicit message-literal typing.
Conformance target: protowire testdata/schema-extensions/11_literal_carrier_golden.textproto (and 10_literal_args.proto for the source forms).
Blocked on: trendvidia/protowire#99 merging.
Acceptance criteria:
Follow-up from trendvidia/protowire#64 (PR trendvidia/protowire#99,
spec/064-literal-shape).That PR revises the
Literalcarrier in protowire'sproto/schema/v1/descriptor.protoin place (pre-freeze window):string enum_name = 1→EnumLiteral enum_value = 1({enum_type, value_name, number}, linker-resolved)ListLiteral.elements:repeated AnnotationArg→repeated LiteralValue(scalar oneof mirroringAnnotationArg10–14 + nestedLiteral; homogeneous kind enforced)google.protobuf.Any), explicit-typing rule pinnedprotocompile's lowering (
fdp/annotations.go) emits against a vendoreddescriptor.pb.go— it must be regenerated from the revised carrier once the protowire PR train (trendvidia/protowire#94–#99) merges.Blast radius today is nil: no shipped grammar path emits enum/message/list annotation args (protowire fixtures 01–06 contain none). When the grammar grows those paths, lowering must also implement the new normative checks: resolved enum emission, list homogeneity rejection, explicit message-literal typing.
Conformance target: protowire
testdata/schema-extensions/11_literal_carrier_golden.textproto(and10_literal_args.protofor the source forms).Blocked on: trendvidia/protowire#99 merging.
Acceptance criteria:
descriptor.pb.goregenerated from the reviseddescriptor.proto.fdp/annotations.gocompiles against it; existing lowering round-trips (fixtures 01–06) unchanged.11_literal_carrier_golden.textproto.