Conversation
06c4beb to
12acbb4
Compare
4dfba11 to
efae931
Compare
56e69d3 to
e6f1016
Compare
|
/ai review |
This comment has been minimized.
This comment has been minimized.
00c4323 to
c4d5565
Compare
This comment has been minimized.
This comment has been minimized.
33aebd0 to
ed394bf
Compare
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
864c423 to
1f33def
Compare
This comment has been minimized.
This comment has been minimized.
1f33def to
687d450
Compare
This comment has been minimized.
This comment has been minimized.
687d450 to
6f05178
Compare
This comment has been minimized.
This comment has been minimized.
6f05178 to
7889474
Compare
This comment has been minimized.
This comment has been minimized.
7889474 to
f91e2eb
Compare
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
7ee43b7 to
5558c18
Compare
This comment has been minimized.
This comment has been minimized.
5558c18 to
d876e48
Compare
| daemon=True, | ||
| ) | ||
| run_thread.start() | ||
| try: |
There was a problem hiding this comment.
Codex AI review · Finding arf_v1_dmyq7d5h3r3s5adl2jgaghrhgf
[P2] Avoid assuming exactly three operation-change batches. The checkpoint batcher closes batches using an idle timeout, so six concurrent branches can legitimately produce a different number of OperationChangeInfo hooks depending on thread scheduling. The pending count may skip past 4, causing this wait and the fixed five-record assertion below to fail despite correct FIFO behavior. Record the actual hook count with a probe plugin, signal after invocation end, and assert one exported snapshot per observed start/change/end hook instead of hard-coding the count.
Codex AI reviewOne P2 test-stability issue: the new fan-in e2e assumes a fixed number of timing-dependent checkpoint batches. Reviewed commit |
Summary
Stacked on #702 (
feat/insight-async-export). This preserves ordinaryon-changebursts without weakening the base scheduler's timeout, retained-memory, or exporter-ownership bounds.What changed
Why
Tight Python hook bursts could overwrite every intermediate
RUNNINGsnapshot before the daemon worker received a turn. A single latest-pending slot therefore madeon-changebehave likeon-completeduring parallel/map fan-in and warm replay.The FIFO keeps normal bursts observable. Record-count and retained-memory caps keep blocked lanes bounded. Generation tokens keep invocation-end barriers between the records they must flush and later records they must not flush.
Validation
DurableFunctionTestRunnerparallel fan-in verifies fourRUNNINGsnapshots followed by terminal completiond876e48: all blocker classes closed; no remaining or new Critical/High findingsno linked issue: #687 tracks broader Workflow Insight follow-up work