refactor(runtime): route RustFS runtime consumers through storage owner (#3756)

This commit is contained in:
Zhengchao An
2026-06-23 05:17:56 +08:00
committed by GitHub
parent e0b79aa00c
commit 198fd4f150
50 changed files with 1622 additions and 384 deletions
+463 -11
View File
@@ -5,16 +5,20 @@ Status values: `[ ]` not started, `[~]` in progress, `[x]` complete, `[!]` block
## Current Context
- Issue: [`rustfs/backlog#660`](https://github.com/rustfs/backlog/issues/660)
- Branch: `overtrue/arch-test-fuzz-owner-symbols`
- Baseline: completed `C-011/C-012/C-013/API-055/API-059/API-079/API-080/API-081/API-082/API-083/API-084/API-085/API-086/API-087/API-088/API-089/API-090/API-091/API-092/API-093/API-094/API-095/API-096/API-097/API-098/API-099/API-100/API-101/API-102/API-103/API-104/API-105/API-106/API-107/API-108/API-109/API-110/API-111/API-112/API-113/API-114/API-115/API-116/API-117/API-118/API-119/API-120/API-121/API-122/API-123/API-124/API-125/API-126/API-127/API-128/API-129/API-130/API-131/API-132/API-133/API-134`.
- Based on: API-134 slice.
- Branch: `overtrue/arch-runtime-crate-ecstore-thin-bridges`
- Baseline: completed `C-011/C-012/C-013/API-055/API-059/API-079/API-080/API-081/API-082/API-083/API-084/API-085/API-086/API-087/API-088/API-089/API-090/API-091/API-092/API-093/API-094/API-095/API-096/API-097/API-098/API-099/API-100/API-101/API-102/API-103/API-104/API-105/API-106/API-107/API-108/API-109/API-110/API-111/API-112/API-113/API-114/API-115/API-116/API-117/API-118/API-119/API-120/API-121/API-122/API-123/API-124/API-125/API-126/API-127/API-128/API-129/API-130/API-131/API-132/API-133/API-134/API-135/API-136/API-137/API-138/API-139/API-140/API-141/API-142/API-143/API-144/API-145/API-146/API-147/API-148/API-149/API-150`.
- Based on: API-150 stacked slice.
- PR type for this branch: `pure-move`
- Runtime behavior changes: none.
- Rust code changes: replace e2e, heal/scanner integration-test, and fuzz-target
ECStore owner module aliases with explicit symbols.
- CI/script changes: treat the completed test/fuzz files as explicit-symbol
boundaries and reject restored `ecstore_*` module aliases there.
- Docs changes: record the API-135 test/fuzz owner facade symbol cleanup.
- Rust code changes: remove the thin notify/obs/swift/s3select ECStore
compatibility bridge files and keep their ECStore source imports at each
owner root.
- CI/script changes: lock completed owner and test/fuzz boundaries against
bare/glob imports, scattered raw ECStore facade subpaths, and startup
runtime/root-server/table/S3/app shared/app bucket/app ECStore/admin facade
regressions, plus external runtime, test, fuzz, and storage-owner module
ECStore compatibility bypasses, plus runtime crate thin bridge regressions.
- Docs changes: record the API-136/API-137/API-138/API-139/API-140/API-141/API-142/API-143/API-144/API-145/API-146/API-147/API-148/API-149/API-150/API-151 owner facade cleanup.
## Phase 0 Tasks
@@ -3938,6 +3942,255 @@ Status values: `[ ]` not started, `[~]` in progress, `[x]` complete, `[!]` block
diff hygiene, Rust risk scan, branch freshness check, pre-commit quality
gate, and three-expert review.
- [x] `API-136` Replace RustFS runtime owner module aliases with symbols.
- Do: replace RustFS app/admin/storage owner-root `ecstore_*` facade aliases
with owner-local curated symbol modules that expose only the ECStore
submodules, functions, types, and constants consumed by those runtime
boundaries.
- Acceptance: `rustfs/src/app/mod.rs`, `rustfs/src/admin/mod.rs`, and
`rustfs/src/storage/mod.rs` no longer import broad ECStore facade modules
as `ecstore_*`; migration guards reject reintroducing those broad aliases.
- Must preserve: app object/lifecycle/replication helpers, admin config,
metrics, tiering, rebalance helpers, storage S3/RPC metadata helpers, and
startup/server consumers of the storage owner boundary.
- Verification: focused RustFS compile, runtime owner alias residual scan,
migration/layer guards, formatting, diff hygiene, Rust risk scan, branch
freshness check, pre-commit quality gate, and three-expert review.
- [x] `API-137` Guard completed owner facade import shapes.
- Do: extend migration rules so completed owner and test/fuzz boundaries
cannot reintroduce bare `rustfs_ecstore::api::<module>` imports or glob
facade imports.
- Acceptance: completed owner roots and completed test/fuzz boundaries keep
explicit symbol imports, type aliases, constants, or wrappers; migration
guards reject bare module and glob facade imports.
- Must preserve: all API-136 RustFS owner symbol boundaries, API-135 test/fuzz
direct symbol imports, and external owner root symbol imports.
- Verification: architecture migration guard, shell syntax check, formatting,
diff hygiene, branch freshness check, and three-expert review.
- [x] `API-138` Centralize completed owner raw facade subpaths.
- Do: move completed notify and S3 Select owner wrapper raw ECStore facade
calls into explicit import declarations, then guard completed owner and
test/fuzz boundaries against raw facade subpaths outside import
declarations.
- Acceptance: completed owner and test/fuzz files keep raw ECStore facade
subpaths centralized at import declarations; wrapper bodies use local
aliases, constants, or functions.
- Must preserve: notify config read/save wrappers, S3 Select object-store
handle/error helpers, default read-buffer constant, and all existing public
crate APIs.
- Verification: focused notify/S3 Select compile, architecture migration
guard, shell syntax check, formatting, diff hygiene, Rust risk scan, branch
freshness check, and three-expert review.
- [x] `API-139` Route startup runtime consumers through storage owner symbols.
- Do: expose storage-owner aliases and wrappers for startup layout, global
endpoint/region state, local disk initialization, config initialization,
background replication, and notification setup, then migrate startup
runtime files away from `ecstore_*` owner-module consumers.
- Acceptance: `startup_notification`, `startup_fs_guard`, `startup_services`,
`startup_server`, and `startup_storage` use storage-owner symbols and
wrappers instead of `crate::storage::ecstore_*` modules; migration guards
reject restoring those module consumers.
- Must preserve: endpoint parsing, unsupported-filesystem policy checks,
global endpoint/erasure state setup, local disk and lock-client
initialization, config migration/retry behavior, readiness marking,
background replication start, region/port registration, and notification
initialization.
- Verification: focused RustFS test-target compile, migration guard, shell
syntax check, formatting, diff hygiene, Rust risk scan, branch freshness
check, and three-expert review.
- [x] `API-140` Route server/capacity/workload consumers through storage owner symbols.
- Do: expose storage-owner symbols for local disk enumeration, disk endpoint
labels, RPC signature prefix/verification, bucket metadata runtime state,
replication pool access, and replication queue counts, then migrate
server, capacity, and workload-admission consumers away from `ecstore_*`
owner modules.
- Acceptance: `server/http.rs`, `capacity/service.rs`, and
`workload_admission.rs` use storage-owner symbols and wrappers instead of
`crate::storage::ecstore_*` modules; migration guards reject restoring
those module consumers.
- Must preserve: internode RPC signature verification, active HTTP request
metrics, capacity manager disk discovery/labels, metadata workload state,
replication active/queue counts, and all storage-owner backend calls.
- Verification: focused RustFS test-target compile, migration guard, shell
syntax check, formatting, diff hygiene, Rust risk scan, branch freshness
check, and three-expert review.
- [x] `API-141` Route root/server runtime consumers through storage owner symbols.
- Do: expose storage-owner aliases and wrappers for notification config,
topology capability mapping, readiness globals, event dispatch hook
installation, module-switch config persistence, endpoint test builders,
and quota/error types, then migrate remaining root/server runtime
consumers away from `ecstore_*` owner modules.
- Acceptance: `init.rs`, `runtime_capabilities.rs`, `server/readiness.rs`,
`server/event.rs`, `server/module_switch.rs`, and `error.rs` use
storage-owner symbols and wrappers instead of
`crate::storage::ecstore_*` modules; migration guards reject restoring
those module consumers.
- Must preserve: bucket notification preload behavior, topology capability
labels, runtime readiness lock-quorum checks, live event dispatch,
module-switch persistence semantics, S3 error conversion, and test
endpoint construction.
- Verification: focused RustFS test-target compile, migration guard, shell
syntax check, formatting, diff hygiene, Rust risk scan, branch freshness
check, and three-expert review.
- [x] `API-142` Route table/S3/startup consumers through storage owner symbols.
- Do: expose storage-owner constants, aliases, and wrappers for table catalog
metadata roots, catalog path hashing, metadata lookup, lock timeout,
shutdown, bucket metadata migration/init, S3 etag conversion, and config
test disk layout parsing, then migrate the remaining table/S3/startup
consumers away from `ecstore_*` owner modules.
- Acceptance: `startup_bucket_metadata.rs`, `startup_shutdown.rs`,
`table_catalog.rs`, `storage/s3_api/bucket.rs`,
`storage/s3_api/multipart.rs`, and `config/config_test.rs` use
storage-owner symbols and wrappers instead of
`crate::storage::ecstore_*` modules; migration guards reject restoring
those module consumers.
- Must preserve: startup bucket metadata and IAM migration order,
replication resync initialization, background-service shutdown, S3 ETag
rendering, table catalog reserved paths and metadata hash layout,
table-bucket mutation guard behavior, catalog lock acquisition timeout,
and config test disk-layout parsing.
- Verification: focused RustFS test-target compile, migration guard, shell
syntax check, formatting, diff hygiene, Rust risk scan, branch freshness
check, and three-expert review.
- [x] `API-143` Route app shared runtime facade through storage owner symbols.
- Do: expose storage-owner aliases and wrappers for app-shared ECStore,
endpoint layout, rio readers, notification access, global object-store
resolver, shared error helpers, storage-class validation, and test local
disk initialization, then migrate the duplicate app facade entries to
delegate to storage-owner symbols.
- Acceptance: `rustfs/src/app/mod.rs` delegates shared IO/error/global/
notification/storage wrappers to `crate::storage` owner symbols instead
of duplicate `ecstore_*` calls; migration guards reject restoring those
duplicate calls.
- Must preserve: app context resolution, object-store resolver fallback,
notification system access, rio reader boxing/wrapping, lock timeout,
storage-class validation, S3 ETag rendering, and app test disk setup.
- Verification: focused RustFS test-target compile, migration guard, shell
syntax check, formatting, diff hygiene, Rust risk scan, branch freshness
check, and three-expert review.
- [x] `API-144` Route app bucket facade source imports through storage owner re-exports.
- Do: expose bucket target/lifecycle/target, client transition API, and
storageclass through storage owner re-exports, then source the app bucket,
client, and config facade entries through `crate::storage`.
- Acceptance: `rustfs/src/app/mod.rs` no longer imports direct
`rustfs_ecstore::api::{bucket,client,config}::` source paths; migration
guards reject restoring those direct source paths.
- Must preserve: bucket target, lifecycle, metadata, object lock,
policy/quota/replication/tagging/target/versioning, transition reader, and
storageclass compatibility paths.
- Verification: focused RustFS test-target compile, migration guard, shell
syntax check, formatting, diff hygiene, Rust risk scan, branch freshness
check, pre-commit, and three-expert review.
- [x] `API-145` Route remaining app facade ECStore source imports through storage owner re-exports.
- Do: expose app-needed admin, capacity, compression, data-usage, global, and
tier modules through storage owner re-exports, then source the remaining
app facade entries through `crate::storage`.
- Acceptance: `rustfs/src/app/mod.rs` contains no direct
`rustfs_ecstore::api::` source imports; migration guards reject restoring
any direct ECStore API source path in the app facade.
- Must preserve: server info, pool capacity summaries, compression checks,
bucket usage memory accounting, global tier manager access, and tier
config/warm backend compatibility paths.
- Verification: focused RustFS test-target compile, migration guard, shell
syntax check, formatting, diff hygiene, Rust risk scan, branch freshness
check, pre-commit, and three-expert review.
- [x] `API-146` Route admin facade ECStore source imports through storage owner re-exports.
- Do: expose admin-needed bucket, capacity, client, config, data-usage, disk,
error, global, layout, metrics, notification, rebalance, RPC, storage, and
tier symbols through storage owner re-exports, then source the admin facade
through `crate::storage`.
- Acceptance: `rustfs/src/admin/mod.rs` contains no direct
`rustfs_ecstore::api::` source imports; migration guards reject restoring
any direct ECStore API source path in the admin facade.
- Must preserve: admin handler utilities, bucket controls, storage class
updates, data usage reads, cluster/global metadata, metrics/notification
views, rebalance status, peer RPC, ECStore handle, and tier admin paths.
- Verification: focused RustFS test-target compile, migration guard, shell
syntax check, formatting, diff hygiene, Rust risk scan, branch freshness
check, pre-commit, and three-expert review.
- [x] `API-147` Route external runtime crate ECStore source imports through local compatibility boundaries.
- Do: move direct ECStore facade source imports in notify, observability
metrics, S3 Select, Swift, IAM, heal, and scanner runtime entry modules
into crate-local `ecstore_compat` modules while preserving existing
wrappers and aliases at each crate boundary.
- Acceptance: target runtime crate source directories contain no direct
`rustfs_ecstore::api::` source paths outside `ecstore_compat.rs`; migration
guards reject restoring those bypasses.
- Must preserve: notify config persistence and object-store resolution,
observability storage/ILM/replication metrics, S3 Select storage error
mapping and object reads, Swift metadata/object-store access, IAM config
and notification behavior, heal disk wrappers, and scanner lifecycle/disk
runtime wrappers.
- Verification: focused external crate compile, migration guard, shell syntax
check, formatting, diff hygiene, Rust risk scan, branch freshness check,
pre-commit, and three-expert review.
- [x] `API-148` Route external test ECStore source imports through local compatibility boundaries.
- Do: move direct ECStore facade source imports in heal integration tests,
scanner lifecycle tests, and e2e reliant/replication helpers into local
`ecstore_test_compat` modules while preserving existing test aliases and
helper call paths.
- Acceptance: target external test/e2e paths contain no direct
`rustfs_ecstore::api::` source paths outside `ecstore_test_compat.rs`;
migration guards reject restoring those bypasses.
- Must preserve: heal endpoint setup and resume disk types, scanner
lifecycle transition setup, e2e node RPC client helpers, and replication
bucket target cleanup behavior.
- Verification: focused test-target compile, migration guard, shell syntax
check, formatting, diff hygiene, Rust risk scan, branch freshness check,
pre-commit, and three-expert review.
- [x] `API-149` Route fuzz ECStore source imports through a local compatibility boundary.
- Do: move direct ECStore facade source imports in bucket validation and path
containment fuzz targets into `ecstore_fuzz_compat` wrapper functions.
- Acceptance: fuzz targets contain no direct `rustfs_ecstore::api::` source
paths outside `ecstore_fuzz_compat.rs`; migration guards reject restoring
those bypasses.
- Must preserve: bucket/object validation fuzz semantics, meta bucket
compatibility checks, object prefix/path component validation, and root
containment assertions.
- Verification: focused fuzz compile, migration guard, shell syntax check,
formatting, diff hygiene, Rust risk scan, branch freshness check,
pre-commit, and three-expert review.
- [x] `API-150` Move storage owner ECStore source imports into a compatibility module.
- Do: move the storage owner `ecstore_*` facade source modules out of
`rustfs/src/storage/mod.rs` and into `rustfs/src/storage/ecstore_compat.rs`.
- Acceptance: `rustfs/src/storage/mod.rs` contains no direct
`rustfs_ecstore::api::` source paths, while existing `crate::storage::*`
aliases and helper functions keep their public shape.
- Must preserve: storage owner type aliases, constants, wrapper functions,
disk RPC extension traits, bucket metadata helpers, runtime globals, and
startup storage wiring.
- Verification: RustFS compile coverage, migration guard, shell syntax check,
formatting, diff hygiene, Rust risk scan, branch freshness check,
pre-commit, and three-expert review.
- [x] `API-151` Collapse thin runtime crate ECStore compatibility bridges.
- Do: remove the thin `ecstore_compat.rs` files from notify, obs metrics,
Swift, and S3 Select, moving their aliases and wrappers to the owner root
modules.
- Acceptance: those crates no longer declare local `ecstore_compat` modules,
while their public/internal owner-root aliases and wrapper functions keep
the same call paths for downstream modules.
- Must preserve: notify server-config IO, metrics data/quota/replication
reads, S3 Select object-reader/error mapping, and Swift bucket metadata and
object reader aliases.
- Verification: focused runtime crate compile coverage, migration guard,
shell syntax check, formatting, diff hygiene, Rust risk scan, branch
freshness check, pre-commit, and three-expert review.
## Next PRs
1. `pure-move`: continue pruning remaining facade compatibility and owner boundaries.
@@ -3946,14 +4199,213 @@ Status values: `[ ]` not started, `[~]` in progress, `[x]` complete, `[!]` block
| Expert | Status | Notes |
|---|---|---|
| Quality/architecture | pass | API-135 replaces e2e, heal/scanner integration-test, and fuzz-target ECStore owner module aliases with explicit imported symbols. |
| Migration preservation | pass | RPC client construction, replication target access, heal ECStore setup, scanner lifecycle/tier/transition paths, and fuzz validation call targets keep the same ECStore facade symbols. |
| Testing/verification | pass | Focused e2e/heal/scanner compile, fuzz manifest compile, completed test/fuzz alias residual scan, migration/layer guards, formatting, diff hygiene, full pre-commit, and diff-only Rust risk scan passed. |
| Quality/architecture | pass | API-151 removes thin runtime crate ECStore bridge files and keeps the remaining source imports at owner roots. |
| Migration preservation | pass | Notify, obs metrics, Swift, and S3 Select keep the same owner-root aliases and wrappers for existing consumers. |
| Testing/verification | pass | Focused runtime crate compile, formatting, migration guard, shell syntax, diff hygiene, Rust risk scan, and pre-commit passed for API-151. |
## Verification Notes
Passed before push:
- Issue #660 API-151 current slice:
- `cargo check -p rustfs-notify -p rustfs-obs -p rustfs-s3select-api -p rustfs-protocols`:
passed.
- `cargo fmt --all`: passed.
- `cargo fmt --all --check`: passed.
- `git diff --check`: passed.
- `bash -n scripts/check_architecture_migration_rules.sh`: passed.
- `./scripts/check_architecture_migration_rules.sh`: passed.
- `make pre-commit`: passed.
- Runtime thin bridge scan: passed; notify, obs metrics, Swift, and S3
Select no longer declare local `ecstore_compat` modules.
- Rust risk scan: no new production unwrap/expect, casts, panic/todo/unsafe,
or error-type risks added; changes only move import/source boundaries.
- Issue #660 API-140 current slice:
- `cargo check --tests -p rustfs`: passed.
- `cargo fmt --all`: passed.
- `cargo fmt --all --check`: passed.
- `git diff --check`: passed.
- `bash -n scripts/check_architecture_migration_rules.sh`: passed.
- `./scripts/check_architecture_migration_rules.sh`: passed.
- Rust risk scan: no new production unwrap/expect, casts, panic/todo/unsafe,
or error-type risks added; existing capacity metrics casts, HTTP atomic
relaxed counters, and HTTP test unwrap/expect calls remain unchanged.
- Issue #660 API-141 current slice:
- `cargo check --tests -p rustfs`: passed.
- `cargo fmt --all`: passed.
- `cargo fmt --all --check`: passed.
- `git diff --check`: passed.
- `bash -n scripts/check_architecture_migration_rules.sh`: passed.
- `./scripts/check_architecture_migration_rules.sh`: passed.
- `make pre-commit`: passed.
- Rust risk scan: no new production unwrap/expect, casts, panic/todo/unsafe,
or error-type risks added; only import aliases were reported by the textual
`as` scan.
- Issue #660 API-142 current slice:
- `cargo check --tests -p rustfs`: passed.
- `cargo fmt --all`: passed.
- `cargo fmt --all --check`: passed.
- `git diff --check`: passed.
- `bash -n scripts/check_architecture_migration_rules.sh`: passed.
- `./scripts/check_architecture_migration_rules.sh`: passed.
- `make pre-commit`: passed.
- Rust risk scan: no new production unwrap/expect, casts, panic/todo/unsafe,
or error-type risks added; only type/import aliases were reported by the
textual `as` scan.
- Issue #660 API-143 current slice:
- `cargo check --tests -p rustfs`: passed.
- `cargo fmt --all`: passed.
- `cargo fmt --all --check`: passed.
- `git diff --check`: passed.
- `bash -n scripts/check_architecture_migration_rules.sh`: passed.
- `./scripts/check_architecture_migration_rules.sh`: passed.
- `make pre-commit`: passed.
- Rust risk scan: no new production unwrap/expect, casts, panic/todo/unsafe,
or error-type risks added; only existing `DiskResult<Vec<String>>`
textual matches were reported by the broad error-type scan.
- Issue #660 API-144 current slice:
- `cargo check --tests -p rustfs`: passed.
- `cargo fmt --all`: passed.
- `cargo fmt --all --check`: passed.
- `git diff --check`: passed.
- `bash -n scripts/check_architecture_migration_rules.sh`: passed.
- `./scripts/check_architecture_migration_rules.sh`: passed.
- `make pre-commit`: passed.
- Rust risk scan: no new production unwrap/expect, casts, panic/todo/unsafe,
or error-type risks added; only existing `DiskResult<Vec<String>>`
textual matches were reported by the broad error-type scan.
- Issue #660 API-145 current slice:
- `cargo check --tests -p rustfs`: passed.
- `cargo fmt --all`: passed.
- `cargo fmt --all --check`: passed.
- `git diff --check`: passed.
- `bash -n scripts/check_architecture_migration_rules.sh`: passed.
- `./scripts/check_architecture_migration_rules.sh`: passed.
- `make pre-commit`: passed.
- Rust risk scan: no new production unwrap/expect, casts, panic/todo/unsafe,
or error-type risks added; only existing `DiskResult<Vec<String>>`
textual matches were reported by the broad error-type scan.
- Issue #660 API-146 current slice:
- `cargo check --tests -p rustfs`: passed.
- `cargo fmt --all`: passed.
- `cargo fmt --all --check`: passed.
- `git diff --check`: passed.
- `bash -n scripts/check_architecture_migration_rules.sh`: passed.
- `./scripts/check_architecture_migration_rules.sh`: passed.
- `make pre-commit`: passed.
- Rust risk scan: no new production unwrap/expect, casts, panic/todo/unsafe,
or error-type risks added; only existing `DiskResult<Vec<String>>`
textual matches were reported by the broad error-type scan.
- Issue #660 API-147 current slice:
- `cargo check -p rustfs-notify -p rustfs-obs -p rustfs-s3select-api -p rustfs-protocols -p rustfs-iam -p rustfs-heal -p rustfs-scanner`:
passed.
- `cargo fmt --all`: passed.
- `cargo fmt --all --check`: passed.
- `git diff --check`: passed.
- `bash -n scripts/check_architecture_migration_rules.sh`: passed.
- `./scripts/check_architecture_migration_rules.sh`: passed.
- `make pre-commit`: passed.
- Runtime crate ECStore source bypass scan: passed; target runtime crate
source paths now reference `rustfs_ecstore::api::` only inside
`ecstore_compat.rs`.
- Rust risk scan: no new production unwrap/expect, casts, panic/todo/unsafe,
or error-type risks added; changes only move import/source boundaries.
- Issue #660 API-148 current slice:
- `cargo check --tests -p rustfs-heal -p rustfs-scanner -p e2e_test`:
passed.
- `cargo fmt --all`: passed.
- `cargo fmt --all --check`: passed.
- `git diff --check`: passed.
- `bash -n scripts/check_architecture_migration_rules.sh`: passed.
- `./scripts/check_architecture_migration_rules.sh`: passed.
- `make pre-commit`: passed.
- External test ECStore source bypass scan: passed; target test/e2e paths now
reference `rustfs_ecstore::api::` only inside `ecstore_test_compat.rs`.
- Rust risk scan: no new production unwrap/expect, casts, panic/todo/unsafe,
or error-type risks added; changes only move import/source boundaries.
- Issue #660 API-149 current slice:
- `cargo check --manifest-path fuzz/Cargo.toml --bins`: passed; Cargo
refreshed the stale fuzz lockfile during verification and the generated
lockfile change was not retained.
- `cargo fmt --all --manifest-path fuzz/Cargo.toml`: passed.
- `cargo fmt --all --check --manifest-path fuzz/Cargo.toml`: passed.
- `git diff --check`: passed.
- `bash -n scripts/check_architecture_migration_rules.sh`: passed.
- `./scripts/check_architecture_migration_rules.sh`: passed.
- `make pre-commit`: passed.
- Fuzz ECStore source bypass scan: passed; fuzz targets now reference
`rustfs_ecstore::api::` only inside `ecstore_fuzz_compat.rs`.
- Rust risk scan: no new production unwrap/expect, casts, panic/todo/unsafe,
or error-type risks added; changes only move fuzz import/source boundaries.
- Issue #660 API-150 current slice:
- `cargo check --tests -p rustfs`: passed.
- `cargo fmt --all`: passed.
- `cargo fmt --all --check`: passed.
- `git diff --check`: passed.
- `bash -n scripts/check_architecture_migration_rules.sh`: passed.
- `./scripts/check_architecture_migration_rules.sh`: passed.
- `make pre-commit`: passed.
- Storage owner direct ECStore source scan: passed; `rustfs/src/storage/mod.rs`
contains no direct `rustfs_ecstore::api::` source path.
- Rust risk scan: no new production unwrap/expect, casts, panic/todo/unsafe,
or error-type risks added; changes only move storage owner import/source
boundaries.
- Issue #660 API-139 current slice:
- `cargo check --tests -p rustfs`: passed.
- `cargo fmt --all`: passed.
- `cargo fmt --all --check`: passed.
- `git diff --check`: passed.
- `bash -n scripts/check_architecture_migration_rules.sh`: passed.
- `./scripts/check_architecture_migration_rules.sh`: passed.
- Rust risk scan: no new production unwrap/expect, casts, panic/todo/unsafe,
or error-type risks added; existing startup-server test `expect` calls
remain test-only and unchanged.
- Issue #660 API-138 current slice:
- `cargo check -p rustfs-notify -p rustfs-s3select-api`: passed.
- `cargo fmt --all`: passed.
- `cargo fmt --all --check`: passed.
- `git diff --check`: passed.
- `bash -n scripts/check_architecture_migration_rules.sh`: passed.
- `./scripts/check_architecture_migration_rules.sh`: passed.
- Rust risk scan: no new production unwrap/expect, casts, panic/todo/unsafe,
or error-type risks added; existing S3 Select unwrap and Notify
`Result<String>` wrapper signatures remain unchanged.
- Issue #660 API-137 current slice:
- `cargo fmt --all --check`: passed.
- `git diff --check`: passed.
- `bash -n scripts/check_architecture_migration_rules.sh`: passed.
- `./scripts/check_architecture_migration_rules.sh`: passed.
- Stacked-base freshness check against
`origin/overtrue/arch-test-fuzz-owner-symbols`: passed.
- Issue #660 API-136 current slice:
- `cargo check --tests -p rustfs`: passed.
- `cargo fmt --all`: passed.
- `cargo fmt --all --check`: passed.
- `git diff --check`: passed.
- `bash -n scripts/check_architecture_migration_rules.sh`: passed.
- `./scripts/check_architecture_migration_rules.sh`: passed.
- `./scripts/check_layer_dependencies.sh`: passed.
- `make pre-commit`: passed.
- Completed runtime-owner module-alias residual scan: passed.
- Rust risk scan: no new production unwrap/expect, panic/todo/unsafe, or
risky behavior added; existing `Result<Vec<String>>` storage trait
signatures remain unchanged compatibility surfaces.
- Issue #660 API-135 current slice:
- `cargo check --tests -p e2e_test -p rustfs-heal -p rustfs-scanner`: passed.
- `cargo check --manifest-path fuzz/Cargo.toml --bins`: passed.