monoloop-loop 0.1.4

Minimal extensible Loop: lossless canonical subscription, empty-capable tools
Documentation

monoloop-loop

Component 03 — The Loop: transaction admission/composition plus the inner lossless tool runtime.

Lifecycle status: Runtime v2 migration in progress (doc/TRANSACTION_RUNTIME_V2_SPEC.md, D-003). The v1 lifecycle modules were removed; replacement code lives under src/transaction/lifecycle/.

Owns Channel registry, outbound encoders, linked-tool types, and the emerging lifecycle owner/handle surface. Inner LoopRuntime stays dialect-neutral.

Prefer the façade crate monoloop unless you need this crate as a direct dependency.

License: AGPL-3.0-or-later. Commercial: https://frogfish.io

What this crate is / is not

Is Is not
lifecycle::RuntimeOwner / StartedRuntime (v2, staging) Context/prompt engine
ChannelBinding / ChannelRegistry Test Driver / Console (→ monoloop-testkit)
Empty-tool path (tool_unavailable, zero effects) Ambient “current session”
Production profile encoders + TestTextEncoder smoke helper Host UI

Migration note

Do not recreate the deleted v1 files (runtime, admission, actor, finalization, callback_service, executor_spawn, tool_join_vault). Follow the seven-stage plan in the v2 spec. M5.4 delete-vaults: joins are TaskSupervisor-owned (not vaulted). OrphanToolPermitSet holds only capacity orphans for §22.4 non-ack / Process mid-drop — not JoinHandles. JoinOnly Stopped inject is supervisor park/unpark. Production handlers drive inline. §23 gates live in tests/s23_forbidden_patterns.rs.

M0–M5 landed (DEFECTS D-042 / D-043 / D-044). M6 §22 closed enough (D-045): §22.1–§22.7 proofs landed (host-adapter proofs outside core); MCP RuntimeService + CreationOnly + TaskClass::McpRequest ownership landed. Join vault retired to OrphanToolPermitSet; Stopped is TaskSupervisor-empty after orphan release. Refreshable MCP deferred for initial profiles (DECISIONS D-042 / WP12).

M7 façade landed (D-038 Fixed): StartedRuntime + TransactionSubmitRequest is the assembler recipe. Host adapters adapt_event_sink / adapt_completion_callback stay (outside the kernel; M1 / §22.7). D-053 Fixed: legacy v1 integration suites were deleted (coverage map doc/D053_COVERAGE_REPLACEMENT.md); autotests / autoexamples are enabled so every on-disk suite and example is compiled by --all-targets. D-054 / D-060: obsolete uncompiled v1 modules deleted; deprecated aliases (TransactionRequest, TransactionRuntime, RuntimeToolSpill) removed. Not Golden / §25 DoD while remaining §23 extras (Open/Partial limits, race/load, live Grok) and independent review remain open. D-039 / D-040 / D-041 Fixed.

Agent assembly recipe (v2 / M2)

1. Build ChannelBinding { … }
2. ChannelRegistry::build(vec![binding])
3. StartedRuntime::start(RuntimeBootstrap { config, channels, tools })
     // no external Tokio Handle — runtime owns its executor
4. let (delivery, receiver) = transaction_delivery(limits)?;
5. handle.submit(TransactionSubmitRequest { …, delivery })
6. Host drains receiver outside the runtime executor
7. owner.begin_shutdown(); owner.wait_stopped(deadline) // timeout ⇒ Quiescing