Initial Commit

This commit is contained in:
2026-05-27 23:29:53 +01:00
commit fbc70f96e6
10000 changed files with 1102152 additions and 0 deletions

View File

@@ -0,0 +1,24 @@
# Capability Spec Delta: crypto-vault (restore-crypto-keychain-packer)
**Package**: `@suaveplan/crypto-vault`
**Status**: PROPOSED
## REMOVED Requirements
### Requirement: Package exists as a standalone primitive
**Reason:** `@suaveplan/crypto-vault` is folded into the new opinionated `@suaveplan/crypto` package alongside `@suaveplan/crypto-keys`. The vault, the keychain, the packer, and the signing hierarchy are inseparable — the original design across `nx/libs/keys/keys-common.ts` and `suaveplan/packages/universal/packer/` always treated them as one capability. Splitting them across three packages in genesis was a primitive-layer carve-out that made the missing top-layer easier to overlook.
In particular, the misleadingly-named `ChainSigner` (a flat `Map<string, Keypair>` with no chain semantics) is *replaced*, not folded as-is. Its name implied a hierarchy that the implementation never delivered; the new `Authority` interface in `@suaveplan/crypto` finally earns that name by signing under a real root → server hierarchy with revocation and audit-log support.
**Migration:**
- `Vault` → `@suaveplan/crypto/vault` (preserved API; default AEAD switched from AES-GCM to XChaCha20-Poly1305 — see `specs/crypto/spec.md`)
- `VaultEvents`, `VaultOptions` → `@suaveplan/crypto/vault`
- `generateMnemonic`, `mnemonicToSeed`, `validateMnemonic`, `GenerateMnemonicOptions` → `@suaveplan/crypto/vault/mnemonic`
- `ChainSigner` → **REMOVED ENTIRELY**, no replacement. Callers must use `Authority` from `@suaveplan/crypto`. The migration is non-trivial: `ChainSigner.addKey(id, keypair)` → `InMemoryAuthority.fromKeychain(keychain)` plus a hierarchy operation (`createServer` / `rollServer`). A codemod is provided at `scripts/codemods/chain-signer-to-authority.ts`.
- `CRYPTO_VAULT_CODES`, `CryptoVaultError` → folded into `@suaveplan/crypto`'s `CRYPTO_CODES` / `CryptoError`. Code names are aligned to the new domain prefixes (`VAULT.*`, `AUTHORITY.*`).
The package directory `packages/crypto/crypto-vault/` is deleted in this change. `openspec/specs/crypto-vault/` 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`.