[codex] fix(comments): make durable effects retryable - #1243
Conversation
Keep failed comment side effects unsettled and recover them through durable backoff and reconciliation. Co-Authored-By: Paperclip <noreply@paperclip.ing>
|
🔗 Paperclip issue: BLO-19116 |
1 similar comment
|
🔗 Paperclip issue: BLO-19116 |
|
Closing as stale — this draft can no longer be landed as a diff. Measured against master
At that distance the surrounding code has moved out from under the patch, so "resolve the conflicts" would mean rewriting it against a codebase it was never written for — not merging it. Reopening is cheap if the branch is still wanted; the commits are untouched. Closing the PR does not close the underlying issue. Where this PR referenced a BLO issue, that issue remains the record of intent and the place to re-implement from, against current master. No judgement here on whether the original problem still exists — I did not verify that per-PR, and it should be re-checked before any re-implementation, since some of these may already have been fixed independently. |
Thinking Path
Linked Issues or Issue Description
Refs #903 (App-authored predecessor; this independent successor does not modify or close it). Related internal tracking: BLO-19116.
Problem: after ten failures, a comment effect was parked as
failed, excluded from retries, and treated as settled. The parent comment then receivedidempotency_processed_atalthough a sink such as wake delivery had not completed.Expected behavior: every non-processed effect remains outstanding. Repeated failures use durable backoff, including a longer cooldown after the threshold, and the reconciler can reclaim the effect until it completes.
What Changed
issue_comment_effectsledger migration and schema, includingnext_attempt_atplus a due-work index.master.failedis a backoff state rather than terminal settlement; comments stamp processed only after every effect isprocessed.Verification
pnpm --filter @paperclipai/db check:migrations— passed.pnpm --filter @paperclipai/server exec vitest run --no-file-parallelism --maxWorkers=1 --reporter=verbose src/services/issue-comment-effects.test.ts— 15 passed.pnpm --filter @paperclipai/server exec vitest run --no-file-parallelism --maxWorkers=1 --reporter=verbose src/__tests__/issue-update-comment-wakeup-routes.test.ts src/services/wake-idempotency.test.ts— 25 passed.pnpm --filter @paperclipai/db typecheckandpnpm --filter @paperclipai/server typecheck— passed.pnpm --filter @paperclipai/db buildandpnpm --filter @paperclipai/server build— passed.Risks
Model Used
OpenAI GPT-5 Codex — tool-assisted reasoning and code execution; the session does not expose a more specific serving-model version or context-window size.
Checklist