Repository navigation
Preserve replay clocks and reuse fired plain timers on redrive - #1215
Conversation
|
The local planner predecessor at Candidate runtime The six HTTP-router redrive cases pass at test successor The unchanged main Composer lock fails required audit for the newly published Laravel advisory. Minimal source/notice correction #1216 is under current CI and independent review. Remaining expensive predecessor-head workflows were cancelled after its deterministic baseline was established. Those cancelled results are NONPASS. The candidate still requires a normal main refresh after #1216, fresh full current-head backend/corpus/analysis gates and exact review. No check was removed or replaced by these local results, and no merge/publication is requested yet. A stronger per-successor inventory check at Final corrected catalog-bound router control at |
|
Security/source-contract review of exact Independent review findings:
This does not qualify SDK replay-clock consumption or complete Server #980. Fresh exact-head Sonar/analysis, full backend and corpus lanes, current required CI, and the applicable installed PHP/Python/Rust consumer evidence remain separate gates. Keep the draft unmerged until those gates and final tested-tree equality are complete. |
|
Clarification to my source verdict: installed SDK replay is not a prerequisite to this source merge. The source-merge hold is only the fresh exact-head source/backend/corpus/required CI plus final tested-tree equality. No additional source-stage consumer control is required by my review. After normal source merge, the release/issue path still requires immutable producer-artifact qualification and the applicable published PHP/Python/Rust cold-replay evidence before #980 closure or downstream adoption. No published tuple may be selected from this draft. The source PASS itself is unchanged. |
|
Core #992 timer-delta counter-review PASS at exact Server I compared the native planner/writer and added router/planner controls with Workflow's merged This is a read-only source counter-review of the timer delta. I did not compile or run Server tests. Exact backend/corpus CI and Security remain the source gates; actual published SDK Worker and cold-process replay-clock qualification remains separate under #980. No release or installed-client verdict is implied. |
|
New replay-clock precision finding before merge/publication: #1215 is dequeued and restored to draft. Exact The inherited writer formats first reuse with whole-second The same native fallback is shared by reused activities and markers. The initial Test predecessor |
|
Correction to the initial-clock statement in my preceding finding: it overgeneralized the SDK's legacy history-derived start accessor. The native The local successor now fixes precision within those existing authorities: full persisted run-start precision for first Local attempts so far have stopped at pre-container host-capacity checks, with no test outcome inferred. The timer PR stays draft. Exact successor execution, whole-head review, fresh backend/corpus/current CI and the later immutable published Worker cohort remain required. |
|
Precision correction is pushed as exact The router regression executes the activity/timer/failure lifecycle, then explicitly controls historical fractional event times and a distinct fractional persisted run start, closes/reopens the runtime, and checks both repeated successors. It compares timer/activity event instants without truncation, checks the initial anchor and actual task clock carrier against persisted source start, and retains no-timer-row/task and source-history preservation checks. Marker controls now use nonzero fractions too. These controlled database timestamps are source regression inputs, not installed Worker evidence. The new predecessor is |
|
|
Precision-delta source counter-review PASS at exact The new clock formatter preserves the persisted instant's fractional precision. Only the initial replayed-start fallback and reused-step clock fallback change; deadline formatting remains separate. The initial anchor still comes from the persisted source run start, while consumed steps use their own recorded event times. Existing replayed/reused strings pass through unchanged on later redrives. The revised control pins nonzero fractions after the real timer/activity lifecycle, closes and reopens the native runtime, distinguishes the stored run start from WorkflowStarted event time, and checks activity/timer clocks through two redrives and the polled task's replay-clock field. Marker controls also use nonzero fractions. These assertions discriminate the earlier whole-second formatter while retaining source immutability, fresh timer identities and no new timer/task work. This is a read-only source/test review. I did not run Server controls, and it does not establish an actual SDK Worker or cold-process replay result. Fresh exact CI, Security and the declared #980 installed-consumer qualification remain required. Core's corresponding precision gap is recorded on Workflow #992 and is not corrected by this Server delta. |
|
Security renewed whole-head source review: PASS for This renews the prior two-file timer-contract verdict after reviewing the complete current diff and the precision successor:
Per the requested review boundary, I did not start another local Server build. Current exact-head policy, repository-contract, tested-merge, source-fixture, Sonar and several build checks are already green; the fresh full backend/corpus/feature matrix is still running and remains the source-merge gate. Published PHP/Python/Rust cold-process replay-clock qualification remains the separate immutable-producer/adoption gate under #980. |
|
Exact native fractional-clock control is complete on
Both cells used the existing immutable Rust image, one sequential runner at a time, 2 CPUs / 8 GiB / 512 PIDs, two Cargo jobs/test threads, network none and exact source read-only. Capacity at creation was 28.54% / 20.76% CPU with over 21 GiB available. The predecessor ran 21:29:58–21:30:18 UTC and the candidate 21:30:54–21:31:26 UTC on 2026-11-13. No OOM occurred. Both captured full container IDs are independently absent and disposable SQLite/tmpfs state is removed. Existing named Cargo caches are retained. Private diagnostic retention is seven days. Earlier pre-container capacity refusals remain runner-blocked observations and are not test outcomes. The predecessor is reconstructible from the public Reproducer from the exact source with its locked cached dependencies: Fresh Core source counter-review and Security whole-head review both pass. Full current hosted backend/corpus/required checks remain pending and gate source merge. Core's matching precision correction/new corpus and the later immutable-producer PHP/Python/Rust cold-worker qualification remain separately owned, unfinished work. No release tag, installed outcome or stable promotion is inferred. |
|
Exact precision-corrected head The tested merge Marked ready and entered the normal merge queue. Its own group checks and final accepted-main/tree readback remain pending. This clears the source-head gate; it selects no release tag, image or installed Worker outcome. #980 stays open for the separately recorded reference and published-consumer qualification. |
|
#1215 is accepted through the normal queue at All 63 current source-head checks passed with one intended skip. All three queue workflows (PHPUnit/contracts, shared fixtures, public boundary) and the required queue Sonar check passed. Fresh Core/Security source reviews and the discriminating six-case native regression receipt remain linked above. The merged local and remote topic branches are deleted and remote absence is verified; the owned source worktree is clean at accepted main. Historical control refs remain preserved. This completes the source merge, including the fractional correction. Post-merge main workflows are observed separately; no tag, image, alias or SDK Worker outcome is selected from source acceptance. #980 remains open. Next is the bounded 3.11.0 notes/Compose release preparation from this accepted source, followed by immutable producer qualification and the declared actual published PHP/Python/Rust cold-worker clocks. Core's separately owned precision/reference follow-up also remains explicit. |
|
Independent post-merge Security readback: PASS. Actual accepted main commit is This closes the source integration/equality gate only. It does not select or qualify an immutable Server artifact, an SDK package, or a PHP/Python/Rust installed cold-process replay-clock result. Those remain the separate #980 producer and consumer gates. |
|
Post-merge main qualification has a separate runner-blocked result at accepted Fresh anonymous HEAD checks now return 200 for that same 131151309-byte layer and 200 with the exact expected digest for the pinned manifest. HEAD establishes current availability only; the unchanged Docker pull will verify layer bytes. I am rerunning only the failed jobs once on the same source/image. No code, image pin, timeout, test or gate is changed. Attempt 1 remains NONPASS, and tag/publication stays held pending the actual result. |
|
The one unchanged failed-job repeat is terminal SUCCESS: 43514302711 attempt 2 at accepted All five actual main push workflows are now terminal SUCCESS, including current native backend/corpus, CodeQL, Sonar and public-boundary checks. Attempt 1 remains the separately recorded pre-test mirror-layer 404 / exit-125 NONPASS. The later exact-object availability and unchanged successful pull/test result resolve that runner bootstrap incident; they make no product-fix or retry-policy claim. The underlying source is qualified for the next release preparation. Immutable tag/image, corpus/Compose/scan/provenance and actual published consumer gates remain separate under #980. |



A failed run with a completed plain timer before its failed activity currently refuses redrive as
unsupported_history. Reuse that timer as a completed prefix step, matching Core's accepted plain-timer contract: the successor records an ordered scheduled/fired pair with one fresh shared timer ID, creates no timer row or timer task, and resumes only the failed activity. Nonplain, incomplete, conflicting and out-of-bound timer steps retain explicit refusals.The regression review also exposed fractional replay-clock loss in the existing whole-second writer. Preserve the source event's full timestamp for reused activities, markers and timers. Preserve the existing persisted run-start authority for the initial replay clock, with full precision; consumed activity, marker and timer clocks keep their event-time authority. Repeated redrives retain the existing original reuse timestamp and immediate-predecessor lineage. Source history remains unchanged. Deadline formatting, schema, wire codec and protocol are unchanged.
Refs #980 and durable-workflow/workflow#992. This is source implementation and coverage. Actual published PHP/Python/Rust cold-worker replay, stable promotion and #980 closure remain separate gates.
Validation: exact successor
e8e16591passes all six SQLite router redrive cases, including fractional timer/activity/marker clocks, repeated run-start anchors and task carriers, source preservation and zero timer work. The test-only predecessor with the same test blob reproduces both truncation failures (four pass / two fail). Control and cleanup receipt. Fresh Core source review and Security whole-head review pass. Full exact-head backend/corpus/current CI remains pending and gates source merge. Earlier capacity, runner/cache and fixture NONPASS observations remain explicit in the linked records. No published producer or installed Worker result is inferred.