Skip to content

Enforce canonical outcomes and retryability at the Worker boundary - #88

Merged
sfloess merged 32 commits into
mainfrom
contract/retryability-enforcement
Oct 20, 2026
Merged

sfloess merged 32 commits into
mainfrom
contract/retryability-enforcement

Conversation

@sfloess

@sfloess sfloess commented Oct 19, 2026 •

Copy link
Copy Markdown
Member

Summary

  • Add explicit error_code and retryable fields to WorkerResult.
  • Introduce WorkerOutcome aligned with Loom's language-neutral outcomes and reject contradictory status/outcome pairs.
  • Preserve stable failure categories, evidence, artifacts, observations, and provenance across Arbiter composition.
  • Permit retries only for explicitly retryable failures; policy denial, cancellation, deadline expiry, and interrupted execution remain terminal.
  • Require an explicit canonical outcome when continuation is pending. An interruption without declared partial success is a failure, not a successful or partially successful result.
  • Make WorkerResult.successful true only for canonical succeeded; partial success no longer passes the full-success check.
  • Add regression coverage for retryability, terminal outcomes, interruption propagation, and preservation of evidence/artifacts/observations/provenance.

This is a focused runtime-contract change for Loom issue #5. Fleet-to-Orchestrator work remains parked until Action/Result semantics are complete.

Validation

  • Security audit passed on the prior revision; latest revision is running CI.
  • Python quality-gate checks are pending for the latest revision.
  • Do not merge until all latest checks pass.

@github-actions

Copy link
Copy Markdown

Quality Gate Report

Check Status
Ruff lint ✅ 0 issues
Ruff format ❌
Tests ✅
Imports ✅
Version (X.Y) ✅

⚠️ Quality gates failed! Fix issues before merging.

1 similar comment
@github-actions

Copy link
Copy Markdown

Quality Gate Report

Check Status
Ruff lint ✅ 0 issues
Ruff format ❌
Tests ✅
Imports ✅
Version (X.Y) ✅

⚠️ Quality gates failed! Fix issues before merging.

@github-actions

Copy link
Copy Markdown

Quality Gate Report

Check Status
Ruff lint ✅ 0 issues
Ruff format ✅
Tests ✅
Imports ✅
Version (X.Y) ✅

✅ All quality gates passed!

@github-actions

Copy link
Copy Markdown

Quality Gate Report

Check Status
Ruff lint ✅ 0 issues
Ruff format ✅
Tests ❌
Imports ✅
Version (X.Y) ✅

⚠️ Quality gates failed! Fix issues before merging.

@sfloess sfloess changed the title Enforce retryability at the Worker execution boundary Enforce canonical outcomes and retryability at the Worker boundary Oct 19, 2026
@github-actions

Copy link
Copy Markdown

Quality Gate Report

Check Status
Ruff lint ✅ 0 issues
Ruff format ✅
Tests ❌
Imports ✅
Version (X.Y) ✅

⚠️ Quality gates failed! Fix issues before merging.

@github-actions

Copy link
Copy Markdown

Quality Gate Report

Check Status
Ruff lint ❌ 0 issues
Ruff format ❌
Tests ❌
Imports ✅
Version (X.Y) ✅

⚠️ Quality gates failed! Fix issues before merging.

@github-actions

Copy link
Copy Markdown

Quality Gate Report

Check Status
Ruff lint ✅ 0 issues
Ruff format ❌
Tests ✅
Imports ✅
Version (X.Y) ✅

⚠️ Quality gates failed! Fix issues before merging.

@github-actions

Copy link
Copy Markdown

Quality Gate Report

Check Status
Ruff lint ❌ 0 issues
Ruff format ❌
Tests ❌
Imports ✅
Version (X.Y) ✅

⚠️ Quality gates failed! Fix issues before merging.

@github-actions

Copy link
Copy Markdown

Quality Gate Report

Check Status
Ruff lint ✅ 0 issues
Ruff format ❌
Tests ✅
Imports ✅
Version (X.Y) ✅

⚠️ Quality gates failed! Fix issues before merging.

@github-actions

Copy link
Copy Markdown

Quality Gate Report

Check Status
Ruff lint ❌ 0 issues
Ruff format ❌
Tests ❌
Imports ✅
Version (X.Y) ✅

⚠️ Quality gates failed! Fix issues before merging.

@github-actions

Copy link
Copy Markdown

Quality Gate Report

Check Status
Ruff lint ✅ 0 issues
Ruff format ✅
Tests ✅
Imports ✅
Version (X.Y) ✅

✅ All quality gates passed!

@github-actions

Copy link
Copy Markdown

Quality Gate Report

Check Status
Ruff lint ❌ 0 issues
Ruff format ❌
Tests ❌
Imports ✅
Version (X.Y) ✅

⚠️ Quality gates failed! Fix issues before merging.

@github-actions

Copy link
Copy Markdown

Quality Gate Report

Check Status
Ruff lint ✅ 0 issues
Ruff format ❌
Tests ❌
Imports ✅
Version (X.Y) ✅

⚠️ Quality gates failed! Fix issues before merging.

@github-actions

Copy link
Copy Markdown

Quality Gate Report

Check Status
Ruff lint ✅ 0 issues
Ruff format ❌
Tests ❌
Imports ✅
Version (X.Y) ✅

⚠️ Quality gates failed! Fix issues before merging.

@github-actions

Copy link
Copy Markdown

Quality Gate Report

Check Status
Ruff lint ✅ 0 issues
Ruff format ❌
Tests ✅
Imports ✅
Version (X.Y) ✅

⚠️ Quality gates failed! Fix issues before merging.

1 similar comment
@github-actions

Copy link
Copy Markdown

Quality Gate Report

Check Status
Ruff lint ✅ 0 issues
Ruff format ❌
Tests ✅
Imports ✅
Version (X.Y) ✅

⚠️ Quality gates failed! Fix issues before merging.

@github-actions

Copy link
Copy Markdown

Quality Gate Report

Check Status
Ruff lint ❌ 0 issues
Ruff format ❌
Tests ❌
Imports ✅
Version (X.Y) ✅

⚠️ Quality gates failed! Fix issues before merging.

@sonarqubecloud

Copy link
Copy Markdown

@github-actions

Copy link
Copy Markdown

Quality Gate Report

Check Status
Ruff lint ✅ 0 issues
Ruff format ✅
Tests ✅
Imports ✅
Version (X.Y) ✅

✅ All quality gates passed!

@sfloess
sfloess marked this pull request as ready for review October 20, 2026 00:25
@sfloess
sfloess merged commit b2ecb2c into main Oct 20, 2026
6 checks passed
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