cmd/pxf: pxf build — compile v1.2 schemas to a lowered FileDescriptorSet image (#164) - #167
Merged
Conversation
…Set image (#164) Two-stage workflow: pxf build is the only v1.2-aware step; the image it emits is stock protobuf for unmodified buf/protoc. Dependency layout is Option 1 — the trendvidia/protocompile fork coexists with upstream bufbuild/protocompile v0.14.1 in the root module graph, keeping go install .../cmd/pxf@latest a single binary. - directory args are import roots (trailing /... accepted); file args compile under their base name - engine config per RFC-001 §9.4: --function-library > --config > PROTOWIRE_CONFIG > discovered protowire.config.textproto > defaults; function_libraries compile into the image - canonical annotation libraries + WKTs resolve from the bundled embed - deterministic marshaling: byte-stable images across runs - --check: diagnostics-only CI entry point Tests pin the #164 acceptance bar: positive corpus byte-stable and loadable by stock protodesc; every invalid/ fixture rejected modulo the tracked gap trendvidia/protocompile#123 (skip flips to failure when the fork closes it).
This was referenced Jul 25, 2026
trendvidia
added a commit
that referenced
this pull request
Jul 26, 2026
CHANGELOG: cut the 1.5.0 section (docs platform layer 1, pxf openapi, @http operation surface, @sensitive class, pxf build, corpus pins for message-literal list elements and cyclic aliases, §6.4/§7 tightenings); restore the missing [1.4.0] header lost at the last cut and add the pxf build entry #167 missed. STABILITY.md gains the v1.5 section: additive minor, no wire changes, conformance-claim deltas enumerated.
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.
Implements #164 with Option 1 for the dependency layout: the trendvidia/protocompile fork (v0.20.0) coexists with upstream bufbuild/protocompile v0.14.1 in the root module graph — different module paths, no conflict — so
go install github.com/trendvidia/protowire/cmd/pxf@lateststays a single binary.What
New
pxf buildsubcommand, the end-user front-end for the two-stage workflow:.protobeneath, root-relative import paths; trailing/...accepted); file args compile under their base name with the parent dir as root. Two args claiming one import path for different files is a hard error.engineconfig.Loadwith the normative precedence —--function-library(per-setting flag) >--config>PROTOWIRE_CONFIG> discoveredprotowire.config.textproto(upward walk from the first arg) > defaults. Configuredfunction_librariescompile into the image; engine-runtime knobs are ignored per the issue scope.--check: compile + rendered diagnostics only, no output — the CI entry point.protowire/schema/v1/annotations.proto,pxf/annotations.proto(and the rest of the canonical tree) serve from the repo-rootBundledProtoembed; WKTs from the compiler's opener. No-pneeded.-ofor a file.Acceptance mapping
testdata/schema-extensions/fixtures → byte-stable FDS, loadable by stockprotodesc(TestBuildPositiveCorpus,TestBuildDirectoryRoot)--checkoverinvalid/exits non-zero per the manifest, modulo Reject reserved 'protowire.' prefix in @sensitive(class) values (RFC-001 §6.7 rule 1) protocompile#123 (reserved_sensitive_class.proto— recorded incheckKnownGaps; the skip flips to a failure the moment a fork upgrade closes the gap)cmd/pxf/README.md(glance table, full section,PROTOWIRE_CONFIGenv row)buf generateequivalence with theinternal/schemaextharness is the same fork pipeline + forked protoc-gen-go already exercised by the nested-module CI job; no new harness added hereRefs: RFC-001 §8.5/§9.4, umbrella #55 (M7 tooling), #69 stay-forked resolution.
Closes #164.