Skip to content

fix(orchestration): isolate per-task config-resolution failures from the suite#25

Open
bai-uipath wants to merge 1 commit into
mainfrom
bai/isolate-task-config-resolution
Open

fix(orchestration): isolate per-task config-resolution failures from the suite#25
bai-uipath wants to merge 1 commit into
mainfrom
bai/isolate-task-config-resolution

Conversation

@bai-uipath

Copy link
Copy Markdown
Collaborator

What

Make one incompatible task YAML skip instead of aborting the whole coder-eval run, by extending resolve_all_tasks' per-task error isolation from the load phase to config resolution (layers 1–5).

A resolution failure now demotes just that task file to skipped (surfaced in the run summary and run.json) — but if every task that reaches resolution fails, the cause is a global invocation error (a bad --type / -D value, repeats over the cap) rather than a per-task incompatibility, so it is re-raised and the CLI aborts cleanly. Early-stop arming errors always propagate.

Why

resolve_all_tasks already isolated task YAMLs that fail to load (#219), but layers 1–5 override resolution stayed unguarded. So a single task whose own YAML is incompatible with the run — the concrete case being Claude-only agent fields (sdk_options) surviving a --type codex override, which CodexAgentConfig forbids (extra="forbid") — aborted the entire invocation with no run.json written.

That is what collapsed the scheduled codex weekly: a handful of Maestro tasks carry sdk_options, and codex is the first harness to run them under a non-Claude --type. The gap is ~4 months old (it dates to the original resolution loop), not new — the load-isolation PR simply never covered this layer.

The "re-raise only when every attempted task fails" rule keeps the existing fail-fast behaviour for genuinely global misconfigurations (invalid --type, bad -D values, repeats cap, early-stop arming) while letting a suite shrug off the odd incompatible task and run the rest.

…the suite

resolve_all_tasks wrapped only load/expand in per-task error isolation (#219);
layers 1-5 override resolution stayed unguarded, so one task whose own YAML is
incompatible with the run — e.g. Claude-only `sdk_options` surviving a
`--type codex` override, which `CodexAgentConfig` forbids (`extra="forbid"`) —
aborted the whole coder-eval invocation with no run.json. That gap predates the
early-stop feature and is what collapsed the codex weekly.

Buffer each file's fan-out and demote a resolution failure to `skipped`, but
re-raise when every attempted task fails (a global --type/-D/repeats-cap
misconfiguration that trips every task) so the CLI still aborts cleanly instead
of producing an empty run. Early-stop arming errors continue to propagate.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@bai-uipath bai-uipath marked this pull request as ready for review July 14, 2026 23:11
@github-actions

github-actions Bot commented Jul 14, 2026

Copy link
Copy Markdown

Claude finished @bai-uipath's task in 2m 42s —— View job


Code Review in Progress

Todo List:

  • Read .github/code_review.md for review guidelines
  • Read CLAUDE.md for project conventions
  • Run git diff origin/main...HEAD to see the full diff
  • Read full context of changed files
  • Analyze changes for correctness and design
  • Check cross-file consistency
  • Perform "what's missing" analysis
  • Format and post review

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant