You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Exception restoration emits PHP 8.5 deprecations into CLI JSON #1028
On PHP 8.5.4, restoring an ordinary exception emits five ReflectionProperty::setAccessible() deprecations from FailureFactory::setThrowableProperty(). With CLI display_errors=1, they precede otherwise valid JSON and break JSON consumers.
Reproduced on unchanged base a806a83 and helper-fix head 5febddff. This is separate from #1026/#1027.
Minimal reproduction after installing dependencies:
Run with php -d error_reporting=32767 -d display_errors=1 repro.php. Expected clean JSON; actual output includes five deprecation messages before {"message":"example"}.
The existing V2FinallyCleanupTest cold-process cases testQueuedFinallyCleanupSurvivesTaskDisposalAndColdReplay and testCooperativeCancellationInterruptsActivityWaitAndCompletesCleanup also encounter this under that CLI configuration. Both fail JSON decoding on both source versions. Routing diagnostics to stderr with error_reporting=E_ALL retained makes both methods pass (2 tests / 25 assertions per version), confirming output contamination rather than replay divergence.
The PHP manual documents that the method has no effect since PHP 8.1 and is deprecated since 8.5. Remove unnecessary calls while preserving exception restoration and custom-property behavior; retain the existing restoration/cold-process coverage. No release or production change is implied by this report.
Owner confirmed: Cloud retains this narrow Core source fix and has no existing active branch to duplicate. After its qualified P1 Cloud source, it is starting an isolated main-based branch and will return the draft/commit identity. Workflow will not start a competing FailureFactory edit.
Next acceptance is PHP 8.5 with E_ALL/display_errors enabled and clean JSON output, preserved ordinary/custom-property restoration, and the actual cold-process finally/cancellation regressions. A stderr workaround alone is not the product fix. Existing source/runtime/release stops remain separate; no stopped Cloud actor work is resumed.
Cloud owns the narrow source fix in draft #1034, branch cloud/1028-php85-failure-restoration, exact head b519837870491c3237192ed2f1aac1952a522e3b on mainb3dd00e9. The shared reflection setter loses only its no-op accessibility call; a cold CLI JSON regression covers RuntimeException/Error and restored fields with all errors displayed. The actual PHP8.5.12 old-source control produces10deprecations/invalid JSON, corrected source clean JSON/empty stderr. Complete required source quality cycle remains pending; no release or runtime acceptance is claimed. Workflow owner was asked to avoid a duplicate implementation.
Normal protected source integration completed at 2026-11-05 20:45:27Z as 2de50a9e493a2a74726d588bda8dfd045e884c3b / tree d3612db5e03f98cf3ed11449942421d05f15ed97, ordered parents [3d7d0a19, 34f9d045], exactly matching the reviewed candidate tree. All 17 fresh exact-head checks passed, seven PR-profile skips, no failure/pending; required build was green and the match-head merge used no admin override.
The actual PHP 8.5.4 cold-process proof is current. Original automatic main Quality Cycle 42106336592/1 now qualifies full unit/coverage/backend/upgrade behavior. Workflow owns its actual result and graph/count attribution. The preceding #1047 original main run 42103828348 continues separately without cancellation or rerun. Source integration is not claimed to have a complete main cycle until those results arrive.
Cloud's earlier private staging/cold/full-feature NONPASS outcomes remain unchanged historical records; this hosted source path performed no private retry or new local allocation. The branch remains until cleanup/dependency checks finish. #1028 stays open through actual main/published/downstream disposition; no tag, GitHub Release, image, installed tuple or consumer deployment follows this merge.
Reopened after GitHub's closing keyword automatically closed this issue on the #1034 merge, before the original resulting-main Quality Cycle has finished. The current-source PHP 8.5.4 cold regression passes and the protected source merge is recorded above; full main run 42106336592/1 is still in progress. No earlier private attempt is relabelled.
This report requests the code/restoration fix and explicitly implies no release or production action. Workflow will record actual completed source qualification here; the separately intended 2.21 published-manifest/verification and downstream handoff remain on #1020. Current published 2.20.4 has not been replaced by this source integration.
Full resulting-main source acceptance: PASS at 2de50a9e493a2a74726d588bda8dfd045e884c3b / tree d3612db5e03f98cf3ed11449942421d05f15ed97, ordered [3d7d0a19, 34f9d045]. Original run 42106336592/1 is terminal SUCCESS: 20 successful jobs / three declared PR-only skips, no failures/pending. No extra full dispatch or rerun.
Actual Quality Cycle: ECS/PHPStan passed; unit/PCOV 5,876 tests / 78,958 assertions, 49 skips and 15 notices on PHP 8.3.36/PHPUnit 12.5.43/PCOV 1.0.12, 138-package resolution, 21:31.258 PHPUnit time. MySQL 2,833 / 28,270 / three skips with zero-exit shards 847/799/605/635s under 900s. PostgreSQL 2,833 / 27,875 / 32 skips, zero-exit 466/385/456/421s under 600s. MariaDB, both derived Laravel 12/PHP 8.2 and Laravel 13/PHP 8.3 upgrade cells, contracts/corpus/tracing, Sonar and aggregate build pass.
Combined coverage: 75,825 / 80,768 = 93.88%, 93.08% ratchet passes, 100% target unmet. Summary artifact 13454665160 ZIP SHA-256 a523db9228f67586f30d38fee8aa9c720423969fb775a27d34081ed01bab026d binds exact merge/main. The separate actual PHP 8.5.4 cold-process test pass remains 6668853167, with clean child JSON/stderr. Different source runtime graphs keep their actual attribution; this is not a frozen installed-tuple claim.
Exact-head/ancestry, open-dependent-PR and active-branch-run checks passed; the merged Cloud source branch was deleted normally and remote absence verified. Cloud's earlier private setup/full-feature/cold NONPASS results remain historical, not retried or reclassified.
This completes the requested code/restoration source fix and Quality Cycle. #1028's report explicitly implied no release/production action; publication and affected-consumer handoff remain separately tracked on #1020. Current published 2.20.4 is unchanged and is not claimed to contain this patch. No private run, tag, installed tuple, image or consumer deployment was performed for this source acceptance.
Activity
rmcdaniel commentedon Nov 4, 2026
Owner confirmed: Cloud retains this narrow Core source fix and has no existing active branch to duplicate. After its qualified P1 Cloud source, it is starting an isolated main-based branch and will return the draft/commit identity. Workflow will not start a competing FailureFactory edit.
Next acceptance is PHP 8.5 with E_ALL/display_errors enabled and clean JSON output, preserved ordinary/custom-property restoration, and the actual cold-process finally/cancellation regressions. A stderr workaround alone is not the product fix. Existing source/runtime/release stops remain separate; no stopped Cloud actor work is resumed.
rmcdaniel commentedon Nov 4, 2026
Cloud owns the narrow source fix in draft #1034, branch cloud/1028-php85-failure-restoration, exact head
b519837870491c3237192ed2f1aac1952a522e3bon mainb3dd00e9. The shared reflection setter loses only its no-op accessibility call; a cold CLI JSON regression covers RuntimeException/Error and restored fields with all errors displayed. The actual PHP8.5.12 old-source control produces10deprecations/invalid JSON, corrected source clean JSON/empty stderr. Complete required source quality cycle remains pending; no release or runtime acceptance is claimed. Workflow owner was asked to avoid a duplicate implementation.rmcdaniel commentedon Nov 5, 2026
Normal protected source integration completed at 2026-11-05 20:45:27Z as
2de50a9e493a2a74726d588bda8dfd045e884c3b/ treed3612db5e03f98cf3ed11449942421d05f15ed97, ordered parents[3d7d0a19, 34f9d045], exactly matching the reviewed candidate tree. All 17 fresh exact-head checks passed, seven PR-profile skips, no failure/pending; required build was green and the match-head merge used no admin override.The actual PHP 8.5.4 cold-process proof is current. Original automatic main Quality Cycle 42106336592/1 now qualifies full unit/coverage/backend/upgrade behavior. Workflow owns its actual result and graph/count attribution. The preceding #1047 original main run 42103828348 continues separately without cancellation or rerun. Source integration is not claimed to have a complete main cycle until those results arrive.
Cloud's earlier private staging/cold/full-feature NONPASS outcomes remain unchanged historical records; this hosted source path performed no private retry or new local allocation. The branch remains until cleanup/dependency checks finish. #1028 stays open through actual main/published/downstream disposition; no tag, GitHub Release, image, installed tuple or consumer deployment follows this merge.
rmcdaniel commentedon Nov 5, 2026
Reopened after GitHub's closing keyword automatically closed this issue on the #1034 merge, before the original resulting-main Quality Cycle has finished. The current-source PHP 8.5.4 cold regression passes and the protected source merge is recorded above; full main run 42106336592/1 is still in progress. No earlier private attempt is relabelled.
This report requests the code/restoration fix and explicitly implies no release or production action. Workflow will record actual completed source qualification here; the separately intended 2.21 published-manifest/verification and downstream handoff remain on #1020. Current published 2.20.4 has not been replaced by this source integration.
rmcdaniel commentedon Nov 5, 2026
Full resulting-main source acceptance: PASS at
2de50a9e493a2a74726d588bda8dfd045e884c3b/ treed3612db5e03f98cf3ed11449942421d05f15ed97, ordered[3d7d0a19, 34f9d045]. Original run 42106336592/1 is terminal SUCCESS: 20 successful jobs / three declared PR-only skips, no failures/pending. No extra full dispatch or rerun.Actual Quality Cycle: ECS/PHPStan passed; unit/PCOV 5,876 tests / 78,958 assertions, 49 skips and 15 notices on PHP 8.3.36/PHPUnit 12.5.43/PCOV 1.0.12, 138-package resolution, 21:31.258 PHPUnit time. MySQL 2,833 / 28,270 / three skips with zero-exit shards 847/799/605/635s under 900s. PostgreSQL 2,833 / 27,875 / 32 skips, zero-exit 466/385/456/421s under 600s. MariaDB, both derived Laravel 12/PHP 8.2 and Laravel 13/PHP 8.3 upgrade cells, contracts/corpus/tracing, Sonar and aggregate build pass.
Combined coverage: 75,825 / 80,768 = 93.88%, 93.08% ratchet passes, 100% target unmet. Summary artifact 13454665160 ZIP SHA-256
a523db9228f67586f30d38fee8aa9c720423969fb775a27d34081ed01bab026dbinds exact merge/main. The separate actual PHP 8.5.4 cold-process test pass remains 6668853167, with clean child JSON/stderr. Different source runtime graphs keep their actual attribution; this is not a frozen installed-tuple claim.Exact-head/ancestry, open-dependent-PR and active-branch-run checks passed; the merged Cloud source branch was deleted normally and remote absence verified. Cloud's earlier private setup/full-feature/cold NONPASS results remain historical, not retried or reclassified.
This completes the requested code/restoration source fix and Quality Cycle. #1028's report explicitly implied no release/production action; publication and affected-consumer handoff remain separately tracked on #1020. Current published 2.20.4 is unchanged and is not claimed to contain this patch. No private run, tag, installed tuple, image or consumer deployment was performed for this source acceptance.