Skip to content

overlane run attempt

Report one finished iteration on a task and learn whether the task is held

Updated View as MarkdownOpen in ChatGPTOpen in Claude

Records how an iteration ended (verified, pending, quota, failed or no_progress) with its time, the share of the usage window it used and, for a failure, the failing command and the end of its output. The service applies the stuck rules (the same failure three times in a row, or three iterations with no progress) and the per-task ceilings (attempts, minutes, usage window share). A held task prints STOP stuck or STOP ceiling: take the next task. Report after the task’s lease is released.

Usage

overlane run attempt --task TASK_ID --executor claude-code|codex|gemini-cli|cursor --outcome verified|pending|quota|failed|no_progress --started TIME [--ended TIME] [--spend PERCENT] [--command COMMAND] [--output-file PATH] [--commit SHA] [--resets-at TIME] [--dry-run]

Flags

Flag Type Required Default Description
--task string yes The task the iteration worked on
--executor one of claude-code, codex, gemini-cli, cursor yes Which agent ran the iteration
--outcome one of verified, pending, quota, failed, no_progress yes How the iteration ended
--started string yes When it started: an ISO time or a span back from now such as 40m
--ended string no When it ended (default: now)
--spend string no Percentage points of the usage window it used, as the client reported (default: 0)
--command string no The verification command that failed
--output-file string no A file holding the failing output; its last 64 KB is sent
--commit string no The commit the iteration ended on
--resets-at string no For a quota stop: when the client says its window resets
--dry-run boolean no Print the requests and file changes this command would make, then stop. Needs no credentials.

Examples

overlane run attempt --task T3 --executor codex --outcome failed --started 40m --command 'pnpm -r test' --output-file .overlane/state/last-test.log

Behavior

  • Effect: write (changes local or hosted state).
  • Needs credentials: yes. Uses the network: yes.
  • Supports --dry-run: yes. Accepts --force: no.
  • Machine-readable description: overlane schema run attempt.

Result

With --json (the default when stdout is not a terminal) the command prints this JSON Schema’s shape on stdout.

{
  "anyOf": [
    {
      "type": "object",
      "properties": {
        "attempt": {
          "type": "object",
          "properties": {
            "seq": {
              "type": "integer",
              "exclusiveMinimum": 0,
              "maximum": 9007199254740991
            },
            "taskId": {
              "type": "string",
              "minLength": 1,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]*$",
              "description": "task identifier"
            },
            "executor": {
              "type": "string",
              "enum": [
                "claude-code",
                "codex",
                "gemini-cli",
                "cursor"
              ]
            },
            "outcome": {
              "type": "string",
              "enum": [
                "verified",
                "pending",
                "quota",
                "failed",
                "no_progress"
              ]
            },
            "startedAt": {
              "type": "string",
              "format": "date-time",
              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
            },
            "endedAt": {
              "type": "string",
              "format": "date-time",
              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
            },
            "minutes": {
              "type": "number",
              "minimum": 0
            },
            "spendPercent": {
              "type": "number",
              "minimum": 0,
              "maximum": 100
            },
            "fingerprint": {
              "type": [
                "string",
                "null"
              ]
            },
            "lastLine": {
              "type": [
                "string",
                "null"
              ]
            },
            "commitSha": {
              "type": [
                "string",
                "null"
              ]
            },
            "resetsAt": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "required": [
            "seq",
            "taskId",
            "executor",
            "outcome",
            "startedAt",
            "endedAt",
            "minutes",
            "spendPercent",
            "fingerprint",
            "lastLine",
            "commitSha",
            "resetsAt"
          ],
          "additionalProperties": false
        },
        "verdict": {
          "oneOf": [
            {
              "type": "object",
              "properties": {
                "action": {
                  "type": "string",
                  "const": "continue"
                }
              },
              "required": [
                "action"
              ],
              "additionalProperties": false
            },
            {
              "type": "object",
              "properties": {
                "action": {
                  "type": "string",
                  "const": "paused_stuck"
                },
                "rule": {
                  "type": "string",
                  "enum": [
                    "same_failure",
                    "no_progress"
                  ]
                },
                "fingerprint": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "streak": {
                  "type": "integer",
                  "exclusiveMinimum": 0,
                  "maximum": 9007199254740991
                }
              },
              "required": [
                "action",
                "rule",
                "fingerprint",
                "streak"
              ],
              "additionalProperties": false
            },
            {
              "type": "object",
              "properties": {
                "action": {
                  "type": "string",
                  "const": "paused_ceiling"
                },
                "kind": {
                  "type": "string",
                  "enum": [
                    "attempts",
                    "minutes",
                    "spend"
                  ]
                },
                "limit": {
                  "type": "number"
                },
                "actual": {
                  "type": "number"
                }
              },
              "required": [
                "action",
                "kind",
                "limit",
                "actual"
              ],
              "additionalProperties": false
            }
          ]
        },
        "duplicate": {
          "type": "boolean"
        }
      },
      "required": [
        "attempt",
        "verdict",
        "duplicate"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "dryRun": {
          "type": "boolean",
          "const": true
        },
        "service": {
          "type": "string"
        },
        "requests": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "method": {
                "type": "string"
              },
              "path": {
                "type": "string"
              },
              "body": {},
              "note": {
                "type": "string"
              }
            },
            "required": [
              "method",
              "path"
            ],
            "additionalProperties": false
          }
        },
        "commands": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "writes": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "path": {
                "type": "string"
              },
              "action": {
                "type": "string",
                "enum": [
                  "write",
                  "append",
                  "delete"
                ]
              },
              "description": {
                "type": "string"
              }
            },
            "required": [
              "path",
              "action",
              "description"
            ],
            "additionalProperties": false
          }
        },
        "notes": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "dryRun",
        "requests",
        "commands",
        "writes",
        "notes"
      ],
      "additionalProperties": false
    }
  ]
}

See exit codes for the status the process returns.

Navigation

Type to search…

↑↓ navigate↵ selectEsc close

Overlane Agent

Ask about the docs. Answers are quoted from the pages, with links. This panel cannot change anything.

    Questions are answered in your browser from the docs index. Nothing you type here is stored or sent anywhere.