Five chunks become one stored artifact Top: the nine stream frames of the streamed run on the kit clock. Frames 1, 2 and 9 are status frames stamped 09:00:01.750Z, 09:00:02.000Z and 09:00:02.250Z, 250 ms apart. Frames 3 to 8 are artifact updates that carry no timestamp and fall between the second and third stamps. Middle: a table of the artifactId and flags each of frames 3 to 8 carries and what it does to the stored task: frame 3 creates artifact test-log with its first part, frames 4 to 7 append one part each, frame 7 sets lastChunk, and frame 8 creates the summary artifact. Bottom: the stored test-log.txt artifact with its five text parts, one per chunk. THE NINE FRAMES ON THE KIT CLOCK frames 3 to 8 carry no timestamp in the stream: artifactId and flags in the stored task 09:00:01.750Z 1 09:00:02.000Z 250 ms 2 3 3 test-log, name: test-log.txt creates artifacts[0] and parts[0] artifacts[0] · artifactId test-log · name test-log.txt parts[0] collected 12 items 4 4 test-log, append: true adds parts[1] parts[1] progress line for tests/test_charges.py, at 66% 5 5 test-log, append: true adds parts[2] parts[2] progress line for tests/test_refunds.py, at 100% 6 6 test-log, append: true adds parts[3] parts[3] FAILED tests/test_refunds.py::test_partial_refund - AssertionError: 450 != 500 7 7 test-log, append: true, lastChunk: true adds parts[4], the last chunk parts[4] 1 failed, 11 passed in 4.21s 8 8 summary, name: summary.json, lastChunk: true creates artifacts[1], one data part 09:00:02.250Z 250 ms 9