addedInput schema / properties / steps / items / allOf
Added value: +[
+ {
+ "not": {
+ "required": [
+ "id",
+ "step_id"
+ ]
+ }
+ }
+]
changedInput schema / properties / steps / items / properties / depends_on / description
Previous value: -"Optional ids of steps this one builds on. Builder metadata only: it is recorded and returned, and it does NOT reorder or parallelise execution. Steps always run in list order."New value: +"Optional ids of steps this one builds on. Legacy DAG workflows execute sequentially in topological dependency order; this does not parallelise execution. Do not combine depends_on with routed fields."
addedInput schema / properties / steps / items / properties / human_gate
Added value: +{
+ "description": "Require approval from the authenticated human review UI. API-key and MCP callers cannot cross this gate.",
+ "type": "boolean"
+}
addedInput schema / properties / steps / items / properties / next_step
Added value: +{
+ "description": "Optional next step id for an explicitly routed workflow. Do not combine routed fields with depends_on.",
+ "maxLength": 100,
+ "minLength": 1,
+ "pattern": "^(?:__end__|[A-Za-z0-9][A-Za-z0-9_.:-]*)$",
+ "type": "string"
+}
addedInput schema / properties / steps / items / properties / quality_gate
Added value: +{
+ "additionalProperties": false,
+ "allOf": [
+ {
+ "if": {
+ "properties": {
+ "schema": {
+ "const": "scope_decision/v1"
+ }
+ },
+ "required": [
+ "schema"
+ ]
+ },
+ "then": {
+ "properties": {
+ "blocking_severities": {
+ "const": [
+ "P0",
+ "P1"
+ ]
+ },
+ "max_iterations": {
+ "const": 1
+ }
+ }
+ }
+ }
+ ],
+ "properties": {
+ "blocking_severities": {
+ "items": {
+ "enum": [
+ "P0",
+ "P1",
+ "P2",
+ "P3",
+ "P4",
+ "P5"
+ ],
+ "type": "string"
+ },
+ "maxItems": 6,
+ "minItems": 1,
+ "type": "array",
+ "uniqueItems": true
+ },
+ "loop_to": {
+ "maxLength": 100,
+ "minLength": 1,
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]*$",
+ "type": "string"
+ },
+ "max_iterations": {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "pass_to": {
+ "maxLength": 100,
+ "minLength": 1,
+ "pattern": "^(?:__end__|[A-Za-z0-9][A-Za-z0-9_.:-]*)$",
+ "type": "string"
+ },
+ "schema": {
+ "enum": [
+ "severity_findings/v1",
+ "scope_decision/v1"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "schema",
+ "loop_to",
+ "pass_to",
+ "max_iterations"
+ ],
+ "type": "object"
+}
addedInput schema / properties / steps / items / properties / requires_distinct_provider_from
Added value: +{
+ "description": "Require this step's actual provider to differ from the provider that produced the named earlier step.",
+ "maxLength": 100,
+ "minLength": 1,
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]*$",
+ "type": "string"
+}
addedInput schema / properties / steps / items / properties / step_id
Added value: +{
+ "description": "Canonical stable identifier for routed steps. Do not supply both step_id and the legacy id field.",
+ "maxLength": 100,
+ "minLength": 1,
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]*$",
+ "type": "string"
+}
changedInput schema / properties / steps / items / properties / type / description
Previous value: -"Optional kind of node. Defaults to 'agent' -- ask a model a question -- which is the only kind this build can execute. 'transform' and 'connector' are accepted and saved so a workflow authored for a later build round-trips, but a run that reaches one fails that single step with a plain message. Do NOT use them for work that must actually run."New value: +"Optional executable node kind. Defaults to 'agent', which asks a model a question. 'transform' runs a supported deterministic local operation; 'connector' invokes the configured connector runtime and fails that step if the runtime is unavailable."