ci: pin Go 1.27.3 for the differential compatibility check
CI / Go (test / vet / build) (push) Successful in 1m22s
CI / Go (test / vet / build) (pull_request) Successful in 1m31s
CI / Rust (fmt / clippy / test / build) (pull_request) Successful in 2m18s
CI / Rust (fmt / clippy / test / build) (push) Successful in 2m47s
CI / Go ↔ Rust differential + SQLite takeover (pull_request) Successful in 1m49s
CI / Go ↔ Rust differential + SQLite takeover (push) Successful in 2m42s

Go 1.25 ServeMux redirects unclean paths with 301, while newer Go (and the
Rust port that mirrors it) uses 307, so the Go reference built in CI
disagreed with Rust on '/a/../app.js'.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
wtandClaude Opus 5.5 committed 2026-10-30 13:03:00 +07:00
1 parent 5ed1eff0b5
commit 622740fe70
3 files changed
+7 -3

No files matched your search

+4 -1
View File
@@ -9,7 +9,10 @@ env:
CARGO_TERM_COLOR: always
# Pin the toolchain to the declared MSRV so CI matches production.
RUST_TOOLCHAIN: 1.90.0
GO_VERSION: "1.25.0"
# The differential check compares Rust against net/http behaviour, which
# changes between Go releases (e.g. ServeMux redirects 301 -> 307), so the
# reference must be built with the same Go the Rust port mirrors.
GO_VERSION: "1.27.3"
jobs:
rust:
+2 -1
View File
@@ -124,7 +124,8 @@ against the same `BALANCE_DB_PATH`; do not run both writers simultaneously.
Existing accounts, access/refresh tokens and saved device cursors remain usable.
See [deployment and rollback](docs/DEPLOYMENT.md) for the full procedure.
Verify the implementations locally with Go 1.25+, Rust and Python 3:
Verify the implementations locally with Go 1.27.3 (the version CI uses for the
differential check), Rust and Python 3:
```sh
cargo test --locked
+1 -1
View File
@@ -2,7 +2,7 @@
## Требования
Production-сервер использует Rust 1.90+ и bundled SQLite. Go 1.25+ нужен для сохранённой эталонной реализации и differential-проверок. Python 3 используется без сторонних пакетов.
Production-сервер использует Rust 1.90+ и bundled SQLite. Go 1.25+ нужен для сохранённой эталонной реализации; differential-проверки (`tools/compatibility.py`) требуют Go 1.27.3, как в CI: поведение `net/http` (например, код редиректа ServeMux 301/307) зависит от версии Go. Python 3 используется без сторонних пакетов.
Проверить локальную версию: