Skip to content

feat(admin): classify RustFS diagnostic capabilities#282

Closed
cxymds wants to merge 2 commits into
cxymds/issue-1362-output-v3from
cxymds/issue-1403-diagnostic-capabilities
Closed

feat(admin): classify RustFS diagnostic capabilities#282
cxymds wants to merge 2 commits into
cxymds/issue-1362-output-v3from
cxymds/issue-1403-diagnostic-capabilities

Conversation

@cxymds

@cxymds cxymds commented Jul 21, 2026

Copy link
Copy Markdown
Member

Related issue

Closes rustfs/backlog#1403
Parent: rustfs/backlog#1383
Roadmap: rustfs/backlog#1361

Background and user impact

RustFS 1.0.0-beta.10 registers several diagnostic routes that are placeholders rather than real measurements. Route presence and HTTP 200 responses are therefore not sufficient evidence of support. Without probe-specific truth, rc could advertise or execute object, network, site, or site-replication performance tests that return misleading success.

The existing /v3/inspect-data endpoint also returns reconstructed object bytes and is not an inspect archive.

Root cause

Runtime discovery exposed broad server capabilities but did not normalize individual diagnostic probe states or provide a reusable fail-closed guard. Unknown future server versions could not be distinguished safely from the pinned beta.10 contract.

Solution

  • Add 10 stable diagnostic capability names.
  • Classify the pinned beta.10 contract:
    • available: health, cluster snapshot, extensions catalog, drive observations, and client-devnull
    • unsupported: inspect archive
    • stubbed: object, network, site, and site-replication netperf
  • Mirror cluster and extension availability from their actual read-only discovery requests.
  • Treat unknown future versions as unknown and missing v4 discovery as version-gated.
  • Preserve permission-denied, disabled, unsupported, stubbed, version-gated, and unknown states.
  • Add a reusable CapabilityReport guard that permits only explicitly available diagnostics.
  • Verify discovery never executes an active diagnostic or speed-test request.

Validation

Passed locally at exact head f6e9316:

  • cargo fmt --all --check
  • cargo clippy --workspace --all-targets -- -D warnings
  • cargo test --workspace

Focused rc-core and rc-s3 capability tests also pass.

Review notes

This PR is intentionally stacked on #268 because it extends runtime capability discovery and output schema v3 foundations. It adds no diagnostic command and performs no active probe. Unknown versions remain fail-closed until a server-owned per-probe contract is available through rustfs/backlog#1402.

BREAKING process

BREAKING marker for the stacked exact-head workflow: temporary validation against main includes protected command-reference/schema changes from prerequisite PRs #266 and #268. This #1403 diff against its true #268 base changes only capability core/S3 code and does not independently modify a protected file. The prerequisite output-v3 stack carries its documented additive contract and migration boundary.

@cxymds
cxymds changed the base branch from cxymds/issue-1363-capabilities to main July 21, 2026 15:28
@cxymds cxymds closed this Jul 21, 2026
@cxymds cxymds reopened this Jul 21, 2026
@cxymds
cxymds changed the base branch from main to cxymds/issue-1363-capabilities July 21, 2026 15:29
@cxymds
cxymds changed the base branch from cxymds/issue-1363-capabilities to main July 21, 2026 15:46
@cxymds cxymds closed this Jul 21, 2026
@cxymds cxymds reopened this Jul 21, 2026
@cxymds
cxymds changed the base branch from main to cxymds/issue-1363-capabilities July 21, 2026 15:46
@cxymds

cxymds commented Jul 21, 2026

Copy link
Copy Markdown
Member Author

Validation complete at exact head f6e9316.

The first advisory attempt failed before checkout while Docker Hub timed out resolving the pinned cargo-deny action base image. Re-running only the failed job succeeded without a code or dependency change.

The PR remains correctly stacked on #268 and performs no active diagnostic request.

@cxymds
cxymds deleted the branch cxymds/issue-1362-output-v3 July 22, 2026 13:01
Base automatically changed from cxymds/issue-1363-capabilities to cxymds/issue-1362-output-v3 July 22, 2026 13:01
@cxymds cxymds closed this Jul 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant