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"