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
PR #1628 retains Object::Pad accessors (#1177), directory/handle errors (#1187),
bundled provider fixtures (#1278), transliteration/dualvar/version UTF-8 flags,
sort comparator helper tail calls, bounded captured subprocess diagnostics,
launcher refresh and bundled JAR pinning, and removal of the stale Catalyst
skip preference. All reachability and lifecycle changes, their fixes and new
regressions moved to an independent draft PR. In particular, #1597's pipe fix,
DOM parent-lifetime fix, socket ownership and #1336-related lifecycle work are
not included in this UAT candidate. Existing master tests remain intact.
The combined parent was d3f9ae5ac31b51810c0d3b83f302438e656a496a. Rebase onto
master c38ef8a preserved newer eval/format context handling and sort comparator
frames. The split source must pass a new immutable build before publication.
Acceptance run 11: exact qualification limits
The combined parent passed make and focused backend regressions. Its isolated
fresh-home acceptance attempt stopped at the overall eight-hour guard, exit 124.
This is not a successful release gate.
Target
Result
Template
PASS: 121 files, 3,165 tests
PPR
PASS: 75 files, 1,253 tests
XLSX
PASS: 1,247 files, 5,115 tests
Mojolicious 9.49
Retry: 109 files, 4,181 counted tests, 4,174 passed / 7 failed across five programs; dom.t passed
Catalyst-Runtime 5.90132
Prerequisite installation exceeded 15,000-second guard before the suite; no distribution skip
DateTime 1.67
Setup exceeded its guard before suite; cannot classify this as excluded #1269
Started, then interrupted by outer guard; no completed result
Mojolicious final failures: asset.t subtest 20 requires unsupported fork;
json.t 25–26 computed numbers serialize as strings; websocket_lite_app.t 19
has mixed string/number output; proxy_app.t 1 and 3 have incorrect responses;
restful_lite_app.t 87 reports inactivity timeout. The initial missing gzip
prerequisite cascade was retried successfully and is not a separate runtime bug.
Confirmed reductions and open work
Mixed arithmetic 1 + '0 but true' and 23 + 'bar' incorrectly set UTF-8 flags
on both PerlOnJava backends. The four-assertion reduction passes system Perl
and fails assertions 3–4 on both backends. Mojo::JSON's numeric predicate tests
this flag, explaining json.t 25–26. This is distinct from closed #1260/#1262.
A minimal Test::Mojo GET /nothing with Accept image/png passes system Perl
and JVM with the upstream default timeout. Interpreter instead exits 255 at
Mojo/Server/Daemon.pm:55 because app is undefined. A shortened five-second
probe produced a false JVM failure from cold template compilation; do not
reuse that artificial timeout as proof of a JVM defect. The full proxy/restful
failures still need reductions with default upstream settings.
Resume sequence and completion criteria
Validate this exact split commit with captured nice -n 19 make output and nice -n 19 make check-links. Never mutate a checkout during a gate.
Review the linked bug tickets' inline reproductions and fix numeric flags
and interpreter application ownership/dispatch with permanent regression
tests. Verify Perl oracle, unfixed failure and JVM/interpreter success.
Reduce proxy/restful failures separately; classify DBIx assertions; complete
DateTime and ExifTool rather than assuming setup or outer timeouts are excluded.
Review the independent lifecycle draft and its deterministic query counts.
Its old combined success does not validate either new split candidate.
Batch fixes, build once at an immutable barrier, then run full acceptance
in an isolated CPAN home and preserve logs. Only area:parser, Prioritize standard Perl test-suite failures #1269 and
unsupported fork are authorized exclusions. Catalyst must run normally;
DOM OOM remains an in-scope requirement in the independent lifecycle PR.
UAT approval does not establish release acceptance. Keep the goal open until
all in-scope targets pass and all failures have explicit root-cause evidence.
Commit 1acfa1f80 passed full nice -n 19 make on 2026-10-05 (exit 0);
all unit shards and Joni packaging checks completed. nice -n 19 make check-links
also passed. This validates the split UAT code, not full release acceptance.
Reproduce remaining upstream Mojolicious failures
The following runs the unchanged, pinned upstream programs with their default
application timeouts. It does not shorten the HTTP inactivity timeout.
Use the jperl launcher from the candidate checkout after full make passes.
Some upstream tests may assume their source directory is the working directory;
if required, use an absolute launcher path and run from the extracted distribution.
Loopback networking must be permitted. Test::More and gzip prerequisites must be
available. Classify a missing prerequisite separately rather than calling it a
runtime assertion failure. Use the actual default timeout; cold template compilation
made an artificially shortened five-second minimal probe misleading.
Exact run-11 observations still requiring reduction:
proxy_app.t subtest 1, line 160: a 304 redirect produced 400, X-Mojo-App undef,
Content-Length 20 instead of undef, body Error: Unknown error.
proxy_app.t subtest 3, line 215: GET /proxy3/GET/res1 failed; status undef
instead of 200, proxy headers undef, empty body instead of One!.
restful_lite_app.t subtest 87: GET /nothing with Accept image/png reported
inactivity timeout and status undef rather than 404. The minimal default-timeout
JVM reproduction passed, so this is still a full-suite-only observation.
DateTime's setup timeout is not the known #1269 missing TAP plan. Prior focused t/10subtract.t passed 37 assertions and exited without a plan; that is separate
from run 11 failing before its suite. ExifTool's incomplete run is not a pass;
previous reduced XMP tests 1–3 passed after UTF-8 fixes, while Sony parser errors
are eligible only after matching the documented parser root cause. DBIx::Class's
shared literal conflict-marker parse failure can classify the cascade; its two
assertion failures still need their own earliest-cause review.
Archive each candidate's full logs and report snapshot. Run all remaining targets
from one immutable built candidate, with a unique CPAN home. Allow the outer
budget to cover prerequisites and targets, or qualify staged runs explicitly on
the same source/JAR rather than losing final-target evidence at a global guard.
Do not infer success from a timeout or exclude an entire distribution.
This is a qualification tracker, not a claim that every incomplete target has a
new runtime defect. Close only when the in-scope acceptance matrix is complete,
confirmed defects have tracked regressions, and lifecycle #1642 is reconciled.
CPAN UAT handoff (2026-10-05)
Candidate scope
PR #1628 retains Object::Pad accessors (#1177), directory/handle errors (#1187),
bundled provider fixtures (#1278), transliteration/dualvar/version UTF-8 flags,
sort comparator helper tail calls, bounded captured subprocess diagnostics,
launcher refresh and bundled JAR pinning, and removal of the stale Catalyst
skip preference. All reachability and lifecycle changes, their fixes and new
regressions moved to an independent draft PR. In particular, #1597's pipe fix,
DOM parent-lifetime fix, socket ownership and #1336-related lifecycle work are
not included in this UAT candidate. Existing master tests remain intact.
The combined parent was d3f9ae5ac31b51810c0d3b83f302438e656a496a. Rebase onto
master c38ef8a preserved newer eval/format context handling and sort comparator
frames. The split source must pass a new immutable build before publication.
Acceptance run 11: exact qualification limits
The combined parent passed make and focused backend regressions. Its isolated
fresh-home acceptance attempt stopped at the overall eight-hour guard, exit 124.
This is not a successful release gate.
Mojolicious final failures: asset.t subtest 20 requires unsupported fork;
json.t 25–26 computed numbers serialize as strings; websocket_lite_app.t 19
has mixed string/number output; proxy_app.t 1 and 3 have incorrect responses;
restful_lite_app.t 87 reports inactivity timeout. The initial missing gzip
prerequisite cascade was retried successfully and is not a separate runtime bug.
Confirmed reductions and open work
Mixed arithmetic
1 + '0 but true'and23 + 'bar'incorrectly set UTF-8 flagson both PerlOnJava backends. The four-assertion reduction passes system Perl
and fails assertions 3–4 on both backends. Mojo::JSON's numeric predicate tests
this flag, explaining json.t 25–26. This is distinct from closed #1260/#1262.
A minimal Test::Mojo GET
/nothingwith Acceptimage/pngpasses system Perland JVM with the upstream default timeout. Interpreter instead exits 255 at
Mojo/Server/Daemon.pm:55 because app is undefined. A shortened five-second
probe produced a false JVM failure from cold template compilation; do not
reuse that artificial timeout as proof of a JVM defect. The full proxy/restful
failures still need reductions with default upstream settings.
Resume sequence and completion criteria
nice -n 19 makeoutput andnice -n 19 make check-links. Never mutate a checkout during a gate.and interpreter application ownership/dispatch with permanent regression
tests. Verify Perl oracle, unfixed failure and JVM/interpreter success.
DateTime and ExifTool rather than assuming setup or outer timeouts are excluded.
Its old combined success does not validate either new split candidate.
in an isolated CPAN home and preserve logs. Only
area:parser, Prioritize standard Perl test-suite failures #1269 andunsupported fork are authorized exclusions. Catalyst must run normally;
DOM OOM remains an in-scope requirement in the independent lifecycle PR.
all in-scope targets pass and all failures have explicit root-cause evidence.
Related work
Investigation tickets
Independent UAT validation
Commit
1acfa1f80passed fullnice -n 19 makeon 2026-10-05 (exit 0);all unit shards and Joni packaging checks completed.
nice -n 19 make check-linksalso passed. This validates the split UAT code, not full release acceptance.
Reproduce remaining upstream Mojolicious failures
The following runs the unchanged, pinned upstream programs with their default
application timeouts. It does not shorten the HTTP inactivity timeout.
Use the jperl launcher from the candidate checkout after full make passes.
Some upstream tests may assume their source directory is the working directory;
if required, use an absolute launcher path and run from the extracted distribution.
Loopback networking must be permitted. Test::More and gzip prerequisites must be
available. Classify a missing prerequisite separately rather than calling it a
runtime assertion failure. Use the actual default timeout; cold template compilation
made an artificially shortened five-second minimal probe misleading.
Exact run-11 observations still requiring reduction:
Content-Length 20 instead of undef, body
Error: Unknown error.instead of 200, proxy headers undef, empty body instead of
One!.inactivity timeout and status undef rather than 404. The minimal default-timeout
JVM reproduction passed, so this is still a full-suite-only observation.
["1","2","3",4]insteadof
[1,2,3,4]; whether Mixed numeric arithmetic incorrectly sets UTF-8 flag and changes Mojo JSON serialization #1643 explains the decoder path is unconfirmed.Qualification gaps must remain explicit
DateTime's setup timeout is not the known #1269 missing TAP plan. Prior focused
t/10subtract.tpassed 37 assertions and exited without a plan; that is separatefrom run 11 failing before its suite. ExifTool's incomplete run is not a pass;
previous reduced XMP tests 1–3 passed after UTF-8 fixes, while Sony parser errors
are eligible only after matching the documented parser root cause. DBIx::Class's
shared literal conflict-marker parse failure can classify the cascade; its two
assertion failures still need their own earliest-cause review.
Archive each candidate's full logs and report snapshot. Run all remaining targets
from one immutable built candidate, with a unique CPAN home. Allow the outer
budget to cover prerequisites and targets, or qualify staged runs explicitly on
the same source/JAR rather than losing final-target evidence at a global guard.
Do not infer success from a timeout or exclude an entire distribution.
This is a qualification tracker, not a claim that every incomplete target has a
new runtime defect. Close only when the in-scope acceptance matrix is complete,
confirmed defects have tracked regressions, and lifecycle #1642 is reconciled.