overengineeringstudio / overengineeringstudio/effect-utils
Document: disableRetries/maxAttempts bound only defect/invoker retries, not a handler-thrown RetryableError loop
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 82
- Forks
- 2
- Avg merge
- 1d 8h
- Merged PRs (30d)
- 121
Description
Observed behavior
On the pinned restate-server floor, the test-harness disableRetries mode and the per-handler maxAttempts retry policy bound only the defect / invoker retry path. They do not bound a loop driven by a handler that keeps throwing a retryable error (Restate.retryable / RetryableError): such a handler re-arms indefinitely regardless of disableRetries / maxAttempts, because the retryable signal is the durable-step retry path, distinct from the invoker attempt budget those controls cap.
This is already noted in passing in the VRS sync audit; this issue tracks the follow-up to (a) document the distinction clearly in the user-facing guides, and (b) confirm whether this is intended Restate retry semantics or worth raising as an upstream question.
Scope
- Document the
disableRetries/maxAttemptsvs. handler-thrown-RetryableErrordistinction in the testing + error-boundary guides (what each control actually bounds). - Determine whether the behavior is intended Restate semantics (durable-step retries are deliberately not bounded by the invoker attempt budget) or a surprising interaction worth an upstream question; capture the conclusion.
Notes
Possible upstream relevance — keep this as a standalone item so an upstream question can carry its own state if needed.
Refs #757.
Posted on behalf of @schickling
| field | value |
|---|---|
agent_name |
🥇 cl2-pyrite |
agent_session_id |
a71a7fca-0ccf-427e-9e57-51aea841dc74 |
agent_tool |
Claude Code |
agent_tool_version |
2.1.165 |
agent_runtime |
Claude Code 2.1.165 |
agent_model |
claude-opus-4-8 |
runtime_profile |
/nix/store/sz4ll7nq7qbwcsw65pw13w5hw61lnvk5-coding-agent-runtime-profile/share/coding-agents/profile.json |
skills_manifest |
/nix/store/nhbhipdhwmcqh669bpr15g39hr17cqbb-agent-skills-corpus/share/agent-skills/manifest.json |
worktree |
effect-utils/schickling/2026-06-08-restate-effect |
machine |
dev3 |
tooling_profile |
dotfiles@7360c0d |
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reading the testing and error-boundary guides and the VRS sync audit referenced in the issue; no specific file or test is named. Document what disableRetries and maxAttempts bound versus handler-thrown RetryableError retries, then record whether the behavior matches intended Restate semantics or warrants an upstream question.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- documentation
- Issue type
- Documentation
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100