Skip to content

feature/Validation-detail-loss · L-260925-024e20 - #1273

Closed
lchoquel wants to merge 5 commits into
feature/Bundle-refusal-verdictsfrom
feature/Validation-detail-loss
Closed

lchoquel wants to merge 5 commits into
feature/Bundle-refusal-verdictsfrom
feature/Validation-detail-loss

Conversation

@lchoquel

@lchoquel lchoquel commented Sep 26, 2026 •

Copy link
Copy Markdown
Member

Validation no longer loses detail before the reader: a failing dry run is one located dry_run item per failing pipe, at the innermost pipe that failed and is not allowed to fail, where it used to be one item holding a repr of the sweep's records, repeated for every controller around it. Every error the parser reports is now an item, an uncategorized one included with its field path, a TOML syntax error carries its line and column, and an unresolved concept lists the concepts the validated bundle declares in its domain. validate pipe and validate --all answer a failing dry run with the same invalid verdict as validate bundle.

Closes L-260925-024e20

🤖 Generated with Claude Code


Summary by cubic

Validation no longer loses detail before the reader: every parser error becomes a validation item, and a failing dry run is now one located dry_run item per failing pipe at the innermost pipe that failed instead of one item holding a repr of the sweep's records repeated for every controller around it.

  • validate pipe and validate --all now answer a failing dry run with the same invalid verdict as validate bundle, and the agent CLI's dry_run_error extra is dropped in favor of the item.
  • Uncategorized errors keep their field path, TOML syntax errors carry line and column, and an unresolved concept lists the concepts its domain declares.
  • A failure located at a pipe loaded from the host's own library directories never names that file in the item's source, but only when the validation runs on submitted content — a method validated from its own file keeps a sibling file's source.

Written for commit 1cb2412. Summary will update on new commits.

Review in cubic

lchoquel and others added 4 commits September 26, 2026 20:54
A failing dry run is now one located dry_run item per failing pipe, found at the innermost pipe that failed rather than repeated for every controller around it, and carrying its pipe code, domain and source. Its text keeps the failure's own message only when that message is caller-facing. validate pipe and validate --all answer it with the same invalid verdict as validate bundle.

Every error the parser reports becomes an item, an uncategorized one included, with its field path. A TOML syntax error's item carries its line and column, and an unresolved concept's item lists the concepts its domain declares.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…s not tolerated

An unresolved concept's declared_concepts now lists only what the validated bundle declares in its domain, never the concepts an earlier load brought in, which may be a host's own library. A dry-run failure met at a pipe allowed to fail stays on the swept pipe that failed because of it, and a source an older library manager gives as a Path is kept as text. The sweep router catches only the failures the sweep classifies, and a misspelled key keeps its name in the field path even when it is hyphenated or reads like a type name.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ipe around it

The sweep's recorder never notes a pipe the configuration allows to fail, so a failure met there is noted at the next pipe outward, the innermost one that is not allowed to fail. With several controllers above a tolerated pipe, the fault is now one item at that pipe rather than one per swept controller, and the docs, the DryRunError page and the changelog say so.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A dry-run failure located at a pipe loaded from the host's own library directories kept that pipe's on-disk path as its item's source, which STRICT disclosure passes to the caller. validate_bundle now tells the sweep which pipes are the content under validation, and only those name their file; a library pipe is still located by its code and domain.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@lchoquel

Copy link
Copy Markdown
Member Author

Review pass at profile 4, round 3 (bar necessity) on 8a8e859. Reviewers: cubic, Codex review, Codex adversarial and code-review; one verifier.

Fixed in 6caef5e (critical): a dry-run failure located at a pipe loaded from the host's own library directories carried that pipe's on-disk path as its item's source, which STRICT disclosure passes to the caller. Only pipes of the content under validation name their file now.

Deferred (unverified unless stated): the title-only text of dry-run failures that are not caller-facing, on local surfaces too; union-branch noise items on pipe fields; the per-pipe dedupe dropping a distinct fault at a shared sub-pipe, and dependency aliases colliding; one failure per multi-branch parallel run; test_validation_render.py still describing the single dry-run rendering. Verified, for conformance: tests/pipelex_agent/test_validate_errors.py:247 asserts a dry_run item has no source.

round 4 — bar necessity — profile 4 (derived) — the round-3 pass fixed a critical, so this pass is held to necessity rather than the ladder's freeze: the fix is verified by a pass that may still fix what the fix broke

The round-3 source filter also ran when a bundle is validated from a file on the caller's own disk, so a dry-run failure in a sibling file of the same method lost its source and the CLI its Source line. Only validation of submitted content, which every hosted path uses, filters sources now.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@lchoquel

Copy link
Copy Markdown
Member Author

Review pass at profile 4, round 4 (bar necessity) on the round-3 fix commit 6caef5e. Reviewers: cubic, Codex review, Codex adversarial and code-review; one verifier.

Fixed in 1cb2412: the round-3 source filter also ran when a bundle is validated from a file on the caller's own disk, so a dry-run failure in a sibling file of the same method lost its source. Only validation of submitted content, which every hosted path uses, filters sources now.

Deferred, unverified: pipe_ref equality is not provenance, so an aliased dependency sharing a submitted pipe's ref could be given the submitted file as its source; and load-time items raised by a pipe of the host's own library still carry the host file as their source, which predates this branch.

stalled — round 5 would pass the cap of 4, and the round-4 pass fixed under its bar; a person decides

@lchoquel

Copy link
Copy Markdown
Member Author

Superseded by #1276, which carries this branch's commits and landed on dev as a7924f6.

@lchoquel lchoquel closed this Sep 27, 2026
@github-actions github-actions Bot locked and limited conversation to collaborators Sep 27, 2026
@lchoquel
lchoquel deleted the feature/Validation-detail-loss branch September 27, 2026 16:46
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant