Skip to content

Commit 86170cf

Browse files
dfa1claude
andcommitted
docs: why layouts have no service file
Rust registers layouts explicitly on the session — no auto- discovery exists in the reference — and a classpath jar must not silently change scan traversal. The encoding/layout asymmetry is a decision, not an accident. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 parent 08b6cd5 commit 86170cf

1 file changed

Lines changed: 5 additions & 1 deletion

File tree

CLAUDE.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,11 @@ in the Rust source for the exact schema, then implement from spec.
198198
- **Layout decode is pluggable via `LayoutDecoder` + `LayoutRegistry`** (`reader.layout`) — the
199199
Rust reference registers layouts at runtime, so ours are open too. Builder-registered only
200200
(`LayoutRegistry.builder().registerDefaults().register(custom).build()`, pass to
201-
`VortexReader.open(path, readRegistry, layoutRegistry)`) — **no service file**. Unknown layouts
201+
`VortexReader.open(path, readRegistry, layoutRegistry)`) — **no service file**, by decision:
202+
Rust registers layouts explicitly on the session (no auto-discovery exists there), and a
203+
classpath jar must not silently change scan traversal — layout registration stays visible at
204+
the open() call site. Encodings keep ServiceLoader because they are leaf codecs with a
205+
plausible drop-in-jar ecosystem. Unknown layouts
202206
fail loudly (`VortexException`, Rust default; no allowUnknown for layouts). Scope: the SPI covers
203207
full-column subtree decode; zone-map pruning, filtered scans, and chunk planning recognize the
204208
built-in layouts only.

0 commit comments

Comments
 (0)