Skip to content

feat: add Phase 3 durable effect execution - #326

Draft
eshulman2 wants to merge 14 commits into
phase2/event-interpretationfrom
phase3/durable-effects
Draft

feat: add Phase 3 durable effect execution#326
eshulman2 wants to merge 14 commits into
phase2/event-interpretationfrom
phase3/durable-effects

Conversation

@eshulman2

Copy link
Copy Markdown
Collaborator

Summary

  • add Redis and in-memory effect journals with atomic idempotent submission
  • lease due effects and recover abandoned executions after lease expiry
  • record structured success, precondition, retryable and terminal results
  • execute provider operations through a narrow registry with bounded exponential retry
  • index effect history by workflow run for inspection
  • add an idempotent Jira comment executor with provider-side recovery evidence
  • migrate resume acknowledgement comments from inline Jira calls to durable effects
  • run the effect sweeper alongside the queue worker

Stack

Correctness properties

  • intent is persisted before provider execution
  • duplicate submissions share one idempotency key and execute once
  • retries execute the effect without rerunning its originating station
  • expired execution leases are recoverable
  • terminal records cannot be replayed from a stale due-set entry
  • Jira comments are recovered by embedded effect identity after a crash between provider success and result persistence

Verification

  • uv run ruff check src/
  • uv run mypy src/forge/effects
  • uv run pytest tests/unit/ -q --strict-markers — 2,412 passed
  • uv run pytest tests/contracts tests/flows -q --strict-markers — 319 passed

@eshulman2
eshulman2 force-pushed the phase3/durable-effects branch from e8c31f0 to 6652608 Compare August 27, 2026 18:36
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