# ECStore Layout Boundary

This document records the `E-001` and `E-SET-001` foundation slice for the
architecture migration.

## Directory Skeleton

The ECStore migration uses these internal ownership buckets before any pure
file moves:

- `api`: facade and compatibility re-export ownership.
- `core`: store facade, object, bucket, list, multipart, and heal paths.
- `layout`: static endpoint, disk, pool, and set layout descriptions.
- `disk`: local disk, format, health, and disk error ownership.
- `erasure`: erasure coding and bitrot ownership.
- `metadata`: bucket metadata, config object-store, and data-usage ownership.
- `cluster`: remote disk, peer, lock, membership, and health-control-plane
  ownership.
- `services`: lifecycle, replication, tier, notification, rebalance, and
  metrics service ownership.

## Static Set Layout

Static layout is derived from persisted `FormatV3` data and input endpoint
expansion. It may describe:

- deployment id;
- set count and drives per set;
- disk UUID positions inside `format.erasure.sets`;
- distribution algorithm;
- endpoint grouping produced before runtime disk initialization.

Static layout must not own disk handles, lock clients, reconnect loops, repair
state, or shutdown signaling.

## Format And Disk Layout Ownership

`layout::format` owns persisted format structures and disk UUID position lookup.
`layout::disks_layout` owns command-line volume expansion into pool/set layout.

Compatibility paths remain available through `disk::format` and `disks_layout`
until downstream callers are moved or compatibility coverage allows removal.

## Runtime Set Orchestration

Runtime orchestration remains owned by `Sets` and `SetDisks` until a later pure
move. It may describe:

- flat disk index to `(set_index, disk_index)` mapping;
- per-set local disk replacement after distributed setup detection;
- per-set lock-client host deduplication;
- endpoint reconnect monitoring and runtime shutdown signaling;
- read/write/heal/list orchestration over initialized disks.

## Preservation Rules

- Object-to-set hashing and distribution algorithm selection must not change.
- Format `sets` ordering and disk UUID position lookup must not change.
- Local disk replacement and lock-client mapping stay runtime-only.
- Later file moves must keep old public paths or add explicit compatibility
  coverage before deleting them.
