{
  "ml": {
    "v": "7",
    "eng": "2.4.0",
    "lvl": -1,
    "conf": 0,
    "mods": [
      {
        "cls": 0,
        "raw": 0.00006195903,
        "rte": "az",
        "prob": 0.00006195903
      }
    ],
    "prob": 0.00006195903,
    "skip": [
      {
        "rte": "az/gem",
        "why": "unavailable"
      },
      {
        "rte": "az/gem",
        "why": "unavailable"
      }
    ],
    "files": [
      {
        "id": 0,
        "lvl": -1,
        "conf": 0,
        "prob": 0.00006195902824401855,
        "type": "gem"
      },
      {
        "id": 1,
        "lvl": -1,
        "conf": 0,
        "prob": 0.00001643101313675288,
        "type": "tar.gz"
      },
      {
        "id": 2,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000014126300811767578,
        "type": "ruby"
      },
      {
        "id": 3,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000014921029105607886,
        "type": "gz"
      },
      {
        "id": 4,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000007102886684151599,
        "type": "ruby"
      },
      {
        "id": 5,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000008344650268554688,
        "type": "ruby"
      },
      {
        "id": 6,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000007838010787963867,
        "type": "ruby"
      },
      {
        "id": 7,
        "lvl": -1,
        "conf": 0,
        "prob": 0.0000080565614553052,
        "type": "ruby"
      },
      {
        "id": 8,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000010013580322265625,
        "type": "ruby"
      },
      {
        "id": 9,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000008722146048967261,
        "type": "ruby"
      },
      {
        "id": 10,
        "lvl": -1,
        "conf": 0,
        "prob": 0.0000072618327067175414,
        "type": "ruby"
      },
      {
        "id": 11,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000008374452590942383,
        "type": "ruby"
      },
      {
        "id": 12,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000009795029654924292,
        "type": "ruby"
      },
      {
        "id": 13,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000008324782356794458,
        "type": "ruby"
      },
      {
        "id": 14,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000009119510650634766,
        "type": "ruby"
      },
      {
        "id": 15,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000008692343726579566,
        "type": "ruby"
      },
      {
        "id": 16,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000007877747520979028,
        "type": "ruby"
      },
      {
        "id": 17,
        "lvl": -1,
        "conf": 0,
        "prob": 0.00000762939453125,
        "type": "ruby"
      },
      {
        "id": 18,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000007490316875191638,
        "type": "ruby"
      },
      {
        "id": 19,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000008285045623779297,
        "type": "ruby"
      },
      {
        "id": 20,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000020931163817294873,
        "type": "markdown"
      },
      {
        "id": 21,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000008761882781982422,
        "type": "text"
      },
      {
        "id": 22,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000013341506019060034,
        "type": "markdown"
      },
      {
        "id": 23,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000014702479347761255,
        "type": "gz"
      },
      {
        "id": 24,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000013659398064191919,
        "type": "pkg_info"
      },
      {
        "id": 25,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000012834866538469214,
        "type": "registry"
      },
      {
        "id": 26,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000012834866538469214,
        "type": "registry"
      },
      {
        "id": 27,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000019609928131103516,
        "type": "registry"
      }
    ],
    "version": "v18.18",
    "analyzed_at": "2026-07-28T14:29:30Z"
  },
  "path": "route_translator-16.1.0.gem",
  "raw": {
    "files": [
      {
        "id": 0,
        "ctx": [
          {
            "b": "zdN/$wmoN*e[YFg00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fFCgmg=d2?fFCgmfFCfXfFCgmfFCfXfFCgmfFCf",
            "n": [
              {
                "c": 2,
                "d": "Rubygem internal archive structure file",
                "i": "metadata/package/files/name::rubygem-archive",
                "o": 0,
                "z": 27,
                "cf": 0.9800000190734863
              }
            ],
            "ln": 0
          }
        ],
        "mol": "O(As)H(Db)",
        "sha": "5515eb99aabd65e71e6bb78ee1f003444550f59e6edc49270f1c7cb8fb70d5ae",
        "path": "route_translator-16.1.0.gem",
        "refs": [
          {
            "to": "pkg:gem/actionpack",
            "off": 0,
            "kind": "dependency"
          },
          {
            "to": "pkg:gem/activesupport",
            "off": 0,
            "kind": "dependency"
          }
        ],
        "risk": 2,
        "size": 18944,
        "type": "gem",
        "facts": {
          "metrics": {
            "gem": {
              "dependency_count": 2.0,
              "runtime_dependency_count": 2.0,
              "development_dependency_count": 0.0
            },
            "file": {
              "size": 18944.0,
              "entropy": 7.27,
              "size_bytes": 18944.0
            },
            "binary": {
              "overall_entropy": 7.27,
              "peak_region_bytes": 14336.0,
              "peak_region_entropy": 7.83
            },
            "archive": {
              "file_count": 3.0,
              "member_count": 3.0,
              "script_count": 0.0,
              "directory_count": 0.0,
              "executable_count": 0.0,
              "hidden_file_count": 0.0,
              "total_uncompressed": 15517.0,
              "max_filename_length": 17.0,
              "rtlo_filename_count": 0.0,
              "format.regular_count": 3.0,
              "nested_archive_count": 3.0,
              "path_traversal_count": 0.0,
              "symlink_escape_count": 0.0,
              "security.setgid_count": 0.0,
              "security.setuid_count": 0.0,
              "security.sticky_count": 0.0,
              "double_extension_count": 0.0,
              "security.symlink_count": 0.0,
              "unicode_filename_count": 0.0,
              "homoglyph_filename_count": 0.0,
              "timing.mtime_unique_count": 1.0,
              "misplaced_executable_count": 0.0,
              "timing.mtime_spread_seconds": 0.0,
              "security.world_writable_count": 0.0
            }
          }
        },
        "ident": {
          "name": {
            "value": "route_translator",
            "source": "gem.name",
            "verified": false
          },
          "urls": [
            {
              "url": "https://github.com/enriclluelles/route_translator",
              "kind": "homepage",
              "source": "gem.homepage"
            }
          ],
          "trust": "unsigned",
          "authors": [
            {
              "name": "Geremia Taglialatela",
              "role": "author",
              "source": "gem.authors"
            },
            {
              "name": "Enric Lluelles",
              "role": "author",
              "source": "gem.authors"
            },
            {
              "name": "Raul Murciano",
              "role": "author",
              "source": "gem.authors"
            }
          ],
          "version": {
            "value": "16.1.0",
            "source": "gem.version",
            "verified": false
          }
        },
        "traits": [
          {
            "id": "micro-behaviors/data/source/dynamic/reflect::ruby-send-call",
            "conf": 0.8999999761581421,
            "crit": 3,
            "desc": "Ruby dynamically invokes a method with send",
            "from": [
              {
                "file": 2
              }
            ]
          },
          {
            "id": "objectives/anti-static/obfuscation/eval/scripting::define-method",
            "atk": "T1027",
            "mbc": "B0032",
            "conf": 0.8999999761581421,
            "crit": 3,
            "desc": "Dynamic method definition",
            "from": [
              {
                "file": 2
              }
            ]
          }
        ]
      },
      {
        "depth": 1,
        "facts": {
          "metrics": {
            "file": {
              "size": 14399.0,
              "entropy": 7.98,
              "size_bytes": 14399.0
            },
            "parse": {
              "error_count": 1.0
            },
            "binary": {
              "overall_entropy": 7.98,
              "peak_region_bytes": 14336.0,
              "peak_region_entropy": 7.83
            }
          }
        },
        "id": 1,
        "mol": "O(As)H(Db)",
        "path": "route_translator-16.1.0.gem!!data.tar.gz",
        "pid": 0,
        "risk": 2,
        "sha": "4aed689835518bb310417891d40b8f815eebd187d2963c1de9a9bd85d11ef092",
        "size": 14399,
        "traits": [
          {
            "id": "micro-behaviors/data/source/dynamic/reflect::ruby-send-call",
            "conf": 0.8999999761581421,
            "crit": 3,
            "desc": "Ruby dynamically invokes a method with send",
            "from": [
              {
                "file": 2
              }
            ]
          },
          {
            "id": "objectives/anti-static/obfuscation/eval/scripting::define-method",
            "atk": "T1027",
            "mbc": "B0032",
            "conf": 0.8999999761581421,
            "crit": 3,
            "desc": "Dynamic method definition",
            "from": [
              {
                "file": 2
              }
            ]
          }
        ],
        "type": "tar.gz"
      },
      {
        "ctx": [
          {
            "b": "boQPsz*C#juVQsfx(mM\u003cy?X05A:-=BaARTDwEn=Yz!a0bwGT(?B-.g]A:-\u003cby*?B7ATA{izeS%cy?j.*A:-\u003cby*?B7ATA{iarUJtwozZ1ax0c2By!0Oy\u0026A%aA%:3jarR^Hr7f.+uQEaTmpeOYpFjRejS(4+tl",
            "n": [
              {
                "c": 2,
                "d": "Source file has low overall entropy",
                "i": "metadata/file/metrics::low-overall-entropy-source",
                "o": 0,
                "z": 29,
                "cf": 0.9
              }
            ],
            "ln": 0,
            "col": 1,
            "line": 1
          },
          {
            "b": "y?l%=B-7Yhx(v\u003e@3lQDlarR^KavfKGaAITkzE^f@wft]hB-.gqxK#10wPz\u0026mw]zYjwmYvYB.(dxy\u0026r/(y?j-2e[V^zarR^HarR)KarTlgibQu+z!0i(wGTbUi+h!earR^HarR)KarUSmz/xJ7uVoB}xDO(\u003caAg[gAbo8)wmYa!vrue\u0026arR^HarR)",
            "n": [
              {
                "c": 2,
                "d": "Contains common English function words",
                "i": "metadata/file/profile/language::lang-english--atom-5",
                "o": 282,
                "z": 3,
                "cf": 0.8
              }
            ],
            "ln": 234,
            "col": 11,
            "line": 10
          },
          {
            "b": "arR^HashkoAa9\u003c4aA.Zvt}PX%v}V#}zY\u003cBGB.kl1CZG\u0026varR^HarR^Haztt5AaK5%v@DmbvqfQ\u003cAV^H/zEEx[wm6v}B-.h4v@Dg1wN/*@z/dgGwO#3biWb!}B9h8bx)t5kxK#10wPz\u003c0zeS%cy?j!t3lQDlarR^HarR!AwP}G{wO=r%A:JY)zdK?MauyX\u003eDV9.huV6p?wQN]gDVKsww[=Hra{[V1arR^HarR^Haztt5AaK5%v@DmbvqfQ\u003cAXpZaB7Gl1uTCixwmYv!zE)f(wPRQ7wgO\u003cvwP}G{wO=r%A:JY)zdLdswn-PrdQ^vgB9[rqarR^HarR^HarR!luVP^@wm5W(rb#z+B8kobz/NEJz/{ekuV6p?wNx4/AWUvpxlbQDz!@@\u003ezEEx[efG1Rw[C+4efG1By?taEasZ/uxlbHearR^HarR^HarUlkwb",
            "n": [
              {
                "c": 3,
                "d": "Ruby dynamically invokes a method with send",
                "i": "micro-behaviors/data/source/dynamic/reflect::ruby-send-call",
                "o": 557,
                "z": 4,
                "cf": 0.9
              },
              {
                "c": 3,
                "d": "Ruby defines methods dynamically",
                "i": "micro-behaviors/data/source/language::ruby-dynamic-method-definition",
                "o": 704,
                "z": 14,
                "cf": 0.8
              }
            ],
            "ln": 493,
            "col": 4,
            "line": 18
          }
        ],
        "depth": 2,
        "facts": {
          "imp": [
            [
              "",
              "freeze"
            ],
            [
              "",
              "each"
            ],
            [
              "",
              "send"
            ],
            [
              "",
              "send__"
            ],
            [
              "",
              "send__"
            ],
            [
              "",
              "route_name_for"
            ],
            [
              "",
              "fetch"
            ],
            [
              "",
              "each"
            ],
            [
              "",
              "on_load"
            ],
            [
              "",
              "include"
            ]
          ],
          "mbr": [
            "ActiveSupport.on_load",
            "ENV.fetch",
            "TEST_CASE_HOOKS.each",
            "Translator.route_name_for",
            "helper_container.__send__",
            "named_route_collection.send"
          ],
          "tgt": [
            "__send__",
            "each",
            "fetch",
            "freeze",
            "include",
            "on_load",
            "route_name_for",
            "send"
          ],
          "funcs": [
            [
              "add",
              448
            ]
          ],
          "metrics": {
            "ast": {
              "op.eq": 1.0,
              "max_depth": 20.0,
              "op.concat": 8.0,
              "bind_count": 3.0,
              "call_count": 10.0,
              "node_count": 195.0,
              "member_count": 6.0,
              "op_density.eq": 0.01,
              "identifier_count": 23.0,
              "member_depth_max": 2.0,
              "op_density.concat": 0.04,
              "string_literal_count": 4.0
            },
            "file": {
              "size": 1122.0,
              "entropy": 4.49,
              "size_bytes": 1122.0
            },
            "text": {
              "digit_ratio": 0.01,
              "space_count": 278.0,
              "total_lines": 37.0,
              "char_entropy": 4.49,
              "unique_chars": 58.0,
              "string_density": 0.11,
              "avg_line_length": 29.32,
              "max_line_length": 85.0,
              "empty_line_ratio": 0.16,
              "last_line_length": 3.0,
              "whitespace_ratio": 0.28,
              "most_common_ratio": 0.09,
              "identifier_density": 1.05,
              "line_length_stddev": 25.45,
              "normalized_string_count": 0.66,
              "repeated_char_sequences": 11.0,
              "most_common_char_is_null": 0.0,
              "max_inline_whitespace_run": 3.0,
              "most_common_char_codepoint": 101.0,
              "normalized_unique_identifiers": 4.42
            },
            "binds": {
              "count": 3.0
            },
            "calls": {
              "count": 10.0
            },
            "binary": {
              "overall_entropy": 4.49,
              "peak_region_bytes": 1024.0,
              "peak_region_entropy": 4.59
            },
            "source": {
              "class_count": 3.0,
              "function_count": 1.0
            },
            "members": {
              "count": 6.0
            },
            "strings": {
              "total": 4.0,
              "avg_length": 29.5,
              "max_length": 93.0,
              "avg_entropy": 3.01,
              "total_bytes": 118.0,
              "entropy_stddev": 0.9
            },
            "comments": {
              "chars": 183.0,
              "lines": 6.0,
              "total": 6.0,
              "to_code_ratio": 0.19
            },
            "functions": {
              "count": 4.0
            },
            "identifiers": {
              "count": 23.0,
              "total": 39.0,
              "avg_length": 9.83,
              "max_length": 22.0,
              "min_length": 3.0,
              "avg_entropy": 2.66,
              "reuse_ratio": 0.59,
              "unique_count": 23.0,
              "length_stddev": 5.16,
              "high_entropy_count": 2.0,
              "high_entropy_ratio": 0.09,
              "all_lowercase_ratio": 0.74,
              "all_uppercase_ratio": 0.09,
              "double_underscore_count": 1.0,
              "underscore_prefix_count": 1.0
            }
          }
        },
        "id": 2,
        "mol": "H(Db₂)",
        "path": "data.tar.gz!!data.tar.gz!lib/route_translator/translator/route_helpers.rb",
        "risk": 1,
        "sha": "02a297648471f2324a62a65826074e3e6922502c301b8a5e365e0b8330f6453b",
        "size": 1122,
        "traits": [
          {
            "id": "micro-behaviors/data/source/language::ruby-dynamic-method-definition",
            "conf": 0.8,
            "crit": 3,
            "desc": "Ruby defines methods dynamically",
            "spans": [
              [
                704,
                14
              ]
            ]
          },
          {
            "id": "micro-behaviors/data/source/dynamic/reflect::ruby-send-call",
            "conf": 0.9,
            "crit": 3,
            "desc": "Ruby dynamically invokes a method with send",
            "spans": [
              [
                557,
                4
              ]
            ]
          }
        ],
        "type": "ruby"
      },
      {
        "id": 3,
        "sha": "a77d4b5d8aae5b494bc8eae2a35804468642f16eee02fc89ed4c1378a14c105e",
        "path": "route_translator-16.1.0.gem!!checksums.yaml.gz",
        "size": 297,
        "type": "gz",
        "depth": 1
      },
      {
        "ctx": [
          {
            "b": "boQPsz*C#juVQsfx(mM\u003cy?X05A:-=BaARTDwEn=Yz!a0bwGT(?B-.g]A:-\u003cby*?B7ATA{irZ/[+nL-87jS(abhzcZpfEEiszE:7",
            "n": [
              {
                "c": 2,
                "d": "Ruby package version filename",
                "i": "metadata/build/package::ruby-version-file",
                "o": 0,
                "z": 10,
                "cf": 0.8999999761581421
              }
            ],
            "ln": 0,
            "col": 1,
            "line": 1
          }
        ],
        "depth": 2,
        "facts": {
          "metrics": {
            "ast": {
              "max_depth": 5.0,
              "bind_count": 1.0,
              "call_count": 0.0,
              "node_count": 14.0,
              "identifier_count": 2.0,
              "string_literal_count": 1.0
            },
            "file": {
              "size": 79.0,
              "entropy": 4.74,
              "size_bytes": 79.0
            },
            "text": {
              "digit_ratio": 0.07,
              "space_count": 7.0,
              "total_lines": 5.0,
              "char_entropy": 4.74,
              "unique_chars": 34.0,
              "string_density": 0.2,
              "avg_line_length": 14.8,
              "max_line_length": 29.0,
              "empty_line_ratio": 0.2,
              "last_line_length": 3.0,
              "whitespace_ratio": 0.15,
              "most_common_ratio": 0.08,
              "identifier_density": 0.4,
              "line_length_stddev": 11.3,
              "normalized_string_count": 0.45,
              "most_common_char_is_null": 0.0,
              "max_inline_whitespace_run": 1.0,
              "most_common_char_codepoint": 114.0,
              "normalized_unique_identifiers": 0.86
            },
            "binds": {
              "count": 1.0
            },
            "binary": {
              "overall_entropy": 4.74,
              "peak_region_bytes": 79.0,
              "peak_region_entropy": 4.74
            },
            "source": {
              "class_count": 1.0
            },
            "strings": {
              "total": 1.0,
              "avg_length": 6.0,
              "max_length": 6.0,
              "avg_entropy": 1.92,
              "total_bytes": 6.0
            },
            "comments": {
              "chars": 28.0,
              "lines": 1.0,
              "total": 1.0,
              "to_code_ratio": 0.25
            },
            "functions": {
              "count": 1.0
            },
            "identifiers": {
              "count": 2.0,
              "total": 2.0,
              "avg_length": 11.0,
              "max_length": 15.0,
              "min_length": 7.0,
              "avg_entropy": 3.09,
              "reuse_ratio": 1.0,
              "unique_count": 2.0,
              "length_stddev": 4.0,
              "all_uppercase_ratio": 0.5
            }
          }
        },
        "id": 4,
        "path": "data.tar.gz!!data.tar.gz!lib/route_translator/version.rb",
        "risk": 1,
        "sha": "037ea76ff257eed19282d01c40730baa32badc0d24ec5b1a7eb891592620a156",
        "size": 79,
        "traits": [
          {
            "id": "metadata/file/metrics::file-under-12-lines",
            "conf": 0.800000011920929,
            "crit": 1,
            "desc": "Very short file (under 12 lines)",
            "spans": [
              [
                0,
                23
              ]
            ]
          },
          {
            "id": "metadata/build/package::ruby-version-file",
            "conf": 0.8999999761581421,
            "crit": 2,
            "desc": "Ruby package version filename",
            "spans": [
              [
                0,
                10
              ]
            ]
          },
          {
            "id": "metadata/file/metrics::low-overall-entropy-source",
            "conf": 0.8999999761581421,
            "crit": 2,
            "desc": "Source file has low overall entropy",
            "spans": [
              [
                0,
                29
              ]
            ]
          }
        ],
        "type": "ruby"
      },
      {
        "ctx": [
          {
            "b": "boQPsz*C#juVQsfx(mM\u003cy?X05A:-=BaARTDwEn=Yz!a0bwGT(?B-.g]A:-\u003cby*?B7ATA{izeS%cy?j.*A:-\u003cby*?B7ATA{iarUJtwozZ1aw=G*xBk\u003e8arR^HzeS%cy?j./wOk\u003c\u003ezGDjdarR^HarR!py*?yaao",
            "n": [
              {
                "c": 2,
                "d": "Source file has low overall entropy",
                "i": "metadata/file/metrics::low-overall-entropy-source",
                "o": 0,
                "z": 29,
                "cf": 0.8999999761581421
              }
            ],
            "ln": 0,
            "col": 1,
            "line": 1
          }
        ],
        "depth": 2,
        "facts": {
          "imp": [
            [
              "",
              "disable_fallback"
            ],
            [
              "",
              "config"
            ],
            [
              "",
              "to_s"
            ],
            [
              "",
              "to_s"
            ],
            [
              "",
              "default_locale"
            ],
            [
              "",
              "match"
            ],
            [
              "",
              "present?"
            ],
            [
              "",
              "proc"
            ],
            [
              "",
              "is_a?"
            ],
            [
              "",
              "t!"
            ],
            [
              "",
              "fallback_options"
            ],
            [
              "",
              "translate_resource"
            ],
            [
              "",
              "to_s"
            ],
            [
              "",
              "escape"
            ],
            [
              "",
              "empty?"
            ],
            [
              "",
              "start_with?"
            ],
            [
              "",
              "split"
            ],
            [
              "",
              "translate"
            ],
            [
              "",
              "start_with?"
            ],
            [
              "",
              "include?"
            ],
            [
              "",
              "slice!"
            ],
            [
              "",
              "translatable_segment"
            ],
            [
              "",
              "translate_string"
            ],
            [
              "",
              "to_s"
            ]
          ],
          "mbr": [
            "I18n.default_locale",
            "I18n.default_locale.to_s",
            "I18n.t",
            "I18n.t!",
            "I18n.t.is_a?",
            "RouteTranslator.config",
            "RouteTranslator.config.disable_fallback",
            "TRANSLATABLE_SEGMENT.match",
            "appended_part.to_s",
            "locale.to_s",
            "matches.present?",
            "segment.empty?",
            "segment.include?",
            "segment.slice!",
            "segment.split",
            "segment.start_with?"
          ],
          "tgt": [
            "config",
            "default_locale",
            "disable_fallback",
            "empty?",
            "escape",
            "fallback_options",
            "include?",
            "is_a?",
            "match",
            "present?",
            "proc",
            "slice!",
            "split",
            "start_with?",
            "t",
            "t!",
            "to_s",
            "translatable_segment",
            "translate",
            "translate_resource",
            "translate_string"
          ],
          "metrics": {
            "ast": {
              "op.ne": 1.0,
              "op.add": 1.0,
              "op.lor": 2.0,
              "op.land": 1.0,
              "max_depth": 20.0,
              "op.concat": 20.0,
              "bind_count": 6.0,
              "call_count": 26.0,
              "node_count": 441.0,
              "member_count": 16.0,
              "op_density.ne": 0.0,
              "op_density.add": 0.0,
              "op_density.lor": 0.0,
              "op_density.land": 0.0,
              "identifier_count": 44.0,
              "member_depth_max": 3.0,
              "op_density.concat": 0.05,
              "string_literal_count": 6.0,
              "string_concat_chain_max_length": 2.0
            },
            "file": {
              "size": 2265.0,
              "entropy": 4.36,
              "size_bytes": 2265.0
            },
            "text": {
              "digit_ratio": 0.01,
              "space_count": 659.0,
              "total_lines": 68.0,
              "char_entropy": 4.36,
              "unique_chars": 69.0,
              "string_density": 0.09,
              "avg_line_length": 32.31,
              "max_line_length": 97.0,
              "empty_line_ratio": 0.19,
              "last_line_length": 3.0,
              "whitespace_ratio": 0.32,
              "most_common_ratio": 0.08,
              "identifier_density": 1.59,
              "line_length_stddev": 28.38,
              "normalized_string_count": 0.73,
              "repeated_char_sequences": 34.0,
              "most_common_char_is_null": 0.0,
              "max_inline_whitespace_run": 4.0,
              "most_common_char_codepoint": 101.0,
              "suspicious_identifier_ratio": 0.02,
              "normalized_unique_identifiers": 7.23
            },
            "binds": {
              "count": 6.0
            },
            "calls": {
              "count": 26.0
            },
            "binary": {
              "overall_entropy": 4.36,
              "peak_region_bytes": 2265.0,
              "peak_region_entropy": 4.4
            },
            "source": {
              "class_count": 4.0,
              "function_count": 5.0
            },
            "members": {
              "count": 16.0
            },
            "strings": {
              "total": 6.0,
              "avg_length": 9.83,
              "max_length": 54.0,
              "avg_entropy": 0.74,
              "total_bytes": 59.0,
              "entropy_stddev": 1.65
            },
            "comments": {
              "chars": 383.0,
              "lines": 7.0,
              "total": 8.0,
              "to_code_ratio": 0.11,
              "empty_comments": 1.0
            },
            "functions": {
              "count": 9.0
            },
            "identifiers": {
              "count": 44.0,
              "total": 108.0,
              "avg_length": 9.18,
              "max_length": 20.0,
              "min_length": 1.0,
              "avg_entropy": 2.62,
              "reuse_ratio": 0.41,
              "unique_count": 44.0,
              "length_stddev": 5.31,
              "has_digit_ratio": 0.02,
              "sequential_names": 1.0,
              "single_char_count": 1.0,
              "single_char_ratio": 0.02,
              "high_entropy_count": 2.0,
              "high_entropy_ratio": 0.05,
              "all_lowercase_ratio": 0.64,
              "all_uppercase_ratio": 0.07
            }
          }
        },
        "id": 5,
        "path": "data.tar.gz!!data.tar.gz!lib/route_translator/translator/path/segment.rb",
        "risk": 1,
        "sha": "ad44d95c7bc5d3bebe666c9f6e13a216c6221839734608e11df242075a0a5a95",
        "size": 2265,
        "traits": [
          {
            "id": "metadata/file/metrics::script-peak-region-over-1k",
            "conf": 0.800000011920929,
            "crit": 1,
            "desc": "Peak-entropy source region exceeds 1KB",
            "spans": [
              [
                0,
                34
              ]
            ]
          },
          {
            "id": "metadata/file/metrics::file-has-30-plus-lines",
            "conf": 0.8999999761581421,
            "crit": 1,
            "desc": "File has 30 or more lines",
            "spans": [
              [
                0,
                24
              ]
            ]
          },
          {
            "id": "metadata/file/metrics::low-overall-entropy-source",
            "conf": 0.8999999761581421,
            "crit": 2,
            "desc": "Source file has low overall entropy",
            "spans": [
              [
                0,
                29
              ]
            ]
          }
        ],
        "type": "ruby"
      },
      {
        "ctx": [
          {
            "b": "boQPsz*C#juVQsfx(mM\u003cy?X05A:-=BaARTDwEn=+wPq\u003cbA+eP#wO+^%x)a5gcVAHoxFjBrxkIi$Bsdz5zeS%cy?j.!z/{ekrb#z+B8kobz/Mgcaz(4cB.\u003eRirb#z+B8kobz/MgcarR!zz!a0bwGT/TBz817arR^Hay/j@B8@D^jrOYRy?s1%arR^HarR!CA+PY9By+^^arR^HarR^HwmYu}wnc8",
            "ln": 0,
            "col": 1,
            "line": 1
          },
          {
            "b": "arR^Haz(4cB.\u003eR@w{503BzkVh3jm)#arR^HboP%avqZd5vru74ayMyivruf9vqYP#vpS[\u0026aARpdaz+$avqGG$Ab]J4x)qlqarR^HarUiaw/#hovqZd5vru6eAa9\u003c4efF+Ev{%g+efG1zz/xnp3lQDlarR^Haz$+muVoB}xDPCXAa9\u003c4e[x9z3lQDlarR^Hazbt9",
            "ln": 1066,
            "col": 2,
            "line": 39
          },
          {
            "b": "vqZd5vru6eAa\u003co2B7D)By\u0026r/(y?kduB7occwHO:Ie]2rszyu\u003e+cN/xBarR^HarR!rzE:7%arR^HarR!GA:-\u003cby*?A%wm6y?xkIi$BAo6PwOL^^BrJ4Vi+reEBA{813jm)#arQ",
            "ln": 1393,
            "col": 51,
            "line": 46
          }
        ],
        "depth": 2,
        "facts": {
          "imp": [
            [
              "",
              "require_relative"
            ],
            [
              "",
              "hide_locale"
            ],
            [
              "",
              "config"
            ],
            [
              "",
              "default_locale?"
            ],
            [
              "",
              "config_requires_locale?"
            ],
            [
              "",
              "config"
            ],
            [
              "",
              "present?"
            ],
            [
              "",
              "force_locale"
            ],
            [
              "",
              "generate_unlocalized_routes"
            ],
            [
              "",
              "generate_unnamed_unlocalized_routes"
            ],
            [
              "",
              "to_sym"
            ],
            [
              "",
              "to_sym"
            ],
            [
              "",
              "default_locale"
            ],
            [
              "",
              "include?"
            ],
            [
              "",
              "split"
            ],
            [
              "",
              "locale_param_key"
            ],
            [
              "",
              "locale_segment_proc"
            ],
            [
              "",
              "config"
            ],
            [
              "",
              "locale_segment_proc"
            ],
            [
              "",
              "config"
            ],
            [
              "",
              "call"
            ],
            [
              "",
              "to_proc"
            ],
            [
              "",
              "downcase"
            ],
            [
              "",
              "to_s"
            ],
            [
              "",
              "dup"
            ],
            [
              "",
              "slice!"
            ],
            [
              "",
              "map"
            ],
            [
              "",
              "split"
            ],
            [
              "",
              "join"
            ],
            [
              "",
              "map"
            ],
            [
              "",
              "split"
            ],
            [
              "",
              "translate"
            ],
            [
              "",
              "reject!"
            ],
            [
              "",
              "display_locale?"
            ],
            [
              "",
              "locale_param_present?"
            ],
            [
              "",
              "unshift"
            ],
            [
              "",
              "locale_segment"
            ],
            [
              "",
              "join"
            ],
            [
              "",
              "gsub"
            ],
            [
              "",
              "path/segment"
            ]
          ],
          "mbr": [
            "I18n.default_locale",
            "I18n.default_locale.to_sym",
            "RouteTranslator.config",
            "RouteTranslator.config.hide_locale",
            "RouteTranslator.config.locale_segment_proc",
            "RouteTranslator.locale_param_key",
            "Segment.translate",
            "config.force_locale",
            "config.generate_unlocalized_routes",
            "config.generate_unnamed_unlocalized_routes",
            "locale.to_s",
            "locale.to_s.downcase",
            "locale.to_sym",
            "locale_segment_proc.to_proc",
            "locale_segment_proc.to_proc.call",
            "new_path.slice!",
            "new_path.split",
            "new_path.split.map",
            "path.dup",
            "path.split",
            "path.split.include?",
            "seg.split",
            "seg.split.map",
            "seg.split.map.join",
            "translated_segments.join",
            "translated_segments.reject!",
            "translated_segments.unshift"
          ],
          "tgt": [
            "call",
            "config",
            "config_requires_locale?",
            "default_locale",
            "default_locale?",
            "display_locale?",
            "downcase",
            "dup",
            "force_locale",
            "generate_unlocalized_routes",
            "generate_unnamed_unlocalized_routes",
            "gsub",
            "hide_locale",
            "include?",
            "join",
            "locale_param_key",
            "locale_param_present?",
            "locale_segment",
            "locale_segment_proc",
            "map",
            "present?",
            "reject!",
            "require_relative",
            "slice!",
            "split",
            "to_proc",
            "to_s",
            "to_sym",
            "translate",
            "unshift"
          ],
          "funcs": [
            [
              "display_locale?",
              168
            ],
            [
              "config_requires_locale?",
              320
            ],
            [
              "default_locale?",
              536
            ],
            [
              "locale_param_present?",
              639
            ],
            [
              "locale_segment",
              766
            ],
            [
              "translate",
              1148
            ]
          ],
          "metrics": {
            "ast": {
              "op.eq": 1,
              "op.lor": 3,
              "op.land": 2,
              "op.lnot": 3,
              "max_depth": 19,
              "op.concat": 33,
              "call_count": 39,
              "node_count": 404,
              "member_count": 27,
              "op_density.eq": 0,
              "op_density.lor": 0.01,
              "op_density.land": 0,
              "op_density.lnot": 0.01,
              "member_depth_max": 4,
              "op_density.concat": 0.08
            },
            "file": {
              "size": 1805,
              "entropy": 4.48
            },
            "text": {
              "lines": 60,
              "top_char": 101,
              "max_ws_run": 1,
              "digit_ratio": 0,
              "space_count": 404,
              "char_entropy": 4.48,
              "unique_chars": 60,
              "top_char_null": 0,
              "string_density": 0.15,
              "top_char_ratio": 0.09,
              "avg_line_length": 29.08,
              "max_line_length": 124,
              "empty_line_ratio": 0.22,
              "last_line_length": 3,
              "whitespace_ratio": 0.26,
              "identifier_density": 1.6,
              "line_length_stddev": 29.13,
              "normalized_string_count": 1.16,
              "repeated_char_sequences": 13,
              "normalized_unique_identifiers": 7.79
            },
            "binds": {
              "count": 6
            },
            "binary": {
              "peak_region_bytes": 1805,
              "peak_region_entropy": 4.5
            },
            "source": {
              "class_count": 3,
              "function_count": 6
            },
            "imports": {
              "count": 1,
              "third_party_count": 1,
              "third_party_ratio": 1
            },
            "strings": {
              "bytes": 100,
              "count": 9,
              "avg_length": 11.11,
              "max_length": 45,
              "path_count": 1,
              "avg_entropy": 1.39,
              "entropy_stddev": 1.78
            },
            "comments": {
              "chars": 74,
              "count": 2,
              "lines": 2,
              "to_code_ratio": 0.03
            },
            "functions": {
              "count": 9
            },
            "identifiers": {
              "count": 96,
              "unique": 46,
              "avg_length": 10.61,
              "max_length": 35,
              "min_length": 3,
              "avg_entropy": 2.77,
              "reuse_ratio": 0.48,
              "length_stddev": 7.14,
              "has_digit_ratio": 0.02,
              "high_entropy_count": 7,
              "high_entropy_ratio": 0.15,
              "all_lowercase_ratio": 0.72
            }
          }
        },
        "id": 6,
        "mol": "H(Os)",
        "path": "data.tar.gz!!data.tar.gz!lib/route_translator/translator/path.rb",
        "risk": 1,
        "sha": "02c95fc9f6be78fe628f95157c9061e2c41fbea200bcd39298652e27901821e9",
        "size": 1805,
        "traits": [
          {
            "id": "micro-behaviors/os/module/load::ruby-require-relative",
            "conf": 0.9,
            "crit": 3,
            "desc": "Ruby loads a relative source module",
            "spans": [
              [
                31,
                16
              ]
            ]
          }
        ],
        "type": "ruby"
      },
      {
        "id": 7,
        "sha": "252e72785e41714837839ee58773400765a51590e6d4278de1f19552129c9023",
        "path": "data.tar.gz!!data.tar.gz!lib/route_translator/translator.rb",
        "risk": 1,
        "size": 3094,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 8,
        "sha": "00f6f50a3c1e92eddca1f58977b6a63404a7e76ebfcc9750b2f5a46d604b19e5",
        "path": "data.tar.gz!!data.tar.gz!lib/route_translator/route.rb",
        "risk": 1,
        "size": 688,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 9,
        "sha": "829c7fb6923417c46ef524ede686085af7ec44706599a9c3f2cfa27f5e4ec138",
        "path": "data.tar.gz!!data.tar.gz!lib/route_translator/host.rb",
        "risk": 1,
        "size": 796,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 10,
        "sha": "71c506c8caad630b05582258e145d2ec6048963a3cf79925e3eb6eafd00f09a1",
        "path": "data.tar.gz!!data.tar.gz!lib/route_translator/extensions/test_case.rb",
        "risk": 1,
        "size": 294,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 11,
        "sha": "1981742e15fa03f245575761de0ef397e223c70864d79cebacf25a84eae1f1bd",
        "path": "data.tar.gz!!data.tar.gz!lib/route_translator/extensions/route_set.rb",
        "risk": 1,
        "size": 2050,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 12,
        "sha": "d79d82acc4e53147b27df42cec3105e2ee4caf6741cf6ef10a41506a98f37592",
        "path": "data.tar.gz!!data.tar.gz!lib/route_translator/extensions/mapper.rb",
        "risk": 1,
        "size": 1707,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 13,
        "sha": "a73c44399cc48772732e1f0e7f7b4d8293fb34f1127d5c2bc97b388818025eea",
        "path": "data.tar.gz!!data.tar.gz!lib/route_translator/extensions/legacy/route_set.rb",
        "risk": 1,
        "size": 1994,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 14,
        "sha": "13084e23d9a384cfcb07517bc807d3bd4e9639a7ec7ee54ccfb6151834252b2c",
        "path": "data.tar.gz!!data.tar.gz!lib/route_translator/extensions/legacy/mapper.rb",
        "risk": 1,
        "size": 1765,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 15,
        "sha": "999de86f7a06e2838ac56789f55fcc6346f6dfbec1707a31ebcc636e24d4cc22",
        "path": "data.tar.gz!!data.tar.gz!lib/route_translator/extensions/action_controller.rb",
        "risk": 1,
        "size": 683,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 16,
        "sha": "c561b9b52e72c7744e2aa4446fb1f765b7824bc028d0c1da7e5761eed33a271b",
        "path": "data.tar.gz!!data.tar.gz!lib/route_translator/extensions.rb",
        "risk": 1,
        "size": 430,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 17,
        "sha": "1687f1240acca9ad778e45533660e6b9c2a4e6d4b4c25af9b633a6401397a58e",
        "path": "data.tar.gz!!data.tar.gz!lib/route_translator.rb",
        "risk": 1,
        "size": 2207,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 18,
        "sha": "c4859b5df45b7a941f3fa4c2963b16ab015197d3be17a895015a4cc85836a1cd",
        "path": "data.tar.gz!!data.tar.gz!lib/generators/route_translator/templates/config/initializers/route_translator.rb",
        "risk": 1,
        "size": 2118,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 19,
        "sha": "cf5bc623828ab701f07eb0d542f965eb126f4b4d0359375362707acbba65f4b7",
        "path": "data.tar.gz!!data.tar.gz!lib/generators/route_translator/install_generator.rb",
        "risk": 1,
        "size": 342,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 20,
        "sha": "22b496303b47abae52808391c51b8ffd93dc7e6be00ebce4b934560ca03cf365",
        "path": "data.tar.gz!!data.tar.gz!README.md",
        "risk": 1,
        "size": 20195,
        "type": "markdown",
        "depth": 2
      },
      {
        "id": 21,
        "sha": "9d32da68db0e42d9b94567dc0adff4dc075feed3410a97752a0afb05be7f2690",
        "path": "data.tar.gz!!data.tar.gz!LICENSE",
        "risk": 1,
        "size": 1228,
        "type": "text",
        "depth": 2
      },
      {
        "id": 22,
        "sha": "2528334cdbb307ea1345d548bcfb0300d8e718ddbadf646c39ea2b9ab7e1df27",
        "path": "data.tar.gz!!data.tar.gz!CHANGELOG.md",
        "risk": 1,
        "size": 11119,
        "type": "markdown",
        "depth": 2
      },
      {
        "id": 23,
        "sha": "23d51c2f3daa3a386392bb17635f909e39bc47b9eb99b05855e1b797d1526c78",
        "path": "route_translator-16.1.0.gem!!metadata.gz",
        "risk": 1,
        "size": 821,
        "type": "gz",
        "depth": 1
      },
      {
        "id": 24,
        "sha": "aeee7687cc8acaa4a06fa40f992ef50f9ee6715e4d1fb88aeff12937155c5cbc",
        "path": "metadata.gz!!metadata.gz!metadata",
        "risk": 1,
        "size": 2831,
        "type": "pkg_info",
        "depth": 2
      },
      {
        "id": 25,
        "sha": "c87e106797281a10abf2e8e48c5dd860a31a2100cafff04b33d13698af4bb481",
        "path": "actionpack@8.1.3.registry.json",
        "size": 979,
        "type": "registry",
        "depth": 1
      },
      {
        "id": 26,
        "sha": "b2d84364025342b94ec26f5f58509a37e62fef3031373f1577762504a2208caa",
        "path": "activesupport@8.1.3.registry.json",
        "size": 1022,
        "type": "registry",
        "depth": 1
      },
      {
        "id": 27,
        "mol": "Md",
        "sha": "166b720c7d80138643e02d9a244fc8cb209ba91ccae06647f3e125965e3e0d3e",
        "path": "route_translator@16.1.0.registry.json",
        "risk": 1,
        "size": 982,
        "type": "registry",
        "depth": 1
      }
    ],
    "omitted_files": 22,
    "v": "8"
  }
}