Skip to content

Bound complete failure reports and preserve failure semantics #141

Closed

Description

@rmcdaniel

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

  1. rmcdaniel commented on Oct 23, 2026

    @rmcdaniel
    MemberAuthor

    Qualified4.10.0 source is dd58dd146f1337c3be24ad18fe65e3bb31d78b58, merged by PR142 at 07e28c9b5eec3b777fc7591d75bfce59756821dd with identical tree a6afc32904e00d3149664cf5c643f63754f3391b.

    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:

    Cell Verified outcome
    Normal activity Marked failure reaches workflow at attempt2 of budget3; original type/nonretryable retained; history/cold replay agree
    Cooperative activity Same failure/retry/observation invariants with original claim identity
    Inline local activity Bounded before first observation; committed normalized message and cold replay are identical; callback stays at2calls
    Structured activity and terminal workflow Combined3MiB message/stack, valid oversized Avro details and nested diagnostics deliver; details omitted whole with marker, type preserved
    Workflow-task failure Recorded receipt retains exact task/attempt identity and retry task; independent task storage retains OriginalTaskFailure and visible inline truncation marker

    Exact runtime: durableworkflow/server@sha256:b29157eb2cf844916debbbb3c01b3257672e0dece778a9c6fa539043a3038f02 (Server2.11.0 source36d16273604755f3dd0743cab331cc7c62e51d8e; embeddedCore2.10.1 source1a5ec33f83a68021a163bc78d06e990c1eedc5da), MySQL 7dcddc01f13bab2f15cde676d44d01f61fc9f99fe7785e86196dfc07d358ae2b, Redis 858f009f9709ce576febc734aa78b8f6d624b82571f9ddb6bda4377c833b3499. 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.

  2. rmcdaniel commented on Oct 23, 2026

    @rmcdaniel
    MemberAuthor

    Delivered in published Rust SDK 4.10.1, source/tag ebad5c1b729c4f4c728b03de4e7d7d3c915fd8e1, whole tree b42868e0189f6c7d631355f8a4fde061272e82b3 through #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-256 84f511bfad4bf0d76aa1723766bdcc911bc912fd95d6d4a3354fcb70949013e8. 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.

  3. rmcdaniel commented on Oct 23, 2026

    @rmcdaniel
    MemberAuthor

    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.

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

    priority:P2Normal-priority product workstatus:in-progressApproved work is actively being implemented or validatedtype:defect

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions