v2.3.3 — Bridge fix: ASCII arrow
[v2.3.3] — 2026-04-24
Patch release. Bridge-fix: ASCII arrow -> is now a first-class SAL frame-boundary operator equivalent to Unicode →.
Package versions shipped with this release:
osmp(Python / PyPI): 2.3.2 → 2.3.3osmp-protocol(npm): 2.3.2 → 2.3.3
Fixed
- Bridge:
->(ASCII) is now treated as a SAL frame-boundary operator equivalent to→(Unicode). Previously, any SAL string using the ASCII shorthand (e.g.H:HR>130->U:ALERT) was parsed as a single frame rather than split into constituent frames, causingvalidate_compositionto false-negative on valid chains,MacroRegistry.registerto reject ASCII-arrow chain templates, andSALDecoder.decode_natural_languageto skip the "then" NL mapping. Unicode behavior is unchanged.
Coordinated edits across two files:
sdk/python/osmp/protocol.py— five edits: line 1787 (_FRAME_SPLIT_REadds->alternate), line 2046 (validate_compositionfilter whitelist adds"->"), line 2908 (MacroRegistry.registerchain-validation filter adds"->"), line 3052 (MacroRegistryconsequence-class-inheritance filter adds"->"), line 3215 (SALDecoder._OPERATOR_NLadds"->": " then ").sdk/python/src/osmp.py(legacy single-file distribution) — two edits: line 1610 (frame-split regex), line 1862 (validator filter). Three edits from the modular package have no legacy counterpart becauseMacroRegistryand_OPERATOR_NLare not exported from the legacy surface. SeeLEGACY_PARITY_AUDIT.mdfor the full parity picture.
Tests
- Added
sdk/python/tests/test_bridge_fix.py— T1 (NL annotation round-trip ASCII↔Unicode byte-identical, "then" present), T2 (validator parity — same issue set across arrow forms), T3 (macro chain with ASCII arrow validates against ASD), T4 (Unicode corpus regression: 10 golden frames decode byte-identical). 4/4 pass. - TypeScript suite (existing): 97/97 pass.
- Go suite (existing):
osmptests ok.
Field verification
Verified on-device during RTP-012-B (2026-04-24, Gemma-4-E4B Q4_K_M on RedMagic 10S Pro via llama-server in Termux). Patched-substrate cells used the -> operator across 9 cells × 15 rounds = 135 opportunities with zero parser defects. Ctrl-substrate cells (pre-fix) produced 0/9 acquisition across all priming conditions — supporting evidence that the pre-fix parser silently gated valid SAL chains.
Not changed
- No API additions, no breaking changes, no migration required.
osmp-mcpserver not re-released; it picks uposmp==2.3.3automatically at install time.server.jsonunchanged; MCP registry entry trails the package version per project convention.