flaky: SocketIntegrationTests.testFlushedQueuedStoreAlsoPushesChannelNotification times out in CI (2 occurrences)
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 50/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- swift
- Domain
- networking, testing-qa
Research direction
Start in brain-bar/Tests/BrainBarTests/SocketIntegrationTests.swift around the test at line 1615 and its deadline-based poll loop near line 1600. Instrument the MCP socket notification delivery on macos-15 CI to distinguish runner slowness from a lost notification. Done means the cause is established and the separate PR either fixes the notification race or documents and justifies a timing change.
Written by the indexing model from the issue text.
Description
Two independent occurrences, same assertion, unrelated diffs
| run | head | branch | duration | date (UTC) |
|---|---|---|---|---|
34973638999 |
ae64a313 |
main (#879 merge) | 6.087 s | 2026-09-15T13:13:35Z |
104464310365 |
a2eae30a |
#890 | 6.472 s | 2026-09-15 ~17:0xZ |
Both fail identically:
brain-bar/Tests/BrainBarTests/SocketIntegrationTests.swift:1615: error:
-[BrainBarTests.SocketIntegrationTests testFlushedQueuedStoreAlsoPushesChannelNotification]
: failed: caught error: "Error Domain=test Code=4 "Timeout reading response""
It is not caused by either diff
#890 is metadata only — 4 files, 7 lines, all version strings (pyproject.toml, src/brainlayer/__init__.py, server.json, brain-bar/bundle/Info.plist). grep -rn "server\.json" src/ brain-bar/Sources/ returns nothing, so no runtime code reads the one manifest whose content changed. A version string cannot time out a socket read.
The main occurrence at ae64a313 predates #890 entirely.
Why this is worth fixing rather than rerunning
The failure is a wall-clock deadline in a poll loop (Thread.sleep(0.01) until a deadline, SocketIntegrationTests.swift:~1600-1615). On a loaded macos-15 runner that is timing-sensitive by construction — but the surface under test is MCP socket notification delivery, which is how every agent in this fleet reaches BrainLayer. A race there is not cosmetic, and "it passed on the rerun" does not distinguish a slow runner from a real lost notification.
A rerun-to-green makes the release gate unreliable in exactly the direction that hides a real defect. swift (macos-15) is one of the five required checks; a test that fails ~2 times in a day trains everyone to rerun it.
Asks
- Decide whether the timeout is runner slowness or a genuine notification race. Instrument, do not infer.
- If it is timing, raise the deadline and say why the new number is right — a bigger magic number chosen to stop the red is not a fix.
- If it is a race, it is a product bug in the notification path, not a test bug.
Pre-existing, so per canon-9 it gets its own PR; #890 must not fix it.
- Dominant language
- Python
- Stars
- 9
- Forks
- 7
- Avg merge
- 2h 8m
- Merged PRs (30d)
- 225
Getting set up
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from EtanHey/brainlayer
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
EtanHey/brainlayer#999 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
EtanHey/brainlayer#986 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
EtanHey/brainlayer#985 ·
Maintainers usually reply within 1 day
-
Difficulty 1/5 Under an hour Newbie friendliness 88/100
EtanHey/brainlayer#676 ·
Maintainers usually reply within 1 day
-
enhancement
Difficulty 1/5 1-3 hours Newbie friendliness 88/100
EtanHey/brainlayer#612 ·
Maintainers usually reply within 1 day
All issues in EtanHey/brainlayer
Similar issues
-
Difficulty 1/5 Under an hour Newbie friendliness 72/100
letsencrypt/cp-cps#353 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
PedestrianDynamics/pyFDS-Evac#394 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
DOI-USGS/pywatershed#421 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
python-pillow/Pillow#10087 · 1 comment ·
Maintainers usually reply within 1 day