Problem
G-002 (check_g002_signature_completeness) requires every block to have both inputs and outputs. By design, BoundaryAction blocks have forward_in = () — no inputs. G-002 correctly flags them, but this is a known false positive.
Current workaround: all DSL tests use include_gds_checks=False or filter out G-002 findings on BoundaryAction blocks.
Proposal
Add a built-in exemption in G-002 for blocks with role="BoundaryAction" (or check isinstance on the block type). This eliminates the need for every DSL to work around the same known false positive.
Alternative
Keep as-is and document clearly. The current approach is "correct" in that G-002 reports a structural property, and the caller decides if it matters.