Provider timeout is a socket-inactivity timer, not a wall-clock deadline #151
Labels
No labels
already-shipped
bug
documentation
duplicate
enhancement
external-review
good first issue
help wanted
in progress
invalid
needs-decision
proposal
question
security
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: crenshawdev/cadence-archived#151
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Source: deep dive F11 (deadline half); general scan recommendation 4
Verdict: DISPUTE - overstated, closing
Claim as reviewed
The timeout supplied to
https.requestis a socket inactivity timer, not a wall-clock deadline. A server or intermediary can send occasional bytes indefinitely, and the workflow documentation wrongly describes this as capping total thinking time.At HEAD
f354864(v3.3.0)The mechanism reading is correct -
cadence-core/bin/review-provider.mjs:512-536setstimeouton the request, which is socket inactivity.The documentation charge is not.
cadence-core/references/review-triggers.md:238-248states it precisely: "the bound is a socket INACTIVITY timeout on an unstreamed response, so it caps total thinking time rather than detecting a dead connection." That reasoning is correct - on an unstreamed response, inactivity is total elapsed time. Both review passes cited this file and read past the sentence.Note
Defeating the bound requires a provider that drips bytes on a response documented as unstreamed. The size half of the finding is real and is filed separately as an open issue.