Skip to content

Track deferred request timing and GPT diagnostics work from PR #1261 #1458

Open

Description

@ChristianPavilonis

Description

Track implemented contracts and deliberately deferred work from PR #1261 and its source PRs #1074, #1076, #1121 and #1154. Resolving a review thread does not mean every suggestion in it was implemented. The checked items below describe implemented behavior; unchecked items retain the remaining work or decision.

The EdgeZero release/pin and store-binding migration are outside this tracker. They remain separate merge gates on #1261. No live Tinybird deployment, ingestion, rollback or browser validation is implied here.

Contract batch implemented on PR #1261

Commit range: 7214c60 through 02f020a.

  • The access v2 row uses auction_collected_ms, derives ts_version from the same compiled identifier as x-ts-version, and includes delivery_result. Browser/internal resolved names remain stable. No extra SHA/Fastly-version field was added.
  • Shared orchestration records actual collection waits on all three routes, including explicitly observed mediator work without fabricating provider dispatch. Empty-plan/admission decisions and outgoing request counts are unchanged.
  • Access emission uses SDK dispatch/drop with no reply wait or retry. The exact SDK contract passed a delayed local Viceroy probe in normal and reused sandboxes. The actual emitter module passed WASM tests in a wrapper using the original dependency identities. Full application/main validation still requires the EdgeZero lifecycle fix.
  • Prebid diagnostics implementation lives in the optional bundle through one narrow hook. Exact-instance/load-order, fail-open and destroy/reinstall tests pass. The served shim is 1,744 bytes smaller under its existing budget. Badge evidence is pointer-transparent; only an outside-creatives native control is clickable, and latest selection no longer opens history. Browser hit-testing/visual validation remains pending.
  • Origin remains caller-blocking wait; Fastly app-build remains per-request setup plus cold construction when needed. Adapter T0 differences are documented, not silently normalized.

Small cleanup batch implemented on PR #1261

Commit: 9654deb7a.

  • Page-bids performs its cross-site denial before direct-handler diagnostics preparation. A regression covers invalid diagnostics configuration on both page-bids paths.
  • Disabled Server-Timing emission returns after the headers-ready stamp, before the privacy/header scan.
  • The Fastly send branches share one SendContext; each GPT opportunity path makes one recorder call with optional auction facts.
  • Access-target construction returns a configuration error for an unresolved token instead of panicking after send. The emitter logs and drops setup errors. Recording-client regressions replace the sampled-out panic tripwire and cover missing credentials, independent toggles and best-effort dispatch failures.
  • The configuration example and guide document route_sections, its TOML-only array configuration, raw-path matching and the shared other bucket. No new validation restrictions were added. Remaining Axum punctuation and Wrangler-generation wording were corrected.

Post-send execution evidence uses exact source excerpts in an original-dependency WASM wrapper. It is not a full application entry-point or browser pass.

This does not complete the whole tracker. Target caching, fallback route identity, adapter production wiring/health coverage, raw-TOML secret preflight, slot re-entry labeling, RC refresh/live deployment and broader historical documentation work remain separate. Delivery validation is detailed in #1155.

Timing contracts and schema decisions

  • Define the persisted collection milestone. Access v2 uses auction_collected_ms for collection return, including the streamed body seam. Internal auction_resolved_ms and browser auctionResolvedMs retain their existing names. Collection return is not the final provider transport reply. Original review, rename window.
  • Decide whether independent provider transport-completion instrumentation is needed. Do not derive provider duration or overlap from collection minus dispatch. Cover buffered and streamed paths if adding it.
  • Align the v2 version dimension. ts_version uses the compiled Trusted Server identifier matching x-ts-version, not FASTLY_SERVICE_VERSION or x-ts-fastly-version. Producer, schema, fixture and docs agree. Review.
  • Define origin as caller-blocking remaining wait after overlap, and document that it is not full send-to-headers latency. Page origin.
  • Decide origin-phase coverage for assets/integration proxies, which currently have no corresponding Origin phase. Cover actual early-send and proxy paths before extending instrumentation. Fetch coverage.
  • Document app-build as per-request setup, including cold construction where needed, and document adapter T0 differences. Warm Fastly samples can include config-store opening. Review.
  • Execute full Fastly warm/cold app-build validation after the EdgeZero lifecycle gate clears. Documented semantics do not establish measured cross-adapter comparability.
  • Unify endpoint collection waits. /auction, /_ts/page-bids and HTML record actual collection intervals. Page-bids no longer synthesizes wait as R minus D. Null/no-launch semantics and browser-diagnostics omission without launch are preserved. Review.
  • Represent mediator-only launch evidence explicitly. A pending mediator or marked started-request failure can justify wait/collection/commit without provider dispatch; configuration or an immediate result cannot. Empty-plan NotStarted sends no new mediator request. Review.

