ci: self-skip schema-parity + verify-non-root so they're safe to require (#1237)#1238
Merged
Conversation
… 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>
…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
approved these changes
Jun 17, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
schema-parityandverify-non-rootare path-filtered workflows added todev'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 diffchange detector:pushtodev/mainstays path-filtered (post-merge regression only). No third-party action and no token scope beyondcontents: 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
devbranch protection required status checks — now safe:Validation
src/backend/db/**,docker/**,docker-compose*.yml,scripts/deploy/start.sh,src/mcp-server/Dockerfile, and each workflow's own fileFixes #1237
🤖 Generated with Claude Code
Also in this PR (bundled per request)
.claudesubmodule bumpf20b2b4..c63ba15— adds a CI Gates (required status checks) subsection toDEVELOPMENT_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.