Versioning that holds across the stack.
A Vadyl project advances through monotonic publications. Each publication carries a ContractVersionId and a SourceCommitId. In-flight workflows pin to LockedPublicationVersion. Generated SDKs embed a manifest with seven dimensions of version provenance — and a runtime check that fails fast on incompatibility.
Atomic. Auditable. Rollback first-class.
Monotonic version counter
Per-project publication version. Atomic transitions. Auditable runtime history. The descriptor cache invalidates coherently across instances.
ContractVersionId + SourceCommitId
Every publication carries explicit references to the contract surface version and the source commit. Three identities, one publication — full lineage from an SDK call back to the source line.
Multi-surface carry-forward
One publication ships every execution-surface bundle: CoreHandler · DurableWorkflow · EventConsumer · ScheduledJob · WebhookHandler · EdgeHandler · ManagementHandler — atomically.
Locked-version workflow pinning
An in-flight workflow pins to the publication it started on. New deploys can't break running flows. WorkflowInvocationIdentity carries the version through every advance, signal, compensation.
Reserve / Finalize / Rollback
AuthoredPublicationService: reserve a version slot, finalize the bundle when the build completes, rollback atomically. The state machine is durable and crash-resumable.
Unbounded latest resolution
FindMaxAuthoredArtifactPublicationVersionAsync is the canonical resolver for 'latest authored publication.' One canonical path; no scattered branches with custom max queries.
One cross-layer rule. Six provenance dimensions.
Every generated SDK embeds a SdkGenerationManifest with seven independent dimensions. Only one — the generated-format version — is a hard cross-layer compatibility seam. The other six are provenance for traceability.
The runtime calls verifyGeneratedCompatibility(manifest) on first use. Mismatch on the generated-format version fails fast with a typed VadylIncompatibleGeneratedSdkError. Mismatches on any of the other six dimensions are warnings, not failures — they're for traceability, not for breaking your build.
Atomic transitions
Version · ContractId · CommitId
Six provenance + one seam
Typed runtime error
Versioning that does not lie.
Atomic publications. Locked workflow versions. SDK manifest with seven dimensions. Runtime compatibility check. Rollback as a first-class verb. The truth flows from source commit to running call.