Skip to content

feature/Located-run-failure · L-260925-e5f874 - #1265

Closed
lchoquel wants to merge 4 commits into
devfrom
feature/Located-run-failure
Closed

lchoquel wants to merge 4 commits into
devfrom
feature/Located-run-failure

Conversation

@lchoquel

@lchoquel lchoquel commented Sep 26, 2026 •

Copy link
Copy Markdown
Member

A run failure's report now carries its root fault's identity and own message, prefixed with the failing pipe and its path, so a local run, a bridged run and a report recovered from a worker all agree. The pipe router locates every failure (a foreign exception becomes a PipelexUnexpectedError, and a host router adapts its transport through the new _as_pipelex_failure hook), and a programming bug still propagates out of dry runs. The local-deck advice leaves ModelNotFoundError's message for the model panel that pipelex run now renders.

Closes L-260925-e5f874

🤖 Generated with Claude Code


Summary by cubic

Run failures now report their root fault — the innermost Pipelex error behind the failure — located at the failing pipe, so a local run, a bridged run, and a report recovered from a worker all report the same failure.

Breaking changes

  • The report's error_type, title, type_uri, caller-facing flag, and message are now the root fault's, with the message prefixed by the failing pipe and its path (Pipe 'summarize' failed (two_steps → summarize): …); pipe_code and pipe_stack name the failing pipe instead of the entry pipe.
  • The pipe router locates every failure as a PipeRouterError chained to it; a foreign exception first becomes a PipelexUnexpectedError, and a host router adapts its transport through the new _as_pipelex_failure hook. A programming bug now propagates out of dry runs instead of reading as the bundle's failure, and the location walk stops at foreign exceptions so one raised from an earlier located failure is located where it happened rather than re-raised raw.
  • The agent CLI adds cause_type and cause_message fields naming the root fault; ModelNotFoundError's message states the fact only, with the local-deck remedy moved to the model panel that pipelex run now renders.

Closes L-260925-e5f874.

Written for commit 004c6dd. Summary will update on new commits.

Review in cubic

lchoquel and others added 4 commits September 26, 2026 18:29
The pipe router now locates every failure of the pipe it runs as a
PipeRouterError chained to it, turning a foreign exception into a
PipelexUnexpectedError first, and exposes an _as_pipelex_failure hook for
host routers. PipeRouterError and PipelineExecutionError both report the
root fault's identity, caller-facing flag and own message, prefixed with
the failing pipe and its path, so a run reports the same failure in
process, through a bridge or from a recovered worker report.

ModelNotFoundError's message states the fact only; the local-deck remedy
moves to the model panel, which `pipelex run` now renders for a run
failure. The agent CLI's cause fields name the root fault.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FigDssaJrvNcmbnBedi7oq
A host router whose transport packed the location found on the far side
now hands back a PipeRouterError rebuilt over the root fault's report,
which the router raises untouched instead of locating it a second time.
The hook's contract says the far side packs the root fault's own report,
never a located one.

A foreign exception that the router located no longer reads as the
bundle's failure: the bundle validator's sweep and the validate graph
step find it with find_foreign_fault() and let it propagate. validate
bundle's graph and view arms report the root fault's cause fields.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FigDssaJrvNcmbnBedi7oq
A foreign exception raised from an older PipelexError no longer lets the
walk reach that older error: the stand-in is the fault, so a programming
bug still propagates out of dry runs. A PipelexError raised from one of
its own class restates the fault with added context (a size-tier remedy,
an item index), so the outer one is reported.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FigDssaJrvNcmbnBedi7oq
find_failure_location walked past a foreign exception to an older
PipeRouterError, so a foreign exception raised from an earlier located
failure was treated as located, re-raised raw and escaped the runner.
It now stops at the first non-Pipelex exception, as the root-fault walk
does, and the router converts and locates the new failure where it
happened.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FigDssaJrvNcmbnBedi7oq
@lchoquel

Copy link
Copy Markdown
Member Author

Superseded by #1276, which carries this branch's commits and landed on dev as a7924f6.

@lchoquel lchoquel closed this Sep 27, 2026
@github-actions github-actions Bot locked and limited conversation to collaborators Sep 27, 2026
@lchoquel
lchoquel deleted the feature/Located-run-failure branch September 27, 2026 16:46
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant