[1.0 Review] リリース凍結物(crate version / spec REQ / docs / 成果物 / audit)の最終確認 #9
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#9
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?
背景
1.0 リリースは単にタグを打つことではなく、CRATE_VERSION / PROTOCOL_VERSION / 仕様文書 / リリース成果物の契約を凍結すること。
reference/workspace.mdの Versioning 節に「二つの version 軸(crate version と protocol version)は別物」と明記されているが、1.0 で何を凍結し何を additive にするかの最終確認が必要。backlog.mdにも多数の deferred 項目が残っている。現状の問題 / 凍結前に決めるべき点
1. crate version
0.1.0のまま 1.0 を打つか現行: 11 crate 全て
0.1.0、workspacepublish = false。felis-protocolは将来 crates.io 公開を想定し0.1.0のままで wire のPROTOCOL_MAJOR=1 / MINOR=5と独立。1.0 で:
felis-protocolを1.0.0に上げ、他 crate は0.1.0のままにするか。1.0.0に揃えるか。0.1.0のまま tagv1.0.0を打つか(workspace version と git tag を分離)。reference/workspace.mdの「Revisit iffelis-protocolis published」節を 1.0 でどう更新するか。2. spec REQ-XXX の凍結と ledger
reference/spec.mdに REQ-001..REQ-1206 が RFC2119 レベル付きで列挙。各 REQ はreference/*/explanation/*のいずれかを source とする。1.0 で REQ 番号を凍結(renumber 不可)にするか、将来の追加は末尾に append のみにするか。reference/ipc.mdの minor ledger(各 minor で追加された kind/field/variant と old-peer behavior)が 1.0 時点でどこまで埋まっているか。PROTOCOL_MINOR=5までの ledger が正確か最終監査が必要。3. docs の Diátaxis 4象限と twin 則
tutorials/(learning)/how-to/(task)/reference/(lookup)/explanation/(understanding)の4象限と、「subject が twin に分かれたら reference が normative、explanation が rationale」を担う twin 則。docs/README.mdが map。1.0 で docs ツリーを出版(
felis-docsの submodule)する際に、twin 間で重複・乖離が無いか最終 grep sweep(doc-cascadeskill の手順)が必要。特にreference/cli.md/control-surfaces.md/explanation/architecture/control-surfaces.mdの三角が 1.0 で整合しているか。4. リリース成果物と platform matrix
reference/workspace.mdの Build matrix(x86_64-linux / aarch64-linux / aarch64-darwin / x86_64-pc-windows-msvc)とflake.nixの.#windowscross shell。1.0 で配布する成果物:felis(front-door)+felis-client(GUI)+felis-daemonの3バイナリか、felis-cli/felis-client/felis-daemonの crate 名のままか。nix/hm-module.nixの Home Manager module。felis-config.schema.jsonの JSON Schema。xterm-felis(reference/terminal-identity.md)。justfileのnix-build/macos-app/build-windows-msvcが 1.0 の再現ビルドとして機能するか。5. security audits の凍結
reference/security-audits.mdにO_CLOEXEC+O_NOFOLLOW開口部とfelis-protocolpurity の standing audit。1.0 で audit 項目を追加(例:FELIS_SOCKETの symlink 解決、SpawnArgs.envの deny list)するか、現行2項目で凍結するか。6. machine output 契約(
v:1envelope)reference/cli.mdの envelope({"v":1, ...})は CLI output contract の epoch で wire minor では bump しない。felis bridgeも同じv:1。Point(human|json)/ Stream(human|jsonl)/ Exempt の3クラス、terminal object(end/error)、error.kindの closed set(no_match, ambiguous, ...)が 1.0 で凍結。問い:
error.kindの closed set に将来の追加は additive か breaking か。reference/cli.mdに「fields may be added within an epoch」とあるが、kindの追加は consumer が branch する値なので breaking に近い。1.0 でkind追加は minor 扱いにするか major 扱いにするか。7. backlog の deferred 項目の扱い
backlog.mdに多数の Blocked/deferred(例: Windowsinherit_handles、--configflag、Kani 未証明、conPTY win32-input-mode、heavy-payload suppression bit)。1.0 で backlog から外す(Won't fix としてnon-goals.mdに昇格)か、1.0 以降の roadmap として残すか。提案
docs/backlog.mdから独立したdocs/howto/release.mdまたはRELEASE_CHECKLIST.mdに切り出し、以下を gate にする:just check(fmt + clippy + nextest + deny)greenjust schemaの生成物が stale でないjust proto+buf breakingで wire compat 確認reference/spec.mdの REQ 番号とreference/ipc.mdの ledger の整合reference/security-audits.mdの audit 通過reference/workspace.mdに明記し、1.0 tag とPROTOCOL_VERSIONの関係をCHANGELOG.mdの Unreleased → 1.0 に記録。error.kindの追加ポリシーをreference/cli.mdの envelope 節に明記(additive だが consumer は unknown kind をinternal扱いで fallback すべき、等)。判定基準
cargo publish(felis-protocol)しても semver と protocol version が衝突しないこと。just --listでリリースに必要な全 gate を発見できること。CHANGELOG.mdが、ユーザがfelis --versionとfelis daemon statusの出力から「どの build がどの wire を喋るか」を判断できる情報を含むこと。cc @natsukium
Superseded by #17, #18, #19, #29, #30, and the final release task #31. #12 now separates identity, artifacts, compatibility, schemas, wire baseline, and exact-revision publication.