{
  "ml": {
    "v": "7",
    "eng": "2.2.0-beta.1",
    "lvl": -1,
    "conf": 0,
    "mods": [
      {
        "cls": 0,
        "raw": 0.023947725,
        "rte": "az",
        "prob": 0.023947725
      },
      {
        "cls": 0,
        "raw": 0.022733182,
        "rte": "az/gem",
        "prob": 0.022733182
      }
    ],
    "prob": 0.07052355,
    "files": [
      {
        "id": 0,
        "lvl": -1,
        "conf": 0,
        "prob": 0.07052355259656906,
        "type": "gem"
      },
      {
        "id": 1,
        "lvl": -1,
        "conf": 0,
        "prob": 0.007970820181071758,
        "type": "tar.gz"
      },
      {
        "id": 2,
        "lvl": -1,
        "conf": 0,
        "prob": 0.07052355259656906,
        "type": "ruby"
      },
      {
        "id": 3,
        "lvl": -1,
        "conf": 0,
        "prob": 0.07052355259656906,
        "type": "ruby"
      },
      {
        "id": 4,
        "lvl": -1,
        "conf": 0,
        "prob": 0.07052355259656906,
        "type": "ruby"
      },
      {
        "id": 5,
        "lvl": -1,
        "conf": 0,
        "prob": 0.07052355259656906,
        "type": "ruby"
      },
      {
        "id": 6,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000013252099051896948,
        "type": "ruby"
      },
      {
        "id": 7,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000014046828255231958,
        "type": "ruby"
      },
      {
        "id": 8,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000013699133887712378,
        "type": "ruby"
      },
      {
        "id": 9,
        "lvl": -1,
        "conf": 0,
        "prob": 0.00001541773417557124,
        "type": "ruby"
      },
      {
        "id": 10,
        "lvl": -1,
        "conf": 0,
        "prob": 0.07052355259656906,
        "type": "ruby"
      },
      {
        "id": 11,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000014503796592180151,
        "type": "ruby"
      },
      {
        "id": 12,
        "lvl": -1,
        "conf": 0,
        "prob": 0.00001473228167014895,
        "type": "ruby"
      },
      {
        "id": 13,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000014255444511945825,
        "type": "ruby"
      },
      {
        "id": 14,
        "lvl": -1,
        "conf": 0,
        "prob": 0.07052355259656906,
        "type": "ruby"
      },
      {
        "id": 15,
        "lvl": -1,
        "conf": 0,
        "prob": 0.07052355259656906,
        "type": "gz"
      },
      {
        "id": 16,
        "lvl": -1,
        "conf": 0,
        "prob": 0.07052355259656906,
        "type": "ruby"
      },
      {
        "id": 17,
        "lvl": -1,
        "conf": 0,
        "prob": 0.07052355259656906,
        "type": "ruby"
      },
      {
        "id": 18,
        "lvl": -1,
        "conf": 0,
        "prob": 0.07052355259656906,
        "type": "ruby"
      },
      {
        "id": 19,
        "lvl": -1,
        "conf": 0,
        "prob": 0.07052355259656906,
        "type": "ruby"
      },
      {
        "id": 20,
        "lvl": -1,
        "conf": 0,
        "prob": 0.07052355259656906,
        "type": "ruby"
      },
      {
        "id": 21,
        "lvl": -1,
        "conf": 0,
        "prob": 0.07052355259656906,
        "type": "ruby"
      },
      {
        "id": 22,
        "lvl": -1,
        "conf": 0,
        "prob": 0.07052355259656906,
        "type": "ruby"
      },
      {
        "id": 23,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000014265378013078589,
        "type": "ruby"
      },
      {
        "id": 24,
        "lvl": -1,
        "conf": 0,
        "prob": 0.07052355259656906,
        "type": "ruby"
      },
      {
        "id": 25,
        "lvl": -1,
        "conf": 0,
        "prob": 0.07052355259656906,
        "type": "ruby"
      },
      {
        "id": 26,
        "lvl": -1,
        "conf": 0,
        "prob": 0.07052355259656906,
        "type": "ruby"
      },
      {
        "id": 27,
        "lvl": -1,
        "conf": 0,
        "prob": 0.07052355259656906,
        "type": "ruby"
      },
      {
        "id": 28,
        "lvl": -1,
        "conf": 0,
        "prob": 0.07052355259656906,
        "type": "ruby"
      },
      {
        "id": 29,
        "lvl": -1,
        "conf": 0,
        "prob": 0.07052355259656906,
        "type": "ruby"
      },
      {
        "id": 30,
        "lvl": -1,
        "conf": 0,
        "prob": 0.07052355259656906,
        "type": "ruby"
      },
      {
        "id": 31,
        "lvl": -1,
        "conf": 0,
        "prob": 0.07052355259656906,
        "type": "ruby"
      },
      {
        "id": 32,
        "lvl": -1,
        "conf": 0,
        "prob": 0.07052355259656906,
        "type": "ruby"
      },
      {
        "id": 33,
        "lvl": -1,
        "conf": 0,
        "prob": 0.07052355259656906,
        "type": "ruby"
      },
      {
        "id": 34,
        "lvl": -1,
        "conf": 0,
        "prob": 0.07052355259656906,
        "type": "ruby"
      },
      {
        "id": 35,
        "lvl": -1,
        "conf": 0,
        "prob": 0.07052355259656906,
        "type": "ruby"
      },
      {
        "id": 36,
        "lvl": -1,
        "conf": 0,
        "prob": 0.07052355259656906,
        "type": "ruby"
      },
      {
        "id": 37,
        "lvl": -1,
        "conf": 0,
        "prob": 0.07052355259656906,
        "type": "ruby"
      },
      {
        "id": 38,
        "lvl": -1,
        "conf": 0,
        "prob": 0.07052355259656906,
        "type": "ruby"
      },
      {
        "id": 39,
        "lvl": -1,
        "conf": 0,
        "prob": 0.07052355259656906,
        "type": "ruby"
      },
      {
        "id": 40,
        "lvl": -1,
        "conf": 0,
        "prob": 0.07052355259656906,
        "type": "ruby"
      },
      {
        "id": 41,
        "lvl": -1,
        "conf": 0,
        "prob": 0.07052355259656906,
        "type": "ruby"
      },
      {
        "id": 42,
        "lvl": -1,
        "conf": 0,
        "prob": 0.07052355259656906,
        "type": "ruby"
      },
      {
        "id": 43,
        "lvl": -1,
        "conf": 0,
        "prob": 0.07052355259656906,
        "type": "ruby"
      },
      {
        "id": 44,
        "lvl": -1,
        "conf": 0,
        "prob": 0.07052355259656906,
        "type": "ruby"
      },
      {
        "id": 45,
        "lvl": -1,
        "conf": 0,
        "prob": 0.07052355259656906,
        "type": "ruby"
      },
      {
        "id": 46,
        "lvl": -1,
        "conf": 0,
        "prob": 0.07052355259656906,
        "type": "ruby"
      },
      {
        "id": 47,
        "lvl": -1,
        "conf": 0,
        "prob": 0.07052355259656906,
        "type": "ruby"
      },
      {
        "id": 48,
        "lvl": -1,
        "conf": 0,
        "prob": 0.07052355259656906,
        "type": "ruby"
      },
      {
        "id": 49,
        "lvl": -1,
        "conf": 0,
        "prob": 0.07052355259656906,
        "type": "ruby"
      },
      {
        "id": 50,
        "lvl": -1,
        "conf": 0,
        "prob": 0.07052355259656906,
        "type": "ruby"
      },
      {
        "id": 51,
        "lvl": -1,
        "conf": 0,
        "prob": 0.07052355259656906,
        "type": "gz"
      },
      {
        "id": 52,
        "lvl": -1,
        "conf": 0,
        "prob": 0.07052355259656906,
        "type": "pkg-info"
      }
    ],
    "version": "v18.18",
    "analyzed_at": "2026-06-28T23:33:06Z"
  },
  "path": "rivulet-rb-0.1.7.gem",
  "raw": {
    "files": [
      {
        "id": 0,
        "ctx": [
          {
            "b": "zdN/$wmoN*e[YFg000000000000000000000000000000000000000000000000000000000000000000000",
            "n": [
              {
                "c": 2,
                "d": "Archive contains multiple nested APKs",
                "i": "metadata/package/files/mobile-package::archive-nested-apk-count",
                "o": 0,
                "z": 35,
                "cf": 0.8999999761581421
              }
            ],
            "ln": 0
          }
        ],
        "mol": "O(Er)H(Os)",
        "sha": "1b33944d20597d6158158cc4309aeb7745a0dfccae855d100ea51fd0fd1fd77f",
        "path": "rivulet-rb-0.1.7.gem",
        "risk": 38,
        "size": 17408,
        "type": "gem",
        "facts": {
          "metrics": {
            "gem": {
              "dependency_count": 18.0,
              "runtime_dependency_count": 15.0,
              "development_dependency_count": 3.0
            },
            "file": {
              "size": 17408.0,
              "entropy": 7.28,
              "size_bytes": 17408.0
            },
            "binary": {
              "overall_entropy": 7.28,
              "peak_region_bytes": 12288.0,
              "peak_region_entropy": 7.84
            },
            "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": 14300.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": "rivulet-rb",
            "source": "gem.name",
            "verified": false
          },
          "trust": "unsigned",
          "authors": [
            {
              "name": "Vladimir Dombrovskiy \u003cvold@fastmail.com\u003e",
              "role": "author",
              "source": "gem.authors"
            }
          ],
          "version": {
            "value": "0.1.7",
            "source": "gem.version",
            "verified": false
          }
        },
        "traits": [
          {
            "id": "micro-behaviors/os/console/io::exit-command-check",
            "atk": "T1059",
            "conf": 0.6499999761581421,
            "crit": 3,
            "desc": "Ruby process exit call",
            "from": [
              {
                "file": 14
              }
            ]
          },
          {
            "id": "metadata/build/package::ruby-version-file",
            "conf": 0.8999999761581421,
            "crit": 2,
            "desc": "Ruby package version file basename",
            "from": [
              {
                "file": 16
              }
            ]
          },
          {
            "id": "objectives/evasion/indicator-removal/logs::ruby-file-write-empty",
            "atk": "T1070.002",
            "conf": 0.9200000166893005,
            "crit": 4,
            "desc": "Ruby overwrites files empty",
            "from": [
              {
                "file": 4
              }
            ]
          },
          {
            "id": "objectives/impact/destroy/keywords::delete-verb--delete",
            "conf": 0.8999999761581421,
            "crit": 1,
            "desc": "Destructive-action word: delete",
            "from": [
              {
                "file": 33
              }
            ]
          },
          {
            "id": "objectives/credential-access/theft/keywords::token",
            "conf": 0.30000001192092896,
            "crit": 1,
            "desc": "Credential-access vocabulary word: token",
            "from": [
              {
                "file": 23
              }
            ]
          }
        ]
      },
      {
        "depth": 1,
        "facts": {
          "metrics": {
            "file": {
              "size": 13043.0,
              "entropy": 7.97,
              "size_bytes": 13043.0
            },
            "parse": {
              "error_count": 1.0
            },
            "binary": {
              "overall_entropy": 7.97,
              "peak_region_bytes": 13043.0,
              "peak_region_entropy": 7.84
            }
          }
        },
        "id": 1,
        "mol": "O(Er)H(Os)",
        "path": "rivulet-rb-0.1.7.gem!!data.tar.gz",
        "risk": 38,
        "sha": "e4c3e4f11b7342b41c3d03fd85bf90718b5c685f672e2bdf6c1232a732545d08",
        "size": 13043,
        "traits": [
          {
            "id": "objectives/credential-access/theft/keywords::token",
            "conf": 0.30000001192092896,
            "crit": 1,
            "desc": "Credential-access vocabulary word: token",
            "from": [
              {
                "file": 23
              }
            ]
          },
          {
            "id": "objectives/impact/destroy/keywords::delete-verb--delete",
            "conf": 0.8999999761581421,
            "crit": 1,
            "desc": "Destructive-action word: delete",
            "from": [
              {
                "file": 33
              }
            ]
          },
          {
            "id": "micro-behaviors/os/console/io::exit-command-check",
            "atk": "T1059",
            "conf": 0.6499999761581421,
            "crit": 3,
            "desc": "Ruby process exit call",
            "from": [
              {
                "file": 14
              }
            ]
          },
          {
            "id": "metadata/build/package::ruby-version-file",
            "conf": 0.8999999761581421,
            "crit": 2,
            "desc": "Ruby package version file basename",
            "from": [
              {
                "file": 16
              }
            ]
          },
          {
            "id": "objectives/evasion/indicator-removal/logs::ruby-file-write-empty",
            "atk": "T1070.002",
            "conf": 0.9200000166893005,
            "crit": 4,
            "desc": "Ruby overwrites files empty",
            "from": [
              {
                "file": 4
              }
            ]
          }
        ],
        "type": "tar.gz"
      },
      {
        "ctx": [
          {
            "b": "aAz4mz/{8gwId!qxj\u003e^@e[]inzZU@narR^HarR^Har\u003cY{ADL\u0026lBrz/PA+flkwPI@CxMOunuU%v@xM4AlB-p\u00260B7G+xbysDxADL\u0026lBs}JvBzc7BbyscxAclnbi=FIFvqQ6\u003eEiG1varR^HarR^Q3jm)#arR^HarTQ9v}f7\u003eB0$:uAclmK3lQDlarR!rzE:7YarR^HarUSzx)9{bwEn+!arR^Hay]4}ayYFcy?c)(vrb^[B0#6EB-.gCaAv",
            "ln": 597,
            "col": 8,
            "line": 23
          }
        ],
        "depth": 2,
        "facts": {
          "imp": [
            [
              "",
              "new"
            ],
            [
              "",
              "routes"
            ],
            [
              "",
              "find_route"
            ],
            [
              "",
              "merge!"
            ],
            [
              "",
              "build_params"
            ],
            [
              "",
              "extract_headers"
            ],
            [
              "",
              "cookies"
            ],
            [
              "",
              "session"
            ],
            [
              "",
              "info"
            ],
            [
              "",
              "logger"
            ],
            [
              "",
              "upcase"
            ],
            [
              "",
              "http_method"
            ],
            [
              "",
              "path"
            ],
            [
              "",
              "Success"
            ],
            [
              "",
              "extract_params"
            ],
            [
              "",
              "parse_body"
            ],
            [
              "",
              "merge"
            ],
            [
              "",
              "include?"
            ],
            [
              "",
              "content_type"
            ],
            [
              "",
              "read"
            ],
            [
              "",
              "body"
            ],
            [
              "",
              "nil?"
            ],
            [
              "",
              "empty?"
            ],
            [
              "",
              "load"
            ],
            [
              "",
              "http_method"
            ],
            [
              "",
              "path"
            ],
            [
              "",
              "each"
            ],
            [
              "",
              "http_method"
            ],
            [
              "",
              "match"
            ],
            [
              "",
              "path_regex"
            ],
            [
              "",
              "each_with_object"
            ],
            [
              "",
              "env"
            ],
            [
              "",
              "start_with?"
            ],
            [
              "",
              "join"
            ],
            [
              "",
              "map"
            ],
            [
              "",
              "split"
            ],
            [
              "",
              "empty?"
            ],
            [
              "",
              "to_s"
            ],
            [
              "",
              "join"
            ],
            [
              "",
              "map"
            ],
            [
              "",
              "split"
            ],
            [
              "",
              "to_h"
            ],
            [
              "",
              "zip"
            ],
            [
              "",
              "param_names"
            ],
            [
              "",
              "captures"
            ]
          ],
          "mbr": [
            "Oj.load",
            "body_params.merge",
            "input.merge!",
            "key.split",
            "key.split.map",
            "key.split.map.join",
            "key.start_with?",
            "path_match.captures",
            "raw.empty?",
            "raw.nil?",
            "request.body",
            "request.body.read",
            "request.content_type",
            "request.content_type.include?",
            "request.cookies",
            "request.env",
            "request.env.each_with_object",
            "request.http_method",
            "request.http_method.upcase",
            "request.path",
            "request.session",
            "resource.logger",
            "resource.logger.info",
            "resource.routes",
            "route.http_method",
            "route.param_names",
            "route.param_names.zip",
            "route.param_names.zip.to_h",
            "route.path_regex",
            "route.path_regex.match",
            "routes.each",
            "value.to_s",
            "value.to_s.empty?"
          ],
          "tgt": [
            "Success",
            "body",
            "build_params",
            "captures",
            "content_type",
            "cookies",
            "each",
            "each_with_object",
            "empty?",
            "env",
            "extract_headers",
            "extract_params",
            "find_route",
            "http_method",
            "include?",
            "info",
            "join",
            "load",
            "logger",
            "map",
            "match",
            "merge",
            "merge!",
            "new",
            "nil?",
            "param_names",
            "parse_body",
            "path",
            "path_regex",
            "read",
            "routes",
            "session",
            "split",
            "start_with?",
            "to_h",
            "to_s",
            "upcase",
            "zip"
          ],
          "funcs": [
            [
              "call",
              75
            ],
            [
              "build_params",
              770
            ],
            [
              "parse_body",
              969
            ],
            [
              "find_route",
              1245
            ],
            [
              "extract_headers",
              1603
            ],
            [
              "extract_params",
              2019
            ]
          ],
          "metrics": {
            "ast": {
              "op.eq": 3,
              "op.lor": 2,
              "op.land": 1,
              "op.lnot": 1,
              "max_depth": 22,
              "op.concat": 38,
              "call_count": 45,
              "node_count": 594,
              "member_count": 33,
              "max_array_len": 2,
              "op_density.eq": 0.01,
              "op_density.lor": 0,
              "op_density.land": 0,
              "op_density.lnot": 0,
              "member_depth_max": 4,
              "op_density.concat": 0.06
            },
            "file": {
              "size": 2141,
              "entropy": 4.48
            },
            "text": {
              "lines": 76,
              "top_char": 101,
              "max_ws_run": 1,
              "digit_ratio": 0,
              "space_count": 569,
              "char_entropy": 4.48,
              "unique_chars": 65,
              "top_char_null": 0,
              "string_density": 0.12,
              "top_char_ratio": 0.08,
              "avg_line_length": 27.17,
              "max_line_length": 88,
              "empty_line_ratio": 0.18,
              "last_line_length": 3,
              "whitespace_ratio": 0.3,
              "identifier_density": 1.83,
              "line_length_stddev": 23.21,
              "normalized_string_count": 1.03,
              "repeated_char_sequences": 16,
              "normalized_unique_identifiers": 9.76
            },
            "binds": {
              "count": 8
            },
            "binary": {
              "peak_region_bytes": 2048,
              "peak_region_entropy": 4.59
            },
            "source": {
              "class_count": 3,
              "function_count": 6
            },
            "strings": {
              "bytes": 122,
              "count": 9,
              "avg_length": 13.56,
              "max_length": 71,
              "avg_entropy": 1.72,
              "entropy_stddev": 1.64
            },
            "functions": {
              "count": 9
            },
            "identifiers": {
              "count": 139,
              "unique": 61,
              "avg_length": 7.03,
              "max_length": 16,
              "min_length": 2,
              "avg_entropy": 2.45,
              "reuse_ratio": 0.44,
              "length_stddev": 3.42,
              "all_lowercase_ratio": 0.77
            }
          }
        },
        "id": 2,
        "mol": "H(Db)",
        "path": "data.tar.gz!!data.tar.gz!lib/rivulet/steps/build_context.rb",
        "pid": 1,
        "risk": 1,
        "sha": "653741c86884bb9c80cccf7c9f2794e6ee95f46b9a7f4404b7f039545c9cd01b",
        "size": 2141,
        "traits": [
          {
            "id": "micro-behaviors/data/string/case::source-case-transform",
            "conf": 0.9,
            "crit": 3,
            "desc": "Source changes string letter casing",
            "spans": [
              [
                661,
                6
              ]
            ]
          }
        ],
        "type": "ruby"
      },
      {
        "ctx": [
          {
            "b": "zeS%cy?j.!x)aSnwPN",
            "n": [
              {
                "c": 2,
                "d": "Script overall entropy stays low",
                "i": "metadata/file/metrics::low-overall-entropy-source",
                "o": 0,
                "z": 29,
                "cf": 0.8999999761581421
              }
            ],
            "ln": 1,
            "addr": 0
          },
          {
            "b": "arUfgvrlGjqE%]*z/fSc",
            "ln": 2,
            "addr": 15
          },
          {
            "b": "arR^HvruQiuTWCOwPI{hAV^z:ByxolB1wB{xK$Q.wPz\u0026yauA$Iwo/ZGi+AqJzddI",
            "ln": 3,
            "addr": 32
          },
          {
            "b": "",
            "ln": 4,
            "addr": 84
          },
          {
            "b": "arR^HwmYu}x(mTbx\u003c\u003e*(DsXHCByxolB2\u003eB0fFC42xK$Q.wPz\u0026MaBwI/ayYn1C@^6Lt}vagz/PY6BugK9yiarhdf",
            "n": [
              {
                "c": 2,
                "d": "HTTP configuration field (headers)",
                "i": "micro-behaviors/communications/http/request/client::http-config-headers",
                "o": 116,
                "z": 9,
                "cf": 0.30000001192092896
              }
            ],
            "ln": 5,
            "addr": 85
          },
          {
            "b": "arR^HarS{\u003cByxolB09Q*B97\u0026jB-N",
            "ln": 6,
            "addr": 155
          },
          {
            "b": "arR^HarS{.wNPaXA=Su^azts{wmY!5",
            "ln": 7,
            "addr": 178
          }
        ],
        "depth": 2,
        "facts": {
          "imp": [
            [
              "",
              "attr_accessor"
            ]
          ],
          "tgt": [
            "attr_accessor"
          ],
          "metrics": {
            "ast": {
              "max_depth": 9.0,
              "bind_count": 4.0,
              "call_count": 1.0,
              "node_count": 68.0,
              "identifier_count": 12.0
            },
            "file": {
              "size": 263.0,
              "entropy": 4.29,
              "size_bytes": 263.0
            },
            "text": {
              "digit_ratio": 0.02,
              "space_count": 62.0,
              "total_lines": 12.0,
              "char_entropy": 4.29,
              "unique_chars": 37.0,
              "avg_line_length": 20.92,
              "max_line_length": 69.0,
              "empty_line_ratio": 0.08,
              "last_line_length": 3.0,
              "whitespace_ratio": 0.28,
              "most_common_ratio": 0.07,
              "identifier_density": 1.33,
              "line_length_stddev": 19.4,
              "most_common_char_is_null": 0.0,
              "max_inline_whitespace_run": 1.0,
              "most_common_char_codepoint": 115.0,
              "normalized_unique_identifiers": 3.35
            },
            "binds": {
              "count": 4.0
            },
            "calls": {
              "count": 1.0
            },
            "binary": {
              "overall_entropy": 4.29,
              "peak_region_bytes": 263.0,
              "peak_region_entropy": 4.29
            },
            "source": {
              "class_count": 2.0,
              "function_count": 1.0
            },
            "functions": {
              "count": 3.0
            },
            "identifiers": {
              "count": 12.0,
              "total": 16.0,
              "avg_length": 7.33,
              "max_length": 13.0,
              "min_length": 4.0,
              "avg_entropy": 2.49,
              "reuse_ratio": 0.75,
              "unique_count": 12.0,
              "length_stddev": 2.25,
              "all_lowercase_ratio": 0.5
            }
          }
        },
        "id": 3,
        "path": "data.tar.gz!!data.tar.gz!lib/rivulet/response.rb",
        "risk": 1,
        "sha": "34b0e8d4722ae2192053ef88040399e1623cab861c95742f40fa78fb713da9e8",
        "size": 263,
        "traits": [
          {
            "id": "metadata/package/files/dependency::os-image-root-file-path",
            "conf": 0.9399999976158142,
            "crit": 1,
            "desc": "OS image root file path",
            "spans": [
              [
                0,
                23
              ]
            ]
          },
          {
            "id": "metadata/file/metrics::file-under-12-lines",
            "conf": 0.800000011920929,
            "crit": 1,
            "desc": "Very short file (under 12 lines)",
            "spans": [
              [
                0,
                24
              ]
            ]
          },
          {
            "id": "metadata/file/metrics::low-overall-entropy-source",
            "conf": 0.8999999761581421,
            "crit": 2,
            "desc": "Script overall entropy stays low",
            "spans": [
              [
                0,
                29
              ]
            ]
          },
          {
            "id": "micro-behaviors/communications/http/request/client::http-config-headers",
            "conf": 0.30000001192092896,
            "crit": 2,
            "desc": "HTTP configuration field (headers)",
            "spans": [
              [
                116,
                9
              ]
            ]
          }
        ],
        "type": "ruby"
      },
      {
        "ctx": [
          {
            "b": "A+flkx(W=ccUv7ewP-9ey\u0026Z%h3t\u003cY(B.\u003eRiqFyq%y?mX}arUJtwozZ1avw*]3lQDlaz(4cB.\u003eRilVl*UvqYQ%3lQDlarR!zz!a0bwGTGOzE)\u0026%By+!4arR^HarR!py*?yaawDM.A::67z/cWWavHl}iYYS4nJF[1z/6u1zE:7%arR^HarR^Hay]58v\u0026#%=wO#71vru66vixA3xl4B5x(v(k3lQDlarR^HarR!nA+xJiwO#Pji=nwywH[%AwPq\u003cbA+e=xaARTDwH[%mwPIuxar\u003cJ]xl4B5x(v(izEEx[asH!Nxd+rpA+eW3wNxO3wPz\u0026va{[V1arR^HarR^Hay]4}ay!?@y::gfzdL:VasX\u0026\u00263lQDlarR^HarR^HavZ6YwMr?^y\u0026.jCyH?d1uVmzvwmviex\u003eID{BzkVhB0\u0026yzarR^HarR^HarR^Hw[=6)zEEx[auZ?\u003ebyry7zdLtqz*9*PBAg#nx(dAfcNz[wz6-Zsnf{$RqZT2xuN6]uzE^s0B7ocewHIC8zdLeAe]#2Ga{]CnarR^HarR^HarUSiBz8^tarR^\u0026avZ6YwId.ox(ksDwmviex\u003eID{BzkVhB0\u0026HYw[=6)zEEx[dgdguarR^HarR^HarTc/y?kkyA+PSbc#-QpxE\u003enIa$i\u003cwarR^HarR^HarR!CB-.WEa%n1rA+eW3wGS9uDViznxNI6iarR^HarR^HarUlkwc@U^arR^HarR^HaAhvnC42G73jm)#arR^HarR^HwmYu}B-7-3A=U-eA+cUuBAe/qarR^HarR^HarR^HB98BfarR^HarR^HarR^HarSpHB9g}ufdp3\u003ceM#Bgdjwy^eM#B:vj=!hdk9j{cTnxktRWVQ3lQDlarR^HarR^HarR^Vxlei8c[=#Mvj=!gwl*Sjtr%\u0026At}4ATasyzGuTbuldgdguarR^HarR^HarR^He[w)AzEW9@wEoL5arR^HarR^HwO#2=arR^HarR^HwO#2=arR^HarUlkwc%C4arUlkwc%C4wO#2=wO#2=",
            "ln": 0,
            "col": 1,
            "line": 1
          }
        ],
        "depth": 2,
        "facts": {
          "imp": [
            [
              "",
              "require"
            ],
            [
              "",
              "desc"
            ],
            [
              "",
              "argument"
            ],
            [
              "",
              "mkdir_p"
            ],
            [
              "",
              "strftime"
            ],
            [
              "",
              "now"
            ],
            [
              "",
              "underscore"
            ],
            [
              "",
              "join"
            ],
            [
              "",
              "write"
            ],
            [
              "",
              "puts"
            ],
            [
              "",
              "downcase"
            ],
            [
              "",
              "gsub"
            ],
            [
              "",
              "gsub"
            ],
            [
              "",
              "fileutils"
            ]
          ],
          "mbr": [
            "File.join",
            "File.write",
            "FileUtils.mkdir_p",
            "Time.now",
            "Time.now.strftime",
            "str.gsub",
            "str.gsub.gsub",
            "str.gsub.gsub.downcase"
          ],
          "tgt": [
            "argument",
            "desc",
            "downcase",
            "gsub",
            "join",
            "mkdir_p",
            "now",
            "puts",
            "require",
            "strftime",
            "underscore",
            "write"
          ],
          "funcs": [
            [
              "call",
              269
            ],
            [
              "underscore",
              596
            ]
          ],
          "metrics": {
            "ast": {
              "max_depth": 19,
              "op.concat": 8,
              "call_count": 13,
              "node_count": 210,
              "member_count": 8,
              "max_member_depth": 4,
              "op_density.concat": 0.04
            },
            "file": {
              "size": 812,
              "entropy": 4.43
            },
            "text": {
              "lines": 31,
              "top_char": 101,
              "digit_ratio": 0.01,
              "space_count": 263,
              "char_entropy": 4.43,
              "unique_chars": 65,
              "top_char_null": 0,
              "escape_density": 0.49,
              "import_density": 3.23,
              "string_density": 0.32,
              "top_char_ratio": 0.07,
              "avg_line_length": 25.19,
              "max_line_length": 85,
              "empty_line_ratio": 0.13,
              "last_line_length": 3,
              "whitespace_ratio": 0.36,
              "identifier_density": 1.19,
              "line_length_stddev": 22.43,
              "max_whitespace_run": 5,
              "octal_escape_count": 4,
              "normalized_import_count": 0.18,
              "normalized_string_count": 1.8,
              "repeated_char_sequences": 16,
              "normalized_unique_identifiers": 5.65
            },
            "binds": {
              "count": 2
            },
            "binary": {
              "peak_region_bytes": 812,
              "peak_region_entropy": 4.43
            },
            "source": {
              "class_count": 5,
              "function_count": 2
            },
            "imports": {
              "count": 1,
              "third_party_count": 1,
              "third_party_ratio": 1
            },
            "strings": {
              "bytes": 176,
              "count": 10,
              "avg_length": 17.6,
              "max_length": 60,
              "avg_entropy": 3.21,
              "empty_count": 1,
              "entropy_stddev": 0.85
            },
            "functions": {
              "count": 7
            },
            "identifiers": {
              "count": 37,
              "unique": 28,
              "avg_length": 5.86,
              "max_length": 10,
              "min_length": 3,
              "avg_entropy": 2.31,
              "reuse_ratio": 0.76,
              "length_stddev": 2.2,
              "all_lowercase_ratio": 0.64,
              "all_uppercase_ratio": 0.04
            }
          }
        },
        "id": 4,
        "mol": "H₂(DbF₂)Md(In)",
        "path": "data.tar.gz!!data.tar.gz!lib/rivulet/cli/generate/migration.rb",
        "pid": 3,
        "risk": 4,
        "sha": "3012488f18eb999e8c70380b4696e42909f6ae7bf49faf76f00dc8cac22c3d4e",
        "size": 812,
        "traits": [
          {
            "id": "metadata/import/ruby/fileutils::fileutils",
            "conf": 0.95,
            "crit": 3,
            "desc": "imports fileutils",
            "spans": [
              [
                9,
                9
              ]
            ]
          },
          {
            "id": "micro-behaviors/data/string/case::source-case-transform",
            "conf": 0.9,
            "crit": 3,
            "desc": "Source changes string letter casing",
            "spans": [
              [
                749,
                8
              ]
            ]
          },
          {
            "id": "micro-behaviors/fs/directory/mkdir::ruby-fileutils-mkdir-p",
            "conf": 0.9,
            "crit": 3,
            "desc": "Ruby creates a directory tree",
            "spans": [
              [
                301,
                18
              ]
            ]
          },
          {
            "id": "micro-behaviors/fs/write/file/full::ruby-file-write-content",
            "conf": 0.85,
            "crit": 3,
            "desc": "Writes file content with Ruby File.write",
            "spans": [
              [
                494,
                10
              ]
            ]
          },
          {
            "id": "micro-behaviors/fs/write/file/full::source-buffer-write-call",
            "conf": 0.88,
            "crit": 3,
            "desc": "Source writes a file buffer",
            "spans": [
              [
                494,
                5
              ]
            ]
          }
        ],
        "type": "ruby"
      },
      {
        "ctx": [
          {
            "b": "vruflasw^.ACN0K3lQDlarR^HarR^Hay[}lBAg/cB75N2x(v(iwn.!$arR^HarR^HarR^Hay[}lA=(mFmRMWIe]\u003eJiwghz9Bz99L3lQDlarR^HarR^HarR!qvP#!$lqf*Ne[]iAwPz(vC4CYnx(v(IaA?spB7]MgdgdguarR^HarR^HarUlkwc%C4arR^HarR^HarUSCBAnMGarU9iAbol1wfr0tDQ.Z=wIdC2B7Gk$zdLbmvrufiEiG1vao",
            "ln": 424,
            "col": 38,
            "line": 17
          },
          {
            "b": "x(UTfarR^HarR^Hl${WCmRMWIe]2rszyx4fAX5sXdLt^Zy:QVqe]$@KBp6ckarR^HwO#2=arR^HwO#2=arUlkwc#)=wc@",
            "ln": 1126,
            "col": 38,
            "line": 45
          }
        ],
        "depth": 2,
        "facts": {
          "imp": [
            [
              "",
              "db"
            ],
            [
              "",
              "Failure"
            ],
            [
              "",
              "ensure_table"
            ],
            [
              "",
              "pending"
            ],
            [
              "",
              "empty?"
            ],
            [
              "",
              "puts"
            ],
            [
              "",
              "each"
            ],
            [
              "",
              "basename"
            ],
            [
              "",
              "transaction"
            ],
            [
              "",
              "run"
            ],
            [
              "",
              "read"
            ],
            [
              "",
              "insert"
            ],
            [
              "",
              "puts"
            ],
            [
              "",
              "basename"
            ],
            [
              "",
              "Success"
            ],
            [
              "",
              "create_table?"
            ],
            [
              "",
              "String"
            ],
            [
              "",
              "primary_key"
            ],
            [
              "",
              "to_set"
            ],
            [
              "",
              "select_map"
            ],
            [
              "",
              "reject"
            ],
            [
              "",
              "include?"
            ],
            [
              "",
              "basename"
            ],
            [
              "",
              "expand_path"
            ],
            [
              "",
              "exist?"
            ],
            [
              "",
              "sort"
            ],
            [
              "",
              "join"
            ]
          ],
          "mbr": [
            "Dir.exist?",
            "File.basename",
            "File.expand_path",
            "File.join",
            "File.read",
            "all_files.reject",
            "applied.include?",
            "db.create_table?",
            "db.run",
            "db.transaction",
            "migrations.each",
            "migrations.empty?"
          ],
          "tgt": [
            "Failure",
            "String",
            "Success",
            "basename",
            "create_table?",
            "db",
            "each",
            "empty?",
            "ensure_table",
            "exist?",
            "expand_path",
            "include?",
            "insert",
            "join",
            "pending",
            "primary_key",
            "puts",
            "read",
            "reject",
            "run",
            "select_map",
            "sort",
            "to_set",
            "transaction"
          ],
          "funcs": [
            [
              "call",
              110
            ],
            [
              "ensure_table",
              705
            ],
            [
              "pending",
              862
            ],
            [
              "all_files",
              1027
            ]
          ],
          "metrics": {
            "ast": {
              "max_depth": 21,
              "op.concat": 19,
              "call_count": 27,
              "node_count": 335,
              "member_count": 12,
              "max_array_len": 1,
              "member_depth_max": 2,
              "op_density.concat": 0.06
            },
            "file": {
              "size": 1200,
              "entropy": 4.29
            },
            "text": {
              "lines": 50,
              "top_char": 101,
              "max_ws_run": 2,
              "space_count": 374,
              "char_entropy": 4.29,
              "unique_chars": 55,
              "top_char_null": 0,
              "string_density": 0.14,
              "top_char_ratio": 0.07,
              "avg_line_length": 23,
              "max_line_length": 75,
              "empty_line_ratio": 0.16,
              "last_line_length": 3,
              "whitespace_ratio": 0.35,
              "identifier_density": 1.6,
              "line_length_stddev": 18.21,
              "normalized_string_count": 0.99,
              "repeated_char_sequences": 11,
              "suspicious_identifier_ratio": 0.02,
              "normalized_unique_identifiers": 7.26
            },
            "binds": {
              "count": 6
            },
            "binary": {
              "peak_region_bytes": 1200,
              "peak_region_entropy": 4.25
            },
            "source": {
              "class_count": 3,
              "function_count": 4
            },
            "strings": {
              "bytes": 94,
              "count": 7,
              "avg_length": 13.43,
              "max_length": 33,
              "avg_entropy": 2.94,
              "entropy_stddev": 0.82
            },
            "functions": {
              "count": 7
            },
            "identifiers": {
              "count": 80,
              "unique": 41,
              "avg_length": 6.44,
              "max_length": 13,
              "min_length": 1,
              "avg_entropy": 2.36,
              "reuse_ratio": 0.51,
              "length_stddev": 2.98,
              "sequential_names": 1,
              "single_char_count": 1,
              "single_char_ratio": 0.02,
              "all_lowercase_ratio": 0.66,
              "all_uppercase_ratio": 0.02
            }
          }
        },
        "id": 5,
        "path": "data.tar.gz!!data.tar.gz!lib/rivulet/steps/run_migrations.rb",
        "pid": 1,
        "risk": 1,
        "sha": "88a24e1054b43549e6668ccddc6d215a492737e3e795204a6763d03fed839bff",
        "size": 1200,
        "traits": [
          {
            "id": "micro-behaviors/fs/read/file/full::ruby-file-read-content",
            "atk": "T1083",
            "conf": 0.5,
            "crit": 2,
            "desc": "Reads file content with Ruby File.read",
            "spans": [
              [
                488,
                0
              ]
            ]
          },
          {
            "id": "objectives/supply-chain/install-hook/package/rubygems::file-imports",
            "atk": "T1195.002",
            "conf": 0.5,
            "crit": 3,
            "desc": "File operation imports",
            "uses": [
              0
            ],
            "spans": [
              [
                488,
                9
              ]
            ]
          }
        ],
        "type": "ruby"
      },
      {
        "id": 6,
        "sha": "a10b97fd008514100734a92e6e1d9ad61d875ed7377ec55a2b6833cad1d1c3fa",
        "path": "data.tar.gz!!data.tar.gz!lib/rivulet/cli/generate/service/step.rb",
        "risk": 1,
        "size": 3044,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 7,
        "sha": "e96e804796a56653885ecb23d77423e51f715f818baae1720774216607f35026",
        "path": "data.tar.gz!!data.tar.gz!lib/rivulet/cli/generate/service/projection.rb",
        "risk": 1,
        "size": 3182,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 8,
        "sha": "03c4a52fa7cc26439d1eeae5e715f16b7194490ee0bd91a8f735e1f11dd70e31",
        "path": "data.tar.gz!!data.tar.gz!lib/rivulet/cli/generate/service/operation.rb",
        "risk": 1,
        "size": 4417,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 9,
        "sha": "3ccb0c6e6cffeaa574979b2590e56cacee836a16804ccfea40f7030473557204",
        "path": "data.tar.gz!!data.tar.gz!lib/rivulet/cli/generate/service.rb",
        "risk": 1,
        "size": 4570,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 10,
        "sha": "890142e69ed9b6af30080c3c5767b7289b8adac8ffc065dc386c86b95aad4e89",
        "path": "data.tar.gz!!data.tar.gz!lib/rivulet/cli/generate/operation.rb",
        "risk": 1,
        "size": 4044,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 11,
        "sha": "f3e23d389f7f6117509316a8cfcb45ae154d1aafc6ef0d2db9cd3fe436a304d3",
        "path": "data.tar.gz!!data.tar.gz!lib/rivulet/cli/generate/handler/step.rb",
        "risk": 1,
        "size": 3044,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 12,
        "sha": "7f775041b219ef93e392ba5ab1557b2e212e0f52cf4cfa4d36a74f56aa798058",
        "path": "data.tar.gz!!data.tar.gz!lib/rivulet/cli/generate/handler/operation.rb",
        "risk": 1,
        "size": 2684,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 13,
        "sha": "ca91a93110a90586c39a04ccf13559f8cbbc979cda531e455841668889a54468",
        "path": "data.tar.gz!!data.tar.gz!lib/rivulet/cli/generate/handler.rb",
        "risk": 1,
        "size": 4249,
        "type": "ruby",
        "depth": 2
      },
      {
        "ctx": [
          {
            "b": "z/M%Ywmt(MarR^HwmYu}v{%g\u0026c$NptdgdguarR^HA+frmy\u0026*^.aA}KwxKt\u003c)y?mD{BAhTHwn.!$arR^HarR!qx(!l4ByO#\u003eA+flkwPI@Cc#@)uz/{8gwJy@PwO+%faz2Cl",
            "ln": 446,
            "col": 16,
            "line": 13
          },
          {
            "b": "wJy@PwO+%c3lQDlarR!vw/#b9B9hqve[OKay\u0026%=fkmeIQarR^HarU(pA=90zq/(C*BAIKBw)]y\u0026wN)?AbysDxB9hqve[OKay\u0026%=fEiG1varR^HarR!rCXImxf:Y3CarR^HwO#2=arR^HarU-py?s1%arR!rzE:7YarR^HwmYu}ze0T6vru673lQDlarR!EwPJ0gBrAZ?ze0T6vru6/z/xodvruj4zz0tTwPI^jA:@VwaAIagw*[6farR^HazCBgA+frmy\u0026?pwvqfL2A+dDxarR^",
            "ln": 1183,
            "col": 42,
            "line": 42
          }
        ],
        "depth": 2,
        "facts": {
          "imp": [
            [
              "",
              "include"
            ],
            [
              "",
              "include"
            ],
            [
              "",
              "include"
            ],
            [
              "",
              "AutoInject"
            ],
            [
              "",
              "attr_accessor"
            ],
            [
              "",
              "with_telemetry"
            ],
            [
              "",
              "dispatch_request"
            ],
            [
              "",
              "success"
            ],
            [
              "",
              "success?"
            ],
            [
              "",
              "error"
            ],
            [
              "",
              "error"
            ],
            [
              "",
              "error"
            ],
            [
              "",
              "new"
            ],
            [
              "",
              "startup_operation"
            ],
            [
              "",
              "failure?"
            ],
            [
              "",
              "warn"
            ],
            [
              "",
              "failure"
            ],
            [
              "",
              "exit"
            ],
            [
              "",
              "migrate_operation"
            ],
            [
              "",
              "failure?"
            ],
            [
              "",
              "warn"
            ],
            [
              "",
              "failure"
            ],
            [
              "",
              "exit"
            ],
            [
              "",
              "run_console_operation"
            ],
            [
              "",
              "failure?"
            ],
            [
              "",
              "warn"
            ],
            [
              "",
              "failure"
            ],
            [
              "",
              "exit"
            ],
            [
              "",
              "print_routes_operation"
            ],
            [
              "",
              "failure?"
            ],
            [
              "",
              "warn"
            ],
            [
              "",
              "failure"
            ],
            [
              "",
              "exit"
            ],
            [
              "",
              "new"
            ],
            [
              "",
              "info"
            ],
            [
              "",
              "total_ms"
            ],
            [
              "",
              "db_ms"
            ],
            [
              "",
              "print_flow"
            ]
          ],
          "mbr": [
            "Dry.AutoInject",
            "Telemetry.new",
            "logger.error",
            "logger.info",
            "result.failure",
            "result.failure?",
            "result.success",
            "result.success?",
            "t.db_ms",
            "t.print_flow",
            "t.total_ms"
          ],
          "tgt": [
            "AutoInject",
            "attr_accessor",
            "db_ms",
            "dispatch_request",
            "error",
            "exit",
            "failure",
            "failure?",
            "include",
            "info",
            "migrate_operation",
            "new",
            "print_flow",
            "print_routes_operation",
            "run_console_operation",
            "startup_operation",
            "success",
            "success?",
            "total_ms",
            "warn",
            "with_telemetry"
          ],
          "funcs": [
            [
              "call",
              458
            ],
            [
              "routes",
              1064
            ],
            [
              "startup",
              1130
            ],
            [
              "migrate!",
              1315
            ],
            [
              "run_console",
              1492
            ],
            [
              "print_routes",
              1680
            ],
            [
              "with_telemetry",
              1882
            ]
          ],
          "metrics": {
            "ast": {
              "max_depth": 14,
              "op.concat": 24,
              "call_count": 38,
              "node_count": 538,
              "member_count": 11,
              "max_array_len": 3,
              "member_depth_max": 2,
              "op_density.concat": 0.04
            },
            "file": {
              "size": 2174,
              "entropy": 4.42
            },
            "text": {
              "lines": 90,
              "top_char": 101,
              "max_ws_run": 7,
              "digit_ratio": 0.01,
              "space_count": 546,
              "char_entropy": 4.42,
              "unique_chars": 62,
              "top_char_null": 0,
              "string_density": 0.14,
              "top_char_ratio": 0.09,
              "avg_line_length": 23.16,
              "max_line_length": 82,
              "empty_line_ratio": 0.14,
              "last_line_length": 3,
              "whitespace_ratio": 0.29,
              "identifier_density": 1.11,
              "line_length_stddev": 19.52,
              "normalized_string_count": 1.37,
              "suspicious_identifier_ratio": 0.02,
              "normalized_unique_identifiers": 6.93
            },
            "binds": {
              "count": 8
            },
            "binary": {
              "peak_region_bytes": 2174,
              "peak_region_entropy": 4.51
            },
            "source": {
              "class_count": 2,
              "function_count": 7
            },
            "strings": {
              "bytes": 355,
              "count": 13,
              "avg_length": 27.31,
              "max_length": 71,
              "avg_entropy": 3.66,
              "entropy_stddev": 0.44
            },
            "functions": {
              "count": 9
            },
            "identifiers": {
              "count": 100,
              "unique": 45,
              "avg_length": 8.38,
              "max_length": 22,
              "min_length": 1,
              "avg_entropy": 2.58,
              "reuse_ratio": 0.45,
              "length_stddev": 4.6,
              "sequential_names": 1,
              "single_char_count": 1,
              "single_char_ratio": 0.02,
              "high_entropy_count": 2,
              "high_entropy_ratio": 0.04,
              "all_lowercase_ratio": 0.64
            }
          }
        },
        "id": 14,
        "mol": "H(Po)",
        "path": "data.tar.gz!!data.tar.gz!lib/rivulet/application.rb",
        "pid": 1,
        "risk": 1,
        "sha": "60c102cc102ff32e2a7530dab82c90cacaded698112315542bcfd9f7cbb40241",
        "size": 2174,
        "traits": [
          {
            "id": "micro-behaviors/process/exit/terminate::ruby-exit-call",
            "conf": 0.9,
            "crit": 3,
            "desc": "Terminates the Ruby process with exit",
            "spans": [
              [
                1274,
                4
              ]
            ]
          }
        ],
        "type": "ruby"
      },
      {
        "id": 15,
        "sha": "0abef232737f3538528bf0e639c3f1b447a3529ebdbd0cafd79ee5cff5ad6edc",
        "path": "rivulet-rb-0.1.7.gem!!checksums.yaml.gz",
        "size": 295,
        "type": "gz",
        "depth": 1
      },
      {
        "id": 16,
        "sha": "f1badeb340c727d23fd0f2906f5c7e8c2b6717ba249b9610873b44d9be08d51d",
        "path": "data.tar.gz!!data.tar.gz!lib/rivulet/version.rb",
        "risk": 1,
        "size": 39,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 17,
        "sha": "a19e8aee945935c47bf5c7958a501b8f605dc5187788520df6c3e581118fd375",
        "path": "data.tar.gz!!data.tar.gz!lib/rivulet/telemetry/timing_wrapper.rb",
        "risk": 1,
        "size": 246,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 18,
        "sha": "3f238e389b191d44c109d45b23dc5e5bbf1a20d5900715f46149e87b065df247",
        "path": "data.tar.gz!!data.tar.gz!lib/rivulet/telemetry/sequel_extension.rb",
        "risk": 1,
        "size": 510,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 19,
        "sha": "d327fdbc2a5265ea32a981d44be8fbda674191124c93d2d5f0502d40e30fb432",
        "path": "data.tar.gz!!data.tar.gz!lib/rivulet/telemetry/node.rb",
        "risk": 1,
        "size": 169,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 20,
        "sha": "026829e22140f96671717d5578caa8192a933e9fd765522eebf153c186d5e3d9",
        "path": "data.tar.gz!!data.tar.gz!lib/rivulet/telemetry.rb",
        "risk": 1,
        "size": 1414,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 21,
        "sha": "02d7c9276a84f5540675b11cc4c7dd29a60bf02c8ebe22f3728f12428013ac72",
        "path": "data.tar.gz!!data.tar.gz!lib/rivulet/steps/validate_response.rb",
        "risk": 1,
        "size": 1444,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 22,
        "sha": "b071d7bf0a9c9f2734e68d126a876396cce2b055c52aeb60bcca4f4887f0eadd",
        "path": "data.tar.gz!!data.tar.gz!lib/rivulet/steps/run_console.rb",
        "risk": 1,
        "size": 496,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 23,
        "sha": "2b32c36928f189e17bdc869c078811e59da2696dd7dde975c276fc9bac473f51",
        "path": "data.tar.gz!!data.tar.gz!lib/rivulet/steps/print_routes.rb",
        "risk": 1,
        "size": 3214,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 24,
        "sha": "0a6329711375d1c2b4885861b92ed80316aeaa601fa0beb722ea8c918871c452",
        "path": "data.tar.gz!!data.tar.gz!lib/rivulet/steps/load_settings.rb",
        "risk": 1,
        "size": 1111,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 25,
        "sha": "a2946d4f21c7895ac00d48f5ffeb0e43a891654d4b8d57c28a43a637cc4d9140",
        "path": "data.tar.gz!!data.tar.gz!lib/rivulet/steps/load_routes.rb",
        "risk": 1,
        "size": 780,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 26,
        "sha": "0ca2ceb1cdf563bc291ffdef94e8508f5cec94a2a2ffd0f19eda8e1e755ae0a8",
        "path": "data.tar.gz!!data.tar.gz!lib/rivulet/steps/load_db.rb",
        "risk": 1,
        "size": 652,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 27,
        "sha": "dd357ca239082122384ec65f7a57e9f964002e3da2f411681e9a972c92708e7e",
        "path": "data.tar.gz!!data.tar.gz!lib/rivulet/steps/load_app.rb",
        "risk": 1,
        "size": 421,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 28,
        "sha": "d60c5b305d955999951fd81ba48aea3277bcf2f47a82455de3922103374ad2db",
        "path": "data.tar.gz!!data.tar.gz!lib/rivulet/steps/dispatch.rb",
        "risk": 1,
        "size": 418,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 29,
        "sha": "89d79717fc9fee80f27ae37e56ebfdca34d161a61601abe80a057bacb3771914",
        "path": "data.tar.gz!!data.tar.gz!lib/rivulet/steps/compile_response.rb",
        "risk": 1,
        "size": 3236,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 30,
        "sha": "2b2507051918ab7e9e1d08d0694a756d94df759450e1d4b8330951fd16ce64f6",
        "path": "data.tar.gz!!data.tar.gz!lib/rivulet/steps/build_config.rb",
        "risk": 1,
        "size": 606,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 31,
        "sha": "5390aad9dab58d048ee893dba5b052c9411444286b2b6ab7b49adfb090c7bb6c",
        "path": "data.tar.gz!!data.tar.gz!lib/rivulet/step.rb",
        "risk": 1,
        "size": 512,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 32,
        "sha": "c8e1367b9796fdcc7be8e8a1fee41c7684d60481497d4db031093dcec51a2ee9",
        "path": "data.tar.gz!!data.tar.gz!lib/rivulet/routing/route.rb",
        "risk": 1,
        "size": 222,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 33,
        "sha": "453964f584d24786640fc6deffb93ab83e5a4ef65e9e4494f8401e188ac39f5f",
        "path": "data.tar.gz!!data.tar.gz!lib/rivulet/routing/mapper.rb",
        "risk": 1,
        "size": 1983,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 34,
        "sha": "7e81a2b6e61de46ccfb35f9d04a860cefbde5b1c362c37686145b8e18c3114fa",
        "path": "data.tar.gz!!data.tar.gz!lib/rivulet/request.rb",
        "risk": 1,
        "size": 459,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 35,
        "sha": "69485f1ccf62fd3ee01c70747fd5220584827956fbd6fe65f746606532e4af4b",
        "path": "data.tar.gz!!data.tar.gz!lib/rivulet/projection.rb",
        "risk": 1,
        "size": 168,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 36,
        "sha": "02daa73599aa954ecc342b2ec876e7d9de2884fc2fe44c82f2ebce65023d2ea1",
        "path": "data.tar.gz!!data.tar.gz!lib/rivulet/operations/startup.rb",
        "risk": 1,
        "size": 601,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 37,
        "sha": "516687b9eedf323081d9280f5ef9cb2a70f45e1b3fdb342b79aa4966e736961f",
        "path": "data.tar.gz!!data.tar.gz!lib/rivulet/operations/run_console.rb",
        "risk": 1,
        "size": 691,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 38,
        "sha": "f16560559536516a0d0ff091a63de7bafecd0be76c98d70800870f4fc7c078ff",
        "path": "data.tar.gz!!data.tar.gz!lib/rivulet/operations/print_routes.rb",
        "risk": 1,
        "size": 351,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 39,
        "sha": "4a156fb0f946ef402163432a9bffa70af8e8cbc3ce594918c4c3d7d139c584b4",
        "path": "data.tar.gz!!data.tar.gz!lib/rivulet/operations/migrate.rb",
        "risk": 1,
        "size": 612,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 40,
        "sha": "0cdabf0ee6b2fa0f5c4228872f0a7d10479f859d7e6fe9ad001147ecd88785be",
        "path": "data.tar.gz!!data.tar.gz!lib/rivulet/operations/dispatch_request.rb",
        "risk": 1,
        "size": 570,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 41,
        "sha": "74c6ffc20752391beb4856301ce1f114603ee6f43a1b01eb8e17dfa5059f1eed",
        "path": "data.tar.gz!!data.tar.gz!lib/rivulet/operation.rb",
        "risk": 1,
        "size": 506,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 42,
        "sha": "a8875f4c2eda997492ce246bbac366cafbc18d0d92b374e1782e50e9a8dc7cfd",
        "path": "data.tar.gz!!data.tar.gz!lib/rivulet/container.rb",
        "risk": 1,
        "size": 1395,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 43,
        "sha": "38204d2af03db7cd9f64d447a2dfdc048a41aaab36c5ef193541b3e3c0aa350f",
        "path": "data.tar.gz!!data.tar.gz!lib/rivulet/cli/routes.rb",
        "risk": 1,
        "size": 230,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 44,
        "sha": "999a4cfeeccb62d838b556647b2bccbc86e74e20f4ac65e438baea8bb5015cf8",
        "path": "data.tar.gz!!data.tar.gz!lib/rivulet/cli/new.rb",
        "risk": 1,
        "size": 5179,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 45,
        "sha": "31f8d6b83a8fb1a805c655110abf0de5b6df39dadcad29f827c2878233032e67",
        "path": "data.tar.gz!!data.tar.gz!lib/rivulet/cli/generate/resource.rb",
        "risk": 1,
        "size": 975,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 46,
        "sha": "2e78955b75594e467b258bbb35e5d729706c6d36c7da2c14893009245d438021",
        "path": "data.tar.gz!!data.tar.gz!lib/rivulet/cli/db/migrate.rb",
        "risk": 1,
        "size": 285,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 47,
        "sha": "bf15bf5141f76726d0f9015b51afbe8b6967dee2799bc2119057ba54de6c86f6",
        "path": "data.tar.gz!!data.tar.gz!lib/rivulet/cli/console.rb",
        "risk": 1,
        "size": 256,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 48,
        "sha": "9fe498a2612e7284fa87531de1b2859cf18a0830c507568bf55b0e2a5414b5fb",
        "path": "data.tar.gz!!data.tar.gz!lib/rivulet/cli.rb",
        "risk": 1,
        "size": 1704,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 49,
        "sha": "92903cf11c642784a8df37a1a412791cbdbcdee7339691622e3beccb4feef55f",
        "path": "data.tar.gz!!data.tar.gz!lib/rivulet.rb",
        "risk": 1,
        "size": 2024,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 50,
        "sha": "fe68bcea9f9e07acc62abf0cfcb0130e58cefdb07ef51fa0e4acb4db6670a1c7",
        "path": "data.tar.gz!!data.tar.gz!bin/rivulet",
        "risk": 1,
        "size": 101,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 51,
        "sha": "a5fcef7e7612c4ada47fe6a34e848f8029de5e3ba260051f428965ae61f4cc89",
        "path": "rivulet-rb-0.1.7.gem!!metadata.gz",
        "size": 962,
        "type": "gz",
        "depth": 1
      },
      {
        "id": 52,
        "sha": "d827310f8cce9aa0c764baa27fb4c27c55d6ad12947dc48a21a3e8206281b59d",
        "path": "metadata.gz!!metadata.gz!metadata",
        "size": 8906,
        "type": "pkg-info",
        "depth": 2
      }
    ],
    "omitted_files": 46,
    "rev": "868bd",
    "v": "8"
  }
}