feat(flows): NF-6 Phase 4D — slash-breakdown baked-in flow #383
No reviewers
Labels
No labels
area:agents
area:dashboard
area:database
area:design
area:design-review
area:flows
area:infra
area:meta
area:security
area:sessions
area:webhook
area:workdir
security
type:bug
type:chore
type:meta
type:user-story
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
charles/claude-hooks!383
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/flows-slash-breakdown"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Ports
webhook-handlers.ts::handleIssueComment/breakdownbranch (lines 267-290) into a baked-in node-flow graph. Shipsslash-breakdownas the fifth seeded flow onissue_comment.slash_command.DSL extensions
One new monolithic node
slash.handle_breakdownwraps the trust-check + arg-parse + dispatch sequence. Legacy code is also monolithic, so granular nodes would expose customisation surface operators don't need (no flow-author-meaningful boundaries between trust check, parse, and dispatch).Three new injection types:
IsTrustedUserFn→isTrustedUser(now exported from webhook-handlers)ParseBreakdownCommentFn→parseBreakdownCommentfromdomain/workflow/slash-commandsDispatchBreakdownFn→dispatchBreakdownfromdomain/workflow/slash-commandsCutover
node_flows.suppress_legacy: ["issue_comment.slash_command"]skips the slash-command branch of the legacy switch arm atwebhook.ts:320-330.Important: the suppression list entry blocks the
/breakdownportion ONLY./hold,/ready,/raise-cap,/unassignhave no flow yet and continue from legacy. Documented in the loader header to prevent operator confusion.Test plan
mode: "live"against real/breakdowncomment, confirm parity viaGET /flows/divergence/summarysuppress_legacy: ["issue_comment.slash_command"]after clean soak🤖 Generated with Claude Code
Ports the `webhook-handlers.ts::handleIssueComment` `/breakdown` branch (lines 267-290) into a baked-in node-flow graph. Ships `slash-breakdown` as the fifth seeded flow on the `issue_comment.slash_command` trigger: src → router.filter (command.command === "breakdown") → slash.handle_breakdown (isTrustedUser → parseBreakdownComment → dispatchBreakdown) One new monolithic node `slash.handle_breakdown` wraps the trust-check + arg-parse + dispatch sequence. The legacy code is also monolithic, so granular nodes would expose customisation surface that operators don't need (no flow-author-meaningful boundaries between trust check, parse, and dispatch). Three new injection types land alongside: - `IsTrustedUserFn` → `isTrustedUser` (now exported from webhook-handlers) - `ParseBreakdownCommentFn` → `parseBreakdownComment` from domain/workflow/slash-commands - `DispatchBreakdownFn` → `dispatchBreakdown` from domain/workflow/slash-commands Cutover gate: `node_flows.suppress_legacy: ["issue_comment.slash_command"]` skips the slash-command branch of the legacy switch arm at `webhook.ts:320-330`. Note that the suppression list entry blocks the `/breakdown` portion only — `/hold`, `/ready`, `/raise-cap`, `/unassign` have no flow yet and continue from legacy. Documented in the loader's header so operators don't trip on it. Tests: 11 new e2e tests covering happy path, non-breakdown command no-op, untrusted commenter drop, dispatch-failure drop. AGENT_NODE_COUNT bumped from 10 to 11. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>