ADR: lineage record version compatibility#7171
Draft
jorgee wants to merge 1 commit into
Draft
Conversation
Signed-off-by: jorgee <jorge.ejarque@seqera.io>
✅ Deploy Preview for nextflow-docs-staging canceled.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
adr/20260522-lineage-version-compatibility.md) describing hownf-lineagerecords should evolve across Nextflow releases.lineage/1.0,lineage/1.1,lineage/2.0, …) with a 1:1 mapping to a JSON schema document. The existinglineage/v1beta1string is grandfathered as a legacy tier label.kind) and a JSON-tree migration mechanism for cross-MAJOR records.serde/migration/package andLinMigrationRegistrywhen the first cross-MAJOR migrator lands, plugin-contributed migrators as an SPI, and schema-generation tooling in thenextflow-io/schemasrepo.This is a design-only change. No code is modified by this PR. The minimal
LinTypeAdapterFactoryread-dispatch update will land in a follow-up PR once the ADR is accepted.Background
Today
LinTypeAdapterFactory.read()rejects any record whoseversiondoes not equalLinModel.VERSIONexactly. That works while only one version exists, but it is a guard, not a versioning strategy. Before any non-trivial change to the lineage model lands, we need a written contract that distinguishes compatible deltas (no migration) from incompatible ones (explicit migration), and a recipe for keeping old records readable on upgrade.Test plan
adr/style (cf.adr/20260306-record-types.md).