Skip to content

Commit 8e852da

Browse files
authored
Merge pull request #8 from simstudioai/deploy-workflow-versions-and-promotion
deploy-workflow: version documents and fork-sync promotion
2 parents 8af77be + 0fdb677 commit 8e852da

1 file changed

Lines changed: 37 additions & 0 deletions

File tree

‎skills/deploy-workflow/SKILL.md‎

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,18 @@ post-deployment state.
1717
access configuration.
1818
- Never create, rotate, or reveal an API key unless the user separately asked for key management.
1919

20+
## What a stored version is not
21+
22+
A stored workflow version nulls out `credential`, `oauthCredential`, resource selectors, and
23+
related binding fields. Two consequences:
24+
25+
- A diff against a version document is not a change report. Blocks whose only delta is a nulled
26+
field show as changed, and selector changes do not show at all - the diff overstates and
27+
understates simultaneously. Diff live state against live state instead.
28+
- A revert restores the nulled document, stripping every credential and selector in the workflow.
29+
Never present revert as a safe rollback; the reverted draft needs its bindings re-established
30+
before it can run.
31+
2032
## Choose one surface
2133

2234
- **API:** for software calling a workflow as a pipeline. Publish with
@@ -42,6 +54,31 @@ Do not choose a surface from convenience. Ask when the intended caller does not
4254
- Reuse an existing MCP server when it is the intended tool collection; do not create duplicates by
4355
default.
4456

57+
## Promoting across workspaces with fork sync
58+
59+
When a workflow moves between workspaces via a fork push, the sync has its own semantics; do not
60+
reason about it as a copy.
61+
62+
- The push creates resources that are missing in the target and rebinds selector-bound references
63+
to them. Do not pre-create tables in the target as a promotion prerequisite - pre-creating
64+
defeats the mapping and leaves references pointing at the source.
65+
- A table the push creates arrives holding the source's rows. Re-seed environment-specific values,
66+
feature flags and configuration especially, immediately after the push, before anything reads
67+
them. Where possible design flag rows so the source's value is also the safe value in every
68+
target.
69+
- Deployment state travels. A workflow deployed in the source is live in the target as soon as the
70+
sync completes, and a schedule trigger starts firing there on its own - there is no separate
71+
deploy step in the target. Before syncing anything scheduled or triggered, state plainly what
72+
will start running where and when.
73+
- Bind every resource through its selector and leave the manual id fields empty. The push remaps
74+
selectors but carries a hardcoded manual id verbatim, silently pointing the promoted workflow at
75+
the source workspace's resource - and a cross-workspace read succeeds, so no error surfaces.
76+
- The push does not preserve a block's basic/advanced mode: some blocks arrive rebound and working,
77+
others arrive carrying the source's manual id and broken, with nothing surfacing which is which.
78+
"Works in the source workspace" is therefore never the completion condition. Verify each target
79+
environment after promotion - run its workflows or audit its bindings - rather than inferring
80+
health from the source.
81+
4582
## Verify and report
4683

4784
After publishing, read the deployment again. Confirm its active status and version and return the

0 commit comments

Comments
 (0)