RLV: implement message parsing, commands, queries, and typed errors #78

Closed
opened 2026-08-08 08:23:16 +00:00 by hugo · 1 comment
Owner

Objective

Implement pure RLV command/message parsing and typed command/query/restriction values.

Deliverables

  • Preserve casing, prefixes, separators, options, UUIDs, attachment/wearable aliases, folder paths, numeric channels, accepted variants, and exact rejection categories.
  • Keep parsing free of viewer/network side effects.
  • Return source-located typed errors where the mapped API exposes them.

Validation

  • All RLV parser/command/query/exception tests pass.
  • Malformed corpus never panics or loops.
  • No command normalization broadens accepted input.

Prerequisite

All global API/test gates and the foundational/world implementations needed by these extension crates are complete.

Project constraints

  • Full native Rust implementation only; no wrapped C# parser, viewer, renderer, or service.
  • Preserve mapped APIs and exact translated tests; reuse lower layers and keep generated output deterministic.
  • Validate bounded input, callbacks/tasks, docs, coverage, and workspace gates.
## Objective Implement pure RLV command/message parsing and typed command/query/restriction values. ## Deliverables - Preserve casing, prefixes, separators, options, UUIDs, attachment/wearable aliases, folder paths, numeric channels, accepted variants, and exact rejection categories. - Keep parsing free of viewer/network side effects. - Return source-located typed errors where the mapped API exposes them. ## Validation - All RLV parser/command/query/exception tests pass. - Malformed corpus never panics or loops. - No command normalization broadens accepted input. ## Prerequisite All global API/test gates and the foundational/world implementations needed by these extension crates are complete. ## Project constraints - Full native Rust implementation only; no wrapped C# parser, viewer, renderer, or service. - Preserve mapped APIs and exact translated tests; reuse lower layers and keep generated output deterministic. - Validate bounded input, callbacks/tasks, docs, coverage, and workspace gates.
hugo added this to the 10 - Rendering, RLV, and LSL tools milestone 2026-08-08 08:23:16 +00:00
hugo added the enhancement label 2026-08-08 08:23:16 +00:00
Author
Owner

Implemented and pushed in commit 468a0f0. The new native, side-effect-free RLV protocol layer parses bounded @ messages into typed clear, action, restriction, and query directives; preserves raw casing, options, folder paths, separators, UUIDs, aliases, channels, sender data, and byte spans; covers all 119 pinned restriction names plus the exact attachment/wearable maps; and exposes stable typed parse errors. RlvCommon and all mapped RlvRestriction members now use native implementations, including canonical aliases, secure-exception rules, exact immutable Args snapshots, equality/hash, and formatting. Added deterministic bounds (64 KiB/128 commands), 4,072 single-byte malformed mutations, focused docs, generated ownership mappings, and an Ubuntu CI audit. Review confirmed that restriction state remains in #79 and callbacks/service integration remains in #80. Verification: 14/14 native protocol tests; 13/13 pre-created rlv_common_semantics cases; libremetaverse-types 48/48; extension_shims 2/2; strict Clippy for RLV and Types; rustdoc with warnings denied; generator and mapping checks; issue #76/#77/#78 audits; cargo fmt/diff checks; and cargo check --workspace --all-targets --locked -j 1.

Implemented and pushed in commit 468a0f0. The new native, side-effect-free RLV protocol layer parses bounded @ messages into typed clear, action, restriction, and query directives; preserves raw casing, options, folder paths, separators, UUIDs, aliases, channels, sender data, and byte spans; covers all 119 pinned restriction names plus the exact attachment/wearable maps; and exposes stable typed parse errors. RlvCommon and all mapped RlvRestriction members now use native implementations, including canonical aliases, secure-exception rules, exact immutable Args snapshots, equality/hash, and formatting. Added deterministic bounds (64 KiB/128 commands), 4,072 single-byte malformed mutations, focused docs, generated ownership mappings, and an Ubuntu CI audit. Review confirmed that restriction state remains in #79 and callbacks/service integration remains in #80. Verification: 14/14 native protocol tests; 13/13 pre-created rlv_common_semantics cases; libremetaverse-types 48/48; extension_shims 2/2; strict Clippy for RLV and Types; rustdoc with warnings denied; generator and mapping checks; issue #76/#77/#78 audits; cargo fmt/diff checks; and cargo check --workspace --all-targets --locked -j 1.
hugo closed this issue 2026-08-10 23:12:41 +00:00
Sign in to join this conversation.