Skip to content

feat: UE<->X3D round-trip harness (v0.3.0) - #19

Merged
JosephOIbrahim merged 2 commits into
masterfrom
feat/x3d-bridge
Jul 7, 2026
Merged

feat: UE<->X3D round-trip harness (v0.3.0)#19
JosephOIbrahim merged 2 commits into
masterfrom
feat/x3d-bridge

Conversation

@JosephOIbrahim

Copy link
Copy Markdown
Owner

UE ↔ X3D round-trip harness

A new, self-contained x3d_bridge/ package: a lossless UE↔X3D serialization harness whose single defended invariant is deserialize(serialize(level)) == level, with a validation boundary that rejects malformed edits on paper — before the live editor is ever touched.

What's in it

  • Coordinate crux — one orthonormal basis B (det −1) for UE (Z-up, LH, cm) ↔ X3D (Y-up, RH, m). B⁻¹ = Bᵀ, so the round trip is exact by construction; picking the right B is calibration, not correctness.
  • Closed grammar — a fixed X3D node set + serialize/deserialize (flat, world-space, DEF/USE material dedup); UE specifics ride in Metadata*.
  • Validate boundary — out-of-grammar nodes, dangling USE, NaN/∞, wrong arity, non-X3D root all die here.
  • Apply seam — diffs two scenes into typed ops (spawn · transform · material · reparent) that emit ue_execute_python.
  • Preview — the same X3D drops into a browser via X_ITE.

Honest status

  • 55 tests — round-trip identity, the validation battery, apply-op sequences, and forward-pinned coordinate correctness. 635 total (was 580).
  • ✅ Basis B independently re-derived and confirmed three ways.
  • B is analytic — not yet calibrated against a live editor's glTF export (the round trip is basis-agnostic, so this is fidelity-only, never correctness).
  • ⏳ A library today — not yet exposed as MCP tools.

Full changelog: https://github.com/JosephOIbrahim/UnrealEngine_Bridge/blob/master/CHANGELOG.md

Joseph Ibrahim and others added 2 commits July 7, 2026 18:36
New self-contained x3d_bridge/ package: a lossless UE<->X3D serialization
harness whose single defended invariant is
deserialize(serialize(level)) == level, with a validation boundary that
rejects malformed edits on paper before the live editor is touched.

- coordinates: the crux -- one orthonormal basis B (det -1) for UE
  (Z-up/LH/cm) <-> X3D (Y-up/RH/m); quat<->matrix<->axis-angle; a
  basis_from_axis_images calibration primitive. Round trip is exact by
  construction (B^-1 == B^T).
- grammar: a closed X3D node set + serialize/deserialize (flat, world-space,
  DEF/USE material dedup); UE specifics ride in Metadata*.
- validate: the paper boundary -- grammar, DEF/USE, numeric arity,
  root-is-X3D, finiteness.
- loop: a five-stage headless loop; diffs scenes into typed apply ops that
  emit ue_execute_python (mock-asserted).
- preview: the same X3D in a browser via X_ITE.
- tests/test_x3d_bridge.py: 55 tests -- round-trip, validation battery,
  apply-op sequence, forward-pinned coordinate correctness. ruff-clean.

B is analytic and triple-confirmed but not yet live-calibrated (round trip is
basis-agnostic, so calibration is fidelity-only, never correctness); the
harness is a library, not yet exposed as MCP tools.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Bump ue_mcp/__version__.py to 0.3.0 (single version source; the tag must
match it) and add the CHANGELOG entry. 635 tests total (was 580).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jul 7, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@JosephOIbrahim, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 26 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 4d1c5908-0b8e-4837-9ac3-5c3673518874

📥 Commits

Reviewing files that changed from the base of the PR and between f4d2e72 and 82b6d25.

📒 Files selected for processing (11)
  • CHANGELOG.md
  • README.md
  • pyproject.toml
  • tests/test_x3d_bridge.py
  • ue_mcp/__version__.py
  • x3d_bridge/__init__.py
  • x3d_bridge/coordinates.py
  • x3d_bridge/grammar.py
  • x3d_bridge/loop.py
  • x3d_bridge/preview.py
  • x3d_bridge/validate.py
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/x3d-bridge

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@JosephOIbrahim
JosephOIbrahim merged commit b4f0e56 into master Jul 7, 2026
3 checks passed
@JosephOIbrahim
JosephOIbrahim deleted the feat/x3d-bridge branch July 7, 2026 23:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant