docs(architecture): adjudicate the io-metrics leaf dependency on the s3-ops contract crate (#6683)

This commit is contained in:
Zhengchao An
2026-08-27 03:15:07 +08:00
committed by GitHub
parent 3f9ec4275b
commit f4cc919401
3 changed files with 26 additions and 6 deletions
+7 -2
View File
@@ -115,8 +115,13 @@ default build (lifecycle:
1. **Layers flow downward.** Server → Admin/App → Storage → ecstore → rio/io-core.
No upward imports.
2. **Leaf crates have zero internal dependencies.** `config`, `credentials`, `crypto`,
`io-metrics`, and `madmin` should depend only on external crates.
2. **Leaf crates depend only on external crates, with one adjudicated exception.**
`config`, `credentials`, `crypto`, `io-metrics`, and `madmin` take no internal
dependency except `io-metrics → rustfs-s3-ops` (transitively `rustfs-s3-types`),
a pure contract crate with no I/O and no global state. Adjudicated in
rustfs/backlog#1834 and pinned by the leaf allowlist in
`scripts/check_architecture_migration_rules.sh`; any other internal dependency
fails the guard ([crate boundaries](docs/architecture/crate-boundaries.md)).
- ✅ RESOLVED: the historical `utils → config` and `common → filemeta`/`madmin`
edges were removed; do not reintroduce them (see Known Structural Issues).