Hyphae uses Rust 2024 with MSRV 1.89.0 and a pinned validation toolchain. Code, contracts, commit messages, and repository documentation are English. Unsafe Rust is forbidden workspace-wide.
The dependency direction is intentionally one-way:
core / query / retrieval / storage
↓
engine
↓
contracts → server ← client
↓
CLI
hyphae-cli is the only executable artifact. Optional integrations consume
public clients and contracts; they cannot import storage or engine internals.
See architecture for the durable flow.
cargo fmt --all -- --check
cargo clippy --workspace --all-targets --all-features --locked -- -D warnings
cargo test --workspace --all-features --locked
RUSTDOCFLAGS='-D warnings' cargo doc --workspace --all-features --no-deps --locked
python tools/generate_sdk_models.py --check
python tools/check_documentation.py --binary target/debug/hyphae
python tools/run_documentation_examples.py --binary target/debug/hyphae
python packaging/test_package.pyAlso run the common client and integration suites when those surfaces change:
python tools/run_conformance.py
python tools/check_integration_boundaries.py
python tools/run_integration_conformance.pySecurity/release workflows add RustSec, cargo-deny, dependency integrity, secret history scanning, fuzzing, load/kill recovery, native package smoke, SBOMs, checksums, signatures, and attestations.
For a public /v1 behavior change:
- update typed models in
hyphae-contracts; - update OpenAPI 3.1 and the affected JSON Schema 2020-12 files;
- regenerate TypeScript/Python models and require
--checkto be clean; - update server/client/CLI/MCP behavior and common conformance fixtures;
- update the human API, client, capability, and example documentation;
- use a new API path version for a breaking wire change.
Generated SDK model files are checked in so consumers can audit exact public types. Do not hand-edit them.
Any change to log, mutation, document, snapshot, manifest, proof, backup, or data-directory behavior requires:
- an accepted ADR when the invariant or compatibility policy changes;
- a versioned normative format update;
- crash/fault/corruption tests for every commit boundary;
- immutable compatibility fixtures for every supported disk format;
- explicit migration and rollback documentation.
The log remains authority and indexes remain rebuildable. Never introduce a mandatory network, database, cache, model, or cloud dependency.
Every shipped capability needs a discoverable page or section, an accurate example, limitations, and a link from the documentation index. The documentation checker verifies local links, index coverage, JSON example syntax, and CLI command inventory against the built binary. The documentation example runner starts a private loopback server and executes the maintained KV/query/aggregation, vector mutation, and exact/lexical/hybrid retrieval request files end to end.
Do not describe roadmap candidates as current behavior. If code and docs disagree, correct both or state the limitation explicitly; do not weaken a gate claim through vague wording.
Frozen historical repositories are read-only inputs. No source or test enters this repository without a reviewed entry in the porting ledger covering provenance, license, transformation, inherited tests, and human review. New third-party dependencies require license/source policy review and locked integrity metadata.
Any source or documentation commit invalidates release-candidate closure until the complete hosted matrix passes on that exact SHA. Do not tag or publish a new version until the release gate is green and publication is explicitly authorized. Automation attribution trailers are forbidden.