Skip to content

Shared failed-task structured-error reader + BuildFailureError pattern task (3.10.0 backport) - #224

Merged
ognjenkatic merged 3 commits into
v3from
CxODEV-1875-failed-task-error-reader-v3
Aug 27, 2026
Merged

Shared failed-task structured-error reader + BuildFailureError pattern task (3.10.0 backport)#224
ognjenkatic merged 3 commits into
v3from
CxODEV-1875-failed-task-error-reader-v3

Conversation

@ognjenkatic

@ognjenkatic ognjenkatic commented Aug 26, 2026

Copy link
Copy Markdown
Collaborator

Backport of #223 to the v3 line (cherry-pick; identical source change — see #223 for the full description).

Extracts the deepest-failed-task descent + structured_error harvest that contract consumers were each re-implementing: FailedTaskStructuredErrorReader in Engine (TryReadAsync + ReadOrFallbackAsync with UNCLASSIFIED fallback, DI-registered), StructuredError.UnclassifiedCode, and the BuildFailureError Patterns worker — registered under the shared task name: the task is a stateless read-only lookup, so multiple services polling one queue is safe by design (Conductor task domains remain the lever if poller isolation is ever needed).

Versions 3.9.0 → 3.10.0 for the four packages released on this line; Toolkit stays at 3.0.1-beta3. Tests 70/70 green.

🤖 Generated with Claude Code

@ognjenkatic ognjenkatic changed the title CxODEV-1875: shared failed-task structured-error reader + BuildFailureError pattern task (3.10.0 backport) Shared failed-task structured-error reader + BuildFailureError pattern task (3.10.0 backport) Aug 26, 2026
@ognjenkatic
ognjenkatic force-pushed the CxODEV-1875-failed-task-error-reader-v3 branch 5 times, most recently from 952c81a to bcef6c0 Compare August 26, 2026 18:15
…n task

Extracts the deepest-failed-task descent and the structured_error harvest
(UNCLASSIFIED fallback, sanitized reason, diagnostic message) that
consumers of the contract were each re-implementing. Engine ships the
reader (DI-registered); Patterns ships a generic BuildFailureError worker
for failure workflows. Boundary concerns stay with callers - the
sanitized generic reason is a parameter, not baked in.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@ognjenkatic
ognjenkatic force-pushed the CxODEV-1875-failed-task-error-reader-v3 branch from bcef6c0 to 78076c4 Compare August 26, 2026 18:16
An out parameter rules out async, so the method is synchronous and
blocks on the underlying Conductor call.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@ognjenkatic
ognjenkatic force-pushed the CxODEV-1875-failed-task-error-reader-v3 branch from 0659ee3 to 5e38c73 Compare August 27, 2026 07:15
…e naming

Consumers read the contract through FailedTaskStructuredErrorReader and
produce it by throwing StructuredErrorException; nobody outside the
assembly needs the serializer itself.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@ognjenkatic
ognjenkatic merged commit e75c3df into v3 Aug 27, 2026
@ognjenkatic
ognjenkatic deleted the CxODEV-1875-failed-task-error-reader-v3 branch August 27, 2026 07:58
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