MonoWatch
MonoWatch simulates deploys across a monorepo service catalog and computes DORA metrics over the result. The engine is one total function:
(advance-tick state tick) ;;=> state'
No DOM, no timers, no js/*. The reference implementation this was ported from
used setTimeout and Math.random ambiently; the port lifts both out as
inputs – the caller supplies :now-ms and :rng-fn. The engine is therefore
total and deterministic, which is what makes the property tests possible: the
same seed replays the same deploy history, so an invariant that holds is a
statement about the model rather than about one lucky run.
Status
Core-only. app.cljs is a stub; there is no UI on this page yet.
| Piece | Namespace | State |
|---|---|---|
| Pure logic | wal-sh.projects.mono-watch.core |
complete |
| Storage | wal-sh.projects.mono-watch.storage |
complete |
| SPA entry | wal-sh.projects.mono-watch.app |
stub |
Public core API: services / service-by-name / tier / tier-1-services
(catalog), initial-state (seed), advance-tick (the total step),
toggle-service, compute-metrics (DORA), and the gen-sha /
gen-build-number helpers.
32 example-based tests and 10 test.check properties are defined under
test/wal_sh/projects/mono_watch/.