Skip to content

WIP: Prepare CPAN compatibility fixes for UAT with independent lifecycle handoff - #1628

Draft
fglock wants to merge 28 commits into
masterfrom
feature/top-five-high-impact-issues-20261002
Draft

fglock wants to merge 28 commits into
masterfrom
feature/top-five-high-impact-issues-20261002

Conversation

@fglock

@fglock fglock commented Oct 2, 2026 •

Copy link
Copy Markdown
Owner

Scope and handoff

UAT batch for Object::Pad accessors (#1177), directory/handle behavior (#1187), bundled provider fixtures (#1278), UTF-8 flag compatibility, sort helper tail calls, bounded diagnostics, and coherent CPAN launcher/preferences.

Durable handoff: CPAN UAT handoff. It records scope, exact test outcomes, unresolved failures and the next-owner fix list. Acceptance plan.

All reachability/lifecycle changes, fixes and their new tests moved together to independent draft #1647, tracked by #1642. This includes #1597's pipe ownership fix, #1336-related lifecycle work, DOM parent lifetime and accepted sockets. Those issues must not be auto-closed by this PR. No master baseline tests were deleted.

Latest Perl core UAT: not accepted

The 2026-10-05 run completed all 575 files but is not green: 3 files failed and 1 was incomplete. It reported 680,763 passing assertions, which does not override the failures. Full log: ../PerlOnJava/logs/test_20261005_140000_1628.log; baseline comparison: build/reports/uat-20261005/compare_20261005_140000_1628.txt in the working checkout.

  • comp/proto.t: emitted tests 1–215, but not test 216 or the TAP plan, then exited 0.
  • comp/redef.t: test 18 failed; prototype mismatch warning was not suppressed by local $^W = 0 under -w.
  • op/stat.t: test 94 failed for chained -d -r _ on a directory handle. This is not a TTY flake.
  • io/socket.t: bind and setsockopt failed in the restricted full-run environment. Focused rerun with extended access passed 25/25; rerun the complete suite with extended access.

The durable handoff lists reduction steps and acceptance criteria for each issue. Experimental edits that did not resolve these failures were removed. Do not mark this UAT accepted until fixes are covered by project regressions, both backends pass, and a new full run is clean.

CPAN release qualification remains open

Historical release acceptance run 11 ended at the outer eight-hour guard. Template/PPR/XLSX passed; Mojolicious dom.t passed in the combined candidate but other failures remain. Catalyst exceeded prerequisite setup guard before its normal suite; DateTime setup and ExifTool completion also remain open.

Confirmed, self-contained follow-up tickets: #1643 (mixed arithmetic UTF-8 flags), #1644 (interpreter Test::Mojo app undefined). The handoff distinguishes these from unresolved proxy/restful failures and artificial short-timeout false positives. Authorized exclusions remain area:parser, #1269 and unsupported fork.

Split code commit 1acfa1f80: full nice -n 19 make passed (exit 0), including all unit shards and Joni packaging; nice -n 19 make check-links passed. This PR is for UAT; it does not establish release acceptance.

Fixes #1177
Fixes #1187
Fixes #1278

AI-assisted with OpenAI Codex.

Remaining qualification tracker: #1646. The independent lifecycle draft passed its own make and focused regression gates; it remains WIP for the unresolved Catalyst cost.

fglock added a commit that referenced this pull request Oct 2, 2026
Record PR #1628 and the current absence of reported branch checks in the
high-impact issue plan.

Generated with Codex (https://openai.com/codex)

Co-Authored-By: Codex <158243242+openai-codex[bot]@users.noreply.github.com>
fglock and others added 24 commits October 5, 2026 13:23
Checkpoint the in-progress five-issue batch before the final lifecycle
algorithm review and acceptance runs.

Generated with Codex (https://openai.com/codex)

Co-Authored-By: Codex <158243242+openai-codex[bot]@users.noreply.github.com>
Reuse lifecycle root snapshots across cleanup targets and batch strong-cycle
checks into one graph pass. Preserve acyclic weak targets that reach a strong
cycle and add deterministic work-count regression coverage.

Record final acceptance evidence and the remaining provider compatibility
limits in the batch plan.

Generated with Codex (https://openai.com/codex)

Co-Authored-By: Codex <158243242+openai-codex[bot]@users.noreply.github.com>
Record merged-tree build and issue-specific results, including the complete
Math::Decimal pure-Perl suite on both PerlOnJava backends and the pre-existing
IO::Compress test failures reproduced on the parent snapshot.

Generated with Codex (https://openai.com/codex)

Co-Authored-By: Codex <158243242+openai-codex[bot]@users.noreply.github.com>
Record PR #1628 and the current absence of reported branch checks in the
high-impact issue plan.

Generated with Codex (https://openai.com/codex)

Co-Authored-By: Codex <158243242+openai-codex[bot]@users.noreply.github.com>
Keep Config's POSIX d_dirfd capability consistent with PerlIO's fileno
contract by assigning directory handles a simulated runtime descriptor and
releasing it on closedir.

Generated with Codex (https://openai.com/codex)

Co-Authored-By: Codex <158243242+openai-codex[bot]@users.noreply.github.com>
Retire the distribution-wide PERLONJAVA_SKIP preference so jcpan exercises
Catalyst::Runtime's regular test phase. Remove PerlOnJava's old signed
preference from existing CPAN homes while preserving user-owned preferences,
and cover that retirement in a unit test.

Generated with Codex (https://openai.com/codex)

Co-Authored-By: Codex <158243242+openai-codex[bot]@users.noreply.github.com>
Match Perl's behavior when a named helper tail-calls from a sort comparator,
while preserving errors for tail calls written directly in the comparator.

Generated with Codex (https://openai.com/codex)

Co-Authored-By: Codex <158243242+openai-codex[bot]@users.noreply.github.com>
Keep accepted IO::Socket handles on deleted Symbol::gensym globs out of
Perl's package stash. This lets the final lexical owner close the stream
when its scope ends and allows peers to observe EOF.

Generated with Codex (https://openai.com/codex)

Co-Authored-By: Codex <158243242+openai-codex[bot]@users.noreply.github.com>
Record the Catalyst normal-test results, the accepted-socket fix, saved
Mojolicious follow-up, and the remaining acceptance gaps. Exclude parser-area
failures and issue #1269 as agreed.

Generated with Codex (https://openai.com/codex)

Co-Authored-By: Codex <158243242+openai-codex[bot]@users.noreply.github.com>
Record that Catalyst Runtime ran its normal upstream test phase, classify its
HTTP exception failures under the parser exclusion, and narrow follow-up to the
remaining in-scope failures.

Generated with Codex (https://openai.com/codex)

Co-Authored-By: Codex <158243242+openai-codex[bot]@users.noreply.github.com>
Track package-rooted targets during final teardown so transient references
left by destructor method calls do not look like rescued objects. Preserve
resurrection warnings for objects actually retained by DESTROY, and cover
the weak-owner regression on both backends.

Generated with Codex (https://openai.com/codex)

Co-Authored-By: Codex <158243242+openai-codex[bot]@users.noreply.github.com>
Preserve rooted aggregate parents during incremental DOM parsing, honor lexical
syntax warning suppression for prototype diagnostics, and retain enclosing
conditional ancestry so nested gotos can reach sibling if/elsif arms. Add
project-owned regressions and record the acceptance follow-up.

Generated with Codex (https://openai.com/codex)

Co-Authored-By: Codex <158243242+openai-codex[bot]@users.noreply.github.com>
Resolve close and fileno against existing symbolic IO slots so probing an unopened name does not materialize a typeglob. Add focused coverage for both operations and their effect on subsequent glob lookup.

Generated with [Codex](https://openai.com/codex)

Co-Authored-By: Codex <158243242+codex@users.noreply.github.com>
Return the typeglob for scalar assignments to its CODE slot, while keeping
other slot assignments on their assigned value. Preserve selected glob
references so select() can reflect later stash detachment and aliasing.

Add coverage for code-slot assignment results and selected-glob identity.

Generated with [Codex](https://openai.com/codex)

Co-Authored-By: Codex <158243242+codex@users.noreply.github.com>
Return undef when scalar-backed getc reaches EOF. Treat system() without
arguments as a child wait instead of raising a missing-command error.

Add standard-Perl coverage for both behaviors.

Generated with [Codex](https://openai.com/codex)

Co-Authored-By: Codex <158243242+codex@users.noreply.github.com>
Trigger pull request checks for the exact source tree that passed the final
full UAT and baseline comparison.

Generated with Codex (https://openai.com/codex)
Co-Authored-By: Codex <codex@openai.com>
Match Perl's behavior when a named helper tail-calls from a sort comparator,
while preserving errors for tail calls written directly in the comparator.

Generated with Codex (https://openai.com/codex)

Co-Authored-By: Codex <158243242+openai-codex[bot]@users.noreply.github.com>
Ensure the release acceptance suite and its child test processes use the
freshly built target JAR rather than a stale user-level JAR.

Generated with OpenAI Codex (https://openai.com/codex)
Co-Authored-By: OpenAI Codex <codex@openai.com>
Keep subprocess output capture finite while continuing to drain child streams.
This prevents runaway test diagnostics from exhausting the JVM heap and adds
coverage for output truncation and continued pipe draining. Allow the normal
Catalyst::Runtime acceptance suite up to four hours to complete.

Generated with OpenAI Codex (https://openai.com/codex)
Co-Authored-By: OpenAI Codex <codex@openai.com>
Rebuild the installed launcher distribution after the tested JAR and verify
that the retired Catalyst distropref is absent before acceptance begins.

Generated with OpenAI Codex (https://openai.com/codex)

Co-Authored-By: OpenAI Codex <openai-codex[bot]@users.noreply.github.com>
Nested calls can replace temporary aliases to unblessed arrays or hashes while
strong container edges still retain them. Defer weak-reference cleanup to the
statement-boundary reachability sweep and cover the DOM-style nested list case.

Generated with Codex (https://openai.com/codex)

Co-Authored-By: Codex <158243242+openai-codex[bot]@users.noreply.github.com>
Snapshot in-progress acceptance planning and numeric transliteration
regression before resuming implementation.

Generated with OpenAI Codex (https://openai.com/codex)

Co-Authored-By: OpenAI Codex <codex@openai.com>
Keep transliteration results byte strings for numeric inputs, preserve
upgraded string channels for in-place and non-destructive forms, and retain
UTF8 flags across dualvar and version-string values.

Generated with OpenAI Codex (https://openai.com/codex)

Co-Authored-By: OpenAI Codex <codex@openai.com>
Record the clean rebase, post-rebase build, focused backend checks, and the
remaining final acceptance work in the design plan.

Generated with [OpenAI Codex](https://openai.com/codex)

Co-Authored-By: OpenAI Codex <chatgpt-codex@users.noreply.github.com>
fglock and others added 2 commits October 5, 2026 13:36
Move all new reachability and lifecycle fixes and tests to independent WIP #1642.
Record incomplete acceptance and confirmed reproductions #1643 and #1644.

Generated with [OpenAI Codex](https://openai.com/codex)

Co-Authored-By: OpenAI Codex <158243242+openai-codex[bot]@users.noreply.github.com>
Generated with [OpenAI Codex](https://openai.com/codex)

Co-Authored-By: OpenAI Codex <158243242+openai-codex[bot]@users.noreply.github.com>
@fglock fglock changed the title fix: address five high-impact compatibility issues Prepare CPAN compatibility fixes for UAT with independent lifecycle handoff Oct 5, 2026
@fglock
fglock force-pushed the feature/top-five-high-impact-issues-20261002 branch from 64e06d5 to 3bfd2ad Compare October 5, 2026 11:46
Generated with [OpenAI Codex](https://openai.com/codex)

Co-Authored-By: OpenAI Codex <158243242+openai-codex[bot]@users.noreply.github.com>
@fglock

fglock commented Oct 5, 2026

Copy link
Copy Markdown
Owner Author

Committed UAT handoff records the scope, exact acceptance limits, follow-up issues and next steps.

UAT split source 1acfa1f80 passed full nice -n 19 make; documentation link checks passed. All reachability/lifecycle work and its new tests moved together to independent draft #1647, with tracking issue #1642 and its own successful build/backend regression gates.

Full release acceptance remains incomplete. Follow #1643, #1644 and #1646; historical run 11 results do not qualify either split for release.

Record the rejected 2026-10-05 Perl core run, distinguish the socket sandbox
failures from unresolved test regressions, and give the next owner reproducible
fix priorities and acceptance criteria.

Generated with [OpenAI Codex](https://openai.com/codex)
Co-Authored-By: OpenAI Codex <158243242+openai-codex[bot]@users.noreply.github.com>
@fglock fglock changed the title Prepare CPAN compatibility fixes for UAT with independent lifecycle handoff WIP: Prepare CPAN compatibility fixes for UAT with independent lifecycle handoff Oct 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant