Devotd Github
NewLLM infrastructure

shadowsafin/synapass — Fixing false positives from line-ending differences in migration checksums

The AI inference gateway shadowsafin/synapass fixed a problem where migration checksums differed on Windows checkouts and it refused to boot, by normalizing line endings.

Repositoryshadowsafin/synapass ↗

The AI inference gateway shadowsafin/synapass fixed a problem where migration checksums differed on Windows checkouts and it refused to boot, by normalizing line endings.

GitHub description: AI inference gateway and control plane for multi-provider routing, policies, caching, tools, and observability.

stars
★ 105
Forks
0
Language
Go
License
Apache-2.0
Read original source ↗View on GitHub ↗

shadowsafin/synapass is an inference gateway that bundles multiple AI model providers into one place and manages routing, policy, caching, tools, and observability. The 2026-10-18 commit efe97f4 fixed the problem where this project's repository migration (schema-change SQL) checksums distinguished line-ending character differences. The cause was that, even for the same SQL file, checking it out with CRLF on Windows and LF on Linux produces different hash values.

The checksum is a sha256 hash used to check whether an already-applied migration was edited later. A repository fetched with Windows' autocrlf=true setting mismatches the hash left by the Linux where it was first applied, even though it is the same commit, so the gateway raised an error saying that migration 0008 had been modified after being applied and refused to start. On a Windows checkout, the one-click deployment path itself was blocked.

The fix has two parts. The checksum is now computed on text with line endings normalized to LF, and the comparison step accepts both the original byte form recorded by older builds and the CRLF form. As a result, existing installations are upgraded without a schema_migrations patch, and cases where the SQL content actually changed still fail the check as before. In code, migrationChecksum and checksumMatches were added to internal/storage/migrate.go (34 lines added, 2 deleted), Migrate in internal/storage/postgres.go was changed to call these functions (1 line replaced), and internal/storage/migrate_test.go was newly attached (72 lines). The whole commit is 110 lines: 107 added and 3 deleted.

However, this change is limited to migration checking. The tests also cover only line-ending equivalence and blocking actual tampering; no figures measuring routing or cache performance are presented. No release tag is given either, so it is not possible to know which release it will land in. If Windows deployment was a problem, there are clearly places that lose out, but this commit alone is not sufficient grounds to judge the overall state of the project.