Severity
Low.
What happens
snapshotByRun picks the first snapshot of the schedule within ±60s of run.completedAt, not the closest. Snapshot capturedAt is stamped at run start while completedAt is stamped at the end: a capture taking >60s gets no link ("View run" instead of "Open result"), and a "Run now" fired within a minute of an alarm tick makes both runs resolve to the same earlier snapshot.
Evidence
src/ui/screens/JobsActivityScreen.tsx:70-73
- Timestamps:
src/background/index.ts:2265, :2312
Suggested fix
Choose the snapshot minimizing |capturedAt − run.startedAt| and pass the snapshot id through navigation.
Environment
Commit 74cf21b (main), WaveLink 0.6.0. Found in the 2026-08-31 adversarial audit (code-verified).
Severity
Low.
What happens
snapshotByRunpicks the first snapshot of the schedule within ±60s ofrun.completedAt, not the closest. SnapshotcapturedAtis stamped at run start whilecompletedAtis stamped at the end: a capture taking >60s gets no link ("View run" instead of "Open result"), and a "Run now" fired within a minute of an alarm tick makes both runs resolve to the same earlier snapshot.Evidence
src/ui/screens/JobsActivityScreen.tsx:70-73src/background/index.ts:2265,:2312Suggested fix
Choose the snapshot minimizing
|capturedAt − run.startedAt|and pass the snapshot id through navigation.Environment
Commit
74cf21b(main), WaveLink 0.6.0. Found in the 2026-08-31 adversarial audit (code-verified).