- cluster_node, cluster_lease, cluster_setting as standard QQQ tables
(cluster.read / cluster.write), node status possible values, help for
every table, field, process, widget and value source
- Liquibase changelogs in the jar: schema (idempotent, no FKs, no
superuser) and insert-only seeded settings
- runtime: register + heartbeat on the database clock, drain requests
flowing to QNodeLifecycle.startDraining, DRAINING/STOPPED tracking,
lost-node sweep on the cluster-sweeper lease with the cluster.node.lost
alert, idempotent purge of old rows; ClusterRuntimeService
- ClusterLeases: one atomic compare-and-set UPDATE per change
(ConditionalUpdateAction), tryAcquire / renew / release / isLeader
- record actions Drain node and Cancel drain (standard ETL Review /
Result, cluster.drain), Cluster app with the Nodes widget by role,
cluster.node.heartbeat health check
- CI (CircleCI qqq-orb), release-rc workflow, docs, 35 tests (memory
backend, plus Liquibase and the RDBMS module on H2)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>