From 622740fe701cd172b8abd4932e0c0b7d912d69dc Mon Sep 17 00:00:00 2001 From: wt Date: Fri, 30 Oct 2026 13:03:00 +0700 Subject: [PATCH] ci: pin Go 1.27.3 for the differential compatibility check 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 --- .github/workflows/ci.yml | 5 ++++- README.md | 3 ++- docs/DEVELOPMENT.md | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6ad8522..5f7988f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -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: diff --git a/README.md b/README.md index b76f77e..7df5762 100644 --- a/README.md +++ b/README.md @@ -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 diff --git a/docs/DEVELOPMENT.md b/docs/DEVELOPMENT.md index fd38cf6..1c2923f 100644 --- a/docs/DEVELOPMENT.md +++ b/docs/DEVELOPMENT.md @@ -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 используется без сторонних пакетов. Проверить локальную версию: