Notes — form + mutation + invalidation

Server function validates input, writes to the "DB," then router.invalidate() refetches the loader. No manual cache management.

Notes are stored in-memory on the worker — they'll disappear on cold start or deploy. In a real app, swap the handler's array access for Postgres, D1, or a Durable Object.