Skip to content

[Vulcan] Fix numeric symmetric nickname delimiters - #24

Merged
iliaal merged 1 commit into
masterfrom
vulcan/numeric-nickname-delimiters-20261021
Oct 22, 2026
Merged

iliaal merged 1 commit into
masterfrom
vulcan/numeric-nickname-delimiters-20261021

Conversation

@iliaal

@iliaal iliaal commented Oct 21, 2026 •

Copy link
Copy Markdown
Owner

Summary

PHP converts numeric-string array keys to integers. Cast the delimiter keys back to strings at the two strict-comparison sites so numeric symmetric nickname delimiters obey the same boundary rules as other delimiters.

  • John 0foo,do,bar0 Smith with 0 => '0' no longer produces a false standalone credential ambiguity.
  • Smith0, John0 retains its structural comma and surname-first interpretation instead of treating a mid-token 0 as a nickname opener.
  • Add 22 regression cases covering digits and multi-character numeric keys, valid nickname spans, mid-token openers/closers, unmatched delimiters and credentials outside a span. Include the required Unreleased entry.

Validation

Rebased after #23 merged onto 612656f5ccb5b2aaf0c89929ccf246bea77e1851; inspected current README, configuration, issues and open PRs (none), and verified every tracked base blob. No repository AGENTS or skills are present.

  • PHP 8.4.26: full suite 1388 tests, 4012 assertions, all pass with 256 MiB memory limit.
  • New tests: 22 tests, 122 assertions pass; unchanged final tests fail all 22 when the two production files are reverted to current base.
  • PHPStan level 9 and PHP 8.5 configuration: pass. PHP-CS-Fixer dry run, whitespace and README/baseline/deprecation guards: pass.
  • Independent review: 160-case base/head corpus, exactly 34 intended output changes (10 false standalone warnings removed, 12 mid-token openers and 12 mid-token closers preserve structural commas). Adjacent ordinary, unmatched, outside-credential, nested and newly merged initial/surname cases remain unchanged. 20,000 randomized tokenizer/splitter parity cases pass.
  • Sibling-path sweep: StructuralCommaSplitter end-position tables and SuffixMapper already cast numeric keys; Text wrapped-token checks cast keys; NicknameMapper uses string matches/typed callbacks. No additional changes needed.

Local limitation: reused existing development dependencies in the cloud fallback; no fresh local Composer audit or PHP 8.3/8.5 execution. CI run 39680640552 passed all five expected jobs for exact head 29e6d578906573cb986ade9f6fe6abb37ffbfb36: PHP 8.3/8.4/8.5 each passed 1388 tests / 4012 assertions and Composer audit, plus static analysis and code style. No checks failed or skipped. No speed or memory improvement is claimed.

@iliaal
iliaal merged commit 1fd1a8b into master Oct 22, 2026
5 checks passed
@iliaal
iliaal deleted the vulcan/numeric-nickname-delimiters-20261021 branch October 22, 2026 10:49
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