Status: PROPOSED 2026-07-09 (DC-DC planning). Instantiates the D-052 per-DC template across two DCs.
Context: VR1 is a virtual regional two-DC test environment (DC1, DC2, plus an Office1 headend), all nested libvirt VMs on one vcloud host, rehearsing the future bare-metal multi-DC site (Roosevelt). D-052 already defines the six-plane per-DC template and tags metal-admin DC-local / metal-internal "may-cross-fiber" -- but that label assumed a single stretched cloud.
Decision:
tc netem (latency / jitter / loss / rate) on the inter-DC and site-uplink segments, tuned to same-metro dark fiber (low single-digit ms) unless the Roosevelt target says otherwise. The exact parameters are a Phase-0 knob recorded in the buildout doc.Rationale / tradeoffs: mesh (not star) is required because replication is a direct DC1<->DC2 data path -- routing it through Office1 would be a bandwidth SPOF -- while management is Office1<->DC. Per-site ISP edges make each DC independently reachable and feed the per-DC airgap mirror upstream (D-107). Delta to Roosevelt: the dark-fiber-triangle-plus-per-site-edge shape IS the intended Roosevelt shape; the only virtual-only element is that the "fiber" is a vcloud virtual segment with netem standing in for real fiber and optics.
References: instantiates D-052 (six-plane per-DC template; independent-cloud cross-fiber refinement); carries the D-057 root-cause br-ex discipline as revised by D-060 (Pattern A); pairs with D-101 (families), D-107 (edge egress), D-108 (replication).
Open sub-items: exact netem parameters (Phase-0 measurement + Roosevelt target); whether Office1<->DC fiber carries anything beyond MAAS / Juju / operator management (lean: management only).
Status: PROPOSED 2026-07-09. Activates the developed family-follows-reachability IPv6 plan for VR1. NetBox (vcloud-local) is the IPAM authority for all literals.
Context: v1 / DC0 is IPv4-only on 10.12.0.0/16 (six planes in scripts/lib-net.sh). The developed IPv6 plan (in-project, not yet committed) classifies planes by reachability: GUA for external clients, ULA for internal-only, IPv4 where forced. DC-DC is the phase that activates it.
Decision:
lib-net.sh v4 values are unchanged (DC-DC assigns families on its own layer).netbox/*-import.py extended for multi-DC and dual-stack). They are NOT hardcoded in this decision.Rationale / tradeoffs: matches the operator directive (v6 wherever possible, v4 only where forced) and maximizes Roosevelt rehearsal value (proves Ceph-over-v6, geneve-over-v6, native v6 tenant routing). The two forced-v4 points (PXE, datastore east-west) are explicitly justified rather than incidental.
References: activates the developed IPv6 plan (its Phase A/B/C); carries D-016 / D-074 (tenant CIDR policy); supersedes the DR-seed v4 replication carrier; feeds D-102 (tenant/MTU), D-106 (AAAA), D-108 (replication), D-109 (Vault v6-SAN). NetBox is IPAM apex.
Open sub-items: the exact NetBox literals; whether the metal-admin admin-API endpoint also gets a ULA leg (lean: no -- keep metal-admin v4-only, it is DC-local operator/PXE).
Status: PROPOSED 2026-07-09. Kept separate from D-101 (tenant-facing sub-policy vs the plane matrix); merge on operator preference.
Decision (leans; operator to ratify):
Rationale: matches the developed plan's recommendations; native routing plus SLAAC is the IPv6-correct default; the MTU budget is the classic nested-OpenStack failure mode and is handled by measurement plus jumbo.
References: extends D-101. Ceph-over-v6 (ms_bind_ipv6) and OVN geneve-over-v6 are Phase-0 verification gates in the buildout doc.
Status: PROPOSED 2026-07-09. Resolves the double-specified node-VM ownership question.
Decision:
Rationale / tradeoffs: this keeps the entire physical substrate in versioned OpenTofu (auditable, reproducible, and exactly the "operator scripts the deployment from Office1" model), while MAAS owns the provisioning lifecycle -- mirroring Roosevelt, where MAAS enlists hardware that already exists rather than creating it. "MAAS owns lifecycle" here means the provisioning lifecycle, not domain creation; that reconciles the two operator inputs.
Delta callout (test-env shim): the OpenTofu "create the node VMs" module has NO Roosevelt analog. In Roosevelt that step is physical racking plus BMC enlistment, and MAAS enlists real hardware. This module is tagged in the buildout doc as a virtual-only shim and must NOT be mistaken for reusable Roosevelt IaC. Everything downstream of enlistment (MAAS commission / deploy, Juju bundle) IS Roosevelt-transferable.
References: ratifies MAAS-as-VM-host in the enlist sense; NetBox apex per the operating skill and environment reference; feeds Phases 2-4 of the buildout doc.
Status: PROPOSED 2026-07-09. Adds the controller-topology / HA posture the DC-DC phase was gated on. References D-071 (patch cadence); does NOT amend it.
Decision:
create-backup / download-backup). Controller backups scheduled and a restore drill run in Phase 5.Rationale / tradeoffs: per-DC single controller is DR-honest (independence) and resource-frugal on the 256 vCPU / 1 TiB / 10 TiB host. A shared or Office1-hosted controller would couple both DCs' manageability -- a controller outage would take out both -- the opposite of what a DR drill should prove. Single-vs-HA is a deliberate test-only economy; backups are the mitigation and are drilled. Roosevelt scales to 3-unit HA per DC.
References: relates to D-071 (routine update cadence / Juju controller patch policy) without amending it; interacts with D-108 (per-DC control-plane backup / restore in the DR drill).
Status: PROPOSED 2026-07-09. Carries D-035 to the two-DC topology.
Decision:
domain-setup action is re-run after every teardown / redeploy per DC (D-046 trap: magnum reports "Unit is ready" regardless).Rationale: D-035 already placed capi-mgmt in-cloud single-homed; per-DC keeps each cloud self-contained and DR-independent. COS per DC (not central at Office1) keeps observability inside each independent failure domain.
References: carries D-035; carries D-046 (domain-setup re-run); COS / Magnum scope confirmed by operator.
Open sub-item: whether COS is per-DC-only or also aggregates a light roll-up at Office1 (lean: per-DC only for VR1; revisit for Roosevelt).
Status: PROPOSED 2026-07-09. SUPERSEDES D-019 (Designate deferral); REACTIVATES D-008 (DNS architecture).
Decision:
designate-bind (bind9, the Charmed-OpenStack-native backend, lowest delta).<service>.omega.dc1.vr1.cloud.neumatrix.local and ...dc2.vr1.... Per-DC INDEPENDENT zones (independent Keystones), served with A and AAAA records (AAAA for the v6-enabled planes per D-101).os-public-hostname per API charm -> Vault issues FQDN-SAN certs -> Designate zone plus A/AAAA -> Neutron default_dns_domain and dns_servers -> tenant subnets with --dns-nameserver.Rationale / consequence: reactivating Designate plus FQDN-SAN certs removes the D-019 documented root cause (metal-only charms pulling the public FQDN endpoint they cannot resolve -- the D-021 amphora-pipeline constraint). The D-008 convention was designed multi-DC from the start (dc0.vr0), so this is reuse, not new design -- minimal delta.
References: supersedes D-019; reactivates D-008; resolves the D-019 / D-021 root cause; AAAA depends on D-101. Office1 headend services use a region-level subdomain outside the per-cloud convention (e.g. maas.office1.vr1...) -- exact scheme is a buildout-doc detail.
Open sub-item: cross-DC name resolution (a DC1 tenant resolving a DC2 name) -- lean NOT needed for VR1 (independent clouds); revisit only if a federated-service requirement emerges.
Status: PROPOSED 2026-07-09.
Decision:
Rationale / tradeoffs: this reconciles "airgap-honest" with the operator's "each DC syncs internet NTP" -- the airgap is at the node boundary, not the site boundary, and the edge holds a minimal controlled egress. Per-DC mirrors cost more disk (a factor in the D-101 / Ceph disk budget) but buy true DC-redeploy-independence, which a single Office1 mirror cannot. The Roosevelt airgap posture is the same shape (per-DC mirror, edge-controlled egress).
References: pairs with D-100 (per-site ISP edge), D-101 (disk budget), and the Phase-0 disk math.
Open sub-item: mirror sync topology (each DC pulls upstream independently vs one DC pulls and peers seed) -- lean independent upstream pull per DC for full independence; measure disk cost in Phase 0.
Status: PROPOSED 2026-07-09. Engineers the mechanism for the SETTLED Tier-A DR decision (docs/dc-dc-replication-DR-seed.md); does not reopen the posture.
Decision (mechanism):
cinder-backup to a cross-DC-replicated object store via ceph-radosgw MULTISITE (a zonegroup with the two DCs as zones; bucket-level bidirectional sync) as the replicated backup target. A restore reconstitutes the volume with its Cinder metadata in the peer -- the honest cross-independent-cloud path. Multisite is chosen over a single mirrored bucket for bidirectional, per-object async replication with conflict handling.ceph-rbd-mirror of the Glance pool, snapshot-based, two-way, with a re-register step on failover. Daemon topology: one rbd-mirror daemon per DC, peering over the replication plane; daemon HA is single-unit for VR1 (matches the D-104 controller economy), noted for Roosevelt scale-up.Rationale: matches the settled seed; multisite plus rbd-mirror are the delta-minimal Ceph-native primitives. This answers the seed's open questions (multisite vs mirrored bucket -> multisite; daemon HA -> single-unit VR1; peer bootstrap -> on the replication plane).
References: engineers docs/dc-dc-replication-DR-seed.md; carrier per D-101; interacts with D-104 (per-DC control-plane backup / restore in the drill); the failover / failback skeleton is fleshed out in the buildout doc.
Status: PROPOSED 2026-07-09.
Decision:
Rationale / tradeoffs: independent roots keep the two clouds cryptographically independent (DR-honest) and match the confirmed operator ruling. Holding 1.8/stable isolates the DC-DC variables from the unresolved substrate modernization; the deliberate non-change is recorded against D-068 so it is on the record, not an oversight.
References: references D-068 (substrate hardening deferred to Roosevelt; getting off EOL 1.8.8 stays open there); v6-SAN per D-101.
Status: PROPOSED 2026-07-09 (meta / process).
Decision:
openstack-caracal-dc-dc, seeded from openstack-caracal-ipv4 at commit 8813efc (verified: new-repo HEAD equals 8813efc; design-decisions.md ceils at D-075).ledger-scan is confirmed 3-digit-safe for the D-series (grep -oE '^## D-[0-9]+' | sort -n), so D-100+ next-free is correct. The deprecated repo-lint next-free path is band-limited above 099 and must not be used for next-free (standing rule).Rationale: a round D-100 floor gives a clean project base plus about 24 numbers of cross-repo collision runway (the source is a maturing project unlikely to reach 100); reference-not-copy preserves provenance. A distinct prefix (DD-) was considered for permanent cross-repo immunity and declined for VR1 -- it would fork ledger-scan, the fence validator, and every D-NNN cross-reference, against minimize-delta.
References: process entry; governs all D-1NN entries in this repo.
Log-for-sweep (not actioned): ledger-scan DOCFIX / BUNDLEFIX patterns use [0-9]{3} -- safe through 999, latent at the 1000 boundary (the same class as the 100-boundary bug already fixed for those series).