A 5e storytelling engine with an LLM DM

Fix three verify normalization gaps: plus slugs, README URL, blockquotes master

The slug rule fused a leading '+' straight into the following digit ("+1" became "plus1" instead of "plus-1"), so slugify now expands '+' to " plus " before running its normal separator-collapse pass, giving '+' the same word-boundary behavior as any other separator. The README attribution check required a byte-exact match against the vendored Legal.md paragraph, but Legal.md itself has a stray space inside its license URL ("by/4.0/ legalcode"). A README that writes the URL correctly, with no space, failed the check. The whitespace normalization on both sides of the containment check now strips all whitespace instead of collapsing it, so the check verifies the same words in the same order and ignores where the whitespace falls. The word-stream normalizer stripped headings, bullets, and other markdown furniture as separators but left blockquote markers alone, so a quoted line's leading '>' (or nested '> >') counted as a word and broke fidelity comparisons between corpus and source. normalize now strips line-leading '>' runs the same way it strips other markdown structure, while leaving '>' elsewhere on a line untouched. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>


+80 -25
3 changed files