RLV: implement restriction state, camera, folders, locks, and permissions #79

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

Objective

Implement restriction providers/managers, camera settings, shared inventory map, locked folders/attachments/wearables, blacklists, and permission decisions.

Deliverables

  • Preserve add/remove/source-object semantics, snapshots, precedence, exceptions, aliases, folder ancestry, and update events.
  • Use short locks or immutable snapshots and run callbacks afterward.
  • Keep decisions deterministic and independently testable.

Validation

  • All restriction/lock/camera/inventory-map/permission tests pass.
  • Concurrent state updates preserve invariants.
  • No network/client dependency is needed for pure state tests.

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 restriction providers/managers, camera settings, shared inventory map, locked folders/attachments/wearables, blacklists, and permission decisions. ## Deliverables - Preserve add/remove/source-object semantics, snapshots, precedence, exceptions, aliases, folder ancestry, and update events. - Use short locks or immutable snapshots and run callbacks afterward. - Keep decisions deterministic and independently testable. ## Validation - All restriction/lock/camera/inventory-map/permission tests pass. - Concurrent state updates preserve invariants. - No network/client dependency is needed for pure state tests. ## 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:17 +00:00
hugo added the enhancement label 2026-08-08 08:23:17 +00:00
Author
Owner

Implemented and verified in commit 362fa62.

Implementation:

  • Added native synchronized RLV shared folders/items, bounded InventoryMap snapshots, deterministic path/item queries, blacklist, restriction manager, immutable locked-folder views, recursive attach/detach locks and exceptions, camera settings/aggregation, and the complete mapped permission decision matrix.
  • Preserved exact add/remove/source identity semantics, aliases, precedence, folder ancestry, snapshot isolation, and post-lock update events. Revision-checked lock rebuilds prevent stale snapshots during concurrent updates; raw source-removal iterators are bounded before deduplication.
  • Replaced the ImmutableDictionary placeholder with a real Arc-backed read-only snapshot and mapped all issue-owned generated APIs. RLV native coverage is now 12 types / 147 members.
  • Added issue ownership audit, documentation, and the ubuntu-latest workflow hook. No network or GridClient dependency was introduced; command/callback integration remains scoped to issue #80.

Verification:

  • cargo test -p libremetaverse-rlv --locked: 28 passed
  • cargo test -p libremetaverse-compat-tests --test rlv_inventory_map_semantics --locked: 16 passed
  • cargo clippy -p libremetaverse-rlv --all-targets --locked -- -D warnings: passed
  • rustdoc with -D warnings: passed
  • cargo check --workspace --all-targets --locked -j 1: passed
  • generator and Rust mapping checks: passed
  • issue #78 and #79 ownership audits: passed

Completion review compared the Rust behavior with the live issue and pinned LibreMetaverse C# InventoryMap, restriction manager, locked-folder, camera, blacklist, shared inventory, and permissions sources. No issue-owned stubs or missing mapped members remain.

Implemented and verified in commit 362fa62. Implementation: - Added native synchronized RLV shared folders/items, bounded InventoryMap snapshots, deterministic path/item queries, blacklist, restriction manager, immutable locked-folder views, recursive attach/detach locks and exceptions, camera settings/aggregation, and the complete mapped permission decision matrix. - Preserved exact add/remove/source identity semantics, aliases, precedence, folder ancestry, snapshot isolation, and post-lock update events. Revision-checked lock rebuilds prevent stale snapshots during concurrent updates; raw source-removal iterators are bounded before deduplication. - Replaced the ImmutableDictionary placeholder with a real Arc-backed read-only snapshot and mapped all issue-owned generated APIs. RLV native coverage is now 12 types / 147 members. - Added issue ownership audit, documentation, and the ubuntu-latest workflow hook. No network or GridClient dependency was introduced; command/callback integration remains scoped to issue #80. Verification: - cargo test -p libremetaverse-rlv --locked: 28 passed - cargo test -p libremetaverse-compat-tests --test rlv_inventory_map_semantics --locked: 16 passed - cargo clippy -p libremetaverse-rlv --all-targets --locked -- -D warnings: passed - rustdoc with -D warnings: passed - cargo check --workspace --all-targets --locked -j 1: passed - generator and Rust mapping checks: passed - issue #78 and #79 ownership audits: passed Completion review compared the Rust behavior with the live issue and pinned LibreMetaverse C# InventoryMap, restriction manager, locked-folder, camera, blacklist, shared inventory, and permissions sources. No issue-owned stubs or missing mapped members remain.
hugo closed this issue 2026-08-10 23:56:18 +00:00
Sign in to join this conversation.