Skip to content

conformance: add check-decode --format pxf-pb and twins of the struct-binding table (protowire#509) #35

Closed
trendvidia/protowire
#590

Description

@bfrancojr

trendvidia/protowire#509 (decided by the owner) adds two cross-port checks of the bytes a port writes.

  1. Byte gate. scripts/cross_write_check.sh (conformance: add a gate for the PB bytes ports write from PXF text protowire#511) runs check-decode --format pxf-pb --schema text.v1.<M> --proto testdata/text/text.proto --input <file>.pxf over the text goldens and testdata/write/cases. The mode writes the message's PB bytes on stdout (map entries in key order), or exits 1 where the input must be refused. The script compares raw bytes with protowire-go's in testdata/write/golden. Go (protowire-go#240) and Java (protowire-java#164) have it. Run against Java main, it found protowire-java#156, #157 and #158.
  2. Struct-binding table. testdata/values/values.tsv (conformance: a shared table pins the bytes struct-binding APIs write protowire#518) lists values with the bytes protowire-go's encoding/pb writes for each. If this port has a struct or class binding API, its golden test keeps a twin of each row's struct (field numbers and types are in values_table_test.go) and compares bytes. It reads the spec's file, or a copy that CI checks against it.

Until this lands the gate prints · <port>: no pxf-pb harness, not run.

Done when: check-decode has pxf-pb, the gate runs this port (any case it can't pass yet is excluded in the script with an issue), and either the port's golden test covers every row of values.tsv or the port has no struct API to cover.

Activity

  1. bfrancojr commented on Nov 7, 2026

    @bfrancojr
    CollaboratorAuthor

    Harness half: #49 (check_decode --format pxf-pb / pb-text). Gate half: trendvidia/protowire#590 (draft until #49 merges) runs Python in the write, text and security gates and adds it to each workflow's REQUIRE_PORTS. Measured locally: write 87/87 and text 60/60 for Python with no exclusions, security 136/136. This closes when #590 merges.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions