Release v0.29.0 - #99
Merged
Merged
Conversation
Pins pipelex 0.67.0, the release that carries the sprint's located error reporting, so pipelex-server can move its pipelex-api tag and its pipelex pin together. The run routes now refuse an invalid bundle before any pipe runs with the 422 validation verdict, a failed run reports its root fault at the failing pipe under STRICT as well, and a failing dry run is one located item per failing pipe; new tests pin each of those on the wire, and the OpenAPI artifact, the error docs and the changelog follow. Advances L-260927-538d31 🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- This is an auto-generated description by cubic. --> --- ## Summary by cubic Pins `pipelex` 0.67.0 with `pipelex-api` and relocks, carrying that release's located error reporting onto the run routes and docs. **Breaking** - `POST /v1/execute` and `POST /v1/start` refuse an invalid bundle before any pipe runs with a 422 `ValidateBundleError` carrying the same `validation_errors` `/v1/validate` gives, where misspelled concepts, wiring mismatches, TOML faults, and unknown models used to answer 500s or raw errors. - A failed run's problem document reports the root fault instead of the run-level wrapper: `error_type`, `title`, `type`, `error_domain`, and status are the innermost Pipelex error's, and `detail` names the failing pipe and its path. - Caller-caused run failures now answer 422 with an unredacted `detail` under STRICT, where they answered 500. - A failing dry run is one `dry_run` item per failing pipe, located at the innermost pipe that failed, instead of a single message-only item for the whole sweep. The invalid verdict's `message` is the lone item's message when there is one, and `N validation errors (first: …)` when there are several. - Validation items can carry `line`/`column` on TOML syntax errors and `model_reference`/`model_type`/`suggestions` (plus an `unsafe` suggested-fix rename when there is exactly one match) on the new `unknown_model` item. - `POST /v1/codegen` and `POST /v1/build/runner` stamp `engine_version` `0.67.0`, so a `codegen.lock` from 0.66.1 no longer matches until regenerated. **Tests and docs** - New tests pin the run-route refusals, the located dry-run items, and the root-fault reporting under VERBOSE and STRICT disclosure. - The OpenAPI artifact, error docs, and changelog document the new items and fields, the run graph's `multiplicity: true` list marker, the `fixed` contract multiplicity with its `item_count` on `/validate` (`Text[3]` reports `multiplicity: fixed`, `item_count: 3`), and that an item beside a server's own library directories never names a host file path. <sup>Written for commit 617fbda. Summary will update on new commits.</sup> <a href="https://cubic.dev/pr/Pipelex/pipelex-api/pull/98?utm_source=github" target="_blank" rel="noopener noreferrer" data-no-image-dialog="true"><picture><source media="(prefers-color-scheme: dark)" srcset="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"><source media="(prefers-color-scheme: light)" srcset="https://www.cubic.dev/buttons/review-in-cubic-light.svg"><img alt="Review in cubic" src="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"></picture></a> <!-- End of auto-generated description by cubic. --> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Release v0.29.0
Bumps version from
0.28.1to0.29.0. Promotesdev→main.Changelog
Highlights
A caught error reaches the caller with its reason and its place. A run of an invalid bundle is refused before any pipe runs with the same located validation items
/validategives, a failed run names the pipe that failed and its root fault, and a run the caller's own method refuses keeps its explanation under STRICT disclosure.Added
lineandcolumnthe parser stopped at, anunresolved_conceptitem carriesdeclared_concepts, and the newunknown_modelitem carriesmodel_reference(the reference as the bundle wrote it),model_typeandsuggestions(the model deck's close matches of that kind), with anunsaferename fix when there is exactly one. The OpenAPI artifact publishes the new fields and the newunknown_modelvalue ofPipeValidationErrorType.graph_speccarriesmultiplicity,truewhen the stuff is a list, a fixed-count one included, andnullotherwise, so a renderer can show aDocument[]input or aRecord[]output as a list. The schema also admits a positive integer, which the runtime does not emit.Changed
pipelex0.67.0 (Breaking): up from==0.66.1, exactly, the release that carries the located error reporting the entries below describe. The.pipelex/config shipped here already sits at the current schema, so no migration is required. The next step of an invalid-bundle verdict, itsuser_action.detail, now reads "Edit the bundle as each validation error says: apply its suggested fix where it has one, after confirming an unsafe one".POST /v1/executeandPOST /v1/startanswer every refusal of the bundle while it loads, before any pipe runs, with the422ValidateBundleErrorproblem document carrying the same locatedvalidation_errorsPOST /v1/validategives, which STRICT disclosure keeps. A misspelled concept or a wiring mismatch used to answer a500, a TOML fault a422without items, and an unknown model the raw model-choice error. An entry pipe the bundle does not declare still answers its ownPipeNotFoundError.error_type,title,type,error_domainand status of the innermost Pipelex error rather than the run-level wrapper's, and itsdetailopens withPipe '<pipe>' failed (<entry pipe> → … → <pipe>):, so a consumer branching onerror_type == "PipelineExecutionError"branches on the root fault's type. A run the caller's own method refuses, such as aPipeConditionwhose outcome isfail, aPipeParallelbranch whose multiplicity does not fit its field, a step missing a required input or an inline model the deck does not define, answers a422with adetailSTRICT disclosure keeps, where it answered500withAn internal error occurred.. The completion webhook'serrorcarries the same report.POST /v1/validate,POST /v1/resolve,POST /v1/codegenandPOST /v1/build/*answer any refusal of the submitted bundle, an unknown model and a pipe factory's refusal included, as a200is_valid: falseverdict with a located item, where some of them escaped as a no-verdict problem document.dry_runitem per failing pipe (Breaking): an invalid verdict'svalidation_errorscarries onedry_runitem per pipe whose dry run failed, with thepipe_code,domain_codeandsourceof the innermost pipe that failed, where it carried a single message-only item for the whole sweep. Its message is the failure's own when that is caller-facing and its title otherwise, so a configuration fault met during a dry run no longer reaches the caller through the verdict.POST /v1/codegenstampsengine_version0.67.0: the stamp is the pinnedpipelexversion, so acodegen.lockcommitted against0.66.1no longer matches until it is regenerated.POST /v1/build/runnercarries the same stamp.Fixed
sourceorfield_pathnaming its file, so STRICT disclosure no longer hands a caller a path on the host.Closes L-260927-fd4b9b
🤖 Generated with Claude Code
Summary by cubic
Releases v0.29.0, pinning
pipelex0.67.0 (up from==0.66.1) and promotingdev→mainwith the located error reporting that release carries onto the run routes and validation verdicts.Breaking
POST /v1/executeandPOST /v1/startrefuse an invalid bundle before any pipe runs with a 422ValidateBundleErrorcarrying the samevalidation_errors/v1/validategives; previously they answered 500 or the raw model-choice error.detailnames the failing pipe and its path from the entry pipe. Caller-caused run failures now answer 422 with the explanation kept under STRICT disclosure, where they answered 500 withAn internal error occurred.dry_runitem per failing pipe instead of a single message-only item for the whole sweep.POST /v1/codegenandPOST /v1/build/runnerstampengine_version0.67.0, so acodegen.lockfrom 0.66.1 no longer matches until regenerated.Added
line/columnon TOML syntax errors,declared_conceptson unresolved concepts, and the newunknown_modelitem carries the model reference, type, and close-match suggestions.graph_specio item marks list-valued stuff withmultiplicity: true.Written for commit 5958658. Summary will update on new commits.