Skip to content

feat(wal): attest catalog selections and retain source pins - #409

Merged
beinan merged 1 commit into
lance-format:mainfrom
beinan:codex/wal-source-pins
Oct 20, 2026
Merged

beinan merged 1 commit into
lance-format:mainfrom
beinan:codex/wal-source-pins

Conversation

@beinan

@beinan beinan commented Oct 20, 2026

Copy link
Copy Markdown
Collaborator

Summary

A catalog plan must not release its source dependencies during publisher takeover or replica recovery. Add signed catalog observations and source-quorum pins for each selected table prefix. Sources verify the exact selected metadata against their own committed records, preserve independent group positions, and return the original pin index on an exact retry.

Catalog replicas issue Ed25519 attestations only after safe ReadIndex completion. Source-only replicas hold the public key; private signing keys are neither serialized nor included in snapshots. Signatures cover publication metadata, while Arrow payloads remain opaque. Pin counts and command/image sizes are bounded, and captured views share immutable pin metadata.

The optional application/checkpoint format advances to v4 and rejects older identities and images. Pins and payloads remain retained. Source release, external Lance commit/outcome coordination, key provisioning and transport/caller authentication remain separate work; an attestation does not authorize a Lance commit or payload deletion.

Refs #378.

Testing

The complete repository CI helper passed for this source increment: 605 workspace Rust tests, Python 229 passed / 2 skipped / 1 expected failure, formatting, Clippy, Ruff and Pyright. All-feature WAL Clippy, server build and workspace packaging also passed.

The final branch also includes the independently qualified publication-GC regressions from #408. The source increment is unchanged, and final-head CI covers the combined branch.

All 72 focused Rust tests passed, including disjoint catalog/source replica sets, signature tampering, incomplete prefixes, retries at capacity, source snapshot transfer, independent leader loss, publisher takeover and full process restart. Recovered replicas return the original pin index and exact source payloads.

@beinan
beinan merged commit 3be40ee into lance-format:main Oct 20, 2026
16 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant