/
/
# What does this implement/fix? `test_group_entity_fanout_arms_each_member_at_one_shared_instant` compared a value computed *during* the call against a clock read at assertion time, so wall-clock time passing in between ate into its 300 ms margin. On a loaded CI runner it failed intermittently and passed on a plain re-run — most recently blocking an unrelated PR (#5960). Reviewing its siblings turned up one more test of the same shape, plus one whose bound could never fail at all. Every one of these assertions now measures against the reference it was actually scheduled from, so the outcome no longer depends on how fast the runner is. The bounds stay tight rather than widened — dropping the fan-out margin, taking the smallest member span instead of the largest, ignoring the acked instant, or dropping the into-the-clip bias or the audible-end pad each still fail the tests. ## Changes - Group fan-out test (the one that was failing on CI): bracket the shared instant between clock reads either side of the fan-out, instead of comparing it to a freshly read clock. - That test's "larger span" member was set to exactly the fallback span the other members assume, so its "clears the largest span" claim was never actually exercised — it now reports a genuinely larger one. - Audible-end hold test: take the elapsed-time reference together with the wall clock the ack is built from, rather than after it — the gap between the two only had 50 ms of slack. - Volume-schedule test: its bump bound could never fail (the delay is floored at zero, so the value could not drop below it). It is now bracketed around the moment the timer is scheduled, which does catch a bump that ignores the acked instant. ## Types of changes - [ ] Bugfix (non-breaking change which fixes an issue) — `bugfix` - [ ] New feature (non-breaking change which adds functionality) — `new-feature` - [ ] Enhancement to an existing feature — `enhancement` - [ ] New music/player/metadata/plugin provider — `new-provider` - [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected) — `breaking-change` - [ ] Refactor (no behaviour change) — `refactor` - [ ] Documentation only — `documentation` - [x] Maintenance / chore — `maintenance` - [ ] CI / workflow change — `ci` - [ ] Dependencies bump — `dependencies` ## Checklist - [x] The code change is tested and works locally. - [x] `pre-commit run --all-files` passes. - [x] `pytest` passes, and tests have been added/updated under `tests/` where applicable. - [ ] For changes to shared models, the companion PR in `music-assistant/models` is linked. - [ ] For changes affecting the UI, the companion PR in `music-assistant/frontend` is linked. - [x] I have read and complied with the project's [AI Policy](https://github.com/music-assistant/.github/blob/main/AI_POLICY.md) for any AI-assisted contributions. - [ ] I have [raised a PR against the documentation repository](https://github.com/music-assistant/music-assistant.io/blob/main/CONTRIBUTING.md) targeting the main or beta branch as appropriate.