test(worldclock): make the seconds tests mean what they say

The no-re-emission check now waits for the write to be readable before
asserting, and the seconds switch has its own settings test instead of
riding in the clock-defaults one. WorldClockSource.state takes its
refresh signal without a default, and ARCHITECTURE.md's slice count
and alignedTicks guarantee match the code.
This commit is contained in:
makiolaj committed 2026-10-21 19:57:19 +02:00
1 parent 78da94d775
commit d70d0c78da
4 files changed
+25 -8

No files matched your search

+6 -4
View File
@@ -592,7 +592,7 @@ one anywhere under `domain/` or `ui/`.
## 6. Preferences
One DataStore file, `clockula_prefs`, behind floret-kit's typed `PrefStore`.
Four slices:
Six slices:
| Slice | Keys | Owner |
|---|---|---|
@@ -1429,9 +1429,11 @@ nothing but `delay`, which makes it testable under `runTest`'s virtual clock.
`alignedTicks(unit)` is the same seam for a readout of whole wall-clock units:
after the immediate emission it waits `WallBoundaries.untilNext(now, unit)`,
re-measured against `WallClock` after every wake, so it fires on the second or
minute boundary itself and a long `delay` or a set clock does not accumulate.
The world clock is its one caller (§16, "The cadence"), and it merges in
`ClockChanges`, the system's own word that the clock or zone moved, so a long
minute boundary itself and a `delay` that ran long does not accumulate. A
clock set mid-wait is only caught up once that wait ends, so a caller on a
long cadence restarts the flow on `ClockChanges`, the system's own word that
the clock or zone moved. The world clock is its one caller (§16, "The
cadence"), and does exactly that, so a long
cadence never means a long wait for those.
### The dismiss challenge, and why it cannot strand anyone