Codegen gate: verify all generated APIs and clean regeneration in CI #50

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

Objective

Complete the codegen milestone with coverage, reproducibility, and consumer-build gates.

Deliverables

  • Regenerate all packet/visual/tree/skeleton/attention/genepool outputs in a temporary directory and fail on diff.
  • Compare generated Rust API coverage against the authoritative public catalog.
  • Audit inputs, hashes, licenses, generated headers, docs, and remaining source-generator shims.

Validation

  • All generator and generated-code tests pass.
  • Workspace builds from a clean checkout with Rust only.
  • No owned generated API is missing and no .NET/Roslyn dependency appears in release artifacts.

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 Complete the codegen milestone with coverage, reproducibility, and consumer-build gates. ## Deliverables - Regenerate all packet/visual/tree/skeleton/attention/genepool outputs in a temporary directory and fail on diff. - Compare generated Rust API coverage against the authoritative public catalog. - Audit inputs, hashes, licenses, generated headers, docs, and remaining source-generator shims. ## Validation - All generator and generated-code tests pass. - Workspace builds from a clean checkout with Rust only. - No owned generated API is missing and no .NET/Roslyn dependency appears in release artifacts. ## 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:19 +00:00
hugo added the enhancement label 2026-08-08 08:18:19 +00:00
Author
Owner

Implemented and pushed in commit 167f469 (Complete native codegen milestone gate).

Implementation:

  • Added an isolated generate-to path and a completion gate that byte-compares all seven checked-in outputs, validates all six generator records and eight pinned inputs/hashes/licenses/headers/docs, regenerates API mappings/shims in memory, and audits clean release artifacts for managed-runtime dependencies and markers.
  • Implemented golden-reference-compatible native Rust PacketToOSD/PacketFromOSD and block ToOSD/FromOSD behavior across all 483 packets, plus the reflection-free OSD packet factory.
  • Corrected mutating OSD API receivers, regenerated the public API ledger/shims/compile fixture, documented the gate, and wired it into the ubuntu-latest Gitea workflow.
  • Added focused Rust tests for unsigned little-endian LLSD values, missing fields, UTF-8 byte fields, fixed/variable blocks, and factory dispatch.

Review and verification:

  • Completion gate: 7 byte-identical outputs, 6 generators, 8 inputs, 16,504 native packet members, 2,776 packet OSD members, and 557 release artifacts scanned.
  • All 483 generated packet types passed wire and OSD all-field round trips.
  • Codegen tests: 12 passed; packet OSD tests: 4 passed; packet wire tests: 6 passed; wire compatibility tests: 54 passed.
  • Visual/foliage/avatar catalog and skeleton semantic suites passed.
  • Authoritative API mapping/shim/coverage checks and standalone API compile fixture passed.
  • cargo build --workspace --release --locked passed using Rust only.
  • Clippy passed with warnings denied for the generator and generated libremetaverse targets.

Requirement review found no missing or failure-only API among the 16,504 source-generator-owned packet/block members and no .NET/Roslyn dependency or marker in the release artifacts.

Implemented and pushed in commit 167f469 (Complete native codegen milestone gate). Implementation: - Added an isolated generate-to path and a completion gate that byte-compares all seven checked-in outputs, validates all six generator records and eight pinned inputs/hashes/licenses/headers/docs, regenerates API mappings/shims in memory, and audits clean release artifacts for managed-runtime dependencies and markers. - Implemented golden-reference-compatible native Rust PacketToOSD/PacketFromOSD and block ToOSD/FromOSD behavior across all 483 packets, plus the reflection-free OSD packet factory. - Corrected mutating OSD API receivers, regenerated the public API ledger/shims/compile fixture, documented the gate, and wired it into the ubuntu-latest Gitea workflow. - Added focused Rust tests for unsigned little-endian LLSD values, missing fields, UTF-8 byte fields, fixed/variable blocks, and factory dispatch. Review and verification: - Completion gate: 7 byte-identical outputs, 6 generators, 8 inputs, 16,504 native packet members, 2,776 packet OSD members, and 557 release artifacts scanned. - All 483 generated packet types passed wire and OSD all-field round trips. - Codegen tests: 12 passed; packet OSD tests: 4 passed; packet wire tests: 6 passed; wire compatibility tests: 54 passed. - Visual/foliage/avatar catalog and skeleton semantic suites passed. - Authoritative API mapping/shim/coverage checks and standalone API compile fixture passed. - cargo build --workspace --release --locked passed using Rust only. - Clippy passed with warnings denied for the generator and generated libremetaverse targets. Requirement review found no missing or failure-only API among the 16,504 source-generator-owned packet/block members and no .NET/Roslyn dependency or marker in the release artifacts.
hugo closed this issue 2026-08-09 10:07:04 +00:00
Sign in to join this conversation.