Skip to content

Add shared terrain interaction v2 validator#117

Merged
ogyrec-o merged 1 commit into
mainfrom
feat/issue-386-shared-terrain-interaction-v2-validator
May 26, 2026
Merged

Add shared terrain interaction v2 validator#117
ogyrec-o merged 1 commit into
mainfrom
feat/issue-386-shared-terrain-interaction-v2-validator

Conversation

@ogyrec-o

@ogyrec-o ogyrec-o commented May 26, 2026

Copy link
Copy Markdown
Member

Summary

Adds the shared Terrain Interaction Contract v2 validator to freven_block_api.

This makes the SDK the legal shared owner of terrain break/place validation semantics so engine and Vanilla can use one implementation without dependency inversion or duplicated validator math.

Why

frevenengine/freven-vanilla#75 blocked runtime v2 wiring because the validator lived in freven_client_engine. Vanilla must not depend on engine internals, and copying the validator into Vanilla would create a second authority implementation and risk divergent server validation semantics.

What changed

  • Adds freven_block_api::terrain_interaction.
  • Exposes:
    • validate_terrain_interaction_v2
    • TerrainInteractionValidationPolicyV2
    • TerrainInteractionValidationV2
    • TerrainInteractionAcceptedV2
    • TerrainInteractionWorldViewV2
    • TerrainInteractionRulesV2
    • TerrainInteractionCellV2
    • BlockWorldViewTerrainAdapter
  • Reuses existing SDK v2 vocabulary:
    • TerrainInteractionIntentV2
    • TerrainInteractionKindV2
    • TerrainInteractionRayV2
    • TerrainInteractionHitV2
    • TerrainPlaceIntentV2
    • TerrainInteractionRejectReasonV2
  • Adds deterministic tests for ray sanity, reach, first-solid traversal, face/contact validation, place support/cell validation, duplicate action/dependency checks, and client-ray-origin-not-authority.
  • Documents freven_block_api::terrain_interaction as the long-term shared validator owner.

Boundaries

  • no engine runtime changes
  • no Vanilla runtime changes
  • no Boot changes
  • no protocol/wire payload implementation
  • no client prediction as server truth
  • no block-center-only validation
  • no hidden v1 fallback

Validation

  • cargo +stable fmt --all -- --check
  • cargo +stable test --locked -p freven_block_api terrain_interaction
  • cargo +stable test --locked --workspace
  • cargo +stable clippy --locked --workspace --all-targets -- -D warnings
  • cargo +stable clippy --locked --workspace --all-targets --all-features -- -D warnings
  • git --no-pager diff --check

Related:

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