From 5506f417d3fec070bc5352127061392e51908dc1 Mon Sep 17 00:00:00 2001 From: Davide Angelocola Date: Thu, 18 Jun 2026 22:03:29 +0200 Subject: [PATCH] =?UTF-8?q?docs(adr):=20resolve=20duplicate=20ADR=200013?= =?UTF-8?q?=20=E2=80=94=20renumber=20drop-materialized=20to=200015,=20mark?= =?UTF-8?q?=20Completed?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two ADRs shared number 0013 (compute-primitives, 2026-06-15, Proposed; and drop-materialized-fallbacks, 2026-06-16, Accepted). Keep 0013 for compute-primitives — it is the earlier ADR and the one ADR 0010 and the index already cross-reference — and renumber drop-materialized to 0015. The Materialized-fallback sweep is finished in code (every targeted transform decoder — ZigZag, FoR, ALP broadcast, Constant, RunEnd, Sparse, RLE — is lazy-only; remaining Materialized output is the decompression encodings, the primitive base, Dict, and the ALP patches path, all kept by design). So mark 0015 Completed, add it to the ADR index (it was missing), and repoint the seven compatibility.md "ADR 0013" references to 0015. Co-Authored-By: Claude Opus 4.8 --- ...acks.md => 0015-drop-materialized-fallbacks.md} | 6 +++--- docs/adr/ADR.md | 1 + docs/compatibility.md | 14 +++++++------- 3 files changed, 11 insertions(+), 10 deletions(-) rename docs/adr/{0013-drop-materialized-fallbacks.md => 0015-drop-materialized-fallbacks.md} (97%) diff --git a/docs/adr/0013-drop-materialized-fallbacks.md b/docs/adr/0015-drop-materialized-fallbacks.md similarity index 97% rename from docs/adr/0013-drop-materialized-fallbacks.md rename to docs/adr/0015-drop-materialized-fallbacks.md index 7fd166e2..2199864e 100644 --- a/docs/adr/0013-drop-materialized-fallbacks.md +++ b/docs/adr/0015-drop-materialized-fallbacks.md @@ -1,6 +1,6 @@ -# ADR 0013: Drop Materialized fallbacks once Lazy has shipped +# ADR 0015: Drop Materialized fallbacks once Lazy has shipped -- **Status:** Accepted +- **Status:** Completed - **Date:** 2026-06-16 - **Deciders:** project maintainer - **Supersedes:** — @@ -72,7 +72,7 @@ A Materialized branch may be deleted when **all** of these hold: - Decompression-style encodings — `bitpacked`, `pco`, `zstd`, `fsst`, `delta`, `patched` — keep their Materialized output. ADR 0010 § - "Decompression encodings stay eager" applies; ADR 0013 does not change + "Decompression encodings stay eager" applies; ADR 0015 does not change it. - Materialisation fallbacks inside `ArraySegments.of(arr, arena)` stay — they exist for callers that explicitly request a `MemorySegment` from a diff --git a/docs/adr/ADR.md b/docs/adr/ADR.md index 315c5403..c5b1dace 100644 --- a/docs/adr/ADR.md +++ b/docs/adr/ADR.md @@ -27,3 +27,4 @@ Each ADR is a Markdown file named `NNNN-short-title.md`. Use `template.md` as th | 0012 | Zero-copy layout decoding: lazy Chunked/Dict | Implemented | | 0013 | Compute primitives: masks, kernels, no-materialise | Proposed | | 0014 | Variant encoding: chunked constants now, parquet.variant later | Implemented | +| 0015 | Drop Materialized fallbacks once Lazy has shipped | Completed | diff --git a/docs/compatibility.md b/docs/compatibility.md index 12eb97d9..db93a43d 100644 --- a/docs/compatibility.md +++ b/docs/compatibility.md @@ -96,16 +96,16 @@ decoder falls into one of three shapes: | `vortex.bool` | Zero-copy | Zero-copy | mmap slice (bit-packed) | | `vortex.null` | n/a | n/a | no per-row data | | `vortex.bytebool` | Zero-copy | Zero-copy | mmap slice | -| `vortex.zigzag` | Lazy | Lazy | `LazyZigZagXxxArray` (I8/I16/I32/I64); broadcast → `LazyConstantXxxArray`, ADR 0010 + 0013 | -| `vortex.constant` | Lazy | Lazy | `LazyConstantXxxArray` (primitive + bool + decimal); per-row broadcast, no buffer, ADR 0013 | +| `vortex.zigzag` | Lazy | Lazy | `LazyZigZagXxxArray` (I8/I16/I32/I64); broadcast → `LazyConstantXxxArray`, ADR 0010 + 0015 | +| `vortex.constant` | Lazy | Lazy | `LazyConstantXxxArray` (primitive + bool + decimal); per-row broadcast, no buffer, ADR 0015 | | `vortex.ext` | Zero-copy | Zero-copy | wraps storage | -| `vortex.runend` | Lazy | Lazy | `LazyRunEndXxxArray` (primitive + bool); Utf8/Binary stays Materialized (offset rebasing), ADR 0013 | +| `vortex.runend` | Lazy | Lazy | `LazyRunEndXxxArray` (primitive + bool); Utf8/Binary stays Materialized (offset rebasing), ADR 0015 | | `vortex.varbin` | Zero-copy | Zero-copy | bytes + offsets slices | | `vortex.varbinview` | Lazy | Lazy | `VarBinArray.ViewMode` — keeps views + data buffers as mmap slices | -| `vortex.alp` | Lazy | Lazy | `LazyAlpXxxArray`; broadcast → `LazyConstantXxxArray`; patched stays Materialized, ADR 0010 + 0013 | +| `vortex.alp` | Lazy | Lazy | `LazyAlpXxxArray`; broadcast → `LazyConstantXxxArray`; patched stays Materialized, ADR 0010 + 0015 | | `vortex.alprd` | Lazy | Lazy | `LazyAlpRdDoubleArray`/`LazyAlpRdFloatArray` — left/right + patches on access | | `vortex.dict` | Lazy | Lazy | `DictXxxArray` (numeric) + `VarBinArray.DictMode` (string), ADR 0012 | -| `vortex.sparse` | Lazy | Lazy | `LazySparseXxxArray` (primitive + bool); Utf8/Binary stays Materialized, ADR 0013 | +| `vortex.sparse` | Lazy | Lazy | `LazySparseXxxArray` (primitive + bool); Utf8/Binary stays Materialized, ADR 0015 | | `vortex.sequence` | Zero-copy | Zero-copy | synthetic (no data) | | `vortex.struct` | Zero-copy | Zero-copy | `StructArray` wraps fields | | `vortex.chunked` | Lazy | Lazy | `ChunkedXxxArray` (primitive/Bool) + `VarBinArray.ChunkedMode` (Utf8/Binary), ADR 0012 | @@ -121,8 +121,8 @@ decoder falls into one of three shapes: | `vortex.pco` | Materialized | Materialized | range-encoded decompression | | `fastlanes.bitpacked` | Materialized | Materialized | window unpacks bits | | `fastlanes.delta` | Materialized | Materialized | cumulative sum requires sequential decode | -| `fastlanes.for` | Lazy | Lazy | `LazyForXxxArray` (I8/U8/I16/U16/I32/U32/I64/U64), ADR 0010 + 0013 | -| `fastlanes.rle` | Lazy | Lazy | `LazyRleXxxArray`; validity → `OffsetBoolArray`; empty → `LazyConstantXxxArray`, ADR 0013 | +| `fastlanes.for` | Lazy | Lazy | `LazyForXxxArray` (I8/U8/I16/U16/I32/U32/I64/U64), ADR 0010 + 0015 | +| `fastlanes.rle` | Lazy | Lazy | `LazyRleXxxArray`; validity → `OffsetBoolArray`; empty → `LazyConstantXxxArray`, ADR 0015 | | `vortex.patched` | Materialized | Materialized | inner is full base + chunked patches (1024-elem blocks, lane-window-sorted); per-row access requires 2 laneOffsets reads + binary search inside the chunk window, so eager scatter wins for full scans | | `vortex.variant` | Lazy | Lazy | container wraps constant/chunked core (inner-typed) + optional shredded child | | `vortex.onpair` | n/a | n/a | not ported |