Skip to content

feat: panproto 0.52 + codegen emit gate + render pilot (release v0.11.0)#73

Merged
aaronstevenwhite merged 4 commits into
mainfrom
feat/panproto-0.52-emit-gate
Jun 8, 2026
Merged

feat: panproto 0.52 + codegen emit gate + render pilot (release v0.11.0)#73
aaronstevenwhite merged 4 commits into
mainfrom
feat/panproto-0.52-emit-gate

Conversation

@aaronstevenwhite

Copy link
Copy Markdown
Contributor

Bumps the panproto pin v0.47.0 → v0.52.0 and integrates the new codegen capabilities, packaged as release v0.11.0.

What's in it

Panproto pin v0.47.0 → v0.52.0. No source changes were needed for the existing surface (SchemaBuilder, protolens constructors, lens runtime, panproto-check, expression engine). The bump unlocks panproto-parse's verified source-code emit (255 of 261 grammars round-trip under the corpus oracle in 0.52).

Emit gate (idiolect-codegen/src/emit/gate.rs). Every generated file (rust and typescript) is re-parsed through the matching tree-sitter grammar before write or drift-check; codegen fails on ERROR/MISSING recovery vertices. This hardens all codegen, not just the new path. Only lang-rust and lang-typescript grammars are compiled in.

Panproto-native render pilot (idiolect-codegen/src/emit/panproto_rust.rs). The directory mod.rs index files are built as by-construction AbstractSchemas in the tree-sitter-rust theory and rendered through pretty_with_protocol. tests/panproto_pilot_parity.rs pins them byte-equal (post-rustfmt) to the syn target over the repo's real lexicon tree. The syn/oxc targets stay canonical; this is a deliberate pilot slice, not the full swap.

tests/panproto_emit_gate.rs pins EmitVerificationStatus::Verified for both grammars so an upstream emit downgrade is loud at the next bump.

Scope

This is the pilot + gate, intentionally scoped. The full move to panproto-native emit is sequenced in a planning note (local notes/, gitignored) and is gated on three upstream de-novo emit defects filed as panproto#187 (line_comment newline, token_tree anonymous punctuation, blank-lines-before unconsumed). Nothing here is half-finished.

Release packaging (v0.11.0)

Per RELEASE.md, in separate commits:

  • release: v0.11.0 — bumped Cargo.toml, packages/schema/package.json, and the inter-crate path-dep version requirements (the RELEASE.md sed snippet only covers the workspace version line; the idiolect-* path deps pin version = "x" and must be bumped too or the build fails). Cargo.lock refreshed.
  • changelog: v0.11.0[Unreleased] finalized to [0.11.0] — 2026-06-08 with a fresh empty [Unreleased].

Minor bump, consistent with v0.9.0 (the prior panproto pin bump) and the pre-1.0 policy treating minors as the breaking-change boundary.

Verification

  • cargo test --workspace: 506 passed, 0 failed.
  • cargo clippy --workspace --all-targets, cargo fmt --check, cargo deny check: clean.
  • idiolect-codegen check (drift gate): generated tree in sync.
  • Version consistency (Cargo.toml == package.json == v0.11.0): matches what the verify-version release job asserts.

Follow-up

Suggest a RELEASE.md tweak so step 1 also bumps the inter-crate path-dep versions, since the current snippet leaves the build broken until they're done by hand.

Bump the panproto pin v0.47.0 -> v0.52.0 across the workspace. No
source changes were needed for the existing surface; the bump unlocks
panproto-parse's verified source-code emit (255 of 261 grammars under
the corpus oracle).

Wire two panproto-parse modules into idiolect-codegen:

- emit::gate re-parses every generated file (rust and typescript)
  through the matching tree-sitter grammar and fails codegen on
  ERROR/MISSING recovery vertices, before write or drift-check.
- emit::panproto_rust renders the directory mod.rs index files as
  by-construction AbstractSchemas through pretty_with_protocol,
  parity-pinned byte-equal (post-rustfmt) to the syn target. The syn
  target stays canonical.

Pin EmitVerificationStatus::Verified for both grammars so an upstream
emit downgrade is loud at the next bump. Only lang-rust and
lang-typescript grammars are compiled in.
@aaronstevenwhite aaronstevenwhite merged commit 89acb4e into main Jun 8, 2026
13 checks passed
@aaronstevenwhite aaronstevenwhite deleted the feat/panproto-0.52-emit-gate branch June 8, 2026 13:11
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