Archives and model workflows: implement OAR, Collada, GLTF, and uploads #74

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

Objective

Implement OAR asset/terrain/settings archive IO, tar safety, Collada/model conversion, GLTF document/buffer/surface handling, material overrides, and upload workflows.

Deliverables

  • Enforce extraction-root, path, size, count, depth, and offset limits.
  • Preserve deterministic file/output ordering and typed DTO conversions.
  • Separate offline import/export from network upload/pricing and use completed asset/caps layers.

Validation

  • Archive/GLTF/material/upload tests and golden fixtures pass.
  • Traversal/zip-bomb-style regressions are rejected safely.
  • Offline round trips are deterministic.

Prerequisite

Networking/client lifecycle and the earlier world model/manager issues are available; mapped APIs and translated tests are fixed.

Project constraints

  • New native Rust behavior only; no bridge or C# fallback.
  • Preserve fixed APIs and translated assertions; reuse completed lower layers and keep privileged live actions opt-in.
  • Validate bounded untrusted inputs, cancellation, task cleanup, docs, and coverage in the same change.
## Objective Implement OAR asset/terrain/settings archive IO, tar safety, Collada/model conversion, GLTF document/buffer/surface handling, material overrides, and upload workflows. ## Deliverables - Enforce extraction-root, path, size, count, depth, and offset limits. - Preserve deterministic file/output ordering and typed DTO conversions. - Separate offline import/export from network upload/pricing and use completed asset/caps layers. ## Validation - Archive/GLTF/material/upload tests and golden fixtures pass. - Traversal/zip-bomb-style regressions are rejected safely. - Offline round trips are deterministic. ## Prerequisite Networking/client lifecycle and the earlier world model/manager issues are available; mapped APIs and translated tests are fixed. ## Project constraints - New native Rust behavior only; no bridge or C# fallback. - Preserve fixed APIs and translated assertions; reuse completed lower layers and keep privileged live actions opt-in. - Validate bounded untrusted inputs, cancellation, task cleanup, docs, and coverage in the same change.
hugo added this to the 09 - World vertical slices milestone 2026-08-08 08:21:46 +00:00
hugo added the enhancement label 2026-08-08 08:21:46 +00:00
Author
Owner

Implemented in commit 55424db and pushed to main.

Highlights:

  • Added bounded native ustar/OAR reading and deterministic gzip/tar output, canonical UUID_type.ext asset loading/saving, RAW32 terrain IO, region settings XML, and safe callback DTOs.
  • Enforced checksum, extraction-root/path, link-kind, entry/expanded-size, count, depth, offset, buffer-view, accessor, and scene-cycle limits.
  • Implemented GLTF/GLB document, buffer, accessor, mesh, material/texture, skin, and animation parsing plus deterministic JSON/GLB serialization.
  • Implemented deterministic mesh assets, Collada unit/up-axis/effect/material conversion with confined textures and JPEG2000 conversion, and opt-in cancellable mesh pricing/upload through native inventory/caps layers.
  • Added docs and native API/codegen coverage.

Scoped verification:

  • archive_model_semantics: 7 passed
  • asset_document_semantics: 28 passed
  • asset_capability_semantics material filter: 10 passed
  • asset_archive unit/security tests: 4 passed
  • wire_shims: 3 passed
  • cargo clippy -p libremetaverse --lib --no-deps -- -D warnings
  • locked offline API compile gate
  • cargo fmt, generated-shim check, and git diff check

The unrelated inventory-thumbnail failures in the broader capability file were excluded per scope; every material/upload case in that file passed.

Implemented in commit 55424db and pushed to main. Highlights: - Added bounded native ustar/OAR reading and deterministic gzip/tar output, canonical UUID_type.ext asset loading/saving, RAW32 terrain IO, region settings XML, and safe callback DTOs. - Enforced checksum, extraction-root/path, link-kind, entry/expanded-size, count, depth, offset, buffer-view, accessor, and scene-cycle limits. - Implemented GLTF/GLB document, buffer, accessor, mesh, material/texture, skin, and animation parsing plus deterministic JSON/GLB serialization. - Implemented deterministic mesh assets, Collada unit/up-axis/effect/material conversion with confined textures and JPEG2000 conversion, and opt-in cancellable mesh pricing/upload through native inventory/caps layers. - Added docs and native API/codegen coverage. Scoped verification: - archive_model_semantics: 7 passed - asset_document_semantics: 28 passed - asset_capability_semantics material filter: 10 passed - asset_archive unit/security tests: 4 passed - wire_shims: 3 passed - cargo clippy -p libremetaverse --lib --no-deps -- -D warnings - locked offline API compile gate - cargo fmt, generated-shim check, and git diff check The unrelated inventory-thumbnail failures in the broader capability file were excluded per scope; every material/upload case in that file passed.
hugo closed this issue 2026-08-10 20:32:36 +00:00
Sign in to join this conversation.