Skip to main content

Goal

Create, validate, publish, approve, activate, run, and inspect an immutable production media workflow.

Prerequisites

  • Assets access
  • Publish authority for versions containing production, costly, or external actions
  • An active execution principal that retains access to every referenced resource

Workflow

1
Open Assets Workflows and choose a template or blank canvas; both produce the same graph contract.
2
Connect typed ports, configure nodes in the inspector, and resolve every validation issue.
3
Save the draft with its expected revision. Layout-only edits do not change the semantic digest.
4
Publish an immutable version. Review and approve its exact risks and constraints when required.
5
Activate that version, then let its trigger dispatch or start a manual run.
6
Inspect persisted node attempts, sanitized inputs/outputs, branch decisions, waits, nested Stackie calls, warnings, and approvals.

Build and test a workflow in the dashboard

Open Assets → Manage → Workflows. Choose a starting template or a blank workflow, give it a useful name, and add nodes from the palette. Connect compatible ports, then select each node to configure it in the inspector. Start with one clear outcome, such as preparing uploaded media and requesting editorial review. Save the draft and validate it before choosing Publish version. A published version is an immutable definition; Activate chooses the version that receives events or schedules. Saving a draft does not silently change an already active workflow. Complete any approval requested by that workflow before activation. Start a manual run when the workflow supports it, or produce the configured trigger event. Open run history to inspect node attempts, outputs, waits and failures. Retry or cancel the existing run when appropriate instead of repeatedly creating equivalent work. If another editor saved a newer draft, reload and compare before saving again.

Connect signed event notifications

Open Manage → Operations → Signed webhooks to connect an external receiver. Enter Webhook URL and comma-separated Event subscriptions, then choose Connect endpoint. Save the signing secret when it is first displayed and configure the receiver before relying on deliveries. Choose Send test event and open History. A queued test is not proof of receipt: refresh history and inspect the receiver response. If a delivery failed, fix the receiver and retry the recorded delivery; retries retain the same event and delivery IDs, so the receiver should deduplicate them. The receiver verifies the V2 signature over the timestamp and exact raw body and rejects timestamps older than five minutes. Disconnect stops the endpoint and cancels pending deliveries while retaining history. For WordPress, use the managed site connection described in WordPress media integration, which can create its linked webhook during setup.

Graph contract and validation limits

  • One trigger; an acyclic, fully reachable graph; at most 100 nodes, 200 edges, depth 50, branch fan-out 10, and eight concurrently runnable nodes.
  • Semantic definition and layout are separate. Position, viewport, grouping, and annotations do not change the semantic digest or invalidate approval.
  • Nodes declare retry, timeout, and failure policy. Conditions support equals, not-equals, exists, contains, in, and numeric/date comparisons—no regex or arbitrary expression execution.
  • Joins use all_success, all_settled, or any_success. Branches must terminate and edge ports must be type-compatible.
  • Inline secrets and credential-bearing strings are rejected. Destructive, credential-revealing, billing, ownership, team-membership, arbitrary SQL/shell/JavaScript, and unrestricted HTTP operations are absent from the catalog.

Minimal graph

Triggers and node catalog

  • Triggers: asset upload, asset lifecycle event, typed StackShift event, five-field cron with IANA timezone, signed inbound webhook, and manual run.
  • Asset nodes: search/get, scan, moderate, analyze, transform, transcribe, generate, organize/tag/collect/move, branch/version promotion, publish, and signed webhook notification.
  • Native StackShift actions cover registered reversible and governed operations across projects/apps, builds/deployments, databases/backups, S2/storage, domains/mail, mobile/commerce, compute/BYOC/sandboxes, incidents/governance, and notifications.
  • Native actions invoke owning Go services directly under the workflow principal. They do not call loopback HTTP, mint internal PATs, or bypass service authorization and idempotency.
  • Control nodes are condition, parallel split, join, durable delay, success, and failure. Integration nodes are governed Stackie and restricted external HTTP.

Templates and blank canvas

  • Secure Image Publish; Video Ready Publish; Scheduled Library Publish; AI Image Generation and Moderation; Moderation Review Branch; Transform, Publish, and Notify.
  • Asset Publish and Project Redeploy; Approved Media and Mobile Release Promotion; Media Failure to Incident and Stackie Diagnosis; Asset Event to StackShift Mail Campaign; Cross-service Operations Review.
  • Catalog responses mark each template valid and include concrete issues if an action is unavailable or configuration is incomplete. A template never silently becomes executable with a missing action.
  • Every template opens as an ordinary editable graph. The desktop editor supports search, drag/drop, typed handles, reconnect, copy/paste, multi-select, groups, undo/redo, ELK auto-layout, minimap, and test output. The outline editor is the accessible and small-screen operating surface.

Workflow API and SDK sequence

Expected result

Only the active immutable version receives events or schedules, and no path can publish an asset before successful scan and moderation.

Common failures

  • Autosave receives 412 because another editor changed the revision; compare and reload instead of overwriting.
  • Publish returns 422 because a node is unreachable, an edge type is incompatible, configuration is incomplete, or publish is not dominated by scan and moderation.
  • Activation returns 409 because a required version approval is pending, expired, or bound to an older semantic digest or connection revision.
  • A run fails before a node because the execution principal lost permission to a referenced account resource.

Media Workflow authority, integrations, and recovery

Operate workflow grants, execution principals, durable waits, restricted HTTP connections, signed inbound hooks, retries, cancellation, and post-publish warnings.

Deterministic image, video, and audio transforms

Define ordered v2 transforms for images, video renditions, audio extraction, and timestamp thumbnails; store eager presets or materialize durable derivatives.

Stackie asset tools and MCP

Use the same governed asset actions from Stackie, workflow Stackie nodes, and stateless Streamable HTTP MCP clients.