Skip to content

ci: gate pull requests on a single Build Success check - #23

Merged
onedr0p merged 1 commit into
mainfrom
ci/consolidate-pull-request-checks
Jul 25, 2026
Merged

onedr0p merged 1 commit into
mainfrom
ci/consolidate-pull-request-checks

Conversation

@onedr0p

@onedr0p onedr0p commented Jul 25, 2026

Copy link
Copy Markdown
Contributor

Overview

Collapses lint.yaml, tests.yaml and e2e.yaml into a single ci.yaml whose
jobs fan in to a Build Success job, so a ruleset can require branches to be up
to date before merge.

All four job bodies are unchanged. Same change as home-operations/kromgo#321.

Additional information

GitHub rejects strict_required_status_checks_policy unless at least one check
is required, and the individual jobs are unsafe to require: they are skipped for
release-please PRs, and a required check that never reports blocks the PR
permanently. Build Success runs on !cancelled(), so it reports whether its
dependencies pass or skip.

The pull request trigger drops paths-ignore for the same reason.

Job names are derived from their ids. Rather than reword the names to match
weaker ids, the ids moved to match the names:

before after
test — "Unit Tests" unit-test — "Unit Test"
build-check — "Bundle Freshness" bundle-freshness — "Bundle Freshness"

The e2e job keeps its per-example suffix (E2E (${{ matrix.example }})) so each
matrix leg still reports a distinct check, and keeps its previous trigger scope
through an event guard rather than a separate file.

The unpinned-uses ignore follows the e2e job into ci.yaml; the rationale is
unchanged, as the job still runs the action from the checkout under test.

Verified before pushing: every job body is byte-identical to origin/main, the
set of comments carried over is identical (43 lines, none lost, none added, none
orphaned by the reordering), Build Success gates all four, and actionlint,
zizmor and oxfmt are clean.

Requirements

  • I have read and agree with the contributing guidelines
  • AI usage disclosure: YES — the workflow change and this description were
    written by an AI agent (Claude Code) under maintainer direction, as part of a
    wider branch-protection rollout. Per the AI Usage Policy this exceeds assistive
    use and needs maintainer review before merge.

Collapses lint.yaml, tests.yaml and e2e.yaml into one ci.yaml whose jobs
fan in to a Build Success job, so a ruleset can require branches to be up
to date before merge. All four job bodies are unchanged.

Requiring the individual jobs is unsafe: they are skipped for
release-please PRs, and a required check that never reports blocks the
pull request permanently. Build Success runs on !cancelled(), so it
reports whether its dependencies pass or skip.

The pull request trigger drops paths-ignore for the same reason.

Job names are derived from their ids, so test becomes unit-test and
build-check becomes bundle-freshness rather than the names being reworded
to match weaker ids. The e2e job keeps its per-example suffix so each
matrix leg still reports a distinct check.

The e2e job keeps its previous trigger scope through an event guard
rather than a separate file, and the unpinned-uses ignore follows it into
ci.yaml with its rationale unchanged.

Signed-off-by: Devin Buhl <devin@buhl.casa>
@greptile-apps

greptile-apps Bot commented Jul 25, 2026

Copy link
Copy Markdown

Greptile Summary

Consolidates the existing lint, unit-test, bundle-freshness, and end-to-end checks into one CI workflow.

  • Adds pull-request, push, merge-group, and manual triggers with event-aware end-to-end execution.
  • Adds a Build Success fan-in job that accepts passed or intentionally skipped dependencies.
  • Updates the Zizmor unpinned-use exception to follow the renamed workflow.

Confidence Score: 5/5

The PR appears safe to merge with the validation jobs preserved under the new aggregate CI check.

The consolidated workflow retains the existing job bodies, preserves intentional release-please skips, keeps end-to-end checks off push events, and makes the aggregate job fail when any dependency fails.

T-Rex T-Rex Logs

What T-Rex did

  • Ran normal pull requests to schedule all four dependencies and verified Build Success.
  • Validated that internal release-please pull requests skip all four dependencies and still produce Build Success.
  • Confirmed that any dependency failure makes Build Success fail, while successful or skipped combinations pass.
  • Executed static executable checks to confirm the !cancelled() condition, all four needs, and the E2E guard for non-push events.

View all artifacts

T-Rex Ran code and verified through T-Rex

Important Files Changed

Filename Overview
.github/workflows/ci.yaml Combines the existing validation jobs under a single workflow and adds an aggregate required-check candidate; no actionable correctness issue was established.
.github/workflows/lint.yaml Deletes the standalone lint workflow after moving its unchanged job body into ci.yaml.
.github/workflows/tests.yaml Deletes the standalone test workflow after moving its unit-test and bundle-freshness jobs into ci.yaml.
.github/zizmor.yml Retargets the existing local-action exception from e2e.yaml to ci.yaml.

Reviews (1): Last reviewed commit: "ci: gate pull requests on a single Build..." | Re-trigger Greptile

@onedr0p
onedr0p merged commit 2e65a09 into main Jul 25, 2026
9 checks passed
@onedr0p
onedr0p deleted the ci/consolidate-pull-request-checks branch July 25, 2026 21:13
@sticky-gecko sticky-gecko Bot mentioned this pull request Jul 27, 2026
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