# hostbat

Generic deterministic **module host** for the BatPak family: mount
content-identified modules over a [`syncbat`](https://crates.io/crates/syncbat)
`Core` and drive them with a deterministic startup/shutdown hook schedule.

`hostbat` adds what a raw `syncbat::Core` has no concept of — content identity
(`H_module` per module + a `HostFingerprint`), modules that bundle operations +
guard + hooks + jobs as one mountable unit, a generic `Supervisor`, and the
host-control effect axis. It **does not** reimplement dispatch, receipts, or
admission — those stay in `syncbat`; it lowers mounted modules into one
`syncbat::CoreBuilder` and delegates invocation to the composed `Core`.

```rust
use hostbat::{HostBuilder, HostModule};

let module = HostModule::builder("my.module", 1)
    .operation(descriptor, handler)?
    .build()?;
let host = HostBuilder::new().mount(module)?.build()?;
let out = host.invoke("my.op", input)?;
```

Part of the sync-first, append-only BatPak stack. Licensed under MIT OR
Apache-2.0.
