Problem
When a PHP smoke exits non-zero because an assertion failed, WP Codebox reports:
wordpress.run-php crashed before producing a structured response
and wraps the failure as a Playground crash. In Data Machine PR CI this happened for normal smoke failures such as:
tests/agent-bundle-artifact-store-smoke.php exiting 1 after FAIL: secret value is not stored
tests/agent-bundle-artifact-rebase-smoke.php exiting 1 after a missing class
The stderr/stdout is present but buried inside crash diagnostics instead of a structured command result.
Expected
wordpress.run-php should distinguish:
- PHP fatal/engine crash
- script assertion failure / exit 1
- structured response protocol failure
For normal non-zero script exit, return a structured result with exit code, stdout/stderr, and a concise summary so upstream runners can aggregate/report failures without treating them as sandbox crashes.
Evidence
Data Machine PR: Extra-Chill/data-machine#2638
Example run: https://github.com/Extra-Chill/data-machine/actions/runs/27582843874
Problem
When a PHP smoke exits non-zero because an assertion failed, WP Codebox reports:
wordpress.run-php crashed before producing a structured responseand wraps the failure as a Playground crash. In Data Machine PR CI this happened for normal smoke failures such as:
tests/agent-bundle-artifact-store-smoke.phpexiting 1 afterFAIL: secret value is not storedtests/agent-bundle-artifact-rebase-smoke.phpexiting 1 after a missing classThe stderr/stdout is present but buried inside crash diagnostics instead of a structured command result.
Expected
wordpress.run-phpshould distinguish:For normal non-zero script exit, return a structured result with exit code, stdout/stderr, and a concise summary so upstream runners can aggregate/report failures without treating them as sandbox crashes.
Evidence
Data Machine PR: Extra-Chill/data-machine#2638
Example run: https://github.com/Extra-Chill/data-machine/actions/runs/27582843874