Skip to content

DO NOT MERGE: prove the ci gate fails - #33

Closed
flyingrobots wants to merge 3 commits into
mainfrom
tmp/prove-ci-gate-fails
Closed

DO NOT MERGE: prove the ci gate fails#33
flyingrobots wants to merge 3 commits into
mainfrom
tmp/prove-ci-gate-fails

Conversation

@flyingrobots

Copy link
Copy Markdown
Owner

Throwaway. Verifies the aggregate ci check reports failure when test fails, before ci becomes the required check on main. Will be closed.

think added 3 commits August 4, 2026 03:58
A trailing slash in .gitignore matches a directory only, so a symlink of
the same name is still picked up by `git add -A`. Demonstrated:

  pattern 'node_modules/' -> staged: 1
  pattern 'node_modules'  -> staged: 0

66bb72b untracked the symlink but left the pattern alone, so the very next
`git add -A` — in f866f14, the review-fix commit — re-added it, and it
reached main. The link points at an absolute path in a local worktree, so a
fresh clone gets a dangling node_modules.

Untracking only sticks once the pattern does, so both happen here. The other
never-tracked tool directories lose their trailing slashes for the same
reason. Only the index entry is removed; the local symlink stays.
Branch protection matches a status check by its literal context string, and
a matrix job reports as "<job-id> (<matrix values>)". The required check on
main is "test (22)", so the day the matrix moves off Node 22 that context
stops being reported entirely — pull requests block forever while the
ruleset still shows a green, satisfied rule. The failure mode is silence,
which is the hardest kind to diagnose.

An aggregate job named "ci" fixes the context in place. It gates on
needs.test.result, which is success only when every matrix leg succeeded, so
the matrix can grow without touching branch protection.

always() rather than !cancelled(): a check that never reports looks
identical to a blocked branch, so a cancelled run has to fail loudly.

needs.test.result reaches the shell through env rather than ${{ }}
interpolation, so the value cannot be expanded as shell syntax.

The required context must move from "test (22)" to "ci" once this is on
main; until then this job runs without being required.
Throwaway branch. Adds a deliberately failing step to the test job so the
aggregate ci job can be observed reporting failure. Not for merge.
@coderabbitai

coderabbitai Bot commented Aug 4, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 6b94cb1c-898b-4eaf-9552-c63a54e791f0

📥 Commits

Reviewing files that changed from the base of the PR and between def5d96 and 6d7363c.

📒 Files selected for processing (3)
  • .github/workflows/ci.yml
  • .gitignore
  • node_modules
💤 Files with no reviewable changes (1)
  • node_modules
📜 Recent review details
⏰ Context from checks skipped due to timeout. (1)
  • GitHub Check: test (22)
🔇 Additional comments (2)
.gitignore (1)

10-32: LGTM!

.github/workflows/ci.yml (1)

31-32: LGTM!

Also applies to: 34-59


Summary by CodeRabbit

  • Chores
    • Improved automated validation so test failures are consistently surfaced through a stable status check.
    • Updated repository exclusions to handle files and symbolic links more reliably.
    • Removed an unnecessary tracked entry from the project configuration.

Walkthrough

The workflow adds a deliberate test failure and a stable ci status check. The ignore configuration documents and updates selected patterns, including editor, dependency, and SwiftPM outputs.

Changes

CI status stabilization

Layer / File(s) Summary
Stable CI check
.github/workflows/ci.yml
The test job now exits with failure. The ci job always runs after test and fails unless needs.test.result is success.

Ignore rule cleanup

Layer / File(s) Summary
Ignore pattern updates
.gitignore, node_modules
The configuration adds rationale comments and removes selected trailing slashes from ignore patterns. The node_modules entry is removed.

Estimated code review effort: 2 (Simple) | ~10 minutes

Poem

A test falls down with exit 1,
The ci check watches what was done.
Ignore rules shed their trailing marks,
SwiftPM paths hide in the dark.
Stable signals now report the run.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly identifies the deliberate CI gate failure test and matches the primary pull request objective.
Description check ✅ Passed The description directly explains that the pull request verifies the aggregate ci check when the test job fails.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@flyingrobots

Copy link
Copy Markdown
Owner Author

Purpose served: the aggregate ci check reported fail (3s) when the test job failed, so the gate is not a false green. Closing without merge.

@flyingrobots
flyingrobots deleted the tmp/prove-ci-gate-fails branch August 4, 2026 11:16
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