diff --git a/docs/changelog-20260731-prefer-ipv6-research.md b/docs/changelog-20260731-prefer-ipv6-research.md index ee1103d..477f423 100644 --- a/docs/changelog-20260731-prefer-ipv6-research.md +++ b/docs/changelog-20260731-prefer-ipv6-research.md @@ -554,3 +554,26 @@ upper bound rather than a figure. **Revert.** Measurement only; nothing changed. + +## Item 18 -- BUILD the D-135 amendment: `jammy-backports` added at SOURCE, T10 re-pointed + +**`scripts/dc-mirror.sh`** -- the generated `-mirror-sync` `--dist=` line gains +`jammy-backports`, plus a comment block at the generator recording WHY it is not optional: +the MAAS jammy image ships backports in its `sources.list` and juju's `apt-mirror` +model-config rewrites every suite to this mirror, so a mirror without it 404s and every +charm install hook fails. That cost 22 units on the 2026-07-31 dc0 deploy. + +**Fixed at SOURCE, not only on the live rack.** A live-only edit would have left the +generator regenerating the old scope at the next `install` or at any future DC standup -- +the "ruled is not built" class inverted. + +**`tests/dc-mirror` T10 RE-POINTED, not deleted.** It asserted +`--dist=jammy,jammy-updates,jammy-security` verbatim, which was correct for the old scope +and had to MOVE when the scope changed -- the standing rule that a test asserting a +literal finding gets re-pointed to the new invariant, never removed to go green. The +reason is recorded in-file so a later reader does not "simplify" it back. + +**Mutation-proven:** reverting the generator's dist line to the old scope turns T10 RED +(23/1); restored byte-identical, 24/24. Gauntlet ALL GREEN (93); repo-lint 0 fail. + +**Revert.** `git revert` -- generator and harness move together. diff --git a/scripts/dc-mirror.sh b/scripts/dc-mirror.sh index 1964221..6e2317c 100755 --- a/scripts/dc-mirror.sh +++ b/scripts/dc-mirror.sh @@ -170,13 +170,19 @@ #!/usr/bin/env bash # ${SITE}-mirror-sync -- generated by scripts/dc-mirror.sh (D-135 item 1); # do not hand-edit. Jammy amd64 binary mirror + UCA caracal, GPG-verified. +# jammy-backports ADDED by the D-135 AMENDMENT 2026-07-31 (operator: "Sync the +# backports into the mirror"). It is NOT optional: the MAAS jammy image ships +# jammy-backports in its sources.list, and juju's apt-mirror model-config rewrites +# EVERY suite to this mirror -- so a mirror without it 404s and every charm's +# install hook fails on 'does not have a Release file'. That cost 22 units on the +# 2026-07-31 dc0 deploy. The mirror's suite list is a CONTRACT with the node image. set -uo pipefail STATUS="${MIRROR_ROOT}/last-sync.status" echo "RUNNING \$(date -u +%FT%TZ)" > "\$STATUS" mkdir -p ${MIRROR_ROOT}/ubuntu ${MIRROR_ROOT}/cloud-archive debmirror ${MIRROR_ROOT}/ubuntu \\ --host=archive.ubuntu.com --root=ubuntu --method=http \\ - --dist=jammy,jammy-updates,jammy-security \\ + --dist=jammy,jammy-updates,jammy-security,jammy-backports \\ --section=main,restricted,universe,multiverse \\ --arch=amd64 --nosource --diff=none \\ --keyring=${ARCHIVE_KEYRING} --progress diff --git a/tests/dc-mirror/run-tests.sh b/tests/dc-mirror/run-tests.sh index 9200171..5e3b612 100755 --- a/tests/dc-mirror/run-tests.sh +++ b/tests/dc-mirror/run-tests.sh @@ -50,10 +50,18 @@ || no "T9 both mirrors --nosource (binary only)" # T10: the ruled dist set -- jammy triple + UCA caracal -grep -q -- '--dist=jammy,jammy-updates,jammy-security' "$SCRIPT" \ +# T10 RE-POINTED 2026-07-31 (D-135 AMENDMENT, operator: "Sync the backports into the +# mirror"). It previously asserted the exact string '--dist=jammy,jammy-updates, +# jammy-security'. That assertion was CORRECT for the old scope and had to move, not be +# deleted, when the scope changed -- the standing rule that a test asserting a literal +# finding gets RE-POINTED to the new invariant. WHY the suite is mandatory: the MAAS jammy +# image ships jammy-backports in its sources.list and juju's apt-mirror model-config +# rewrites EVERY suite to this mirror, so a mirror without it 404s and every charm install +# hook fails. That cost 22 units on the 2026-07-31 dc0 deploy. +grep -q -- '--dist=jammy,jammy-updates,jammy-security,jammy-backports' "$SCRIPT" \ && grep -q -- '--dist=jammy-updates/caracal' "$SCRIPT" \ - && ok "T10 dists: jammy triple + UCA jammy-updates/caracal" \ - || no "T10 dists: jammy triple + UCA jammy-updates/caracal" + && ok "T10 dists: jammy triple + backports + UCA jammy-updates/caracal" \ + || no "T10 dists: jammy triple + backports + UCA jammy-updates/caracal" # T11: unknown site refuses with exit 2 and demands measured rows OUT="$(bash "$SCRIPT" check nosuchsite 2>&1)"; RC=$?