[v0.1/P1] Strip pre-release history and redundancy from the 1.0 base schema #330
Labels
No labels
priority/P0
priority/P1
priority/P2
release/v0.1.0
status/blocked
status/planned
type/bug
type/design
type/test-gap
type/tracker
No milestone
No project
No assignees
1 participant
Due date
No due date set.
Dependencies
No dependencies set
Reference
natsukium/felis#330
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?
Background
The first public wire contract is the minor-0 base schema (#313, commit
db188f6a).felis.protoand the docs state that a number retired while no baseline exists is free again, andAGENTS.mdsays source comments are never for history. Yet the schema still carriesreservednumbers, retired enum values, a superseded field, and history comments from pre-release churn. The freeze is the last inexpensive point to remove them.Findings
1. Reclaim retired field numbers and enum values
reservedlines plus history comments, all of them pre-release retirements:RefusalReason(felis.proto:262-263, GENERATION / ENCODING)ConnHello(:817-818,wire_generation)ConnRefused(:863-864,daemon_generation)ImageHeader(:1494-1495, width / height / format / total_bytes)ImageChunk(:1525-1526),ImageComplete(:1535-1536),ImageShowFrame(:1581-1582)SessionAttached(:1711-1712,created)RetargetTarget(:2089-2090, the old optional bag)ResourceReport(:2225-2226, used / limit),ResourceKind(:2261-2263, worker_threads / grids)RegionRowsDone(:2395-2396),SearchMsg(:2494)Renumber the surviving fields densely, delete the
reservedlines and the comments that narrate what a number used to be, and acknowledge the wire break incrates/felis-protocol/proto/BREAKING.mdwith abase:line (the mechanism already exists).2. Drop
ConnWelcome.build_idbuild_id(:832-840) is "superseded byidentity, kept populated for a reader that knows only it." No such reader can exist before the first release. Remove the field and thedaemon_build_idit feeds infelis-client-core/src/connector.rs;BuildIdentityis the typed answer.3. Omit
since: 0from the base armsAll 86 base arms write
since: 0, which is the proto3 default and is absent from the descriptor when 0. It becomes meaningful only when a minor adds an arm. Omit it from the base arms so an addition is the only place asinceappears.Why
AGENTS.md: a comment survives only for a why-not or an invariant, never for history.felis.protoheader: "a number retired while no baseline exists is free again."Acceptance criteria
felis.protocarries noreservedline and no history comment for a pre-release retirement; surviving fields are densely numbered.ConnWelcomecarries onlyBuildIdentity.since(0 default); the arm-routing sync still passes.just protoregenerated;BREAKING.md, the protocol tests, andCHANGELOG.mdupdated.Related
Coordination note: the
ResourceReport/ResourceKindretirements reclaimed here overlap with #328 case 2 (theResourceReportoptional-field shape). Whichever lands second should renumber on top of the other rather than against the current file.Decision: do, mechanical, with one explicit exclusion (reviewed)
Verified: 30
reserveddeclarations, of which five are live, not history, and must stay:reserved 100;onConnMsg,InputMsg,GridMsg,ImageMsg,PushMsghold the wire-wide correlation-envelope slot for the uncorrelated families (felis.protoheader, "field 100 of every family wrapper"). The other 25 declarations and their history comments are the pre-release retirements listed above and are removed, with the surviving fields renumbered densely. Also: dropConnWelcome.build_idand thedaemon_build_idit feeds inconnector.rs; omitsince: 0from all 86 base arms.This applies the schema's own rule ("a number retired while no baseline exists is free again"). One
base:line inBREAKING.md. Lands first in the proto batch because it renumbers; #328, #327, #333 each rebase on the previous merge with their ownbase:line (tools/proto/compat.pymatches against the immediate merge-base, so sequential lines stay valid). The #326 item-1 retention note forSessionMsgfield 100 rides this PR's doc cascade.