• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

lsm / HyperNeo / 30778230136
83%

Build:
DEFAULT BRANCH: dev
Ran 03 Aug 2026 02:02AM UTC
Jobs 0
Files 0
Run time –
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

pending completion
  cancel
30778230136

push

github

web-flow
fix(space): rate-limit task-lifecycle recovery — banner-Cancel respawn + partial-resume recompute (#2318)

Two P2 task-lifecycle edge cases deferred from #2271 (codex round-4 review),
revised through two rounds of review.

Finding A — banner Cancel left the task unrecoverable in-process. After
cancelRateLimitRetry (cancel(false) + setIdle), retryNow could not re-fire
(timer dropped, startupExhausted cleared) and the cross-restart
recoverRateLimitedTasks sweep skipped the live idle session, so the visible
Resume could not restart the consumed turn until a daemon restart.
resumeRateLimitedSubSession now detects the parked state via a narrow
`bannerCancelled` flag (set only in cancel(notifyResume=false), cleared on the
next pause/resume/new-episode/reset — NOT the raw `paused` flag, which is also
true mid-fireCooldownRetry while an auto-retry is actively starting) and
re-spawns the execution (reset to pending + clear agentSessionId, stop + evict
the orphaned idle session) so the workflow tick spawns a fresh replacement.
recoverWorkflowBackedTask skips the now-redundant prepare step on respawn.

Finding B — merged restriction was not recomputed on partial session resume.
limitedSessionsByTask was IDs-only and the resume listener left the merged
restriction untouched when other sessions remained, so the latest-deadline
session resuming first left a stale later resetAt (delaying cross-restart
recovery) and the status stayed at the stronger kind. Changed to
Map<taskId, Map<sessionId, {resetAt,kind,reason}>> and recompute the merged
restriction from all/remaining entries on every pause and resume, keeping the
persisted restriction consistent with the in-memory set. The change-skip guard
compares status/resetAt/type/limit so a re-pause that only flips the reason
persists.

The banner-cancelled session's limitedSessionsByTask entry is cleared by the
session.rate_limit_resume event published synchronously inside
stopSessionPreserveDb → handleInterrupt → cancel(n... (continued)
Source Files on build 30778230136
Detailed source file information is not available for this build.
  • Back to Repo
  • Github Actions Build #30778230136
  • 302df168 on github
  • Prev Build on dev (#30776677727)
  • Next Build on dev (#30778330762)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc