docs(rfc): RFC-006 — object-storage-native omnigraph (S3-first, local-FS deprecation)#185
Open
aaltshuler wants to merge 1 commit into
Open
docs(rfc): RFC-006 — object-storage-native omnigraph (S3-first, local-FS deprecation)#185aaltshuler wants to merge 1 commit into
aaltshuler wants to merge 1 commit into
Conversation
The migration design making object storage THE deployment model: a sealed ClusterStore interface (object_store-backed) replaces every raw-fs call in the cluster crate; cluster.yaml gains a storage: root (s3://... — state ledger via conditional-put CAS, cross-machine locking, catalog/sidecars/ approvals as objects, derived graph roots as engine-native S3 URIs); the server takes --cluster s3://... and cluster deployments become stateless (bucket, no volume). Config files stay in the working tree — Terraform's config-local/state-remote split. Local FS is demoted, not deleted: one interface, file:// as an explicit dev/test backend, S3-first everywhere in docs, storage: required at the v0.9 boundary. Grounded: conditional writes (If-None-Match and If-Match) verified live against RustFS 1.0.0-beta.8 — both probes pass; Lance 6 already commits via S3 conditional writes; Omnigraph::init/open accept S3 URIs today. Staged A-D with sizes and the migrate-storage cutover tool. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
There was a problem hiding this comment.
aaltshuler has reached the 50-review limit for trial accounts. To continue receiving code reviews, upgrade your plan.
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.
Design for the directive: OmniGraph becomes object-storage only. The engine already is (Lance on
object_store, S3 CI-tested); this RFC migrates the one holdout — the cluster control plane's raw-filesystem layer — and defines what "local FS deprecation" means.Shape
ClusterStoreoverobject_store; every stored byte URI-addressed; rawfs::*for cluster state becomes a deny-list entry. Declared config (cluster.yaml,.pg/.gq/policies) stays in the working tree — Terraform's config-local/state-remote split.storage:root in cluster.yaml (s3://bucket/prefix): ledger, lock, catalog, sidecars, approvals, and derived graph roots all live under it.PutMode::Update(etag), lock viaPutMode::Create— verified live against RustFS beta.8 before writing this (If-None-Match: 200→412; If-Match: 200→412). Cross-machine locking becomes real (the file lock never was).--cluster s3://…serving: cluster deployments become stateless again — Railway = service + Bucket, no volume; the classic and cluster topologies converge.cluster migrate-storage <dest-uri>: object-copy + ledger-last atomic cutover, both directions.file://— which ships insideobject_storeeither way and keepscargo testhermetic. S3-first docs at Stage D, deprecation warning on implicit local storage,storage:required at v0.9 withfile://legal-but-explicit for dev/test. A harder line later is a validation flip, not an architecture change.Staging
A (ClusterStore port — the big one) → B (URI graph roots + executors/sweep) → C (bucket-backed serving + Railway Bucket validation, converging with cookbooks PR #12) → D (migrate-storage + docs flip + deprecation).
Open questions
RustFS GA contract (probes to be pinned as guard tests), multi-writer lease UX, catalog GC (existing gap, carries over), config-in-git workflow docs.
🤖 Generated with Claude Code