Test suite (2026-08-06, frozen into the initial commit). Invariants over wording — exact messages and
instructions drift by design; error-free behavior is the contract. Six namespaces plus rigging (bb test, kaocha):
bank mechanics, session state, the eval model, the retention guarantees, MCP dispatch without a socket (the mcp
namespace's own premise, with the transport's delivery discipline emulated by invoking ::delivered after the
response), and real HTTP roundtrips — init! on an ephemeral loopback port, the JDK's own HttpClient speaking
actual MCP at it, Quiescent grounding three concurrent requests in parallel. Writing it refined two claims, both
confirmed against Quiescent's actual doctrine: (a) orphan cancellation lands at eval settle, not the form
border. A first draft asserted the manual's phrasing — orphans die "when its form settles" — and failed
honestly: auto-flattening means each link's task settles only when the downstream chain does, so an orphan from
form 2 is still alive while form 3 runs. The observable contract — the eval neither waits for orphans nor lets
them outlive it, compel the moat that does survive — is what the suite pins and what the manual now says
("by the time the eval settles"). Quiescent moves on as quickly as it can; waiting for quiescence is itself
composition — deref q/cancel or chain off it — which the cancel tool already does by awaiting each task.
(b) A returned infinite lazy seq never settles: grounding realizes lazy forms — deliberate upstream, since
letting laziness through could produce tasks outside the structured-concurrency tree, a no-win trade — so
(range) as a final form is an eval that runs forever: cancellable, never rendered, and out of reach of the
print cap and of shape alike, both of which run after settlement. The guard is teaching, not machinery.
One rig-level finding: kaocha's output-capture plugin swaps the root *out* per test, displacing the tee — the
suite runs with capture off, which is also the honest configuration: the tees installed at the root exactly as in
a live host.
Can you improve this documentation?Edit on GitHub
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 |