Repository navigation
Conversation
f0ec321 to
ecef499
Compare
|
Codex review: needs maintainer review before merge. Reviewed July 11, 2026, 7:25 PM ET / 23:25 UTC. Summary PR surface: Source +1, Tests +8. Total +9 across 3 files. Reproducibility: yes. Current-main source deterministically returns no OpenClaw timer for an active unlisted method, grammY 1.44.0 supplies the documented 500-second fallback, and the linked issue supplies production incident evidence. Review metrics: 1 noteworthy metric.
Root-cause cluster Members:
Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything. Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Risk before merge
Maintainer options:
Next step before merge
Security Review detailsBest possible solution: Keep explicit method-specific limits as overrides over the general 60-second guard, retain the fixed getUpdates behavior, and preserve the existing configurable higher timeout for slow custom Bot API deployments. Do we have a high-confidence way to reproduce the issue? Yes. Current-main source deterministically returns no OpenClaw timer for an active unlisted method, grammY 1.44.0 supplies the documented 500-second fallback, and the linked issue supplies production incident evidence. Is this the best way to solve the issue? Yes. A default guard with explicit per-method overrides closes the recurring allowlist failure class more maintainably than adding one method after each incident, while preserving a configured higher-timeout escape hatch. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against 8fea7f501145. Label changesLabel changes:
Label justifications:
Evidence reviewedPR surface: Source +1, Tests +8. Total +9 across 3 files. View PR surface stats
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
|
|
@clawsweeper re-review |
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
|
Merged via squash.
|
…nclaw#104526) * fix(telegram): bound unlisted API requests * test(telegram): prove unlisted request aborts --------- Co-authored-by: Peter Steinberger <[email protected]>
Closes #104524
AI-assisted: yes. I used an OpenAI coding agent, reviewed the resulting change, and understand the timeout behavior.
What Problem This Solves
Fixes an issue where Telegram users could have all outbound replies for a session stall for roughly eight minutes when an API call used a method that was not explicitly listed in the client timeout table.
Why This Change Was Made
Every identified Telegram API method except
getUpdatesnow receives the existing 60-second outbound timeout as a default. Explicit method-specific guards remain unchanged, higher configured timeouts are still honored, and requests whose method cannot be identified remain untouched.User Impact
A newly introduced or otherwise unlisted Telegram API method can no longer silently fall back to grammY's approximately 500-second timeout and park the serialized delivery lane. Its client-side guard defaults to 60 seconds unless the operator configured a higher timeout.
Evidence
pnpm exec vitest run extensions/telegram/src/request-timeouts.test.ts— 1 file, 15 tests passed.pnpm test:extension telegram— 142 files, 2,666 tests passed.pnpm exec oxlint --tsconfig config/tsconfig/oxlint.extensions.json extensions/telegram/src/request-timeouts.ts extensions/telegram/src/request-timeouts.test.ts— 0 warnings, 0 errors.pnpm exec oxfmt --check --threads=1 extensions/telegram/src/request-timeouts.ts extensions/telegram/src/request-timeouts.test.ts— formatting passed.NODE_OPTIONS='--max-old-space-size=2300' node scripts/run-tsgo.mjs -p extensions/telegram/tsconfig.json --noEmit— passed.git diff --check— passed.No live Telegram probe was run because this checkout has no test-bot credentials. The linked issue includes the production incident evidence and reports the same fallback behavior running in production.
Controlled runtime proof
A credential-free controlled Bot API endpoint exercised the real
createTelegramClientFetchandAbortControllerpath on this PR branch. All three requests ran concurrently against delayed local HTTP responses; no Telegram token or external API was used.This demonstrates the 60-second fallback through the actual fetch wrapper, the existing higher configured-timeout escape hatch, and the unchanged 45-second
getUpdatesguard.