Initial Commit
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
# 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`, `ValidationResult` types → `@suaveplan/crypto/keychain` (re-exported under the same names)
|
||||
- `generateKeypair`, `validateKeypair`, `assertValidKeypair` → `@suaveplan/crypto/keychain`
|
||||
- `Keychain` (the adapter), `MemoryKeychainAdapter`, `SerializedKeychainAdapter`, `ReadWriter` → `@suaveplan/crypto/keychain` (renamed where the new `Keychain` type from `specs/crypto/spec.md` would collide; the adapter becomes `KeychainStore` to disambiguate)
|
||||
- `CRYPTO_KEYS_CODES`, `CryptoKeysError` → folded into `@suaveplan/crypto`'s `CRYPTO_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`.
|
||||
Reference in New Issue
Block a user