Version Resolving
When a workflow step references a function block with a partial version, the engine resolves it to the newest matching version using semantic versioning rules.
Resolution Rules
| Input version | Resolution strategy | Example |
|---|---|---|
1.2.3 |
Exact match | Must match 1.2.3 precisely |
1.2 |
Highest patch | Finds the latest 1.2.* (e.g., 1.2.5) |
1 |
Highest minor + patch | Finds the latest 1.*.* (e.g., 1.3.2) |
At least the major version must be specified. A major version bump implies breaking changes, so the engine never auto-upgrades across major versions.
Example
Given these registered versions of fb.neops.io/ping:
| Version | Status |
|---|---|
1.0.0 |
Available |
1.1.0 |
Available |
1.1.2 |
Available |
2.0.0 |
Available |
Resolution results:
| Reference | Resolves to | Why |
|---|---|---|
fb.neops.io/ping:1.1.2 |
1.1.2 |
Exact match |
fb.neops.io/ping:1.1 |
1.1.2 |
Highest patch in 1.1.* |
fb.neops.io/ping:1 |
1.1.2 |
Highest minor+patch in 1.*.* |
fb.neops.io/ping:2 |
2.0.0 |
Highest in 2.*.* |
Resolution Order
The engine sorts candidates in descending order:
- Major version (descending)
- Minor version (descending)
- Patch version (descending)
The first match is returned. If no match is found, the workflow validation fails.
Implications for Workflow Authors
Pin to major for flexibility:
: Reference fb.neops.io/ping:1 to automatically pick up bug fixes and minor improvements.
Pin to exact for stability:
: Reference fb.neops.io/ping:1.0.0 in production workflows where you need deterministic behavior.
Pin to minor for a balance:
: Reference fb.neops.io/ping:1.1 to get patch fixes but stay on a known feature set.