BC-4 Bench — statistical benchmarking for Clojure code.
Wave-2 implementation: warmup + N timed iterations, percentile aggregation
(p50/p95/p99/min/max/mean/stddev), :tt/bench-run event emission, and a
defbench macro that wraps deftest with a p95 threshold assertion.
Design notes:
BC-4 Bench — statistical benchmarking for Clojure code.
Wave-2 implementation: warmup + N timed iterations, percentile aggregation
(p50/p95/p99/min/max/mean/stddev), :tt/bench-run event emission, and a
`defbench` macro that wraps `deftest` with a p95 threshold assertion.
Design notes:
* Pure data in, pure data out. BenchResult is a value type.
* Event publishing delegated to hive-ttracking.events/publish, which
swallows throwables so a stalled router never fails a bench.
* Warmup iterations run the thunk but are NOT included in samples —
they let JIT compile hot paths before measurement.BC-2 Budgets — declarative budgets, policy, assertion.
Pure. No I/O. No deps on hive-weave or hive-events. See PLAN.md §2 BC-2.
BC-2 Budgets — declarative budgets, policy, assertion. Pure. No I/O. No deps on hive-weave or hive-events. See PLAN.md §2 BC-2.
Clock facade for domain code.
Domain layers MUST NOT call java.time.* or System/currentTimeMillis
directly — route through this ns so tests can pin time without
with-redefs on JVM statics.
Substitution model: java.time.Clock rebinding via *clock*.
Clock/systemDefaultZoneClock/fixed for deterministic instantsnow-* fns honor the dynamic bindingProvided primitives mirror the subset needed by hive-knowledge,
hive-mcp, and other consumers. Add new fns here, never inline
java.time.* in calling code.
Clock facade for domain code. Domain layers MUST NOT call `java.time.*` or `System/currentTimeMillis` directly — route through this ns so tests can pin time without `with-redefs` on JVM statics. Substitution model: `java.time.Clock` rebinding via `*clock*`. - Default: `Clock/systemDefaultZone` - Tests: bind to `Clock/fixed` for deterministic instants - All `now-*` fns honor the dynamic binding Provided primitives mirror the subset needed by hive-knowledge, hive-mcp, and other consumers. Add new fns here, never inline `java.time.*` in calling code.
Public API re-exports for hive-ttracking (short alias: tt).
Wave-1 skeleton — implementations live in per-BC namespaces and land in Waves 2-5. See PLAN.md §7.
Primary entry points: tt/track — budget-aware single-branch wrapper tt/track-race — multi-branch racing with partial-progress tt/bench — statistical benchmarking tt/instrument-protocol — defrecord pass-through instrumentation tt/timed-query — lightweight elapsed-ms + row-count telemetry
Public API re-exports for hive-ttracking (short alias: tt). Wave-1 skeleton — implementations live in per-BC namespaces and land in Waves 2-5. See PLAN.md §7. Primary entry points: tt/track — budget-aware single-branch wrapper tt/track-race — multi-branch racing with partial-progress tt/bench — statistical benchmarking tt/instrument-protocol — defrecord pass-through instrumentation tt/timed-query — lightweight elapsed-ms + row-count telemetry
BC-5 Events — pure event builders for the :tt/* namespace + defensive publish wrapper over hive.events/dispatch.
Wave-2: builders + publish. Full router wiring stays in consumers' init. See PLAN.md §2 BC-5.
BC-5 Events — pure event builders for the :tt/* namespace + defensive publish wrapper over hive.events/dispatch. Wave-2: builders + publish. Full router wiring stays in consumers' init. See PLAN.md §2 BC-5.
IAddon init hook — invoked by hive-di when hive-ttracking is on the classpath and config enables it. Wave-1 skeleton: no-op.
IAddon init hook — invoked by hive-di when hive-ttracking is on the classpath and config enables it. Wave-1 skeleton: no-op.
BC-6 Instrumentation — defrecord/reify pass-through wrappers for protocols.
OCP-compliant: wrapped code is untouched. Zero call-site rewriting. Wave-1 skeleton. Wave-4 implements protocol reflection + wrapper gen. See PLAN.md §2 BC-6.
BC-6 Instrumentation — defrecord/reify pass-through wrappers for protocols. OCP-compliant: wrapped code is untouched. Zero call-site rewriting. Wave-1 skeleton. Wave-4 implements protocol reflection + wrapper gen. See PLAN.md §2 BC-6.
BC-3 Spans — span sink abstraction + pure helpers over Span values.
Wave-2: helpers for closing/tagging/hierarchy. Sinks are Wave-3. See PLAN.md §2 BC-3.
BC-3 Spans — span sink abstraction + pure helpers over Span values. Wave-2: helpers for closing/tagging/hierarchy. Sinks are Wave-3. See PLAN.md §2 BC-3.
BC-1 Tracking — span lifecycle + track/track-race macros.
Wave-2: AtomTracker + real track*. Wave-3 fills track-race*. See PLAN.md §2 BC-1.
BC-1 Tracking — span lifecycle + track/track-race macros. Wave-2: AtomTracker + real track*. Wave-3 fills track-race*. See PLAN.md §2 BC-1.
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |