Skip to content

fix(regex): preserve surrogate property scalar semantics - #1049

Draft
fglock wants to merge 9 commits into
wip/phase36-block-wildcardsfrom
wip/phase36-surrogate-property-renderer
Draft

fix(regex): preserve surrogate property scalar semantics#1049
fglock wants to merge 9 commits into
wip/phase36-block-wildcardsfrom
wip/phase36-surrogate-property-renderer

Conversation

@fglock

@fglock fglock commented Aug 18, 2026

Copy link
Copy Markdown
Owner

Summary

  • render surrogate and beyond-Unicode class members as complete Perl scalar markers in Joni
  • preserve positive, complemented, class, capture, substitution, and global-match semantics
  • prevent translated ordinary alternatives from starting inside marker payloads
  • add a standard-Perl-first 27-assertion focused oracle
  • keep the Phase 36 master plan and feature matrix current

Validation

  • standard Perl: 27/27
  • PerlOnJava JVM: 27/27
  • PerlOnJava interpreter: 27/27
  • warning-free make: passed in 4m58s
  • direct Joni and packaging verification: passed
  • authoritative generated chunks 01-04: 154,132/167,506 on both backends
  • differential: 250 gains, zero losses, zero missing assertions, exact JVM/interpreter numbered-test identity
  • generated property-plus-boundary total: 393,998/407,372

Two earlier resource-collided corpus attempts remain explicitly discarded; the
reported map uses one stable JAR, one backend at a time, and two runner workers.

Integration priority

PR #1042 remains the immediate strict PR-958 parity gate. Full Joni remains the
objective; temporary ordinary-lookbehind Java routing is tracked cleanup debt
and does not complete Phase 1 or Phase 5.

Stack

This draft is stacked on PR #1048 (wip/phase36-block-wildcards). The two
preceding PR #1042 compatibility commits are expected to drop when the stack is
rebased after #1042 merges. Draft PR #1050 is the independently validated
native-property marker-boundary follow-up stacked on this branch.

Generated with Codex

fglock and others added 7 commits August 18, 2026 12:45
Classify the established IsDigit, IsLower, and IsUpper aliases for frontend
translation and splice their generated ranges into an enclosing character
class without nested brackets. This prevents Joni from misparsing adjacent
Perl property aliases in ordinary classes.

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

Co-Authored-By: Codex <codex@openai.com>
Translate standalone Perl code points above U+10FFFF into exact
internal-marker alternatives before Joni compilation. This preserves
Perl's ANYOFH membership behavior without changing range or negated-class
semantics.

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

Co-Authored-By: OpenAI Codex <codex@openai.com>
Render surrogate and beyond-Unicode class members through complete internal
scalar markers, including complements, captures, substitutions, and global
matching. Prevent translated ordinary alternatives from beginning inside a
marker payload during unanchored searches.

Record the same-worktree mutable-JAR validation incident and its prevention
rule in AGENTS.md.

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

Co-Authored-By: Codex <codex@openai.com>
Record PR 1049's focused and full-build gates, keep the generated map as an
explicit pending acceptance condition, and track the separate native-property
marker-boundary reducer. Document the overloaded-corpus cleanup and lower-load
rerun rule.

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

Co-Authored-By: Codex <codex@openai.com>
Record the temporary Java routing workaround without weakening the full-Joni
architecture or Phase 1 and Phase 5 exit criteria.

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

Co-Authored-By: Codex <codex@openai.com>
Capture the exact pre-workaround PR 958 comparison and use its recoverable
assertion counts to rank the next full-Joni remediation slices.

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

Co-Authored-By: Codex <codex@openai.com>
Record PR 1042's temporary progressive implementation, its forced-Joni safety
gate, and the evidence that still keeps cleanup open.

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

Co-Authored-By: Codex <codex@openai.com>
fglock and others added 2 commits August 18, 2026 14:18
Record the independently validated exact +5,064 target-map gain while keeping
aggregate totals deferred until the old-base slice is rebased.

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

Co-Authored-By: Codex <codex@openai.com>
Record exact JVM/interpreter identity at 154,132/167,506, 250 gains with no
losses or missing assertions, and the resulting 393,998/407,372 generated
property-plus-boundary total.

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

Co-Authored-By: Codex <codex@openai.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant