Newer
Older
openstack-caracal-dc-dc / docs / changelog-20260709-dc-dc-repo-rename-sweep.md

Changelog 2026-07-09 -- DC-DC repo-rename sweep + repo-lint L1 Windows fix

Delivered on the freshly-seeded openstack-caracal-dc-dc repo (seeded from openstack-caracal-ipv4 at 8813efc). Executed under blanket approval; no live cloud mutation -- repo content only. Validation at packaging: repo-lint 0 fail / 1 documented WARN; tests/repo-lint harness 29/29 (was 28/28; one case added); full run-tests-all.sh gauntlet shows pre-existing Windows-session environment gaps (missing jq, tty/exit-code quirks) unrelated to these changes -- repo-lint, the only touched suite, is ALL PASS standalone and in the gauntlet.

Items

1. DOCFIX-139 -- stale openstack-caracal-ipv4 references repaired to openstack-caracal-dc-dc

FILES:

  • .claude/skills/openstack-cloud-ops/SKILL.md (repo name x2, clone path, clone URL, session-bootstrap command)
  • .claude/skills/openstack-cloud-ops/references/environment.md (repo web + clone URL)
  • scripts/repo_lint.py (module docstring only, cosmetic)
  • runbooks/ops-update-procedure.md, runbooks/d011-batch3-window-DRAFT.md, runbooks/phase-01-bundle-deploy.md, runbooks/tenant-onboarding-v2-DRAFT.md (hardcoded ~/openstack-caracal-ipv4 jumphost clone paths inside RUN blocks)
  • clientdocs/sweep-receipt.txt (L7 re-record; reviewed clientdocs/ for drift from the tenant-onboarding-v2-DRAFT.md path edit -- no client-facing file mirrors those internal jumphost lines, so no content change needed there, only the pinned hash)

WHY: repo was seeded under a new name for the DC-DC (VR1) phase (docs/design-decisions.md D-110); operational path/URL references still pointed at the old openstack-caracal-ipv4 clone, which would 404 clones and break source/cp/BUNDLE= defaults in runbook RUN blocks on first live use.

ASSUMPTION FLAGGED: the jumphost clone directory is assumed to be ~/openstack-caracal-dc-dc (dir-name-equals-repo-name, matching the existing convention for the sibling repo). Not measured this session (no jumphost shell in this Windows working session) -- confirm on first live jumphost session.

LEFT UNCHANGED (correct as historical/lineage record, not stale):

  • docs/design-decisions.md legacy D-014 entries + the new D-110 lineage note ("seeded from openstack-caracal-ipv4")
  • docs/dc-dc-buildout-design.md lineage note (same commit-seed record)
  • docs/v1-pre-deploy-fixes.md (historical record of the sibling repo's own 2026-05-27 GitBucket-group move)
  • runbooks/phase-08-workload-cluster-acceptance.md:340 (correctly refers to flipping the sibling ipv4 repo private at ITS v1 close, SEC-004)
  • scripts/repo_lint.py STALE-token regex for jesse\.austin/openstack-caracal-ipv4 (an unrelated dead-path class from the pre-05-27 org move, still a live check)

NOT actioned (flagged to operator, larger scope): README.md and references/environment.md's body content still describe VR0 DC0/v1 single-DC scope wholesale (title, six-plane table, phase list) -- a content rewrite tied to the VR1 DC-DC design, not a name-swap. Awaiting direction.

REVERT: git checkout HEAD~ -- <file> per file above (dropping clientdocs/sweep-receipt.txt back requires re-running bash scripts/repo-lint.sh --record-clientdocs-sweep afterward against the reverted tree, or L7 will FAIL on the mismatch).

2. DOCFIX-140 -- repo_lint.py L1 Windows path-separator bug (WARN carve-out silently became FAIL)

FILE: scripts/repo_lint.py (3 sites: L1 encoding check, L2 stale-token check, L3/L4/L6 runbook check -- all used str(p.relative_to(R)))

WHY: found during session bootstrap -- bash scripts/repo-lint.sh reported [FAIL] L1 docs\design-decisions.md: 239 non-ASCII byte(s) where CLAUDE.md's documented bootstrap expectation is "0 fail (1 legacy WARN)". Root cause: the L1 carve-out compares rel == "docs/design-decisions.md" (forward slash literal) against rel = str(p.relative_to(R)), which yields backslashes on Windows (docs\design-decisions.md). The comparison never matched on this platform, so the documented legacy WARN silently escalated to FAIL. Confirmed this was NOT caused by the DC-DC design-doc commits (diffed: the 200 lines docs/dc-dc-buildout-design.md/2b2fa3f added contain zero non-ASCII bytes; the flagged 239 bytes are the pre-existing legacy D-001..018 content, unchanged today). Fixed by switching all three sites to p.relative_to(R).as_posix(), matching the convention already used elsewhere in the same file (L7/L8 checks). Also fixes cosmetic backslash-vs-forward-slash inconsistency in L2/L3/L4/L6 message output on Windows.

HARNESS: added T3b to tests/repo-lint/run-tests.sh -- plants an em-dash in a fixture's docs/design-decisions.md and asserts rc=2 (WARN) with the carve-out message, not rc=1 (FAIL). This exact carve-out path had no direct test before (only the non-carved-out FAIL case, T2, was covered), which is how the platform bug went unnoticed. 29/29 green after the change.

REVERT: git checkout HEAD~ -- scripts/repo_lint.py tests/repo-lint/run-tests.sh (re-arms the Windows false-FAIL; not recommended for any Windows-based session).