hypersteeldb 0.3.1

A database that compiles questions instead of guessing answers: typed vocabulary discovered from your documents, queries type-checked before they run, roaring-bitmap set algebra over reified hyperedges, and Dempster-Shafer evidence with an explicit conflict guard.
Documentation
# Publishing

The crate is publish-ready. One manual step remains, and it can only be done by the account owner.

## Blocker: verify the crates.io email

```
error: the remote server responded with an error (status 400 Bad Request):
A verified email address is required to publish crates to crates.io.
```

The API token authenticates correctly — this is an account setting, not a packaging problem.

1. Open <https://crates.io/settings/profile>
2. Set an email address and save
3. Click the link in the confirmation email

## Then publish

```bash
CARGO_HTTP_MULTIPLEXING=false \
  cargo publish --no-default-features --token "$(tr -d '[:space:]' < cratesio.key)"
```

`CARGO_HTTP_MULTIPLEXING=false` is needed: over HTTP/2 the upload fails with
`Stream error in the HTTP/2 framing layer ... STREAM_CLOSED`. Forcing HTTP/1.1 makes it succeed. Without it the
transport error masks any real registry response, which is what initially hid the email problem.

## Verified before publishing

| check | result |
|---|---|
| core tests | 147 pass |
| with `onnx,embed` | 149 pass |
| build warnings | 0 |
| doc warnings | 0 |
| `wasm32-unknown-unknown` | builds |
| packaged size | 2.00 MB (limit 10 MB) |
| credentials in package | none |
| corpora or documents in package | none |
| model weights in package | only the intended 1.8 MB of trained heads |

`cratesio.key`, `hf.token`, `models/`, all corpora and `spaces/` are excluded from the package. A
`cargo package --list` was audited directly rather than assumed — an earlier run showed `cratesio.key` would
have been published, which `*.token` had not covered.

## After publishing

The crate resolves large weights from `cp500/steeldb-models`, which does not exist yet. Until it does,
`steeldb::models::resolve` returns an actionable error naming the repository, revision, size and licence — so
the default feature set is unaffected, and only the optional model features need it.

To create it, push the artefacts we trained (SPO tagger, SPLADE heads, LoRA) plus mirrors of the permissively
licensed third-party weights. Every model in `ARTIFACTS` is Apache-2.0 or MIT, so mirroring is allowed provided
the licence and attribution travel with the copy — which `Source::Mirrored` records and a test enforces.