Inventory: implement UDP operations, fetch, give, rez, and task inventory #62

Closed
opened 2026-08-08 08:20:46 +00:00 by hugo · 1 comment
Owner

Objective

Implement InventoryManager packet-based create/update/move/copy/remove/fetch/search/give/rez/task-inventory workflows.

Deliverables

  • Preserve batching, callback IDs, packet blocks, ownership, permissions, timeouts, cancellation, and response/event correlation.
  • Integrate local store updates only after validated server responses where required.
  • Cover task inventory transfers and xfer behavior with bounded data.

Validation

  • Owned InventoryManager/task/batch tests pass against fake packets.
  • Concurrent requests correlate correctly and cancel cleanly.
  • No network operation holds inventory locks across await.

Prerequisite

Networking/client lifecycle and all foundational implementation milestones are complete; mapped APIs and translated tests are fixed.

Project constraints

  • New native Rust behavior only; no bridge or C# fallback.
  • Preserve mapped public APIs and exact translated assertions; use completed transport/data layers rather than duplicating them.
  • Bound resources, avoid locks across await/callbacks, and update docs/coverage with focused and workspace evidence.
## Objective Implement InventoryManager packet-based create/update/move/copy/remove/fetch/search/give/rez/task-inventory workflows. ## Deliverables - Preserve batching, callback IDs, packet blocks, ownership, permissions, timeouts, cancellation, and response/event correlation. - Integrate local store updates only after validated server responses where required. - Cover task inventory transfers and xfer behavior with bounded data. ## Validation - Owned InventoryManager/task/batch tests pass against fake packets. - Concurrent requests correlate correctly and cancel cleanly. - No network operation holds inventory locks across await. ## Prerequisite Networking/client lifecycle and all foundational implementation milestones are complete; mapped APIs and translated tests are fixed. ## Project constraints - New native Rust behavior only; no bridge or C# fallback. - Preserve mapped public APIs and exact translated assertions; use completed transport/data layers rather than duplicating them. - Bound resources, avoid locks across await/callbacks, and update docs/coverage with focused and workspace evidence.
hugo added this to the 09 - World vertical slices milestone 2026-08-08 08:20:46 +00:00
hugo added the enhancement label 2026-08-08 08:20:46 +00:00
Author
Owner

Implemented and pushed in commit 61d6721.

Native Rust InventoryManager now covers bounded/cancellation-safe callback correlation; UDP create, update, move, copy, remove, fetch, give, rez/derez, script, and task-inventory packet paths; validated store reconciliation; capability fetch/folder/task paths; login skeleton installation; inventory offers/events; and a 16 MiB-bounded legacy ReplyTaskInventory/RequestXfer state machine. Generated mappings, documentation, the milestone audit, and Ubuntu-only workflow coverage were updated. The final review also corrected the metadata-only UpdateTaskInventory default, generated update transaction IDs, enum-text folder names, and unmatched AssetType folder fallback.

Verified in isolation:

  • cargo check --workspace --all-targets --locked -j 1
  • cargo check --manifest-path tests/api-compile/Cargo.toml --locked -j 1
  • cargo test -p libremetaverse --lib inventory_manager::tests -j 1 (9 passed)
  • cargo test -p libremetaverse-compat-tests --test inventory_manager_semantics --test task_inventory_semantics -j 1 (8 passed)
  • cargo clippy -p libremetaverse --lib --no-deps -- -D warnings
  • cargo fmt --all -- --check
  • Python mapping/shim regeneration checks and tools/check_milestone_09_issue_62.py
Implemented and pushed in commit 61d6721. Native Rust InventoryManager now covers bounded/cancellation-safe callback correlation; UDP create, update, move, copy, remove, fetch, give, rez/derez, script, and task-inventory packet paths; validated store reconciliation; capability fetch/folder/task paths; login skeleton installation; inventory offers/events; and a 16 MiB-bounded legacy ReplyTaskInventory/RequestXfer state machine. Generated mappings, documentation, the milestone audit, and Ubuntu-only workflow coverage were updated. The final review also corrected the metadata-only UpdateTaskInventory default, generated update transaction IDs, enum-text folder names, and unmatched AssetType folder fallback. Verified in isolation: - cargo check --workspace --all-targets --locked -j 1 - cargo check --manifest-path tests/api-compile/Cargo.toml --locked -j 1 - cargo test -p libremetaverse --lib inventory_manager::tests -j 1 (9 passed) - cargo test -p libremetaverse-compat-tests --test inventory_manager_semantics --test task_inventory_semantics -j 1 (8 passed) - cargo clippy -p libremetaverse --lib --no-deps -- -D warnings - cargo fmt --all -- --check - Python mapping/shim regeneration checks and tools/check_milestone_09_issue_62.py
hugo closed this issue 2026-08-10 06:01:18 +00:00
Sign in to join this conversation.