Skip to content

feature/Multiplicity-next-step · L-260926-0b2e02 - #1267

Closed
lchoquel wants to merge 4 commits into
feature/Unsafe-fix-looks-safefrom
feature/Multiplicity-next-step
Closed

lchoquel wants to merge 4 commits into
feature/Unsafe-fix-looks-safefrom
feature/Multiplicity-next-step

Conversation

@lchoquel

@lchoquel lchoquel commented Sep 26, 2026 •

Copy link
Copy Markdown
Member

A PipeParallel feeding a list branch into a single field was refused by the combine with a Python validation error about ListContent and no next step, and the verdict's own advice was to check the validation_errors array. The combine is unchanged; when it refuses, the parallel now names the branch, the result and the field and says whether to declare the field with the branch's multiplicity or to change the branch (its output, or its own nb_output, multiple_output or batch_over), and the invalid-bundle verdict's next step now tells the reader to follow each item, confirming an unsafe suggested fix first.

Closes L-260926-0b2e02

🤖 Generated with Claude Code


Summary by cubic

A PipeParallel whose branch result and its field disagree on multiplicity is now refused with a next step naming what to change, instead of a Python validation error about ListContent with no guidance. The invalid-bundle verdict's next step now points the reader at its items instead of the validation_errors array.

  • The combine is unchanged; the diagnosis runs only after it has refused the branch results.
  • The refusal names the parallel, the branch, the result and the field, and says to declare the field with the branch's multiplicity or change the branch — its output, or its own nb_output, multiple_output or batch_over when set in branches.
  • The advice is given only on a pure multiplicity mismatch; no advice where a change could not make the branch fit (a field whose items are not concept contents, a branch concept with no structure class, a whole-structure refusal), and any other refusal the combine made stays in the message.
  • Branch and concept refs are shown as the author writes them in the parallel's own domain, and a dependency concept is spelled behind its package alias.
  • ValidateBundleError's user action and the CLI hints derived from it now read "Edit the bundle as each validation error says: apply its suggested fix where it has one, after confirming an unsafe one".
  • The item's suggested fix is still marked unsafe when it cannot be derived confidently, and a reader is told to confirm it before applying.

Closes L-260926-0b2e02

Written for commit fa0a47b. Summary will update on new commits.

Review in cubic

lchoquel and others added 3 commits September 26, 2026 20:54
When the combine of a PipeParallel's branch results refuses a list branch fed into a single
field, or a single branch fed into a list field, the parallel now re-raises the refusal as a
PipeRunError naming the branch, the result and the field and saying which multiplicity to
change. The combine itself is unchanged: the diagnosis runs only after it has refused. The
invalid-bundle verdict's own next step now tells the reader to follow each item, applying its
suggested fix after confirming an unsafe one, instead of pointing at the validation_errors array.

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

The refusal names a branch by its bare code in the parallel's domain, as the docs show, and when
the branch's multiplicity comes from its own nb_output, multiple_output or batch_over it says to
change that setting rather than the pipe's declared output.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… other refusal

The multiplicity next step is now given only when the branch's concept fits the field's item
class, a dependency concept is spelled behind its package alias, and whatever else the combine
refused stays in the message after the advice.

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

Copy link
Copy Markdown
Member Author

Review, round 2 at profile 4 (cubic, codex review, codex adversarial, code-review medium). Fixed in 01e23ca: the multiplicity advice is given only when the branch's concept fits the field's item class, whatever else the combine refused stays in the message, and a dependency concept is spelled behind its package alias. Round 1 at profile 2 (fixed in 849927e): the branch is named as written and a branch-level nb_output, multiple_output or batch_over is named instead of the pipe's output. Deferred, unverified: the diagnosis classifies fields and branches with rules of its own rather than those of the static check (trace on the ledger item). Rejected: making it a static check, which the sprint's fence rules out.

round 3 — bar necessity — profile 4 (derived) — not run, per the sprint brief.

…o crash

A branch concept without a structure class (Anything) no longer makes the diagnosis raise out of
validation; a field whose items are not concept contents (a primitive list, a Python-authored
ListContent) gets no multiplicity advice, since changing a multiplicity would not make it fit;
and a refusal of the whole output structure keeps the combine's own report beside the advice.

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

Copy link
Copy Markdown
Member Author

Review, round 3 at profile 4, bar necessity (cubic, codex review, codex adversarial, code-review medium; one verifier). Fixed in fa0a47b, each confirmed by the verifier: an Anything[] branch made the diagnosis raise ConceptStructureClassNotFoundError out of validation (a round-2 regression); a primitive-list or ListContent field got multiplicity advice that could not make it combine; and a refusal of the whole output structure dropped the combine's own report.

Deferred, verified and low severity: the advice spells a dependency concept without its alias, or as a bare code when the host domain shares its name (_concept_ref_for_message, same spelling since round 1). Deferred, unverified: _pipe_ref_for_message strips a parent-domain prefix from a nested-domain pipe ref.

round 4 — bar freeze — profile 4 (derived) — not run, per the sprint.

@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/Multiplicity-next-step 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