mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-05 12:57:42 +00:00
ada6f7587e
* refactor: flatten test harness storage compat aliases * refactor: flatten rustfs storage compat aliases (#3597) * refactor: prune runtime storage compat surface (#3598) * refactor: flatten runtime secondary storage compat (#3599) * docs: add scheduler placement profiling baselines (#3600) * feat: add observability topology capability contracts (#3601)
45 lines
1.8 KiB
Markdown
45 lines
1.8 KiB
Markdown
# Runtime Capability Contracts
|
|
|
|
This document records the `rustfs/backlog#660` PR-08 and PR-09 contract slice.
|
|
It adds read-only observability and topology snapshot shapes to
|
|
`rustfs-storage-api` without coupling the contract crate to runtime, ECStore,
|
|
admin routes, profiling, or observability implementation crates.
|
|
|
|
## Observability Snapshot Contract
|
|
|
|
`ObservabilitySnapshot` records:
|
|
|
|
- Runtime telemetry capability state.
|
|
- Userspace CPU and memory profiling capability state.
|
|
- Process, system, and cgroup memory sampling state.
|
|
- Platform support for target triple, OS, architecture, allocator, eBPF, and
|
|
NUMA capability.
|
|
|
|
Unsupported, disabled, and unknown states are represented by `CapabilityState`
|
|
instead of failing snapshot construction. The contract is intentionally read
|
|
only and does not replace existing profiling routes, telemetry APIs, exporter
|
|
pipelines, or startup behavior.
|
|
|
|
## Topology Snapshot Contract
|
|
|
|
`TopologySnapshot` records:
|
|
|
|
- Pool, set, and disk identity indexes plus optional stable IDs.
|
|
- Optional zone, rack, node, media, NUMA, and additional labels.
|
|
- Topology-wide profiling, NUMA, failure-domain label, and media-label
|
|
capability states.
|
|
- Per-disk media, failure-domain, NUMA, and profiling capability states.
|
|
|
|
Missing labels are represented as absent `Option` values. Extra topology labels
|
|
belong in the `additional` label map, so future inventory labels do not require
|
|
ECStore type leakage.
|
|
|
|
## Boundary Rules
|
|
|
|
- No `rustfs-ecstore`, `rustfs-obs`, Axum, KMS, admin route, OTEL, eBPF, or
|
|
profiling implementation dependency is added to `rustfs-storage-api`.
|
|
- No placement, membership, NUMA pinning, profiling, startup, admin route, or
|
|
exporter behavior changes are part of this contract slice.
|
|
- Providers must map implementation failures into `CapabilitySnapshotError`
|
|
before crossing the contract boundary.
|