Adapter and ingestion work

  • Preserve route identity on Fastly fallback early returns. Prove filter/setup failures retain bounded route metadata through emitted rows. Review.
  • Add production build_router collector and method-specific health-path coverage for Cloudflare/Spin, replacing duplicated private-router middleware tests where appropriate. Deleting production registration must fail a test. Address startup diagnostics for unsupported emission flags through Implement or reject Tinybird telemetry configuration coherently #1148. Wiring, duplicate tests.
  • Choose and implement SDK dispatch/drop access ingestion without a reply wait or retry. Local SDK/Viceroy probes cover full transmitted bodies, delayed replies and sandbox reuse. Later transport errors, HTTP status, quarantine and ingestion acceptance remain unobserved. This is not a durability guarantee. Ingestion.
  • Make access-target construction fallible and keep missing-token setup errors best-effort after send. Constructor.
  • Decide whether to cache access targets and measure reused-sandbox throughput with the full application. No target cache was introduced by the cleanup batch.
  • Emit delivery classification through delivery_result, with complete, partial and error outcomes. This describes local transport handoff, not client receipt; status 200 alone does not establish complete streaming delivery. Remaining full Fastly/rollout validation is in Emit DeliveryResult in the access telemetry row #1155.
  • File and link an EdgeZero CLI preflight issue for inactive raw-TOML secret references and Spin key collisions. Runtime stripping of inactive references does not fix push-time validation. Review.
  • File and link an EdgeZero Axum service/layer hook issue before replacing the handwritten dev-server serve loop. Preserve readiness, terminal timing, bind errors and shutdown behavior. Original review.

Diagnostics, cleanup and proof

  • Extract diagnostics-only Prebid listener/targeting/correlation work behind a diagnostics-module hook, with artifact-size and lifecycle regressions. Preserve GAM refresh when diagnostics throws. Review.
  • Move direct-handler page-bids diagnostics preparation below the CSRF gate and test cross-site denial before diagnostics configuration errors. Adapter-level pre-routing preparation remains unchanged. Review.
  • Place diagnostics controls outside observed creative bounds and open history only for earlier selections. Badge history, click behavior.
  • Preserve stable slot identity across eviction/re-entry, clarify historical eviction labeling, and test it. Re-entry.
  • Decide how to report a Prebid win not observed within the 30-second correlation window, including lazy-loaded slots. Test timeout and late-render behavior before changing the UI contract.
  • Share dispatch/collect outcome mapping using planned-provider state and reuse the page-bids timing snapshot builder. Launch evidence and admission-error context are preserved. Outcome mapping, snapshots.
  • Remove repeated SendContext construction and optional duplicate recorder-call branches. The larger delivery-module extraction remains deferred. SendContext, recorder.
  • Consider sharing browser/Tinybird auction-wait-placement wire mapping. Snapshot construction is shared, but the wire mappings remain separate. Review.
  • Keep disabled Server-Timing emission to the headers-ready stamp before returning. Review.
  • Document route-section matching limitations and TOML-only array configuration, including a commented example. The other and non-ASCII inputs remain accepted; their limitations are explicit rather than new validation policy. Review.
  • Reconcile the historical spec/plans with the implemented collector, adapter T0/freeze points, unsupported phases and execution status. The small-fix batches correct specific contradictions, not every unchecked historical task. Review.
  • Automate producer/schema/JSONPath/fixture agreement. The core CI test checks the 31-field producer, JSONPaths and fixtures.
  • Before rollout, ensure the October RC uses the versioned datasource fix rather than the superseded FORWARD_QUERY; validate a real workspace deployment diff and quarantine/ingestion, not just local schema equality.
  • Track the inherited native core environment-test failure separately: Cargo injects build-only TRUSTED_SERVER__GIT_VERSION, rejected by the legacy test-only environment loader. Running the compiled binary without that variable is isolated evidence, not a green normal Cargo test gate.

Completion

Each item must end with an implemented/tested result or an explicit accepted contract. Split implementation issues as needed and link them here. Keep #1261's disposition table accurate; do not close this tracker automatically when the consolidation PR merges.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions