Repository navigation
Release v0.17.0 - #152
Merged
Merged
Release v0.17.0#152
Conversation
The release skill still described the Mistral Vibe build from before the native plugin, as a tree naming no version with no manifest to stamp. Since the native plugin, `make build` stamps `pipelex-vibe/plugin.json` with the target's version, which the 0.16.0 release restamped, so the skill now lists it among the generated manifests, the release commit's files and the landing's readings. Closes L-261019-2584f7 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01AuJxXWGBBhCH6aLdcCduJx <!-- This is an auto-generated description by cubic. --> --- ## Summary by cubic Updates the release skill to reflect the Mistral Vibe native plugin, whose `make build` now stamps `pipelex-vibe/plugin.json` with the target's version. The skill previously described the Vibe tree as carrying no version and no manifest; it now lists the Vibe manifest among the generated manifests, the release commit's files, and the landing's readings, matching what the 0.16.0 release already produced. <sup>Written for commit bf0411e. Summary will update on new commits.</sup> <a href="https://cubic.dev/pr/Pipelex/pipelex-plugins/pull/143?utm_source=github" target="_blank" rel="noopener noreferrer" data-no-image-dialog="true"><picture><source media="(prefers-color-scheme: dark)" srcset="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"><source media="(prefers-color-scheme: light)" srcset="https://www.cubic.dev/buttons/review-in-cubic-light.svg"><img alt="View guided diff" src="https://www.cubic.dev/buttons/review-in-cubic-light.svg"></picture></a> <!-- End of auto-generated description by cubic. --> Co-authored-by: Claude Opus 5.5 <[email protected]>
pipelex-integrate's call sites and their `prepareInputs` pointers now send the method's tree as the MTHDS `files` map, in TypeScript and in Python, and the skill stops when a `METHODS.toml` lies above the bundle. The validation hook is re-vendored onto @pipelex/sdk 0.48.1, which sends the tree and keeps files that look like keys or credentials on the machine. The hook docs, the README and the hook tests say exactly what travels and what stays home. Closes L-261017-9bdb38 Closes L-260913-6cac17 Leaves L-261022-e15b5d 🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- This is an auto-generated description by cubic. --> --- ## Summary by cubic `pipelex-integrate` call sites now send the method's whole bundle directory as the method's tree (`directory: BUNDLE_DIR` in TypeScript, `tree=BUNDLE_DIR` in Python) instead of a `.mthds` files list plus a template `resources` map, so files a bundle's `PipeDocGen` steps name travel in both languages. The validation hook is re-vendored onto `@pipelex/sdk` 0.48.1, which sends the same tree and keeps key- or credential-like files on the machine. The skill stops when a `METHODS.toml` lies above the bundle. **Migration** - Both SDK floors move to 0.48.0; `mthds_contents`, `resources`, and the call site's template-file helpers are gone. - A refresh raises the pin and rewrites a module that still sends the retired fields. - Python projects on an older `pipelex-sdk` keep the old module, and the skill stops over a templated bundle there. **Hook and drift gates** - The hook's validate stage sends the edited method as the tree after a version handshake, and files that look like keys or credentials stay home under a non-blocking note. - Both gates list the tree with the MTHDS standard's lister; a `METHODS.toml` above `bundle_dir` roots the tree there, reported with cures instead of a refresh hint. - The TypeScript gate finds that lister beside `@pipelex/sdk` and, under Yarn Plug'n'Play, resolves it through `pnpapi`. - Hook docs, the README, and the tests pin exactly what travels and what stays home. <sup>Written for commit 54fe264. Summary will update on new commits.</sup> <a href="https://cubic.dev/pr/Pipelex/pipelex-plugins/pull/144?utm_source=github" target="_blank" rel="noopener noreferrer" data-no-image-dialog="true"><picture><source media="(prefers-color-scheme: dark)" srcset="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"><source media="(prefers-color-scheme: light)" srcset="https://www.cubic.dev/buttons/review-in-cubic-light.svg"><img alt="View guided diff" src="https://www.cubic.dev/buttons/review-in-cubic-light.svg"></picture></a> <!-- End of auto-generated description by cubic. --> --------- Co-authored-by: Claude Opus 5.5 <[email protected]>
The run and inputs skills now look among the team's files with the workshop's `mthds_list_files` before asking for a file, and pass a chosen file by its storage address instead of downloading and uploading it again. When the factory makes synthetic test files for a saved method, the inputs skill uploads them as that method's test files, falling back to ordinary uploads when the folder is not linked to a saved method or the workshop is older. A shared reference holds the lookup rules for both skills, including refusing an Office file for an input that reads only PDFs and pictures. Closes L-261022-e88cbf Advances L-261021-a262bf Leaves L-261023-4fea78 🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- This is an auto-generated description by cubic. --> --- ## Summary by cubic `pipelex-inputs` and `pipelex-run` now look among the team's files before asking the user for one, passing the chosen file by its `pipelex-storage://` address so nothing is re-uploaded. - Adds a shared `team-files.md` reference that both skills read on `mthds_list_files`, covering the organization's uploads, a method's test files, and run outputs. - Uploads synthetic files with `kind: "test"` so they become the saved method's test files; a Mixed preparation takes two calls, and workshops that don't acknowledge the kind fall back to asking for files as before. - Refuses an Office file for a `Document` input that reads only PDFs and pictures, and points the by-id lookup at the `.pipelex/method.json` link location. <sup>Written for commit ea2c1fa. Summary will update on new commits.</sup> <a href="https://cubic.dev/pr/Pipelex/pipelex-plugins/pull/145?utm_source=github" target="_blank" rel="noopener noreferrer" data-no-image-dialog="true"><picture><source media="(prefers-color-scheme: dark)" srcset="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"><source media="(prefers-color-scheme: light)" srcset="https://www.cubic.dev/buttons/review-in-cubic-light.svg"><img alt="View guided diff" src="https://www.cubic.dev/buttons/review-in-cubic-light.svg"></picture></a> <!-- End of auto-generated description by cubic. --> --------- Co-authored-by: Claude Opus 5.5 <[email protected]>
The test documents `/pipelex-inputs` and `/pipelex-synthetic-inputs` leave beside a bundle now mark themselves out of the method's tree: `inputs/` gets a `.gitignore` holding `*`, and `inputs.prepared.json` an anchored line in the bundle's own `.gitignore`, which the tree lister reads where it never reads one above the tree root. Since every surface sends a method's whole tree, these files were uploaded on every check and run and stored by every catalog save; `/pipelex-run` now marks an older bundle's `inputs/` at its next run, a lab case's committed synthetic files stay in git, and the guard's remaining ignore entries are anchored with a leading slash. Closes L-261022-b695eb Closes L-260924-9fd751 🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- This is an auto-generated description by cubic. --> --- ## Summary by cubic Keeps the files `pipelex-inputs` and `pipelex-synthetic-inputs` leave beside a bundle out of the method's tree, so they stop being uploaded on every check and run and stored by every catalog save. **Behavior** - `pipelex-inputs` writes a `.gitignore` holding `*` into `inputs/` and an anchored `/inputs.prepared.json` line before its first call. - `pipelex-run`'s pre-validate sweep marks bundles prepared before this change at their next run, adding only missing lines. - `pipelex-synthetic-inputs` marks the default `inputs/` itself; lab synthetic cases stay unmarked and committed in git, while a user's own case keeps the directory guard. - The skills ask before marking an `inputs/` that sits beside neither a `.mthds` file nor `inputs.json`, and the guard's remaining ignore entries are anchored with a leading slash. <sup>Written for commit f408115. Summary will update on new commits.</sup> <a href="https://cubic.dev/pr/Pipelex/pipelex-plugins/pull/146?utm_source=github" target="_blank" rel="noopener noreferrer" data-no-image-dialog="true"><picture><source media="(prefers-color-scheme: dark)" srcset="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"><source media="(prefers-color-scheme: light)" srcset="https://www.cubic.dev/buttons/review-in-cubic-light.svg"><img alt="View guided diff" src="https://www.cubic.dev/buttons/review-in-cubic-light.svg"></picture></a> <!-- End of auto-generated description by cubic. --> --------- Co-authored-by: Claude Opus 5.5 <[email protected]>
The input skills stop copying test documents into a method's folder: a user's file is uploaded to Files where it lies and named in `inputs.json` by its `pipelex-storage://` address, synthetic files are made in a temporary directory and uploaded as test files, and a method's folder gets no `inputs.prepared.json`. A method's copies can therefore never ship in a built wheel or travel with its tree. A lab case, `lab/<method>/cases/<case>/`, is the one exception: it keeps its committed copies and its prepared file, recognised by its location as well as by the lab's request. Closes L-260924-208499 🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- This is an auto-generated description by cubic. --> --- ## Summary by cubic Stops the input skills from copying documents and test files into a method's folder, so those files can no longer ship inside a built wheel or travel with a method's tree. - `pipelex-inputs` uploads a user's file from where it lies and names it in `inputs.json` by its `pipelex-storage://` address; it no longer copies files into a method's folder or writes `inputs.prepared.json` beside the bundle. - `pipelex-synthetic-inputs` makes its files in a temporary directory and uploads them as test files. - A `pipelex-lab` case (`lab/<method>/cases/<case>/`) is the exception: it keeps its committed copies and prepared file, recognized by its location as well as by the lab's request. **Migration** - Folders an earlier release left behind are not migrated; `pipelex-run` still sweeps and marks them. <sup>Written for commit a6c6288. Summary will update on new commits.</sup> <a href="https://cubic.dev/pr/Pipelex/pipelex-plugins/pull/147?utm_source=github" target="_blank" rel="noopener noreferrer" data-no-image-dialog="true"><picture><source media="(prefers-color-scheme: dark)" srcset="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"><source media="(prefers-color-scheme: light)" srcset="https://www.cubic.dev/buttons/review-in-cubic-light.svg"><img alt="View guided diff" src="https://www.cubic.dev/buttons/review-in-cubic-light.svg"></picture></a> <!-- End of auto-generated description by cubic. --> --------- Co-authored-by: Claude Opus 5.5 <[email protected]>
The environment was built on whatever Python was newest on the machine, so a new worktree landed on 3.15 and failed to load `pydantic-core`. The repo now pins 3.13 in `.python-version`, the Makefile reads and exports it as `UV_PYTHON`, and the local MCP launcher keeps that export out of the session it starts. Closes L-261023-b7d250 Advances L-261023-8192c0 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01TuqArJByf4EdN7khSDRiPe <!-- This is an auto-generated description by cubic. --> --- ## Summary by cubic Pins the development environment to Python 3.13, which previously was whichever Python was newest on the machine. A new worktree could land on 3.15, where `pydantic-core` has no published wheel and the one uv compiled from source failed to load, breaking every integrate gate test. - Commits `.python-version` and has the Makefile export it as `UV_PYTHON`, so every uv command uses the pinned version; `PYTHON_VERSION=<version> make install` tries another interpreter. - CI workflows now read `.python-version` via `python-version-file`, and the recipes workflow re-runs when it changes. - `make check` fails when the pin disagrees with a floor in `pyproject.toml` or a workflow names a Python of its own. - The local MCP launcher keeps the Makefile's `UV_PYTHON` export and a command-line `PYTHON_VERSION` out of the session it starts, so the project the agent works in keeps its own pin. Closes L-261023-b7d250 <sup>Written for commit 6ff4297. Summary will update on new commits.</sup> <a href="https://cubic.dev/pr/Pipelex/pipelex-plugins/pull/148?utm_source=github" target="_blank" rel="noopener noreferrer" data-no-image-dialog="true"><picture><source media="(prefers-color-scheme: dark)" srcset="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"><source media="(prefers-color-scheme: light)" srcset="https://www.cubic.dev/buttons/review-in-cubic-light.svg"><img alt="View guided diff" src="https://www.cubic.dev/buttons/review-in-cubic-light.svg"></picture></a> <!-- End of auto-generated description by cubic. --> --------- Co-authored-by: Claude Opus 5.5 <[email protected]>
The validation hook now reads a refused method's verdict as the hosted problem document carries it, naming each problem item with its location and suggested fix in the block reason. The bundle is vendored from the SDK branch for now and is re-vendored from the released pipelex-sdk before this merges. Closes L-261023-f21e88 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01Uzyvwk5dEQLz1LibAnaoNk <!-- This is an auto-generated description by cubic. --> --- ## Summary by cubic Re-vendors the validation hook from `@pipelex/sdk` 0.50.0 so it reads an invalid verdict's `errors[]` as MTHDS problem items instead of the older `validation_errors[]`. A block reason now names each problem item by its code, sentence, pipe, and file, with its suggested fix beneath it, without relying on the server's Markdown. **Bug Fixes** - Entries that are not objects or lack a string code or sentence are skipped; non-conforming locations and suggested fixes are left out of the reason. **Migration** - A server still answering the old verdict shape (`validation_errors[]`) is no longer read, so its problems are no longer reported. <sup>Written for commit f2278c6. Summary will update on new commits.</sup> <a href="https://cubic.dev/pr/Pipelex/pipelex-plugins/pull/149?utm_source=github" target="_blank" rel="noopener noreferrer" data-no-image-dialog="true"><picture><source media="(prefers-color-scheme: dark)" srcset="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"><source media="(prefers-color-scheme: light)" srcset="https://www.cubic.dev/buttons/review-in-cubic-light.svg"><img alt="View guided diff" src="https://www.cubic.dev/buttons/review-in-cubic-light.svg"></picture></a> <!-- End of auto-generated description by cubic. --> --------- Co-authored-by: Claude Opus 5.5 <[email protected]>
## TL;DR - Every Pipelex skill reads a failed tool call by its problem document (`code`, `domain`, `retry`, `next_step`), a verdict's faults as `errors[]`, and a failed run by its `run_error`. - The workshop moves its errors to the MTHDS problem document and no longer sends `class`, `retryable`, `hint`, `kind`, `validation_errors[]` outside the catalog's save and publish, or `failure_message`. -⚠️ Breaking: these skills need a workshop that sends problem documents; with an older one they misread every error. ## Behaviour changes - A missing or refused key, a role, the organization's credit or an unreachable API is recognised by the error's `class` → by its problem's `domain` and `code`, with the tool's `next_step` relayed verbatim. - The catalog tells an unknown id, a link naming another method, a version suffix and an empty stored source apart by their codes instead of by message text. - `pipelex-inputs` reads a preparation failure by its code; a refusal of `kind` (a role that may not record test files, or a saved method the platform no longer holds) falls back to an ordinary upload instead of stopping. - A failed run's report keeps the support line the tool's summary ends with. - Preparing by a published address no longer names a `config` error for a package shipping in-process Python: that refusal never reaches preparation and meets the run instead. ## Changes **Skills** - The shared partials `mcp-requirements`, `credentials`, `validate-warnings` and `saved-copy-notice`, and every skill template under `templates/skills/`, rewritten for the problem document. - `pipelex-inputs`'s stop table, `references/prepare-errors.md`, `references/synthetic.md` and `references/published-address.md`. - The generated `pipelex/`, `pipelex-codex/` and `pipelex-vibe/` copies, rebuilt. **Tests** - The skill assertions in `tests/unit/test_gen_skill_docs.py` and the per-skill tests, moved to the new fields. - `tests/unit/test_skill_error_fields.py` now refuses any shipped skill file that names a retired workshop field. ## How it was verified - `make build`, `make check` and `make agent-test`: passed. ## Documentation - `CHANGELOG.md`, Unreleased: the breaking entry for the problem document. - `docs/decisions.md`: why the `kind` fallback sits in `pipelex-inputs` rather than in the shared stops. ## Not done - A stray `.DS_Store` under a target's `skills/` fails the error-field test locally: L-261024-e68a68. - The test-files changelog entry omits the erased saved method: L-261024-8ecba8. Closes L-261017-1b4ac0 Closes L-260923-4ce273 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01ChCUgUaFZK7FTEAc8uPAVL --------- Co-authored-by: Claude Opus 5.5 <[email protected]>
## TL;DR
- The validation hook bundle `check.mjs` is rebuilt on `@pipelex/sdk`
0.54.1 with `@pipelex/tools-wasm` 0.6.1, so its validate stage's
`User-Agent` now names 0.54.1; its lint, its format and the request it
sends are otherwise unchanged.
- The release gate `make check-hook-fresh` refused the next release
because the vendored bundle still embedded `@pipelex/sdk` 0.53.0 and
`@pipelex/tools-wasm` 0.6.0, behind npm's latest engine and behind a
rebuild at pipelex-sdk `dev`.
## Behaviour changes
- The `User-Agent` of the hook's validate stage names `pipelex-sdk-js`
0.53.0 → 0.54.1.
## Changes
**Hook bundle**
- `templates/hooks/assets/check.mjs` re-vendored with `make vendor-hook`
from pipelex-sdk `dev` at `bc448bf`, which pins `@pipelex/tools-wasm`
0.6.1, and propagated by `make build` to `pipelex/hooks/check.mjs`,
`pipelex-codex/hooks/check.mjs` and `pipelex-vibe/hooks/check.mjs`.
- Provenance line: `@pipelex/sdk 0.53.0 (5dfe747) + @pipelex/tools-wasm
0.6.0 (npm)` → `@pipelex/sdk 0.54.1 (bc448bf) + @pipelex/tools-wasm
0.6.1 (npm)`.
- Below the banner the rebuild differs in three places. The inlined
engine's JavaScript loader is re-minified and loads the wasm module
through the new `rust-plugin` 3 entry point; the engine moved from 0.6.0
to 0.6.1 by dependency refreshes only, with its embedded MTHDS schema,
lint and formatter unchanged. `SDK_VERSION` reads 0.54.1.
`PipelexApiClient.getFile` gains the SDK's `withUseCreator`
normalization, which sets a file use's absent `created_by` to `null`;
the hook calls only `validate`, and the method is in the bundle only
because esbuild keeps a class's methods, so that change does not reach
the hook's users and the changelog does not mention it.
**Changelog**
- The existing `[Unreleased]` bullet "The validation hook names each
problem item of a refused method (Breaking)" is edited in place to name
`@pipelex/sdk` 0.54.1, `@pipelex/tools-wasm` 0.6.1 and a `User-Agent` of
0.54.1, since the unreleased section is the delta since the last
release.
## How it was verified
- `npm ci` in `pipelex-sdk/js` before the vendor, since its
`node_modules` still held tools-wasm 0.6.0; `make vendor-hook` printed
the new provenance line above.
- `make check-hook-fresh`: "The bundle embeds 0.6.1, which is npm's
latest", "A rebuild at dev is identical below the banner", "The vendored
hook bundle is current", exit 0.
- `make agent-check`: all checks passed, the provenance guard and the
notices check included ("Every package the hook bundle inlines is named
in its notices file"); it rewrote no file.
- `DO_NOT_TRACK=1 make agent-test`: all tests passed, the hook's sweep
over the corpus included.
## Documentation
- `CHANGELOG.md` `[Unreleased]`: the hook bullet names the new versions.
`docs/hooks.md` names no embedded version, so it needed no change.
Closes L-261025-087fe8
🤖 Generated with [Claude Code](https://claude.com/claude-code)
https://claude.ai/code/session_01ChCUgUaFZK7FTEAc8uPAVL
Co-authored-by: Claude Opus 5.5 <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01ChCUgUaFZK7FTEAc8uPAVL
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Release v0.17.0
Bumps version from
0.16.0to0.17.0. Promotesdev→main.Changelog
Added
pipelex-inputsandpipelex-runlook among your team's files first: before asking you for a file a method input takes, and when you name one that is not on disk, such as "the invoice uploaded this morning", the skills look among your organization's files with the Pipelex tools'mthds_list_filesand pass the file you settle on by itspipelex-storage://address, so nothing is uploaded again. With a version of the tools older than that listing, they ask for the file as before and name thenpx -y @pipelex/mcp@latestrefresh.pipelex-inputsuploads the filespipelex-synthetic-inputsmade, it passeskind: "test"tomthds_prepare_inputs, so your organization's files list them as test files of the saved method, named by its bare catalog id or by the bundle directory's link, and a preparation that also uploads your own files does so in a second call, which keeps yours ordinary uploads. A published address, a version or draft id, a directory linked to no saved method, a role that may not record test files and a version of the tools older than test files all upload them as ordinary files, and the skill says which.Changed
pipelex-integratesends the method's tree (Breaking): the call site the skill writes runs the method with its whole bundle directory as the method's tree,directory: BUNDLE_DIRon@pipelex/sdk0.48.0 andtree=BUNDLE_DIRonpipelex-sdk0.48.0, the floors step 8 now installs, so the template files a bundle'sPipeDocGensteps name travel with every run in either language, and its docstring namesprepareInputswith the same tree. A refresh raises an older pin and rewrites a module that still sendsmthds_contentsorresources; apython-structuresproject whosepipelex, once step 8 has run, still pins apipelex-sdkfrom before the tree keeps the older module, and over a bundle naming template files the skill stops there as before. The skill judges that by thepipelex-sdkthe project will run on after step 8, syncing the environment first when the version cannot be read, and takes the older module and the stop when it still cannot.pipelex-integraterecords and checks the tree a run sends (Breaking): the skill passes a local bundle to the workshop as its folder and records the files it sent, and both drift gates list the bundle with the MTHDS standard's own lister, the one the SDK sends it with, so a file a.gitignoreinside the bundle or the manifest'sexcludekeeps out of the run is out of the types and the gate too, and a.gitignoreedit that changes which bundle or template files the tree carries makes the gate reportstale-source. AMETHODS.tomlabove the bundle is now a stop at step 1, before anything is generated, and the gates name its cure, moving the bundle out from under it or integrating the package's own directory, instead of sending you to a refresh that could never clear it; a bundle the workshop cannot read as a folder is a stop as well, since no other submission is the tree the call site sends. A refresh re-copies the new gate; the TypeScript gate finds thatmthdsbeside@pipelex/sdkinnode_modulesor, under Yarn Plug'n'Play, throughpnpapi, and gives no verdict when it is missing or older than the floor's, and the Python gate whenpipelex-sdkis below the floor.pipelex-inputsuploads your files where they lie, and a method's folder keeps onlyinputs.json(Breaking): the skill no longer copies your files intoinputs/beside the method or writesinputs.prepared.jsonthere; it uploads each file from where you keep it, an Office file as the PDF it exports into a temporary directory, and writes thepipelex-storage://address it gets back intoinputs.json, whichpipelex-runthen runs as it stands, sending a value that still names a local file back topipelex-inputsto be uploaded first.pipelex-synthetic-inputsmakes its files in a fresh temporary directory by default, on its own too, and reports their path and their name among your organization's files, so anything that read the copies underinputs/or a method folder'sinputs.prepared.jsonnow reads the addresses ininputs.json, which resolve only inside the organization that uploaded the files. Apipelex-labcase is the exception and keeps its copies undercases/<case>/inputs/with its prepared file beside them, so that it runs from any clone, and folders an earlier release prepared are not migrated.check.mjsbundle every target runs on a.mthdsedit now sends the edited file's method to validation as the tree a run would send, rooted at the nearestMETHODS.toml, every file the MTHDS membership rule keeps under its root rather than only its.mthdsfiles and the templates its steps name. Names starting with a dot, such as.env, a run's inputs file, and what a.gitignoreinside the tree or the manifest'sexcludekeeps out stay on your machine, and so does a file the hook's secret screen finds, named like a key or credentials file or holding a private key or a provider's key, which the verdict's note names without quoting it; a bundle or manifest that looks like a secret sends nothing, under a note. A.gitignoreabove the tree, such as a repository's root one, still keeps nothing out, and the screen recognizes only well-known shapes, so keep keys and credentials out of a method's directory, or list them in a.gitignoreinside it. A tree holding a symbolic link, or past the hook's size caps, still passes the validation silently.check.mjsbundle builds now gives every problem item of the verdict'serrors[]a line of its own, with its code, its sentence and where it happened, such as its pipe and its file, and the item's suggested fix beneath it, where against a server speaking the MTHDS problem document it named no item at all. A server still answering the older shape is no longer read: the bundle ignores itsvalidation_errors[], so when such a server also ignores therenderrequest, the block reason holds the verdict's message alone and names none of its faults. It is rebuilt on@pipelex/sdk0.54.1 and@pipelex/tools-wasm0.6.1, and its lint, its format and the request its validate stage sends are unchanged, except that itsUser-Agentnames 0.54.1.code,domain,retryandnext_step, a verdict's faults aserrors[]items, its warnings as problem items such aspipelex.docgen.template_warning, and a failed run by itsrun_error, which is what the workshop sends from the release that moves its errors to the MTHDS problem document, instead of theclass,retryable,hintandkindof an error,validation_errors[]outside the catalog's save and publish, and a run'sfailure_message, which it no longer sends. So a missing or refused key, a role, the organization's credit or an unreachable API stops a skill with the tool's next step relayed verbatim, the catalog tells an unknown id from a link naming another method, a version suffix and an empty stored source by their codes,pipelex-inputsreads a preparation failure by its code, and a failed run keeps the support line the tool's summary ends with; use these skills with a workshop that sends problem documents.Fixed
pipelex-inputscopied andpipelex-synthetic-inputsrendered intoinputs/beside a bundle, and theinputs.prepared.jsonwritten there, were sent with every validation, run and catalog save of the method and stored with it, since the method's tree keeps out onlyinputs.jsonand reads no.gitignoreabove the method's folder. The skills no longer write either beside a method, and before its first call on a bundle an earlier release prepared,pipelex-runadds*to the.gitignoreof eachinputs/beside aninputs.jsonand/inputs.prepared.jsonto the.gitignorebeside that file, each only where the line is missing and saying so, so a second run changes nothing.pipelex-inputsanchors the.gitignoreentries it writes: aninputs.jsonorinputs.prepared.jsonentry written into the bundle directory's own.gitignorewas a bare name, which git matched at every depth below, so aninputs.jsonyou commit elsewhere in the folder was silently ignored from then on. The entries now start with/, naming only the file beside the bundle.make installbuilt.venvon the newest Python on the machine, so on Python 3.15pydantic-corewas compiled from source and failed to load, and every integrate gate test failed. The repository now pins 3.13 in.python-version, the version CI runs, the nextmake installrebuilds an environment made on another Python,PYTHON_VERSION=<version> make installtries another one, andmake checkfails when the pin, the floors inpyproject.tomland the workflows disagree.🤖 Generated with Claude Code
https://claude.ai/code/session_01ChCUgUaFZK7FTEAc8uPAVL