Files
RustProxy/docs/V0.25.1_AUDIT.md
T
2026-10-04 11:15:58 +02:00

3.3 KiB

RustProxy 0.25.1 release audit

RustProxy 0.25.1 is a focused Traffic-UX and source-modularization release on top of the 0.25.0 Web Server foundation. No configuration-schema migration is introduced.

Implemented scope

  • Traffic is split into Overview, Clients, Requests and Delivery sub-tabs so the page no longer requires a long vertical scroll.
  • All bounded Traffic dimensions are visualized: donuts for methods/status/cache/countries and horizontal bars for User-Agent, effective client IP, path, route and byte volume.
  • Every Rust source file is release-guarded at 500 lines maximum and unit tests must live outside implementation files.
  • Oversized dashboard JavaScript is split into bounded modules while /assets/app.js and /assets/vhosts.js remain stable browser URLs assembled by the Rust admin router.
  • Docker Agent implementation is split into model, Docker, network, certificate, server and entry-point modules; tests remain in main_test.go.
  • Deployment and NPM migration utilities are split into bounded implementation modules while keeping their existing command-line entry points and helper API used by release tests.
  • The Web Server split regressions reported after 0.25.0 are guarded explicitly: dangling attributes, unresolved htaccess, inaccessible server_protocol, missing anyhow::Context, broken include! targets and test code embedded in implementation modules.

Compiler-error regression status

The current source tree contains the intended corrections:

  • src/web_server/response.rs ends with valid include! items and cannot end with a dangling #[derive(...)] under the structural contract.
  • the FastCGI logical module imports htaccess and anyhow::Context;
  • server_protocol is exposed inside the Web Server module through request::server_protocol and imported by FastCGI;
  • serve.rs does not retain the previously unused str::FromStr import.
  • split runtime documentation comments are attached to their actual methods instead of ending an include! fragment immediately before };
  • included Rust fragments cannot start with inner //! module documentation;
  • the split Web Server response-header fragment imports sibling htaccess explicitly and no longer retains the stale ACCEPT_ENCODING/FromStr imports;
  • split proxy/config/Prometheus fragments no longer export unnecessary mut bindings or unused values from their include! tuples.

python3 scripts/rust_module_contracts.py checks these conditions without a compiler. A real cargo check --locked --all-targets remains mandatory on the release host.

Verification gates

Rust-independent acceptance for this package includes:

python3 scripts/rust_module_contracts.py
python3 scripts/source_module_contracts.py
python3 scripts/check_source.py
python3 scripts/release_smoke.py
python3 scripts/memory_contracts.py
python3 scripts/web_server_contracts.py
python3 scripts/security_contracts.py
python3 scripts/security_dependency_contracts.py
python3 scripts/docs_check.py
python3 scripts/langs_check.py
go test ./...                 # from docker-agent/

The packaging workspace has no Rust/Cargo toolchain. Before production/release acceptance, run:

cargo fmt --all -- --check
cargo check --locked --all-targets
cargo test --locked --all-targets

No claim of compiler success is made until those commands pass on a Rust-enabled host.