queued-findings-20260802-step6-queued-items.txt
================================================
Close sweep for the SECOND 2026-08-02 session (post-/clear): the queued-findings
backlog (sweep F1-F6), the mirror root-cause, and D-139 execution step 6.

Method (ruled 2026-07-31): read back over the whole session, enumerate every
finding/decision/measurement/mistake, then GREP each candidate against repo
surfaces. A hit = ALREADY ON SURFACE, and where. No hit = FIRST SURFACE and would
have been lost on a context clear.

Session body: docs/changelog-20260802-queued-items.md (items 1-12).
Status claims live in docs/CURRENT-STATE.md ONLY.

NUMBERING NOTE, because two registers collide: items below cite the SWEEP register
(F1-F6, docs/audit/queued-findings-20260802-stage5-edge-fold.txt). The runbook fold
register has its OWN F1-F12 with different meanings and is untouched this session.

--------------------------------------------------------------------------------------
FIRST SURFACE -- existed ONLY in the transcript. Listed first, by consequence.
--------------------------------------------------------------------------------------

G1. >>> A BROAD `Bash(ssh vr1-dc0-maas *)` ALLOW RULE WAS ADDED TO GITIGNORED STATE. <<<
    grep "ssh vr1-dc0-maas" in docs/: 0 hits.
    `.claude/settings.local.json` was MODIFIED this session (mtime 17:33) and now
    holds allow=310 / ask=11 / deny=0. The 2026-08-02 (first session) sweep recorded
    the counts as UNCHANGED from the 2026-07-30 verbatim record, so the growth is
    this session's.
    THE ITEM WORTH ATTENTION: `Bash(ssh vr1-dc0-maas *)` is a WILDCARD allow on the
    MAAS REGION VM -- the same shape as the broad `Bash(ssh vr1-dc0-rack *)` that
    the 2026-07-30 sweep flagged as "worth review". It was auto-added by an approval
    during the pg_dump work. It permits ANY command on the host holding the region
    database. Recommend narrowing to the read-only forms actually needed.
    The file is GITIGNORED, so this text is the only recovery copy. The 11 ASK rules
    verbatim (these are the gating ones and matter most):
      Bash(script -aqe ~/as-executed/2026-07-23-stage4-carve.log -c 'ssh voffice1 "maas admin machine *)
      Bash(ssh -i ~/vr1-dc0-creds/vr1-dc0_svc_ed25519 -J voffice1 jessea123@172.31.0.2 "sudo *)
      Bash(ssh voffice1 "maas admin interface *)
      Bash(ssh voffice1 "maas admin subnet *)
      Bash(ssh voffice1 "maas admin tags *)
      Bash(ssh voffice1 "maas admin tag *)
      Bash(ssh voffice1 "maas admin machine *)
      Bash(ssh *'maas * update*)
      Bash(ssh *"maas * update*)
      Bash(ssh *'maas * ipranges *)
      Bash(ssh *"maas * ipranges *)
    NOTE A GAP IN THOSE ASK RULES, measured by consequence this session: they pin the
    `maas admin` profile and the `ssh voffice1 "..."` double-quoted form. This
    session's MAAS SUBNET DELETES used `MAAS_PROFILE=vr1-dc0-region ... maas
    vr1-dc0-region subnet delete` in SINGLE quotes and therefore did NOT match
    `Bash(ssh voffice1 "maas admin subnet *)`. Four destructive deletes ran without
    hitting an ask rule. This is the SAME rule-fails-to-MATCH class recorded on
    2026-07-30 (the DHCP cutover), and it is now recorded as recurring rather than
    one-off. The deletes were separately operator-approved, so nothing bypassed
    consent -- but the GATE did not fire, and that is the finding.

G2. `--diff=none` DOES NOT MEAN "DOWNLOAD EVERYTHING", AND THE MIRROR IS INCREMENTAL.
    grep "diff=none": 3 hits, all either the flag itself (dc-mirror.sh:187,193) or a
    passing mention; NO hit explains the semantics.
    MEASURED this session from the sync journal:
      routine daily run   ubuntu leg  1277 kiB
      the failing run     ubuntu leg  2867 kiB (313s, of which 300s was one timeout)
      UCA leg, every run  15 kiB
      on-disk             ubuntu 952 G, cloud-archive 342 M
      the 1048 MiB outlier (2026-07-31) = the day jammy-backports was ADDED to the
      suite list by operator ruling; adding a suite pulls its content ONCE.
    `--diff=none` disables PDIFFS -- the incremental-patch mechanism for INDEX files
    -- so debmirror fetches each Release/Packages/dep11 index in full every run. The
    POOL sync is still differential throughout. So a re-trigger costs seconds and
    single-digit MB, not a 950 G pull.
    WHY IT MATTERS: someone reading the flag name could refuse to re-trigger a sync
    believing it means a full re-download, or could budget hours for it.

G3. LWP SYNTHESISES HTTP 500 FOR CLIENT-SIDE FAILURES -- IT IS NOT A SERVER 500.
    grep "synthesises 500": 1 hit, in this session's own root-cause capture only;
    grep "synthesizes 500": 0 hits. Not on any DURABLE surface (platform-traps).
    debmirror's `500 read timeout` is LWP reporting ITS OWN timeout
    (/usr/bin/debmirror:629, `our $timeout=300;`), not archive.ubuntu.com returning
    an error. Reading it as a server-side 500 sends the investigation upstream for
    the wrong reason, which is exactly what happened here before it was corrected.
    Belongs in platform-traps' verbatim-error index. LOGGED, NOT FIXED (hard rule 1).

G4. dc1's GUA CARVE IS INCOMPLETE, AND IT IS A dc1 BLOCKER NOT JUST A TOOL FIXTURE.
    grep "f03:20" / "dc1.*GUA.*incomplete": hits only inside this session's own
    changelog item 10 and CURRENT-STATE, i.e. recorded as the REASON for a tool
    guard rather than as a dc1 WORK ITEM.
    MEASURED: only FOUR rows exist under `2602:f3e2:f03::/48`, all provider-public.
    No `:f03:20::/64`, no `:f03:21::/64`. So for dc1, D-139 steps 1 and 2 have NOT
    been run. Anyone reaching dc1's Stage 5 must run `d139-gua-carve.py --dc vr1-dc1
    --commit` (and the MAAS half) BEFORE step 6 -- the step-6 tool now refuses, so
    the failure is loud, but the WORK is unregistered.

G5. THE STEP-6 END STATE IS NOT RE-DERIVABLE FROM THE CARVE TOOL'S REPORT.
    grep "counts existence, not status": 2 hits, both this session's own records.
    `d139-gua-carve.py --dc vr1-dc0` STILL reports `RETIRE-REPORT 9` and `dependent
    objects ... 26 ip-address(es)` AFTER step 6 completed successfully. That is
    correct -- the rows still EXIST, deprecated not deleted, per the ruling -- but a
    future session running the carve tool to check progress will read it as "step 6
    never ran". The carve tool has no status awareness and was not extended (hard
    rule 1). A `--commit`-less step-6 run is the correct instrument: it reports
    `CREATE 0 | ALREADY 26 | DEPRECATE-ADDR 0 | DEPRECATE-PFX 0`.

G6. NO AS-EXECUTED LOG COVERS THIS WINDOW.
    `run-logged.sh` was NOT used -- it needs an interactive shell. The newest file in
    ~/as-executed/ is 2026-07-30-stage5-dc0-deploy.log. This session executed LIVE
    MUTATIONS (26 apex creates, 35 apex deprecations, 4 MAAS subnet deletes, one
    mirror sync trigger, one rack file copy) with NO as-executed coverage. All
    evidence is in docs/audit/* captures and the commit messages. DECLARED here
    rather than left to be discovered -- a log that looks complete and is not is
    worse than one declaring its gap.

--------------------------------------------------------------------------------------
ALREADY ON SURFACE -- verified by grep, recorded for completeness
--------------------------------------------------------------------------------------

A1.  DOCFIX-207, preflight P6 plan count 50/97 -> 56/108 -- scripts/preflight.sh +
     changelog item 1 + CURRENT-STATE.
A2.  sweep F3 (`systemctl show` is not an existence check) -- platform-traps 5c.
A3.  sweep F4 (assert the harness CASE COUNT moved) + sweep F5 (two scripts probing
     one endpoint must share the probe definition) -- script-authoring.
A4.  sweep F1 CLOSED, rack deploy input re-staged, full 14-file enumeration --
     docs/audit/repo-stage-drift-dc0-20260802.txt + changelog items 4-5.
A5.  sweep F6 CLOSED PASS, maasdb proven uncorrupted, and F6's own diagnosis being
     wrong (role + transport, not confinement) --
     docs/audit/maasdb-pgdump-integrity-dc0-20260802.txt sections 7-11.
A6.  sweep F2 diagnosed R1, and the sweep's premise being wrong (it quoted the
     PASSING UCA leg) -- docs/audit/mirror-exitcode-diagnosis-dc0-20260802.txt.
A7.  The mirror root cause: archive.ubuntu.com backend 91.189.92.23 hangs on one
     object while serving its siblings; resolver rotates; 11/12 succeed --
     docs/audit/mirror-500-timeout-rootcause-20260802.txt.
A8.  Four GA-R5/operational rulings with exact utterances -- "Re-trigger the sync
     first, decide after"; "Root-cause the curl/debmirror anomaly first"; "Full step
     6 first, then deploy"; "Deprecate both, delete nothing" -- design-decisions.md
     + CURRENT-STATE. Plus the two approvals ("Queue up the MAAS half ... Go ahead
     with both now"; "Proceed with 1 and 2") in changelog items 11-12.
A9.  The step-6 tool, its adversarial review and all four DEFects --
     docs/audit/d139-step6-tool-review-20260802.txt + changelog item 10.
A10. Step 6 EXECUTED, 4 MAAS subnets deleted, 1 HELD on the juju-controller /
     region-VM hazard -- changelog item 11 + CURRENT-STATE.
A11. `retire-v6-ula` and the broken by-hand link check it caught -- changelog item
     12 + CURRENT-STATE + tests/dc-plane-ipam R1-R7.
A12. The preflight-P2 / phase4 machines-overlay asymmetry -- changelog item 5.
A13. SEC-029(3) recording ~/repo-stage as nine files when it is fourteen --
     changelog item 5.
A14. The netbox env FILENAME INVERSION (vr1-netbox-sandbox.env is the LIVE apex;
     vr1-netbox.env is the v1 reference) -- CURRENT-STATE:4638-4641, pre-existing.
A15. The DOCFIX decoy-token counter inflation, twice, and its correction --
     CURRENT-STATE + commit 93973b6.

--------------------------------------------------------------------------------------
THE FIVE STRUCTURAL SWEEPS
--------------------------------------------------------------------------------------

S1. GITIGNORED STATE. `.claude/settings.local.json` MODIFIED this session:
    allow=310 / ask=11 / deny=0. Verbatim ask rules and the broad-allow finding are
    in G1 above. This sweep file is the only recovery copy.
S2. DANGLING REFERENCES. Every docs/audit path cited by this session's commits
    resolves; the four new captures are committed
    (repo-stage-drift, maasdb-pgdump-integrity, mirror-exitcode-diagnosis,
    mirror-500-timeout-rootcause, d139-step6-tool-review).
S3. RULING FIDELITY. Four rulings + two approvals this session, each with its EXACT
    utterance quoted, dated, and -- for the two GA-R5 step-6 rulings -- committed
    and pushed BEFORE the dependent work began (934a1f0, 53aae78). None paraphrased.
    Both step-6 rulings were correctly classed OPS (GA-R3) rather than new D-numbers.
S4. AS-EXECUTED LOG. NOT USED. See G6 -- this window is uncovered and it is declared.
S5. CONTRADICTION DETECTOR.
    (a) The 2026-08-01 ordering ruling's stated premise ("the per-DC VIP overlays
        carry v6 VIPs in the ULA range") is FALSE as of 2026-08-02; the overlay was
        re-rendered onto GUA. Corrected in the 2026-08-02 ordering ruling itself
        rather than left to contradict silently.
    (b) The step-6 amendment first said the GUA records would be `status=active`;
        MEASURED, the originals are `reserved`. Corrected in both design-decisions
        and CURRENT-STATE under GA-R1 C2.
    (c) "The gate is FLAKY, not stuck" (written mid-session about the mirror) does
        NOT extend to the dep11 failure, which is persistent-per-backend. Withdrawn
        and corrected in commit 4f65c09 rather than left standing.
    (d) "Every action this tool takes is reversible" (step-6 docstring) was wrong for
        the 26 CREATES. Corrected in the docstring and in the presentation.
    (e) "Proven safe twice" (the four MAAS deletes) was HALF FALSE -- the link half
        of that proof was an inert checker. Corrected in changelog item 12 and
        CURRENT-STATE, with the safe OUTCOME recorded separately from the unsound
        VERIFICATION.
