monoprotocol 0.2.0

Mono sync protocol reference types and crypto (spec is canonical in spec/)
Documentation
# Mono sync protocol (`monoprotocol`)

**Version:** `mono-sync/0.2.0-draft`  
**License:** [Mozilla Public License 2.0](LICENSE)

The **Markdown specification** in [`spec/`](spec/) is canonical. The Rust crate [`monoprotocol`](https://crates.io/crates/monoprotocol) under [`rust/monoprotocol/`](rust/monoprotocol/) is a reference implementation that MUST match the spec and [`conformance/`](conformance/) fixtures; third-party code should implement against the spec first.

## Repository layout

| Path | Role |
|------|------|
| `spec/PROTOCOL.md` | Normative protocol (wire, crypto, journal, capabilities) |
| `spec/OBJECTS.md` | Normative replicated object model |
| `spec/CONFORMANCE.md` | How to run and extend test vectors |
| `conformance/` | Golden HKDF/AES-GCM vectors, JSON and CBOR wire fixtures |
| `rust/monoprotocol` | Published crate `monoprotocol` on crates.io (MPL-2.0) |
| `rust/monoprotocol-conformance` | Tests that load `conformance/` fixtures |

## Quick start (Rust)

```bash
cd rust
cargo test
cargo run -p gen-golden   # regenerate conformance/golden and wire fixtures
```

## Implementing in another language

1. Read `spec/PROTOCOL.md` and `spec/OBJECTS.md`.
2. Implement HKDF + AES-256-GCM exactly as in `spec/CONFORMANCE.md`.
3. Pass all vectors in `conformance/golden/crypto.json`.
4. Parse `conformance/json/*.json` and `conformance/cbor/*.cbor` into your envelope type.

## Pre-release audit

See [AUDIT.md](AUDIT.md) for known limitations (especially 2FA stub behavior) and the release checklist.

## Related projects

Product mesh, gateway, browser, and adapters remain in [mono](https://github.com/atechnology-company/mono) and depend on this protocol crate.