=== Stage 4 carve residue cleanup + dc1 nginx removal -- 2026-07-27 === repo HEAD: 84951307a918a695e6f7f84ed4f8c992f248cd01 branch: dc-dc-stage4-phase3-maas-deploy SCOPE: the residue CURRENT-STATE flagged at the 2026-07-23 carve, deferred to stage close: 192.168.1.0/24 + emptied fabric-5 + ~90 empty auto-created fabrics. Plus the nginx install left behind on dc1 by the removed mirror. METHOD: read-only audit FIRST, emptiness PROVEN per fabric, never assumed. Deleting a MAAS fabric cascades to its VLANs, and this repo lost 9 machine records to exactly that class on 2026-07-21 because the association check ran AFTER the delete. Here a fresh occupancy snapshot (fabrics + subnets + ipranges + every machine interface) was taken IMMEDIATELY before the batch, and the cascade check was ALSO re-run after each delete. --- 1. pre-cleanup audit: 108 fabrics, 90 empty / 18 occupied --- A fabric counted EMPTY only with zero subnets, zero ipranges and zero node interfaces across all its VLANs. The audit also caught an ORDERING dependency the flag did not state: 192.168.1.0/24 (subnet id 8) was the ONLY occupant of fabric-5, so the subnet had to be deleted first or the fabric delete would have cascaded it away. KEPT -- load-bearing, verified occupied (fabric id / name / cidr / node interfaces): 0 fabric-0 10.10.0.0/24 + 2602:f3e2:f01:100::/64 office1 base + GUA 1 fabric-1 10.10.1.0/24 office1 compose (2 LXD guests) 2 fabric-2 172.31.0.0/30 dc0 transit 3 fabric-3 192.168.122.0/24 libvirt default 4 fabric-4 10.12.8.0/22 dc0 metal-admin/boot, 9 nodes 141 fabric-141 172.31.0.4/30 dc1 transit 142 fabric-142 10.12.68.0/22 dc1 metal-admin/boot, 9 nodes 188-192 vr1-dc0-{provider-public,metal-internal,data-tenant,storage,replication} 9-18 ifaces each 193-197 vr1-dc1-{provider-public,metal-internal,data-tenant,storage,replication} 9-18 ifaces each DELETED: subnet id=8 192.168.1.0/24 the superseded OPNsense FACTORY LAN (both edges were re-addressed to 10.12.4.1 / 10.12.64.1); 0 ipranges, 0 interfaces fabric id=5 fabric-5 empty once subnet 8 was gone (held only its vid-0 default VLAN) fabrics 6..95 90 auto-created empties, each re-verified against a fresh occupancy snapshot taken immediately before the batch --- 2. post-cleanup fabric list (17, all accounted for above) --- fabric count: 17 0 fabric-0 vlans=[(5001, 0)] 1 fabric-1 vlans=[(5002, 0)] 2 fabric-2 vlans=[(5003, 0)] 3 fabric-3 vlans=[(5004, 0)] 4 fabric-4 vlans=[(5005, 0)] 141 fabric-141 vlans=[(5142, 0)] 142 fabric-142 vlans=[(5143, 0)] 188 vr1-dc0-provider-public vlans=[(5189, 0)] 189 vr1-dc0-metal-internal vlans=[(5190, 0)] 190 vr1-dc0-data-tenant vlans=[(5191, 0)] 191 vr1-dc0-storage vlans=[(5192, 0)] 192 vr1-dc0-replication vlans=[(5193, 0)] 193 vr1-dc1-provider-public vlans=[(5194, 0)] 194 vr1-dc1-metal-internal vlans=[(5195, 0)] 195 vr1-dc1-data-tenant vlans=[(5196, 0)] 196 vr1-dc1-storage vlans=[(5197, 0)] 197 vr1-dc1-replication vlans=[(5198, 0)] --- 3. CASCADE CHECK (the 2026-07-21 lesson, run after) --- machines: 20 {'Deployed': 2, 'Ready': 18} power_type: {'lxd': 2, 'virsh': 18} interfaces-per-machine: {1: 2, 7: 18} interfaces ORPHANED by the deletes: 0 [] placement tags: {'openstack-vr1-dc0': 9, 'openstack-vr1-dc1': 9} READING: 18 Ready + 2 Deployed office1 guests, all 18 still power_type=virsh, 7 interfaces each (6 flat planes per D-133 + br-ex), ZERO orphaned interfaces, tags 9+9 intact. --- 4. dc1 nginx install removed (it was a MIRROR prereq; the proxy uses :3142) --- /etc/nginx purged listening :80 -> 0 listening :3142 -> 2 purged nginx + nginx-common (nothing else depended on them; no nginx-core was installed); autoremoved liblockfile-simple-perl + liblog-agent-perl, debmirror's orphaned perl deps. --- 5. both DCs' artifact paths re-verified AFTER all of the above --- OK proxy serves http://archive.ubuntu.com/ubuntu/dists/jammy/Release (200) OK proxy serves http://ubuntu-cloud.archive.canonical.com/ubuntu/dists/jammy-updates/caracal/Release (200) dc-cache-proxy check (dc1): PASS OK mirror answers http://10.12.8.4/ (200) OK last-sync: OK 2026-07-27T08:43:46Z ubuntu=0 uca=0 dc-mirror check (dc0): PASS