Skip to content

v0.36.0

Choose a tag to compare

@github-actions github-actions released this 30 Jun 14:51
1b26b3f

[v0.36.0] - 2026-06-30

Highlights

  • Orchestration plugin SPI — Pipelex opens its execution path to pluggable orchestrators: the orchestrator that runs a job is now chosen per call by an open orchestration_mode token, with the core shipping an in-process direct orchestrator and the contract ready for plugins to supply distributed backends.
  • Orchestration plugin contract (orchestration_mode + DeliveryMode): The contract is built on two independent axes — an open orchestration_mode token (which orchestrator runs the job — direct in core, other modes supplied by plugins) and a closed DeliveryMode enum (the wait-semantics axis — BLOCKING / FIRE_AND_FORGET). An orchestrator plugin implements OrchestratorProtocol.run with a required delivery: DeliveryMode keyword and declares a supports_fire_and_forget: bool capability; the orchestrator registries are keyed by the orchestration_mode token. PipelexPipeRunInput carries orchestration_mode + delivery.
  • Orchestrator-dispatched /validate: A new per-call bundle-validator seam (BundleValidatorProtocol / BundleValidatorRegistry) makes /validate dispatch by orchestration_mode the way /start runs a pipe — direct validates in-process, distributed modes dispatch the job to a worker — with a byte-identical verdict across backends. The core direct plugin registers an in-process DirectBundleValidator.
  • Honest fire-and-forget delivery: A fire-and-forget /start request is honored only when the resolved orchestrator can do genuine async; an orchestrator that cannot (e.g. the in-process direct mode) returns a 4xx rather than running the job to completion and falsely acking.

Added

  • Explicit graph targets for validation: Graph generation during validation and dry runs now accepts an explicit pipe_code target, so developers can generate graphs for a specific pipe in a bundle even when no main_pipe is declared. This is wired through the CLI (validate bundle --pipe <target> --graph/--view), dry_run_pipeline, generate_graph_for_bundle, generate_view_for_bundle, and PipelexMTHDSProtocol.validate(extra={"graph_pipe_code": "..."}).
  • GraphSpec source path enrichment: GraphSpec artifacts now include the declaration source file path for pipes and concepts in pipe_registry and concept_registry, powered by LibraryCrate.source_map.
  • CI/environment heartbeats: Added WAIT_WITH_HEARTBEAT and RUN_WITH_HEARTBEAT Makefile macros that emit a periodic heartbeat (default every 20s) to prevent CI runners and sandboxes from timing out during long tasks; applied to the agent-test, pyright, mypy, and pylint targets.
  • Developer guidelines: Expanded python_standards.md with rules on filesystem paths (pathlib.Path over str/os.path), data-holder shapes (NamedTuple vs. pydantic.dataclasses vs. BaseModel), keyword-only arguments (enforced via make cko/make fko), and custom exception placement (exceptions.py or <topic>_exceptions.py).

Changed

  • dry_run_pipeline return shape: dry_run_pipeline now returns the fully resolved, domain-qualified pipe reference alongside the GraphSpec.
  • Graph viewer assets bumped: The CDN-pinned @pipelex/mthds-ui graph viewer used by the generated ReactFlow HTML is upgraded from 0.6.4 to 0.11.0, with refreshed Subresource Integrity hashes. 0.11.0 adds PipeStructure to the viewer's recognized pipe types, so graphs containing a PipeStructure node (e.g. from the preliminary_text structuring path) render instead of showing the GraphSpec validation error screen.

Fixed

  • Graph generation on bundles without a main_pipe: Requesting a graph or view via the CLI no longer fails with a missing main_pipe error when a valid pipe is targeted with --pipe.
  • Developer guidelines typo: Fixed a minor spacing typo in pytest_standards.md.

What's Changed

Full Changelog: v0.35.1...v0.36.0