Documentation
Node capabilities
Configure controller permissions, capture ownership, and capture-loss recovery independently.
SQLStyle does not assign node roles. Each managed connection declares five independent properties:
capabilities: {
controller: {
vote: true,
storage: true,
promotable: true,
},
runtime: {
capture: "on",
on_capture_loss: "none",
},
}
These defaults produce regular SDK behavior.
Controller capabilities
voteallows counted health concerns. A concern is counted only after the local token-bound peer-health channel has previously reached the current holder.storageallows storage-floor probes and storage-derived analytics work when the local image is ready.promotableallows authority acquisition, offers, and handoff candidacy. The runtime still requires a usable image and sufficient frontier.
The three values form one immutable mask for an authenticated WebSocket. Changing the mask requires reconnecting. A zero-capability connection can read topology and use ASP transport but does not appear as a topology node.
Runtime capabilities
capture controls capture-lock ownership:
onuses ordinary contention.prioritytakes priority intent before contending.offnever attempts ordinary capture ownership.
on_capture_loss: "recover" performs terminal cleanup after capture-owner loss
and exclusive presence. It requires capture: "off". The default is none.
Controller permissions are independent of runtime capture. For example, a capture-disabled connection can still vote, answer storage operations, or route ASP calls if those controller capabilities are enabled.
Common combinations
Terms such as regular, host-like, companion-like, witness-like, and ASP-client-like are explanatory shorthand only. They do not appear in config, the protocol, persistence, or runtime state.
The controller identifies the current writer solely from the authoritative lease record. Local write admission additionally requires the capture lock, a usable image, and the writer-admission gate.