46 lines
2.5 KiB
Markdown
46 lines
2.5 KiB
Markdown
# Verification report - RustProxy 0.32.2
|
|
|
|
## Scope
|
|
|
|
Source-based patch on the supplied 0.32.1 archive. The Web Server's cache
|
|
revalidation now mirrors the existing Reverse Proxy's 304 handling for local
|
|
files, while preserving original browser conditionals, cache policy and cached
|
|
transformed representations. No backend, PHP-FPM, API or SQLite schema change.
|
|
|
|
## Regression cases added (Rust, execution pending)
|
|
|
|
- F5-style `Cache-Control: max-age=0` and hard-refresh `no-cache` preserve body
|
|
and advance `X-Cache-Hits` when local origin returns 304.
|
|
- Browser `If-None-Match` produces downstream 304 only when the client's validator
|
|
matches the public stored representation, not merely the origin's validator.
|
|
- Unrelated client validators cannot incorrectly validate the stored body.
|
|
- `HEAD` and single-range conditional refresh reuse the validated full body.
|
|
- A changed asset (different on-disk ETag) returns 200 rather than a false 304.
|
|
- Newly private origin revalidation metadata cannot remain in shared storage.
|
|
|
|
## Results and limitations
|
|
|
|
- Python static/structural checks via `./dev.sh test`: **PASS** (including
|
|
version, full source preflight, cache regression contracts, HTTP/cache,
|
|
security, documentation, schema-v9/upgrade and release smoke contracts).
|
|
- All **24 Node.js UI simulations** configured in `./dev.sh test`: **PASS**.
|
|
Three existing fixture assumptions were aligned with current unindented
|
|
functions/version (`backend_cache_0297_ui_test.mjs`,
|
|
`backend_health_0300_ui_test.mjs`, `security_logs_0315_ui_test.mjs`);
|
|
the production panel logic is unchanged.
|
|
- Python load-tool selftest against a Python peer: **PASS**; not a RustProxy
|
|
server test or a memory profile of the proxy.
|
|
- `./dev.sh check`: **unavailable (exit 127)**; Rust/Cargo is not installed.
|
|
- `./dev.sh test`: **pre-Cargo checks PASS; entire command exits 127** because
|
|
Rust/Cargo is not installed, so no Rust tests executed.
|
|
- Rust `cargo check --locked --all-targets`: **not run, Cargo unavailable**.
|
|
- Rust `cargo test --locked --all-targets`: **not run, Cargo unavailable**.
|
|
- Real SQLite schema migration/update on an installed instance: **not run**;
|
|
only source/upgrade contracts were checked.
|
|
- Actual RustProxy process, HTTP/1.1, HTTP/2, HTTP/3, PHP-FPM/WordPress and
|
|
browser DevTools reproduction: **not run** in this source-only environment.
|
|
|
|
**Production acceptance remains open.** Run `./dev.sh check`, `./dev.sh test`
|
|
and repeat browser-refresh/GET comparisons on a Rust 1.99+ build host before
|
|
rolling the release out. The patched source is delivered, not a tested binary.
|