Skip to content

feature/Refusal-shows-server-message · L-260926-b72417 - #45

Merged
lchoquel merged 8 commits into
devfrom
feature/Refusal-shows-server-message
Sep 27, 2026
Merged

lchoquel merged 8 commits into
devfrom
feature/Refusal-shows-server-message

Conversation

@lchoquel

@lchoquel lchoquel commented Sep 26, 2026 •

Copy link
Copy Markdown
Member

A run the runner refuses, at /v1/start in durable mode or /v1/execute in blocking mode, is now classified from its problem document instead of by HTTP status alone. The hint is the runtime's user action (except a stale wait_and_retry promise or the unknown-kind fallback), a retry line appears only when retryable says so, and the method's validation items go in the technical details with an unknown model's reference and the deck's suggestions. An answer with no problem document keeps today's wording. This PR is stacked on pipelex-method-apps#44 and shares its next-step and retry helpers with the failed-run classification.

Closes L-260926-b72417

🤖 Generated with Claude Code


Summary by cubic

A run the runner refuses — at /v1/start in durable mode or /v1/execute in blocking mode — is now classified from its problem document instead of by HTTP status alone. The runtime's user_action.detail becomes the hint (except wait_and_retry and unknown kinds), a retry line appears only when retryable says so, and the method's validation items — with an unknown model's reference and the model deck's suggestions — are listed ahead of the raw body in technical details. An answer with no problem document keeps today's wording, and the next-step and retry helpers are shared with the failed-run classification.

Closes L-260926-b72417.

Written for commit 0de7e93. Summary will update on new commits.

Review in cubic

lchoquel and others added 7 commits September 26, 2026 19:08
`pipelex-method-apps` takes `@pipelex/sdk` from `pipelex-sdk-js`'s feature/Failed-run-report-js, written at the dependency entry of webapp-js/package.json with the lock regenerated in the same commit (P1). The collapse before this branch merges is `wt unpin _pipelex-method-apps--failed-run-reason-shown pipelex-sdk-js --to <version>` (P2, P7).
…rom its stored report

`pollDurableRun` now puts the run's stored error report (the result lookup's,
else the status read's) on the `RunFailedError` it classifies, and passes the
status read's `finished_at`. `classifyRunFailed` reads the display from the
report: its title in the headline, its message with the provider's raw text cut
out, its user action's detail as the hint, its `retryable` verdict as a retry
line, and a support line with the run id, the error type and when the run
ended. A run with no report keeps the SDK's sentence. `<ErrorDisplay>` renders
the retry line and the support line, and `docs/errors.md` describes where a
failed run's reason comes from.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FigDssaJrvNcmbnBedi7oq
A `wait_and_retry` user action says the system will retry automatically,
which is untrue of a run that has ended: nothing retries it. The failed-run
display now drops that advice and lets the retry line say what to do.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FigDssaJrvNcmbnBedi7oq
`classifyResponse` now reads a runner refusal at /v1/start or /v1/execute
from its problem document: the user action's detail becomes the hint in
place of the one the HTTP status chose, the `retryable` verdict becomes the
retry line, and the method's validation items, with an unknown model's
reference and the model deck's suggestions, are listed in the technical
details ahead of the raw body. An answer carrying none of these keeps its
old classification. The next-step and retry helpers are shared with the
failed-run classification, and docs/errors.md gains a section on refusals.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
When no cause advised anything, the runtime fills in an `unknown` user
action ("Check pipe_stack to identify which pipe failed"), which a verbose
self-hosted runner sends on /v1/execute. It points at a field the display
never shows, so `nextStepOf` now drops the `unknown` kind as it drops
`wait_and_retry`, on refusals and failed runs alike.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
`pipelex-method-apps` takes `@pipelex/sdk` from the registry again, with the lock regenerated in the same commit. The pin stood at 98260ff0 of `pipelex-sdk-js` (P7).
… onto 0.26.0

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@lchoquel
lchoquel changed the base branch from feature/Failed-run-reason-shown to dev September 27, 2026 10:49
…ady in this branch

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@lchoquel
lchoquel merged commit a188788 into dev Sep 27, 2026
3 checks passed
@lchoquel
lchoquel deleted the feature/Refusal-shows-server-message branch September 27, 2026 10:52
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