Skip to content

Night shift 2026-06-11 — Phase 0 recon snapshot

Synced read-only from /home/synnet/mirrors/synvirt-product/docs/night/20260611/RECON.md. Edit at the source, not here.

Night shift 2026-06-11 — Phase 0 recon snapshot

Section titled “Night shift 2026-06-11 — Phase 0 recon snapshot”

Captured 2026-06-11 ~22:20 local, before any change.

Base decision (documented deviation from the brief)

Section titled “Base decision (documented deviation from the brief)”

The brief said “base: feature/daemon-split @ Fix75+build.1024”. On disk, 0.15.0 is strictly ahead of feature/daemon-split (38 commits, daemon-split fully merged at 0df3379), carries all the cloud/federation work (b1f94fe, c5a21a8, …), and is what the three nodes actually run (build.1063-dirty). Tony’s two direct asks (duplicate-hostname guard, N clusters) need that cloud code.

Night branch: feature/nightshift-20260611 based on 0.15.0 @ 1f55f6c. Worktree /home/synvirt/worktrees/nightshift-20260611, cargo target shared with the main checkout via symlink (disk was at 97%; removing the merged daemon-split worktree’s stale target freed 15 G).

Host hostname identity version cluster_state guests (PROTECTED) NICs
10.10.26.56 synvirt-02 0.15.0-Fix77+build.1063-dirty federated Win2016-Clone-56 QEMU PID 132218 eno1=uplink vSwitch0 carries stray L3 10.10.26.59/24 (L2-only violation, Phase 3 target); eno2 UP 10.10.26.58/24 → SPARE; ipMGMT 10.10.26.56
10.10.26.65 synvirt-01 0.15.0-Fix77+build.1063-dirty federated none no OVS at all post-reinstall; ens192 = 10.10.26.65 (mgmt, UNTOUCHABLE); ens224 = stray 10.10.26.67/24 → SPARE
10.10.26.75 synvirt-01 0.15.0-Fix77+build.1063-dirty cluster (STALE single-node, cluster_id=CLUSTER) Windows Server 2016 QEMU PID 2396345 ens10f0=uplink vSwitch0; ens10f1 UP no L3; ens10f2/f3 NO CARRIER; ipMGMT 10.10.26.75 + VIP 10.10.26.100
  • Protected-guest PID correction: the brief’s PID 1469944 for the .75 Windows Server 2016 guest is stale — the live PID is 2396345 (same domain). That PID is the protected one tonight. The clone on .56 (PID 132218) is treated as equally untouchable.
  • Federation is full-mesh: each node has the other two in /api/v1/hosts. Pins exist for cluster promote from any seed.
  • Cloud “SYNNET” (cloud.synnet.mx, VIP 10.10.26.100/24, router-id 26, dc-1 “Datacenter”) is initialized only on .75 → .75 is the entry host; the federated view E2Es drive https://10.10.26.100/.
  • .75’s stale cluster is a leftover from the pre-reinstall .65↔.75 pair; members list contains only itself. Plan: POST /api/v1/cluster/leave on .75 (guest-safe, local-only) before forming the real 3-node cluster.
  • /etc/synvirt/release stamps are stale everywhere (known hot-deploy gotcha); /api/v1/node/identity is the truth.
  • hostnames .65 and .75 BOTH say synvirt-01 — live motivation for the duplicate-hostname guard (they coexist only because they were added before the guard).
  • ens192 = 10.10.26.1/24 (mgmt + how every host is reached) — untouchable, but test IPs as SECONDARY addresses are fine and listed for cleanup.
  • ens161 / ens256: physically present, no carrier → unusable for the lab leg. Lab ipStorage leg = secondary subnet on ens192 (same L2 as every host NIC on the 10.10.26.0/24 wire).
  • ZeroTier ztpp6mxztz (10.61.26.5) is Tony’s admin path — never touched.
  • Leftover dummy_dhcp* interfaces from previous experiments — ignored.

Test ipStorage addressing (user-input values, entered via the UI)

Section titled “Test ipStorage addressing (user-input values, entered via the UI)”
  • Subnet: 10.99.26.0/24, untagged over the shared 10.10.26.x L2.
  • console = 10.99.26.1/24 (secondary on ens192)
  • .56 = 10.99.26.2/24 (ipStorage Service Port over spare eno2)
  • .65 = 10.99.26.3/24 (ipStorage Service Port over spare ens224)
  • .75 = 10.99.26.4/24 ONLY if Phase 3 proves the VLAN-subif fallback (its spares have no link); otherwise documented for the morning.
  • Zero route overlap with 10.10.26.0/24 (mgmt), 172.16.0.0/16 (SYNNET DC), 10.61.26.0/24 (ZT).
  • cargo build --release initially failed in the worktree: synvirt-guest-installer’s build.rs requires the gitignored guest payloads — fixed by symlinking iso-builder/vendor/guest-payloads/ {shared,x64,x86} from the main checkout.
  • web-ux-v2 npm run build green: 13.6 s; index chunk 505 kB (160 kB gzip) — Phase 2’s main target.
  • Playwright suite default base was stale (10.10.26.55); night runs use SYNVIRT_E2E_BASE=https://10.10.26.100/ (the VIP).
  • .75 left its stale single-node cluster (POST /cluster/leave → 204; cluster_state=federated; protected QEMU PID 2396345 identical before/after).
  • .65 lab storage leg up: 10.99.26.3/24 on ens224 (manual, documented cleanup item; the PRODUCT flow runs on .56 through the UI). iperf3 console(10.99.26.1) ↔ .65(10.99.26.3): 9.35 Gbit/s.
  • Console lab: LIO target iqn.2026-06.mx.synvirt.lab:night-target (lun0 20G, ACLs for synvirt-01/02/03, portal 10.99.26.1:3260 only) + CHAP target night-chap (nightuser/nightsecret123) + NFS export /srv/night-test-nfs to 10.99.26.0/24 (v4.x, fsid=7301).