What problem does it solve? When a ledger event inherits a security attribute (visibility, division, party, floor) from a referenced event, an unresolved reference can silently fall through to the kind's open default, leaking data into wider lenses than the original event allowed. This Skill defines the rule and fix pattern to make such misses hard errors instead of silent widening. ## Core Features & Use Cases - Defect diagnosis: Identifies the truthiness-guard anti-pattern (&& value) in visibility resolution that skips inheritance on undefined and falls through to open defaults like counterparty. - Fail-closed fix pattern: Provides the corrected code shape — explicit === undefined checks that throw or resolve to the most-restrictive rank (internal), plus append-path rejection when corrects_event_id resolves to zero rows. - Use Case: While reviewing resolveVisibility for invoice.corrected netting, an engineer finds a correction stamped wider than the invoice it nets; this Skill supplies the rule, the fix, and the test recipe to close the leak and replace the blessing test. ## Quick Start Review the invoice.corrected visibility resolution in packages/ledger/src/visibility.ts and apply the fail-closed rule so unresolved corrects_event_id references throw instead of defaulting to counterparty.