Skip to content

chore(ci): a released commit can inherit no green UI run #781

Description

@one-soft-engineer

Context

#776 gates the behavioral UI suite to push on dev, so a release commit no
longer earns its own UI run — it inherits dev's. That is the intended
trade-off and it is recorded in the ci.yml comment above the step.

The inheritance is a convention, not a guarantee.

Problem

concurrency.cancel-in-progress: true cancels a dev run when the next dev
push lands. So this sequence leaves a shipped commit with no green UI run
anywhere:

  1. Version-bump commit lands on dev; its CI run starts.
  2. Another merge lands on dev before that run finishes; cancel-in-progress
    kills it.
  3. The bump commit is fast-forwarded into main and tagged. Its main run
    skips the UI step (ci: dev-to-main fast-forward runs the identical commit twice, serially #776). Its dev run was cancelled.

Nothing surfaces this. The release proceeds and looks normal.

Frequency

Checked the last 8 releases. It happened once — run 31319081463, superseded
after 4m36s.

The other 6 non-green dev runs in that window were all the #775 90-minute
wedge, which is now fixed, so the forward-looking rate should be lower than
that history suggests. This is a real gap, not an urgent one.

Current enforcement

docs/release.md step 2 ("make sure dev is green") — a human step, and the
failure mode above is one where dev is green at HEAD while the specific
commit being released is not.

Possible directions

Not yet decided; whichever is cheapest that actually closes the loop.

  • Have scripts/build-release.sh (or a pre-tag check) query the Actions API
    for a successful run on the exact commit SHA being released, and refuse to
    proceed otherwise.
  • Run the UI suite on main pushes only when no successful run exists for that
    SHA — recovers the coverage without paying for it on the normal path.
  • Drop cancel-in-progress for version-bump commits specifically.

Acceptance criteria

  • Releasing a commit whose dev UI run was cancelled or never ran either
    fails loudly or triggers the missing coverage.
  • The normal path — a release whose dev run went green — costs no extra
    runner time.
  • docs/release.md reflects whatever mechanism lands.

Spec

docs/superpowers/specs/2026-08-26-ci-ui-test-watchdog-design.md — the #776
half. Follow-up to #776.

Activity

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

    choreInfra / process / tooling workp2Nice to havetype:ciCI / GitHub Actions

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions