Repository navigation
Description
Description
PR #275 implements the portable outbound HTTP and request-lifecycle foundation across core, Axum, Cloudflare, Fastly and Spin. It remains open; audited main still exposes the legacy proxy module (crates/edgezero-core/src/lib.rs:36). This issue tracks the unified foundation and breaking migration, separate from the production acceptance epic #391.
Steps to reproduce
Compare the pinned main public proxy/body/application APIs with #275. Exercise the PR contract/generated-consumer matrices for streamed/buffered outbound, completion/cancellation, route-aware ingress, bounded reads, fallible assembly and adapter egress on the exact candidate being reviewed.
Expected behavior
One portable contract owns bounded work, terminal outcomes and release of request resources, with honest per-adapter capability declarations and migrated consumers/docs.
Impact
The legacy APIs cannot express the proposed lifecycle, deadline, cancellation and streaming guarantees consistently. Source/test evidence in a branch is not deployed-provider qualification or end-client delivery proof.
Proposed fix
Review/merge #275 with its API migration and revision-specific validation. Retain buffered/streamed requests/responses, bounded completion-driven batches, application clocks/grants, framing validation, safe diagnostic provenance, bounded config reads and generated-app migration as one accepted contract. Preserve Unsupported/BestEffort distinctions and explicit hosted qualification gaps.
Done when
- Review and merge feat: implement portable outbound HTTP and request lifecycle contracts #275 with its documented breaking API migrations.
- Pass the relevant workspace, adapter, generated-consumer and documentation checks against the revision being merged.
- Preserve documented Unsupported/BestEffort distinctions and clearly identify deferred hosted qualification. Local tests and guest telemetry do not prove deployed guarantees or end-client receipt.
The detailed implementation, evidence and remaining qualification boundaries are recorded in #275. The Axum production-readiness work in #391 depends on this foundation and has separate acceptance criteria.
Related
- Implementation PR feat: implement portable outbound HTTP and request lifecycle contracts #275.
- Make the Axum adapter production-ready for self-hosted deployments #391 Axum production readiness consumes this foundation; Axum: define a production server lifecycle with bounded graceful shutdown #392–Axum: add safe production diagnostics and trusted-proxy handling #397 own residual production integration/acceptance.
- Explore a Kiln runtime adapter #445 Kiln exploration is blocked on acceptance of this foundation.
Activity
feat(outbound): unify prepared dispatch and structured ownership
KvStorerecord contract with listing strong within a partition #472aram356 commentedon Nov 13, 2026
CREATOR: This issue is now part of #468, platform capabilities for server-side identity on every adapter, so #275 shows in that epic through it. #472 (record contract), #474 (portable providers), #475 (client metadata), #476 (after-response work), #477 (rate limiter) and #488 (the first integration-branch tag) are blocked by it. It is planned in wave 1 of the identity plan (IABTechLab/trusted-server#1559).