Translate wire semantics tests

This commit is contained in:
2026-08-08 18:00:11 +02:00
parent e656a4f6d2
commit de6e611ef0
32 changed files with 3488 additions and 1683 deletions

View File

@@ -60,7 +60,8 @@ The current workspace is a structural baseline, not a working client:
members with real fields/constants/enum values and standardized failing
bodies;
- all 1,289 real NUnit `[Test]`/`[TestCase]` invocations have stable catalog
entries; pending cases do not generate executable placeholder tests;
entries; 145 are translated, four benchmarks are reviewed, and 1,140 remain
pending without executable placeholder tests;
- all nine sample/tool projects have compiling Rust binary targets;
- the 128 TestClient command source files are retained as a command inventory.
@@ -75,8 +76,9 @@ gate is complete; semantic test translation is the next stage.**
The avatar-facing slice preserves the C# agent, movement/camera, appearance and
outfit-policy, inventory/AIS/store, asset/cache, avatar, and animesh concepts.
Long-running mapped calls retain an explicit cross-platform cancellation token
and return the shared `NotImplemented { csharp_member }` error; events return a
typed subscription guard so callback lifetime is visible to Rust callers.
and return the shared `Error::NotImplemented(NotImplemented { csharp_member })`
error; events return a typed subscription guard so callback lifetime is visible
to Rust callers.
The world-facing slice preserves the C# object, parcel, terrain, grid,
environment, estate, directory, friend, group, sound, interest-list,
@@ -276,7 +278,7 @@ Each mapped Rust item must actually compile and be callable:
untyped placeholder.
The body is the only part allowed to be fake. Fallible Rust APIs return a shared
typed `NotImplemented { csharp_member }` error. Infallible constructors,
typed `Error::NotImplemented(NotImplemented { csharp_member })` error. Infallible constructors,
accessors, operators and trait methods call a shared `unimplemented_api!`
placeholder that panics with the stable C# member ID. Constants and enum values
must have their real values. Never return plausible defaults such as `false`,
@@ -286,7 +288,8 @@ for the wrong reason.
The failure contract lives in `libremetaverse-types` and every API crate exposes
it as `crate::Error`:
- synchronous fallible members return `Err(NotImplemented::new(CSHARP_ID))`;
- synchronous fallible members return
`Err(Error::NotImplemented(NotImplemented::new(CSHARP_ID)))`;
async members do the same when first polled and start no work first;
- a stream-producing operation returns the typed error before exposing a
stream; an intrinsically infallible stream factory uses `unimplemented_api!`
@@ -330,8 +333,9 @@ and semantic-review status. Reviewed tests are identified by `parity-case`
markers in hand-written Rust files, so regeneration records unresolved cases
without creating fake executable tests and fails on body drift. The checked-in
audit reports pending, translated, ignored-live, benchmark, drifted, missing,
duplicate, stale, and unreviewed cases; the initial handover contains 1,289
unreviewed cases.
duplicate, stale, and unreviewed cases. The initial handover contained 1,289
unreviewed cases; the current ledger contains 145 translated, four
benchmark-reviewed, and 1,140 pending cases.
The Rust tests must call the public APIs rather than internal replacements.
Where the C# tests call internal members through friend-assembly access, record