{ "experiment": "6-2", "title": "Real subprocess async execution, queueing, interruption, and progress cancellation", "authority": "book/chapter4.md:579", "execution": { "mode": "allowlisted asyncio subprocesses", "shell": false, "worker": "analysis_worker.py", "input": "book/chapter4.md", "progress_source": "child stdout", "result_source": "child-computed file metrics" }, "scenarios": [ "long command plus immediate current-time response before completion", "two deferred instructions batch on completion and produce Japanese HTML", "user cancellation terminates the child process and runtime recovers", "3/2/1 percent jobs; query remaining jobs once; cancel only progress at or below 50 percent" ], "acceptance": { "long_job_at_least_three_seconds": true, "placeholder_return_is_nonblocking": true, "all_terminal_jobs_are_real_subprocesses": true, "cancelled_jobs_have_os_return_codes": true, "completed_jobs_have_stdout_and_input_hashes": true, "all_artifacts_are_hash_manifested": true, "no_simulated_terminal_result_can_pass": true } }