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).
Fleet state (live)
Section titled “Fleet state (live)”| 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, VIP10.10.26.100/24, router-id 26, dc-1 “Datacenter”) is initialized only on .75 → .75 is the entry host; the federated view E2Es drivehttps://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/leaveon .75 (guest-safe, local-only) before forming the real 3-node cluster. /etc/synvirt/releasestamps are stale everywhere (known hot-deploy gotcha);/api/v1/node/identityis 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).
Console machine (this box, 10.10.26.1)
Section titled “Console machine (this box, 10.10.26.1)”- 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).
Baseline notes
Section titled “Baseline notes”cargo build --releaseinitially failed in the worktree:synvirt-guest-installer’s build.rs requires the gitignored guest payloads — fixed by symlinkingiso-builder/vendor/guest-payloads/ {shared,x64,x86}from the main checkout.- web-ux-v2
npm run buildgreen: 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 useSYNVIRT_E2E_BASE=https://10.10.26.100/(the VIP).
Phase 3/4 live evidence (01:1x)
Section titled “Phase 3/4 live evidence (01:1x)”.75left its stale single-node cluster (POST /cluster/leave→ 204;cluster_state=federated; protected QEMU PID 2396345 identical before/after)..65lab storage leg up:10.99.26.3/24on 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 targetnight-chap(nightuser/nightsecret123) + NFS export/srv/night-test-nfsto 10.99.26.0/24 (v4.x, fsid=7301).