Repository navigation
Repair native range-blocked workflows with a pending select activity - #399
Conversation
|
Native pending-activity follow-through is draft #399, current source All 4,301 reader models and 72 Docker isolation regressions pass locally. Native HTTP regression source covers restarts, two pools, original-task repair, immutable history, waiting acknowledgement, stale fencing, activity-first selection and wakeup interleaving. Formatting/syntax checks are distinct from compilation and actual runtime qualification. Normal exact-source Shared fixtures and PHP/source qualification are pending. The matrix now selects the unchanged pending fixture against all three isolated runtimes, using the same qualified published PHP/embedded bytes and a separately frozen native profile. The initial superseded Workflow #755 is closed with final passing reference/main receipt. Published versions and prior failed/completed cohorts remain unchanged. Broader parity, other author languages, matched performance, migration and cutover remain ahead under #325. |
|
The first full native candidate Rust compiled. The actual SQLite job execution suite has 69 passing tests and two failed new assertions: a never-started activity exposed attempt count one instead of zero, and the activity-winner test's lease identity assertion received null. The normal shared recordings and pending-native profile were skipped after this failed test step; later source-fencing/pressure checks do not qualify the candidate. PostgreSQL 16 retained the same two assertion failures. Official SQLite artifact Source |
|
The null mismatches were internal event-ID assertions, which I misidentified earlier as lease identity assertions. Actual lease identity guards pass. Public HTTP history intentionally omits the internal event Candidate Current source |
|
The exact The retained actual request explains the failure: published PHP SDK 2.2.7 registers its separately routed activity-only worker with Correction Official failed SQLite artifact |
|
Server #396 is merged as Combined-source qualification is Shared 38141199951 and PHP 38141199897, plus normal boundaries. The superseded The pending profile remains pinned to the qualified Server 2.5.20 / Workflow 2.5.10 / PHP SDK 2.2.7 reference, with unchanged fixture and artifact bytes. The operating owner publishes and verifies #396's Server 2.5.21 / Helm 0.1.158 separately. This draft remains native development only. |
|
Native #399 candidate All six official archives were independently downloaded and matched against API and actual uploader sizes/digests. Their 18 actual pending recordings each pass: PHP HTTP / embedded / Rust, with 5 → 7 → 8 → 8 → 11 events; three distinct cold author PIDs; original activity invocations 0/0/1; the committed timer winner, original blocked-task repair and unchanged waiting history; a different final workflow task; and exact int64 The pending reference remains frozen at Server 2.5.20 / Workflow 2.5.10 / PHP SDK 2.2.7. General-owned #396 is integrated and its Server 2.5.21 publication is separately delivered. Failed and cancelled source receipts remain distinct. Merge/main follow-through is next; broader selection/repair, other SDK and consumer directions, matched performance, migration and cutover remain open under #325. |
|
#399 and its qualification-log follow-through #400 are delivered. Native merge Documentation merge Both merged remote/local branches, disposable checkout/scratch and task formatter image/intermediate are removed, with branch/image absence verified and shared resources preserved. Raw records remain byte-identical in verified compressed evidence; failed/cancelled candidates stay separate. This closes the bounded pending mixed-selection repair follow-through. #325 remains open for broader selection/repair, actual SDK/consumer directions, matched performance, migration and cutover. |
When a mixed select's timer wins while its activity has never started, an incompatible version author can block the resumed workflow task. Native repair previously refused this checkpoint. This change preserves the first committed selection winner, explicitly repairs the original blocked workflow task with
wait_kind: activity, and retains the original activity while compatible replay waits. Its separately routed activity-only worker then executes that activity, and a later workflow task completes the original run.The implementation accepts one complete adjacent activity/timer leaf group, retaining metadata and the actual terminal history relationship. Member resolution and workflow wakeup commit under the existing database transition lock. Wakeups coalesce ready tasks while preserving later work when an older snapshot is leased. Unsupported groups and selection activity failures are refused before mutation. Native HTTP regressions cover two pools/restarts, original-task repair, waiting replay, stale fencing, immutable history, activity-first winner persistence and atomic rejection of invalid batches.
Published PHP activity-only workers encode an empty workflow contract map as
[]; native registration now accepts that representation and persists an empty map. Nonempty arrays/scalars remain refused. The native pending regression uses that actual registration shape and checks rejected definitions preserve the pending activity/history. Native scheduling explicitly initializes unclaimed activities at zero before first claim, matching both fixed PHP references without altering schema or existing data.The separate
pending-nativeprofile runs the unchanged fixture against PHP HTTP, embedded Workflow and Rust on independent databases in the normal six-configuration matrix. Its manifest retains the exact qualified #397 artifact tuple and binds the reference manifest hash. Earlier reference invocations, failed tuple, completed-activity fixture and publication versions remain unchanged.Validation: all 4,301 shared-reader models, 72 Docker-isolation regressions, shell syntax, Rust formatting and diff checks pass. Exact-source Shared 38141199951, PHP 38141199897 and boundaries pass. All six native configurations pass compilation, native execution, existing differential/role/fencing/pressure profiles and the new pending profile. All 18 actual pending recordings (three runtimes across six configurations) independently retain 5 → 7 → 8 → 8 → 11 events, three cold author PIDs, activity invocations 0/0/1, a distinct final task and the exact typed Avro output. Actual SQLite execution has 71 passing tests. Downloaded artifact digests/sizes match both API and actual uploader receipts; checkout 8bf75a7 has the same tree as candidate 6d40e2d. This verifies one bounded development scenario; broader selection/repair, other author languages, matched performance, migration and cutover remain separate #325 gates.