Skip to content

CxODEV-1730: port StructuredErrorException + structured_error contract to master#217

Merged
andrejsimic merged 3 commits into
masterfrom
feat/master/CxODEV-1730-structured-error
Jul 21, 2026
Merged

CxODEV-1730: port StructuredErrorException + structured_error contract to master#217
andrejsimic merged 3 commits into
masterfrom
feat/master/CxODEV-1730-structured-error

Conversation

@andrejsimic

@andrejsimic andrejsimic commented Jul 21, 2026

Copy link
Copy Markdown
Collaborator

What

Ports the structured-error capability that shipped on the v3 line (v3.8.0) to the v4 master line, on top of current master. Behavior is identical to the v3 release. Also bumps the v4 packages to 4.1.0 and lets the release workflow fire on v4.* tags.

Why

The structured_error task-output contract (added under CxODEV-1730 for ROM→SOM error persistence) was released on v3.8.0. Master (v4.x) needs the same capability so it doesn't regress when consumers move to the v4 packages.

Changes

Structured-error capability

  • StructuredErrorException(code, reason, referenceError?) — thrown by workers to attach a sanitized, stable classification to a failed task's output.
  • StructuredError DTO + ErrorOutput.StructuredError (omitted when null → backward-compatible).
  • StructuredErrorSerializer — defines the structured_error output key + shape, ToOutputData (for signal senders with no exception to catch), and tolerant TryParse (consumer side). Round-trip contract test pins the key/shape.
  • ExecutionManager and TypePollSpreadingExecutionManager populate structured_error when a StructuredErrorException is caught; plain exceptions still emit only error_message.

Versioning & release

  • Bumped all five packages 4.0.1 → 4.1.0 (Client, Engine, Patterns, KafkaCancellationNotifier, Toolkit) — minor bump for the additive feature.
  • release.yml now triggers on both v3.* and v4.* tags (was v3.* only), so a v4.1.0 tag publishes the v4 line.

Port notes

  • Cherry-picked the functional diff from the v3 commits (91291aa + cleanup 22b7b6d); the v3 csproj version bumps (3.7.3→3.8.0) were deliberately excluded — master is versioned independently (now 4.1.0).
  • The structured-error hunks in both execution managers applied cleanly onto master's versions of those files (master's own "apply fix from master" changes are untouched).

Tests

ConductorSharp.Engine.Tests55 passed (includes the ported StructuredErrorTests round-trip/contract cases). Solution builds clean.

🤖 Generated with Claude Code

andrejsimic and others added 3 commits July 21, 2026 09:40
…t to master

Ports the structured-error capability released on the v3 line (v3.8.0) to the
v4 master line. Same behavior, no version bump — master keeps its 4.0.1 version.

- StructuredErrorException(code, reason, referenceError?)
- StructuredError DTO and ErrorOutput.StructuredError (omitted when null → back-compat)
- StructuredErrorSerializer: OutputKey, ToOutputData (for signal senders) and
  tolerant TryParse (consumer side); round-trip contract test pins shape/key
- both ExecutionManager and TypePollSpreadingExecutionManager populate
  structured_error when a StructuredErrorException is caught; plain exceptions
  still emit only error_message

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Minor bump for the additive structured_error capability ported from v3.8.0.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The v4 line is now published from master; add v4.* so a v4 tag fires the
same pack/push steps.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@andrejsimic
andrejsimic merged commit e42ba82 into master Jul 21, 2026
1 check passed
@andrejsimic
andrejsimic deleted the feat/master/CxODEV-1730-structured-error branch July 21, 2026 08:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant