Lane: reflection/parse (sweep 2, finding 5)
No first-value-must-be-zero check for proto3 enums (src/parse.js:694-728), and src/field.js:346-351 picks the implicit default as the first defined key — so a proto3 message field's default can become nonzero (spec requires 0). Also a key-order quirk for out-of-order zero values.
Repro (executed): enum E { A = 1; } + proto3 field → typeDefault === 1.
Verdicts: both Confirm, Worth exploring (invalid proto / order quirk).
Upstream: no match.
Decision question: Adopt (parse-time validation for proto2/proto3; keep first-key default only where legal) or Reject?
Lane: reflection/parse (sweep 2, finding 5)
No first-value-must-be-zero check for proto3 enums (
src/parse.js:694-728), andsrc/field.js:346-351picks the implicit default as the first defined key — so a proto3 message field's default can become nonzero (spec requires 0). Also a key-order quirk for out-of-order zero values.Repro (executed):
enum E { A = 1; }+ proto3 field →typeDefault === 1.Verdicts: both Confirm, Worth exploring (invalid proto / order quirk).
Upstream: no match.
Decision question: Adopt (parse-time validation for proto2/proto3; keep first-key default only where legal) or Reject?