Skip to content

Sprint 58 / V0.29.12 -- housekeeping (5/6) + enable migration-drift CI (BL-022) - #3

Merged
mcornelison merged 8 commits into
devfrom
sprint/sprint58-V0.29.12
Jul 16, 2026
Merged

Sprint 58 / V0.29.12 -- housekeeping (5/6) + enable migration-drift CI (BL-022)#3
mcornelison merged 8 commits into
devfrom
sprint/sprint58-V0.29.12

Conversation

@mcornelison

Copy link
Copy Markdown
Owner

Sprint 58 housekeeping: US-465 backlog metadata backfill + un-break pm_status, US-466 Windows UTF-8, US-467 index.lock helper, US-468 Story.md retirement, US-469 run-not-trust deploy-gate. US-470 ships the migration-drift CI workflow + dev-only testcontainers dep.

This PR is the FIRST run of migration-drift.yml (BL-022) -- proves the real-MariaDB migration-chain test EXECUTES on GH runners (MariaDB 11.8 service). Green run closes BL-022 + US-470 + TD-055.

Generated with Claude Code.

mcornelison and others added 8 commits July 13, 2026 18:48
… metadata, Windows UTF-8, index.lock, Story.md retirement, deploy-gate tripwire, real-MariaDB CI); F-118/F-104; no freeze
- NEW backfill_story_metadata.py: idempotent, deterministic backlog v2.0.0
  metadata-drift repair. Real-end-state signal = archived sprint passes:true
  (not the stale live status field). 50 shipped stories -> complete;
  US-422/423 superseded preserved; US-446 pending (never guessed complete).
  Dates proxy-derived from sprint-close date, marked in per-story metaBackfill.
- backlog_schema.py: accept 'superseded' as a valid story status (was
  feature-only; US-422/423 carried it pre-existing -> lint errored).
- backlog.json: 53 stories backfilled (metadata-only, no semantic change).
- 22 tests, ruff clean. VC1 pm_status --backlog exit0; VC2 sprint_lint
  --backlog 0 errors; VC3 re-run idempotent no-op.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add offices/pm/scripts/_encoding.forceUtf8Stdio() as the canonical UTF-8
stdio recipe (SSOT, sibling to _freeze.py); guard stdout AND stderr.

Wire the crash-surface scripts that print backlog/sprint data or user text
carrying U+2192 arrows: sprint_lint (imports the helper), chain_validate_aggregate
and backlog_set (inline the guard to preserve Stdlib-only self-containment).

VC1: on live cp1252 stdout (PYTHONIOENCODING unset) chain_validate_aggregate
prints 199 arrows EXIT 0; backlog_set prints an arrow; sprint_lint --backlog
EXIT 0. New test_encoding_helper.py (5 tests) incl. a real-cp1252-TextIOWrapper
functional proof. 32 pass across sprint_lint suites + encoding; ruff clean.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…tory SSOT)

Scrub active mirror-requirement sites: PM folder-structure table + PRD
template step-1 -> backlog.json is the single story SSOT, per-story
US-*.md mirrors retired/optional (authority: 2026-06-29 simplification
spec §4.3). specs/rule-13-audit-discipline.md still asserts mirror
existence but is read-only for Ralph -> filed pm/issues handoff. No
skill/command instructs mirrors (grep of all .claude/*.md = 0 hits).
graduate_story.py already synthesizes an archive record from JSON when
no mirror exists. Docs-only; no code changed.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…atform enablement)

Ships the full CI-enablement kit for US-464's live real-MariaDB migration-chain
test, but VC1 (the live test EXECUTES + gates in CI) is unverifiable in-loop:
no CI runner exists (.github/workflows had only README.md; pylint.yml removed
US-186) and the Windows bench has no Docker. Per US-470 conditionalOutcome + Atlas
TIGHTEN -> passes:false, TD-055 stays OPEN-downgraded, HUMAN_INTERVENTION_REQUIRED.

- requirements-dev.txt (NEW): testcontainers>=4.0.0, dev/CI-only -> VC2 GREEN
  (not in prod/shared reqs, grep-verified)
- .github/workflows/migration-drift.yml (NEW): MariaDB 11.8 service container
  (Atlas TIGHTEN-2) + OBD2_MARIADB_TEST_DSN + pytest -m integration + fail-on-skip
  guard; narrow triggers (pull_request->dev/main + workflow_dispatch, never push)
- workflow README + DSN docs; TD-055 annotated OPEN-downgraded (not closed)
- create_all caveat in test_deploy_context_drive_simulator.py -> new coverage +
  BL-022 (pinned-docstring test still green, ruff clean)
- BL-022 blocker + PM handoff inbox note

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…5 = ENABLE GitHub Actions (resolves BL-022 path)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@mcornelison
mcornelison merged commit 136adc3 into dev Jul 16, 2026
1 check passed
mcornelison added a commit that referenced this pull request Jul 31, 2026
… supersedes bonding theory

Atlas + CIO live on-Pi debug 2026-07-31: the capture P0 was a persistent BT
soft-block (stale /var/lib/systemd/rfkill/*:bluetooth=[1] restored every boot),
fixed live + verified across 2 reboots via eclipse-rfkill-unblock.service.
Supersedes both the US-441/432 code-regression theory (bad bisect, A-18) and the
bonding-primary theory (bonding demoted to P1 hardening). Two P0 durability fixes
dispatched to Ralph (deploy-bake + pair_obdlink); PM owes version-bump + deploy.
Remaining #3 reconnect-transport-reset + #4 origin RCA to groom.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016b1XQVcNeLH9uzNHszr4Ex
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant