-
Notifications
You must be signed in to change notification settings - Fork 0
Node-host timer pump can lose a delayed callback in a long-running corpus #310
Copy link
Copy link
Open
Labels
agent-readyReady for autonomous Symphonika dispatchReady for autonomous Symphonika dispatchenhancementNew feature or requestNew feature or requestsym:claimedSymphonika has claimed this issue for an orchestrated run.Symphonika has claimed this issue for an orchestrated run.sym:failedA Symphonika run reached a deterministic failed state.A Symphonika run reached a deterministic failed state.sym:staleA Symphonika claim exists without a live local run.A Symphonika claim exists without a live local run.
Description
Metadata
Metadata
Assignees
Labels
agent-readyReady for autonomous Symphonika dispatchReady for autonomous Symphonika dispatchenhancementNew feature or requestNew feature or requestsym:claimedSymphonika has claimed this issue for an orchestrated run.Symphonika has claimed this issue for an orchestrated run.sym:failedA Symphonika run reached a deterministic failed state.A Symphonika run reached a deterministic failed state.sym:staleA Symphonika claim exists without a live local run.A Symphonika claim exists without a live local run.
Summary
In the Zod v4.4.3 normal+jitless library corpus, jsse can exit successfully while a delayed
setTimeoutcallback is still required to settle an awaited async refinement. Node continues and completes the test.Reproduction
From the issue #279 branch/PR, remove the
500to0portability replacement inscripts/gen-zod-entry.js, then run:Normal mode completes the upstream
async validation multiple errors 2case. In jitless mode the corpus reports through case 1,133, schedules the case-1,134 refinement timer for 500 ms, and then jsse exits 0 without reporting case 1,134 or a TAP summary. Node reports all 2,184 cases.The forced shared test harness implements cancellable timers using one native jsse
setTimeoutpump, rearming at up to 100 ms intervals. The pending native timer should keepdrain_microtasks_until_idlealive until the callback resolves the awaited refinement.Expected
Pending timer jobs remain live, their callbacks execute, and the awaiting promise continuation resumes even late in a long-running bundle.
Current corpus treatment
Issue #279 symmetrically changes only this artificial 500 ms test delay to 0 ms on Node and jsse. The timer callback and async multi-error assertion still execute, while avoiding the liveness defect. Remove that replacement when this issue is fixed.