mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-06 10:59:59 +00:00
The lint fan-out listed lint-php twice, once before and once after lint-playwright. Two commits added it independently:82218087c1for the PHP and Ruby syntax checks,6fee7ca136for the per-language unit suites, and the second did not see the first because lint-playwright had since been inserted between them. The wasted slot was the harmless half. parallel.sh keys target_start, target_dur, target_rc and target_log by target NAME, so a repeat overwrites the first run's log path and exit code, and the final pass reads each name once. Two consequences: drain_one prints the second run's log twice and the first run's output never appears, and a failing first invocation is reported green as soon as the second one passes. A duplicate therefore turns a target into a blind spot rather than into a slow one. The gate showed the symptom plainly, two lint-php rows with an identical 0m 03s, which reads as a rendering quirk rather than as one target run twice. Both halves are fixed: the list loses the repeat, and parallel.sh refuses a duplicate before it loads the environment or starts a single make, naming the offender and why a repeat cannot be tolerated. The two callers are Makefile:440 and Makefile:822; the test list has no duplicates, so the guard is inert there. Negative control: `parallel.sh lint-php lint-python lint-php` exits 2 with "duplicate target(s): lint-php" and launches nothing. The full quality-high run afterwards dispatches 15 lint targets with lint-php once and stays green. Residual: the guard covers scripts/make/parallel.sh only. scripts/tests/dns/ parallel.sh is a separate script with its own argument handling and was not examined. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>