Skip to content

docs: fix CHANGELOG schema-extension numbers to 50400-50404 - #80

Merged
trendvidia merged 1 commit into
mainfrom
fix/changelog-ext-numbers
Jun 16, 2026
Merged

docs: fix CHANGELOG schema-extension numbers to 50400-50404#80
trendvidia merged 1 commit into
mainfrom
fix/changelog-ext-numbers

Conversation

@trendvidia

Copy link
Copy Markdown
Owner

Summary

One-line correction. The 5010050400 schema-extension canonicalization (#78) landed everywhere — STABILITY.md, proto/schema/v1/descriptor.proto, the RFC-001 spec, the IETF draft, the umbrella and issue scaffolds — except CHANGELOG.md, whose edit was dropped in a merge conflict with #79 (which also touched CHANGELOG).

This brings the CHANGELOG entry in line: 5040050499 sub-range, carriers at 5040050404, with the SBE-collision note.

After this, git grep finds no stale schema-extension 5010050104 references on main (the only remaining 5010x mentions are the legitimate SBE allocations and explanatory comments about why the numbers moved).

The 50100->50400 canonicalization (#78) landed in STABILITY.md, the proto,
and the RFC docs, but the matching CHANGELOG edit was dropped in a merge
conflict with #79. Bring CHANGELOG line in sync with the rest of main.
@trendvidia
trendvidia merged commit 14e191c into main Jun 16, 2026
3 checks passed
@trendvidia
trendvidia deleted the fix/changelog-ext-numbers branch June 16, 2026 09:39
trendvidia added a commit that referenced this pull request Jul 17, 2026
…README layout (#115)

- Umbrella #30#35 ticked: M1 shipped June + the spec-#91/#35
  catch-up landed 2026-07-17 (protocompile#66/#67/#69 closed, PRs
  #70#72 + follow-ups #77#80).
- #4 round-trip box ticked: annotations.proto verified against
  protocompile @ 03ef9d8 (GH #58 closed) — parses clean, all 9
  declarations lower into FileAnnotationDecls; fixtures 01–06, 09,
  10, 12 all compile with zero diagnostics.
- #5 boxes ticked; README repository-layout now lists
  proto/schema/v1/{annotations,descriptor,report}.proto,
  proto/schema/config/v1/config.proto, and the draft -01 artifacts —
  the missing README listing was the one genuinely unmet box.
trendvidia added a commit that referenced this pull request Jul 24, 2026
- Implementation boxes #40#43 ticked: protocheck v2.0.0 (2026-07-23)
  shipped the engine SPI (PR#22), function registration + init-time
  verification (PR#23), and validation execution — WithFailFast (PR#21),
  wire-aligned EnrichedViolation model (PR#24), carrier-rule dispatch
  with source-map enrichment (PR#26); catalog + i18n (PR#28, M6).
  v2.1.0 added per-element repeated/map dispatch (PR#35).
- #50#52 ticked: protolsp shipped RFC-001 extended-grammar parsing
  and semantic tokens (protolsp#218 Phases A/B, 2026-07-16), source-map
  navigation with descriptor fallback (protolsp#219 Phase C, #220), and
  annotation-aware diagnostics (#220; completion parity #228,
  runtime-violation overlay #231).
- #70 ticked: protowire-go v1.3.1 (2026-07-23) wires the Validator
  seam through the pxf/pb/sbe decoders (protowire-go#49/PR#59) with the
  protocheck-side adapter (protocheck PR#38); protovalidate adapter as
  nested module (PR#60), noted on #17.
- M0 spec boxes #4#7 ticked (landed via GH #54; annotations.proto
  round-trip verified per GH #58); #6 acceptance boxes ticked against
  the shipped STABILITY.md section.
- #19 annotated: §5.3 executable fixtures shipped (GH #135, PR #138);
  corpus expansion continues in GH #68.

Remaining implementation fronts: #60/#61 (protobuf-go codegen) and
#80 (OpenAPI, GH #93).
trendvidia added a commit that referenced this pull request Jul 24, 2026
…dger (#146)

protobuf-go PR#4 (2026-07-24, closing protobuf-go#2/#3) shipped both
codegen boxes: the §9.3 function stubs (Functions interface,
UnimplementedFunctions, RegisterFunctions binding typed impls to a
protocheck Engine by FQN, carriers 50400/50401/50403 decoded from
options' unknown fields without a schema/v1 module dependency) and the
annotation-aware decoration (@description doc comments, @deprecated
notices on enums/values/messages/fields/getters, function-level
bracket options; byte-identical output without carriers).
Example-as-test emission remains optional/deferred.

With M1–M7 complete, open implementation work is #80 (OpenAPI, GH #93)
plus #18/#19/#20 and per-port adoption.
trendvidia added a commit that referenced this pull request Jul 25, 2026
… (#175)

Resolves the three design gaps GH #93 left open for the OpenAPI
boundary renderer, now that #170 (PR #174) has landed the doc pack it
reads. Decision record: docs/RFC-001-issues.md §#80.

Gap 1 — operation surface. @http gains four defaulted parameters:
summary, operation_id, tags, security (§5.2, annotations.proto). Binding
rules are pinned with them: {name} path segments bind to same-named
top-level request fields; remaining fields bind to the query string for
bodyless methods and to the request body otherwise; operation_id
defaults to <Service>_<Method>, unique by construction; summary falls
back to the first sentence of @description. tags and security take list
literals of strings, because the grammar admits no repeated parameter
type (§5.1 paramType ::= qualifiedIdent) — list-shaped values ride `any`
plus a Literal.list (§8.1), verified against the reference parser before
the text was written. Security-scheme *definitions* stay in generator
config, per the §9.4/#112 argument that keeps deployment topology out of
descriptors.

The alternative — a generator-owned openapi.* library with zero spec
involvement — was considered and not chosen; the cost is recorded rather
than elided: OpenAPI vocabulary now lives in the library every port
mirrors and the draft describes, and it can only grow additively. What
makes it tolerable is that the parameters carry no validation semantics
and impose no port obligation beyond carrying them through the §8.1
carrier.

No `responses` parameter. Responses are derived — success from the
return type, errors from @error_code plus §7 — and authored per-status
entries would need a list of message literals: a shape the carrier
represents (LiteralValue.literal) but the reference parser rejects at an
annotation argument today. Specifying it would put the spec ahead of the
toolchain that can express it.

Gap 2 — audience/visibility tiers. Taxonomy is protowire.docs.v1.Audience
(#170). Artifact filtering only, never descriptor stripping (stripping
has spec implications about image completeness and needs its own pass).
Tiers come from generator configuration, not a new canonical annotation,
because visibility is deployment policy — same reasoning as #112 — with
doc-pack topics contributing their own tier so docs and API surface
cannot disagree. Transitive inconsistency (public reaching internal) is
an error: a dangling $ref or a silently inlined restricted definition
are both worse than refusing.

Gap 3 — availability version. x-since is derived from protoregistry
history, omitted when no registry is configured. No canonical @SInCE is
added: an authored availability claim is unverifiable and nothing would
check it, while the registry already knows.

Additive throughout: the v1.2.0 two-argument @http keeps its meaning and
no existing schema changes shape, pinned by new fixture
21_http_operation.proto, which compiles the bare form beside fully
parameterized uses. No grammar production, extension number, wire, or
report change.
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 26, 2026
…ge + doc pack (#173) (#183)

Implements RFC-001 §#80 (M8) as decided: `pxf openapi` renders
byte-stable OpenAPI 3.1 YAML/JSON from a `pxf build` image and an
optional `pxf docs build` pack. JSON/YAML exist only at the emission
edge (binding format principle); the internal model is the image's
§8.1 carriers, decoded dynamically like every other pxf artifact.

Schema half: messages/enums/§8.2 aliases → FQN-keyed
components/schemas; alias chains compose via allOf and fields $ref
their alias (attribution via the §8.3 source map — expanded alias
annotations are matched by declaration location and never
double-emitted); mappable @Validate shapes → pattern,
minLength/maxLength/minItems/maxProperties, enum,
minimum/maximum/exclusive*; everything else carried through under
x-validation; @description/@deprecated/@example/@default/@required →
counterparts; §6.1 presence → nullability; §6.7 sensitive minima
(no values or examples; x-sensitive markers).

Operation half (§5.2): {name} path binding, query-vs-body by method,
operation_id/summary defaults, tags/security (dangling scheme name =
error). Responses derived, never authored (#177): 200 from return
type, default from the §7 Report rendered through the same mapper,
reachable violation codes under x-error-codes.

Audience (Gap 2): tiers from protowire.openapi.textproto FQN globs
(new protowire.openapi.v1.GeneratorConfig, dynamic-only like docs/v1),
restricted further by doc-pack topics anchoring an element;
--audience filters, never strips; a closure reaching a more
restricted element fails generation naming both ends.
docpack.AudienceRank is the exported single taxonomy ordering.

x-since (Gap 3): derived from protoregistry history (first version
containing the element) when coordinates are configured, omitted
otherwise.

schemaresolve: bundled accessors learn the canonical "protowire/X" →
proto/X aliasing (report.proto imports descriptor.proto that way).

Fixtures in testdata/openapi/ (renderer-owned, not cross-port
conformance); tests pin the mapping arms, both formats' byte
stability, --check, audience filtering, the transitive error, and the
pack tier contribution. README + CHANGELOG + §#80 record updated.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant