monad-developers / monad-developers/ultrafuzz

Modal exhausted-task recovery retry rejects validated workflow relocation

Open Beginner friendly
#724 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

deferred-post-v0.1
Dominant language
TypeScript
Stars
85
Forks
18
Avg merge
11h 10m
Merged PRs (30d)
194

Description

Generic reproduction: relocated Modal retry omits durability acknowledgement

Captured: 2026-08-21T19:14:05Z

UltraFuzz release base: 9b0bc8cab2e681bbffeee385c1f80f85a47087d3

Affected surface: the release's Modal node worker recovery for a generic external Solidity target. No target identity, prompt, source path, business logic, or finding is included here.

Preconditions

  1. A Modal node has a persisted inner workflow run under the worker's durable workspace.
  2. Callback termination has exhausted the selected inner task's attempts.
  3. A later worker resumes the same durable workspace through UltraFuzz's supported outer retry path.
  4. The worker presents the immutable workflow from its validated relocated snapshot path, so the inner runtime observes the expected workflow-path/module-root/VCS-root relocation.

Minimal release-owned check

Run against the built release helper:

import { workflowRetryTaskCommandArguments } from "./packages/modal/dist/node-worker.js";

const args = workflowRetryTaskCommandArguments(
  "/durable/relocated-workflow.tsx",
  "generic-external-run",
  "node:analysis"
);

if (!args.includes("--accept-workflow-change")) process.exit(1);

Observed output on the affected worker:

{"command":"retry-task","has_accept_workflow_change":false,"uses_force":true,"node_scoped":true}

Observed exit code: 1.

The preceding ordinary resume is intentionally conservative. Once its exact-task diagnosis reports retries-exhausted, however, the worker invokes retry-task without --accept-workflow-change. The bundled runtime rejects the retry with RETRY_TASK_FAILED and reports that workflow path, module graph, and VCS root changed, explicitly requiring --accept-workflow-change to re-bless this run in place.

Expected

The narrowly gated exact-task recovery should acknowledge the worker-owned, already-validated relocation when invoking retry-task, while leaving ordinary resume, missing-run fallback, and unrelated failures unchanged.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in packages/modal/dist/node-worker.js and trace workflowRetryTaskCommandArguments, then inspect the exact-task retries-exhausted recovery path. Run the supplied release-helper check against the relocated workflow arguments; done means that narrowly gated retry includes --accept-workflow-change while ordinary resume, missing-run fallback, and unrelated failures remain unchanged.

Written by the indexing model from the issue text.

Assessment

Tech stack
node.js, typescript
Domain
backend
Issue type
Bug
Difficulty
2/5
Estimated time
1-3 hours
Activity status
Active
Clarity
Clearly specified
Newbie friendliness
84/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.