ef rule_inspect(rules_dir, rule_name):
    """Show inheritance tree for a rule"""
    try:
        rule_file = find_rule_file(rules_dir, rule_name)
        with open(rule_file) as f:
            rule = json.load(f)
        resolved = _rule_resolve_internal(rules_dir, rule_name)

        # Output format: section|key|value
        # Own rules
        for ip in rule.get('allow_ips', []):
            print(f"own|allow_ip|{ip}")
        for p in rule.get('allow_ports', []):
            print(f"own|allow_port|{p}")
        for ip in rule.get('block_ips', []):
            print(f"own|block_ip|{ip}")
        for p in rule.get('block_ports', []):
            print(f"own|block_port|{p}")
        if rule.get('dns_redirect'):
            print(f"own|dns_redirect|true")

        # Inherited rules per base
        for base_name in rule.get('extends', []):
            base = _rule_resolve_internal(rules_dir, base_name)
            for ip in base.get('allow_ips', []):
                print(f"inherited:{base_name}|allow_ip|{ip}")
            for p in base.get('allow_ports', []):
                print(f"inherited:{base_name}|allow_port|{p}")
            for ip in base.get('block_ips', []):
                print(f"inherited:{base_name}|block_ip|{ip}")
            for p in base.get('block_ports', []):
                print(f"inherited:{base_name}|block_port|{p}")
            if base.get('dns_redirect'):
                print(f"inherited:{base_name}|dns_redirect|true")

        # Resolved summary
        for ip in resolved.get('allow_ips', []):
            print(f"resolved|allow_ip|{ip}")
        for p in resolved.get('allow_ports', []):
            print(f"resolved|allow_port|{p}")
        for ip in resolved.get('block_ips', []):
            print(f"resolved|block_ip|{ip}")
        for p in resolved.get('block_ports', []):
            print(f"resolved|block_port|{p}")
        if resolved.get('dns_redirect'):
            print(f"resolved|dns_redirect|true")
    except Exception as e:
        print(f"Error: {e}", file=sys.stderr)
        sys.exit(1)