Recipe run intermittently returns unparseable payload under PHPUnit discovery
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 48/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- php, typescript
Research direction
Start with the wp-codebox recipe-run entry point and inspect logs/recipe-run.stdout.log and logs/recipe-run.stderr.log from the reported failure. Trace each exit path, then reproduce under concurrent or high-load PHPUnit discovery. Done means stdout always contains one complete parseable terminal JSON envelope, with diagnostics kept out of stdout, and the repeated stress/regression test passes.
Written by the indexing model from the issue text.
Description
Problem
The supported Homeboy WordPress PHPUnit adapter repeatedly receives an unparseable wp-codebox recipe-run payload during canonical discovery, yielding zero tests before PHPUnit starts.
Latest production release preflight reproduction on 2026-08-23:
Running PHPUnit tests via WP Codebox...
Plugin: data-machine-events
Backend: wp-codebox
PHPUNIT_ZERO_TESTS cause=recipe_run_payload_unparseable
The recipe-run JSON payload could not be parsed, so no execution step ledger is available.
Read logs/recipe-run.stdout.log and logs/recipe-run.stderr.log for the raw recipe-run output; a crashed or truncated recipe-run may not have flushed its JSON summary.
This blocked homeboy release data-machine-events at preflight.test. The same consumer suite executes in GitHub CI (808 tests), so the failure occurs before consumer PHPUnit execution. Homeboy Extensions #2650 improved evidence for this failure class, and #2668 fixed a separate bounded-text reader crash; neither fixes the producer payload.
The host was under elevated load during the latest reproduction, which may be relevant if recipe-run output is truncated or a subprocess exits before flushing the final JSON envelope.
Expected behavior
wp-codebox recipe-run should always emit one complete, parseable terminal JSON envelope, including structured failure details when setup or a child process fails. Diagnostic text must not contaminate stdout.
Investigation
- Audit every recipe-run exit path for partial/unflushed JSON and stdout contamination.
- Reproduce under concurrent/high-load PHPUnit discovery.
- Ensure child crashes, timeouts, and process termination still produce a terminal structured envelope.
- Add a stress/regression test that repeatedly parses recipe-run stdout while setup/test children fail at different phases.
Related evidence:
- Dominant language
- TypeScript
- Stars
- 17
- Forks
- 4
- Avg merge
- 1h 11m
- Merged PRs (30d)
- 39
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from Automattic/wp-codebox
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
Automattic/wp-codebox#2531 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
Automattic/wp-codebox#2467 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
Automattic/wp-codebox#2466 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Automattic/wp-codebox#2105 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
Automattic/wp-codebox#2061 ·
Maintainers usually reply within 1 day
All issues in Automattic/wp-codebox
Similar issues
-
Difficulty 1/5 Under an hour Newbie friendliness 72/100
betagouv/mon-entreprise#4699 ·
Maintainers usually reply within 3 days
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
jaegertracing/jaeger-ui#4547 · 3 comments ·
Maintainers usually reply within 1 day
-
ai-driven-qa
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
linagora/twake-calendar-frontend#1467 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
need4deed-org/sdk#267 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
auth0/universal-login#414 ·
Maintainers usually reply within 1 day