Skip to content

Add Slack Team Grill workflow - #24

Merged
TheGreatAxios merged 6 commits into
slack-community-pulse-tag-workflowfrom
agent/add-slack-team-grill
Aug 18, 2026
Merged

Add Slack Team Grill workflow#24
TheGreatAxios merged 6 commits into
slack-community-pulse-tag-workflowfrom
agent/add-slack-team-grill

Conversation

@pratikbuilds

Copy link
Copy Markdown
Collaborator

Summary

  • add an adaptive Slack Team Grill workflow with one three-option decision at a time
  • use Corbits Tag HTTP ingress and the mounted Chat SDK bot for cards and button actions
  • deliver the final report as soon as the report step finishes, even if the local run has not settled
  • reuse the shared Corbits Tag workspace inherited from the stacked Slack starters

Verification

  • bun install --frozen-lockfile
  • bun run test — 3 passed, 0 failed
  • bun run typecheck
  • bun build src/cli.ts --target=bun --outdir /private/tmp/corbits-team-grill-pr23-build
  • bun run start --help

Live Slack verification was not repeated for this change.

Stack

This PR targets slack-community-pulse-tag-workflow, the head branch of #23.

@TheGreatAxios TheGreatAxios left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Self-review (agent)

Verdict: Approve (minors / test gaps — ship-ready for an example starter)

What this PR does

Pure additive starter/slack-team-grill: adaptive one-decision-at-a-time Slack flow via Corbits Tag cards/actions. Early report delivery posts as soon as the report step finishes, even if the local run has not fully settled. Includes session.test.ts + workflow.test.ts.

Interactive session correctness — looks solid

  • First-click wins: status flips to advancing and clears current question/message with no await between check and flip (no concurrent interleave on the event loop)
  • Stale/forged clicks rejected via sessionId + thread ownership + round + actionIdFor(optionId)
  • One grill per thread via byThread before create
  • Adaptive rounds: each round is a separate workflow; awaitSignal completes the question path; report path uses already-complete decisions when needsQuestion: false
  • Early delivery: race reportReady vs run.complete, post with timeout + plain-text fallback, finishSession, then fire-and-forget cancel if report arrived first

Findings

Severity Finding
major (tests) session.test.ts only covers early report + re-entry. Missing: question → select → lock → next round; concurrent double-click; already-running; stale round/wrong session; failure path; report plain-text fallback. Core interactive product path is untested.
minor No timeout while status === "advancing" after click — if signal is lost or complete never settles, the thread stays blocked forever (alreadyRunning).
minor No idle timeout while awaiting-choice — abandoned grills pin the thread until process restart (documented process-local demo limit).
minor Tiny window after posting the question card before awaiting-choice: buttons are live in Slack but clicks are silently dropped.
minor If currentMessage.edit(locked) fails, original buttons stay visually live (clicks no-op by validation) — confusing if a later question is also posted.
nit Ignored clicks (duplicate/stale/advancing) give no user feedback.

Test coverage notes

  • workflow.test.ts — good: signal blocks completion; complete path routes generate→report
  • session.test.ts — good for early delivery + cancel + map cleanup; expand for select/multi-round when convenient

Checks

  • Full read of session/workflow/cards/tools/selection + tests
  • Install/typecheck not re-run here (Tag submodule uninitialized in review worktree); author reports 3 tests passed

No blockers for an example starter. Expanding session tests for the interactive path would make this much more confidence-inspiring.

@linear-code

linear-code Bot commented Aug 6, 2026

Copy link
Copy Markdown
@TheGreatAxios
TheGreatAxios merged commit 7f87047 into agent/add-slack-post-to-x Aug 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

3 participants