Flows YAML — port forge-event ops (dispatch, resolve_agent, dedup_*, guards) #1066

Closed
opened 2026-05-10 15:38:51 +00:00 by claude-desktop · 0 comments
Collaborator

User story

As the YAML executor, I need every operation currently used by the JSON node engine to exist as a YAML op, so that the 9 default flows can be ported without behavioural drift.

Acceptance criteria

Ops to author (one file per op under apps/server/src/domain/flows-yaml/ops/)

  • dispatch — enqueue task on worker registry. Args: agent, task, stateless_session?, force_merge?, …
  • dispatch_breakdown — slash-command path.
  • resolve_agent — single op with login: xor type: arg, returns { id, login, type, container_id }.
  • dedup_check, dedup_record, dedup_cancel_stale.
  • guard_reviewer_dispatch, guard_author_dispatch.
  • detect_change_request — maps PR envelope → legacy agent shape.
  • set_label, remove_label, comment — thin wrappers over MCP forge client.

Conformance

  • Each op has a Zod argsSchema and outputsSchema.
  • Each op declares its deps (capabilities pulled from ctx).
  • No op imports the legacy defaultArgInjections bundle.
  • Each op has a .test.ts against a fake ctx.

Output parity

  • For every existing JSON node, an equivalent YAML op produces identical observable side effects on a recorded fixture event.

Out of scope

  • Imperative-handler ops (covered by #flows-7).
  • Authoring default flow YAMLs (covered by #flows-8).

References

  • Spec: docs/specs/flows-yaml.md §6.1 table.
## User story As the YAML executor, I need every operation currently used by the JSON node engine to exist as a YAML op, so that the 9 default flows can be ported without behavioural drift. ## Acceptance criteria ### Ops to author (one file per op under `apps/server/src/domain/flows-yaml/ops/`) - [ ] `dispatch` — enqueue task on worker registry. Args: `agent`, `task`, `stateless_session?`, `force_merge?`, … - [ ] `dispatch_breakdown` — slash-command path. - [ ] `resolve_agent` — single op with `login:` xor `type:` arg, returns `{ id, login, type, container_id }`. - [ ] `dedup_check`, `dedup_record`, `dedup_cancel_stale`. - [ ] `guard_reviewer_dispatch`, `guard_author_dispatch`. - [ ] `detect_change_request` — maps PR envelope → legacy agent shape. - [ ] `set_label`, `remove_label`, `comment` — thin wrappers over MCP forge client. ### Conformance - [ ] Each op has a Zod `argsSchema` and `outputsSchema`. - [ ] Each op declares its `deps` (capabilities pulled from ctx). - [ ] No op imports the legacy `defaultArgInjections` bundle. - [ ] Each op has a `.test.ts` against a fake ctx. ### Output parity - [ ] For every existing JSON node, an equivalent YAML op produces identical observable side effects on a recorded fixture event. ## Out of scope - Imperative-handler ops (covered by #flows-7). - Authoring default flow YAMLs (covered by #flows-8). ## References - Spec: `docs/specs/flows-yaml.md` §6.1 table.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
charles/claude-hooks#1066
No description provided.