Assets: implement asset models, decoding contracts, cache, and download pipeline #64

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

Objective

Implement base Asset and concrete asset types plus AssetCache, deduplicated requests, uploads/downloads, texture/mesh fetching, and cache pruning.

Deliverables

  • Preserve asset IDs/types, mutable/raw bytes, lazy decode, transfer/source types, priorities, progress, deduplication, cancellation, and cache naming/expiry.
  • Apply size limits and atomic cache writes.
  • Integrate imaging/StructuredData without exposing codec internals.

Validation

  • Asset/material/mesh/download/cache tests pass.
  • Duplicate requests share work and independent cancellation behaves correctly.
  • Malformed assets and cache corruption return typed errors.

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 base Asset and concrete asset types plus AssetCache, deduplicated requests, uploads/downloads, texture/mesh fetching, and cache pruning. ## Deliverables - Preserve asset IDs/types, mutable/raw bytes, lazy decode, transfer/source types, priorities, progress, deduplication, cancellation, and cache naming/expiry. - Apply size limits and atomic cache writes. - Integrate imaging/StructuredData without exposing codec internals. ## Validation - Asset/material/mesh/download/cache tests pass. - Duplicate requests share work and independent cancellation behaves correctly. - Malformed assets and cache corruption return typed errors. ## 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:47 +00:00
hugo added the enhancement label 2026-08-08 08:20:47 +00:00
Author
Owner

Implemented and pushed in commit 52f62d8.

The native Rust asset slice now includes bounded concrete asset models and real JPEG 2000/Ogg Vorbis codec boundaries; GLTF material/override handling; client-owned capability and LLUDP asset, mesh, texture, Xfer, and upload pipelines; authenticated inventory material uploads; independent cancellation for deduplicated HTTP waiters; transfer/progress event models; and a confined, atomic, corruption-aware, activity-pruned disk cache with custom naming support. Documentation and an issue-specific coverage audit were added.

Verification: cargo check --workspace; isolated tests/api-compile cargo check; strict libremetaverse library Clippy with all features; 5 native asset_pipeline_semantics tests; 13 related material-document compatibility cases; 11 related asset-capability compatibility cases; all 11 caps_http/download regressions; generator, mapping, API coverage, formatting, diff, and issue #64 audit gates. The 12 GLTF document cases and terrain/postcard/thumbnail cases belong to other milestone issues and were intentionally excluded.

Implemented and pushed in commit 52f62d8. The native Rust asset slice now includes bounded concrete asset models and real JPEG 2000/Ogg Vorbis codec boundaries; GLTF material/override handling; client-owned capability and LLUDP asset, mesh, texture, Xfer, and upload pipelines; authenticated inventory material uploads; independent cancellation for deduplicated HTTP waiters; transfer/progress event models; and a confined, atomic, corruption-aware, activity-pruned disk cache with custom naming support. Documentation and an issue-specific coverage audit were added. Verification: cargo check --workspace; isolated tests/api-compile cargo check; strict libremetaverse library Clippy with all features; 5 native asset_pipeline_semantics tests; 13 related material-document compatibility cases; 11 related asset-capability compatibility cases; all 11 caps_http/download regressions; generator, mapping, API coverage, formatting, diff, and issue #64 audit gates. The 12 GLTF document cases and terrain/postcard/thumbnail cases belong to other milestone issues and were intentionally excluded.
hugo closed this issue 2026-08-10 07:52:39 +00:00
Sign in to join this conversation.