Codegen: generate skeleton, attentions, and genepool data #49

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

Objective

Port SkeletonGenerator, AttentionsGenerator, and GenepoolGenerator to deterministic Rust.

Deliverables

  • Parse skeleton hierarchy, transforms, aliases, collision volumes, attention definitions, and genepool inputs with validation.
  • Generate typed Rust constants/records and lookup tables used by avatar/appearance code.
  • Retain separate asset licensing/provenance notes.

Validation

  • Generated hierarchy and identifiers match reference fixtures.
  • Invalid source inputs produce source-located errors.
  • No generated C# or runtime assembly is shipped.

Prerequisite

The fixed API/test gates, Types, StructuredData, and relevant imaging foundations are complete.

Project constraints

  • All LibreMetaverse-specific generation and wire behavior is new native Rust code.
  • Generated Rust is deterministic, checked in, and covered by the fixed public API and semantic tests.
  • No normal build or release may depend on .NET, Roslyn, C# assemblies, or the reference checkout.
## Objective Port SkeletonGenerator, AttentionsGenerator, and GenepoolGenerator to deterministic Rust. ## Deliverables - Parse skeleton hierarchy, transforms, aliases, collision volumes, attention definitions, and genepool inputs with validation. - Generate typed Rust constants/records and lookup tables used by avatar/appearance code. - Retain separate asset licensing/provenance notes. ## Validation - Generated hierarchy and identifiers match reference fixtures. - Invalid source inputs produce source-located errors. - No generated C# or runtime assembly is shipped. ## Prerequisite The fixed API/test gates, Types, StructuredData, and relevant imaging foundations are complete. ## Project constraints - All LibreMetaverse-specific generation and wire behavior is new native Rust code. - Generated Rust is deterministic, checked in, and covered by the fixed public API and semantic tests. - No normal build or release may depend on .NET, Roslyn, C# assemblies, or the reference checkout.
hugo added this to the 07 - Wire codegen milestone 2026-08-08 08:18:18 +00:00
hugo added the enhancement label 2026-08-08 08:18:18 +00:00
Author
Owner

Implemented and pushed in commit 4a32025.

Implementation:

  • Added deterministic native Rust parsers/renderers for avatar_skeleton.xml, attentions.xml, attentionsN.xml, and genepool.xml.
  • Added strict source-located schema diagnostics for hierarchy/count/vector/identifier validation, attention completeness, finite values, archetype/parameter uniqueness, and texture slot/UUID validation.
  • Generated and checked in the complete 133-joint/26-collision-volume skeleton, both 11-slot attention catalogs, and all 24 genepool archetypes/3,360 parameters with per-input SHA-256 and license provenance.
  • Replaced the mapped skeleton, attention, and genepool failure-only shims with native Rust records, getters/setters, lookups, traversal, expanded joint-list behavior, built-in loading, and validated custom skeleton XML loading.
  • Registered all outputs in deterministic generation/check mode and added the focused Ubuntu Gitea gate and documentation.

Verification:

  • cargo test -p libremetaverse-codegen: 12 passed
  • cargo run -p libremetaverse-codegen -- check: passed
  • cargo test -p libremetaverse --test generated_avatar_catalogs: 4 passed
  • cargo test -p libremetaverse --lib linden_skeleton: 15 passed
  • cargo test -p libremetaverse --lib joint_base_support_category: 3 passed
  • cargo test -p libremetaverse --lib joint_get_aliases_list: 2 passed
  • cargo test -p libremetaverse --lib skeleton::tests: 1 passed
  • cargo clippy for libremetaverse and libremetaverse-codegen with warnings denied: passed
  • cargo test --workspace --no-run: passed
  • API shim/mapping drift checks, offline API consumer check, cargo fmt check, git diff check, and locked normal build: passed

Final review confirmed the generated semantic digests cover the complete pinned hierarchy/identifiers/catalog values, no owned implementation contains a stub, and normal builds require neither C#/.NET nor the reference checkout.

Implemented and pushed in commit 4a32025. Implementation: - Added deterministic native Rust parsers/renderers for avatar_skeleton.xml, attentions.xml, attentionsN.xml, and genepool.xml. - Added strict source-located schema diagnostics for hierarchy/count/vector/identifier validation, attention completeness, finite values, archetype/parameter uniqueness, and texture slot/UUID validation. - Generated and checked in the complete 133-joint/26-collision-volume skeleton, both 11-slot attention catalogs, and all 24 genepool archetypes/3,360 parameters with per-input SHA-256 and license provenance. - Replaced the mapped skeleton, attention, and genepool failure-only shims with native Rust records, getters/setters, lookups, traversal, expanded joint-list behavior, built-in loading, and validated custom skeleton XML loading. - Registered all outputs in deterministic generation/check mode and added the focused Ubuntu Gitea gate and documentation. Verification: - cargo test -p libremetaverse-codegen: 12 passed - cargo run -p libremetaverse-codegen -- check: passed - cargo test -p libremetaverse --test generated_avatar_catalogs: 4 passed - cargo test -p libremetaverse --lib linden_skeleton: 15 passed - cargo test -p libremetaverse --lib joint_base_support_category: 3 passed - cargo test -p libremetaverse --lib joint_get_aliases_list: 2 passed - cargo test -p libremetaverse --lib skeleton::tests: 1 passed - cargo clippy for libremetaverse and libremetaverse-codegen with warnings denied: passed - cargo test --workspace --no-run: passed - API shim/mapping drift checks, offline API consumer check, cargo fmt check, git diff check, and locked normal build: passed Final review confirmed the generated semantic digests cover the complete pinned hierarchy/identifiers/catalog values, no owned implementation contains a stub, and normal builds require neither C#/.NET nor the reference checkout.
hugo closed this issue 2026-08-09 09:29:26 +00:00
Sign in to join this conversation.