Conversation
generateWithOpenAI fetched api.openai.com with no deadline. A stalled response held publish preview until the Convex action limit. Pass AbortSignal.timeout(10s) and keep the existing fallback changelog. Signed-off-by: Sebastien Tardif <SebTardif@ncf.ca>
|
🦞👀 Pull request received. I will update this pull request when review starts. ClawSweeper review completeClawSweeper finished reviewing this revision. The review result is being finalized. |
|
@SebTardif is attempting to deploy a commit to the OpenClaw Foundation Team on Vercel. A member of the Team first needs to authorize it. |
Assert on the captured spy instead of AbortSignal.timeout so typescript(unbound-method) stays clean in ci:static. Signed-off-by: Sebastien Tardif <SebTardif@ncf.ca>
|
Codex review: needs real behavior proof before merge. Reviewed September 11, 2026, 10:09 AM ET / 14:09 UTC (Revision 2). ClawSweeper reviewWhat this changesAdds a 10-second timeout to OpenAI changelog requests used by publishing and previews, with tests for successful responses and cancellation. Merge readiness⛔ Blocked before merge - 2 items remain The fix remains necessary: current main and v0.23.3 still lack the deadline. No blocking patch defects were found, but the previous real-transport and fallback proof request remains unresolved. Priority: P2 Review scores
Verification
How this fits togetherClawHub builds changelogs from uploaded readme content and file differences. Publishing and preview actions request OpenAI-generated notes and use local fallback notes when generation fails. flowchart TD
A[Readme and file changes] --> B[Publish or preview action]
B --> C[OpenAI request with deadline]
C --> D{Request succeeds?}
D -->|Yes| E[Generated notes]
D -->|No or timeout| F[Local fallback notes]
E --> G[Returned changelog]
F --> G
Before merge
Agent review detailsSecurityNone. Review metrics
Root-cause clusterRelationship: Members:
Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything. Technical reviewBest possible solution: Bound the shared OpenAI request while preserving successful generated notes, user-supplied changelogs and existing fallback behavior. Do we have a high-confidence way to reproduce the issue? Yes, source establishes the failure path: a stalled OpenAI fetch prevents the awaiting callers from reaching fallback notes. No current-main runtime reproduction was executed. Is this the best way to solve the issue? Yes, the shared request is the narrowest fix location; caller-specific timers would duplicate policy, and a promise race would leave the request running. Runtime recovery proof remains outstanding. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning medium; reviewed against cbfee7343ddc. LabelsLabel justifications:
EvidenceWhat I checked:
Likely related people:
Rank-up movesOptional improvements that raise the rating; they are not merge blockers.
Rating scale
Overall follows the weaker of proof and patch quality. Workflow
HistoryReview history (1 earlier review cycle)
|
What Problem This Solves
Publish changelog preview calls OpenAI with no deadline. If
api.openai.comstalls,.catch(() => null)never runs because fetch never rejects. The publish UI and publish action wait until Convex kills the action.Evidence
Live
bunrun ofgenerateWithOpenAIagainst this branch. Fetch hung until the abort signal fired. The call rejected withAbortErrorin 33ms (proof used a 30ms abort stand-in for the 10s product timeout).Unfixed main
generateWithOpenAIhas nosignalon the OpenAIfetch. Siblingconvex/lib/embeddings.tsalready aborts after 10s.Real behavior proof
fix/changelog-openai-timeoutonorigin/main0b34234f, livebuncallinggenerateWithOpenAIwith a hung fetch.bun proof-f009.mtsfrom the patched worktree (proof helper not committed).AbortError. Elapsed time is 33ms, not the Convex action limit. Product timeout remains 10000ms.Summary
Uses
AbortSignal.timeout(10_000)on the existing OpenAI changelog request. Existing.catch(() => null)plus fallback notes stay in place.Tracker
Ref #3675
That issue stays open if this PR is closed without landing on main.