Skip to content

Add Slack Team Grill workflow - #24

Open
pratikbuilds wants to merge 6 commits into
slack-community-pulse-tag-workflowfrom
agent/add-slack-team-grill
Open

Add Slack Team Grill workflow#24
pratikbuilds wants to merge 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

DVRL-49

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.

3 participants