API gate: downstream compile fixture and 100% coverage audit #12

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

Objective

Prove that the complete mapped Rust API is present and callable before semantic test translation starts.

Deliverables

  • Generate or maintain a downstream compile fixture that names and invokes every mapped public item.
  • Add a workspace coverage command comparing api/public-api.json, Rust mapping records, and exported Rust items.
  • Report exclusions explicitly with justification; target zero unexplained exclusions.
  • Add CI gates for check, docs, compile fixture, mapping completeness, and forbidden erased shim patterns.

Validation

  • Coverage is 100% across all 13 library assemblies including generated APIs.
  • cargo check --workspace --all-targets and cargo doc --workspace --no-deps pass.
  • A clean machine can build the fixture without .NET or LibreMetaverse assemblies.
  • No functional production behavior has been introduced.

Prerequisite

Stage 0 project setup is complete. Do not implement production behavior in this milestone.

Project constraints

  • Implement the public surface in native Rust only; no CLR hosting, FFI bridge, subprocess, RPC, or C# fallback.
  • Preserve recognizable API concepts while applying the documented Rust mapping rules.
  • Do not weaken parity requirements or add functional behavior outside this issue.
  • Update the API mapping, coverage report, public docs, and relevant handover status in the same change.
## Objective Prove that the complete mapped Rust API is present and callable before semantic test translation starts. ## Deliverables - Generate or maintain a downstream compile fixture that names and invokes every mapped public item. - Add a workspace coverage command comparing `api/public-api.json`, Rust mapping records, and exported Rust items. - Report exclusions explicitly with justification; target zero unexplained exclusions. - Add CI gates for check, docs, compile fixture, mapping completeness, and forbidden erased shim patterns. ## Validation - Coverage is 100% across all 13 library assemblies including generated APIs. - `cargo check --workspace --all-targets` and `cargo doc --workspace --no-deps` pass. - A clean machine can build the fixture without .NET or LibreMetaverse assemblies. - No functional production behavior has been introduced. ## Prerequisite Stage 0 project setup is complete. Do not implement production behavior in this milestone. ## Project constraints - Implement the public surface in native Rust only; no CLR hosting, FFI bridge, subprocess, RPC, or C# fallback. - Preserve recognizable API concepts while applying the documented Rust mapping rules. - Do not weaken parity requirements or add functional behavior outside this issue. - Update the API mapping, coverage report, public docs, and relevant handover status in the same change.
hugo added this to the 02 - Full public API signature shim milestone 2026-08-08 08:11:55 +00:00
hugo added the enhancement label 2026-08-08 08:11:55 +00:00
Author
Owner

Implemented in commit c8a9539. Added a standalone downstream Rust workspace whose generated fixture names all 3,066 catalog types and calls or accesses all 30,789 mapped public members across all 13 assemblies. Added tools/check_api_coverage.py and API-COVERAGE.md to compare catalog IDs, type/member mapping rows, exported generated items, and fixture probes; the audit reports zero public exclusions, 142 explicitly cataloged external signature boundaries, two required support traits, all 80 deliberate delegate APM replacements compiled, and zero forbidden erased shim patterns. The fixture exposed and this commit fixed two real mapping defects: the static Logger.OnLogMessage event no longer has an instance receiver, and the catalog LSL Error type is exported as LslError instead of being hidden by the shared shim Error alias. Added Gitea CI gates for deterministic mapping/shim generation, coverage, formatting, workspace check, standalone fixture check, test compilation, Clippy, and docs. Verified with a fresh temporary Cargo target requiring no .NET or LibreMetaverse assemblies, cargo check --workspace --all-targets, cargo test --workspace --no-run, cargo clippy --workspace --all-targets --all-features -- -D warnings, cargo doc --workspace --no-deps, all generator/coverage checks, git diff --check, and 15 isolated compatibility regression tests. No production behavior was introduced; generated bodies still pass the standardized failure-only audit.

Implemented in commit c8a9539. Added a standalone downstream Rust workspace whose generated fixture names all 3,066 catalog types and calls or accesses all 30,789 mapped public members across all 13 assemblies. Added tools/check_api_coverage.py and API-COVERAGE.md to compare catalog IDs, type/member mapping rows, exported generated items, and fixture probes; the audit reports zero public exclusions, 142 explicitly cataloged external signature boundaries, two required support traits, all 80 deliberate delegate APM replacements compiled, and zero forbidden erased shim patterns. The fixture exposed and this commit fixed two real mapping defects: the static Logger.OnLogMessage event no longer has an instance receiver, and the catalog LSL Error type is exported as LslError instead of being hidden by the shared shim Error alias. Added Gitea CI gates for deterministic mapping/shim generation, coverage, formatting, workspace check, standalone fixture check, test compilation, Clippy, and docs. Verified with a fresh temporary Cargo target requiring no .NET or LibreMetaverse assemblies, cargo check --workspace --all-targets, cargo test --workspace --no-run, cargo clippy --workspace --all-targets --all-features -- -D warnings, cargo doc --workspace --no-deps, all generator/coverage checks, git diff --check, and 15 isolated compatibility regression tests. No production behavior was introduced; generated bodies still pass the standardized failure-only audit.
hugo closed this issue 2026-08-08 11:12:22 +00:00
Sign in to join this conversation.