docs: clarify draft reducer contract

This commit is contained in:
lda
2026-07-21 11:18:55 +07:00 Verified
parent f89af77eae
commit a4aafe874d
2 changed files with 7 additions and 4 deletions
+3 -3
View File
@@ -45,9 +45,9 @@
- [ ] No focused operation declares workflow outcomes. `wf draft add end
--outcome error` can add the terminal node, but core validation rejects it
until the caller separately patches `/outcomes`.
- [ ] No focused operation updates workflow input/state/output schemas or state
reducer declarations after workspace creation. These modeled workflow
contracts currently require RFC 6902 edits.
- [ ] No focused operation updates workflow input/state/output schemas,
including reducer metadata carried by the state schema, after workspace
creation. These modeled workflow contracts currently require RFC 6902 edits.
- [ ] The dedicated capability-step CLI cannot set `desc`, `retry`,
`timeout_seconds`, or literal inputs at creation, and there is no focused
update-step operation. The generic RPC step payload can represent these
@@ -152,7 +152,9 @@ produce exactly one new workspace revision.
Schema documents are whole-field replacements, not deep merges. JSON Schema
keywords such as `required`, `$defs`, unions, and nested `properties` do not
have one safe generic merge rule. Callers that need field-level surgery retain
the existing raw JSON Patch operation.
the existing raw JSON Patch operation. State reducer declarations remain schema
metadata and are preserved when supplied in a replacement `state_schema`; this
slice does not invent a separate reducer-edit model.
At least one contract field must be supplied. Supplied outcomes must contain at
least one non-empty, unique value. Invalid request envelopes fail before
@@ -238,6 +240,7 @@ Tests must cover each interface rather than only the lowest-level helper.
- capability-free creation stores the exact stable skeleton;
- default schema objects are independent values;
- custom schemas, outcomes, name, and title are preserved;
- reducer metadata in a custom state schema is preserved unchanged;
- duplicate workspace IDs return `workspace_exists`;
- setting an existing start step can make a draft valid;
- setting a missing start step persists an invalid forward reference;