Skip to content

Let progressing agent tasks finish and retain operation failures - #449

Merged
Broccolito merged 14 commits into
mainfrom
codex/long-horizon-agents
Oct 24, 2026
Merged

Broccolito merged 14 commits into
mainfrom
codex/long-horizon-agents

Conversation

@Broccolito

@Broccolito Broccolito commented Oct 23, 2026 •

Copy link
Copy Markdown
Collaborator

Ordinary tasks currently stop after 100 actions or 200 tool calls even while making progress. Successful status lookups can hide failed background operations, and caught nested tool errors can disappear from the failure census. This change lets progressing tasks finish and records those outcomes separately.

Default action and tool-call limits become 0 (unlimited). Existing positive limits, user budgets and Stop/cancellation still apply. Result-aware guards permit changed successful results, distinct successful work and identified active jobs, while unchanged calls, oscillation and persistent failures warn before stopping. Transient errors get a recovery window. Recent evidence stays bounded; healthy progress clears old stall suspicions. Deliberately bounded internal workers retain their limits.

Strict version 1 io.biorouter/operation metadata represents queued/running/completed/failed/cancelled jobs independently of lookup transport. Failed jobs appear in tool cards and the census, deduplicated by extension and operation ID. Successful direct and nested inspections stay successful. Code Execution retains inner attribution for the UI/census and outer dispatch identity for loop guards. Only authentic built-in nested telemetry is trusted, and explicit operation retryability is preserved.

Caught nested failures are counted separately from failed outer calls and failed operations, retaining typed provenance even when JS handles the error. Uncaught failures and operation failures are excluded from duplicate counts.

Observed validation:

  • Actual development Electron app and Rust daemon completed 102 tool iterations / 204 successful printf calls. A separate run created 12 distinct directories; nine advisory warning nudges were recorded, without a stop.
  • Both actual connector stdio fixtures completed 12 identical active-job waits without repetition warnings, then cancelled the jobs and released both slots. Failed-job inspection stayed isError:false; repeated polls counted one failed operation. Direct/nested readers reconstructed the exact 69-byte multilingual CSV matching the managed artifacts.
  • A genuinely failed lookup caught in JS left outer execution successful and reported 1 caught nested failure / 0 failed operations. Successful failed-job inspection reported 0 caught failures / 1 failed operation. Observed reload retained these distinctions and the original error diagnostic without growing wrapper depth.
  • Finite-limit and user Stop scenarios completed; unchanged repeated calls warned and then received an automatic guard refusal clearly distinguished from a user refusal.
  • Tracked Phase 4E/4F workflow passed all nine command groups (106 observed test results) at 370b3c66b; strict evidence checks confirmed successful exits, required test names, report revision and log hashes. The developer background job completed with exit 0, and cleanup found no owned orphan processes.
  • Core and four integrations: 5,276 passed, 3 existing ignored at runtime-identical 1321c8055. Full just check-everything passed at runtime-identical 370b3c66b. The current b4f276af0 follow-up only synchronizes assembled website documentation and passed eight affected documentation/static checks; no local fulljust rerun at that head is claimed.
  • Exact-head GitHub CI passed all three operating-system Rust jobs and the complete UI suite: 1,092 files / 15,217 tests passed, 14 skipped.

These are real app/tool executions driven by a deterministic synthetic provider and synthetic jobs. No live database connectivity, clinical records or model-reasoning claim is included.

Historical CI: all 16 applicable GitHub checks passed for b4f276af0831b778b266c71f7076242110f6e132; the conditional nightly cross-build was intentionally skipped. This does not validate the newer integration head.

The #431 dependency is merged. The branch now includes current main and resolves the public-report renderer conflict by retaining content-free counts. New integration validation is recorded below; the observations above belong to their stated historical heads.

Fixes #435
Fixes #438
Fixes #441

Current-main integration at 52c496b2de3d4f051b1595cc80efde6d717286a6:

  • Resolved the public bug-report renderer conflict by retaining count-only summaries for caught nested failures and failed operations. No argument, output or raw failure message is restored to public drafts.
  • Added a regression with distinct private argument/output sentinels; all 22 issue-rendering tests passed.
  • Full just check-everything passed, including the complete Clippy script, UI type/lint/theme/contrast checks, generated schema consistency, brand/version/naming checks and registry checks.
  • Exact-head hosted CI for this new integration head must pass before merging. Prior-head app and CI observations above remain labeled by their original commits.

Base automatically changed from codex/tool-error-provenance to main October 24, 2026 04:13
@Broccolito
Broccolito marked this pull request as ready for review October 24, 2026 04:14
@Broccolito
Broccolito merged commit 1885861 into main Oct 24, 2026
17 checks passed
@Broccolito
Broccolito deleted the codex/long-horizon-agents branch October 24, 2026 05:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant