Skip to content

feat: Channels integration for asynchronous gate approval and stuck alerts #130

@sriumcp

Description

@sriumcp

TL;DR

At HUMAN_DESIGN_GATE / HUMAN_FINDINGS_GATE, push a summary card to a configured Channel (Slack / Telegram / iMessage / webhook). Approve from your phone. Resume continues automatically. Same channel surfaces stuck-detection alerts (#7).

Why this matters

Long campaigns are run unattended with --auto-approve. When you do want a human in the loop you need to be at the terminal at the right second; otherwise gates auto-approve indistinguishably from a real approval. Channels is purpose-built for cross-device human-in-the-loop.

What's already shipped

Proposed approach

  1. Add channels: to campaign.yaml — list of channel configs (slack webhook URL, telegram bot, etc.).
  2. At each human gate, instead of (or in addition to) blocking the terminal:
    • POST the existing gate_summary_<phase>.json (rendered as markdown) to each channel.
    • Include "approve" / "reject" / "abort" reply tokens.
  3. Wait for a reply (with a configurable timeout that falls back to the campaign's existing auto-approve policy).
  4. Reuse the same channel surface for stuck-detection alerts emitted by Phase 2: Templates + orchestrator skeleton #7.

Acceptance criteria

  • A Slack-configured campaign posts the gate summary to the configured channel.
  • Replying with "approve" advances the campaign without terminal interaction.
  • If no reply arrives within the timeout, behavior falls back to the existing --auto-approve semantics.

Out of scope

  • Building a UI for replies — use whatever each channel provides natively (Slack interactive messages, Telegram inline keyboards, plaintext fallback).

Part of #120.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions