Add node identity (did:web) separate from social account
Nodes now have their own did:web:{hostname} identity for coordination
(consent, discovery, policy), independent of any social account they
may host. Social account fields (DID, HANDLE, SIGNING_KEY) are now
optional — nodes can run as replication-only without a social account.
- New node-identity module: keypair lifecycle, did:web derivation, DID
document generation
- Config: social fields optional, added NODE_DID, NODE_MANAGERS
- Server: auto-generates node keypair, separate node-repo.db, optional
social account repo
- Auth: accepts node DID + social DID + manager DIDs
- ReplicationManager: uses nodeDid for gossipsub, offers, challenges
- XRPC handlers: fall back to NODE_DID when social DID not configured
- All 384 tests pass, zero TypeScript errors