| Filename | Latest commit message | Latest commit date |
|---|---|---|
One list, in nix/reserved-names.nix, handed to everything that needs it as HIVE_RESERVED_NAMES. Keeping it current becomes a config change rather than a rebuild, and hive names and agent names -- one namespace going forward -- are checked against the same file: swarm-otel.nix's hand-written reservedOwners is gone. Whitespace-separated rather than JSON, deliberately, unlike the structured env vars beside it. Every entry is an Ident ([a-z0-9-]), so whitespace cannot occur inside a name and the encoding is provably lossless; JSON would mean either a parser dependency in a crate whose purpose is to have none, or a copy of the parse in every consumer. An UNSET variable is not "nothing is reserved". Both creation sites log an error and return a warning saying the check did not run, so a misconfigured deployment says so instead of silently accepting every name. A blank value folds into unset: nix always renders a non-empty list, so present-but-empty is a rendering fault, not a declaration. Two guards whose subject moved out of their own file now assert their own case is still in it, because a guard that can be retired by an edit elsewhere is not a guard: - swarm-otel.nix asserts reserved-names.nix still contains its swarmTierName. - hive-sh4re's sentinel drift test PANICS when the variable is missing rather than skipping -- a drift test that quietly does nothing still reports green. checks.nix and devshell.nix both export it so CI and a local cargo test agree. Verified as a pair: with the variable set, 8 tests pass; with it unset, exactly the 4 drift tests fail and the unrelated ones still pass. |
||
| .. | ||
| src | ||
| Cargo.toml | ||
| README.md | ||
hive-types
Foundational shared newtypes for the hyperhive workspace. A zero-dependency
(bar serde) leaf crate, so every wire-type crate (hive-sh4re,
hive-host-sock, hive-core-agent-sock) and both binaries (hive-c0re,
hivectl) can share them without cross-crate coupling and without growing
hive-sh4re.
What's here
Ident— a validated agent-name newtype. Typing agent-name fields asIdent(rather than bareString) gets serde-validated parsing at the socket boundary for free: a malformed name is rejected at deserialize time instead of flowing into a handler that has to re-validate by hand.
The crate is deliberately a leaf with the smallest possible dependency footprint
so anything in the workspace can depend on it. See docs/conventions.md
("identity = socket") for how agent identity is modelled across the sockets.