From 769e7420a3c0b8624d534ee0ffa85635192353f9 Mon Sep 17 00:00:00 2001 From: Louis Choquel Date: Fri, 16 Oct 2026 06:03:22 +0200 Subject: [PATCH 1/2] =?UTF-8?q?feature/Text-stats-import-path=20=C2=B7=20L?= =?UTF-8?q?-261016-eaf5d9=20(#21)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `text_stats` names its PipeFunc function by import path from the package root, `text_stats_funcs.text_stats_report`, which pipelex requires from the release after 0.86.1 on. The changelog marks it breaking, so the next library release is v0.2.0, and the release guidance now counts a package that stops running on a Pipelex release the previous tag ran on as breaking. Advances L-261016-eaf5d9 Advances L-261012-989e43 🤖 Generated with [Claude Code](https://claude.com/claude-code) --- ## Summary by cubic Renames the `text_stats` step's function to its import path (`text_stats_funcs.text_stats_report`) so it runs on Pipelex releases after 0.86.1, which require that form and refuse the flat name; Pipelex 0.86.1 and earlier refuse the new name, making the change breaking and the next release a minor (`v0.2.0`). - Updates release guidance so a package that stops running on a Pipelex release its previous tag ran on counts as breaking. - Records the change in the changelog with a note to run `text_stats` at `@v0.1.7` or earlier on older Pipelex releases. Written for commit 4557a69b2c304b4df468978570f1011bf98251fc. Summary will update on new commits. View guided diff Co-authored-by: Claude Opus 5.5 --- .claude/skills/release/SKILL.md | 2 +- CHANGELOG.md | 6 ++++++ docs/releasing.md | 2 +- methods/text_stats/text_stats.mthds | 2 +- 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/.claude/skills/release/SKILL.md b/.claude/skills/release/SKILL.md index a2ea6d2..e98e571 100644 --- a/.claude/skills/release/SKILL.md +++ b/.claude/skills/release/SKILL.md @@ -71,7 +71,7 @@ Both act only on a head matching `^release/v([0-9]+\.[0-9]+\.[0-9]+)$` and pass ## Particulars - **`main` is the default branch, and it moves between releases.** An address without a tag runs `main` at its head, so `main` is fast-forwarded to `dev` when a change should reach those callers before a tag does, and `origin/main..dev` can then be empty while work is still unreleased. What a release carries is everything since the last tag: in the play's step 1, read `git -C
log $(git -C
describe --tags --abbrev=0)..dev --oneline` rather than `origin/main..dev`. The release pull request still targets `main` and still merges with a merge commit, whether or not `main` had already caught up. -- **What counts as breaking.** The bump follows the play's pre-1.0 rule, read for a method library: a change that breaks a caller moving an address from the previous tag to this one is a **minor** — a package renamed or removed, an exported pipe renamed, removed or no longer exported, a `main_pipe` changed, or the inputs or output concept of an exported pipe changed. Everything else is a **patch**: a new package, a new pipe, a better prompt, a model moved to a deck alias, a sample fixed. `v0.1.1`, which added `text_stats`, was a patch. +- **What counts as breaking.** The bump follows the play's pre-1.0 rule, read for a method library: a change that breaks a caller moving an address from the previous tag to this one is a **minor** — a package renamed or removed, an exported pipe renamed, removed or no longer exported, a `main_pipe` changed, the inputs or output concept of an exported pipe changed, or a package that stops running on a Pipelex release the previous tag ran on. Everything else is a **patch**: a new package, a new pipe, a better prompt, a model moved to a deck alias, a sample fixed. `v0.1.1`, which added `text_stats`, was a patch. - **The changelog entry speaks to a caller who pins a tag.** Name the package and the pipe or the sample, and say what running it at the new tag changes. When a change makes something stop resolving at older tags, such as a sample link that moved in `v0.1.2`, say so and name the tag to run instead. The headings carry the `v`, `## [vX.Y.Z] - YYYY-MM-DD`, which is what `changelog-check.yml` greps for and what `github-release.yml` slices the Release notes from. - **No pre-release form.** Both pull-request checks skip a head like `release/v0.2.0-rc.1` rather than failing it, and `github-release.yml` tags whatever the manifests declare, so an `rc` would ship as a tag any address could pin. Ship a plain `X.Y.Z`, which is also the tag form the address grammar recommends. - **The tags are annotated.** `v0.1.0` to `v0.1.2` were created by hand, each with a one-line summary as its message; from the release that first carries `github-release.yml`, the workflow creates them with the message `Library snapshot vX.Y.Z`. A lightweight `v0.0.1` also exists, on a commit after `v0.1.0`; `git describe --tags` from `dev` answers the nearest release tag and is not misled by it. diff --git a/CHANGELOG.md b/CHANGELOG.md index 89ae8d5..e77cca8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## [Unreleased] + +### Changed + +- **`text_stats` names its function by import path (Breaking)**: the `PipeFunc` step `analyze_text` names its Python function `text_stats_funcs.text_stats_report`, its import path from the package's root, instead of `text_stats_report`, and the report it writes is unchanged. The package now runs only on a Pipelex release later than 0.86.1, which names a `PipeFunc`'s function by import path and refuses a flat name, while Pipelex 0.86.1 and earlier refuse the new name as a function missing from their registry. On those older releases, run `text_stats` at `@v0.1.7` or earlier. + ## [v0.1.7] - 2026-10-06 ### Changed diff --git a/docs/releasing.md b/docs/releasing.md index 9891ca5..7ef12c7 100644 --- a/docs/releasing.md +++ b/docs/releasing.md @@ -13,7 +13,7 @@ The `v` prefix appears in branch names, changelog headings and tags, never in a ## What counts as breaking -The library is pre-1.0, so a breaking change is a **minor** and everything else a **patch**. A change is breaking when it breaks a caller who moves an address from the previous tag to the new one: a package renamed or removed, an exported pipe renamed, removed or no longer exported, a `main_pipe` changed, or the inputs or output concept of an exported pipe changed. A new package, a new pipe, a better prompt, a model moved to a deck alias or a fixed sample is a patch. Pre-release forms (`-rc.1`) are not used: a tag is something any address can pin. +The library is pre-1.0, so a breaking change is a **minor** and everything else a **patch**. A change is breaking when it breaks a caller who moves an address from the previous tag to the new one: a package renamed or removed, an exported pipe renamed, removed or no longer exported, a `main_pipe` changed, the inputs or output concept of an exported pipe changed, or a package that stops running on a Pipelex release the previous tag ran on. A new package, a new pipe, a better prompt, a model moved to a deck alias or a fixed sample is a patch. Pre-release forms (`-rc.1`) are not used: a tag is something any address can pin. ## Cutting a release diff --git a/methods/text_stats/text_stats.mthds b/methods/text_stats/text_stats.mthds index 1211297..09e88b2 100644 --- a/methods/text_stats/text_stats.mthds +++ b/methods/text_stats/text_stats.mthds @@ -7,4 +7,4 @@ type = "PipeFunc" description = "Compute deterministic statistics about the input text (counts, averages, top words, reading time) and format them as a Markdown report." inputs = { text = "Text" } output = "Text" -function_name = "text_stats_report" +function_name = "text_stats_funcs.text_stats_report" From 7460be9655530d8b44b94a0662a7979de256cecd Mon Sep 17 00:00:00 2001 From: Louis Choquel Date: Fri, 16 Oct 2026 12:00:07 +0200 Subject: [PATCH 2/2] Release v0.2.0 Co-Authored-By: Claude Opus 5.5 --- CHANGELOG.md | 4 ++-- methods/cv_analyzer/METHODS.toml | 2 +- methods/doc_summarizer/METHODS.toml | 2 +- methods/documents/METHODS.toml | 2 +- methods/image_card/METHODS.toml | 2 +- methods/image_generation/METHODS.toml | 2 +- methods/image_generation_fast/METHODS.toml | 2 +- methods/invoice_extraction/METHODS.toml | 2 +- methods/slide_designer/METHODS.toml | 2 +- methods/table_extraction/METHODS.toml | 2 +- methods/text_stats/METHODS.toml | 2 +- methods/tweet_optimizer/METHODS.toml | 2 +- 12 files changed, 13 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e77cca8..eceaf4c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,10 +1,10 @@ # Changelog -## [Unreleased] +## [v0.2.0] - 2026-10-16 ### Changed -- **`text_stats` names its function by import path (Breaking)**: the `PipeFunc` step `analyze_text` names its Python function `text_stats_funcs.text_stats_report`, its import path from the package's root, instead of `text_stats_report`, and the report it writes is unchanged. The package now runs only on a Pipelex release later than 0.86.1, which names a `PipeFunc`'s function by import path and refuses a flat name, while Pipelex 0.86.1 and earlier refuse the new name as a function missing from their registry. On those older releases, run `text_stats` at `@v0.1.7` or earlier. +- **`text_stats` names its function by import path (Breaking)**: the `PipeFunc` step `analyze_text` names its Python function `text_stats_funcs.text_stats_report`, its import path from the package's root, instead of `text_stats_report`, and the report it writes is unchanged. The package now runs only on Pipelex 0.87.0 or later, which names a `PipeFunc`'s function by import path and refuses a flat name, while Pipelex 0.86.1 and earlier refuse the new name as a function missing from their registry. On those older releases, run `text_stats` at `@v0.1.7` or earlier. ## [v0.1.7] - 2026-10-06 diff --git a/methods/cv_analyzer/METHODS.toml b/methods/cv_analyzer/METHODS.toml index 7e90f63..37042da 100644 --- a/methods/cv_analyzer/METHODS.toml +++ b/methods/cv_analyzer/METHODS.toml @@ -2,7 +2,7 @@ name = "cv_analyzer" display_name = "CV Analyzer" address = "github.com/Pipelex/methods" -version = "0.1.7" +version = "0.2.0" description = "End-to-end candidate screening: extract a CV and a job offer, analyze the match, then either generate tailored interview questions or draft a courteous refusal email." authors = ["Evotis S.A.S"] license = "MIT" diff --git a/methods/doc_summarizer/METHODS.toml b/methods/doc_summarizer/METHODS.toml index 387bcd2..53611e5 100644 --- a/methods/doc_summarizer/METHODS.toml +++ b/methods/doc_summarizer/METHODS.toml @@ -2,7 +2,7 @@ name = "doc_summarizer" display_name = "Document Summarizer" address = "github.com/Pipelex/methods" -version = "0.1.7" +version = "0.2.0" description = "Deep document summarization: profile the document and extract importance-ranked key points in parallel, then synthesize a structured summary with themes and open questions." authors = ["Evotis S.A.S"] license = "MIT" diff --git a/methods/documents/METHODS.toml b/methods/documents/METHODS.toml index 5a5c7d8..5ec422b 100644 --- a/methods/documents/METHODS.toml +++ b/methods/documents/METHODS.toml @@ -2,7 +2,7 @@ name = "documents" display_name = "Documents" address = "github.com/Pipelex/methods" -version = "0.1.7" +version = "0.2.0" description = "Document extraction methods for text, images, and page views." authors = ["Evotis S.A.S"] license = "MIT" diff --git a/methods/image_card/METHODS.toml b/methods/image_card/METHODS.toml index 07679ec..4bd1ca0 100644 --- a/methods/image_card/METHODS.toml +++ b/methods/image_card/METHODS.toml @@ -2,7 +2,7 @@ name = "image_card" display_name = "Image Card" address = "github.com/Pipelex/methods" -version = "0.1.7" +version = "0.2.0" description = "Generate an image from a text description with a small, fast image model, and present the image and its description side by side in an HTML page." authors = ["Evotis S.A.S"] license = "MIT" diff --git a/methods/image_generation/METHODS.toml b/methods/image_generation/METHODS.toml index 95320bc..e4fbacd 100644 --- a/methods/image_generation/METHODS.toml +++ b/methods/image_generation/METHODS.toml @@ -2,7 +2,7 @@ name = "image_generation" display_name = "Image Generation" address = "github.com/Pipelex/methods" -version = "0.1.7" +version = "0.2.0" description = "Image generation methods: render a description directly, or refine it into an optimized image prompt first." authors = ["Evotis S.A.S"] license = "MIT" diff --git a/methods/image_generation_fast/METHODS.toml b/methods/image_generation_fast/METHODS.toml index 6ec1d18..e7a0b51 100644 --- a/methods/image_generation_fast/METHODS.toml +++ b/methods/image_generation_fast/METHODS.toml @@ -2,7 +2,7 @@ name = "image_generation_fast" display_name = "Image Generation Fast" address = "github.com/Pipelex/methods" -version = "0.1.7" +version = "0.2.0" description = "Fast image generation: render a text description directly with a small image generation model." authors = ["Evotis S.A.S"] license = "MIT" diff --git a/methods/invoice_extraction/METHODS.toml b/methods/invoice_extraction/METHODS.toml index 47407aa..5a689ca 100644 --- a/methods/invoice_extraction/METHODS.toml +++ b/methods/invoice_extraction/METHODS.toml @@ -2,7 +2,7 @@ name = "invoice_extraction" display_name = "Invoice Extraction" address = "github.com/Pipelex/methods" -version = "0.1.7" +version = "0.2.0" description = "Extract structured invoice data from a document: classify each page as bill or receipt, then extract amounts, VAT, vendor and buyer details using both the OCR text and the page view." authors = ["Evotis S.A.S"] license = "MIT" diff --git a/methods/slide_designer/METHODS.toml b/methods/slide_designer/METHODS.toml index f6eb3cc..e0299af 100644 --- a/methods/slide_designer/METHODS.toml +++ b/methods/slide_designer/METHODS.toml @@ -2,7 +2,7 @@ name = "slide_designer" display_name = "Slide Designer" address = "github.com/Pipelex/methods" -version = "0.1.7" +version = "0.2.0" description = "Turn a rough slide-deck brief into design proposals: polish the brief, generate multiple visual themes, render a mockup image for each, and compose an HTML report presenting them all." authors = ["Evotis S.A.S"] license = "MIT" diff --git a/methods/table_extraction/METHODS.toml b/methods/table_extraction/METHODS.toml index f4c74cf..4725865 100644 --- a/methods/table_extraction/METHODS.toml +++ b/methods/table_extraction/METHODS.toml @@ -2,7 +2,7 @@ name = "table_extraction" display_name = "Table Extraction" address = "github.com/Pipelex/methods" -version = "0.1.7" +version = "0.2.0" description = "Extract a data table from a screenshot into faithful HTML, then review the result against the image to correct text and formatting." authors = ["Evotis S.A.S"] license = "MIT" diff --git a/methods/text_stats/METHODS.toml b/methods/text_stats/METHODS.toml index 54e1a7a..2963b7d 100644 --- a/methods/text_stats/METHODS.toml +++ b/methods/text_stats/METHODS.toml @@ -2,7 +2,7 @@ name = "text_stats" display_name = "Text Stats" address = "github.com/Pipelex/methods" -version = "0.1.7" +version = "0.2.0" description = "Deterministic text statistics computed in pure Python: character, word, sentence and paragraph counts, vocabulary richness, most frequent words, and estimated reading and speaking times, reported as Markdown." authors = ["Evotis S.A.S"] license = "MIT" diff --git a/methods/tweet_optimizer/METHODS.toml b/methods/tweet_optimizer/METHODS.toml index 941e88e..5051608 100644 --- a/methods/tweet_optimizer/METHODS.toml +++ b/methods/tweet_optimizer/METHODS.toml @@ -2,7 +2,7 @@ name = "tweet_optimizer" display_name = "Tweet Optimizer" address = "github.com/Pipelex/methods" -version = "0.1.7" +version = "0.2.0" description = "Optimize a tech tweet: score the draft for fluffiness, cringiness, humblebragging and vagueness, then rewrite it in your own writing style following Twitter/X best practices." authors = ["Evotis S.A.S"] license = "MIT"