Workspace layout
The repo is a private workspace with one published package and five private internal packages.
Package map
Section titled “Package map”packages/sdk: the only published package directory, with the public package namesealed-latticepackages/types: canonical shared type definitions inlined into the published package during SDK buildspackages/protocol: deterministic election model and transcript verification helperspackages/crypto: internal Hash512, digest, ML-DSA-65 profile, fixture signing, and signed-root verification wrapperspackages/wasm: typed Rust/WASM loader for transcript core analysis, protocol digest derivation, and kernel field checkspackages/testkit: deterministic integration scaffolding package shellcrates/sealed-lattice-kernel: Rust transcript core crate that exports the WASM command path for transcript fixtures, reserved digest derivation, andGF(65537)checks
Dependency direction
Section titled “Dependency direction”sealed-latticemay depend on@sealed-lattice/types,@sealed-lattice/protocol,@sealed-lattice/crypto, and@sealed-lattice/wasm.@sealed-lattice/protocolmay depend on@sealed-lattice/typesand@sealed-lattice/crypto.@sealed-lattice/cryptoand@sealed-lattice/wasmmay depend on@sealed-lattice/types.@sealed-lattice/testkitmay depend on all internal packages and onsealed-lattice.- No private package may depend on
sealed-latticeunless it is@sealed-lattice/testkit. - Deep imports like
@sealed-lattice/crypto/src/...are forbidden. - Relative imports that cross from one package directory into another package directory are forbidden.
Why the public facade stays narrow
Section titled “Why the public facade stays narrow”The goal of the current release is to freeze packaging and package boundaries before the full voting API is real enough to publish safely. Shipping only the safe transcript core fixture verifier is deliberate.
Enforcement
Section titled “Enforcement”- package
exportsmaps keep each package root explicit - ESLint resolves the workspace packages and rejects invalid imports
tools/ci/check-package-boundaries.tsrejects forbidden internal dependencies, cycles, deep imports, and cross-package relative imports