Skip to content

Human approve fails to post Slack (Upstash / checkpoint resume) #34

Description

@AttiR

Problem

After clicking Approve, the UI shows “Slack post did not complete” and/or API returns:
Run {id} is 'escalated' — cannot review on retry.

Root cause

execute_action resumed via LangGraph RedisSaver, which requires RedisJSON/FT commands not supported on Upstash. Local memory checkpointer also created a new MemorySaver per thread, so resume did not continue at the action node.

post_to_slack() itself works when called directly with a valid SLACK_WEBHOOK_URL.

Fix

  • Resume approve → action from opscanvas:run:{run_id} (call run_action directly)
  • Fall back to in-process memory checkpointer when RedisSaver setup fails
  • Retry approve when action failed but feedback-loop cap not hit
  • UI: “Retry Slack post” + clearer failed/escalated states
  • Document OPSCANVAS_CHECKPOINTER=memory for local dev

Test plan

  • Local: submit incident → approve → message in Slack
  • Local: retry after simulated webhook failure
  • Prod Lambda: same flow after CD deploy
  • pytest tests/test_durability.py tests/test_action_retry.py

Closes #34

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions