# Queued findings -- session 2026-08-07: dc0 Tailscale .7 provisioning to carved-and-ready # Survives-a-clear sweep (savegame Step 3). Status authority is CURRENT-STATE.md. # Body: docs/changelog-20260807-dc0-tailscale-provisioning.md. Commits d36d815..c8ddfb6. # Each item says where it already lives, or that THIS file is its first surface. === FIRST SURFACE (transcript/changelog-only until this file) === F1 GAP -- NO RUNBOOK for building a per-DC MAAS REGION in the DC. The 2026-08-07 operator ruling "No migration. Build region on DC1 correctly." makes dc1's next step the standup of vr1-dc1-region on vr1-dc1-maas-01 (init / PostgreSQL / image sync / SSH-key import / DHCP / rack attach), but no runbook covers it. runbooks/dc-dc-phase3's own gap-#1 notes "No OpenTofu module stands up a per-DC MAAS rack controller VM" -- a DIFFERENT gap (substrate). The REGION-CONFIG runbook is absent. dc0's region came from the ONE-TIME migration (not a procedure). Next session building dc1's region has no tested path -- propose authoring one (or extending phase-00-maas-standup, which currently REFUSES vr1-* per the skill). HIGH consequence: the ruled dc1 work is blocked on an unwritten runbook. F2 FINDING (candidate SEC row / D-137 fork) -- vr1-dc0-region injects the vr1-office1-svc SSH key into DEPLOYED machines (MEASURED: `maas vr1-dc0-region sshkeys read` = 1 key, "vr1-office1-svc"). So the .7 VM (and every dc0-region deploy) is reachable ONLY by the holder of the OFFICE1 service key, not a per-DC key. This is cross-DC key reuse in tension with SEC-012/SEC-016 (per-DC power/SSH key isolation, "NEVER a cross-DC reuse"). The vr1-office1-svc key name is already on surface (CURRENT-STATE, changelog-20260730-migration); the finding that it is the DEPLOY-INJECTED key on dc0-region -- and the SEC tension -- is new. Pre-existing (region-wide), logged-not-actioned (hard rule 1). Consequence for the join: `site-tailscale.sh install` must run as the vr1-office1-svc holder over `ssh -J voffice1, ubuntu@10.12.8.7` (operator has this key; I did NOT fish for it). F3 DOCFIX candidate -- runbooks/dc-dc-phase3 Step 4 (DOCFIX-200) reads "nodes STAY Ready; NO MAAS deploy" as a blanket rule. It is JUJU-NODE-specific (Juju allocates Ready machines and cannot allocate a Deployed one). A NON-juju aux VM (the Tailscale .7 router) is NOT in the juju model and MUST be MAAS-deployed to carry an OS -- the runbook carries no exception note, so a reader could wrongly leave an aux VM in Ready forever. Owed: an aux-VM carve+deploy note on phase-3 (the carve-while-Ready -> MAAS-deploy order, since MAAS refuses interface changes on a Deployed machine). F4 ENV/CLASSIFIER -- the carve `check` command with a trailing `| tail -12; rc=${PIPESTATUS...}` was BLOCKED by the auto-mode classifier; the identical plain form (no pipe/PIPESTATUS) passed. Matches the standing multi-workstation memo (a wrapped form fails to MATCH an ask rule). Use the plain form for remote carve/maas reads; do not add a bypass. === ALREADY ON SURFACE (recorded where noted) === R1 Ruling (GA-R5, verbatim 2026-08-07): dc1 = "No migration. Build region on DC1 correctly." -> CURRENT-STATE tailscale block + changelog-20260807 header + F1 above. Reaffirms the standing region-per-DC (D-132 q1); NO new D-number (operational sequencing + reaffirmation). R2 Operator statement 2026-08-07: the tagged-join key on hand is PLAIN (not tag-scoped) -> CURRENT-STATE (join prereq a) + changelog header + Item 5. The join was deliberately NOT attempted (an untagged first-advertise is the office1 defect; Headscale does not approve routes retroactively). R3 Measured corrections (GA-R1 C2): (i) dc0 .7 already self-enlisted as known-marten (n4parh), New/power-unset -- prior "powered off" omitted the enlisted part; (ii) vr1-dc1-region NOT registered, dc1 rack nmpcq4 + 9 nodes in the Office1 admin region; (iii) subtle-grouse is the juju controller (power_id vr1-dc0-juju-01), MAAS-random name, carved by lib-hosts LOGICAL name + boot MAC. -> changelog-20260807 "Measured corrections" + CURRENT-STATE. R4 dc0 .7 driven to carved-and-ready: power set (10.12.8.2), commissioned Ready, aux-carve tooling (gauntlet 101), carve pass=8/0, deployed jammy, BOTH legs live (ping 10.12.8.7 + 10.12.4.7 0% from the rack, provider-public leg virbr5 10.12.4.2/22). -> changelog Items 1-4, CURRENT-STATE, docs/audit/gauntlet-20260807-tailscale-carve.txt, commits d36d815/c8ddfb6. R5 aux-carve tooling (CARVE_AUX_HOSTS, is_tailscale_host/is_two_plane_host, harness 58/0) -> changelog Item 2; implements D-129(iii) amdt + D-134 octet map, no new D-number. === STRUCTURALLY INVISIBLE (savegame Step 3d) === S1 Gitignored state: no NEW gitignored artifact created this session (no settings.local.json permission change, no new key/overlay). Last session's applied throwaway tfplans unchanged. S2 Dangling refs: commits d36d815/c8ddfb6 cite docs/audit/gauntlet-20260807-tailscale-carve.txt and docs/changelog-20260807-dc0-tailscale-provisioning.md -- both EXIST. S3 As-executed log (O3, SECOND CONSECUTIVE session): run-logged.sh was NOT opened (it opens an interactive script(1) subshell a background agent cannot drive). Every live mutation is gated + captured in the changelog with read-backs, but the as-executed log MUST NOT be read as complete for this window. Recurs in queued-findings-20260807-tailscale-substrate (O3) and earlier -- the recurrence itself is the finding; a durable fix (non-interactive capture path) is owed. S4 Contradiction detector: the known-marten-enlisted vs "powered off" divergence is the only doc-vs-measurement conflict; corrected in CURRENT-STATE (C2). No unrecorded contradiction. === DELIBERATELY NOT DONE (owed, next sessions) === N1 The Tailscale JOIN: tagged pre-auth key + Headscale autoApprovers / star ACL / Office1-untagged fix, then site-tailscale.sh install, then browser-login https://10.12.8.58 closes Step 3.3. BLOCKED on a TAGGED key (operator has a plain one) + control-plane policy work. N2 dc1 MAAS-region build (vr1-dc1-region on vr1-dc1-maas-01) -- ruled this session, no runbook (F1). N3 dc1 .7 provisioning (power/commission/carve/deploy) -- AFTER N2. lib-hosts already carries vr1-dc1-tailscale-01 (octet 7, MAC 52:54:00:f9:d6:df); the aux-carve reuses on dc1. N4 dc0 .7 package pre-install + in-VM default-route verify -- needs SSH via vr1-office1-svc (F2), which I do not hold. Deferred to the join session (site-tailscale.sh install exercises egress + route directly). N5 SEC row for per-DC Tailscale key custody -- opens at tagged-key mint (carried from last session's N4 / D-129(iii) amdt note).