41 lines
3.6 KiB
Markdown
41 lines
3.6 KiB
Markdown
# Verification report - RustProxy 0.26.1
|
|
|
|
## Scope
|
|
|
|
RustProxy 0.26.1 extends the persistent protocol diagnostics introduced in 0.26.0 with safe per-vhost attribution and updates the Stored Logs explorer. `protocol_error` records can now carry canonical `reason`, `error`, `sni`, `authority`, `matched_by` and resolved `vhost` diagnostics while retaining the 0.26.0 compatibility fields. Attribution reuses the normal exact/wildcard frontend resolver and never derives a filename directly from client Host/SNI input. Unresolved traffic remains `_unmatched` in per-vhost file mode, and protocol errors continue to bypass the Live Logs history/broadcast path.
|
|
|
|
Stored Logs now supports account-scoped selectable columns, sticky headers, highlighted rows with inline JSON details, a collapsed configured-file inventory, custom-field recovery for canonical `client_ip`, and value-based keyword search including protocol diagnostics.
|
|
|
|
## Source-level regression coverage
|
|
|
|
0.26.1-specific Rust tests cover shared logging-vhost resolution and precedence, authority/Host normalization, unknown/missing SNI, safe vhost sink names, bounded protocol identity fields, persistent protocol fields under custom JSON mappings, Live Logs separation, Stored Logs canonical client-IP recovery and protocol-diagnostic text matching. Administration preference tests cover the new Stored Logs column list and backward-compatible defaults.
|
|
|
|
The HTTP/TLS/H2/H3 sources carry the resolved identity through the persistent logging path. TLS ClientHello SNI is retained for later handshake and HTTP/2 failures; HTTP/3 reads the completed QUIC/Rustls handshake identity for later request/connection diagnostics. Failures before a usable identity exists remain unmatched.
|
|
|
|
## Verification status in this workspace
|
|
|
|
| Check | Status |
|
|
|---|---|
|
|
| `python3 scripts/langs_check.py` | PASS |
|
|
| `python3 scripts/memory_contracts.py` | PASS |
|
|
| `python3 scripts/web_server_contracts.py` | PASS |
|
|
| `python3 scripts/security_contracts.py` | PASS |
|
|
| `python3 scripts/security_dependency_contracts.py` | PASS |
|
|
| `python3 scripts/source_module_contracts.py` | PASS |
|
|
| `python3 scripts/rust_module_contracts.py` | PASS after keeping modified Rust modules within the 500-line contract |
|
|
| `python3 scripts/docs_check.py` | PASS |
|
|
| `node scripts/web_service_ui_test.mjs` | PASS |
|
|
| `node --check src/admin/web/file-logs.js` | PASS |
|
|
| language/OpenAPI JSON parse | PASS |
|
|
| `python3 scripts/check_source.py` | PASS; explicitly reports Rust parsing/types/runtime as not verified |
|
|
| `python3 scripts/release_smoke.py` | PASS, including upgrade/package/reproducibility contracts |
|
|
| `go test ./...` in `docker-agent` | PASS |
|
|
| `./dev.sh test` | Rust-independent gates PASS; exits 127 when the Rust stage is reached because Cargo is unavailable |
|
|
| `./dev.sh check` | BLOCKED: Rust/Cargo toolchain unavailable in this workspace |
|
|
| `cargo fmt --check` | BLOCKED: Rust/Cargo toolchain unavailable in this workspace |
|
|
| `cargo clippy --all-targets --all-features -- -D warnings` | BLOCKED: Rust/Cargo toolchain unavailable in this workspace |
|
|
| `cargo test --all-targets --all-features` | BLOCKED: Rust/Cargo toolchain unavailable in this workspace |
|
|
| `bash dev.sh` complete release build | BLOCKED at Rust compilation: Rust/Cargo toolchain unavailable in this workspace |
|
|
|
|
The source archive must not be described as compiler-verified until the Rust-enabled release-host gates pass. Rust-independent gates verify source structure, security contracts, documentation, browser JavaScript, packaging invariants and deterministic archive behavior, but they cannot substitute for Rust parsing, type checking, Clippy or runtime tests.
|