Patch 5.0.7 - Indicator Diagnostics, Placement Rules Warning

Release Date: May 5, 2026 Version: 5.0.7 Type: Maintenance / Indicator Diagnostics / Placement Rules Release


Highlights

  • Indicator diagnostics no longer cause false validation failuresPlacementReport.is_successful() now correctly returns true when validation passes.
  • TileCheckRule.get_failing_indicators() base implementation fixed — Returns empty array instead of checking stale indicator.valid state. Concrete rules (WithinTilemapBoundsRule, CollisionsCheckRule) override correctly.
  • Placement rule documentation hardened — Added explicit warning about validate_placement() vs get_runtime_issues() confusion.

Bug Fixes

Indicator Visuals

  • Fixed TileCheckRule.get_failing_indicators() using stale state — The base implementation was checking indicator.valid (set last frame) instead of returning an empty array. Concrete rules override this method to perform actual validation. Base class now returns empty array as documented behavior.

  • Fixed IndicatorSetupReport diagnostics causing false validation failures — When a custom rule passes validation (RuleResult.build(self, [])), the diagnostic messages from IndicatorSetupReport no longer cause PlacementReport.is_successful() to return false.

Placement Rules

  • TileCheckRule base class documentation clarified — The base get_failing_indicators() now explicitly documents that concrete rules must override it to perform actual validation.

New Tests

Placement Rules

  • TileCheckRule base class behavior test — Added test confirming base get_failing_indicators() returns empty array.

  • ignore_base_rules behavior contract tests — Comprehensive unit tests verifying ignore_base_rules=true with empty placeable rules passes validation.

  • Custom rule validation patterns test — Added regression test covering proper validate_placement() vs get_runtime_issues() separation.


Documentation

  • Placement rule documentation warning — Updated placement-rules.md guide with “Common Mistake: Using get_runtime_issues() Instead of validate_placement()” section explaining the two methods serve different purposes.

  • Targeting collision flags documentation — Updated targeting-flow guide with explicit collide_with_areas and collide_with_bodies requirements for TargetingShapeCast2D.


Status

  • Complete — Ready for release.