# Static-response transformation RustProxy 0.22.3 retains static transformation between origin decoding and shared-cache storage. A transformed identity representation is cached once and downstream compression is selected later for each client. Per-vhost and Docker-discovery transform opt-in remain disabled by default even when the global engine is available. ## Administration dashboard The main **Transform** workspace reads `GET /api/transform` and exposes in-memory runtime statistics globally or per vhost: - responses examined, transformed, skipped/fail-open and failed; - transformed cache HITs (served without running the transformer again); - original, transformed and saved bytes before client compression; - average transform time; - applied transforms by JavaScript/CSS/HTML/SVG/JSON; - bounded skip/fail-open reason counters; - a per-vhost effectiveness table. Counters reset on process restart. They are diagnostic telemetry, not persisted cache metadata. The Cache workspace separately marks stored transformed objects. ## Cache diagnostics When `cache.expose_cache_status=true`, transformed cached representations are identified with the RFC 9211 field plus an extension parameter: ```http Cache-Status: RustProxy; hit; ttl=556488; detail="cache_hit"; transformed ``` The field remains `Cache-Status`, not `X-Cache-Status`. HTTP/2 and HTTP/3 normalize field names to lowercase on the wire. Origin-provided `Cache-Status` and `X-Cache-Status` values are removed before RustProxy emits its own diagnostics. ## Release status The dashboard/telemetry does not change the existing v0.22.3 release gate. JavaScript and CSS still require mature parser-backed minifiers, and the complete Rust compiler/runtime acceptance gate must pass before release acceptance.