From 4595fc3be07f5eb0c97a8bd8f5ea434c4789852c Mon Sep 17 00:00:00 2001 From: Connor Tsui Date: Sun, 20 Sep 2026 10:36:13 -0400 Subject: [PATCH] docs: preserve versioning proof for separate review Signed-off-by: "Connor Tsui" --- docs/_static/versioning-proof.pdf | Bin 0 -> 187481 bytes docs/specs/versioning-proof.typ | 592 ++++++++++++++++++++++++++++++ 2 files changed, 592 insertions(+) create mode 100644 docs/_static/versioning-proof.pdf create mode 100644 docs/specs/versioning-proof.typ diff --git a/docs/_static/versioning-proof.pdf b/docs/_static/versioning-proof.pdf new file mode 100644 index 0000000000000000000000000000000000000000..2f1741210978d625ed3579fc2f474ce64b1a85a8 GIT binary patch literal 187481 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%0Dvfu3BW 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 literal 0 HcmV?d00001 diff --git a/docs/specs/versioning-proof.typ b/docs/specs/versioning-proof.typ new file mode 100644 index 00000000000..4b54683772a --- /dev/null +++ b/docs/specs/versioning-proof.typ @@ -0,0 +1,592 @@ +// SPDX-License-Identifier: CC-BY-4.0 +// SPDX-FileCopyrightText: Copyright the Vortex contributors + +#set document(title: "Vortex versioning: model and proofs", author: "Vortex contributors") +#set page(paper: "a4", margin: (x: 23mm, y: 22mm), numbering: "1") +#set text(size: 10.5pt) +#set par(justify: false, leading: 0.65em) +#set heading(numbering: "1.1") +#set math.equation(numbering: "(1)") +#set table(inset: 6pt, stroke: 0.4pt + luma(75%)) +#show heading.where(level: 1): set block(above: 1.7em, below: 0.7em) +#show heading.where(level: 2): set block(above: 1.2em, below: 0.5em) + +#align(center)[ + #text(size: 21pt)[Vortex versioning] + #v(0.3em) + #text(size: 14pt)[Model, proof obligations, and compatibility theorems] +] +#v(1em) + +This document proves the compatibility guarantees described in the Versioning documentation. +Under the stated assumptions, every successful write constrained to a set of editions can be read +with the same meaning by any reader that supports those editions, including a reader older than +the writer. + +These are mathematical proofs about a model. They are not a machine-checked proof of the Rust +implementation. The assumptions require correct readers and writers, fixed serialized formats, +and retained support for those formats in later versions of the code. The implementation section +identifies the remaining work. In particular, configuring compression schemes for each target +edition is still planned. + += Compatibility and writer invariants + +I1 through I7 establish compatibility for successful writes and require later versions of the +reader code to preserve it. I8 through I10 require the writer to retain supported targets, select +the oldest suitable format, and avoid recompression solely to meet an edition's constraints. + +#[ +#set enum(numbering: n => [I#n.]) + ++ *A frozen wire contract is immutable.* A typed wire ID always identifies the same valid + forms and their meanings. A reader-visible extension requires a new ID. ++ *Readers implement each supported contract.* Exact-ID dispatch and local decoding accept + every valid form of that ID, preserve its meaning, and compose correctly with decoded children. ++ *Serialization preserves meaning.* Every emitted node satisfies its claimed wire contract, + and its meaning equals the meaning of the input representation. ++ *Edition enforcement covers the whole output.* A successful constrained write contains + only permitted typed IDs, including children, layouts, extension dtypes, and aggregates. ++ *Frozen edition records are immutable and membership is cumulative within a family.* Membership, + origin, and recorded minimum version remain fixed. A later edition adds permissions without + changing the earlier edition. Selecting families takes their union. ++ *Reader evolution preserves historical support.* A later conforming version of a project's code + retains support for its frozen formats, even after writers stop using them. ++ *A frozen edition's origin and minimum version are sound.* That version of the origin's code + supplies readers for every member of the edition. Required plugins must be present and registered. ++ *Supported writer targets remain writable.* A writer retains the behavior needed + to construct permitted representations for the input domain it promises to write to an edition. ++ *Serialization chooses the oldest available lossless form.* Selection depends on the + representation and the plugin's wire history. Edition validation follows selection. The + serializer does not choose a different form by consulting the edition allowlist. ++ *Future scheme configuration is consistent and closed under children.* For a target + edition, estimation, sampling, and full compression use one compatible behavior configuration. + Every produced child is subject to the same capability constraint. +] + +I1 fixes the meaning of a wire ID. I2 constrains readers, I3 constrains serializers, and I4 +constrains which IDs a write can emit. I5 fixes the meaning of an edition name. I6 preserves +support across versions of the reader code, and I7 connects that support to a published version +number. I8 concerns write availability, I9 concerns which valid form is chosen, and I10 prevents +compression from producing a form that must be recompressed solely to meet the edition. None +follows from the others. + += Definitions and scope + +== Symbols + +#table( + columns: (auto, 1fr), + table.header([Symbol], [Meaning]), + [$K$], [Component kinds: array, layout, extension dtype, and aggregate.], + [$u = (k, i)$], [A typed wire ID: kind $k in K$ and identifier string $i$.], + [$C_u$, $phi_u$], [The valid local forms of $u$, and their semantic interpretation.], + [$t$, $U(t)$], [A finite serialized object tree, and all typed IDs occurring in it.], + [$V(t)$], [The semantic meaning of a valid serialized tree.], + [$M_L$, $mu_L$], [Configuration $L$'s in-memory representations and their semantic meanings.], + [$R_L$, $H_L$], [IDs implemented by reader $L$, and IDs its writer can emit.], + [$D_L$, $S_L$], [Recursive reading and serialization for configuration $L$.], + [$e$, $A(e)$], [An edition, and its cumulative set of permitted typed IDs.], + [$E$, $A(E)$], [A selection of editions, and the union of their permissions.], + [$o(e)$, $m(e)$], [The origin project and its minimum code version recorded for a frozen edition.], + [$W_(L,E)$], [A write with configuration $L$ that enforces selection $E$.], + [$bot$], [Failure, rejection, or absence of a result, as specified by the operation.], +) + +An ID is typed because identical strings in different kinds identify different contracts. +In particular, $("array", "vortex.flat")$ and $("layout", "vortex.flat")$ are different IDs. +No ordering is inferred from ID strings. A plugin explicitly orders its own historical forms. + +== Serialized objects and semantic meaning + +A node has the form + +$ t = (u, p, t_1, dots, t_n). $ + +Here $p$ includes all non-child data needed to interpret the node: metadata, buffers, dtype, +length, and any relevant context supplied by its container. Dependencies such as extension +dtypes and serialized aggregate functions are included in the tree even when their concrete +bytes occur elsewhere. A file has a fixed-format root whose children include all versioned +components. That root has a separately assumed stable, correctly implemented contract. + +A concrete file can share children. Unfolding its finite acyclic dependency graph into a finite +tree does not change the argument. Cyclic graphs, malformed references, corrupted bytes, resource +exhaustion, and incompatible file envelopes are outside this compatibility theorem. Finite input +and terminating local routines are explicit premises. Permission to use an ID does not establish +termination or a resource bound. + +A local contract $C_u$ is a predicate on the payload, child interfaces, and child meanings. +Interfaces include the structural facts needed by the parent, such as child count, dtype, and +length. Its interpretation $phi_u$ defines the meaning of each valid local form. Validity and +meaning are defined recursively: + +$ V(t) = phi_(u)(p, V(t_1), dots, V(t_n)). $ + +This expression is defined only if each child is valid and the parent satisfies $C_u$. +The semantic domains are sorted by component kind and logical type. For example, an array means +its typed values and nulls, an extension dtype means its logical interpretation, and an aggregate +means its function and options. A file's meaning includes the declared component behavior as well +as its logical data. This prevents silently dropping a configured aggregate from counting as +serialization of the same file specification. + +The equations omit child interfaces for readability. Local implementations must preserve them +as well as semantic values. An aggregate contract's meaning includes the conditions that make +its use for pruning sound. The proof does not establish an aggregate algorithm's soundness. + +The ID closure is + +$ U(t) = {u} union union.big_(j=1)^n U(t_j). $ + +The fixed-format root contributes no edition-governed ID. An unrecognized dependency is not +removed from $U(t)$ merely because a particular query does not use it. + +== Reader and writer configurations + +A *configuration* $L$ identifies the versions of the Vortex Rust crates and optional plugin code, +the enabled modules, and the registered implementations. A crate version alone does not specify +which components an application can read or write. + +Its memory domain $M_L$ can differ completely from another configuration's domain. The meaning of +$a in M_L$ is $mu_(L)(a)$. The reader set $R_L$ is a set of typed IDs with implementations, not a set +of registered edition declarations. The writer set $H_L$ is defined independently: a historical +ID can be retained only for reading. + +No in-memory version field is assumed. Fields, children, and metadata can distinguish the shapes +handled by one current implementation. A deserializer can construct that implementation directly +or construct another equivalent current representation. Its output need not have the same +in-memory encoding ID as the wire ID that dispatched it. + +== Editions, families, and origin versions + +An edition selection $E$ contains at most one edition per family. Its permission set is + +$ A(E) = union.big_(e in E) A(e). $ + +The union of an empty selection is empty. An empty per-kind allowlist permits no component of that +kind. Within one family, $e <= e'$ implies $A(e) subset.eq A(e')$. There is no chronology comparison +between editions from different families. + +For a frozen edition, $o(e)$ names the *origin*: the project that supplies its component +implementations. The minimum version $m(e)$ refers to that project's code. For origin `vortex`, +this is the shared version of the Vortex Rust crates. Independent plugins can have their own +origins and version numbers. Version ordering is used only within one origin. + +Draft editions have a permission set but no published minimum version or perpetual read-support +guarantee. A stable edition can freeze when its origin publishes the code that supports it. +Recording the minimum version afterward documents that freeze, rather than creating a new one. + +A reader supports a selection when + +$ A(E) subset.eq R_L. $ + +This is only a coverage statement. Correct decoding follows from the local implementation premise +below and an induction, not from this definition alone. Registering an edition declaration changes +which permissions can be selected. It does not enlarge $R_L$, $H_L$, or $M_L$. + += Implementation and publication premises + +== Local reader premise (I2) + +For every $u in R_L$, reader $L$ has an exact-ID decoder $d_(L,u)$. Given a valid local payload +and correctly decoded child representations $a_1, dots, a_n$, this decoder terminates and returns +$a in M_L$ with the required interface and + +$ mu_(L)(a) = phi_(u)(p, mu_(L)(a_1), dots, mu_(L)(a_n)). $ + +The decoder validates the contract of the exact supplied ID. Recognizing a successor ID does not +expand what an older ID permits. In strict reading, dispatch fails when $u in.not R_L$. + +This is a local obligation for each implementation. It is stronger than recognizing a string in a +registry and weaker than assuming the whole-file compatibility result. + +== Local writer premise (I3) + +A successful local serializer for $a in M_L$ returns an ID $u in H_L$, a payload $p$, and child +representations $a_1, dots, a_n$. Their interfaces satisfy $C_u$, and + +$ mu_(L)(a) = phi_(u)(p, mu_(L)(a_1), dots, mu_(L)(a_n)). $ + +Recursive serialization follows a finite, well-founded dependency structure. Each child satisfies +the same premise. Newly constructed children are covered too. Thus local structural adaptation +cannot bypass either the semantic obligation or recursive validation. + +Compression, layout construction, or another preparation step used before serialization has its +own value-preservation obligation. A theorem about serialization of $a$ guarantees the meaning of +$a$. It guarantees the original source values only when preparation preserved them. + +== Constrained-write premise (I4) + +The constrained writer recursively checks every emitted typed ID against $A(E)$. It reports success +only if serialization and every such check succeed. A failure can occur after some bytes have been +written: this premise is about a successfully completed file, not transactional or atomic I/O. +Edition checks must use the serializer's returned wire ID rather than the in-memory encoding ID. + +== Publication premises (I1, I5, I6, I7) + +Once frozen, both $C_u$ and $phi_u$ remain fixed for each published ID. Frozen edition membership, +origin, and recorded minimum version also remain fixed. Later editions are cumulative in their +own families. + +For each frozen $e$, version $m(e)$ of the origin project's code provides conforming implementations +for every member of $A(e)$. Later conforming versions retain that support and its meanings. +The project must preserve this support when publishing code. Increasing a version number alone +does not establish compatibility. When origins are combined, their implementations must be installed +in a compatible host configuration and agree on any shared contracts. Taking the maximum of version +numbers from unrelated origins is undefined. + += Compatibility proofs + +== Lemma 1: recursive reading preserves meaning + +Let $t$ be valid, finite, and acyclic, and let $U(t) subset.eq R_L$. Under I1 and the local reader +premise, $D_(L)(t)$ succeeds and + +$ mu_(L)(D_(L)(t)) = V(t). $ + +*Proof.* Induct on the height of $t$. A leaf has no children. Its ID belongs to $R_L$, so exact-ID +dispatch selects its decoder. The local reader premise returns the leaf's prescribed meaning. +For a non-leaf, each $U(t_j)$ is contained in $U(t)$ and hence in $R_L$. Each child has smaller +height, so the induction hypothesis supplies its correctly decoded representation and interface. +The parent's ID also belongs to $R_L$. Applying @local-reader to those children yields +@wire-meaning. Finite height and terminating local routines complete the induction. #h(1fr)#sym.square.stroked + +This proves closure across component kinds as well as nested arrays. Checking only a root array ID +does not supply the induction hypothesis for its child encodings, extension types, or dependencies. + +== Lemma 2: recursive serialization preserves meaning + +If recursive serialization of $a$ succeeds with tree $t$, the local writer premise implies that +$t$ is valid and $V(t) = mu_(L)(a)$. + +*Proof.* Induct on the finite serialization dependency structure. For a leaf, @local-writer gives +both validity and equality. For a parent, the induction hypotheses replace every child meaning +$mu_(L)(a_j)$ with $V(t_j)$. The local contract establishes parent validity, and @local-writer becomes +@wire-meaning with result $mu_(L)(a)$. #h(1fr)#sym.square.stroked + +#block(breakable: false)[ +== Theorem 1: successful edition-constrained writes are compatible + +Let $W$ be any writer configuration, $L$ any conforming reader, and $E$ a selected edition set. If + +$ W_(W,E)(a) = t != bot quad "and" quad A(E) subset.eq R_L, $ + +then + +$ D_(L)(t) != bot quad "and" quad mu_(L)(D_(L)(t)) = mu_(W)(a). $ +] + +*Proof.* Recursive enforcement gives $U(t) subset.eq A(E)$. Coverage then gives +$U(t) subset.eq R_L$. Lemma 2 establishes validity and $V(t) = mu_(W)(a)$. Lemma 1 gives +$mu_(L)(D_(L)(t)) = V(t)$. Transitivity proves the claim. #h(1fr)#sym.square.stroked + +The writer can use newer Vortex crates than the reader. No premise compares their crate versions, +memory layouts, or compression implementations. The reader needs the emitted contracts, not knowledge +of the writer. Two writers can produce different bytes for equal values while both satisfy this +theorem. Byte-for-byte reproducibility does not follow. + +The theorem is conditional on successful writing. It does not assert that every array has a +permitted form, or that every configured compressor can construct one. + +== Theorem 2: later readers preserve readability + +Suppose $t$ uses frozen IDs, and a conforming reader $L$ reads it under Lemma 1. If $L'$ is a later +conforming configuration retaining those implementations under I6, then $L'$ reads $t$ with the same +meaning, even if $M_L$ and $M_(L')$ differ. + +*Proof.* Retention gives $U(t) subset.eq R_(L')$. I1 preserves the validity and meaning of $t$. +Apply Lemma 1 to $L'$ and to $L$. Both results have meaning $V(t)$. #h(1fr)#sym.square.stroked + +A reader need not convert a historical in-memory object into a current one. It can decode the +historical bytes directly into its current representation. Historical contract support is required. +A separate legacy memory type, version flag, upgrade pass, or recompression pass is not. + +== Theorem 3: frozen edition bounds are sufficient, but conservative + +For each origin $o$ named by a frozen selection, define + +$ b_(o)(E) = max { m(e) : e in E, o(e) = o }. $ + +A compatible reader configuration containing each required origin at version $b_(o)(E)$ or later, +with its implementations registered, reads every successful write constrained to $E$. + +*Proof.* I7 supplies $A(e)$ at $m(e)$ and I6 retains it at the selected later version. Taking the +union gives $A(E) subset.eq R_L$. Apply Theorem 1. #h(1fr)#sym.square.stroked + +This is a sufficient bound computed from the recorded edition minima for that selection, not a +proof of a necessary or globally minimal version of the reader code. A file's actual requirement +is $U(t)$, and I4 gives $U(t) subset.eq A(E)$. For example, selecting an edition that permits v1 and v2 but +emitting only v1 produces a file an appropriately configured v1-only reader can read. An edition's +minimum covers all its members, including ones the file never uses. + +Under I5, replacing an edition by a later one in the same family only enlarges the permission set. +Consequently a previously valid serialized tree remains permitted. This does not prove that a +compressor makes identical choices, nor that the enlarged target retains the same minimum reader. + +== Theorem 4: unsupported and forbidden IDs fail at their boundaries + +If a candidate output $t$ contains $u in.not A(E)$, it cannot be a successful constrained write. +If strict full reading encounters $u in.not R_L$, it fails at dispatch. A writer cannot emit a valid +local form through an implementation it lacks, $u in.not H_L$. + +*Proof.* The first conclusion is the contrapositive of recursive enforcement. The second is the +exact-ID dispatch rule. The third follows from the definition of $H_L$ and the local writer +premise. These are different failures: adding permission cannot supply an implementation, and +adding an implementation cannot supply permission. #h(1fr)#sym.square.stroked + +Unknown-component passthrough does not satisfy Lemma 1's full semantic decoding result. It can +preserve inert bytes for inspection or copying. Ignoring an unknown aggregate can disable pruning +and still allow correct logical data reads. That weaker operation is outside the full-component +interpretation proved here. Disabling editions removes I4, so Theorem 1's edition conclusion no +longer follows, although a specific file can still be readable. + += Representation changes and writer policy + +== Structural adaptation preserves compatibility + +Let a plugin adapt $a$ into another representation $b$ at the serialization boundary, with +$mu_(W)(b) = mu_(W)(a)$. If $S_(W)(b) = t$, Lemma 2 gives + +$ V(t) = mu_(W)(b) = mu_(W)(a). $ + +Thus a lossless structural downgrade preserves the compatibility theorem whenever the resulting +tree is permitted. Alternatively, the plugin can return adapted payload and child parts directly. +The local writer premise yields the same equality without constructing a legacy memory type. + +This result is about meaning. The equality does not prove that the transformation is cheap, that +it avoids decoding, or that it qualifies as structural rather than recompression. Those are +separate operational claims. A plugin must not relabel a newer payload with an older ID unless +the payload actually satisfies that older contract. + +== Oldest available lossless form + +For a current representation $a$, let $Q_(W)(a)$ be the finite set of local wire forms the plugin can +produce losslessly by its supported representation-preserving serialization operations, without +recompression. This set includes only forms the writer implements. Within the relevant wire +history, each form has an explicit chronological rank. I9 requires choosing a form with the +minimum rank in $Q_(W)(a)$, or reporting no serialization if the set is empty. + +*Proposition.* If I9 selects form $q$, no older form in $Q_(W)(a)$ was skipped. If all IDs in the +completed serialization, including those of its children, belong to $A(E)$, the constrained write +passes the edition checks. + +*Proof.* The first claim is the defining property of a minimum in a finite ordered set. The +second is recursive enforcement applied to the actual output. #h(1fr)#sym.square.stroked + +The useful implementation obligation is constructing a sound candidate set and selecting its +minimum. Merely listing supported IDs oldest-first does not establish I9. Historical IDs retained +only for reading need not belong to the writer's candidate set. This policy does not demand a +search through arbitrary recompressions to discover every mathematically possible encoding of the +same values. + +I9 orders formats within one encoding. It does not minimize the required version of the reader code. +A parent that uses an old ID can still have a child using a new ID. The complete tree determines +compatibility. If a selected form is forbidden, the edition check fails. It does not instruct the +serializer to try a newer form. Normal cumulative edition families preserve their earlier members, +but arbitrary custom permission sets need not have that property. + +== Example: decimal parts + +The historical decimal-byte-parts wire form stores one signed integer child. Its metadata field +`lower_part_count` must be zero. A current array can also hold lower-part children for wider values. +The plugin registers both historical and successor IDs and uses one current array implementation. + +Consider decimal values whose scaled integers are 12, 34, and 56. If compression constructs a +single signed child containing those integers, the plugin writes v1 and reuses the child. The +current array implementation's ability to represent wider values does not force this array to use +v2. The existing child can be serialized directly, with no upgrade, downgrade, or recompression. + +If the constructed array contains lower-part children, the current plugin selects v2. The v1 +reader's contract forbids those children even though it recognizes the metadata field's name. +A hypothetical operation that merges children into one integer buffer needs its own value and +cost analysis. The presence of small numerical values alone does not mean serialization already +performs that operation. For an old target, a future scheme must directly construct the old +single-child form when appropriate, or choose another permitted encoding. + +== Retaining old write paths (I8) + +Let $B_(W,E)$ be the source-value domain for which writer $W$ promises to write target $E$. +I8 requires a retained construction procedure that, on that domain, terminates with a +value-preserving representation whose complete serialization is permitted. This is an explicit +availability obligation beyond Theorem 1. + +A writer can satisfy I1 through I7 while deleting every old compression path and rejecting all +writes to an old target. Reader compatibility remains true for successful writes but is then +unhelpful to that writer's users. I8 rules out that regression on its stated domain. It makes no +promise for arbitrary custom arrays or arbitrary source values outside that domain. + += Future scheme configuration and recompression + +== Configuration obligations + +Fix a target selection $E$. A scheme configuration $c$ includes the behavior that affects its +output representation. Each scheme orders its supported behaviors and selects the newest one whose +declared output capabilities are permitted. Distinct algorithms can still compete. Their ordinary +compression decisions are not ordered by wire-version age. + +Let $P(c)$ be a set of typed IDs bounding the complete serialization of any successfully produced +representation under configuration $c$, including every child and fallback. The future contract +requires: + ++ *Capability soundness:* for every successful compression result $a$, serialization terminates + successfully without further compression: $S_(W)(a) = t != bot$, with $U(t) subset.eq P(c)$. ++ *Target admissibility:* $P(c) subset.eq A(E)$. ++ *Phase consistency:* estimation, sample compression, and full compression use the same + behavior configuration $c$. An estimate concerns that behavior. It need not predict the exact + full-input compression ratio. ++ *Recursive closure:* child compressors and fallbacks use admissible configurations, and their + possible IDs are included in $P(c)$. Configuration remains fixed for the write, or an equivalent + coherent snapshot is used. ++ *Semantic preservation:* full compression preserves the input values. This does not follow + from capability declarations. + +Capability soundness is a universal obligation across the full input domain. A sample containing +only narrow decimal values cannot justify using a v1-only claim for a full-input path that can +produce lower-part children. The configured full path must handle that case with a permitted +construction or report failure. An estimate alone cannot prove this property. + +== Theorem 5: configured compression needs no recompression to satisfy editions + +Suppose the obligations above hold and full compression of source $x$ under $c$ succeeds with +representation $a$. Its serialization succeeds without recompression solely to satisfy $E$, passes +all edition checks, and is readable with the meaning of $x$ by every conforming supporting reader. + +*Proof.* Capability soundness provides the terminating serialization $t = S_(W)(a)$ without further +compression. It also gives $U(t) subset.eq P(c)$. Admissibility gives +$P(c) subset.eq A(E)$, hence $U(t) subset.eq A(E)$. All edition checks therefore pass. Semantic +preservation equates the meaning of $a$ with that of $x$. Apply Theorem 1. #h(1fr)#sym.square.stroked + +The theorem does not infer absence of recompression merely from an allowlist: it uses the +explicit construction guarantee in capability soundness. Its practical purpose is to require +schemes to establish that guarantee before compression rather than repair incompatible arrays +later. Stateful or configurable schemes are possible implementations, not a requirement to put a +version field on every array. + +Phase consistency additionally guarantees that candidates are evaluated under the behavior +actually selected for compression. Without it, full compression can still produce permitted output, +but the selection process can estimate one representation and produce another. No theorem here +establishes optimal compression or estimator accuracy. + +Array schemes cover the array dependencies they construct. A complete file also needs admissible +layout, dtype, and aggregate construction. Their permission checks remain independent boundaries. +A caller-supplied array need not have been built under $c$. It can require explicit adaptation, +recompression, or rejection. This theorem does not extend to it without the same premises. + += Implementation locations and remaining work + +These source locations show where the model's requirements apply to the Rust implementation. +They identify the APIs involved, but do not prove that every component satisfies the requirements. + +- `vortex-array/src/array/plugin.rs` separates the in-memory plugin ID from its historical + `serialized_ids`. Serialization returns a concrete ID, metadata, buffers, and children. + Deserialization receives the exact wire ID. +- `vortex-edition/src/lib.rs` and `session.rs` define typed component membership, independently + versioned families, cumulative inclusion, origin metadata, and selection. +- `vortex-btrblocks/src/builder.rs` filters schemes by their declared serialized IDs. General + edition-derived behavior configuration, including phase consistency and recursive capability + coverage, remains an implementation obligation for Theorem 5. +- `encodings/decimal-byte-parts/src/decimal_byte_parts/plugin/` implements the structural example. + With no lower-part children, the plugin selects v1. Otherwise it selects v2. Both deserialize + through the current representation. + +Historical contract tests need to cover validation against the exact wire ID, every component kind, +and recursively created children. Writers must retain the code needed for supported older targets. +Scheme configuration needs sound output declarations, with fixtures covering files produced by +new writers for old readers. These checks supply implementation evidence. The model separately +requires preservation of values, compatibility of successful writes, and the ability to write +every input in the promised domain. + +The intended API direction is recorded in +#link("https://github.com/vortex-data/vortex/pull/9779")[Vortex PR #9779]. Updating the Vortex crates does not by +itself require an upgrade or downgrade of an array, and edition enforcement does not choose the +wire form. + +#pagebreak(weak: true) + += Complete two-format matrix + +This matrix applies the planned scheme configuration to one encoding in an otherwise compatible +file. It covers eight writer, target, and output combinations, with two reader outcomes each. +The wire-format column describes a possible output, not a separate scheme setting. A supported +write means that suitable valid inputs and output shapes exist. It does not promise success for +every input. L1 reading a v1-only E2 file does not establish that L1 supports all of E2. + +#table( + columns: (auto, 1fr), + table.header([Symbol], [Meaning]), + [v1], [The encoding's original serialized format.], + [v2], [A successor serialized format with a distinct wire ID.], + [L1], [Older Vortex crate version that reads and writes v1 only.], + [L2], [Newer Vortex crate version that reads and writes v1 and v2 through one current array + implementation.], + [E1], [Edition permitting v1.], + [E2], [Edition permitting v1 and v2.], + [✓], [Supported for a suitable input and correctly registered implementations.], + [X], [Unsupported or forbidden.], + [N/A], [No successful write, so no reader outcome.], +) + +#text(size: 9pt)[ +#table( + columns: (auto, auto, auto, 1fr, auto, auto), + table.header([Writer], [Target], [Wire form], [Write¹], [L1 reads], [L2 reads]), + [L1], [E1], [v1], [✓], [✓], [✓²], + [L1], [E1], [v2], [X: unsupported and forbidden], [N/A], [N/A], + [L1], [E2³], [v1], [✓], [✓], [✓²], + [L1], [E2³], [v2], [X: unsupported], [N/A], [N/A], + [L2], [E1], [v1], [✓⁴⁵], [✓], [✓²], + [L2], [E1], [v2], [X: forbidden], [N/A], [N/A], + [L2], [E2], [v1], [✓⁴⁵], [✓], [✓²], + [L2], [E2], [v2], [✓⁴], [X: unknown ID], [✓], +) +] + +¹ Success is conditional on representability and successful preparation. Theorem 1 does not make +all inputs writable. A permitted parent is insufficient if any child is forbidden. + +² L2 decodes the historical contract directly into its current implementation. It need not first +construct and upgrade a legacy array. + +³ L1 must know the E2 declaration to select it. Registration grants permission, not a v2 +implementation. A v1-only file can be read by L1 even though E2 also permits v2. + +⁴ Future configurable schemes establish Theorem 5's obligations. Current BtrBlocks filtering uses +schemes' declared serialized output IDs. That filtering is correct for its current declarations. +A scheme that can produce several formats still needs configuration to select compatible behavior. + +⁵ A newer implementation can construct the original single-child decimal form and emit v1 directly. +For E1, a compatible construction must be selected before compression. For E2, the same old form can +arise naturally, and I9 still selects v1. + +#pagebreak(weak: true) + += Counterexamples when an invariant is omitted + +Each example shows a failure that the omitted invariant prevents. These are hypothetical failures, +not claims about current Vortex bugs. + +#table( + columns: (auto, 1fr), + table.header([Omitted invariant], [What can change]), + [I1: immutable contract], [An ID starts interpreting a buffer as unsigned instead of signed. + Old and new readers accept the same bytes but disagree on values.], + [I2: correct local reader], [A registered decoder reverses the child order. All ID checks pass, + but composition changes the values.], + [I3: correct serializer], [A serializer truncates a wide value while claiming a valid old ID. + Every reader consistently returns the wrong value.], + [I4: recursive enforcement], [A permitted dictionary parent contains a forbidden compressed + child. The target reader can dispatch the parent but cannot read the child.], + [I5: fixed edition membership], [An already published edition gains v2. Its name no longer + denotes the permission set users previously selected, even if its minimum version is also + revised to preserve coverage. Alternatively, changing only a minimum version changes the + published deployment promise without changing any file bytes.], + [I6: retained readers], [The origin supplied v1 at its recorded minimum version but a later version + removes it. Updating the reader's code breaks historical files.], + [I7: sound minimum version], [The declared minimum predates the first v2 implementation. + Membership is fixed and readers are additive, yet the promised minimum cannot read all output.], + [I8: retained writer paths], [The writer keeps historical decoders but deletes old construction + behavior. Old files remain readable, while supported old-target writes become unavailable.], + [I9: oldest-form choice], [An array fitting v1 is always emitted as v2. The write can remain safe + for E2, but an otherwise unnecessary newer-reader requirement is introduced.], + [I10: coherent schemes], [Sampling uses the old form, while full compression creates a forbidden + successor or child. Final validation remains safe by rejecting the file, but successful writing + now requires another compression pass or a different construction.], +)