v0.36.0
[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_modetoken, with the core shipping an in-processdirectorchestrator 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 openorchestration_modetoken (which orchestrator runs the job —directin core, other modes supplied by plugins) and a closedDeliveryModeenum (the wait-semantics axis —BLOCKING/FIRE_AND_FORGET). An orchestrator plugin implementsOrchestratorProtocol.runwith a requireddelivery: DeliveryModekeyword and declares asupports_fire_and_forget: boolcapability; the orchestrator registries are keyed by theorchestration_modetoken.PipelexPipeRunInputcarriesorchestration_mode+delivery. - Orchestrator-dispatched
/validate: A new per-call bundle-validator seam (BundleValidatorProtocol/BundleValidatorRegistry) makes/validatedispatch byorchestration_modethe way/startruns a pipe —directvalidates in-process, distributed modes dispatch the job to a worker — with a byte-identical verdict across backends. The coredirectplugin registers an in-processDirectBundleValidator. - Honest fire-and-forget delivery: A fire-and-forget
/startrequest is honored only when the resolved orchestrator can do genuine async; an orchestrator that cannot (e.g. the in-processdirectmode) 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_codetarget, so developers can generate graphs for a specific pipe in a bundle even when nomain_pipeis declared. This is wired through the CLI (validate bundle --pipe <target> --graph/--view),dry_run_pipeline,generate_graph_for_bundle,generate_view_for_bundle, andPipelexMTHDSProtocol.validate(extra={"graph_pipe_code": "..."}). - GraphSpec source path enrichment:
GraphSpecartifacts now include the declarationsourcefile path for pipes and concepts inpipe_registryandconcept_registry, powered byLibraryCrate.source_map. - CI/environment heartbeats: Added
WAIT_WITH_HEARTBEATandRUN_WITH_HEARTBEATMakefile macros that emit a periodic heartbeat (default every 20s) to prevent CI runners and sandboxes from timing out during long tasks; applied to theagent-test,pyright,mypy, andpylinttargets. - Developer guidelines: Expanded
python_standards.mdwith rules on filesystem paths (pathlib.Pathoverstr/os.path), data-holder shapes (NamedTuplevs.pydantic.dataclassesvs.BaseModel), keyword-only arguments (enforced viamake cko/make fko), and custom exception placement (exceptions.pyor<topic>_exceptions.py).
Changed
dry_run_pipelinereturn shape:dry_run_pipelinenow returns the fully resolved, domain-qualified pipe reference alongside theGraphSpec.- Graph viewer assets bumped: The CDN-pinned
@pipelex/mthds-uigraph viewer used by the generated ReactFlow HTML is upgraded from0.6.4to0.11.0, with refreshed Subresource Integrity hashes.0.11.0addsPipeStructureto the viewer's recognized pipe types, so graphs containing aPipeStructurenode (e.g. from thepreliminary_textstructuring 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 missingmain_pipeerror when a valid pipe is targeted with--pipe. - Developer guidelines typo: Fixed a minor spacing typo in
pytest_standards.md.
What's Changed
- Add heartbeat progress to long-running make targets by @lchoquel in #1005
- Improve graph rendering and validation pipeline handling by @lchoquel in #1004
- Refactor/plugins 5 by @lchoquel in #1006
- Consolidate by @lchoquel in #1008
- Cleanup: prune stale wip docs, dead config keys, and refresh error-model docs by @lchoquel in #1009
- Update graph viewer assets to mthds-ui 0.10.0 by @lchoquel in #1010
- Release v0.36.0 by @lchoquel in #1011
Full Changelog: v0.35.1...v0.36.0