Skip to content

feat(opy): support getHorizontalFacingAngle receiver member - #138

Merged
Teakowa merged 4 commits into
mainfrom
codex/issue-130-horizontal-facing-angle
Aug 31, 2026
Merged

feat(opy): support getHorizontalFacingAngle receiver member#138
Teakowa merged 4 commits into
mainfrom
codex/issue-130-horizontal-facing-angle

Conversation

@e54-bot

@e54-bot e54-bot commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Add the canonical getHorizontalFacingAngle receiver-member mapping to the OPY manifest.
  • Add pinned-oracle probe, canonical-WIR equivalence coverage, and source-attributed arity regression coverage.
  • Advance the overpy-client-to-server documented gap to horizontalAngleOfDirection.

Verification

  • cargo fmt --all -- --check
  • cargo test --workspace --all-targets --all-features
  • cargo clippy --workspace --all-targets --all-features -- -D warnings
  • 41 pinned oracle probes, 60-fixture compiler runner, and compatibility Python tests

Fixes #130

@Teakowa Teakowa left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Major — crates/opy-rs/src/manifest/data/manifest.json

The new member lowers directly to the Workshop getHorizontalFacingAngle catalog value. #130 requires preserving OverPy's degree-to-radian wrapper semantics (radians(Horizontal Facing Angle Of(player))). The new oracle test uses ... == 0, which cannot distinguish radians from raw degrees and therefore masks this regression. Preserve the conversion and add a non-zero/value-capturing regression that proves it.

Major — compatibility evidence

#130 requires both overpy-client-to-server and 6v6-adjustments to remain represented in validation/provenance. This PR adds only the client-to-server-derived regression; 6v6-adjustments still stops earlier at the #defineMember residual and no 6v6-derived evidence is added. Add 6v6-linked regression/provenance, or resolve the Issue/AC mismatch before closing #130.

@e54-bot

e54-bot commented Aug 31, 2026

Copy link
Copy Markdown
Contributor Author

Addressed the review feedback in 2839baf:\n\n- The synthetic/probe regression now captures getHorizontalFacingAngle() into a global variable, and the Rust test asserts the captured canonical WIR value and receiver.\n- Added a 6v6-adjustments-linked minimized regression with provenance to heroes/juno/orbital_ray.opy:20-24.\n- The 6v6 regression and the pinned OverPy oracle emit the same direct canonical value.\n\nI did not add an implicit radians wrapper because the current pinned evidence contradicts that requirement: OverPy 9.7.10 describes this member as returning degrees, the full clientToServer oracle emits Horizontal Facing Angle Of directly (including its numeric comparisons), and the workshop-rs catalog has no radians conversion value. Issue #130 also defines the contract as Player -> Number and requires canonical-WIR equivalence. If the intended contract is a radians wrapper, please point to the updated oracle/catalog contract or a source example; otherwise the direct lowering is the evidence-backed behavior.

@Teakowa Teakowa left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@Teakowa
Teakowa merged commit 82ea15d into main Aug 31, 2026
5 checks passed
@Teakowa
Teakowa deleted the codex/issue-130-horizontal-facing-angle branch August 31, 2026 10:35
This was referenced Aug 31, 2026
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.

Support getHorizontalFacingAngle receiver member

2 participants