Skip to main content

How To Read This Matrix

Watching splits into two halves, and they have different support stories:
  • Delivery (ws.watch() + ws.notify()) works on every mount today. Delivery is notify-driven: any detection you run maps its signal to a FileEvent and injects it, and Mirage handles invalidation, scope matching, and the event stream. No per-backend code is involved.
  • Detection is per-backend. The Pull column marks resources whose delta_hook() ships with Mirage (checkpointed diff, the self-healing truth path). The Push signal column names the provider mechanism your receiver would subscribe to; mapping its payload to a FileEvent is consumer code, and Mirage ships a sample where marked.

What “Delivery ✓” buys you without a hook

Even with no shipped detection, any backend is watchable end to end the moment you have a signal from anywhere:
The guarantee is identical on every backend: caches for the changed path and its ancestor listings are invalidated before delivery, so reads after an event are fresh.

Adding pull detection to a backend

ListingDeltaHook is generic; a backend earns the Pull column with one small walk class that lists entries with fingerprints:
Backends with a native cursor API (Dropbox list_folder/continue, Graph delta) can skip the walk and implement pull(root, checkpoint) directly; the opaque checkpoint becomes the server cursor, and consumers cannot tell the difference.