Time flies and tasks grow like grass.
https://github.com/Cumulo/calcium-workflow
corepack enable
corepack prepare yarn@4.12.0 --activate
caps
yarn install --immutable
# browser client and static assets
yarn watch-page
yarn dev-page
# realtime server
mode=dev calcit -w calcit.cirru --entry servercalcit.cirru now uses explicit entries: the default browser entry runs in
JavaScript mode and the server entry runs natively. storage.cirru remains
Cirru EDN and is loaded with parse-cirru-edn then written with
format-cirru-edn; its existing on-disk shape is preserved, with only runtime
sessions omitted as before.
The browser and server use nominal ClientMessage and ServerMessage
envelopes. Snapshots and patches carry monotonic revisions; the server advances
each client's diff baseline only after an ACK. Revision mismatch or invalid
patches are rejected atomically and request a fresh snapshot. Visibility and
heartbeat messages let inactive tabs stop receiving projections, while bounded
WebSocket backpressure retains only the newest dirty revision for retry.
The server coalesces updater-driven synchronization instead of scanning every
client on a fixed render interval. read-sync-metrics exposes patch/snapshot
attempts, UTF-8 payload bytes, diff latency, resync count, pending clients, and
slow clients. See docs/realtime-sync.md for the protocol,
failure behavior, and real slow-reader evidence.
Keep the Calcit CLI and @calcit/procs runtime on the same version. The local
development command starts Vite with --force so stale optimized dependencies
cannot retain a previous runtime after an upgrade.
Use released module tags and validate the full graph before committing:
caps --strict --ci
calcit edit format
calcit --check-only
calcit --entry server --check-only
calcit analyze deprecated
yarn check-sync
yarn compile-page
yarn release-pageNever test a migration against the live storage.cirru. Copy it outside the
repository, then verify the same load/persist path used by the server. The
revision-protocol migration was checked against a copy of the real 736,198-byte
state; after a native server run and persistence, both the copy and source kept
SHA-256 18212a22d8dfdcd9e9f3ecd8cbc7a5fd8975b7644432e4435ea0297a1935b191.
MIT