Skip to content

v1 CI: workflow branch filters still reference main, disabling the e2e gate #2065

Description

@cliffhall

Summary

Two workflows on v1/main still filter on main, left over from when the v1 line
was main. Neither describes how the branches work now: v1/main publishes
exclusively to the v1-latest dist-tag straight from that branch, and main is
where v2/main's milestone merges land and publish to latest.

The two cases look alike but differ sharply in consequence.

1. main.yml — stale, but inert

on:
  push:
    branches:
      - main      # <- stale
      - v1/main
  pull_request:   # <- unfiltered

Nothing is mis-publishing today:

  • For push events GitHub runs the workflow file from the commit that was
    pushed
    . A push to main therefore uses main's workflow, and this file is
    consulted only when the pushed ref is v1/main. For the main entry to fire, a
    commit on main would have to carry this file — and it doesn't: origin/main
    holds claude.yml + a main.yml that is the v2 workflow.
  • The same file-resolution rule makes the unfiltered pull_request: harmless,
    since a PR's workflow comes from its merge ref.
  • Publishing is gated on github.event_name == 'release' and never consults the
    branch filter; the release's target commit selects the workflow. The cross-line
    dist-tag risk is already defused explicitly — publish-all pins
    --tag v1-latest, with the reasoning commented in place — and a mis-targeted
    release is caught by the version assert on both lines.

So the problem is that the file asserts an intent that is no longer true, and the
main entry would become live the moment anything put a v1-shaped tree back on
main.

2. e2e_tests.yml — the same leftover, but it silently disabled a gate

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

Here main matching nothing is not harmless — it means the Playwright suite has
never run on v1/main at all.
Confirmed against the branch's full run history,
which contains only Run install, format, lint, build, and test on every push and
CLI Tests, and zero Playwright Tests runs.

This was initially held back from the fix on the theory that re-enabling a suite
that had never executed risked a permanently red CI on a deprecated line. That
concern doesn't apply: nothing has changed on this branch since the suite last ran
on main, so there is nothing for it to have rotted against. It's in scope.

cli_tests.yml needs no change — it filters on paths: cli/** with no branch
filter, so it already runs here.

The change

Both handled in #2066, as two commits so the risk profiles stay separable:

  • main.yml — drop - main from push, constrain pull_request to v1/main.
    No behavior change on any path that runs today.
  • e2e_tests.yml — repoint both filters at v1/main. This is a behavior
    change: it turns a dead workflow back on.

release is untouched in both, so publishing is unaffected.

Notes

  • No milestone: every open milestone is a v2 release bucket, and v1 releases never
    pass through main, so there is no correct bucket for a v1 issue.

Metadata

Metadata

Assignees

No one assigned

    Labels

    choreMaintenance: deps, build tooling, CI, cleanup — no user-facing behavior changev1

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions