Neutral home for cross-product CortexKit primitives — small, dependency-light building blocks shared across subc, AFT, and Magic Context that belong to no single product.
Maintained by the subc seat: direction, review, and releases.
Two crates carry a standing review obligation to the claustrum (vault) seat, who must be routed any change to:
cortexkit-store/cortexkit-lease— they run the only real-daemon test exercising the single-writer lease across two processes.cortexkit-pathscanonicalization — see the warning below.
That is a duty carried, not a veto held.
Measured 2026-08-09 against crates.io rather than inferred from release tags:
| state | crates |
|---|---|
| published | cortexkit-paths (0.1.1), cortexkit-provider-usage (0.4.1) |
| unpublished | the other six — by omission, none sets publish = false |
Release tags are not the authority on what is published: provider-usage has
five versions on crates.io and four tags. Ask the registry.
Publishing a crate here is close to irreversible — a version can be yanked but
never removed — and it creates a SECOND DISTRIBUTION PATH. A crate consumed only
by sibling path-dependencies has exactly one; publishing it means a consumer can
resolve a registry version while another repo's sibling checkout floats
elsewhere, and both can end up in one binary. That is already live: claustrum
compiles two copies of cortexkit-paths at the same version, one path and one
registry, agreeing only because the published bytes currently match.
So: publish only when an external consumer genuinely cannot use a path
dependency, and set publish = false explicitly with the reason at the key when
the answer is no.
Cargo.lock records a path dependency as a bare version string with no source
and no checksum, so changed code compiles into every consuming repo with no
lockfile diff and nothing for --locked to catch. The version number is the
entire channel.
Bump on any change to observable behaviour or emitted bytes. Not for comments or tests — a version that moves for prose trains readers to bump reflexively, which is how it stops meaning anything.
| Crate | Description |
|---|---|
cortexkit-paths |
Path canonicalization → canonical project-root identity (ProjectRootId). Dependency-free, #![forbid(unsafe_code)], cross-platform (incl. Windows verbatim/UNC/drive-case normalization). Its canonical form is a cryptographic identity input — the vault hashes it to derive the keychain service name holding its master key and the vault id fencing admin MACs. A canonicalization change breaks those and presents as a locked vault over an intact store, never as a path mismatch. The name reads as a path helper; it is not only that. |
MIT