corpus: message-literal list elements in 10_literal_args + carrier golden (#176) - #178
Merged
Merged
Conversation
…lden (#176) Pairs the corpus with trendvidia/protocompile#127 (fixed in #128, merged post-v0.21.0): message literals as list elements at annotation arguments. - 10_literal_args.proto: new @samples([Money{...}, Money{...}]) use site; drop the unused annotations.proto import (hygiene note in #176). - 11_literal_carrier_golden.textproto: pin the lowered list-of-message shape (LiteralValue.literal wrapping an Any per element) and realign the golden to actual reference-lowered output — positional args carry no name (§8.1 "empty for positional") and location.file is the fixture's import path, not the old notional path. - invalid/untyped_list_element.proto: MUST-NOT-COMPILE fixture for the untyped form [{...}] under an any-typed parameter (§5.1 rule 1) + manifest row. - go.mod: fork bump v0.20.0 -> v0.21.1-0.20260725214716-467a41569c93 (includes v0.21.0). checkKnownGaps entry for reserved_sensitive_class.proto removed: protocompile#123 closed in v0.21.0 and the fixture is now genuinely rejected. Stale drift note for protocompile#121 in 14_refinement_kinds.proto updated.
trendvidia
force-pushed
the
corpus-176-message-literal-list
branch
from
July 25, 2026 22:04
f307a89 to
1b7983a
Compare
trendvidia
added a commit
that referenced
this pull request
Jul 25, 2026
The deferral's parser precondition closed (trendvidia/protocompile#127 -> #128; corpus pinned by #176 / PR #178), leaving demand — and none exists. Records the decision in RFC-001-issues.md §#80: derived-only stands, and the deferral converts into a principled bar (authored per-status responses are unverifiable claims, per the Gap-3 @SInCE and #112 @Encrypted reasoning). A future proposal needs a concrete consumer, with a narrow defaulted scalar preferred over an authored per-status vocabulary. No normative spec change: §5.2 already carries no responses parameter and its §#80 rationale pointer is unchanged.
trendvidia
added a commit
that referenced
this pull request
Jul 25, 2026
The deferral's parser precondition closed (trendvidia/protocompile#127 -> #128; corpus pinned by #176 / PR #178), leaving demand — and none exists. Records the decision in RFC-001-issues.md §#80: derived-only stands, and the deferral converts into a principled bar (authored per-status responses are unverifiable claims, per the Gap-3 @SInCE and #112 @Encrypted reasoning). A future proposal needs a concrete consumer, with a narrow defaulted scalar preferred over an authored per-status vocabulary. No normative spec change: §5.2 already carries no responses parameter and its §#80 rationale pointer is unchanged.
trendvidia
added a commit
that referenced
this pull request
Jul 25, 2026
Replaces the post-v0.21.0 pseudo-version (v0.21.1-0.20260725214716-467a41569c93, pinned by #176/PR #178 for the message-literal list-element fix #128) with the tagged release that contains it, and aligns the nested internal/schemaext test-only module (v0.20.0 -> v0.22.0) so both modules ride one fork version. New in v0.22.0 beyond the pseudo-version: #130 — broken and cyclic alias bases are diagnosed at the declaration site even when unreferenced (spec-correct tightening). No corpus fixture carries a broken or cyclic alias, so no golden or known-gap change; full suite and the schemaext round trip are green on the tag.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #176.
Pairs the corpus with trendvidia/protocompile#127 → trendvidia/protocompile#128 (merged post-v0.21.0): the reference parser now accepts message literals as list elements at annotation arguments, so the corpus pins the shape.
What changed
10_literal_args.proto— newannotation samples(values: any)+ a fourthOrderfield using@samples([Money{currency: "USD", units: 5}, Money{currency: "EUR", units: 7}]). The unusedprotowire/schema/v1/annotations.protoimport is dropped (the incidental hygiene note in Corpus: message-literal list elements in 10_literal_args + 11 carrier golden (RFC-001 §8.1 LiteralValue.literal) #176 — the fixture only uses locally-declared annotations).11_literal_carrier_golden.textproto— pins the lowered list-of-message shape: each element isLiteralValue.literalwrappingLiteral.message, its owngoogle.protobuf.Anyserialized at lowering (EUR/7wire bytes\n\003EUR\020\007). While re-authoring, the golden is realigned to the actual reference-lowered carrier (verified by compiling the fixture withpxf buildon the bumped fork and dumping ext 50401): the fixture writes every argument positionally, soAnnotationArg.nameis empty per §8.1's "empty for positional", andlocation.fileis the fixture's import path10_literal_args.protorather than the old notionalfixtures/literals.proto. The previousname: "value"/notional-path entries predated the toolchain (authored at spec: finalize Literal carrier shape (RFC-001 §8.1) #99/spec: pin message-literal source grammar (RFC-001 §5.1) #108).invalid/untyped_list_element.proto— MUST-NOT-COMPILE fixture for the untyped form[{...}]under anany-typed parameter (RFC-001 §5.1 literal rule 1), plus its manifest row. Rejected with exactly protocompile's documented diagnostic:message-literal list element in argument "values" ... requires an explicit type name.go.mod— fork bumpv0.20.0→v0.21.1-0.20260725214716-467a41569c93(the CI: no build coverage for editors/ — vscode and jetbrains changes merge unverified #128 merge commit; includes v0.21.0). Consequences picked up:checkKnownGapsentry forreserved_sensitive_class.protoremoved — protocompile#123 closed in v0.21.0 andTestCheckInvalidFixturesnow asserts genuine rejection (no skip).14_refinement_kinds.protoupdated (fixed in v0.21.0).internal/schemaext(nested test-only module) stays on v0.20.0 — its harness compiles fixtures 01–06 only and is untouched by this change.Verification
go test ./...clean on the bumped fork.pxf buildover the fixture, carrier dumped viapwsv1.E_FieldAnnotationsand diffed against the golden.pxf build --check invalid/untyped_list_element.protofails with the expected explicit-type-name diagnostic.Downstream
Un-blocks revisiting the
@httpresponsesparameter deferral — tracked in #177.Precedent: trendvidia/protocompile#121/#123/#127 corpus/toolchain pairing.