feat(core): add shared request timing collector and middleware - #389
Open
ChristianPavilonis wants to merge 1 commit into
Open
ChristianPavilonis wants to merge 1 commit into
ChristianPavilonis wants to merge 1 commit into
Conversation
15 tasks done
ChristianPavilonis
marked this pull request as ready for review
September 28, 2026 21:23
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Changes
edgezero-core/src/request_timing.rs,src/lib.rsRequestTimings<N, D>, consistent snapshots, compound updates, saturating accumulation, drop-time phase spans and explicit lifecycle marksedgezero-core/src/middleware.rsApplications retain phase enums, domain facts, header names/order, serialization and exposure policy. In particular, Trusted Server retains
Server-Timingrendering; no generic renderer is introduced. Callbacks run synchronously under one nonblocking mutex; panics propagate and poison recovery is best-effort, without rollback or payload validation. Attachment does not finalize requests, measure streamed-body completion, or cover unmatched routes.Closes
No standalone EdgeZero issue. Related consumer work: IABTechLab/trusted-server#1121.
Test plan
Publication-stage reruns against this tree:
cargo test -p edgezero-core— 484 unit tests, two integration tests and one compile-fail doctest passed; 13 existing doctests ignoredcargo test --workspace --all-targetscargo clippy --workspace --all-targets --all-features -- -D warningscargo fmt --all -- --checkcargo check --workspace --all-targets --features "fastly cloudflare spin"cargo check -p edgezero-adapter-spin --target wasm32-wasip2 --features spingit diff --checkEarlier implementation-stage validation, recorded in the committed plan (not rerun during publication):
wasm32-wasip1, Spinwasm32-wasip2, Cloudflarewasm32-unknown-unknownexamples/app-demogates2791ceb46908e6af04ccaae0c10b29d35336a9f4Independent final verification
9c03cc59300363ae5339fc970dded08ede563e98.2791ceb46908e6af04ccaae0c10b29d35336a9f4before requesting review.Coordinated delivery / merge gate
Trusted Server temporarily pins all six EdgeZero dependencies to
9c03cc59300363ae5339fc970dded08ede563e98for integration and joint PR verification, with no local path override and one resolved EdgeZero core identity. That temporary commit pin is not the final delivery pin.Trusted Server #1121 needs an actual approved EdgeZero release tag before merging to main. Replace all temporary pins with that release, regenerate and inspect its lockfile, and revalidate. Review readiness does not waive the release requirement. No merge or tag/release has been performed.
Checklist
{id}syntax where applicable; routing unchangededgezero_core, not directly fromhttp