Upload Rust payloads through the namespace runtime (2.0.4) - #40
Conversation
|
Native candidate qualification completed against published Server 2.3.3 (image index sha256:8bab27213a1a10740af9dd32f716b510d3c85a8b3eeeec197c6611aef06ce73e), Workflow 2.0.7, MySQL 8.0.46, Redis 7 and Rust 1.86.0. The released 2.0.3 counterexample remains in #39; this is candidate evidence, not a published-crate pass. Passed: 3,014,656-byte text plus typed long/double, signed zero, non-UTF-8 binary and nested maps through workflow input, activity arguments/result and workflow result. A second run committed ActivityCompleted and ConditionWaitOpened. An exactly 67,108,864-byte encoded result passed before and after stopping the worker, Server and MySQL. Fresh query snapshot, digest signal and resumed completion preserved the Avro value and Serde result. Worker used only its worker credential; client only its operator credential. Limits unchanged: Server ordinary request 2 MiB, upload 64 MiB, PHP 8.3.33 heap 128 MiB, HTTP container 256 MiB; MySQL container 768 MiB and SDK fixture 2 GiB. No OOM kills. Worker exit 137 was deliberate Docker termination after a two-second grace period, while Server/MySQL exited 0. This kernel does not expose memory.peak; no peak-RSS claim is made. This is transport/cold-recovery qualification, not a capacity benchmark or storage-provider qualification. Native execution found the candidate discovery bound was too small: the real cluster-info response is 589,307 bytes. Fixed to a bounded 2 MiB response; a regression test covers full and oversized manifests. Upload responses remain bounded to 64 KiB. CI fixture 404s were corrected by implementing cluster-info in the replay mock, without changing its assertions. The pre-release full suite passed 208 unit tests and 23 integration/corpus/compile tests. Added direct chunked-response and real Location-header rejection tests plus actual single-handler execution across upload refusals. Reproduction is in examples/runtime_payloads.rs and tests/runtime-payloads.md with an isolated Compose fixture. Commit 8b6632b adds the final condition-history wait, fixture documentation and 2.0.4 release metadata. Final CI and clean crates.io consumer qualification remain required. Strict Clippy also reports existing unrelated lints; the normal build is warning-free and newly introduced lint findings were fixed. |
Addresses #39. Adds namespace/role-scoped discovery, content-addressed runtime uploads, aggregate request-limit planning and strict references. Uses existing worker storage-admission waits to preserve computed outcomes; no provider credentials, redirects, codec changes or raised Server limits.
Qualification: focused transport/failure tests, full corpus, native published Server input/activity/result above 2 MiB, exact 64 MiB encoded result and cold worker/Server/MySQL restart with query/signal recovery. See the qualification comment and tests/runtime-payloads.md for commands, limits, observations and the candidate discovery-limit correction.
Prepares Rust SDK 2.0.4. Keep #39 open until publication and clean registry-consumer verification complete.