Complete the wire-gate release baseline workflow (Forgejo release API + baseline commit) #115

Open
opened 2026-09-05 00:20:06 +09:00 by natsukium · 1 comment
Owner

Migrated from docs/backlog.md (Blocked / Release baseline for the wire gate).

scripts/proto/compat.sh has a tag path (GITHUB_REF_TYPE=tag: compare with proto-baseline/, ignore BREAKING.md, accept first-release only while no baseline is committed), proven by its self-test, and release.yml's proto-compat job now takes it on every tag. That is the first of the three things the path was waiting for. Two remain, and both need the Forgejo release API rather than the repository: accept first-release only when the API reports no final release, and otherwise require proto-baseline/RELEASE to name the latest final release with a schema byte-equal to that release's attached felis.proto (a baseline behind the published release fails the tag, so a failed post-publish baseline commit blocks the next tag rather than narrowing the check); and commit the new baseline to main after a final release publishes (prerelease tags never update it). Until then first-release stays live indefinitely, which is the right answer only while no final release exists, and the baseline commit is a human step after the tag. The major the first post-release break lands on is a decision ipc.md "Versioning" leaves open until then.

Remaining work:

  1. Gate first-release on the Forgejo release API (accept only when no final release exists; otherwise require proto-baseline/RELEASE matches the latest final release's attached felis.proto byte-for-byte).
  2. Auto-commit the new baseline to main after a final release publishes (prerelease tags never update it).

Refs: docs/reference/ipc.md Versioning, docs/reference/testing.md Wire compatibility gates, scripts/proto/compat.sh, crates/felis-protocol/proto/BREAKING.md, .forgejo/workflows/release.yml.

Migrated from `docs/backlog.md` (Blocked / Release baseline for the wire gate). > `scripts/proto/compat.sh` has a tag path (`GITHUB_REF_TYPE=tag`: compare with `proto-baseline/`, ignore `BREAKING.md`, accept `first-release` only while no baseline is committed), proven by its self-test, and `release.yml`'s `proto-compat` job now takes it on every tag. That is the first of the three things the path was waiting for. Two remain, and both need the Forgejo release API rather than the repository: accept `first-release` only when the API reports no final release, and otherwise require `proto-baseline/RELEASE` to name the latest final release with a schema byte-equal to that release's attached `felis.proto` (a baseline behind the published release fails the tag, so a failed post-publish baseline commit blocks the next tag rather than narrowing the check); and commit the new baseline to `main` after a final release publishes (prerelease tags never update it). Until then `first-release` stays live indefinitely, which is the right answer only while no final release exists, and the baseline commit is a human step after the tag. The major the first post-release break lands on is a decision [ipc.md](reference/ipc.md) "Versioning" leaves open until then. Remaining work: 1. Gate `first-release` on the Forgejo release API (accept only when no final release exists; otherwise require `proto-baseline/RELEASE` matches the latest final release's attached `felis.proto` byte-for-byte). 2. Auto-commit the new baseline to `main` after a final release publishes (prerelease tags never update it). Refs: `docs/reference/ipc.md` Versioning, `docs/reference/testing.md` Wire compatibility gates, `scripts/proto/compat.sh`, `crates/felis-protocol/proto/BREAKING.md`, `.forgejo/workflows/release.yml`.
Author
Owner

Triage (2026-09-05)

P2, but time-bound. Not needed for the v0.1.0 tag itself (first-release is correct while no final release exists), but step 2 (commit proto-baseline/ after the release publishes) is the first thing due after #31, and step 1 must exist before the second tag. Listed on #12 as the post-release follow-up. #147 closed onto this issue.

## Triage (2026-09-05) **P2, but time-bound.** Not needed for the v0.1.0 tag itself (`first-release` is correct while no final release exists), but step 2 (commit `proto-baseline/` after the release publishes) is the first thing due after #31, and step 1 must exist before the second tag. Listed on #12 as the post-release follow-up. #147 closed onto this issue.
Sign in to join this conversation.
No description provided.