Skip to content

Emit DeliveryResult in the access telemetry row #1155

Open

Description

@jevansnyc

Chosen contract

The user approved emitting the existing delivery classification rather than keeping unused groundwork. Implemented on PR #1261 in 7214c60 through 02f020a, not yet merged or deployed.

access_logs_v2 now has a bounded delivery_result dimension:

  • complete: the local body handoff finished without an observed error.
  • partial: body bytes were accepted before a drive error, or the transport failed to finish cleanly.
  • error: the body drive failed before any body byte was accepted.

This is transport-handoff evidence, not confirmed client receipt. HTTP status remains the already-sent status, so a row can report status 200 with partial/error delivery. The duplicate unused DeliveryOutcome.bytes field was removed; the timing collector still owns response-byte accounting. DeliveryOutcome.result now reaches the access row rather than being suppressed as dead code.

Implementation and checks

  • DeliveryResult is a typed core access-row input, serialized after the send/finish attempt rather than captured at header freeze.
  • Producer, 31-column v2 datasource, JSONPaths, fixtures, operator guide and rollout notes agree. Core tests automate producer/schema/fixture field agreement.
  • Core serialization tests preserve all three outcomes independently of HTTP status.
  • Fastly boundary regressions were added for successful drive, zero-byte failure, partial-stream failure and transport finish failure, through access-row construction.
  • Execute those main.rs send/finish-boundary regressions against a compatible committed EdgeZero pin. Current full Fastly application compilation is still blocked by its missing lifecycle API; added test source is not a green execution result.
  • Validate the schema/deployment diff and stored rows in the intended Tinybird workspace before rollout. No live ingestion/rollback claim is made.

The actual Tinybird emitter module separately passed 19 WASM tests and Clippy in a wrapper that includes the repository files and original locked dependency identities. That verifies dispatch/drop, framing/auth/body limits and startup failures, not the application main.rs delivery boundary. The core and JS suites pass; the PR records exact broader outcomes and inherited baseline failures.

Rollout

This changes the new v2 contract before its intended rollout, alongside the collection field rename and TS build-version meaning. If a preview v2 schema is already deployed, inspect and coordinate its migration before deploying this producer. Do not modify or backfill the legacy nine-column access_logs_raw.

The issue remains open for the committed-pin boundary execution and workspace rollout checks. Related tracking: #1458 and review.

Activity

  1. added theissue type on Oct 1, 2026
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

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions