security_review/wallet_policy.json

2641 bytes
{
  "addressing": {
    "address_prefix": "SPACE",
    "address_rule": "SPACE-SHA256(canonical public JWK)[:32]",
    "address_version": 1,
    "chain_specific_replay_protection": "signed spends bind chain_id and payload version",
    "mainnet_gap": "final public mainnet address version and migration policy require review"
  },
  "chain_id": "spacecash-devnet-1",
  "custody": {
    "current_model": "non_custodial_browser_devnet",
    "custodial_operations_allowed": false,
    "development_candidate_keys": "unsafe_for_custody",
    "hardware_wallet_support": "not_implemented",
    "production_custody_status": "not_approved"
  },
  "encrypted_backup": {
    "backup_rotation_status": "manual_user_export_only",
    "cipher": "AES-256-GCM",
    "envelope_type": "spacecash-encrypted-wallet-backup",
    "kdf": "PBKDF2-SHA256-250000",
    "minimum_passphrase_length": 12,
    "private_key_material": "private JWK is allowed only inside encrypted browser backup JSON",
    "server_backup_storage_allowed": false,
    "wallet_export_version": 1
  },
  "id": "spacecash-devnet-wallet-policy-v1",
  "mainnet_gaps": [
    "recovery phrase or deterministic recovery standard",
    "final address version and migration policy",
    "backup rotation and verification workflow",
    "lost-key and compromised-key operating procedures",
    "hardware wallet or custody plan",
    "legal and operational custody review"
  ],
  "manual_gate": {
    "id": "wallet_recovery_custody_policy_complete",
    "reason": "Production recovery, address versioning, backup rotation, hardware/custody, and operating procedures still require approval.",
    "status": "not_complete"
  },
  "mode": "local signed devnet",
  "policy_hash": "239750DE7AC4374A298EED8124925E8193B8D16FA966E0D6FBB256B873F422C8",
  "recovery": {
    "compromised_key_policy": "create a new wallet, stop using the compromised key, and record operational review before production",
    "current_recovery_method": "encrypted browser wallet backup JSON",
    "lost_key_policy": "no server recovery for lost browser private keys",
    "recovery_phrase_standard": "not_implemented",
    "user_backup_verification_status": "manual_export_import_flow_only"
  },
  "scope": "Defines the current wallet recovery and custody boundary. It is not a production custody approval.",
  "signing": {
    "algorithm": "ECDSA P-256",
    "payload_format": "canonical JSON",
    "registered_public_key_required_for_signed_spends": true,
    "server_private_key_required": false,
    "server_private_key_storage_allowed": false
  },
  "version": 1
}