protocol: make the minor ledger schema-first #129
Labels
No labels
Area/ci
Area/cli
Area/client
Area/client-core
Area/daemon
Area/deps
Area/docs
Area/grid
Area/manual
Area/nix
Area/protocol
Area/pty
Area/render
Area/shaping
Area/skills
Area/transport
Area/vt
Compat/Breaking
Kind/Bug
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Performance
Kind/Security
Kind/Testing
perf-regression-accepted
Reviewed
Confirmed
Reviewed
Duplicate
Reviewed
Invalid
Reviewed
Won't Fix
Status
Blocked
Status
Need More Info
Status
Upstream
No milestone
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
felis-terminal/felis#129
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The minor ledger (
docs/reference/ipc.md"The minor ledger") is currently the hand-written source of truth for what each protocol minor added, and a sync test holds it against declarations spread over Rust: arm metadata,GatedFieldtables,ADDED_FIELDS, closed-enum values, row-codec versions, andMINOR_LEDGERinpreface.rs. Every wire addition means editing several of these by hand and keeping them consistent.Make the schema the source instead: annotate each post-baseline element in
felis.protowith the minor that added it, and derive the rest from that.What could come from the schema
FieldOptionsextension, next to the existing(felis.v1.arm)option and its sync test.EnumValueOptionsextension.ADDED_FIELDS, the arm/enum-value requirements the send gate reads, and possibly the presence test for a gated optional field.What stays outside
packed_cells, not in the proto.Open points
buf breakingdoes not compare field options, so changing a released element's minor would go unnoticed; the wire-compat check needs to compare annotations against the release baseline.SearchQuery.source) is marked versus a plain added field.The approach is to be worked out before implementation; this issue records the direction.