Skip to content

ci: self-skip schema-parity + verify-non-root so they're safe to require (#1237)#1238

Merged
dolho merged 2 commits into
devfrom
fix/ci-required-checks-self-skip
Jun 17, 2026
Merged

ci: self-skip schema-parity + verify-non-root so they're safe to require (#1237)#1238
dolho merged 2 commits into
devfrom
fix/ci-required-checks-self-skip

Conversation

@vybe

@vybe vybe commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

Problem

schema-parity and verify-non-root are path-filtered workflows added to dev's required status checks. On a PR that doesn't touch their paths the required context is never reported, so GitHub holds the merge at "Expected — waiting for status" forever. This bricked every non-schema / non-docker PR — the approved queue (#1078, #1168, #1213, #1166, #1195, #1202) had to be landed only after temporarily removing both from required branch protection. schema-parity.yml's own maintainer note predicted this.

Fix

Both jobs now run on every PR and self-skip via a pure git diff change detector:

  • No relevant file changed → heavy steps (parity pytest / stack boot + UID asserts) are gated off; the job passes trivially and the required context is satisfied.
  • Relevant file changed → the full check runs and can fail (unchanged behaviour).

push to dev/main stays path-filtered (post-merge regression only). No third-party action and no token scope beyond contents: read — important for keeping the security gate's least-privilege posture.

This PR edits both workflow files, which are inside their own detectors, so both gates run their full path on this very PR (self-validating).

After merge (required)

Re-add to dev branch protection required status checks — now safe:

schema-parity
verify-non-root

Validation

  • both YAMLs parse
  • regex skips agent-server/backend/frontend-only PRs; runs on src/backend/db/**, docker/**, docker-compose*.yml, scripts/deploy/start.sh, src/mcp-server/Dockerfile, and each workflow's own file

Fixes #1237

🤖 Generated with Claude Code


Also in this PR (bundled per request)

.claude submodule bump f20b2b4..c63ba15 — adds a CI Gates (required status checks) subsection to DEVELOPMENT_WORKFLOW.md §4b: enumerates the required vs informational PR checks and codifies the self-skip invariant (never mark a path-filtered workflow required unless it runs on every PR and self-skips when its paths are untouched), so the footgun this PR fixes is documented, not just patched.

… require

Both are path-filtered workflows that were added to dev's required status
checks. On any PR that doesn't touch their paths the required context never
reports, so GitHub holds the merge at "Expected — waiting for status" forever.
This bricked every non-schema / non-docker PR (the approved merge queue had to
be unblocked by temporarily dropping both from required).

Fix: both jobs now run on every PR and self-skip via a pure `git diff` change
detector — when no relevant file changed the heavy steps (parity pytest / stack
boot + UID asserts) are gated off and the job passes trivially, satisfying the
required check without work. When a relevant file changes, the full check runs
and can fail. No third-party action and no token scope beyond contents: read
(important for the security gate). push stays path-filtered; PRs self-skip.

After merge, re-add `schema-parity` and `verify-non-root` to dev's required
status checks — now safe.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@vybe vybe requested a review from AndriiPasternak31 as a code owner June 16, 2026 15:31
…md (#1237)

Submodule trinity-dev f20b2b4..c63ba15 — adds the CI-gates / required-status-
checks reference and the path-filtered-required-check self-skip invariant to
the workflow doc, alongside the schema-parity + verify-non-root self-skip
change in this PR.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@dolho dolho merged commit 4502e19 into dev Jun 17, 2026
15 checks passed
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.

2 participants