monad-developers / monad-developers/ultrafuzz
Resume terminal failed workflows with pending ready nodes
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 85
- Forks
- 18
- Avg merge
- 11h 10m
- Merged PRs (30d)
- 194
Description
Summary
A durable Modal recovery can get stuck when the workflow backend reports a terminal failed run even though the Ultrafuzz durable state has no failed nodes and still has pending ready work to dispatch.
Evidence
R43 Aave v4 invariant-only run aave-v4-v0012-main-issue270-r43-invariant-only on main 4af20bf9b9e5833cc2e35e74a1080a46697779c6 reached all eight property-lens outputs (21 succeeded / 11 pending) and then the original sandbox exited resume-required.
The detached overseer automatically launched recovery attempts without manual run control:
- generation 1 attempt 2 sandbox
sb-hSxH59GnxxCelK60lzHU5G, stopped at2026-08-06T09:07:50Z, no progress, worker diagnosticterminal-run-non-resumable - generation 2 attempt 3 sandbox
sb-AD9BEDVQg96eHfFy14sq7b, stopped at2026-08-06T09:23:27Z, no progress, same diagnostic
The durable state after attempt 3 is terminal failed with counts 21 succeeded / 11 pending. property-specification-fanin is pending, wait_reason: ready, next_eligible_action: dispatch, while there are no failed nodes. Events show both resume submissions were accepted, followed by immediate syncs with workflow_status: failed / workflow_state: failed and no fan-in dispatch.
Preserved evidence:
/home/ubuntu/ultrafuzz-private/aave-v4-v0012-n1-20260802/r43/r43-private-inspection-20260806T0909Z.json/home/ubuntu/ultrafuzz-private/aave-v4-v0012-n1-20260802/r43/r43-private-inspection-20260806T0919Z.json/home/ubuntu/ultrafuzz-private/aave-v4-v0012-n1-20260802/r43/r43-detached-overseer.log/home/ubuntu/ultrafuzz-private/aave-v4-v0012-n1-20260802/r43/r43-recovery-state.json
Impact
The invariant-only Aave pipeline cannot naturally advance from property JSON/Markdown to fan-in, invariant setup, Recon, findings, and report, even though the next node is ready. Repeated Modal recoveries preserve the evidence but do not make progress.
Expected fix
Add a regression for terminal failed workflow state with no failed workflow tasks and pending ready durable nodes, then make resume recovery reset/fork/replay or otherwise rehydrate the backend so ready pending nodes dispatch instead of immediately re-finalizing as failed.
Contributor guide
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 with the preserved inspection JSON files and detached-overseer log to confirm the terminal failed state, pending ready node, and accepted resume submissions. Trace the resume recovery, workflow-status sync, and ready-node dispatch entry points, then add the regression described in the issue. Done means a terminal failed workflow with no failed tasks and pending ready nodes resumes and dispatches the next node instead of immediately finalizing as failed.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- backend, distributed-systems
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100