Skip to content

fix(ci): restore split-tier burst slots + real deleteSession swallow - #1006

Merged
cursor[bot] merged 1 commit into
mainfrom
jkt/auto/ci-failure-investigation-d6f7
Jul 20, 2026
Merged

cursor[bot] merged 1 commit into
mainfrom
jkt/auto/ci-failure-investigation-d6f7

Conversation

@cursor

@cursor cursor Bot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

Summary

Main tip 2686950f CI run 29624191864 failed on e2e (4) (runner docker-75116713c5d2-7) after #1002 put burst hosts back on unified dual-e2e slots. All 3 shard attempts showed the same contention signature: mid-test WebDriver timeouts cascading into DELETE /session ECONNREFUSED across unrelated specs.

#1002's body already said to re-enable split-tier if that pattern returned — it did, immediately.

Changes

  1. Restore split-tier burst defaults (scripts/burst-runners.mts): COMPOSE_PROFILES=split-tiers, scale runner=1 + runner-checks=N-1. One Electron e2e lane per 4-vCPU host; extra slots stay checks-only. Compose profile machinery from fix(ci): split-tier burst runner slots — one e2e lane per host #999 is unchanged.
  2. Actually swallow wedged deleteSession (tests/e2e/helpers/after-test-safety.ts): @wdio/globals' browser Proxy has no set trap, so fix(e2e): swallow wedged deleteSession (supersedes #990) #991's session.deleteSession = … never reached Runner.endSession. Prefer overwriteCommand('deleteSession', …) on the live WDIO path; keep own-property assignment for unit-test fakes.

Validation

Ops note (required for main to go green)

This PR only changes future npm run runners:burst … up provisioning. Live Scaleway hosts are still on the unified layout from #1002 and need the same in-place compose/.env update (or a burst down/up) that #999/#1002 applied over SSH.

Related

Open in Web View Automation 

jonathanKingston added a commit that referenced this pull request Jul 18, 2026
## Summary

