mirror of
https://github.com/PerpetualSoftware/pad.git
synced 2026-11-02 09:23:59 +00:00
585aa8ea2a
* ci: shard internal/server's race tests 3 ways per driver, with a coverage guard (TASK-4141) On main, internal/server under -race took 2658.534s on PostgreSQL and 2519.644s on SQLite, against the 2700s per-binary timeout, and #2348 and #2350 timed out there. No test or family is more than ~4% of its wall and ~88% of it is serial tests, so it is split rather than tuned: - internal/server leaves both ./... race steps and runs as go-server-race (SQLite) and go-server-race-postgres, 3 shards each, each on its own runner with the same 45m -timeout. - scripts/test-shard.sh assigns the sorted `go test -list` names by index mod N and prints an anchored -run regex per shard. - go-server-shards fails the workflow unless Go's own -run matcher reads the shard regexes as pairwise disjoint and together equal to the full -list of the same binary (GO_RACE_FLAGS, now defined once). Claude-Session: https://claude.ai/code/session_01Pa22hHHb1atXYf1JmBYE1v * fix(ci): test-shard check stops on a shard_regex die instead of passing (TASK-4141 r1 Q2) The check loop passed shard_regex as a substitution argument, and set -e does not apply there. -list "" selects nothing, so an empty shard read as 0 tests and the guard reported disjoint and complete with exit 0. The regex is now its own assignment, which propagates the exit status. Claude-Session: https://claude.ai/code/session_01Pa22hHHb1atXYf1JmBYE1v * ci: assert the race steps exclude exactly internal/server (TASK-4141 r2 spot mutant) Both ./... race steps now fail unless the exclusion removed exactly one package and it is internal/server. An unanchored grep would also have dropped internal/server/render from every race run, and a path move would exclude nothing; neither turned anything red. The step comments no longer claim the grep can only fail safe. Claude-Session: https://claude.ai/code/session_01Pa22hHHb1atXYf1JmBYE1v