FlowDrop Workflow Specification 1.0-draft

A workflow must be named

Every workflow carries a name, on creation and on every update. The name is what a person uses to find it again, so the system refuses to store one without it.

The rule

Normative: this is the rule
  1. A workflow's name is required when it is created and when it is updated, and must be a non-empty string.
  2. An implementation must accept a name of at least 255 Unicode code points, and may accept longer.
  3. A request that omits the name, sends an empty one, or exceeds the implementation's limit is refused with 400, and nothing is stored.

What it means

The name is the only field a workflow cannot be stored without. Everything else either defaults or is optional: STORE-4 lets nodes, edges and metadata default to empty on create, and leaves them untouched on a partial update. The name is the exception; it is required on update too, so there is no name-omitted PUT.

The refusal happens at the boundary, before the workflow is written, so a rejected update leaves the stored workflow exactly as it was.

Example

Creating a workflow with no name400 — refused
POST /api/flowdrop/workflows

{ "nodes": [], "edges": [] }
A name that is a single zero: a string, so a name201 — stored
POST /api/flowdrop/workflows

{ "name": "0" }

Why

Three details here were once specified differently, each because a host language's idiom was mistaken for a decision.

A name of "0" is a name. Nothing about a workflow makes a single zero unsuitable, so the rule tests for a non-empty string and nothing else.

Length counts code points, not bytes. Counting bytes makes the limit depend on which alphabet the name is written in. Saying "characters" would only move the ambiguity.

255 is a floor, not a ceiling. The number was borrowed from a database convention no implementation here runs. A floor gives the guarantee that matters (a name within 255 code points is accepted everywhere) without freezing one system's limit into every other.

Recorded under OPEN-19, which covers seven such corrections.

Why

Recorded under OPEN-19.

References

Normative: incorporated into this rule

Further reading

  • Unicode UAXUnicode Text SegmentationWhy the limit counts code points and not grapheme clusters, which are closer to what a person calls a character and much harder for two implementations to agree on.
Rule identifiers are permanent and are never renumbered. Each implementation publishes its own standing against these rules; this specification does not.spec 1.0-draft · STORE-2 · changed in spec 1.0