patchrelay 0.36.10 → 0.36.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "service": "patchrelay",
3
- "version": "0.36.10",
4
- "commit": "35d99f024954",
5
- "builtAt": "2026-04-09T16:10:38.473Z"
3
+ "version": "0.36.11",
4
+ "commit": "ed9637ca51b3",
5
+ "builtAt": "2026-04-09T20:38:07.717Z"
6
6
  }
@@ -423,7 +423,13 @@ export class RunOrchestrator {
423
423
  return;
424
424
  }
425
425
  // Zombie run: claimed in DB but Codex never started (no thread).
426
+ // If this process still owns the live lease, launch may still be in flight
427
+ // between worktree prep and Codex thread creation, so do not self-recover it.
426
428
  if (!run.threadId) {
429
+ if (recoveryLease === "owned") {
430
+ this.logger.debug({ issueKey: issue.issueKey, runId: run.id, runType: run.runType }, "Skipping zombie reconciliation for locally-owned launch that has not created a thread yet");
431
+ return;
432
+ }
427
433
  this.logger.warn({ issueKey: issue.issueKey, runId: run.id, runType: run.runType }, "Zombie run detected (no thread)");
428
434
  this.withHeldIssueSessionLease(run.projectId, run.linearIssueId, () => {
429
435
  this.db.runs.finishRun(run.id, { status: "failed", failureReason: "Zombie: never started (no thread after restart)" });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "patchrelay",
3
- "version": "0.36.10",
3
+ "version": "0.36.11",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "repository": {