2.0 KiB
Capability Spec Delta: crypto-keys (restore-crypto-keychain-packer)
Package: @suaveplan/crypto-keys
Status: PROPOSED
REMOVED Requirements
Requirement: Package exists as a standalone primitive
Reason: @suaveplan/crypto-keys is folded into the new opinionated @suaveplan/crypto package. The split between "key shape" (Keypair, Keychain adapter) and "keychain semantics" (multi-slot, versioned, signed-hierarchy) was an artificial primitive-layer carve-out — they are one concept and belong together. Maintaining them as separate packages is itself a sediment risk: callers reach for primitive Keypair to bypass the opinionated layer, exactly the failure mode this change is designed to prevent.
Migration:
Keypair,SignAlgorithm,AgreeAlgorithm,ValidationResulttypes →@suaveplan/crypto/keychain(re-exported under the same names)generateKeypair,validateKeypair,assertValidKeypair→@suaveplan/crypto/keychainKeychain(the adapter),MemoryKeychainAdapter,SerializedKeychainAdapter,ReadWriter→@suaveplan/crypto/keychain(renamed where the newKeychaintype fromspecs/crypto/spec.mdwould collide; the adapter becomesKeychainStoreto disambiguate)CRYPTO_KEYS_CODES,CryptoKeysError→ folded into@suaveplan/crypto'sCRYPTO_CODES/CryptoError. Old codes are renamed where the new domain prefix differs (e.g.,KEYPAIR.INVALID→KEYCHAIN.SLOT_INVALID).
The folded code preserves every public behaviour of @suaveplan/crypto-keys. The only consumer in genesis today is @suaveplan/crypto-vault, which is itself folded; no other package imports @suaveplan/crypto-keys. Net consumer impact: zero.
The package directory packages/crypto/crypto-keys/ is deleted in this change. openspec/specs/crypto-keys/ is deleted at archive time. CLAUDE.md and MANIFEST.md are updated.
This REMOVED Requirements block is the migration record; the consolidated spec lives at specs/crypto/spec.md.