Skip to content

feature/Strict-method-faults · L-260925-648ee6 - #1268

Closed
lchoquel wants to merge 4 commits into
feature/Located-run-failurefrom
feature/Strict-method-faults
Closed

lchoquel wants to merge 4 commits into
feature/Located-run-failurefrom
feature/Strict-method-faults

Conversation

@lchoquel

@lchoquel lchoquel commented Sep 26, 2026 •

Copy link
Copy Markdown
Member

A run that fails on the caller's own method now reads its reason under STRICT disclosure: a missing required input, a PipeParallel whose branches do not fit the combined concept, and a model that only the method's inline setting names are classified at their raise sites as input-domain and caller-facing, through a new `PipelexError.as_caller_fault()`, so a hosted run answers 422 with the located message instead of "An internal error occurred." A model that the deck itself names but does not serve stays config-domain and redacted, and the failures left unclassified (template renders, function crashes, model output that does not fit its structure) say why at their raise sites.

Closes L-260925-648ee6

🤖 Generated with Claude Code


Summary by cubic

A run that fails on the caller's own method now reports its reason under STRICT disclosure instead of An internal error occurred. with a 500.

  • New PipelexError.as_caller_fault() lets the raise site classify one error as the caller's own fault (input domain, 422, caller-facing message) even when other instances of the same class are not.
  • Classified sites: a PipeParallel whose branch results do not fit its output, a pipe started without a required input, and a model reference that only the method's inline setting can have named.
  • A model the deck itself names but does not serve stays config-domain and redacted, including deck defaults and overrides written as settings, matched by the name the lookup receives.
  • Unclassified failures (model output that does not fit, PipeFunc crashes, unusable input resources, template renders, working-memory misses) now say why at their raise sites.

Migration

  • Raise sites using as_caller_fault() must ensure their message names only the caller's own method and data, since STRICT disclosure will keep it.

Closes L-260925-648ee6.

Written for commit 8869d29. Summary will update on new commits.

Review in cubic

lchoquel and others added 4 commits September 26, 2026 20:36
…aller-facing

Under STRICT disclosure a caller whose own method was wrong read "An internal
error occurred." with a 500, because the errors those mistakes raise were
neither input-domain nor caller-facing. The classes involved are also raised
for faults that are not the caller's, so the raise site classifies the one
error it raises, through the new PipelexError.as_caller_fault(): a
PipeParallel combine whose branch results do not fit its output, a pipe
started without a required input, and a model lookup for a reference the
deck neither defines nor names, which only an inline setting of the method
can have named. A model the deck itself names but does not serve stays a
redacted config error, and the failures left out (a model output that does
not fit, a PipeFunc crash, an unusable input resource, a template render, a
working-memory miss) say why where they are raised.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…coped

A value in a deck setting table that no reference parses from is now checked against the
deck's own entries instead of being taken as the caller's, and a model the deck serves only
as another type counts as undefined for the lookup that refused it. The as_caller_fault
docstring now says a wrapper inherits the domain but not the caller-facing flag.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…that model

A scalar default or override is stored as a ModelReference, which the scan of the deck's
own entries skipped, so a deck default naming a model the deployment does not serve, or
serves as another type, read as the caller's fault. The model-not-found page now says the
check at load does not tell a model of another type apart.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A default or override spelled with the handle: prefix reaches the lookup by its bare name,
so recording its raw spelling left a deck-named model reading as the caller's fault. The
alias, waterfall and preset spellings already reach the lookup as names the deck names.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@lchoquel

Copy link
Copy Markdown
Member Author

Review round 3, profile 4, bar necessity, over this PR's diff against feature/Located-run-failure at fb964b2. Reviewers: cubic, codex:review, codex:adversarial, code-review (medium).

Fixed in 8869d29: a deck's handle default or override spelled with the handle: prefix is now recorded by the name the lookup receives, so a deck-named model no longer reads as the caller's fault (cubic, verified; a gap in round 2's own change).

Rejected: the missing-input gate on a nested pipe (code-review), reachable only through a broken runtime invariant, as round 1 verified; the PipeParallel combine disclosing custom-validator text (codex:adversarial), refuted for runs that send only .mthds content, since the combine's one raise path formats pydantic errors through Pipelex's own formatter.

Deferred and handed to the sprint: a stale scalar deck default failing at setting resolution as a caller-facing ModelChoiceNotFoundError (codex:review, unverified, pre-existing and fenced with the deck-side reclassification); a duplicate list of deck-named models beside ModelManager._collect_deck_referenced_handles (cubic, unverified); a deployment's own .py structure class validator text reaching STRICT through the combine (verified residual, not reachable from .mthds content).

round 4 — bar freeze — profile 4 (derived) — the round-3 pass at profile 4 fixed under its bar; the ladder puts this pass at freeze

@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/Strict-method-faults 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