You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
coord merge refuses every vimcode PR, permanently:
vimcode #611 (issue-611-...): checks_failed — checks failed: coord: could not read
CI status for JDonaghy/vimcode#612 (gh pr checks failed: no checks reported on the
'issue-611-worktree-agents-cannot-query-the-graphif' branch) (unknown)
gh api repos/JDonaghy/vimcode/actions/workflows returns an empty list. The repo has no
active workflows at all, so no PR has ever reported a check.
Both were renamed to .disabled on 2026-04-30. GitHub only picks up .yml/.yaml, so they are
inert. The on: block in ci.yml.disabled is already correct for this repo
(branches: [main, develop]) — the file simply never runs.
Why it matters
coord's merge gate (#240) refuses to merge when it cannot read a CI verdict. That is correct —
"no checks" means "no evidence this code works". Overriding with --force-merge on every
vimcode PR disables the gate repo-wide by habit. The repo needs a green gate, not a
comprehensive one.
Fix — re-enable a minimal job that is reliably green
Do not re-enable ci.yml.disabled wholesale. It defines four jobs, and three of them are
liabilities for a merge gate:
job
verdict
test (ubuntu-24.04, GTK4)
re-enable — this is the gate
build-macos (macos-latest)
leave disabled — paid runner minutes, slow, not required to merge
build-windows
leave disabled — vimcode is not shipped on Windows today (see docs/CROSS_PLATFORM.md M2, unstarted)
coverage (llvm-cov + Codecov)
leave disabled — needs a Codecov token this repo does not have
Rename ci.yml.disabled → ci.yml and reduce it to the Linux test job. Keep the existing on: block unchanged — it is already [main, develop], which is what this repo needs.
Anchor the test command to what the Test stage already runs
coordinator.yml configures vimcode's test command as:
cargo test --no-default-features
That is the headless path — vimcode's default = ["gui"] feature pulls in GTK4, and --no-default-features is what the fleet's Test stage has been running successfully all along. CI should run the same command, so the merge gate and the Test stage cannot disagree about
whether the same commit passes. The disabled file's cargo test --verbose (default features,
GTK) is a different, unproven-in-CI command.
Suggested job shape — keep the existing caching and toolchain steps, change only what runs:
cargo fmt -- --check
cargo clippy --no-default-features -- -D warnings
cargo build --no-default-features
cargo test --no-default-features
Keeping GTK4 out of the job removes the libgtk-4-dev apt install entirely, which also makes it
substantially faster.
If fmt or clippy -D warnings fails on the current tree, do not silently drop the step and
do not mass-reformat the codebase to make it pass. Report what fails in the PR and ship the
build+test steps green; a follow-up issue can clean up the lint debt. A gate that runs is worth
more than a gate that is comprehensive.
Acceptance
This change verifies itself. For same-repo pull_request events GitHub evaluates the
workflow from the PR branch, so the PR that renames the file will itself receive checks.
gh pr checks <this PR> must report the job, not "no checks reported".
The job must be green. This is the whole point of the issue — a red gate blocks the merge
queue exactly as hard as an absent one.
cargo test --no-default-features must pass locally in the worktree before pushing. Verify by exit code, not by reading output.
Scope
.github/workflows/ci.yml (renamed from ci.yml.disabled) only.
Leave release.yml.disabled alone — releases are out of scope and re-enabling it could
publish something.
Do not change Cargo.toml, features, or any source file to make CI pass. If the code does not
build under --no-default-features, that is a finding to report, not to patch here. AMENDED 2026-07-31 (operator decision, user-approved) — this constraint is unsatisfiable and is
formally waived for the #615 snapshot fix and a comment-only Cargo.toml edit.
ci.yml declares on: pull_request: branches: [main, develop], and that filter applies to the base branch. Consequences, all verified rather than assumed:
A stacked PR based on this branch also gets zero checks, because its base would not be main/develop.
That is a deadlock. The only route to a CI-validated merge without --force-merge is for the
snapshot fix to ride the branch that enables CI. Splitting and stacking were both evaluated and
provably do not work — reviewers should not recommend either.
The waived edits are narrow: the Cargo.toml change is comment-only (documenting the new
quadraui clone step — verify with git diff), and the src/ change is 17 lines, test-only,
inside #[cfg(test)] mod tests, independently approved by review e8347dcd91d0
(approve, 0 blocking, 0 non-blocking). CI is green at d4682ce.
Do not bump versions. Do not edit README*, CLAUDE.md, or docs/**.
Note
quadraui has the same symptom from a different cause — its ci.yml is active but only triggers
on PRs to main while the default branch is develop. Tracked separately in quadraui#514.
Symptom
coord mergerefuses every vimcode PR, permanently:gh api repos/JDonaghy/vimcode/actions/workflowsreturns an empty list. The repo has noactive workflows at all, so no PR has ever reported a check.
Root cause: the workflows are checked in disabled
Both were renamed to
.disabledon 2026-04-30. GitHub only picks up.yml/.yaml, so they areinert. The
on:block inci.yml.disabledis already correct for this repo(
branches: [main, develop]) — the file simply never runs.Why it matters
coord's merge gate (#240) refuses to merge when it cannot read a CI verdict. That is correct —
"no checks" means "no evidence this code works". Overriding with
--force-mergeon everyvimcode PR disables the gate repo-wide by habit. The repo needs a green gate, not a
comprehensive one.
Fix — re-enable a minimal job that is reliably green
Do not re-enable
ci.yml.disabledwholesale. It defines four jobs, and three of them areliabilities for a merge gate:
test(ubuntu-24.04, GTK4)build-macos(macos-latest)build-windowsdocs/CROSS_PLATFORM.mdM2, unstarted)coverage(llvm-cov + Codecov)Rename
ci.yml.disabled→ci.ymland reduce it to the Linuxtestjob. Keep the existingon:block unchanged — it is already[main, develop], which is what this repo needs.Anchor the test command to what the Test stage already runs
coordinator.ymlconfigures vimcode's test command as:That is the headless path — vimcode's
default = ["gui"]feature pulls in GTK4, and--no-default-featuresis what the fleet's Test stage has been running successfully all along.CI should run the same command, so the merge gate and the Test stage cannot disagree about
whether the same commit passes. The disabled file's
cargo test --verbose(default features,GTK) is a different, unproven-in-CI command.
Suggested job shape — keep the existing caching and toolchain steps, change only what runs:
cargo fmt -- --checkcargo clippy --no-default-features -- -D warningscargo build --no-default-featurescargo test --no-default-featuresKeeping GTK4 out of the job removes the
libgtk-4-devapt install entirely, which also makes itsubstantially faster.
If
fmtorclippy -D warningsfails on the current tree, do not silently drop the step anddo not mass-reformat the codebase to make it pass. Report what fails in the PR and ship the
build+test steps green; a follow-up issue can clean up the lint debt. A gate that runs is worth
more than a gate that is comprehensive.
Acceptance
This change verifies itself. For same-repo
pull_requestevents GitHub evaluates theworkflow from the PR branch, so the PR that renames the file will itself receive checks.
gh pr checks <this PR>must report the job, not "no checks reported".queue exactly as hard as an absent one.
cargo test --no-default-featuresmust pass locally in the worktree before pushing. Verify byexit code, not by reading output.
Scope
.github/workflows/ci.yml(renamed fromci.yml.disabled) only.Leave
release.yml.disabledalone — releases are out of scope and re-enabling it couldpublish something.
Do not changeCargo.toml, features, or any source file to make CI pass. If the code does notbuild under
--no-default-features, that is a finding to report, not to patch here.AMENDED 2026-07-31 (operator decision, user-approved) — this constraint is unsatisfiable and is
formally waived for the
#615snapshot fix and a comment-onlyCargo.tomledit.ci.ymldeclareson: pull_request: branches: [main, develop], and that filter applies to thebase branch. Consequences, all verified rather than assumed:
refuses
no checks reported.main/develop.That is a deadlock. The only route to a CI-validated merge without
--force-mergeis for thesnapshot fix to ride the branch that enables CI. Splitting and stacking were both evaluated and
provably do not work — reviewers should not recommend either.
The waived edits are narrow: the
Cargo.tomlchange is comment-only (documenting the newquadraui clone step — verify with
git diff), and thesrc/change is 17 lines, test-only,inside
#[cfg(test)] mod tests, independently approved by reviewe8347dcd91d0(approve, 0 blocking, 0 non-blocking). CI is green at
d4682ce.Do not bump versions. Do not edit
README*,CLAUDE.md, ordocs/**.Note
quadraui has the same symptom from a different cause — its
ci.ymlis active but only triggerson PRs to
mainwhile the default branch isdevelop. Tracked separately in quadraui#514.