Main CI failed on tip `5b54c192` (#1009) because `format:check` still
flagged one file that the earlier Prettier reformat missed.

- Failed run:
https://github.com/copse-dev/agent-pane/actions/runs/29647959307
- `precheck` failed at `npm run format:check` on
`src/shared/hooks/hook-card.ts`
- `CI Passed` failed as a consequence (upstream precheck red)
- No existing open PR covered this leftover (checked `#1009` merged;
`#1008`/`#1006`/`#985` are unrelated CI fixes)

## Fix

Ran Prettier 3.9.5 `--write` on `src/shared/hooks/hook-card.ts` —
collapses the `HookCardStatus` union onto one line. No logic changes.

## Validation

- `npm run format:check` — pass
- `npm run check` — pass (typecheck/lint/format/dead-code/unit tests;
3281 tests)

## Test plan

- [x] Confirm failing main run 29647959307 / precheck logs show only
prettier warning on `hook-card.ts`
- [x] Local `format:check` + `check` green on this branch
- [ ] CI on this PR goes green

<div><a
href="https://cursor.com/agents/bc-001b1f6b-2139-4ac1-abaa-690431be9178"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://cursor.com/assets/images/open-in-web-dark.png"><source
media="(prefers-color-scheme: light)"
srcset="https://cursor.com/assets/images/open-in-web-light.png"><img
alt="Open in Web" width="114" height="28"
src="https://cursor.com/assets/images/open-in-web-dark.png"></picture></a>&nbsp;<a
href="https://cursor.com/automations/62eac492-810a-11f1-ba66-0e7d0216e441"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://cursor.com/assets/images/view-automation-dark.png"><source
media="(prefers-color-scheme: light)"
srcset="https://cursor.com/assets/images/view-automation-light.png"><img
alt="View Automation" width="141" height="28"
src="https://cursor.com/assets/images/view-automation-dark.png"></picture></a>&nbsp;</div>

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Jonathan Kingston <jonathanKingston@users.noreply.github.com>
@jonathanKingston jonathanKingston added this to the Release readiness milestone Jul 18, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Merge conflict needs a human

main advanced and screenshot conflicts were resolved automatically, but these non-screenshot files conflict and can't be auto-merged. Resolve them by hand (merge or rebase main):

  • scripts/burst-runners.mts

@jonathanKingston
jonathanKingston force-pushed the jkt/auto/ci-failure-investigation-d6f7 branch from 403ee14 to 2b81d5e Compare July 19, 2026 21:31

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Stale comment

PR health — leaving draft

Shards mostly green; CI Passed is red because e2e (4) was cancelled (classic tip/concurrency false-fail). That gate path is what #1031 fixes (curl+jq tip lookup on CHECKS_RUNNER without gh).

Leaving this as draft — do not auto-merge until #1031 lands (or this branch is rebased/re-run after that gate is fixed). Burst-slot content itself looks intentional WIP.

cc @jonathanKingston if the burst-slot change should still ship independently once the gate is green.

Open in Web View Automation 

Sent by Cursor Automation: Check in with agent-pane prs

cursor Bot added a commit that referenced this pull request Jul 20, 2026
## Summary

Main CI `CI Passed` was painting red on concurrency-cancelled tip pushes
after #1017 moved the gate onto self-hosted `CHECKS_RUNNER`.

## Root cause

On tip `7fd2b097` (run
[29686728400](https://github.com/copse-dev/agent-pane/actions/runs/29686728400)
/ job 88192253327), upstream jobs were cancelled because a newer main
push took the `ci-refs/heads/main` concurrency slot — expected
supersession noise that #954/#985 already know how to treat as green.

The gate then fail-closed with:

```
gh: command not found
Could not resolve branch tip SHA; treating cancel as failure.
```

`ci-runners/Dockerfile` installs `curl` + `jq` but **not** the GitHub
CLI. Hosted `ubuntu-latest` has `gh` preinstalled, so this only
regressed when #1017 repointed `ci-passed` at `${{ vars.CHECKS_RUNNER ||
'ubuntu-latest' }}`.

Same pattern hit the next superseded SHA (`e48ab120`, run 29686756375).

## Fix

In `.github/workflows/ci.yml`:

1. **`ci-passed` tip/supersession lookups** — replace `gh api … --jq`
with `curl` + `jq` against `github.api_url` (Bearer `github.token`).
2. **`commit-screenshots` head-branch probe** — same swap so a missing
`gh` cannot silently treat every branch as deleted.

Logic unchanged: tip SHA moved or newer same-SHA CI run → exit 0;
genuine tip cancel → still fail closed.

## Validation

- Confirmed **no open PR** already covers this (`gh: command not found`
/ curl tip lookup). Related but different: #1008 (reconcile mid-merge),
#1006 (burst runners). #985/#1012 already merged.
- Replayed failed run IDs against the REST API: cancelled `29686728400`
(`7fd2b097`) and `29686756375` (`e48ab120`) both resolve a newer tip →
would exit 0.
- YAML parses cleanly.

## Test plan

- [x] Local replay of tip/supersession API path for the two false-red
runs
- [ ] On next main push that cancels an in-flight tip run, `CI Passed`
on the superseded SHA exits green with the supersession notice (no `gh:
command not found`)

<div><a
href="https://cursor.com/agents/bc-6177463d-f2fe-4866-9c2c-125acc04fe74"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://cursor.com/assets/images/open-in-web-dark.png"><source
media="(prefers-color-scheme: light)"
srcset="https://cursor.com/assets/images/open-in-web-light.png"><img
alt="Open in Web" width="114" height="28"
src="https://cursor.com/assets/images/open-in-web-dark.png"></picture></a>&nbsp;<a
href="https://cursor.com/automations/62eac492-810a-11f1-ba66-0e7d0216e441"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://cursor.com/assets/images/view-automation-dark.png"><source
media="(prefers-color-scheme: light)"
srcset="https://cursor.com/assets/images/view-automation-light.png"><img
alt="View Automation" width="141" height="28"
src="https://cursor.com/assets/images/view-automation-dark.png"></picture></a>&nbsp;</div>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Jonathan Kingston <jonathanKingston@users.noreply.github.com>
Co-authored-by: Jonathan Kingston <KingstonMailBox@gmail.com>
@cursor
cursor Bot force-pushed the jkt/auto/ci-failure-investigation-d6f7 branch from 2b81d5e to 2fbb4d8 Compare July 20, 2026 20:45
@cursor
cursor Bot marked this pull request as ready for review July 20, 2026 20:45
@cursor
cursor Bot enabled auto-merge (squash) July 20, 2026 20:45
@wdio/globals' browser Proxy has no set trap, so assigning
session.deleteSession never reached Runner.endSession. Prefer
overwriteCommand on the live path; keep own-property assignment for
unit-test fakes. Adds a focused unit coverage for the Proxy path.

Co-authored-by: Jonathan Kingston <jonathanKingston@users.noreply.github.com>
@cursor
cursor Bot force-pushed the jkt/auto/ci-failure-investigation-d6f7 branch from 2fbb4d8 to fa16587 Compare July 20, 2026 20:46

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PR health — rebased; ready + auto-merge

Tip now contains only the real WDIO fix (no burst-layout change):

  • installDeleteSessionSafety prefers overwriteCommand('deleteSession', …) so the patch reaches Runner.endSession behind @wdio/globals' Proxy
  • own-property assignment kept for unit-test fakes
  • new unit coverage for the Proxy path in scripts/after-test-safety.test.ts

Rebased onto current main (includes #1057). Marked ready and enabled squash auto-merge. CI is in flight on tip fa165875 — not retriggering.

Title still mentions split-tier from the original branch; the tip diff is overwriteCommand-only (integration token cannot edit the PR title).

Open in Web View Automation 

Sent by Cursor Automation: Check in with agent-pane prs

@cursor
cursor Bot merged commit 15bfc6e into main Jul 20, 2026
17 of 18 checks passed
@cursor
cursor Bot deleted the jkt/auto/ci-failure-investigation-d6f7 branch July 20, 2026 20:55
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