Repository navigation
Axum readiness RC - #1541
Draft
ChristianPavilonis wants to merge 307 commits into
Draft
Axum readiness RC#1541ChristianPavilonis wants to merge 307 commits into
ChristianPavilonis wants to merge 307 commits into
Conversation
The Fastly entry point assembles its app once per sandbox with App::from_router, sends each request through send_request_with_registries_and_hooks with prepare and finalize hooks, and handles every FastlyRequestDelivery outcome in delivery.rs. A failed assembly answers through send_assembly_error and is retried by the next request. Auction telemetry queues NDJSON during the request and, with EC pull sync, runs after a committed application body on a fresh client and clock. Pull sync sends each partner group with send_all_until under a 15 s cutoff. prepare installs a per-request synthesized header set, so head-limit, framing and fallback responses carry the version, geo and operator headers. Removes the oneshot dispatch, the hand-built App and its startup error router, the native response conversion and streaming delivery, the config store handle, and core's stream_asset_body.
Delete core's unused StubHttpClient and its tests. Look up geo once per request and carry it to the finalize middleware, trace metadata and per-request services. Make TelemetryQueue a newtype, pass loaded settings to assembly, and end the remaining failure logs with the sandbox counters. Test the reuse path through two real requests, assert configure installs the write deadline, and cover a configure failure. Run the response diff script through a symlink and its node test in CI.
RequestGeo now answers Ok(None) for any IP the request did not resolve, so FastlyPlatformGeo has no caller left and is deleted. Tests use RequestGeo values instead. Failure log contexts are formatted only when a log writes them. The spec labels item 25 as a response change.
The cross-IP test used an address with no Viceroy geo data, so a restored host lookup also returned None and the test still passed. Loopback has default geo data, so a restored fallback now fails the test.
Carry the behavior merged in #1516 at1810c763 without restoring the retired transport abstraction. Keep optimized requests and ordinary raw GET/unsigned HEAD caching unchanged.
…igration The proxy.rs conflict is #1516's S3 cache bypass, ported onto the EdgeZero client. send_asset_origin_request takes an OutboundCachePolicy. The signed S3 HEAD preflight, its raw error-body GET, and a signed raw HEAD without Image Optimizer options send Bypass; the final Image Optimizer request, an unsigned raw HEAD, and a raw GET keep PlatformDefault. The two existing preflight tests now expect the bypass; #1516's other tests follow in their own commit.
handle_asset_proxy_request_bypasses_cache_for_signed_raw_head covers the six raw-HEAD cases (svg, svgz, rewritten_svg, debug, disabled_io, absent_io), each with an origin reply delivered as one chunk and as a stream of chunks, and reads back the Bypass cache policy. handle_asset_proxy_request_keeps_cache_for_raw_get_and_unsigned_head pins PlatformDefault on a signed raw GET, an unsigned raw GET and an unsigned raw HEAD. handle_asset_proxy_request_returns_s3_head_errors_without_cache_or_io replaces the branch's 403-only HEAD preflight test with #1516's 403 and 404 cases, the kept Content-Length, and the uncached preflight transport.
handle_asset_proxy_request_preflights_s3_before_image_optimizer asserted only the status and body, and the scripted client does not fail on an unused reply, so it passed without a preflight. It now reads back the methods [HEAD, GET] and the cache policies [Bypass, PlatformDefault].
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
83d7a6296d285e135c4ea70021b19e6c8dca7e9f, not refreshed draft462.Exact inputs
Head:
c7f8ca7e1ad09bdbae8de40ceaa50d658ef5b7dc.Tree:
b3cb8e8dd02390d9822880bee38196cd538520dc.Review base:
baseline/demo-main-20261110at historical TS main2dd968aeebeb2cc0d5110115f64e0ad58e2e1d13, already merged into original demo2423a2ed.The user selected baseline cleanup and deferred current-main forwarding/provenance compatibility. This branch intentionally omits newer-main functionality; do not retarget/merge it into current main as an ordinary forward integration. Seven EdgeZero declarations and ten locked git sources use83d. Registry package/version sets match original final demo2423; Cargo reconciles four permitted dependency edges within that identical set.
Review sequence
b1216763aaffb0d0a41cfba70a2a8e61218fc568207dbe2672968af14eefa67b9e1ff2cf46f621112ee7f68fcfc7f8ca7e1The existing ten heads/bases and ready states are unchanged. New baseline port1545 requests aram356, prk-Jr and dhruv8sh. Source1498 remains main-based atf22a83fce without head/base/readiness changes. Integration1541 remains draft regardless of constituent readiness.
Relay1498 inclusion
The user authorized source1498 in this stack/RC. Baseline port1545 applies its feature-only delta from
f22a83fceac98767979ac0dd406701e4a000c1db, not its newer-main ancestry.integrations.prebid.relay_soft_vendor_exceptionremains false by default and testing-only; omitted/false leave publisher rules unchanged. Explicittrue retains Purpose2, mapped GVL vendor and unrelated-bidder controls. No operator/deployment input is enabled.The replay exposed the previously observed automatic-CMP ownership defect when explicitly enabled: later publisher denial plus stale CMP grant caused a stubbed identity request/cookie. The existing guarded-setter correction fromd827b6c7 applies cleanly and is included with normal/deferred/throwing-subscriber regressions. Public ownership transfer, listener retirement, zero requests/cookies after denial and finally restoration are exercised. This extra correction is in port1545, not claimed already present in source1498. No new owner/ledger, public bypass, production timer, retry, dependency pin or new consent policy.
34 guard/ownership and11 actual production-artifact cases pass, along with180 focused Rust Prebid cases. The baseline shim measures41,948 chars under a narrow42,500 cap with Prebid-free/separate-artifact controls retained; the newer-main54KB allowance is not copied. Original red receipts are retained.
Scope and corrections
Existing native snapshots, body/head/response ownership, supported deadlines, EC generation/grants/consent and protected CloudFront Geo behavior are retained. Unset caller deadlines delegate to EdgeZero through its existing dispatch_budget API instead of the original TS30-second fallback; three regression tests cover unset/default, explicit120-second and earlier explicit deadlines. No new production timer, retry, result ledger, unlimited workaround or raw HTTP fallback.
Routine fixes retain failed receipts: redundant test imports, HTTP table formatting and documentation host/port placeholders. Hosted docs build then caught a relative Terraform link outside the site; Native EC8b11dbad3 replaces it with the repository path without disabling dead-link checking. Docs ESLint/VitePress build and format pass at their changed inputs.
A hosted no-listener assertion failed while the child logged expected startup rejection. The old log lacks socket endpoints, so its exact subtype is unconfirmed. A controlled Linux reproduction proves successful TCP self-connection with no listener. Native8490c691d changes only the acceptance fixture to exclude equal local/peer endpoints; real-listener/self-connection controls pass. Nonzero exit, diagnostic, secret-redaction and the original startup deadline remain mandatory. Native default and final9356 all-feature acceptance9 cases/strict lint/fmt pass. No assertion waiver.
Older browser CI failures show Playwright1.58.2 refusing ubuntu-latest's new Ubuntu26.04 before installation. Nativeb1216763a pins only the browser job to ubuntu-24.04, preserving dependency versions, tests and assertions. Direct Actionlint passes at native/final inputs; actual supported-host browser execution remains pending. The only9356 ->ee7 difference is this CI host/comment.
Checks and outcomes
sha256:8878057fb97f2e1d13ca1049acd18c4d7d21f67d5b1403851d29f898019fa435, linux/amd64 UID/GID10001, startup rejection, health/auth/TSJS, read-only root/writable mounts and in-flight SIGTERM drain. Prior images are retained separately and not substituted for this new JS/config input. No image push.Passing receipts are reused only where relevant inputs remain unchanged, not claimed as a fresh whole-tree rerun. Evidence root retains ts-baseline-final-proof.md, ts-baseline-combined/, ts-baseline-check-fixes/, ts-baseline-image-probe-fixed/, startup-control and docs logs, and the failed hosted receipts. All local parent runners are complete.
Limits and preserved work
The existing ten feature PRs retain their observed ready states without head/base changes. New port1545 and the advanced RC await exact-current-head hosted checks;1545 is draft and1541 remains draft. Local pass is not a hosted all-green claim. Obsolete own CI runs without failed jobs were cancelled to free the queue; recorded failed jobs remain retained. Cancellations/ignores/unrun checks are not passes. Historical-base main-only CodeQL is not triggered and is not claimed passed.
No external AWS/DynamoDB account, fleet/cloud durability, real publisher, external Next.js or combined wrapper-image/ECS-volume qualification. Geo is default-off protected CloudFront; KV Geo454 stays standalone prototype-only. Operational Terraform remains in trusted-server-deployer; TS examples contain fictional inputs only.
Original work, dirty Prebid builder inputs, recovery refs and old RCs remain preserved. Current-main1525/1526 ready and1527/1528 draft retain their exact heads/bases. EdgeZero stack465/draft462 and deployer40 are untouched. No1499/independent1506 implementation, unrelated privacy/group/codec/phase experiment, new worker, deployment, live input switch, main merge or old-RC closure. Relay work is limited to source1498 and the existing ownership correction described above.
Closes / spec
Refs #1530 and #1498; do not close the tracker or source PR from this draft publication. This is existing-demo extraction with narrow caller/build/fixture fixes, not a new forwarding or consent design. Historical specs/reviews remain input-bound records, not backdated approval of this combined source.
Qualified semantic prerelease
Published and verified lightweight tag v0.1.1-rc-axum.202611.3 at 7dd2e30, tree d1ebc72adaf108e5bc520b536d832fa23456a0f3. All 33 exact-head RC hosted checks pass. Across the twelve current PR heads, all 568 checks are successful. This PR remains draft and targets main; the ten feature PRs remain ready in native stack #1564.
The combined tree retains every prior feature head, previous public RC, current main 06e51be, direct tag-bound EdgeZero interfaces, relay consent ownership, the latest Sourcepoint TCF mirror and consent-only safe cookie reconstruction.
Local qualification includes 3,440 Core passes with two ignored, 111 native passes with five ordinary ignores, and 3,372 JS passes with one skip. The approved shim budget is 54,000 characters for the measured 53,628-character artifact. No other artifact assertion changed.
Hosted failures were repaired without weakening assertions. Header comparisons keep exact equality without printing credentials; the later-batch browser fixture avoids a deadline-boundary assumption; isolated Cloudflare fixtures use their actual public origin and correctly resolve signed URLs; native port allocation binds without listening. CLI browser CI pins released Chrome for Testing 157.0.8103.78, with actual macOS browser fixtures passing. Production shutdown/deadline budgets are unchanged.
Fresh source-bound production-feature image, exact CLI/envelope, AppConfig Agent/Moto snapshot/restart/fail-closed controls, nine DynamoDB identity/fault/lifecycle controls and the literal wrapper pass. Images remain local and unpublished. Actual runtime/browser/parity/deadline/EOF and celld proofs remain tied to their tested inputs; skips and ignores are not passes.
Limits remain explicit. Viceroy host-worker cancellation warnings and the reproduced pre-existing extra combined Core/CLI/codegen preserve_order-sensitive golden mismatch are retained separately. Synthetic local proof is not live AWS/IAM, fleet durability or genuine publisher/CMP qualification.
Old tags are unchanged. No main merge, GitHub release publication, image publication or deployment occurred. Tag-triggered binary builds run separately; signing/public release publication is disabled.
Reconciliation refresh above the new PR 1506 head
Merge-forward head
f078cf8f10b04352a12bc73ee8af021f53c8d368retains original public86797e0b43958aeb9bcd6a95b55884973bbe4242, previous local candidate5114cd50b53364ab068d5f152ea55c3ab3bda956and updated parent0e00253ec72538b1402146f4f3f79a4650a8cbf4. The original feature patch is unchanged. Aram's #1516 code/tests/spec are preserved upstream rather than duplicated as another owned production port. The 18-file RC-only delta is unchanged; this PR remains draft against main.Fresh shared-root and combined RC qualification passes on the refreshed source. Reused JS/Chrome/storage/wrapper/Terraform evidence is explicitly fingerprinted, not claimed as a new execution. Source-image proof is bound to refreshed #1539, not a new RC release. Fresh hosted/macOS, digest-backed wrapper/RC images, other external browser/framework lanes and live AWS/publisher/CMP acceptance remain unverified. Ignored/unexecuted cases and original failed receipts are not counted as passes. Historical claims above remain bound to their named old inputs. No tag, registry publication or deployment is included.
Published snapshot; newer upstream integration pending
Published deliberately for review from the qualified #1506 checkpoint
57d7c6ad8db43601ef31c1e1d1615e6dd2aa6a6a. At publication the moving author branch was at628474ec4a8cee8361a6927ae6b79b68fdd33a55. Newer upstream bounded-response handling, per-profile RTB caps and Sourcepoint changes are not incorporated or qualified in this snapshot. Further merge-forward reconciliation and conflict resolution may be needed before merge. Local results above describe this exact qualified source, not a merge with the newer base or a release.