Skip to content

id: build: TigerBeetle cluster provisioning — RTT mesh gate, 6-replica format, dead-replica runbook + rehearsal #2292

Open

Description

@dezren39

Buildable follow-on from the #2064 topology investigation (doc PR #2291). The topology decision itself: 6 replicas, 2 per site × 3 cloud providers, sites within a few ms — cluster size is fixed at format time, so nothing here formats a production cluster until the #2064 doc has had its review round and the currency synthesis (#2043) confirms it.

Scope

  1. Site RTT measurement mesh (pre-format gate). Stand up one throwaway VM per candidate site (3 providers, metro-clustered region picks per the id: investigate: TigerBeetle cluster topology decision — 3 vs 6 replicas, site placement, commit latency #2064 doc §5), measure the full pairwise RTT mesh over ≥24h (p50/p95/p99), and record the results on this issue. Gate: if the slowest pairwise p95 exceeds the vendor's "few milliseconds" guidance by a wide margin, re-pick regions before any format.
  2. Cluster provisioning. Provision 6 replicas per the vendor hardware rules (dedicated machine + disk per replica, local NVMe, ECC where available, Linux ≥ 5.6, supervisor per replica), format at replica-count 6 with a recorded cluster ID, and bring the cluster up empty. No real value, no production data — this proves the shape.
  3. Dead-replica replacement runbook + rehearsal. Jepsen (via id: investigate: TigerBeetle — multi-currency ledgers, conversions, per-coin vs balance model, 3-node cluster topology #2040) found replica replacement the sharp operational edge: write the replacement procedure as a runbook in doc/, then rehearse it — kill one replica, replace it per the runbook, verify the cluster returns to full availability with balances intact.

Acceptance criteria

Parent epic: #2056. Origin investigation: #2064. Source investigation: #2040.

Activity

  1. added
    app/idPackage/app: id (pkgs/ or apps/ in this repo)
    on Oct 29, 2026
  2. developing-today commented on Oct 29, 2026

    @developing-today
    Contributor
  3. added
    kind/infrastructureInfrastructure / host-portability work
    priority/normalOrdinary priority (the default)
    effort/lLarge: multi-day or open-ended; expect staged check-ins
    meta/enrichedIntake review done: acceptance criteria, links, and normalized labels added
    on Oct 29, 2026
  4. dezren39 commented on Oct 29, 2026

    @dezren39
    MemberAuthor

    Intake review

    Related: #2064 (topology investigation, doc PR #2291), #2040 (Jepsen source), #2043 (synthesis gate), epic #2056

    Notes: Acceptance criteria were already in the body as a checklist — labels only this pass, no body edit. The production format stays gated on the #2064 review / #2043 confirmation per the body itself.

    Risks: Provisioning real VMs across 3 providers has cost/credential needs a repo-only worker cannot meet; the RTT mesh (≥24h) is the long pole.

    Suggested approach: Start with the RTT mesh gate; do not format any cluster before the gate and the review round clear.

    🤖 Agent note · filed

    • Agent: fleet monitor (repo-fleet-monitor)
    • Session / ID: repo-fleet-monitor run 2026-10-29T12:12Z (07:12 CDT)
    • Found via: monitor reconciliation
    • Task: Duty 2 intake enrichment — acceptance criteria appended (original body preserved verbatim above it), labels normalized, meta/enriched applied. Still-live check this pass: no merged PR or fix commit explicitly resolving this issue was found; where a queue triage task owns verification, it is named in the notes.
    • Expectation: see the effort label; done = the appended acceptance criteria are met.
    • Links: this issue
  5. added
    queue/queuedHas a queued task in the Supabase agent queue
    source/creatorFiled by the new-issue-creator job
    task/triageQueue packet kind: verify, reproduce, and route this item
    on Nov 3, 2026
  6. dezren39 commented on Nov 3, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · blocked (escalated to Drew)

  7. added
    queue/blockedQueue or user escalation state
    status/blockedQueue or user escalation state
    user/escalatedQueue or user escalation state
    and removed
    queue/queuedHas a queued task in the Supabase agent queue
    on Nov 3, 2026
  8. developing-today commented on Nov 3, 2026

    @developing-today
    Contributor

    agent-note:v1
    state: triaged (coverage pass)
    Coverage pass 2026-11-03: reviewed in the fleet-wide per-issue pass (drift / overlap / already-handled / stale / blockers / ordering). Verdict: still live; queued in repo-health-code-pilot as triage at priority 40 (priority/normal). If this is already handled at current main, the triage closes it with evidence; if it needs splitting, the triage files the split.
    Found via: coverage pass 2026-11-03

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

app/idPackage/app: id (pkgs/ or apps/ in this repo)effort/lLarge: multi-day or open-ended; expect staged check-inskind/infrastructureInfrastructure / host-portability workmeta/enrichedIntake review done: acceptance criteria, links, and normalized labels addedpriority/normalOrdinary priority (the default)queue/blockedQueue or user escalation statequeue/queuedHas a queued task in the Supabase agent queuesource/creatorFiled by the new-issue-creator jobstatus/blockedQueue or user escalation statetask/triageQueue packet kind: verify, reproduce, and route this itemuser/escalatedQueue or user escalation state

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions