Skip to content

Release v0.23.0 - #73

Merged
lchoquel merged 3 commits into
mainfrom
release/v0.23.0
Sep 8, 2026
Merged

lchoquel merged 3 commits into
mainfrom
release/v0.23.0

Conversation

@lchoquel

@lchoquel lchoquel commented Sep 8, 2026

Copy link
Copy Markdown
Member

Release v0.23.0

Bumps version from 0.22.0 to 0.23.0. Promotes devmain.

Two pull requests are promoted: #72 (the pipelex 0.57.0 pin and the /execute I/O artifacts) and #71 (a /release skill doc change, which publishes nothing and so carries no changelog entry). A minor rather than a patch because the pin move publishes a breaking wire-value change, marked below.

Changelog

[v0.23.0] - 2026-09-08

Added

  • POST /v1/execute carries the run's I/O artifacts beside its execution graph: pipe_output.pipe_io_artifacts groups the pipe_io_contracts, input_form and output_form that /validate produces, keyed by namespaced pipe_ref over the run library's own pipes, so a consumer rendering a run's graph can describe a data node from the run itself rather than pairing that graph with a validation of some other bundle text. It is null unless the run generated a graph with graphs_inclusion.graphspec_json on, and pipe_io_artifacts_error carries the message when the build ran and failed.

Changed

  • Pinned pipelex 0.57.0: up from ==0.56.0, exactly, for the PipeIOArtifacts carrier and its SPI transport that the /v1/execute addition above reads back onto the public wire. The .pipelex/ config schema did not move, so no migration is required.
  • The normalized crate is stamped mthds_version: "2.0.0" (Breaking): pipelex 0.57.0 moves to mthds 0.14.0, whose MTHDS_STANDARD_VERSION was cut from 1.0.0, so every crate POST /v1/resolve emits and POST /v1/build/runner normalizes carries the new stamp and a consumer comparing against 1.0.0 has to move. Crate fingerprints are unaffected — mthds_version is excluded from the hashed payload by design — but a METHODS.toml pinning the old major, such as ^1.0.0, now warns where it did not before. The MTHDS Protocol version is unchanged at 0.6.0.
  • POST /v1/codegen stamps engine_version 0.57.0: the stamp is the pinned pipelex version, so every generated artifact header and every codegen.lock this release emits differs from the previous one, and a lock committed against 0.56.0 no longer matches until it is regenerated.
  • OpenAPI artifact regenerated for the new PipeIOArtifacts schema and the pipe_io_artifacts / pipe_io_artifacts_error fields it brings to PipeOutputWire, both inherited from pipelex's PipeOutput rather than declared here. Nothing was removed and no type loosened, but PipeOutputWire publishes additionalProperties: false, so a strictly-validating client generated from the previous artifact rejects the added fields until it is regenerated.

Fixed

  • The /execute response reference documents its execution graph: docs/pipe-run.md listed tokens_usages and usage_assembly_error under pipe_output but never graph_spec or graph_assembly_error, so a caller reading the reference had no way to learn the graph was on the wire at all. Both are documented now, beside the pipe_io_artifacts pair added above, each with the configuration setting that actually gates it.
  • The /validate reference documents the output_form view: docs/pipe-validate.md still described input_form as the only supported views token and carried no field reference for output_form, which has been wrong since that view shipped in v0.22.0.

Closes L-260908-ca1ae9
Advances L-260902-3b8971

🤖 Generated with Claude Code

https://claude.ai/code/session_01KXNdmYQgikcZSza6YHrW6f


Summary by cubic

Promotes dev to main as v0.23.0, bumping the version from 0.22.0 to 0.23.0 and pinning pipelex 0.57.0. POST /v1/execute now carries the run's I/O artifacts beside its execution graph: pipe_output.pipe_io_artifacts groups the pipe_io_contracts, input_form, and output_form that /validate produces, with pipe_io_artifacts_error reporting a failed artifact build. The /execute and /validate reference docs now document fields they previously omitted, and the /release skill doc was trimmed to pipelex-api's specifics without publishing anything. Closes L-260908-ca1ae9.

Breaking changes and migrations

  • The normalized crate is stamped mthds_version: "2.0.0" instead of "1.0.0", so consumers comparing against 1.0.0 must move; crate fingerprints are unaffected.
  • POST /v1/codegen stamps engine_version 0.57.0, so a codegen.lock committed against 0.56.0 no longer matches until regenerated.
  • The OpenAPI artifact adds the PipeIOArtifacts schema and the two new fields; strictly-validating clients generated from the previous artifact reject them until regenerated.

Written for commit d473708. Summary will update on new commits.

Review in cubic

lchoquel and others added 3 commits September 8, 2026 00:11
The skill now names the workspace release play and declares only what the play reads: the Docker Hub image, the GitHub Release and the docs site the merge publishes through auto-release.yml's dispatch chain; the pyproject.toml version with its uv.lock and the OpenAPI artifact that the bump always invalidates; the gates, including the post-bump openapi-export and the unconditional strict docs build a release always trips; the named commit list; the workflows that gate a release pull request; and the particulars, from the refused pre-release form to the exact pipelex pin and the merge-commit back-merge.
Dropped the procedure the play now owns for every repo: the git status pre-flight that offered to fold uncommitted changes or stash them, the release branch created in place from the current HEAD, the numbered restatement of the changelog, bump, lock, commit and pull request steps, and the pull request body template.


Claude-Session: https://claude.ai/code/session_016F72qvy4QBZHe7XX24QmcT

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
* chore: pin pipelex 0.57.0 and carry a run's I/O artifacts on /execute

Moves this repo's pipelex pin from 0.56.0 to 0.57.0 and lands the consumer
half of the change that release enables.

The pin is breaking, in a way the OpenAPI diff does not show: pipelex 0.57.0
moves to mthds 0.14.0, whose MTHDS_STANDARD_VERSION was cut from 1.0.0 to
2.0.0, so every crate /v1/resolve emits and every crate /v1/build/runner
normalizes is now stamped mthds_version "2.0.0". Crate fingerprints are
unaffected, since mthds_version is excluded from the hashed payload by
design. The MTHDS Protocol version is unchanged at 0.6.0, so GET /v1/version
moves only its runtime_version. The .pipelex/ config schema did not move.

_pipe_output_from_run_output now rehydrates pipe_io_artifacts_dump and
pipe_io_artifacts_error inside the same strict=False model_validate that
already reverses graph_spec_dump, so the synchronous /execute response
carries the run's I/O artifacts beside its execution graph. PipeOutputWire
needed no edit: it subclasses PipeOutput, so both fields arrived by
inheritance and were already in the committed OpenAPI artifact.

docs/pipe-run.md documents the new pair and closes a pre-existing gap by
documenting graph_spec and graph_assembly_error, which the response
reference had never listed.

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

* docs: correct what actually gates the I/O artifacts, and pin the error slot

Round-1 review fixes on top of the pipelex 0.57.0 bump. Almost all of this is
prose from the previous commit that turned out to be factually wrong.

The null condition was the headline defect: the reference and the changelog
both said `pipe_io_artifacts` is null when the run assembled no graph. The real
gate is `describe_pipe_io and graph_spec is not None`, where `describe_pipe_io`
is `is_generate_graph and graphs_inclusion.graphspec_json`, so a run with
`graphspec_json = false` returns a non-null graph with null artifacts and a
null error — a state the docs described as impossible. Both settings are named
now, along with the fact that `runtime.tracing.is_enabled` does not gate
assembly at all: it selects a trace-emission backend, and the in-memory tracer
accumulates regardless.

Also corrected: the artifacts cover the run library's *own* pipes, so a graph
node contributed by a dependency package has no entry; the changelog's claim
that a client which ignored `graph_spec` sees no difference, which is wrong
because `PipeOutputWire` publishes `additionalProperties: false`; and the
omission of the `codegen` engine_version stamp, which moves to 0.57.0 and
invalidates any `codegen.lock` committed against 0.56.0.

`docs/pipe-validate.md` still described `input_form` as the only supported
`views` token and carried no field reference for `output_form`, which has been
wrong since that view shipped in v0.22.0 — so the cross-reference added for the
artifacts pointed at a page that did not document half of what it claimed.

The changelog is restructured to the workspace rule it was breaking: sections
in Added/Changed/Fixed order, one paragraph per bullet, no rationale essays.

On the test: the artifacts assertion was already load-bearing, but the
`pipe_io_artifacts_error` assertion only checked the field's own default, so
dropping that key from the rehydration would have stayed green. The stub can
now carry a failed-build message and a new test drives it end to end through
the SPI round-trip; removing the key fails that test and only that test.

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

---------

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KXNdmYQgikcZSza6YHrW6f

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Your trial has ended. Reactivate Greptile to resume code reviews.

@lchoquel
lchoquel merged commit 02ffbe8 into main Sep 8, 2026
17 checks passed
@github-actions github-actions Bot locked and limited conversation to collaborators Sep 8, 2026
@lchoquel
lchoquel deleted the release/v0.23.0 branch September 8, 2026 10:05
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