Liking cljdoc? Tell your friends :D

2026-08-06 — The test suite

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

Keyboard shortcuts
Ctrl+kJump to recent docs
←Move to previous article
→Move to next article
Ctrl+/Jump to the search field
× close