[v0.1/Proto Review] 1.0 の wire major/minor と BREAKING baseline を今決める #147
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
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
natsukium/felis#147
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?
背景
現行
crates/felis-protocol/src/preface.rsはPROTOCOL_MAJOR = 1,PROTOCOL_MINOR = 9で 1.0 リリース前の pre-release 段階にもかかわらず minor が 9 まで積み上がっている。docs/reference/ipc.mdThe minor ledger には 0..9 の全 row が記載され、BREAKING.mdにはfirst-release行が残る。#12の Contract freeze boundary は「first tag で preface, protobuf schema, row codec, evolution rules を凍結」と定義し、#30は「全 wire 編集後に protocol 2.0 へ reset」を要求している。しかし現行の 1.9 は「1.0 で公開するなら 1.0 が最初の stable major になるはず」という期待とずれる:reference/workspace.mdVersioning はBuildIdentity <version> (<revision>)を0.1.0で統一しているが、wire major は1のまま。CHANGELOG.mdはUnreleasedのみで、wire 1.9 がどの tag から public か不明。BREAKING.mdのfirst-releaseは release baseline がない間の暫定表現で、#115が release workflow を持つまで有効。1.0 までにproto-baseline/を commit するか、BREAKING.mdをbase: <sha>に置き換えるか決める必要がある。さらに
PROTOCOL_MINOR = 9の ledger は 1.0 前の breaking を minor として積んだ履歴であり、1.0 公開後に「1.9 からの additive のみが minor」になる。1.0 でPROTOCOL_MINORを0に reset せず 9 のまま tag すると、1.0 の user がminor 9を「1.0 の新機能」と誤読する。問い
1.0 で以下を決める:
1のまま1.0を切るか、2.0に bump して#30の意図通り「breaking を跨いだ clean baseline」として公開するか。PROTOCOL_MINORを9のまま tag するか、0に reset して 1.0 の ledger を0: base schemaのみにし、既存の 1..9 をexplanation/architecture/ipc.mdの history として退避するか。BREAKING.mdのfirst-releaseをbase: <tag-sha>/proto-baseline/のどちらで置き換え、just proto-compatが tag 後にどの baseline と比較するか。提案
1.9のままv0.1.0を切る。BREAKING.mdのfirst-releaseをv0.1.0tag 時点でbase: <v0.1.0-sha>に置き換え、以後の breaking はBREAKING.mdにbase行を追加する運用。PROTOCOL_MINORは 9 のまま frozen とし、reference/ipc.mdledger は 0..9 を v0.1.0 の ledger として凍結。#30の意図通り 1.0 でPROTOCOL_MAJOR = 2,PROTOCOL_MINOR = 0に bump。既存の 1.1..1.9 の ledger はexplanation/architecture/ipc.md「Pre-release history」に退避し、reference/ipc.mdledger は2.0: base schemaのみに reset。BREAKING.mdはproto-baseline/を v0.1.0 の proto snapshot で初期化し、first-release行を削除。just proto-compatはproto-baseline/との比較に切り替える。案B は「1.0 の ledger が additive のみ」という純度が高いが、
SUPPORTED_MAJOR_MIN/MAX = 1の deprecation window を持つコードが2に変わるため、preface.rsのSUPPORTED_MAJOR_MIN/MAXとMINOR_LEDGERのテストが 1.0 で一括変更になる。案A は変更が最小だが、ledger が pre-release の breaking を additive と混在させたまま frozen になる。判定基準
v0.1.0tag 時のPROTOCOL_MAJOR.MINORがreference/ipc.mdledger 先頭行とpreface.rsMINOR_LEDGER先頭要素で一致し、cargo test -p felis-protocolのthe_protocol_version_matches_the_schemaが green であること。BREAKING.mdがfirst-release/base: <sha>/proto-baseline/のいずれかで 1.0 の baseline を一意に指し、just proto-compatが tag 後に baseline との比較で green であること。CHANGELOG.mdv0.1.0entry に wire バージョンが明記され、skills/felisの version 記述と一致すること。対象ファイル
crates/felis-protocol/src/preface.rs(PROTOCOL_MAJOR,PROTOCOL_MINOR,MINOR_LEDGER,SUPPORTED_MAJOR_MIN/MAX)crates/felis-protocol/proto/felis.proto(packagefelis.v1の version コメント)crates/felis-protocol/proto/BREAKING.md(first-release/base:/proto-baseline/)docs/reference/ipc.md「Versioning」「The minor ledger」docs/reference/workspace.md「Versioning」CHANGELOG.md(Unreleased→v0.1.0)Parent: #12 および #30 / #52
Triage (2026-09-05)
Already decided.
f56f5529(protocol: reset wire-break baseline to 1.0, the #138 decision) keepsPROTOCOL_MAJOR = 1/PROTOCOL_MINOR = 9, freezes the ledger at 0..9, and leavesfirst-releaseinBREAKING.mduntil #115 gives the tag path a committed baseline. That is option A of this issue, question by question:first-releaseuntil the post-release baseline commit, owned by #115.Closing as resolved. The remaining loose end is the #12 body, which still describes #30 as a 2.0 reset; a correction is posted on #12.