ci: compare a tag's wire schema with the newest release's tag, not a committed copy #488

Merged
natsukium merged 1 commit from ci/drop-baseline-job into main 2026-09-26 15:41:29 +09:00
Owner

The tag path of the wire gate compared against a copy of the released felis.proto committed under proto-baseline/, and checked that copy byte for byte against the release asset. The released tag already holds those bytes. Maintaining the copy took a release job that pushed a branch and opened a PR with RELEASE_TOKEN, and because main is protected, every tag after a final release failed the gate until someone merged that PR.

  • tools/proto/compat.py: on a tag (and on a null-sha push), ask the forge only which tag is the newest published final release, then run buf breaking against that tag's commit from the full-history checkout. If no final release is published, the gate passes. If the release tag is missing from the clone, the gate fails.
  • The first-release acknowledgment is gone: it stood in for a missing committed baseline, and "no final release published" now carries that meaning.
  • release.yml: the baseline job is removed; publish.py baseline and its tests are removed.
  • Docs (testing, ipc reference and explanation, workspace) and the felis.proto comment updated; the explanation records the committed copy as the rejected alternative.

Verified: both self-tests pass (compat.py 57 cases, publish.py 12 cases), and a live tag-path run against this forge reports that no final release is published and exits 0.

This should land before v0.1.0-rc.9, so the rc exercises it together with the GitHub release mirror (#487).

The tag path of the wire gate compared against a copy of the released `felis.proto` committed under `proto-baseline/`, and checked that copy byte for byte against the release asset. The released tag already holds those bytes. Maintaining the copy took a release job that pushed a branch and opened a PR with `RELEASE_TOKEN`, and because `main` is protected, every tag after a final release failed the gate until someone merged that PR. - `tools/proto/compat.py`: on a tag (and on a null-sha push), ask the forge only which tag is the newest published final release, then run `buf breaking` against that tag's commit from the full-history checkout. If no final release is published, the gate passes. If the release tag is missing from the clone, the gate fails. - The `first-release` acknowledgment is gone: it stood in for a missing committed baseline, and "no final release published" now carries that meaning. - `release.yml`: the `baseline` job is removed; `publish.py baseline` and its tests are removed. - Docs (testing, ipc reference and explanation, workspace) and the `felis.proto` comment updated; the explanation records the committed copy as the rejected alternative. Verified: both self-tests pass (`compat.py` 57 cases, `publish.py` 12 cases), and a live tag-path run against this forge reports that no final release is published and exits 0. This should land before `v0.1.0-rc.9`, so the rc exercises it together with the GitHub release mirror (#487).
ci: compare a tag's wire schema with the newest release's tag, not a committed copy
Some checks failed
bench / Criterion full-suite snapshot (pull_request) Has been skipped
fuzz / cargo fuzz nightly long-run (pull_request) Has been skipped
darwin / detect relevant changes (pull_request) Successful in 14s
windows / detect relevant changes (pull_request) Successful in 12s
darwin / darwin docs-only no-op (pull_request) Has been skipped
windows / windows docs-only no-op (pull_request) Has been skipped
bench / Criterion regression gate (pull_request) Successful in 2m10s
darwin / build felis (aarch64-darwin) (pull_request) Successful in 53s
fuzz / cargo fuzz smoke (per target) (pull_request) Successful in 1m7s
windows / cargo nextest (Windows) (pull_request) Successful in 3m18s
pr / nix flake check (pull_request) Successful in 34s
windows / frontend smoke (Windows) (pull_request) Successful in 42s
windows / package felis (x86_64-pc-windows-msvc) (pull_request) Has been skipped
pr / wire schema is compatible with the base (pull_request) Successful in 6s
pr / frontend smoke (x86_64-linux) (pull_request) Successful in 26s
windows / cargo clippy (Windows cross) (pull_request) Successful in 13s
pr / cargo build / clippy / test / deny (pull_request) Failing after 1m42s
cb512a8656
The tag path of the wire gate already asked the forge for the newest
published final release and then required a committed copy under
proto-baseline/ to match its felis.proto asset byte for byte. The tag
itself holds those bytes, so the copy was a second record to keep equal
to the first. Keeping it cost a release job that pushed a branch and
opened a pull request with RELEASE_TOKEN, and because main is protected
every tag after a final release stayed red until a human merged that
pull request.

The gate now asks the forge only which tag is the newest final release
and runs buf breaking against that tag's commit, which the full-history
checkout already carries. With no final release published there is
nothing to answer to, so the first-release acknowledgment that stood in
for a missing baseline goes too, along with the baseline job and the
publish.py subcommand behind it.

Assisted-by: Claude Code
natsukium force-pushed ci/drop-baseline-job from cb512a8656
Some checks failed
bench / Criterion full-suite snapshot (pull_request) Has been skipped
fuzz / cargo fuzz nightly long-run (pull_request) Has been skipped
darwin / detect relevant changes (pull_request) Successful in 14s
windows / detect relevant changes (pull_request) Successful in 12s
darwin / darwin docs-only no-op (pull_request) Has been skipped
windows / windows docs-only no-op (pull_request) Has been skipped
bench / Criterion regression gate (pull_request) Successful in 2m10s
darwin / build felis (aarch64-darwin) (pull_request) Successful in 53s
fuzz / cargo fuzz smoke (per target) (pull_request) Successful in 1m7s
windows / cargo nextest (Windows) (pull_request) Successful in 3m18s
pr / nix flake check (pull_request) Successful in 34s
windows / frontend smoke (Windows) (pull_request) Successful in 42s
windows / package felis (x86_64-pc-windows-msvc) (pull_request) Has been skipped
pr / wire schema is compatible with the base (pull_request) Successful in 6s
pr / frontend smoke (x86_64-linux) (pull_request) Successful in 26s
windows / cargo clippy (Windows cross) (pull_request) Successful in 13s
pr / cargo build / clippy / test / deny (pull_request) Failing after 1m42s
to be58ecb8ee
Some checks failed
bench / Criterion full-suite snapshot (pull_request) Has been skipped
fuzz / cargo fuzz nightly long-run (pull_request) Has been skipped
darwin / detect relevant changes (pull_request) Successful in 14s
darwin / darwin docs-only no-op (pull_request) Has been skipped
windows / detect relevant changes (pull_request) Successful in 14s
windows / windows docs-only no-op (pull_request) Has been skipped
bench / Criterion regression gate (pull_request) Failing after 2m8s
fuzz / cargo fuzz smoke (per target) (pull_request) Successful in 1m6s
pr / wire schema is compatible with the base (pull_request) Successful in 5s
darwin / build felis (aarch64-darwin) (pull_request) Successful in 53s
windows / cargo nextest (Windows) (pull_request) Successful in 3m19s
pr / nix flake check (pull_request) Successful in 27s
windows / frontend smoke (Windows) (pull_request) Successful in 47s
windows / package felis (x86_64-pc-windows-msvc) (pull_request) Has been skipped
pr / cargo build / clippy / test / deny (pull_request) Successful in 2m11s
pr / frontend smoke (x86_64-linux) (pull_request) Successful in 26s
windows / cargo clippy (Windows cross) (pull_request) Successful in 13s
2026-09-26 15:33:33 +09:00
Compare
natsukium deleted branch ci/drop-baseline-job 2026-09-26 15:41:29 +09:00
Commenting is not possible because the repository is archived.
No description provided.