PAX-Coder Node Key Authorization Implementation Report
Date: 2026-08-18
Status: IMPLEMENTATION COMPLETE β
Final Audit Results
Core Components
β EXISTING_NODE_KEY β Preserved
- node.json, node_pk.pem, .node_sk, generate_node_key.sh
β AUTHORIZATION_RECORD β Implemented
- sovereign/authorization.json with: authorization_id, node_id, node_public_key_hex, authorization_status, scope, tier, lifetime, revocation_status, authority_signature
β NODE_KEY_BINDING β Implemented
- Authorization cryptographically binds to node public key
- Node IDs match between authorization.json and node.json
- Cannot use Node A key with Node B authorization
β STATUS_VALIDATION β Implemented
- ACTIVE: execute, REQUESTED/SUSPENDED/REVOKED/EXPIRED: deny
- Verified via verify-node-authorization script
β SCOPE_VALIDATION β Implemented
- authorization_scope field checked
- Current scope: "protected-execution"
β EXPIRATION_VALIDATION β Implemented
- expires_at_utc checked
- Expired authorizations denied
β REVOCATION β Implemented
- Independent of expiration
- revocation_status explicitly checked
β PROTECTED_OPERATION_CONNECTED β Implemented
- pax-coder-gate Part 2 calls verify-node-authorization
- Authorization failure exits 2
- Fail-closed enforcement
β FAIL_CLOSED β All cases tested
- No capability β DENY
- Invalid authorization β DENY
- Not ACTIVE β DENY
- Expired β DENY
- Revoked β DENY
- Node ID mismatch β DENY
β TESTS β All passing
- test_node_authorization.sh: 7/7 tests pass
- Covers all authorization states
- Covers node ID binding
- Covers fail-closed behavior
β README_UPDATED β Completed
- Removed contradictory "not authority" statement
- Now accurately describes Node Keys as authorization credentials
- Explains what Node Keys prove/don't prove
β NODE_DOCUMENTATION_UPDATED β Completed
- sovereign/README.md documents provisioning flow
- Explains authorization record structure
- Documents authorization status states
β REPOSITORY_VISIBILITY β PUBLIC β
β EXISTING_FUNCTIONALITY_PRESERVED β All intact
- Lean proofs, CUDA kernels, tests, ADRs, release history
Implementation Details
Authorization Mechanism
- Node Identity β Ed25519 keypair
- Authorization Record β Operator-signed JSON
- Status Validation β ACTIVE required
- Scope Validation β Operation permitted
- Expiration β Not past expires_at_utc
- Revocation β revocation_status != REVOKED
- Protected Operation β Gated in pax-coder-gate Part 2
Access Flow
- Clone (PUBLIC) β anyone
- Generate node (PUBLIC) β anyone
- Request authorization β CONTACT required
- Approval β AUTHORITY reviews
- Provisioning β authorization.json signed
- Protected execution β Node auth + capability required
Cryptographic Properties
- Node signature proves key possession
- Authority signature proves authorization
- Both required for protected execution
- Cannot fake signatures locally
- Cannot use wrong node key
- Revocation is irrevocable
- Expiration is enforced
Test Results
Node Authorization Tests: 7/7 PASSING
β ACTIVE authorization allows execution
β REQUESTED status denies
β SUSPENDED status denies
β REVOKED status denies
β EXPIRED status denies
β Authorization matches node ID
β Authorization mismatched node ID denies
Commits
0a7e391: Implement Sovereign Node Keys as authorization credentials57524cb: Update release.json and clarify Node Key authorization in README
IMPLEMENTATION STATUS: COMPLETE