Translate all OSD, Binary LLSD, Notation LLSD, XML LLSD, JSON LLSD, and Protobuf tests with exact data and assertions.
Deliverables
Preserve raw byte vectors, Unicode, numbers, dates, UUIDs, URIs, binary values, nesting, map/array order assumptions, malformed inputs, and expected errors.
Port cross-format and formatted-output assertions without normalizing away differences.
Retain fixture encodings and hashes.
Validation
All owned tests compile against public StructuredData signatures.
No C# process executes to satisfy a Rust test.
Failures identify unimplemented OSD members rather than fixture or parser setup mistakes.
Prerequisite
Milestone 02 must provide the complete callable public API shim. Keep all production behavior standardized as unimplemented.
Project constraints
Translate the original test semantics exactly; do not weaken assertions, tolerances, inputs, errors, ordering, or interaction expectations.
Tests must exercise the mapped Rust API and must never call LibreMetaverse/.NET as their implementation.
Expected C# exceptions map to specific Rust error variants; an unimplemented panic must remain a failure.
Do not implement production behavior during this milestone. Update parity metadata and handover status with the change.
## Objective
Translate all OSD, Binary LLSD, Notation LLSD, XML LLSD, JSON LLSD, and Protobuf tests with exact data and assertions.
## Deliverables
- Preserve raw byte vectors, Unicode, numbers, dates, UUIDs, URIs, binary values, nesting, map/array order assumptions, malformed inputs, and expected errors.
- Port cross-format and formatted-output assertions without normalizing away differences.
- Retain fixture encodings and hashes.
## Validation
- All owned tests compile against public StructuredData signatures.
- No C# process executes to satisfy a Rust test.
- Failures identify unimplemented OSD members rather than fixture or parser setup mistakes.
## Prerequisite
Milestone 02 must provide the complete callable public API shim. Keep all production behavior standardized as unimplemented.
## Project constraints
- Translate the original test semantics exactly; do not weaken assertions, tolerances, inputs, errors, ordering, or interaction expectations.
- Tests must exercise the mapped Rust API and must never call LibreMetaverse/.NET as their implementation.
- Expected C# exceptions map to specific Rust error variants; an unimplemented panic must remain a failure.
- Do not implement production behavior during this milestone. Update parity metadata and handover status with the change.
hugo
added this to the 03 - Full semantic test translation milestone 2026-08-08 08:13:45 +00:00
Completed the full pinned StructuredData NUnit slice: 78/78 cases across Binary LLSD (26), Notation LLSD (24), XML LLSD (15), Protobuf (12), and TypeTests.LLSDTerseParsing (1). The Rust suite preserves raw binary/XML/notation fixtures, Unicode (including four-byte characters and the pinned replacement characters), numeric/date/UUID/URI/binary values, nesting, map-order expectations, the upstream assertion quirks, protobuf auto-detection, and formatted notation behavior. Source fixture provenance is pinned with SHA-256 hashes. The pinned checkout contains no separate JSON NUnit case and none of the 78 owned cases declares an expected exception. Production shims remain standardized as unimplemented and no .NET process is used by Rust tests.
Parity now reports 95 translated/reviewed and 1,194 pending, with all 78 issue-owned cases translated, current, and non-drifted. Controlled execution verified all 78 fail only at mapped unimplemented members (75 StructuredData members; three UUID serialization cases reach their exact UUID-constructor prerequisite first), never in fixture setup or the pending harness.
Implemented in b73721d (pushed to main).
Completed the full pinned StructuredData NUnit slice: 78/78 cases across Binary LLSD (26), Notation LLSD (24), XML LLSD (15), Protobuf (12), and TypeTests.LLSDTerseParsing (1). The Rust suite preserves raw binary/XML/notation fixtures, Unicode (including four-byte characters and the pinned replacement characters), numeric/date/UUID/URI/binary values, nesting, map-order expectations, the upstream assertion quirks, protobuf auto-detection, and formatted notation behavior. Source fixture provenance is pinned with SHA-256 hashes. The pinned checkout contains no separate JSON NUnit case and none of the 78 owned cases declares an expected exception. Production shims remain standardized as unimplemented and no .NET process is used by Rust tests.
Parity now reports 95 translated/reviewed and 1,194 pending, with all 78 issue-owned cases translated, current, and non-drifted. Controlled execution verified all 78 fail only at mapped unimplemented members (75 StructuredData members; three UUID serialization cases reach their exact UUID-constructor prerequisite first), never in fixture setup or the pending harness.
Verified: cargo fmt --all -- --check; generate_rust_mapping --check; generate_api_shims --check; check_api_coverage; generate_surface --check; check_test_parity; Python tool unit tests; cargo check --workspace --all-targets; locked downstream api-compile check; cargo test --workspace --no-run; cargo clippy --workspace --all-targets --all-features -- -D warnings; cargo doc --workspace --no-deps.
Implemented in e656a4f (Translate StructuredData tests).
Translated all 78 owned NUnit invocations into explicit Rust tests:
26 Binary LLSD
24 Notation LLSD
12 Protobuf
15 XML LLSD
TypeTests.LLSDTerseParsing
Every #[test] body directly calls the mapped public OSDParser API. There is no format dispatch, source-string execution, generated pending test, assert_reviewed_case, .NET process, or production behavior implementation. Raw byte fixtures, Unicode (including four-byte characters), integer/real edge cases, dates, UUIDs, URIs, binary values, nested containers, formatted notation, map-order assumptions, and upstream assertion quirks are preserved. The five pinned upstream fixture hashes are recorded in the test source and verified against LibreMetaverse 2aa70bb68513b39795da5d13c88f31b86e85a3ba.
Parity moved from 17 to 95 translated cases: pending=1194, translated=95, drifted=0, unreviewed=1194.
Local gates passed:
cargo fmt --all -- --check
mapping/shim generation checks
API coverage
surface regeneration check
parity check
Python tool tests
cargo check --workspace --all-targets
locked downstream API compile
cargo test --workspace --no-run
clippy with -D warnings
cargo doc --workspace --no-deps
Controlled runtime verification:
all non-translation workspace tests pass
all compatibility shim targets outside translated suites pass
#15 isolated suite: exactly 78/78 expected failures, each at a mapped NotImplemented OSD/OSDParser/UUID member
prior #14 suite remains exactly 17/17 expected NotImplemented failures
The inactive Gitea workflow was removed separately in b4dd8ad; all commands it contained were run locally and passed.
Implemented in e656a4f (Translate StructuredData tests).
Translated all 78 owned NUnit invocations into explicit Rust tests:
- 26 Binary LLSD
- 24 Notation LLSD
- 12 Protobuf
- 15 XML LLSD
- TypeTests.LLSDTerseParsing
Every #[test] body directly calls the mapped public OSDParser API. There is no format dispatch, source-string execution, generated pending test, assert_reviewed_case, .NET process, or production behavior implementation. Raw byte fixtures, Unicode (including four-byte characters), integer/real edge cases, dates, UUIDs, URIs, binary values, nested containers, formatted notation, map-order assumptions, and upstream assertion quirks are preserved. The five pinned upstream fixture hashes are recorded in the test source and verified against LibreMetaverse 2aa70bb68513b39795da5d13c88f31b86e85a3ba.
Parity moved from 17 to 95 translated cases: pending=1194, translated=95, drifted=0, unreviewed=1194.
Local gates passed:
- cargo fmt --all -- --check
- mapping/shim generation checks
- API coverage
- surface regeneration check
- parity check
- Python tool tests
- cargo check --workspace --all-targets
- locked downstream API compile
- cargo test --workspace --no-run
- clippy with -D warnings
- cargo doc --workspace --no-deps
Controlled runtime verification:
- all non-translation workspace tests pass
- all compatibility shim targets outside translated suites pass
- #15 isolated suite: exactly 78/78 expected failures, each at a mapped NotImplemented OSD/OSDParser/UUID member
- prior #14 suite remains exactly 17/17 expected NotImplemented failures
The inactive Gitea workflow was removed separately in b4dd8ad; all commands it contained were run locally and passed.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Objective
Translate all OSD, Binary LLSD, Notation LLSD, XML LLSD, JSON LLSD, and Protobuf tests with exact data and assertions.
Deliverables
Validation
Prerequisite
Milestone 02 must provide the complete callable public API shim. Keep all production behavior standardized as unimplemented.
Project constraints
Implemented in
b73721d(pushed to main).Completed the full pinned StructuredData NUnit slice: 78/78 cases across Binary LLSD (26), Notation LLSD (24), XML LLSD (15), Protobuf (12), and TypeTests.LLSDTerseParsing (1). The Rust suite preserves raw binary/XML/notation fixtures, Unicode (including four-byte characters and the pinned replacement characters), numeric/date/UUID/URI/binary values, nesting, map-order expectations, the upstream assertion quirks, protobuf auto-detection, and formatted notation behavior. Source fixture provenance is pinned with SHA-256 hashes. The pinned checkout contains no separate JSON NUnit case and none of the 78 owned cases declares an expected exception. Production shims remain standardized as unimplemented and no .NET process is used by Rust tests.
Parity now reports 95 translated/reviewed and 1,194 pending, with all 78 issue-owned cases translated, current, and non-drifted. Controlled execution verified all 78 fail only at mapped unimplemented members (75 StructuredData members; three UUID serialization cases reach their exact UUID-constructor prerequisite first), never in fixture setup or the pending harness.
Verified: cargo fmt --all -- --check; generate_rust_mapping --check; generate_api_shims --check; check_api_coverage; generate_surface --check; check_test_parity; Python tool unit tests; cargo check --workspace --all-targets; locked downstream api-compile check; cargo test --workspace --no-run; cargo clippy --workspace --all-targets --all-features -- -D warnings; cargo doc --workspace --no-deps.
Implemented in
e656a4f(Translate StructuredData tests).Translated all 78 owned NUnit invocations into explicit Rust tests:
Every #[test] body directly calls the mapped public OSDParser API. There is no format dispatch, source-string execution, generated pending test, assert_reviewed_case, .NET process, or production behavior implementation. Raw byte fixtures, Unicode (including four-byte characters), integer/real edge cases, dates, UUIDs, URIs, binary values, nested containers, formatted notation, map-order assumptions, and upstream assertion quirks are preserved. The five pinned upstream fixture hashes are recorded in the test source and verified against LibreMetaverse 2aa70bb68513b39795da5d13c88f31b86e85a3ba.
Parity moved from 17 to 95 translated cases: pending=1194, translated=95, drifted=0, unreviewed=1194.
Local gates passed:
Controlled runtime verification:
The inactive Gitea workflow was removed separately in b4dd8ad; all commands it contained were run locally and passed.