Date: 2026-02-01 Updated: 2026-09-18 Status: Done
Every shape the node and the browser both speak is declared in a .proto and generated from there. The Context below describes the state this replaced.
One thing it turned out proto has no honest home for, because it is not a wire shape and is held to its Go source by a test instead:
standing-watcher-id.test.tsweb/ts/sym.ts is the UI's own, not a copy of Go: the symbol, the one place a segment is mapped to a glyph.
We currently maintain type definitions in multiple places:
ats/types/plugin/grpc/protocol/Use Protocol Buffers (.proto files) as the single source of truth for shared type definitions.
int64 for timestamps, we use ISO stringsstring for JSON attributes, we use native objectsRust: Uses proto-generated types from qntx-proto crate (prost)
ats::Attestation internallyqntx_proto::proto_convertTypeScript: Uses proto-generated interfaces only (see ADR-007)