Skip to content

Investigate Devin writer exit zero without a final exported response #60

Description

@arjitj2

Observed failure

A configured devin:swe-2@high isolated writer ran from 2026-09-26 23:57:44.243 UTC to 2026-09-27 00:35:34.255 UTC (2,270,012 ms). The direct child exited 0 with no signal. Pstack returned exit 65, status: malformed-output, failurePhase: postprocess, processStarted: true, and terminalSuccess: false, with devin export did not end with a final agent response.

The worker left substantial incomplete edits. They were preserved in the draft work for #57 (PR #59, checkpoint a9a3f9ca51dfabce483166fa7964f02bc4ff3f1b). That task owns those edits and its separately authorized continuation; this investigation must not change its checkout or replay its writer.

The receipt records no explicit deadline (timeoutMs: null) and apiSpend: deny. Its prompt assigned Git mutations to the parent. The owning task reports that inherited refusal fallback was explicitly unset. Neither proves a cause for this exit.

The named private ATIF export, its directory, and accepted-output file are absent on inspection; the failed-writer snapshot remains. Runner cleanup deletes its private export directory in finally. Only the bounded narration prefix in the old receipt remains, which does not expose the final ATIF step or establish the producer's termination reason. Do not infer an export race, permission denial, quota exhaustion, context limit, or provider timeout from these facts.

Relationship to existing work

Investigation and completion criteria

  1. Preserve the original receipt/event/decision and reviewed partial-work checkpoint outside the repository. Record exact runner revision and Devin CLI version for any new observation; do not infer the historical version from today's executable.
  2. Inspect the current print/export contract and existing tests for final-step acceptance, process exit, pipe draining, and cleanup. Determine which structural evidence is missing before attempting a reproduction.
  3. If a fresh isolated reproduction is warranted and allowed by the saved model/spending policy, use a small disposable task, fresh paths, parent-owned Git, and no modifications to the original failed writer. Capture only allowlisted terminal/export structure and source-backed termination codes, without prompts, reasoning, file contents, or raw tool output. Preserve evidence before cleanup without weakening Exclude intermediate provider transcripts from failure receipts #54's privacy contract.
  4. Distinguish a provider stopping without a final response from an adapter rejecting a valid final export or reading it prematurely. Fix only a demonstrated adapter defect. If the provider is responsible, prepare a sanitized reproducible upstream report; do not guess from the historical truncated receipt.
  5. Keep nonfinal exports rejected. Child exit zero alone cannot publish a complete task. No implicit timeout, automatic retry, unsaved fallback, broadened permissions, ACP migration, or default raw transcript retention.

There is currently no demonstrated implementation fix. The historical cause is unverified because the original export is unavailable. Any eventual product change needs the repository's exact-candidate tests, versioning, and installed-parent verification gates before merge.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions