Skip to content

ci(github-backup): the infra/github-backup regression suite (10 files, ~250 checks) is run by no workflow #5937

Closed

Description

@dezren39

Finding

The infra/github-backup regression suite — 10 test files under infra/github-backup/tests/, ~250 checks over the org backup estate (clone/mirror, reconcile retention, queue drain, worker deploy/rollback) — is run by no workflow in the repo:

  • grep -rn "github-backup" .github/workflows/*.yml returns nothing (verified on laptop primary @ 9ddf6a8216, 2026-11-05). There is no github-backup workflow at all; the systemd units under infra/github-backup/systemd/ run the backup jobs, not the tests.
  • The suite's own README entry (infra/github-backup/README.md:68) describes tests/ only as "regression tests (plain python3, no deps)" — no documented CI runner exists.

Same gap shape as closed #1427 (cold-store-reaper tests executed only when a human remembered — fixed by adding a workflow) and #5582 / #5935, in the backup subsystem.

Verified state of the suite

Run on the laptop @ 9ddf6a821658 (HEAD == origin/main), each file as a plain script — all 10 pass:

file result
test_clone_all_partial.py pass
test_clone_all_references.py 4/4
test_deploy_dry_run.py 11/11
test_deploy_rollback_version.py 16/16
test_deploy_unknown_args.py 53/53
test_drain_queue.py 82/82
test_fetch_mirrors.py OK
test_inventory_owner.py 18/18
test_reconcile_clone_pass.py 9/9
test_reconcile_retention.py 9/9

These tests guard safety-critical behaviour that has already bitten once: the deploy --dry-run --deploy-version combination that performed a real 100% deployment (#3474), rollback verify-before-deploy (#3475), retention of a failed owner's mirrors in plan/MANIFEST, and the drain-queue contract. A regression in any of them currently surfaces only when someone happens to run the files by hand.

Wiring caveat (verified)

A naive python3 -m unittest discover -s infra/github-backup/tests step does not work as-is: the three test_deploy_*.py modules execute their checks at import time and end in sys.exit(...) at module level (e.g. test_deploy_dry_run.py:112), so discovery reports FAILED (errors=3) with SystemExit: 0 even though every check passed. The other seven files are a mix of unittest classes and the same script style. The wiring must either run each file as a script (python3 tests/test_*.py, the documented plain-python3 mode) or first move the script-style checks behind a __main__ guard / into TestCase classes.

Acceptance criteria

  • Some workflow runs all 10 files in infra/github-backup/tests/ and fails when any file exits non-zero (a dedicated workflow or an added job/step in an existing scripts/infra workflow; dispatch-triggered is consistent with the house pattern since 5a94833ea3).
  • The wiring copes with the script-style modules (runs them as scripts, or the modules are restructured so unittest discover is clean) — a green run that silently skipped the three deploy suites does not count.
  • Full suite passes under the new wiring on the workflow's Python.
  • No behaviour change to infra/github-backup/bin/*, worker/*, or the systemd units.

Evidence

Activity

  1. added
    kind/ciCI/CD pipelines, workflows, and build automation
    task/triageQueue packet kind: verify, reproduce, and route this item
    source/creatorFiled by the new-issue-creator job
    priority/normalOrdinary priority (the default)
    queue/queuedHas a queued task in the Supabase agent queue
    area/ciCI/CD pipelines, workflows, and build automation (area)
    on Nov 5, 2026
  2. developing-today commented on Nov 5, 2026

    @developing-today
    Contributor
  3. dezren39 commented on Nov 5, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · filed

    • Agent: new-issue-creator job (Lane B, slug new-issue-creator-code-b)
    • Session / ID: cron job new-issue-creator-code-b, run 2026-11-04 21:20 CST
    • Found via: filed this run
    • Task: Filed issue ci(github-backup): the infra/github-backup regression suite (10 files, ~250 checks) is run by no workflow #5937 — the infra/github-backup regression suite (10 test files, ~250 checks) is run by no workflow; verified on laptop primary @ 9ddf6a8 by running all 10 files as plain scripts (all exit 0) and by a workflow grep returning zero references, plus the verified unittest discover caveat (3 deploy modules exit at import).
    • Expectation: effort s — triage picks the wiring (dedicated workflow vs an existing scripts/infra workflow) and the script-style module handling.
    • Links: issue body carries the evidence table; queue packet packet-5937-triage.json enqueued to repo-health-code-pilot this run.
  4. added
    work/assignedQueue worker lifecycle state
    queue/claimedQueue worker lifecycle state
    and removed
    queue/queuedHas a queued task in the Supabase agent queue
    on Nov 5, 2026
  5. dezren39 commented on Nov 5, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · picked up

  6. added a commit that references this issue on Nov 5, 2026
  7. dezren39 commented on Nov 5, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · parked

  8. added
    queue/parkedQueue task is parked (waiting on CI, time, or an event)
    status/parkedDeliberately paused with a recorded resume condition
    and removed
    queue/claimedQueue worker lifecycle state
    on Nov 5, 2026
  9. dezren39 commented on Nov 5, 2026

    @dezren39
    MemberAuthor

    Agent note — resumed, CI still pending, re-parked (task 9835)

    • Task: task 9835 (repo-health-code-pilot, lane code-r, execution lane direct, 2026-11-05). Resume of the parked awaiting_ci checkpoint from lane-s.
    • Fresh revalidation: issue ci(github-backup): the infra/github-backup regression suite (10 files, ~250 checks) is run by no workflow #5937 CLOSED (2026-11-05T03:47:36Z); PR ci(github-backup): wire the regression suite into a workflow (#5937) #5938 MERGED, merge commit a328819 — both verified fresh via gh this pass. No hard-stop labels involved (issue is closed/merged work).
    • CI: post-merge github-backup tests workflow run 41963838314 (headSha a328819, workflow_dispatch, created 2026-11-05T03:48:07Z) is STILL queued with no conclusion as of 2026-11-05T04:19Z — runner congestion, unchanged after a further 60s poll. It is the only run of that workflow. The suite itself was verified green on the laptop pre-merge by the previous worker, including a negative failure-propagation test.
    • Park / resume: task 9835 parked 20 minutes. On resume: read run 41963838314's conclusion fresh; if success, complete task 9835 with outcome fixed_merged / ci pass; if failure, investigate under task 9835; if still queued, re-park naming the continued congestion.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/ciCI/CD pipelines, workflows, and build automation (area)kind/ciCI/CD pipelines, workflows, and build automationpriority/normalOrdinary priority (the default)queue/parkedQueue task is parked (waiting on CI, time, or an event)source/creatorFiled by the new-issue-creator jobstatus/parkedDeliberately paused with a recorded resume conditionstatus:donetask/triageQueue packet kind: verify, reproduce, and route this itemwork/assignedQueue worker lifecycle state

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions