Documentation · Releases · Medusa

Medusa

v0.7.12 — Medusa

Every segregated chainweb earns a slice-aware ServerScore that's proportional to the slice it actually has — not the host's total capacity. Honest by construction.

When 3 chainweb containers share a single SSD, each container's disk subscore is the drive's benchmark divided by 3. Add a 4th, all four get bench/4 on the next scoring tick. Move one to a different drive, the others' divisors update automatically. Sum across siblings on a drive always equals the drive's raw benchmark — no double-credit, no shortfall.

What landed

  • N independently-scored chainweb containers per host — each its own nodes row, its own ServerScore, its own slice CPU/RAM/drive.
  • Slice-aware ServerScore math: drive divisor is per-slice, not host-wide. Honest by construction.
  • Cgroups-isolated CPU/RAM/IO bands so noisy neighbours can't starve the slice.
  • Install gates: ≥ 3 vCPU, ≥ 6 GB RAM, SSD-only data drive per segregated container.
  • Per-drive commitment cap — sum of committed_gb across containers stays under capacity minus 5% safety margin.
  • Compose spec hash for install reproducibility — identical inputs produce identical containers.
  • Recommended chainweb-port allocator avoids collisions across containers on the same host.
  • 104 m-series patches polishing tunneling, install wizard, fleet counters, and admin observability.

Operator notes

A single host can now run N independently-scored chainweb containers sharing the host's drives + network + frps role. Each container is its own nodes row with its own slice CPU/RAM, its own data drive, its own ServerScore.

The four operator rules (operator-stated, codified):

  1. DNS gate — every server hosting chainweb must have a stable DNS hostname. The install endpoint refuses without one.
  2. Full-host minimums — chainweb in normal mode requires ≥ 2 physical cores, ≥ 8 GB RAM, an SSD where the data sits.
  3. Segregated minimums — each container in cluster mode reserves ≥ 3 vCPU + ≥ 6 GB RAM. SSD required for the data drive.
  4. Per-drive commitment cap — sum of committed_gb across every chainweb on a drive ≤ drive capacity − 5% safety margin.

Audit reference

The slice-aware scoring model, drive-divisor honesty proof, and the 148/148 test sign-off are published in the Medusa audit →

Patch log

Patch log (104 entries)
  • v0.7.12m30 · /api/admin/hub-stats now returns the server-grouped
  • v0.7.12m29 · system-probe `docker ps` + `ps -eo` now use sudo -n
  • v0.7.12m28 · suppress GATE 7 false positive when chainweb is
  • v0.7.12m27 · sweep stranded Tunneler-fee residue at Tunnelee
  • v0.7.12m26 · fix nuke-vs-scoring-worker race condition.
  • v0.7.12m25 · self-container uninstall now deletes the node row.
  • v0.7.12m24 · tolerate multi-thread sysbench failure under host
  • v0.7.12m23 · MinerTab variant matching for slaves with a host-wide
  • v0.7.12m22 · two operator-flagged followups after the m20+m21
  • v0.7.12m21 · release ghost port allocations (auto on uninstall +
  • v0.7.12m20 · slot-suffix the install layout for slave (segregated
  • v0.7.12m19 · port rows in the Hub Registry left-align with the
  • v0.7.12m18 · Two unrelated layout fixes:
  • v0.7.12m17 · Tunneler fee routing follows the TUNNELEE's warmup
  • v0.7.12m16 · Hub Registry: tip + ports merged into one row per
  • v0.7.12m15 · Medusa Panel running indicator: container-name
  • v0.7.12m14 · four operator-flagged fixes:
  • v0.7.12m13 · propagate the m12 RAM-minimum change (7 GB Prime)
  • v0.7.12m12 · Stoa Node (Prime) RAM minimum: 4 → 7 GB. Operator
  • v0.7.12m11 · drop the Stoa Node RAM minimum from 8 GB → 4 GB.
  • v0.7.12m10 · probeHostDrives lsblk-version compatibility + snap
  • v0.7.12m9 · full-host SSD gate: live-probe the drive at gate-check
  • v0.7.12m8 · install gate's DNS inheritance covers Tunnelees too.
  • v0.7.12m7 · root-cause fix for m5/m6 docker auto-install failure +
  • v0.7.12m6 · three small follow-ups operator-flagged after m5:
  • v0.7.12m5 · chainweb install preflight: auto-install docker.io +
  • v0.7.12m4 · THREE fixes from the Athos / Porthos saga:
  • v0.7.12m3 · Tunnelee frpc-repair script: drop strict mode + add
  • v0.7.12m2 · Tunnelee local sshd port: track it, surface it,
  • v0.7.12m1 · Tunnelee enrollment two fixes after Athos / Porthos
  • v0.7.12k4a · drive-list bugs in AddSlaveWizard, surfaced when
  • v0.7.12k4 · AddSlaveWizard math gap closed (Phase 1 of the
  • v0.7.12k3 · entry header line is now the ONLY visually-selected
  • v0.7.12k2 · Convert buttons relocated INTO the selected entry's
  • v0.7.12k1 · Medusa Panel restructure: per-entry collapse to a
  • v0.7.12k · Add SLAVE NNN feature wired end-to-end + warmup rules
  • v0.7.12j19 · convert-to-segregated now PRESERVES warmup state +
  • v0.7.12j18 · convert buttons moved from Migrate sub-tab into the
  • v0.7.12j17g · Hub Registry now shows the score for full-host rows
  • v0.7.12j17f · convert-to-prime third SQL bug. Operator hit:
  • v0.7.12j17e · scoring-worker accrual gate now respects slice-aware
  • v0.7.12j17d · convert-to-prime second SQL bug fix. After j17c
  • v0.7.12j17c · convert-to-prime SQL bug fix. Operator hit:
  • v0.7.12j17b · Flags tab default view also surfaces hub-internal
  • v0.7.12j17 · Flags tab input pre-fills from `stored` when the flag
  • v0.7.12j16 · convert-to-prime hardening: nginx upstream auto-
  • v0.7.12j15 · Convert-to-Prime gets a 2-step wizard with port-mode
  • v0.7.12j14 · convert-to-prime ships (slave → full-host reverse of
  • v0.7.12j13 · pure-Tunneler fees now route to account.current
  • v0.7.12j12 · drive bench now produces the SAME composite the
  • v0.7.12j11 · fio uses libaio + direct so iodepth actually queues
  • v0.7.12j10 · fio JSON parse no longer silently fails on hosts
  • v0.7.12j9 · slice CPU bench switched to sysbench (matches host
  • v0.7.12j8 · Container Score sanity (drive contribution scaled),
  • v0.7.12j7 · slave accrues + slave re-run benchmark wired + drive
  • v0.7.12j6 · segregated child renders the EXACT same
  • v0.7.12j5 · Container Score 5-tile breakdown + SSE polling
  • v0.7.12j4 · SSE trailing-slash fix + StoaNodeTwo drive registration
  • v0.7.12j3 · slice-aware live compute everywhere (so the registry
  • v0.7.12j2 · Container Score for slaves + slice-aware score in
  • v0.7.12j1 · Medusa scope-switcher + segregated-host aggregate
  • v0.7.12i30 · clear stale scoring/warmup state on the parent
  • v0.7.12i29 · miner --node port bug (was using container port
  • v0.7.12i28 · segregated-host stoicism gating + revert i23 (cgroup
  • v0.7.12i27 · THE convert bug, finally pinned by i26's diagnostic
  • v0.7.12i26 · diagnostic probes on convert failure + polling
  • v0.7.12i25 · capture chainweb logs on convert failure + restructure
  • v0.7.12i24 · REAL convert bug + 2 UI fixes.
  • v0.7.12i23 · cgroup block fully dropped + UI cleanups.
  • v0.7.12i22 · with the cgroup block in cpu_shares form. So the issue
  • v0.7.12i21 · live progress ticker during the /info wait.
  • v0.7.12i20 · rebind /info wait budget 60s → 300s (5 min).
  • v0.7.12i19 · Nodes counter consolidated into a single medallion.
  • v0.7.12i18 · /hub/nodes registry: stale-tip fix, mining indicator,
  • v0.7.12i17 · /hub/nodes registry: ONE row per server (operator
  • v0.7.12i16 · /hub/nodes registry: server-grouped layout.
  • v0.7.12i15 · Three rebind bugs surfaced by StoaNodeTwo's first
  • v0.7.12i14 · Convert wizard Identity section + inline progress view.
  • v0.7.12i13 · Convert wizard Ports section refinement (operator-stated):
  • v0.7.12i12 · Convert wizard Step 4 reorganized into 5 numbered sections
  • v0.7.12i11 · Step 3 commit-slider predictability + precise input.
  • v0.7.12i10 · two operator-flagged corrections:
  • v0.7.12i9 · Convert wizard drive list refinements:
  • v0.7.12i8 · Convert wizard drive picker shows ALL drives, including
  • v0.7.12i7 · drive capacityBytes always reported as 1 byte (findmnt
  • v0.7.12i6 · Convert wizard Step 1 surfaces fit math + per-dimension
  • v0.7.12i5 ·
  • v0.7.12i4 · Convert wizard Step 3 drive-commit math + slider polish.
  • v0.7.12i3 · HOST_RESERVE_CPU 4 → 3 (operator-stated capacity-fit math).
  • v0.7.12i2 · hotfix RAM-detection in convert-preflight + install gates.
  • v0.7.12i1 · hotfix two more references to the renamed `server_dns_hostname`
  • v0.7.12i · Seed page uses cluster-id; Install/Convert wizards add
  • v0.7.12h · cluster-id as per-node unique nickname. Hub-managed registry,
  • v0.7.12g1 · operator-stated naming convention: hotfixes on a given
  • v0.7.12g · nginx-upstream auto-rewrite when chainweb service port changes.
  • v0.7.12f · MedusaPanel rewrite + Stoicism orphan-bucket fix +
  • v0.7.12e · Operator UI for per-node chainweb + miner ports.
  • v0.7.12d · Engine for per-node chainweb + miner port self-service.
  • v0.7.12c · Medusa view + miner-as-container + slot allocator.
  • v0.7.12b · Medusa convert wizard + miner migration + UI polish.
  • v0.7.12a · Medusa UI integration — first set of mounted primitives.
  • v0.7.12 · MEDUSA — segregated containers, end-to-end. 13 phases shipped.
  • v0.7.12j15-events · single Migration card (preflight ordering
  • v0.7.12d-pa · post-deploy hotfix: resolveServicePort prefers host-side port.

← back to Releases · stamped against H.1.19