Please confirm the following
Feature Description
The use case is one file larger than the available capacity of any individual
free-tier Driver/account, but smaller than the usable combined capacity of
several eligible accounts. Ordinary whole-file balancing cannot satisfy it.
The current .balance mechanism rotates a storage choice by request, not by a
durable object placement record. Alias quota placement chooses one destination;
Chunk splits into parts under one remote path. None is a recoverable,
cross-account, single-file erasure pool.
Please investigate a RustFS-inspired logical pool -> stable placement set ->
k data plus m parity shards -> committed object generation -> verified
read/heal architecture, adapted to heterogeneous cloud Drivers rather than
copied as a literal RustFS disk cluster. Aggregate capacity is finite, not an
unlimited-storage claim; parity, quota headroom, rate limits and egress reduce
usable capacity. The pool must report these limits honestly.
Suggested Solution
- Define an eligible Driver capability and failure-domain matrix: stable
object keys, streaming write/read, Range, consistency, limits, rename/delete,
quota observability, retries, provider terms, cost and account independence.
Reject or degrade unsupported Drivers explicitly.
- Define versioned pool/set membership and a durable manifest per committed
object generation: logical length, encoding k,m, stripe/block layout,
ordered shard IDs, account/Driver references, checksums and commit state.
Never infer completeness from a directory listing; a lost final shard must
be detectable. Keep provider credentials outside manifests.
- Stage shards under stable idempotent identities, verify receipts, and
publish one manifest generation only after the chosen write/metadata quorum
is met. Readers use only that generation, verify data, reconstruct from
k independent valid shards, and return an explicit error below threshold.
Fence overwrite/delete/rename from old readers; reconcile ambiguous writes
and orphaned staging objects. Define background/on-read/manual repair and
what happens when pool membership or credentials change.
- Run a disposable prototype against local and S3-like accounts with per-
account quotas. Test a file larger than each target but within effective pool
capacity; full and cross-stripe Range reads; missing first/middle/last shard;
corruption, outage, full account, timeout, restart, overwrite, cleanup and
manifest backup/restore. Measure throughput, memory/temp, provider calls,
egress and repair cost. Gate production format and UI on this evidence.
- Audit every ingress/egress path—browser direct upload, multipart, WebDAV,
S3, copy, archive extraction, signed links and previews. A pooled object may
refuse an unsupported path; it must never report success for a partial
upload or expose raw shard objects as user files.
Additional Information
RustFS architecture documents
one object in one erasure set; its erasure-coding contract
separates layout, data/parity shards, quorum, checksums and healing. These are
reference semantics, not a proposal to import RustFS's on-disk format,
fixed set geometry or peer RPC into OpenList. Relevant OpenList source:
pkg/utils/balance.go, internal/op/path.go, drivers/alias, drivers/chunk,
internal/driver/driver.go. Explicit product decisions still needed: default
k,m/loss tolerance, single versus multiple OpenList writers, metadata
durability, migration, acceptable egress and restore time.
#3141 concerns multi-connection copy between storages, not one logical file
distributed across accounts; avoid conflating the requests.
AI Generated Content
AI model used
OpenAI Codex (exact model identifier not exposed to the agent)
Please confirm the following
OpenListand not by a third party.Feature Description
The use case is one file larger than the available capacity of any individual
free-tier Driver/account, but smaller than the usable combined capacity of
several eligible accounts. Ordinary whole-file balancing cannot satisfy it.
The current
.balancemechanism rotates a storage choice by request, not by adurable object placement record. Alias quota placement chooses one destination;
Chunk splits into parts under one remote path. None is a recoverable,
cross-account, single-file erasure pool.
Please investigate a RustFS-inspired logical pool -> stable placement set ->
kdata plusmparity shards -> committed object generation -> verifiedread/heal architecture, adapted to heterogeneous cloud Drivers rather than
copied as a literal RustFS disk cluster. Aggregate capacity is finite, not an
unlimited-storage claim; parity, quota headroom, rate limits and egress reduce
usable capacity. The pool must report these limits honestly.
Suggested Solution
object keys, streaming write/read, Range, consistency, limits, rename/delete,
quota observability, retries, provider terms, cost and account independence.
Reject or degrade unsupported Drivers explicitly.
object generation: logical length, encoding
k,m, stripe/block layout,ordered shard IDs, account/Driver references, checksums and commit state.
Never infer completeness from a directory listing; a lost final shard must
be detectable. Keep provider credentials outside manifests.
publish one manifest generation only after the chosen write/metadata quorum
is met. Readers use only that generation, verify data, reconstruct from
kindependent valid shards, and return an explicit error below threshold.Fence overwrite/delete/rename from old readers; reconcile ambiguous writes
and orphaned staging objects. Define background/on-read/manual repair and
what happens when pool membership or credentials change.
account quotas. Test a file larger than each target but within effective pool
capacity; full and cross-stripe Range reads; missing first/middle/last shard;
corruption, outage, full account, timeout, restart, overwrite, cleanup and
manifest backup/restore. Measure throughput, memory/temp, provider calls,
egress and repair cost. Gate production format and UI on this evidence.
S3, copy, archive extraction, signed links and previews. A pooled object may
refuse an unsupported path; it must never report success for a partial
upload or expose raw shard objects as user files.
Additional Information
RustFS architecture documents
one object in one erasure set; its erasure-coding contract
separates layout, data/parity shards, quorum, checksums and healing. These are
reference semantics, not a proposal to import RustFS's on-disk format,
fixed set geometry or peer RPC into OpenList. Relevant OpenList source:
pkg/utils/balance.go,internal/op/path.go,drivers/alias,drivers/chunk,internal/driver/driver.go. Explicit product decisions still needed: defaultk,m/loss tolerance, single versus multiple OpenList writers, metadatadurability, migration, acceptable egress and restore time.
#3141 concerns multi-connection copy between storages, not one logical file
distributed across accounts; avoid conflating the requests.
AI Generated Content
AI model used
OpenAI Codex (exact model identifier not exposed to the agent)