add a serial test lane for concurrency-vulnerable tests

Generalizes the pty split into an explicit "parallel=false" opt-out: a
`serial` tag (declared in dart_test.yaml). The parallel flutter run now
excludes `pty || serial`; a separate `flutter test --tags serial
--concurrency=1` pass runs the vulnerable ones. For the coverage gate the
two passes are real-merged by ci/merge_lcov.py (union DA, max hits, recompute
LF/LH) — a plain concat would double-count and corrupt the total.

Tag transcript_publisher's bus-republish test serial (it flaked in the
parallel pool). Gate verified green end-to-end at 95.08%.

T-193.

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2026-05-31 19:26:17 +02:00
co-authored by Claude
parent 5b739ef6a7
commit b6eef3fc2b
6 changed files with 81 additions and 5 deletions
+7
View File
@@ -10,3 +10,10 @@ tags:
# under `dart test`. (Tag was historically named `forkpty`, before
# T-96 replaced forkpty with posix_spawn.) See `test/pty/session_test.dart`.
pty:
# Concurrency-vulnerable tests that flake in the parallel flutter pool
# (e.g. MessageBus delivery races). The parallel run excludes them
# (`--exclude-tags "pty || serial"`); ci/test.sh runs a separate
# `--tags serial --concurrency=1` pass and merges its coverage. Prefer a
# deterministic await first — only tag `serial` when isolation is the real
# fix. (T-193)
serial: