Repository navigation
Bound complete failure reports and preserve failure semantics #141
Description
Current result
SDK artifact delivered in 4.10.1. Final published and normal installed receipt: immutable source ebad5c1b729c4f4c728b03de4e7d7d3c915fd8e1, registry/archive/lock SHA-256 84f511bfad4bf0d76aa1723766bdcc911bc912fd95d6d4a3354fcb70949013e8, 59 matching source/manifest files, eleven recording controls and six actual published PHP Server / MySQL controls on Rust 1.86. The corrective #143 is closed. Version 4.10.0 and its real failed fallback original remain immutable.
The Website #401 / PR #403 follow-through is now delivered: exact Pages handoff 40021880205 passes and all sixteen canonical guide routes pass actual live readback at 21:22 UTC. English and all seven translations retain matching reviewed-source hashes and executable examples. Final documentation receipt. Shared #225, receiver storage, other SDKs and image/native adoption remain separate.
A Rust activity/workflow failure can exceed the Server request limit and never be recorded. This is the Rust component of accepted shared225 and its maintainer policy.
Implement default targets of62KiB UTF-8 message (2KiB compatibility headroom below the prior64KiB ceiling),128KiB stack trace and64KiB combined serialized diagnostic/details/optional-metadata budget, including truncation markers. Bound the complete actually encoded report after JSON escaping and marker/diagnostic insertion at1MiB, or a lower known transport limit. Keep required claim identity exact; unfit required data refuses explicitly. Preserve original type, retry/nonretryable flags and authored backoff. Never cut Avro/base64 bytes: retain valid details atomically or omit them with explicit bounded original-size/omitted-field diagnostics. Already-small reports stay unchanged.
Scope includes ordinary/cooperative activity reports, workflow/query-task, update/terminal workflow failures and inline-local failure metadata without rewriting errors already observed by workflow code during the turn. Do not truncate unrelated business payloads or mutate identity. Keep transport/reporting refusal distinct from application failure.
Rust currently has a simple typed activity error and a private structured workflow report path. A small additive low-level structured failure client surface may expose only the existing published Server fields for real installed stack/details qualification; it adds no wire fields or invented transport extension. If added, select an ordinary minor release rather than a patch. Existing ActivityError/task struct literals, Rust1.86 and TLS floors remain compatible.
Controls: retained unbounded3MiB message/stack originals; escaped/Unicode, combined fields, arbitrarily large/nested metadata maps, valid/omitted Avro/external details, unchanged small reports, exact IDs and lower known cap. Capture actual sent encoded bytes after all markers/diagnostics, then qualify actual failure delivery through named published PHP Server and normally installed crate, preserving type/marked message/history/retry semantics. All8 guide follow-through remains required. No Server/Core/native/shared/frozen/Root237/240 implementation or cross-SDK completion claim.
Activity
rmcdaniel commentedon Oct 23, 2026
Qualified4.10.0 source is
dd58dd146f1337c3be24ad18fe65e3bb31d78b58, merged by PR142 at07e28c9b5eec3b777fc7591d75bfce59756821ddwith identical treea6afc32904e00d3149664cf5c643f63754f3391b.Exact CI39981293489, CodeQL39981288561 and Sonar39981293546 passed every required check. Direct SonarPR142 review found0unresolved issues and0hotspots. Rust1.86 local qualification passed742active all-target/all-feature tests and14doc tests without compiler warnings. Public controls capture the complete actual encoded body after escaping/markers, lower discovered limits and exact identity; original registry4.9 controls fail at5200138B normal/cooperative and18874481B workflow-task reports.
Five isolated publishedPHP Server cells passed with all features on the normal thread stack:
Exact runtime:
durableworkflow/server@sha256:b29157eb2cf844916debbbb3c01b3257672e0dece778a9c6fa539043a3038f02(Server2.11.0 source36d16273604755f3dd0743cab331cc7c62e51d8e; embeddedCore2.10.1 source1a5ec33f83a68021a163bc78d06e990c1eedc5da), MySQL7dcddc01f13bab2f15cde676d44d01f61fc9f99fe7785e86196dfc07d358ae2b, Redis858f009f9709ce576febc734aa78b8f6d624b82571f9ddb6bda4377c833b3499. Production file hashes match the final candidate. The original64KiB SQL-summary failure, pre-fix all-feature stack crash and unbounded controls remain preserved; no producer fixture or stack limit was changed to obtain a pass.Defaults are62KiB UTF8 message including marker,128KiB stack,64KiB combined serialized optional metadata and1MiB complete encoded report/lower known limit. Original type/retry decisions and authored delay remain; unfit fixed data is an explicit reporting refusal. Details remain whole valid Avro/reference values or are omitted explicitly. Workflow/query-task schemas use inline size/omission markers instead of unsupported diagnostic fields. Core915 remains the independent derived-summary correction.
Routine protected OIDC publication and normal installed4.10 acceptance follow. This source qualification does not yet claim a published crate or installed receipt. Website401 owns the all8 Rust/failures guide follow-through after that receipt; shared225 remains open for other SDKs/embedded/UI acceptance. No consumer adoption is implied.
rmcdaniel commentedon Oct 23, 2026
Delivered in published Rust SDK 4.10.1, source/tag
ebad5c1b729c4f4c728b03de4e7d7d3c915fd8e1, whole treeb42868e0189f6c7d631355f8a4fde061272e82b3through #144. All applicable candidate and independent main checks pass; the protected maintained-main OIDC publisher completed successfully.A fresh ordinary
durable-workflow = "=4.10.1"consumer on Rust 1.86 resolves crates.io without patch/path/source overrides. Registry API, the downloaded crate archive and normal Cargo.lock agree on SHA-25684f511bfad4bf0d76aa1723766bdcc911bc912fd95d6d4a3354fcb70949013e8. The package is not yanked; installed VCS is the exact clean tag source. All 59 source/original-manifest files match committed bytes.Eleven normal installed recording-transport controls pass, including unchanged small blank/whitespace/NUL/omitted/distinct nested messages, lower known limits, structured fields, final encoded request limits, ordinary/cooperative/local failure observations and cold replay. Six additional unchanged controls pass against published PHP Server 2.11.0 and fresh MySQL 8.0.46, including actual terminal outer fallback versus nested authority. Stopped SQL records 8 runs, 20 tasks, 4 activity executions and 53 events. API and queue explicit SIGTERM exit 0 without OOM; the entire task stack, database, network, Cargo cache and target are removed.
The first General live fixture used an admin-only credential for worker polling and correctly received six HTTP403 refusals. Its six pending originals and failed output remain distinct. A separate fresh fixture used a documented synthetic multi-role principal; no product/test source, assertions or original budgets changed. Published 4.10.0's actual blank-fallback HTTP422 original remains failed and immutable; it was not retagged or called accepted.
This completes #143's corrective package and installed acceptance. #141 remains open only for the final all-eight-locale Website #401 / PR #403 delivery. The broader shared failure-report issue, receiver storage, other SDKs and image/native adoption remain separate.
rmcdaniel commentedon Oct 23, 2026
Delivered in immutable Rust SDK 4.10.1 with normal registry/archive/installed and real published-Server acceptance. The final all-eight-locale documentation receipt now completes the remaining sixteen live-guide checks after actual Pages deployment. Earlier 4.10.0 and all failed originals remain unchanged; no cross-SDK, receiver-storage or native-image completion is inferred.