Cradle: consecutive frame decisions
Reviewed September 6, 2026.
Recognition and presentation are separate decisions. Cradle’s OverlayPresentationGate accepts whether a frame contains the expected state and decides whether to show, hold or hide the overlay.
Normal observations
| Observations | Decision |
|---|---|
| First match | Hold |
| Second consecutive match | Show |
| First miss after showing | Hold |
| Second consecutive miss | Hide |
A match resets the missing count. A miss resets the matching count. Hold preserves the existing visibility; it does not mean hidden.
Limits
The explicit-index override and missing-window handling are separate paths. The normal gate cannot detect a consistently wrong recognizer. Waiting for consecutive frames adds delay; the README describes sampling around 0.7 seconds, so visible timing also depends on when a change occurs between samples.
Sources
Sources/CradleOverlayCore/ScreenClassifier.swift, local marathon/apps/macos-overlay, base e3d6d1f- Cradle repository
- Project
- Try matching and missing frames