refactor: remove placeholder join step
This commit is contained in:
@@ -112,7 +112,6 @@ Exactly one step-kind key must be present. Allowed step-kind keys are:
|
||||
- `use`
|
||||
- `foreach`
|
||||
- `interrupt`
|
||||
- `join`
|
||||
|
||||
Zero kind keys or multiple kind keys are validation errors.
|
||||
|
||||
@@ -243,19 +242,6 @@ This lowers to the current core `ForeachNode`.
|
||||
|
||||
This lowers to the current core `InterruptNode`.
|
||||
|
||||
### `join`
|
||||
|
||||
```json
|
||||
{
|
||||
"join": {}
|
||||
}
|
||||
```
|
||||
|
||||
This lowers to the current core `JoinNode`.
|
||||
|
||||
`join` is not a reverse branch. It remains reserved for actual join/frame
|
||||
semantics.
|
||||
|
||||
## Routes
|
||||
|
||||
Most ordinary edges should be authored through `routes`:
|
||||
@@ -337,7 +323,8 @@ node_c.unreachable
|
||||
-> runtime_error
|
||||
```
|
||||
|
||||
This is not `join`. It is compressed declaration of several ordinary edges.
|
||||
This is not synchronization. It is compressed declaration of several ordinary
|
||||
edges.
|
||||
|
||||
Possible later surfaces:
|
||||
|
||||
@@ -366,7 +353,7 @@ That should be handled as its own pass, not smuggled into this MCP draft change.
|
||||
Potential later core work:
|
||||
|
||||
- true graph-as-node / subgraph support
|
||||
- meaningful join semantics
|
||||
- explicit fork/gather semantics
|
||||
- future START-edge support if `Workflow.start` changes
|
||||
|
||||
### Draft `route` Sugar
|
||||
|
||||
@@ -157,7 +157,6 @@ Example:
|
||||
"SubgraphNode",
|
||||
"ConditionNode",
|
||||
"ForeachNode",
|
||||
"JoinNode",
|
||||
"EndNode",
|
||||
"InterruptNode"
|
||||
]
|
||||
|
||||
@@ -85,8 +85,8 @@ semantic operation produces one patch and consumes one revision.
|
||||
clients do not need to know about the internal service split.
|
||||
|
||||
The service boundary is intentionally not capability-only. The current draft
|
||||
model also represents `end`, `condition`, `interrupt`, `foreach`, `join`,
|
||||
`when`, `choose`, and `match` steps, and core may gain more step kinds. This
|
||||
model also represents `end`, `condition`, `interrupt`, `foreach`, `when`,
|
||||
`choose`, `match`, and subgraph steps, and core may gain more step kinds. This
|
||||
slice adds semantic operations only where required, but new step-kind helpers
|
||||
belong in `WorkflowDraftAuthoringApi` rather than a parallel authoring system.
|
||||
|
||||
|
||||
@@ -132,7 +132,6 @@ Node presentation distinguishes the existing core node kinds:
|
||||
- condition;
|
||||
- interrupt;
|
||||
- foreach;
|
||||
- join;
|
||||
- end and other control nodes.
|
||||
|
||||
Each node shows its stable id and concise semantic label. Selecting a node opens
|
||||
@@ -226,4 +225,3 @@ The slice is complete when:
|
||||
7. stale requests and partial failures cannot corrupt newer selections;
|
||||
8. the `lda_report_workflow` lifecycle is readable without scrolling raw JSON;
|
||||
9. frontend tests, typecheck, production build, and optional live smoke pass.
|
||||
|
||||
|
||||
@@ -56,7 +56,6 @@ deliberate authoring vocabulary that is later lowered by
|
||||
- `DraftUseStep`
|
||||
- `DraftForeachStep`
|
||||
- `DraftInterruptStep`
|
||||
- `DraftJoinStep`
|
||||
- `DraftEndStep`
|
||||
- `DraftWhenStep`
|
||||
- `DraftChooseStep`
|
||||
@@ -149,7 +148,6 @@ Declared top-level outcomes are:
|
||||
- `foreach`: `loop`, `done`, plus `completed_with_errors` when the item-error
|
||||
policy is `skip` or `collect`;
|
||||
- `interrupt`: `interrupt.outcomes`;
|
||||
- `join`: `done`;
|
||||
- `subgraph`: `subgraph.outcomes`.
|
||||
|
||||
The capability helper remains distinct because it resolves a capability,
|
||||
@@ -175,7 +173,7 @@ reject malformed or ambiguous step objects before dispatching to the API.
|
||||
|
||||
The Python RPC client implements the same method on `WorkflowApi`. Client and
|
||||
server serialize steps with aliases so fields such as foreach `as` and when
|
||||
`if` retain their canonical wire names. Round-trip tests cover all nine step
|
||||
`if` retain their canonical wire names. Round-trip tests cover all eight step
|
||||
variants, including interrupt schemas and subgraph workflow references.
|
||||
|
||||
## CLI Shape
|
||||
@@ -186,7 +184,6 @@ Register a focused Typer application beneath `wf draft`:
|
||||
wf draft add capability
|
||||
wf draft add interrupt
|
||||
wf draft add foreach
|
||||
wf draft add join
|
||||
wf draft add end
|
||||
wf draft add when
|
||||
wf draft add choose
|
||||
@@ -210,7 +207,6 @@ Variant-specific options are:
|
||||
`--resume LOCAL_SOURCE=STATE_TARGET`, and repeatable `--outcome`;
|
||||
- `foreach`: `--over`, `--as`, `--mode`, `--item-error`, optional
|
||||
`--collect-to`, `--max-active`, and `--max-outstanding`;
|
||||
- `join`: no variant-specific options;
|
||||
- `end`: `--outcome` and no `--route`;
|
||||
- `when`: `--condition-file`, `--then`, and `--otherwise`;
|
||||
- `choose`: `--clauses-file` containing the ordered clause array and
|
||||
@@ -269,7 +265,7 @@ modules need them; avoid a broad CLI refactor.
|
||||
|
||||
### CLI
|
||||
|
||||
- `wf draft add --help` lists all nine commands.
|
||||
- `wf draft add --help` lists all eight commands.
|
||||
- Per-command help exposes only relevant options.
|
||||
- Every command builds the expected `DraftStep`, incoming source, and routes.
|
||||
- Invalid flag combinations fail before calling the API.
|
||||
|
||||
@@ -28,7 +28,7 @@ The remaining graph-authoring work is split into independently useful slices:
|
||||
1. selected-step input and output dataflow;
|
||||
2. workflow Input, State, and Outcomes contract projections;
|
||||
3. explicit End authoring and a typed Add step palette;
|
||||
4. typed interrupt, control, subgraph, foreach, and join forms; and
|
||||
4. typed interrupt, control, subgraph, and foreach forms; and
|
||||
5. direct graph gestures lowered through the same canonical mutations.
|
||||
|
||||
This document specifies only the first item.
|
||||
|
||||
@@ -56,7 +56,7 @@ Slice 6 includes:
|
||||
Slice 6 excludes:
|
||||
|
||||
- explicit End-node creation;
|
||||
- typed creation forms for interrupt, condition, subgraph, foreach, or join;
|
||||
- typed creation forms for interrupt, condition, subgraph, or foreach;
|
||||
- graph gesture binding by drawing edges;
|
||||
- arbitrary schema inference from runtime values;
|
||||
- renaming existing step ids;
|
||||
@@ -140,7 +140,7 @@ independent source of truth once the operation is available.
|
||||
Standard frame context currently includes values such as prior outcome, active
|
||||
incoming edge, scope id, lineage id, and parent lineage id. Foreach iteration
|
||||
frames additionally expose loop item, loop index, and the configured foreach
|
||||
alias. Future fork/join features may add branch-scoped context through the same
|
||||
alias. Future fork/gather features may add branch-scoped context through the same
|
||||
inventory without changing high-level clients.
|
||||
|
||||
Context availability is computed by core/API code using workflow graph and
|
||||
|
||||
@@ -36,7 +36,7 @@ They are runtime policy, not workflow graph semantics.
|
||||
|
||||
**Step Attempt** is one admitted attempt to execute a selected workflow `Step`
|
||||
in one frame. Node uses, conditions, foreach controllers, subgraph boundaries,
|
||||
interrupt nodes, joins, and explicit end nodes all count.
|
||||
interrupt nodes, and explicit end nodes all count.
|
||||
|
||||
**Step Number** is the one-based ordinal assigned to an admitted step attempt
|
||||
within a run.
|
||||
@@ -256,7 +256,7 @@ with the run.
|
||||
### Core counting
|
||||
|
||||
- A budget of one admits exactly one step and denies the second.
|
||||
- Node, condition, foreach, subgraph, interrupt, join, and explicit end steps
|
||||
- Node, condition, foreach, subgraph, interrupt, and explicit end steps
|
||||
count.
|
||||
- A transition to legacy `END` does not create an extra attempt.
|
||||
- Handler failure still consumes its admitted step.
|
||||
|
||||
Reference in New Issue
Block a user