aboutsummaryrefslogtreecommitdiff
path: root/tasks
diff options
context:
space:
mode:
Diffstat (limited to 'tasks')
-rw-r--r--tasks/20261014-190252/TASK.md11
-rw-r--r--tasks/20261014-191209/TASK.md6
2 files changed, 16 insertions, 1 deletions
diff --git a/tasks/20261014-190252/TASK.md b/tasks/20261014-190252/TASK.md
index abbeb72..16a404d 100644
--- a/tasks/20261014-190252/TASK.md
+++ b/tasks/20261014-190252/TASK.md
@@ -1,6 +1,6 @@
# Drain command stdout and stderr concurrently
-- STATUS: OPEN
+- STATUS: CLOSED
- PRIORITY: 10
- TAGS: review, bug, core
@@ -13,3 +13,12 @@ Approach: Drain both pipes concurrently using a small, clearly owned implementat
Completion checks: A command writes substantially more than pipe capacity to stderr and then emits stdout; it finishes promptly and stdout is correct. Check simultaneous large stdout/stderr, normal empty output, and nonzero exit diagnostics. Add focused regression tests with an outer deadline so a failure cannot hang the test suite. Coordinate timeout ownership with the separate timeout task.
Design constraint: Follow README.md: keep source-based configuration, no dependencies or plugin framework, and use the smallest readable change that makes the existing behavior reliable. This is a suggestion for individual review, not a deadline. Findings were recorded on 2026-10-14; re-check the current code before implementing.
+
+Implemented 2026-10-15: the blocking caller drains stdout while one GCD worker
+reads and forwards stderr, including on success. A DispatchGroup joins the
+worker before returning. Existing timeout behavior is unchanged.
+
+Validation: `swift test` passes all 13 tests. Regression cases cover 1 MiB
+stderr before stdout, simultaneous 1 MiB streams, empty output, nonzero exit
+diagnostics, and shell environment/whitespace preservation. Each uses a
+five-second outer wait so a stalled Runner fails the test promptly.
diff --git a/tasks/20261014-191209/TASK.md b/tasks/20261014-191209/TASK.md
index 2509308..bd127bc 100644
--- a/tasks/20261014-191209/TASK.md
+++ b/tasks/20261014-191209/TASK.md
@@ -13,3 +13,9 @@ Approach: First reproduce a SIGTERM-ignoring command and a shell with a descenda
Completion checks: Normal commands complete without later signals. Both reproductions return ERROR within timeout plus documented grace, release readers, and leave no owned child running. Allow a short timeout in tests without adding a user-facing configuration system. Review together with concurrent pipe draining.
Design constraint: Follow README.md: keep source-based configuration, no dependencies or plugin framework, and use the smallest readable change that makes the existing behavior reliable. This is a suggestion for individual review, not a deadline. Findings were recorded on 2026-10-14; re-check the current code before implementing.
+
+Integration note (2026-10-15): task 20261014-190252 now drains stderr on one GCD
+worker while the caller drains stdout, and joins the worker with a DispatchGroup.
+Runner still owns the single termination timer and cancels it after both readers
+and process waiting finish. Bounded cleanup must release both readers; the
+concurrent-draining change does not alter the existing timeout guarantees.