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/.