{
  "ml": {
    "v": "7",
    "eng": "2.3.1-beta.0",
    "lvl": -1,
    "conf": 0,
    "mods": [
      {
        "cls": 0,
        "raw": 0.00013952453,
        "rte": "az",
        "prob": 0.00013952453
      }
    ],
    "prob": 0.00015708804,
    "skip": [
      {
        "rte": "az/zip",
        "why": "unavailable"
      },
      {
        "rte": "az/zip",
        "why": "unavailable"
      }
    ],
    "files": [
      {
        "id": 0,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000157088041305542,
        "type": "zip"
      },
      {
        "id": 1,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000014096498489379883,
        "type": "markdown"
      },
      {
        "id": 2,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000157088041305542,
        "type": "shell"
      },
      {
        "id": 3,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000033527612686157227,
        "type": "go"
      },
      {
        "id": 4,
        "lvl": -1,
        "conf": 0,
        "prob": 0.00003089507299591787,
        "type": "go"
      },
      {
        "id": 5,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000021626552552334033,
        "type": "go"
      },
      {
        "id": 6,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000014573335647583008,
        "type": "json"
      },
      {
        "id": 7,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000015834966688998975,
        "type": "json"
      },
      {
        "id": 8,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000015834966688998975,
        "type": "json"
      },
      {
        "id": 9,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000014136235222395044,
        "type": "go.mod"
      },
      {
        "id": 10,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000015228986740112305,
        "type": "go.sum"
      },
      {
        "id": 11,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000014851490959699731,
        "type": "registry"
      },
      {
        "id": 12,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000014623005881730933,
        "type": "registry"
      },
      {
        "id": 13,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000014851490959699731,
        "type": "registry"
      },
      {
        "id": 14,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000014851490959699731,
        "type": "registry"
      },
      {
        "id": 15,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000014851490959699731,
        "type": "registry"
      },
      {
        "id": 16,
        "lvl": -1,
        "conf": 0,
        "prob": 0.0000201265011128271,
        "type": "registry"
      }
    ],
    "version": "v18.18",
    "analyzed_at": "2026-07-15T00:08:27Z"
  },
  "path": "github.com-danp-nspoweroutages-v0.0.0-20260714224501-823488c6a0cc.zip",
  "raw": {
    "files": [
      {
        "id": 0,
        "ctx": [
          {
            "b": "p!H([6Awys2MK\u00268000000000000000002T(003UCBzb/ae[n*pfjXHeA4=9IAbP@iA=l8xvp%d)kZ1?lfFk4hgb7EwfGgZygbpWzfFLdsgby:DiaB\u003cPfK[PCqBJ(to*{WKwun[/A[\u0026O3ZunC!kE#Wk?W}\u003cN:=SHbALgR3Ci{Mu/Yw2u)gpLibQ9!)0c2@+/lN7(21W56U=ksSJq",
            "n": [
              {
                "c": 2,
                "d": "Zip archive path",
                "i": "metadata/package/files/included::zip-archive-path",
                "o": 0,
                "z": 69,
                "cf": 0.949999988079071
              }
            ],
            "ln": 0
          }
        ],
        "mol": "H₂(Cm₃F)",
        "sha": "04d85ca8b7fccdfebbdabc471b7c5142bb4a99bb09b4725b5e2ed3d842703763",
        "path": "github.com-danp-nspoweroutages-v0.0.0-20260714224501-823488c6a0cc.zip",
        "risk": 3,
        "size": 10863,
        "type": "zip",
        "facts": {
          "metrics": {
            "file": {
              "size": 10863.0,
              "entropy": 7.71,
              "size_bytes": 10863.0
            },
            "binary": {
              "overall_entropy": 7.71,
              "peak_region_bytes": 9216.0,
              "peak_region_entropy": 7.81
            },
            "archive": {
              "file_count": 10.0,
              "member_count": 10.0,
              "script_count": 1.0,
              "zip_bomb_ratio": 10.83,
              "directory_count": 0.0,
              "executable_count": 0.0,
              "extra_field_size": 0.0,
              "noise_file_count": 0.0,
              "total_compressed": 8255.0,
              "compression.ratio": 0.32,
              "hidden_file_count": 0.0,
              "total_uncompressed": 25996.0,
              "crc_collision_count": 0.0,
              "entry_comment_count": 0.0,
              "max_filename_length": 97.0,
              "rtlo_filename_count": 0.0,
              "format.regular_count": 10.0,
              "nested_archive_count": 0.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,
              "duplicate_member_count": 0.0,
              "security.symlink_count": 0.0,
              "unicode_filename_count": 0.0,
              "homoglyph_filename_count": 0.0,
              "security.encrypted_count": 0.0,
              "misplaced_executable_count": 0.0,
              "timing.mtime_dominant_count": 10.0,
              "timing.sentinel_mtime_count": 10.0,
              "security.world_writable_count": 0.0,
              "timing.mtime_dominant_fraction": 1.0,
              "compression.method_counts.deflate": 10.0
            }
          }
        },
        "traits": [
          {
            "id": "micro-behaviors/communications/http/download/cli::fetch-output-flag-script",
            "conf": 0.8500000238418579,
            "crit": 3,
            "desc": "Script sets curl or wget output file",
            "from": [
              {
                "file": 2
              }
            ]
          },
          {
            "id": "metadata/package/testing/harness/unit::go-t-error-call",
            "conf": 0.699999988079071,
            "crit": 1,
            "desc": "Go test reports an error with t.Error",
            "from": [
              {
                "file": 5
              }
            ]
          },
          {
            "id": "micro-behaviors/communications/http/download/curl::curl-silent",
            "atk": "T1105",
            "conf": 0.800000011920929,
            "crit": 3,
            "desc": "curl command uses silent or fail flags",
            "from": [
              {
                "file": 2
              }
            ]
          },
          {
            "id": "metadata/file/invisible-unicode::test-file-context",
            "atk": "T1027",
            "conf": 0.8500000238418579,
            "crit": 1,
            "desc": "Test, generated, or declaration-file context",
            "from": [
              {
                "file": 5
              }
            ]
          },
          {
            "id": "metadata/package/testing/presence/harness::tests-path-filename",
            "conf": 0.8500000238418579,
            "crit": 1,
            "desc": "File path or name indicates test code",
            "from": [
              {
                "file": 5
              }
            ]
          },
          {
            "id": "metadata/file/extension/identity::shell-a",
            "conf": 1.0,
            "crit": 2,
            "desc": "POSIX shell script extension",
            "from": [
              {
                "file": 2
              }
            ]
          },
          {
            "id": "micro-behaviors/communications/http/download/curl::curl-cmd",
            "atk": "T1105",
            "conf": 0.699999988079071,
            "crit": 3,
            "desc": "curl command includes URL or option",
            "from": [
              {
                "file": 2
              }
            ]
          },
          {
            "id": "micro-behaviors/communications/http/lib/netlib::net-http-import",
            "atk": "T1071.001",
            "mbc": "C0002",
            "crit": 3,
            "desc": "Imports Go's net/http package",
            "from": [
              {
                "file": 3
              }
            ]
          },
          {
            "id": "metadata/package/testing/harness/unit::go-func-test",
            "conf": 0.800000011920929,
            "crit": 2,
            "desc": "Go test function name",
            "from": [
              {
                "file": 5
              }
            ]
          },
          {
            "id": "metadata/package/testing/harness/unit::go-testing-t",
            "conf": 0.699999988079071,
            "crit": 2,
            "desc": "Go test uses a testing.T parameter",
            "from": [
              {
                "file": 5
              }
            ]
          },
          {
            "id": "metadata/package/testing/harness/unit::go-t-fatal-call",
            "conf": 0.699999988079071,
            "crit": 1,
            "desc": "Go test stops with t.Fatal",
            "from": [
              {
                "file": 5
              }
            ]
          },
          {
            "id": "micro-behaviors/communications/http/get::http-get",
            "atk": "T1071.001",
            "mbc": "C0002",
            "conf": 0.8500000238418579,
            "crit": 3,
            "desc": "Go http.Get call",
            "from": [
              {
                "file": 3
              }
            ]
          },
          {
            "id": "micro-behaviors/communications/http/download/curl::curl-output-redirect",
            "atk": "T1105",
            "conf": 0.800000011920929,
            "crit": 3,
            "desc": "curl output redirected to file",
            "from": [
              {
                "file": 2
              }
            ]
          },
          {
            "id": "micro-behaviors/communications/http/download/curl::curl-output-file",
            "atk": "T1105",
            "conf": 0.699999988079071,
            "crit": 3,
            "desc": "curl command specifies an output path",
            "from": [
              {
                "file": 2
              }
            ]
          },
          {
            "id": "micro-behaviors/fs/directory/mkdir::mkdir-command",
            "conf": 0.800000011920929,
            "crit": 3,
            "desc": "Shell invokes mkdir command",
            "from": [
              {
                "file": 2
              }
            ]
          },
          {
            "id": "micro-behaviors/communications/http/download/cli::curl-variable-path-segment",
            "atk": "T1071.001",
            "conf": 0.8999999761581421,
            "crit": 3,
            "desc": "curl request with variable URL path segment",
            "from": [
              {
                "file": 2
              }
            ]
          }
        ]
      },
      {
        "ctx": [
          {
            "b": "flp\u0026Az/f=ky\u00260*bz/dgBwPPNXfFUsnpH!G1iwk2VBs?MzA:-{3zF7QKaA7\u003cmBzbkdwmoN*ayX[}x(mD7Bzbkdttx9WviwGUz//Y4aw^02wPw[?B-.58wGTYQA9T(9BAzE.fe4l^Byw/[zddxozGx=nCv+!Ev{}2te^.}WvqfQ}C{4oAwP}M(y?j.$BrCmsBz#pZfe4i:A4UWfByxl4BAz7Dwmov{e]ClxfcB.HaA}mtaA7\u003cmxMOunB2\u003e%cxk8E3BZ=$kz/4drvqZ3qz/{egxjVcoBz\u0026:LACPuhwIaq%bo[sjxN8/H3rgXIaA8yAvp%c]zddxaB7/GoB0bWuvrr(razth5AaJ{3zF780A+Pf1BrCEtCv8F4B-X:sx)a6eaz#9uCvt+tBz\u0026pywN###zF0*czddK2z/cXavScyhaAg+gBrCHAByw/[B1wCTxKM09xKL%8v}Yp*xjUQ8az2U8e*a56xlw30A+{1zw[u6]xLzu%aARpday[]5vixV9vrrShz*b=kB0bgsayPd#aAH$mx(mMax(\u003eFizxK4mx(+zvvr\u0026#tx(4Pdy?mYhB-OWDwN##]xKL^\u003ewPF#jC4CXpBzkP6e*abbvrrS4z/](baz+RhaA.-FvqZdgwPw]kB.bSox(v)gaz++cwJye9dJ?/avrrS2A+cwnxK@r6z/Z1yv@Dj3z/fxpaz+E}wO+{*ay!\u00265B7Gznz!pbgB-.58wPH6ydJ?/avrrS2A+eW2azthbwGUP9wPq\u003c7zGE1tB-.58wPH6ydJ?o2CoyZuzF785zY\u0026$vByw/[B0bNIAa@/\u003cy\u00261wty*?ybkmd--zE:(bz/Pzj3jn15av{A{azC{uCw?IqA%-myC4CYtatCL)ze0)gBy/IAayMylD2[7sz6i+eaz\u003e?gwGV2ozGu}8vRGZkB7ol0AaHUyxK92}x(kOBv@=0%wIe4qdj$@mvRGZkB7ol0AaHUyxGuFcf!KOXwPRA}wPF#5zE:(1z/5@$zE)(iz/{egxjSh@vrt{2BP",
            "ln": 40,
            "col": 23,
            "line": 3
          },
          {
            "b": "fk20vxMW=pv@Diqwmov{fk+\u0026Iz*b=kz/{egxjVcqv@Dj3x((0/f/Q%#wmmo6gCSM1h.[@4g+\u0026GGvk.Rai5rN7fL06}vLY]Kw[2f$e^.}gboPx.Byuq7z/PY6Bp5v.wmoN*fk\u003e#Pvp%d)e]2DCzEsP2vriMiz/]Yay\u003cvdBxLzJgw]zZbvrsKq3sEmH3r)\u0026WaBsCrarR^JwmY*(b03\u0026[3lQDlarR^Jv{%I3wG\u003ceTb0o^^Byw/[ay!\u00265B7D)BB9g#aayPslrC(tUAV^}\u003eC4C-px\u003eH\u003c@x-",
            "ln": 1154,
            "col": 15,
            "line": 27
          },
          {
            "b": "v%8\u003cmz/66aB0a[6w[tE]wN(b\u003carR^HaBL^FarR^HarR\u003eCuVg7eb03\u00265efDeWw]zYjv@cpeBy/FQBAhInefFRACoy:hzH0vyB-.58wPF#oxLzJgv@cpeBy/Fnv@DK4A=RNgarR^Har\u003e-DByw/[B0rT/toCdkw]zYjv@cpeBy/FQBAhInefFUAwnch",
            "ln": 1681,
            "col": 30,
            "line": 41
          },
          {
            "b": "B-.tlx([62B1.GJy\u003cx\u0026hzE)l)xk.*8BzbIuayPd#ay!?$ayX[8wmYm?wmYo]Cwhejaz2gdtx1H%D2dhjwIcwZv@C)?lVl)-woh38xMOunB2\u003e%cAbf8sxkYzkwP/.tx([3hvLheez7*0PAaa3fwImXmePtSAD2dhjwG%POv@C)?lVl)-wofgxz/M$m",
            "ln": 2688,
            "col": 99,
            "line": 67
          },
          {
            "b": "AaK6he[Y9vxkzciv@Diqzddy8fjY0hB.$YcByxo9z/djJBzkM9Bzkrcfk$\u0026CD2dhjwP-9ey?X0pdj$@mbo[s4z*9smvrt{2w[u6]xLzu%aA}:AyJx*\u0026v@k:fB7ol0AaHRtB-.58wPF#nByxiiB0a}qazbhbv}YN]xcpz}wPRu\u003evrt{gyiarht{%xdBz%n]fk\u003e#Pvp%d*vq)\u0026pB8V5wwPxzkvj#UjB8Mhwv}xZmwmoN*fj/xIwPzV%y+GHuBy/GovqGp-wO#71vruj4zEi",
            "ln": 2912,
            "col": 323,
            "line": 67
          }
        ],
        "depth": 1,
        "facts": {
          "metrics": {
            "file": {
              "size": 4756,
              "entropy": 4.97
            },
            "text": {
              "lines": 95,
              "top_char": 101,
              "digit_ratio": 0.05,
              "space_count": 662,
              "char_entropy": 4.97,
              "unique_chars": 86,
              "top_char_null": 0,
              "lines_over_200": 5,
              "top_char_ratio": 0.08,
              "avg_line_length": 49.06,
              "max_line_length": 384,
              "empty_line_ratio": 0.28,
              "last_line_length": 142,
              "long_token_count": 2,
              "whitespace_ratio": 0.16,
              "line_length_stddev": 74.89,
              "max_whitespace_run": 1
            },
            "binary": {
              "peak_region_bytes": 4756,
              "peak_region_entropy": 4.93
            }
          }
        },
        "id": 1,
        "mol": "H(Cm)Md",
        "path": "github.com-danp-nspoweroutages-v0.0.0-20260714224501-823488c6a0cc.zip!!github.com/danp/nspoweroutages@v0.0.0-20260714224501-823488c6a0cc/README.md",
        "pid": 0,
        "risk": 3,
        "sha": "f9582a755b6068834692d1470cfa08039c9b5629a5a785d5f90b4296183eaef4",
        "size": 4756,
        "traits": [
          {
            "id": "metadata/file/naming::uppercase-readme-md-basename",
            "conf": 1.0,
            "crit": 3,
            "desc": "Basename is uppercase README.md"
          },
          {
            "id": "metadata/file/profile/markup::at-least-four-markdown-section-headings",
            "conf": 0.97,
            "crit": 3,
            "desc": "At least four Markdown section headings",
            "spans": [
              [
                276,
                7
              ],
              [
                702,
                15
              ],
              [
                1237,
                14
              ],
              [
                2976,
                26
              ]
            ]
          },
          {
            "id": "micro-behaviors/communications/http/url/forge::public-code-forge-url",
            "conf": 0.9,
            "crit": 3,
            "desc": "References a public code-forge URL",
            "spans": [
              [
                232,
                19
              ]
            ]
          },
          {
            "id": "metadata/lang/natural/vocabulary/function-word::lang-english--atom-1",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"the\"",
            "spans": [
              [
                88,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/natural/vocabulary/function-word::lang-english--atom-2",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"and\"",
            "spans": [
              [
                457,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/natural/vocabulary/function-word::lang-english--atom-3",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"that\"",
            "spans": [
              [
                442,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/natural/vocabulary/function-word::lang-english--atom-4",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"have\"",
            "spans": [
              [
                629,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/natural/vocabulary/function-word::lang-english--atom-5",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"for\"",
            "spans": [
              [
                1729,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/natural/vocabulary/function-word::lang-english--atom-6",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"with\"",
            "spans": [
              [
                2736,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/natural/vocabulary/function-word::lang-english--atom-7",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"this\"",
            "spans": [
              [
                474,
                0
              ]
            ]
          }
        ],
        "type": "markdown"
      },
      {
        "ctx": [
          {
            "b": "boXZHx(kOkvrl8?3uG^2at4eyaAh4lwObv+yZHI^yH?d1at4KPwmoN*3jpA:aAzQxatbrSzdCqvv@=0%wI4?yByw/[B0b\u0026Myh\u003evFqY)Dez/P@bvTfvOx\u003eeUuau*]Uvrt{hz/{egxjVcpyiarh3jprTAY\u003eP(c$vyuy-\u003eqYB7]D4zGE0MeOnB9y-)zkBz#pZfe4l^Byw/[zddxozGx=nCv+!Ev{}3hwPI^jA:@W4fjXHkvj#hpBy/GgvqEPhzGGDgC42h]xjU%(A::67z/e])vrt{hzdN/$wmoN*e]2DCzxKrHyh\u003evFAV=#Bx(W={Bz(hBdiYafB-IpYb4#7uAc15[fk\u003e#Pvp%d*vq)\u0026pB8V5wwPxzkvj#UjB8Mhwv}xZmwmoN*fj/xIwPzV%y+GHuBy/GovqGp-wO#71vruj4zEl{.Byu*Fwnc6d3jpxdb64mlz/P@bB7Gxnx\u003e7Z.A+eV63s!j0y-\u003eqYB7]D4zGE0MeOnB9y-\u003eqYA+fukC{1)=eIg*FCRa2KzdK?Ah6sF?at1YWbXh4ry+E5Ce]2DCzxZiJazL)seMi=Aau*[(wmoN*fc\u003ecZyiarha{[V4az#ataAIWAwPw]oB7F%ayZIyfxkX]kB-5rOfjO\u003cfflpSzvq]^fy\u0026r-)aBCqDAuD\u0026iata^2ay[]5vj#CnvpR09B8L}6",
            "ln": 0,
            "col": 1,
            "line": 1
          }
        ],
        "depth": 1,
        "facts": {
          "imp": [
            [
              "",
              "set"
            ],
            [
              "",
              "mkdir"
            ],
            [
              "",
              "go"
            ],
            [
              "",
              "jq"
            ],
            [
              "",
              "curl"
            ],
            [
              "",
              "jq"
            ],
            [
              "",
              "curl"
            ],
            [
              "",
              "jq"
            ]
          ],
          "tgt": [
            "curl",
            "go",
            "jq",
            "mkdir",
            "set"
          ],
          "metrics": {
            "ast": {
              "max_depth": 7,
              "call_count": 8,
              "node_count": 109
            },
            "file": {
              "size": 540,
              "entropy": 4.84
            },
            "text": {
              "lines": 16,
              "top_char": 97,
              "digit_ratio": 0.01,
              "space_count": 46,
              "char_entropy": 4.84,
              "unique_chars": 46,
              "top_char_null": 0,
              "string_density": 0.38,
              "top_char_ratio": 0.08,
              "avg_line_length": 32.75,
              "max_line_length": 140,
              "empty_line_ratio": 0.38,
              "last_line_length": 53,
              "whitespace_ratio": 0.11,
              "identifier_density": 2.75,
              "line_length_stddev": 41.75,
              "max_whitespace_run": 1,
              "normalized_string_count": 1.5,
              "suspicious_string_ratio": 0.17,
              "suspicious_identifier_ratio": 0.04,
              "normalized_unique_identifiers": 6.5
            },
            "binds": {
              "count": 3
            },
            "binary": {
              "peak_region_bytes": 540,
              "peak_region_entropy": 4.84
            },
            "strings": {
              "bytes": 271,
              "count": 6,
              "shell": 1,
              "url_count": 1,
              "avg_length": 45.17,
              "max_length": 134,
              "avg_entropy": 3.74,
              "entropy_stddev": 0.47
            },
            "comments": {
              "chars": 79,
              "count": 3,
              "lines": 3,
              "to_code_ratio": 0.23
            },
            "identifiers": {
              "count": 44,
              "unique": 26,
              "avg_length": 8.5,
              "max_length": 91,
              "min_length": 1,
              "avg_entropy": 1.81,
              "reuse_ratio": 0.59,
              "length_stddev": 17.14,
              "sequential_names": 1,
              "single_char_count": 3,
              "single_char_ratio": 0.12,
              "high_entropy_count": 2,
              "high_entropy_ratio": 0.08,
              "all_lowercase_ratio": 0.42
            }
          }
        },
        "id": 2,
        "mol": "H₃(Cm₆FPo)",
        "path": "github.com-danp-nspoweroutages-v0.0.0-20260714224501-823488c6a0cc.zip!!github.com/danp/nspoweroutages@v0.0.0-20260714224501-823488c6a0cc/bin/scrape.sh",
        "pid": 0,
        "risk": 4,
        "sha": "2b7aef7bcc2f066506e397673e6dbe42ca067cde5b30b18f785f49be6fde5f9c",
        "size": 540,
        "supp": [
          {
            "by": [
              {
                "id": "micro-behaviors/communications/http/download/curl::curl-output-file",
                "spans": [
                  [
                    373,
                    47
                  ]
                ]
              }
            ],
            "id": "micro-behaviors/communications/http/curl::curl-silent-stdout",
            "crit": "notable",
            "kind": "unless"
          }
        ],
        "traits": [
          {
            "id": "micro-behaviors/communications/http/curl::curl-command-call",
            "conf": 0.96,
            "crit": 3,
            "desc": "Shell invokes the curl command",
            "spans": [
              [
                125,
                4
              ]
            ]
          },
          {
            "id": "micro-behaviors/communications/http/curl::curl-command-remote-url",
            "conf": 0.85,
            "crit": 3,
            "desc": "curl command names a remote HTTP(S) URL",
            "spans": [
              [
                125,
                49
              ]
            ]
          },
          {
            "id": "micro-behaviors/communications/http/curl::curl-command-url-or-option",
            "conf": 0.7,
            "crit": 3,
            "desc": "curl command includes URL or option",
            "spans": [
              [
                124,
                14
              ],
              [
                372,
                14
              ]
            ]
          },
          {
            "id": "micro-behaviors/communications/http/curl::curl-max-time",
            "conf": 0.85,
            "crit": 3,
            "desc": "curl --max-time timeout flag",
            "spans": [
              [
                373,
                44
              ]
            ]
          },
          {
            "id": "micro-behaviors/communications/http/curl::curl-silent",
            "conf": 0.92,
            "crit": 3,
            "desc": "curl command uses silent or fail flags",
            "uses": [
              0,
              5
            ],
            "spans": [
              [
                125,
                13
              ]
            ]
          },
          {
            "id": "micro-behaviors/communications/http/curl::curl-silent-fail-flags-text",
            "conf": 0.86,
            "crit": 3,
            "desc": "curl text contains silent or fail flags",
            "spans": [
              [
                125,
                13
              ]
            ]
          },
          {
            "id": "micro-behaviors/communications/http/curl::curl-silent-long-flag-url",
            "conf": 0.9,
            "crit": 3,
            "desc": "Curl silent option with remote URL",
            "spans": [
              [
                125,
                29
              ]
            ]
          },
          {
            "id": "micro-behaviors/communications/http/download/cli::curl-variable-path-segment",
            "atk": "T1071.001",
            "conf": 0.9,
            "crit": 3,
            "desc": "curl request with variable URL path segment",
            "spans": [
              [
                373,
                59
              ]
            ]
          },
          {
            "id": "micro-behaviors/communications/http/download/cli::fetch-output-flag-script",
            "conf": 0.85,
            "crit": 3,
            "desc": "Script sets curl or wget output file",
            "uses": [
              9,
              16
            ],
            "spans": [
              [
                373,
                49
              ]
            ]
          },
          {
            "id": "micro-behaviors/communications/http/download/cli::fetch-output-option-script",
            "conf": 0.85,
            "crit": 3,
            "desc": "curl/wget text includes output option",
            "spans": [
              [
                373,
                49
              ]
            ]
          },
          {
            "id": "micro-behaviors/communications/http/download/curl::curl-output-file",
            "atk": "T1105",
            "conf": 0.7,
            "crit": 3,
            "desc": "References curl file-output option",
            "spans": [
              [
                373,
                47
              ]
            ]
          },
          {
            "id": "micro-behaviors/communications/http/download/curl::curl-output-file-command",
            "atk": "T1105",
            "conf": 0.94,
            "crit": 3,
            "desc": "Executes curl with output-path option",
            "spans": [
              [
                373,
                49
              ]
            ]
          },
          {
            "id": "micro-behaviors/communications/http/download/curl::curl-output-redirect",
            "atk": "T1105",
            "conf": 0.8,
            "crit": 3,
            "desc": "curl output redirected to file",
            "spans": [
              [
                373,
                92
              ]
            ]
          },
          {
            "id": "micro-behaviors/communications/http/download/curl::curl-silent-output",
            "conf": 0.75,
            "crit": 3,
            "desc": "Silent curl with output path",
            "spans": [
              [
                373,
                49
              ]
            ]
          },
          {
            "id": "micro-behaviors/communications/http/download/curl::source-curl-output-option",
            "conf": 0.9,
            "crit": 3,
            "desc": "curl output file source",
            "spans": [
              [
                373,
                92
              ]
            ]
          },
          {
            "id": "micro-behaviors/communications/http/download/curl::subshell-curl",
            "atk": "T1105",
            "conf": 0.9,
            "crit": 3,
            "desc": "curl invoked inside command substitution",
            "spans": [
              [
                123,
                6
              ]
            ]
          },
          {
            "id": "micro-behaviors/communications/http/request/client::curl-wget-command-position",
            "conf": 0.9,
            "crit": 3,
            "desc": "curl/wget in shell command position",
            "spans": [
              [
                373,
                5
              ]
            ]
          },
          {
            "id": "micro-behaviors/communications/http/request/client::fetch-command-with-var",
            "conf": 0.9,
            "crit": 3,
            "desc": "curl or wget references a variable expression",
            "spans": [
              [
                373,
                59
              ]
            ]
          },
          {
            "id": "micro-behaviors/communications/http/url/scheme::http-url-literal",
            "conf": 0.75,
            "crit": 3,
            "desc": "HTTP URL string literal",
            "spans": [
              [
                265,
                78
              ]
            ]
          },
          {
            "id": "micro-behaviors/communications/url/reference::shell-http-url-reference",
            "conf": 0.85,
            "crit": 3,
            "desc": "HTTP or HTTPS URL reference",
            "spans": [
              [
                146,
                91
              ],
              [
                265,
                78
              ]
            ]
          },
          {
            "id": "micro-behaviors/fs/directory/mkdir::mkdir-command",
            "conf": 0.8,
            "crit": 3,
            "desc": "Command text invokes mkdir",
            "spans": [
              [
                30,
                14
              ]
            ]
          },
          {
            "id": "micro-behaviors/process/create/shell/spawn::command-substitution",
            "conf": 1.0,
            "crit": 3,
            "desc": "Shell command-substitution syntax",
            "spans": [
              [
                123,
                103
              ]
            ]
          },
          {
            "id": "metadata/build/archive::github-versioned-source-archive-member",
            "conf": 0.95,
            "crit": 2,
            "desc": "GitHub versioned source archive member"
          },
          {
            "id": "metadata/file/extension/identity::shell-a",
            "conf": 1.0,
            "crit": 2,
            "desc": "POSIX shell script extension"
          }
        ],
        "type": "shell"
      },
      {
        "analysis_gaps": [
          "flow-graph-limited"
        ],
        "ctx": [
          {
            "b": "Aa9l(vp%c]zddc@3jpG:AbP=sasEN6b4t?twPG452{J}#v@C)(zF7RqB8L}u3jd[*zfc%e2{K84a{[S2y\u0026r@g3jd[]wPPOsBAzEC3jd[{B0p}$b6dWyBrR4#b6d\u003cDv@Dmda{[S2B98CpzFa2m3jd[#x(dA93jm7-xk8E3BZ=$kz/4d7B.bPex([nWx(tUqz/G]hA^n\u0026odgcz]B-7Xizddc@c[co=3jg\u0026]efFIAAV^zaay]ysdgcw}w/$V9AV=I*az$[faBsC432BJ)e\u003efn\u003evqEu6A=JPo34ic/31X0:auzUdyiarhe(2#4mq=QNwb",
            "ln": 0,
            "col": 1,
            "line": 1
          },
          {
            "b": "oj-w\u003eB98CpzF6p.r:/!!w]8x]Bt+@.Ef{s6D2NsqB-p(1By=OoBAhIlBrC]q2#\u003eRQwGS9rBzkP6e(VL4wEn-uz!T9hB0aW)AbPDdBp9B63taA#v\u003c2r2c[cn!B-p(1By+",
            "ln": 307,
            "col": 2,
            "line": 30
          },
          {
            "b": "AaAy0wQw?RazbFje\u003e6/3z/PCrb5zgawftYbv{%E[z/dPUc3HK:az2Oldgcxf3jm8WwPI/waz2OlauzUdxMOune\u003eoF{c)AtDBz#pZfe4uSB8Mhwv}x.2A+3+tB8V5wwPxziCxkxTx(4%7A=+(5xFaglBt4MvB7]XGv%8*jwO#P%A+fidA=-{PxMO9ca$i\u003c9x\u003ewG0A=JoCjS[SRy-[6i2)\u003eS-BAIRwaA.Tlvru7cEjMHMzfdy0A=M8sw*!\u003cowPP%Qc3HK:az2Oldgcxf3jglOw[u09A+frhe\u003c:F!C}IE2z/YFrdgcy*vK@TkA=Jo-jS[DSe(Dm?wi\u003e3Fc#@)uA4TE}wo/Qh329#]wPz/laW3@=x(1]s3jd2VwPS6nzxK7vwmoN\u003eDWNB/w]hSxmriA!A+lZzxjVfCashjQefFIAAW.t4Ef{q/fe1CYBzU?pvSb!5aAR43y?kkuByx5$vrb)3ByGf0C{4iHaARc33jglYv\u003en:lA=Jo-jS[xQADL*",
            "ln": 497,
            "col": 11,
            "line": 42
          }
        ],
        "depth": 1,
        "facts": {
          "imp": [
            [
              "",
              "do"
            ],
            [
              "",
              "log.Fatal"
            ],
            [
              "",
              "json.NewEncoder"
            ],
            [
              "",
              "enc.Encode"
            ],
            [
              "",
              "time.LoadLocation"
            ],
            [
              "",
              "fmt.Errorf"
            ],
            [
              "",
              "http.Get"
            ],
            [
              "",
              "fmt.Errorf"
            ],
            [
              "",
              "resp.Body.Close"
            ],
            [
              "",
              "io.ReadAll"
            ],
            [
              "",
              "fmt.Errorf"
            ],
            [
              "",
              "goquery.NewDocumentFromReader"
            ],
            [
              "",
              "bytes.NewReader"
            ],
            [
              "",
              "fmt.Errorf"
            ],
            [
              "",
              "doc.Find.Each"
            ],
            [
              "",
              "doc.Find"
            ],
            [
              "",
              "sel.Find"
            ],
            [
              "",
              "strings.Contains"
            ],
            [
              "",
              "tds.Text"
            ],
            [
              "",
              "tds.Length"
            ],
            [
              "",
              "strings.TrimSpace"
            ],
            [
              "",
              "tds.First.Text"
            ],
            [
              "",
              "tds.First"
            ],
            [
              "",
              "strings.TrimSpace"
            ],
            [
              "",
              "tds.Next.Text"
            ],
            [
              "",
              "tds.Next"
            ],
            [
              "",
              "strings.HasPrefix"
            ],
            [
              "",
              "strings.TrimPrefix"
            ],
            [
              "",
              "time.ParseInLocation"
            ],
            [
              "",
              "fmt.Errorf"
            ],
            [
              "",
              "t.UTC"
            ],
            [
              "",
              "strconv.ParseFloat"
            ],
            [
              "",
              "fmt.Errorf"
            ],
            [
              "",
              "append"
            ],
            [
              "",
              "fmt.Errorf"
            ],
            [
              "",
              "up.Time.IsZero"
            ],
            [
              "",
              "fmt.Errorf"
            ],
            [
              "",
              "sort.Slice"
            ],
            [
              "",
              "bytes"
            ],
            [
              "",
              "encoding/json"
            ],
            [
              "",
              "fmt"
            ],
            [
              "",
              "github.com/PuerkitoBio/goquery"
            ],
            [
              "",
              "io"
            ],
            [
              "",
              "log"
            ],
            [
              "",
              "net/http"
            ],
            [
              "",
              "os"
            ],
            [
              "",
              "sort"
            ],
            [
              "",
              "strconv"
            ],
            [
              "",
              "strings"
            ],
            [
              "",
              "time"
            ]
          ],
          "mbr": [
            "bytes.NewReader",
            "doc.Find",
            "doc.Find.Each",
            "enc.Encode",
            "fmt.Errorf",
            "goquery.NewDocumentFromReader",
            "http.Get",
            "io.ReadAll",
            "json.NewEncoder",
            "log.Fatal",
            "os.Stdout",
            "resp.Body",
            "resp.Body.Close",
            "sel.Find",
            "sort.Slice",
            "strconv.ParseFloat",
            "strings.Contains",
            "strings.HasPrefix",
            "strings.TrimPrefix",
            "strings.TrimSpace",
            "t.UTC",
            "tds.First",
            "tds.First.Text",
            "tds.Length",
            "tds.Next",
            "tds.Next.Text",
            "tds.Text",
            "time.LoadLocation",
            "time.ParseInLocation",
            "up.Points",
            "up.Time",
            "up.Time.IsZero"
          ],
          "tgt": [
            "append",
            "bytes.NewReader",
            "do",
            "doc.Find",
            "doc.Find.Each",
            "enc.Encode",
            "fmt.Errorf",
            "goquery.NewDocumentFromReader",
            "http.Get",
            "io.ReadAll",
            "json.NewEncoder",
            "log.Fatal",
            "resp.Body.Close",
            "sel.Find",
            "sort.Slice",
            "strconv.ParseFloat",
            "strings.Contains",
            "strings.HasPrefix",
            "strings.TrimPrefix",
            "strings.TrimSpace",
            "t.UTC",
            "tds.First",
            "tds.First.Text",
            "tds.Length",
            "tds.Next",
            "tds.Next.Text",
            "tds.Text",
            "time.LoadLocation",
            "time.ParseInLocation",
            "up.Time.IsZero"
          ],
          "funcs": [
            [
              "main",
              163
            ],
            [
              "do",
              392
            ]
          ],
          "metrics": {
            "ast": {
              "op.lt": 1,
              "op.ne": 9,
              "max_depth": 21,
              "call_count": 38,
              "node_count": 945,
              "member_count": 32,
              "op_density.lt": 0,
              "op_density.ne": 0.01,
              "max_array_length": 2,
              "max_member_depth": 3
            },
            "file": {
              "size": 2213,
              "entropy": 5.12
            },
            "text": {
              "lines": 117,
              "top_char": 114,
              "tab_count": 139,
              "digit_ratio": 0.02,
              "space_count": 193,
              "char_entropy": 5.12,
              "unique_chars": 75,
              "top_char_null": 0,
              "import_density": 10.26,
              "string_density": 0.24,
              "top_char_ratio": 0.07,
              "avg_line_length": 17.91,
              "max_line_length": 100,
              "empty_line_ratio": 0.18,
              "last_line_length": 1,
              "whitespace_ratio": 0.2,
              "identifier_density": 1.57,
              "line_length_stddev": 20.46,
              "max_whitespace_run": 3,
              "normalized_import_count": 1.11,
              "normalized_string_count": 2.59,
              "normalized_function_count": 0.18,
              "imports_to_functions_ratio": 6,
              "strings_to_functions_ratio": 14,
              "suspicious_identifier_ratio": 0.05,
              "normalized_unique_identifiers": 10.63,
              "identifiers_to_functions_ratio": 36.5
            },
            "binary": {
              "peak_region_bytes": 2213,
              "peak_region_entropy": 5.12
            },
            "source": {
              "class_count": 2,
              "function_count": 2
            },
            "imports": {
              "count": 12,
              "stdlib_count": 11,
              "stdlib_ratio": 0.92,
              "third_party_count": 1,
              "third_party_ratio": 0.08
            },
            "strings": {
              "bytes": 376,
              "count": 28,
              "url_count": 2,
              "avg_length": 13.43,
              "max_length": 74,
              "avg_entropy": 2.79,
              "entropy_stddev": 0.9
            },
            "comments": {
              "chars": 70,
              "count": 2,
              "lines": 2,
              "to_code_ratio": 0.02
            },
            "functions": {
              "count": 4,
              "density": 1.71,
              "code_ratio": 0.75,
              "length_stddev": 35,
              "avg_name_length": 3,
              "no_params_count": 2,
              "avg_length_lines": 44,
              "max_length_lines": 79,
              "min_length_lines": 9
            },
            "identifiers": {
              "count": 184,
              "unique": 73,
              "avg_length": 5.08,
              "max_length": 21,
              "min_length": 1,
              "avg_entropy": 1.96,
              "reuse_ratio": 0.4,
              "length_stddev": 3.3,
              "has_digit_ratio": 0.01,
              "sequential_names": 4,
              "single_char_count": 5,
              "single_char_ratio": 0.07,
              "high_entropy_count": 2,
              "high_entropy_ratio": 0.03,
              "all_lowercase_ratio": 0.53,
              "all_uppercase_ratio": 0.03,
              "numeric_suffix_count": 1,
              "underscore_prefix_count": 1
            }
          }
        },
        "id": 3,
        "mol": "H(Cm₂)Md(In₃)",
        "path": "github.com-danp-nspoweroutages-v0.0.0-20260714224501-823488c6a0cc.zip!!github.com/danp/nspoweroutages@v0.0.0-20260714224501-823488c6a0cc/cmd/scrape-load/main.go",
        "pid": 0,
        "risk": 3,
        "sha": "7969c12b509cf36fd18a096bd71093a31f3193aaa74af824662f53b8daeeb917",
        "size": 2213,
        "traits": [
          {
            "id": "metadata/import/go/encoding/json::encoding/json",
            "conf": 0.95,
            "crit": 3,
            "desc": "imports encoding/json",
            "spans": [
              [
                33,
                13
              ]
            ]
          },
          {
            "id": "metadata/import/go/net/http::net/http",
            "conf": 0.95,
            "crit": 3,
            "desc": "imports net/http",
            "spans": [
              [
                70,
                8
              ]
            ]
          },
          {
            "id": "metadata/import/go/os::os",
            "conf": 0.95,
            "crit": 3,
            "desc": "imports os",
            "spans": [
              [
                82,
                2
              ]
            ]
          },
          {
            "id": "micro-behaviors/communications/http/get::go-http-get-url-call",
            "atk": "T1071.001",
            "mbc": "C0002",
            "conf": 0.9,
            "crit": 3,
            "desc": "Go HTTP client Get URL call",
            "spans": [
              [
                561,
                8
              ]
            ]
          },
          {
            "id": "micro-behaviors/communications/http/get::http-get",
            "atk": "T1071.001",
            "mbc": "C0002",
            "conf": 0.85,
            "crit": 3,
            "desc": "Go http.Get call",
            "spans": [
              [
                561,
                8
              ]
            ]
          },
          {
            "id": "micro-behaviors/communications/http/response::go-read-http-response-body",
            "conf": 0.9,
            "crit": 3,
            "desc": "Go reads an HTTP response body",
            "spans": [
              [
                751,
                21
              ]
            ]
          },
          {
            "id": "metadata/build/archive::github-versioned-source-archive-member",
            "conf": 0.95,
            "crit": 2,
            "desc": "GitHub versioned source archive member"
          },
          {
            "id": "metadata/import/go/bytes::bytes",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports bytes",
            "spans": [
              [
                24,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/go/fmt::fmt",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports fmt",
            "spans": [
              [
                50,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/go/github/com/puerkitobio/goquery::github/com/puerkitobio/goquery",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports github.com/PuerkitoBio/goquery",
            "spans": [
              [
                127,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/go/io::io",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports io",
            "spans": [
              [
                57,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/go/log::log",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports log",
            "spans": [
              [
                63,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/go/sort::sort",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports sort",
            "spans": [
              [
                88,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/go/strconv::strconv",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports strconv",
            "spans": [
              [
                96,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/go/strings::strings",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports strings",
            "spans": [
              [
                107,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/go/time::time",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports time",
            "spans": [
              [
                118,
                0
              ]
            ]
          }
        ],
        "type": "go"
      },
      {
        "analysis_gaps": [
          "flow-graph-limited"
        ],
        "ctx": [
          {
            "b": "Aa9l(vp%c]zddc@3jpG:AbP=sasEN6b4UU4z!9N1xd[1vz/c:a2{J$#BrR4#b57%t3jd[)z!ym32{Km#Bt4rHBz@Ah2{Kqea{[S2B98Cjz/f.x3mMq?fe1CqwPRA}aARpdawbNdp9s7QByuqmB7F(8vTf8fBAzE.fe4l^Byw/[zddxozGx=nCv+!Ev{}34CYWIqzEEumwmYvYB.(dLxMO9cayPd#3nj4Pv@Di[x(mG8x(n3hayMylx(mN1wGUP0y?kja3taA#v\u003c2R%x(ksFaBsC4C42zlw/$X%ByO#}ATAa-vrt{eaz2OlauzUdw?EXbByO#jdgcw}w/$V9AV=I*",
            "ln": 0,
            "col": 1,
            "line": 1
          },
          {
            "b": "mq=QNwmY^fz/WKfByYrjBsvL6wO#0gmq=QNwmWf1vrt{b3vJl*v@DmaBrCa9w)]*#Bv6zSwMqS4auZ?\u003exMOuniXJd8B-.58wO\u003e\u003c{e]C-Hz*b=ke[nryA+frgB-H#6B1.6jByu?lCYWIqzEEumx(n37A=$(cuUr}/wPzj3x(v(@wmoN*a{[W0D2Nsqw[u6]xK#ibB98CBv@@\u0026u3jgfIB7FuHoDXy#A+PA73vJl*w{503asH?AdRrmlv}YB]diJklByO#jdiH3yu21C0zz1*}CthT\u0026B75Y)efFIAA=k$EaBsC4v%8*defFIAAV^zaaz9loB-IIlzGF(RoEIs%",
            "ln": 316,
            "col": 17,
            "line": 23
          },
          {
            "b": "fFUBua$K\u0026XfF+ysgb6[6ar\u0026G}fF+Esa$K\u0026XfF+ysgbp48ar\u0026G}fF+Eub7f!8w]zYjy?mGjx\u003eholau*]4aBsC4329])iZ1Q1wog%et)Z(Ax\u003ehocjS[DHB6yvWt)Z]B32:Abaz2OlauzUdw?EXbByO#WB-.58wKZxIwHI5hA+)oHb5.QCvp%d)fcR[",
            "ln": 832,
            "col": 31,
            "line": 43
          },
          {
            "b": "2})}Ol$G}GwPw]7vrt{2x(+zoA+e\u0026]A=L-4aAIDzwmYN*By=O6zH3tqx(mMav{%s#B-I57ayMyewP?T3ayO.$C4Aok2)\u003erTaz+Rbc#0ivau*]Svrl0RvrufRwO@Sq3jc",
            "ln": 1072,
            "col": 2,
            "line": 57
          },
          {
            "b": "diH=pats{+3jd2VwPS6nzxJ\u003efefF?AyZHF%3jm8.vr9Ghz!pbjvrUH\u0026Byw/[mRMWI3jgAUaz2OlauzUdyiarhe(=!avrcB5vqEu7wgO\u0026IA=kLsj0n9PAV=I*az$[faBsC4336Q0B-Ivxz!pKywPz!#34ic/32:AdmRMWIl$7gCauZ\u0026:vqxB5tu#e\u0026Byw/[mRMWIl$7gCefDR$az+Rbc#%lre\u003efL\u003ewKG%GvjrSj31!9@ayuVxA+n\u00268iZ1QavqYZ?aAv",
            "ln": 1837,
            "col": 11,
            "line": 96
          },
          {
            "b": "y?$k6wGU(8y+u6bB-7Xiw[u6]xEF0CB98CpzF7yvc%G$^D30QGaz2Olz/NoHDKp71wPI/waz2OlauzUdxMOune\u003eoF{d0l%C329#]wPz/laW3@=x(1]s3jd2VwPS6nzxJ?hy+cYuA=IG[Ef{q/wmYv:AV/ylB8S-#z!abClU{WZwHF#m3jge)az2OlauzUdx(tR4wNPany?$IuwPI/ylt{yWdgcw}w/$V9AV=I*az$[faBsC4336Q0B-IvxzFr]raz2Ol3jha/3jgAUaAz4mA4U7hvruTklVlHDau.\u003egg+Z:eDKp5=A+funA=91qx(2syzFr[]34ic/329#]A+frhe(M\u003e2BAIT(z!9A4aW3@6fFBR@3jd2VwPS6nzu",
            "ln": 2771,
            "col": 6,
            "line": 141
          }
        ],
        "depth": 1,
        "facts": {
          "imp": [
            [
              "",
              "f.fetch"
            ],
            [
              "",
              "log.Fatal"
            ],
            [
              "",
              "json.NewEncoder"
            ],
            [
              "",
              "enc.Encode"
            ],
            [
              "",
              "f.currentURL"
            ],
            [
              "",
              "make"
            ],
            [
              "",
              "len"
            ],
            [
              "",
              "f.fetchOutageFile"
            ],
            [
              "",
              "len"
            ],
            [
              "",
              "len"
            ],
            [
              "",
              "delete"
            ],
            [
              "",
              "len"
            ],
            [
              "",
              "append"
            ],
            [
              "",
              "append"
            ],
            [
              "",
              "strconv.Itoa"
            ],
            [
              "",
              "make"
            ],
            [
              "",
              "append"
            ],
            [
              "",
              "fetch"
            ],
            [
              "",
              "len"
            ],
            [
              "",
              "json.Unmarshal"
            ],
            [
              "",
              "make"
            ],
            [
              "",
              "len"
            ],
            [
              "",
              "json.Unmarshal"
            ],
            [
              "",
              "append"
            ],
            [
              "",
              "fetch"
            ],
            [
              "",
              "fmt.Errorf"
            ],
            [
              "",
              "json.Unmarshal"
            ],
            [
              "",
              "fmt.Errorf"
            ],
            [
              "",
              "http.Get"
            ],
            [
              "",
              "resp.Body.Close"
            ],
            [
              "",
              "io.ReadAll"
            ],
            [
              "",
              "fmt.Errorf"
            ],
            [
              "",
              "encoding/json"
            ],
            [
              "",
              "fmt"
            ],
            [
              "",
              "io"
            ],
            [
              "",
              "log"
            ],
            [
              "",
              "net/http"
            ],
            [
              "",
              "os"
            ],
            [
              "",
              "strconv"
            ]
          ],
          "mbr": [
            "enc.Encode",
            "f.baseURL",
            "f.currentURL",
            "f.fetch",
            "f.fetchOutageFile",
            "fd.Body",
            "fd.Desc",
            "fd.Desc.Cluster",
            "fmt.Errorf",
            "http.Get",
            "io.ReadAll",
            "json.NewEncoder",
            "json.Unmarshal",
            "log.Fatal",
            "of.FileData",
            "os.Stdout",
            "r.Directory",
            "resp.Body",
            "resp.Body.Close",
            "resp.StatusCode",
            "rof.FileData",
            "strconv.Itoa"
          ],
          "tgt": [
            "append",
            "delete",
            "enc.Encode",
            "f.currentURL",
            "f.fetch",
            "f.fetchOutageFile",
            "fetch",
            "fmt.Errorf",
            "http.Get",
            "io.ReadAll",
            "json.NewEncoder",
            "json.Unmarshal",
            "len",
            "log.Fatal",
            "make",
            "resp.Body.Close",
            "strconv.Itoa"
          ],
          "funcs": [
            [
              "main",
              209
            ],
            [
              "fetch",
              500
            ],
            [
              "fetchOutageFile",
              1647
            ],
            [
              "currentURL",
              2233
            ],
            [
              "fetch",
              2782
            ]
          ],
          "metrics": {
            "ast": {
              "op.eq": 4,
              "op.gt": 2,
              "op.lt": 1,
              "op.ne": 11,
              "op.add": 8,
              "op.sub": 1,
              "op.band": 3,
              "max_depth": 20,
              "call_count": 32,
              "node_count": 1277,
              "member_count": 22,
              "op_density.eq": 0,
              "op_density.gt": 0,
              "op_density.lt": 0,
              "op_density.ne": 0.01,
              "op_density.add": 0.01,
              "op_density.sub": 0,
              "op_density.band": 0,
              "max_array_length": 2,
              "max_concat_chain": 4,
              "max_member_depth": 3
            },
            "file": {
              "size": 3395,
              "entropy": 5.08
            },
            "text": {
              "lines": 180,
              "top_char": 101,
              "tab_count": 175,
              "digit_ratio": 0.03,
              "space_count": 379,
              "char_entropy": 5.08,
              "unique_chars": 75,
              "top_char_null": 0,
              "import_density": 3.89,
              "string_density": 0.16,
              "top_char_ratio": 0.07,
              "avg_line_length": 17.86,
              "max_line_length": 101,
              "empty_line_ratio": 0.21,
              "last_line_length": 1,
              "whitespace_ratio": 0.22,
              "identifier_density": 1.38,
              "line_length_stddev": 19.94,
              "max_whitespace_run": 1,
              "normalized_import_count": 0.52,
              "normalized_string_count": 2.09,
              "normalized_function_count": 0.37,
              "imports_to_functions_ratio": 1.4,
              "strings_to_functions_ratio": 5.6,
              "suspicious_identifier_ratio": 0.08,
              "normalized_unique_identifiers": 8.68,
              "identifiers_to_functions_ratio": 13
            },
            "binary": {
              "peak_region_bytes": 3395,
              "peak_region_entropy": 5.09
            },
            "source": {
              "class_count": 4,
              "function_count": 4
            },
            "imports": {
              "count": 7,
              "stdlib_count": 7,
              "stdlib_ratio": 1
            },
            "strings": {
              "bytes": 274,
              "count": 28,
              "url_count": 1,
              "avg_length": 9.79,
              "max_length": 76,
              "path_count": 1,
              "avg_entropy": 2.27,
              "empty_count": 3,
              "entropy_stddev": 1.14
            },
            "comments": {
              "chars": 448,
              "count": 10,
              "lines": 10,
              "url_count": 1,
              "to_code_ratio": 0.06
            },
            "functions": {
              "count": 8,
              "density": 2.78,
              "avg_params": 0.4,
              "code_ratio": 0.76,
              "max_params": 1,
              "length_stddev": 14.74,
              "avg_name_length": 7.8,
              "no_params_count": 3,
              "avg_length_lines": 27.2,
              "max_length_lines": 54,
              "min_length_lines": 10,
              "single_char_params": 1,
              "avg_param_name_length": 2.5
            },
            "identifiers": {
              "count": 249,
              "unique": 65,
              "avg_length": 5.35,
              "max_length": 15,
              "min_length": 1,
              "avg_entropy": 1.94,
              "reuse_ratio": 0.26,
              "length_stddev": 3.45,
              "sequential_names": 5,
              "single_char_count": 6,
              "single_char_ratio": 0.09,
              "high_entropy_count": 1,
              "high_entropy_ratio": 0.02,
              "all_lowercase_ratio": 0.62,
              "all_uppercase_ratio": 0.02,
              "underscore_prefix_count": 1
            }
          }
        },
        "id": 4,
        "mol": "H₂(Cm₃Db)Md(In₃)",
        "path": "github.com-danp-nspoweroutages-v0.0.0-20260714224501-823488c6a0cc.zip!!github.com/danp/nspoweroutages@v0.0.0-20260714224501-823488c6a0cc/cmd/scrape-outages/main.go",
        "pid": 0,
        "risk": 3,
        "sha": "e88097e358f377327d3c80216ce2c16c708054b36d8cae6b4eec0d5acb350284",
        "size": 3395,
        "supp": [
          {
            "by": [
              {
                "id": "tree-sitter",
                "spans": [
                  [
                    14,
                    76
                  ]
                ]
              }
            ],
            "id": "metadata/lang/source/declaration::go-constant-only-file",
            "crit": "notable",
            "kind": "unless"
          }
        ],
        "traits": [
          {
            "id": "metadata/import/go/encoding/json::encoding/json",
            "conf": 0.95,
            "crit": 3,
            "desc": "imports encoding/json",
            "spans": [
              [
                24,
                13
              ]
            ]
          },
          {
            "id": "metadata/import/go/net/http::net/http",
            "conf": 0.95,
            "crit": 3,
            "desc": "imports net/http",
            "spans": [
              [
                61,
                8
              ]
            ]
          },
          {
            "id": "metadata/import/go/os::os",
            "conf": 0.95,
            "crit": 3,
            "desc": "imports os",
            "spans": [
              [
                73,
                2
              ]
            ]
          },
          {
            "id": "micro-behaviors/communications/http/get::http-get",
            "atk": "T1071.001",
            "mbc": "C0002",
            "conf": 0.85,
            "crit": 3,
            "desc": "Go http.Get call",
            "spans": [
              [
                2835,
                8
              ]
            ]
          },
          {
            "id": "micro-behaviors/communications/http/response::go-read-http-response-body",
            "conf": 0.9,
            "crit": 3,
            "desc": "Go reads an HTTP response body",
            "spans": [
              [
                2923,
                21
              ]
            ]
          },
          {
            "id": "micro-behaviors/communications/http/url/scheme::cleartext-http-url-code-literal",
            "conf": 0.9,
            "crit": 3,
            "desc": "Code embeds cleartext HTTP URL literal",
            "spans": [
              [
                380,
                76
              ]
            ]
          },
          {
            "id": "micro-behaviors/data/serialize/json::go-json-unmarshal",
            "mbc": "C0032",
            "conf": 0.85,
            "crit": 3,
            "desc": "Go JSON unmarshal call",
            "spans": [
              [
                1901,
                14
              ]
            ]
          },
          {
            "id": "metadata/build/archive::github-versioned-source-archive-member",
            "conf": 0.95,
            "crit": 2,
            "desc": "GitHub versioned source archive member"
          },
          {
            "id": "metadata/import/go/fmt::fmt",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports fmt",
            "spans": [
              [
                41,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/go/io::io",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports io",
            "spans": [
              [
                48,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/go/log::log",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports log",
            "spans": [
              [
                54,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/go/strconv::strconv",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports strconv",
            "spans": [
              [
                79,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/natural/vocabulary/function-word::lang-english--atom-1",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"the\"",
            "spans": [
              [
                101,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/natural/vocabulary/function-word::lang-english--atom-2",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"and\"",
            "spans": [
              [
                173,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/natural/vocabulary/function-word::lang-english--atom-5",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"for\"",
            "spans": [
              [
                880,
                0
              ]
            ]
          }
        ],
        "type": "go"
      },
      {
        "analysis_gaps": [
          "flow-graph-limited"
        ],
        "ctx": [
          {
            "b": "Aa9l(vp%c]zddc@3jpG:AbP=sasEN6b4UU4z!9N1xd[1vz/c:a2{Km#Bt4rHBz@Ah2{Km#Bt4rHBz@)DBAzFzwPI@q3jd[$z/P}z3jd[$BAh8kxlbm72{KF5B98blxcEV\u00262{K1@Bzb/ae[n*pfk2iwxkzcjxkYwize.drzeZWadgcz]B-7XiraQb)mRcWKxEE%BdS/lyBzkS9e(TnxDKp6@B:b2\u0026jS[AWBz@\u003ccwP}6:A=#1*B:bq-3jgM(CRhJ}zE^M{mS\u0026PUc)yrYwPRu\u003evrt{gyiarha$K\u003cGB-7XqCoyNvBz@\u003cgwPI*ezGxw\u003cA+PSbAX5tNasW",
            "ln": 0,
            "col": 1,
            "line": 1
          },
          {
            "b": "a{[R.x\u003ewG0A=Jo-jS[GXz/dg5wP{NXv@C)?AWVbXe\u003e6U/z!9AccurWsA49\u003c\u003ewPz/laW3@=x(1]s3jd1BBs{15A=k$DwPz/u3jd2!3jhbf3jm8YD2NsqA+frhmRMWIl$7gCaAITBBZ]IoDKp5=l$HBHaAITBBZ]IoDKp5=2$5JKB97#layYncy-)b2B8L}Sb4CCiB97#lb47-:34i}7yiarhiWe9CB7lz43jd2gl)9P{arR^HaAITBx(mL",
            "ln": 378,
            "col": 38,
            "line": 20
          },
          {
            "b": "DKp5=v{%B\u0026ar\u0026G}fFUBse]2DCzx.aG2)*[\u003efcB5dy\u003cvdizxJ\u003euByw/[ayPvmBzbkdBz(avy?m^3y-)tdAV/Eqx(+zovruf9B8JgnBshbLA+funA=bD0ay]hbwN/*#C}GBg2)\u003eiOB09Q*tu#nXB8TP.y?l1yByxI62)*[ADKp5=2)*]fl](CkarR^HarUolas!MUeKpNi3jd1B2)*",
            "ln": 891,
            "col": 13,
            "line": 41
          },
          {
            "b": "aARpdaARphA+3qewP?T3aAIDzBzblbwGUA4wGV8dwGUM4BAh8bA%-iW2})}OBzb98aAIjmB.\u003eOhvR3W5wPS6nzE)uh3jd1Bw[k%9jS)%mA+frhmRMWIl$7gCDKp5=2)\u003e}=2)*[A2$WJCazbHld\u003cc2/k{v\u0026!2)*[AEjLZi2)*]+3jd1B2)\u003cf\u003eiV@3L",
            "ln": 1388,
            "col": 33,
            "line": 62
          },
          {
            "b": "w?EL3B7FuHoDVFvB8(BRrz(G$3jglKByuZywPz/liZ1P$e[OWpv}Wnt3jgAUaz2Olar-(\u003czFr]fDKp5=Bs{3\u003eByw#lwPz/u3jha/3jg(:AV/ylv%e#0u2\u003cH$A7jLTwKG%Gvg0rMz/M$cefFECiZ1QavqYZ?ay[]5vix[72)\u003e=-AV!$8aAz4mA7jLTwKG%Gvg0qEx\u003ewG0A=Jo-jS[GXz/dgczF-*5B7!##c$B\u003eKct3^qj0n9PAV=I*az$[faBsC42)\u003eYamQZyEy:-\u003enAW.t434ic!336P!B%5{\u003cvq{f%zE+eowN/)mazbdk3jha/3jg]+zGE0ZjS)%mA+frhmRMWIl$7gCDKp5=DKp5=2$WJCarR^HarR^Ha$$/bgbyTqyiarh",
            "ln": 1800,
            "col": 2,
            "line": 90
          },
          {
            "b": "A+lZzw[u6]xDReaB8tucv}V#keQ7SvBrA8Dz/^A?tY7\u003cea$K\u003cEdgcxf3vJl*w{503axh][BvG?-v}XRQpJZ+/xjVcjBrA5PwPI%czF7O3diJ%A32K*fauzUdxMOune(2#4q!o#)wLEq(c[bGfzfp7QnmuyDy?l7UzEU7sfkUoxvpS!*vj(qoz/c:Iazb+lv\u003c(KzxMOune(z",
            "ln": 2486,
            "col": 9,
            "line": 131
          }
        ],
        "depth": 1,
        "facts": {
          "imp": [
            [
              "",
              "http.NewServeMux"
            ],
            [
              "",
              "mux.HandleFunc"
            ],
            [
              "",
              "json.NewEncoder.Encode"
            ],
            [
              "",
              "json.NewEncoder"
            ],
            [
              "",
              "t.Error"
            ],
            [
              "",
              "mux.HandleFunc"
            ],
            [
              "",
              "strings.LastIndex"
            ],
            [
              "",
              "json.NewEncoder.Encode"
            ],
            [
              "",
              "json.NewEncoder"
            ],
            [
              "",
              "t.Error"
            ],
            [
              "",
              "httptest.NewServer"
            ],
            [
              "",
              "srv.Close"
            ],
            [
              "",
              "f.fetch"
            ],
            [
              "",
              "t.Fatal"
            ],
            [
              "",
              "json.Unmarshal"
            ],
            [
              "",
              "t.Fatal"
            ],
            [
              "",
              "append"
            ],
            [
              "",
              "sort.Slice"
            ],
            [
              "",
              "sorter"
            ],
            [
              "",
              "sort.Slice"
            ],
            [
              "",
              "sorter"
            ],
            [
              "",
              "cmp.Diff"
            ],
            [
              "",
              "t.Errorf"
            ],
            [
              "",
              "http.NewServeMux"
            ],
            [
              "",
              "mux.HandleFunc"
            ],
            [
              "",
              "json.NewEncoder.Encode"
            ],
            [
              "",
              "json.NewEncoder"
            ],
            [
              "",
              "t.Error"
            ],
            [
              "",
              "httptest.NewServer"
            ],
            [
              "",
              "srv.Close"
            ],
            [
              "",
              "f.fetch"
            ],
            [
              "",
              "t.Fatal"
            ],
            [
              "",
              "len"
            ],
            [
              "",
              "t.Errorf"
            ],
            [
              "",
              "t.Errorf"
            ],
            [
              "",
              "encoding/json"
            ],
            [
              "",
              "github.com/google/go-cmp/cmp"
            ],
            [
              "",
              "net/http"
            ],
            [
              "",
              "net/http/httptest"
            ],
            [
              "",
              "sort"
            ],
            [
              "",
              "strings"
            ],
            [
              "",
              "testing"
            ]
          ],
          "mbr": [
            "cmp.Diff",
            "f.baseURL",
            "f.fetch",
            "http.NewServeMux",
            "httptest.NewServer",
            "json.NewEncoder",
            "json.NewEncoder.Encode",
            "json.Unmarshal",
            "mux.HandleFunc",
            "r.URL",
            "r.URL.Path",
            "re.FileData",
            "resp.Directory",
            "sort.Slice",
            "srv.Close",
            "srv.URL",
            "strings.LastIndex",
            "t.Error",
            "t.Errorf",
            "t.Fatal"
          ],
          "tgt": [
            "append",
            "cmp.Diff",
            "f.fetch",
            "http.NewServeMux",
            "httptest.NewServer",
            "json.NewEncoder",
            "json.NewEncoder.Encode",
            "json.Unmarshal",
            "len",
            "mux.HandleFunc",
            "sort.Slice",
            "sorter",
            "srv.Close",
            "strings.LastIndex",
            "t.Error",
            "t.Errorf",
            "t.Fatal"
          ],
          "funcs": [
            [
              "TestFetch",
              139
            ],
            [
              "TestFetchNoOutages",
              2534
            ]
          ],
          "metrics": {
            "ast": {
              "op.eq": 1,
              "op.lt": 1,
              "op.ne": 8,
              "op.add": 7,
              "op.band": 4,
              "max_depth": 23,
              "call_count": 35,
              "node_count": 1268,
              "member_count": 20,
              "op_density.eq": 0,
              "op_density.lt": 0,
              "op_density.ne": 0.01,
              "op_density.add": 0.01,
              "op_density.band": 0,
              "max_array_length": 2,
              "max_concat_chain": 2,
              "max_member_depth": 3
            },
            "file": {
              "size": 3155,
              "entropy": 5.14
            },
            "text": {
              "lines": 166,
              "top_char": 101,
              "tab_count": 299,
              "digit_ratio": 0.03,
              "space_count": 287,
              "char_entropy": 5.14,
              "unique_chars": 75,
              "top_char_null": 0,
              "import_density": 4.22,
              "string_density": 0.24,
              "top_char_ratio": 0.07,
              "avg_line_length": 18.01,
              "max_line_length": 93,
              "empty_line_ratio": 0.12,
              "last_line_length": 1,
              "whitespace_ratio": 0.24,
              "identifier_density": 1.44,
              "line_length_stddev": 18.55,
              "max_whitespace_run": 8,
              "normalized_import_count": 0.54,
              "normalized_string_count": 3.1,
              "normalized_function_count": 0.16,
              "imports_to_functions_ratio": 3.5,
              "strings_to_functions_ratio": 20,
              "suspicious_identifier_ratio": 0.14,
              "normalized_unique_identifiers": 8.68,
              "identifiers_to_functions_ratio": 32
            },
            "binary": {
              "peak_region_bytes": 3072,
              "peak_region_entropy": 5.22
            },
            "source": {
              "class_count": 2,
              "function_count": 2
            },
            "imports": {
              "count": 7,
              "stdlib_count": 6,
              "stdlib_ratio": 0.86,
              "third_party_count": 1,
              "third_party_ratio": 0.14
            },
            "strings": {
              "bytes": 470,
              "count": 40,
              "url_count": 1,
              "avg_length": 11.75,
              "max_length": 31,
              "path_count": 3,
              "avg_entropy": 2.73,
              "empty_count": 1,
              "entropy_stddev": 0.98
            },
            "comments": {
              "chars": 256,
              "count": 5,
              "lines": 5,
              "to_code_ratio": 0.03
            },
            "functions": {
              "count": 4,
              "density": 1.2,
              "avg_params": 1,
              "code_ratio": 0.92,
              "max_params": 1,
              "length_stddev": 44,
              "over_100_lines": 1,
              "avg_name_length": 13.5,
              "avg_length_lines": 76,
              "max_length_lines": 120,
              "min_length_lines": 32,
              "high_entropy_names": 1,
              "single_char_params": 2,
              "avg_param_name_length": 1
            },
            "identifiers": {
              "count": 239,
              "unique": 64,
              "avg_length": 5.19,
              "max_length": 18,
              "min_length": 1,
              "avg_entropy": 1.82,
              "reuse_ratio": 0.27,
              "length_stddev": 3.46,
              "sequential_names": 9,
              "single_char_count": 10,
              "single_char_ratio": 0.16,
              "high_entropy_count": 1,
              "high_entropy_ratio": 0.02,
              "all_lowercase_ratio": 0.56,
              "all_uppercase_ratio": 0.06,
              "underscore_prefix_count": 1
            }
          }
        },
        "id": 5,
        "mol": "H(Db)Md₂(In₃Pa)",
        "path": "github.com-danp-nspoweroutages-v0.0.0-20260714224501-823488c6a0cc.zip!!github.com/danp/nspoweroutages@v0.0.0-20260714224501-823488c6a0cc/cmd/scrape-outages/main_test.go",
        "pid": 0,
        "risk": 3,
        "sha": "6c67f2f31b6307102b208a558a84fdb1cf0995cb787effc1c88558ca2662e304",
        "size": 3155,
        "traits": [
          {
            "id": "metadata/import/go/encoding/json::encoding/json",
            "conf": 0.95,
            "crit": 3,
            "desc": "imports encoding/json",
            "spans": [
              [
                24,
                13
              ]
            ]
          },
          {
            "id": "metadata/import/go/net/http/httptest::net/http/httptest",
            "conf": 0.95,
            "crit": 3,
            "desc": "imports net/http/httptest",
            "spans": [
              [
                53,
                17
              ]
            ]
          },
          {
            "id": "metadata/import/go/net/http::net/http",
            "conf": 0.95,
            "crit": 3,
            "desc": "imports net/http",
            "spans": [
              [
                41,
                8
              ]
            ]
          },
          {
            "id": "metadata/package/testing/harness/unit::go-t-error-call",
            "conf": 0.7,
            "crit": 3,
            "desc": "Go test reports an error with t.Error",
            "spans": [
              [
                442,
                7
              ]
            ]
          },
          {
            "id": "metadata/package/testing/harness/unit::go-t-fatal-call",
            "conf": 0.7,
            "crit": 3,
            "desc": "Go test stops with t.Fatal",
            "spans": [
              [
                1864,
                7
              ]
            ]
          },
          {
            "id": "micro-behaviors/data/serialize/json::go-json-unmarshal",
            "mbc": "C0032",
            "conf": 0.85,
            "crit": 3,
            "desc": "Go JSON unmarshal call",
            "spans": [
              [
                1966,
                14
              ]
            ]
          },
          {
            "id": "metadata/build/archive::github-versioned-source-archive-member",
            "conf": 0.95,
            "crit": 2,
            "desc": "GitHub versioned source archive member"
          },
          {
            "id": "metadata/import/go/github/com/google/go-cmp/cmp::github/com/google/go-cmp/cmp",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports github.com/google/go-cmp/cmp",
            "spans": [
              [
                105,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/go/sort::sort",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports sort",
            "spans": [
              [
                74,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/go/strings::strings",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports strings",
            "spans": [
              [
                82,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/go/testing::testing",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports testing",
            "spans": [
              [
                93,
                0
              ]
            ]
          },
          {
            "id": "metadata/package/testing/harness/unit::go-func-test",
            "conf": 0.8,
            "crit": 2,
            "desc": "Go test function name",
            "spans": [
              [
                2534,
                0
              ]
            ]
          },
          {
            "id": "metadata/package/testing/harness/unit::go-t-error",
            "conf": 0.75,
            "crit": 2,
            "desc": "Go test t.Error method",
            "uses": [
              3,
              16
            ],
            "spans": [
              [
                156,
                0
              ],
              [
                442,
                0
              ]
            ]
          },
          {
            "id": "metadata/package/testing/harness/unit::go-t-fatal",
            "conf": 0.75,
            "crit": 2,
            "desc": "Go test t.Fatal method",
            "uses": [
              4,
              16
            ],
            "spans": [
              [
                156,
                0
              ],
              [
                1864,
                0
              ]
            ]
          },
          {
            "id": "metadata/package/testing/harness/unit::go-test",
            "conf": 0.95,
            "crit": 2,
            "desc": "Go testing package",
            "uses": [
              11,
              16
            ],
            "spans": [
              [
                139,
                0
              ],
              [
                156,
                0
              ]
            ]
          },
          {
            "id": "metadata/package/testing/harness/unit::go-test-source-file",
            "conf": 0.9,
            "crit": 2,
            "desc": "Go _test.go file using the testing harness",
            "uses": [
              14,
              17
            ],
            "spans": [
              [
                139,
                0
              ],
              [
                156,
                0
              ]
            ]
          },
          {
            "id": "metadata/package/testing/harness/unit::go-testing-t",
            "conf": 0.7,
            "crit": 2,
            "desc": "Go test uses a testing.T parameter",
            "spans": [
              [
                156,
                0
              ]
            ]
          },
          {
            "id": "metadata/package/testing/presence/harness::go-test-file",
            "conf": 0.7,
            "crit": 2,
            "desc": "Go test file suffix"
          },
          {
            "id": "metadata/package/testing/presence/harness::go-test-helper-file",
            "conf": 0.75,
            "crit": 2,
            "desc": "Go test helper source file"
          },
          {
            "id": "metadata/package/testing/presence/harness::tests-path-filename",
            "conf": 0.85,
            "crit": 2,
            "desc": "File path or name indicates test code"
          },
          {
            "id": "metadata/lang/natural/vocabulary/function-word::lang-english--atom-1",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"the\"",
            "spans": [
              [
                939,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/natural/vocabulary/function-word::lang-english--atom-3",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"that\"",
            "spans": [
              [
                1436,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/natural/vocabulary/function-word::lang-english--atom-5",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"for\"",
            "spans": [
              [
                953,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/natural/vocabulary/function-word::lang-english--atom-7",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"this\"",
            "spans": [
              [
                957,
                0
              ]
            ]
          }
        ],
        "type": "go"
      },
      {
        "id": 6,
        "sha": "38f4193e23ea308f8c23b983aaa81554249f42b4b794210a2feed8d0da1ad242",
        "path": "github.com-danp-nspoweroutages-v0.0.0-20260714224501-823488c6a0cc.zip!!github.com/danp/nspoweroutages@v0.0.0-20260714224501-823488c6a0cc/data/load.json",
        "risk": 1,
        "size": 891,
        "type": "json",
        "depth": 1
      },
      {
        "id": 7,
        "sha": "5b21645b7bbe7146124aa077100be30bcf4baaf722b6e2b4634d8d3ea2716820",
        "path": "github.com-danp-nspoweroutages-v0.0.0-20260714224501-823488c6a0cc.zip!!github.com/danp/nspoweroutages@v0.0.0-20260714224501-823488c6a0cc/data/outages.json",
        "risk": 1,
        "size": 4061,
        "type": "json",
        "depth": 1
      },
      {
        "id": 8,
        "sha": "7fc4bb4a635a846ea3c8956011cab42bd594275d06bbe02ec30905382290b47d",
        "path": "github.com-danp-nspoweroutages-v0.0.0-20260714224501-823488c6a0cc.zip!!github.com/danp/nspoweroutages@v0.0.0-20260714224501-823488c6a0cc/data/report_servicearea.json",
        "risk": 1,
        "size": 5156,
        "type": "json",
        "depth": 1
      },
      {
        "id": 9,
        "sha": "2e13e9b7095519a73d16833cf75ea8f1306568a5081a99eda09244f0b33d45ae",
        "path": "github.com-danp-nspoweroutages-v0.0.0-20260714224501-823488c6a0cc.zip!!github.com/danp/nspoweroutages@v0.0.0-20260714224501-823488c6a0cc/go.mod",
        "size": 262,
        "type": "go.mod",
        "depth": 1
      },
      {
        "id": 10,
        "sha": "ea2f94dba4f13105bc1e1a4769e5a5bb698f054640090ddf4db3b0f98f8dc131",
        "path": "github.com-danp-nspoweroutages-v0.0.0-20260714224501-823488c6a0cc.zip!!github.com/danp/nspoweroutages@v0.0.0-20260714224501-823488c6a0cc/go.sum",
        "size": 1567,
        "type": "go.sum",
        "depth": 1
      },
      {
        "id": 11,
        "sha": "5454de2ce14607dd2ad602bf066e73056a5fd442753c061d30c5c72930e6312c",
        "path": "github.com_PuerkitoBio_goquery@v1.7.1.registry.json",
        "size": 764,
        "type": "registry",
        "depth": 2
      },
      {
        "id": 12,
        "sha": "a6de381d2150d5438cf27ee325e11c17519adf24558b3b93e31667cfaa0873db",
        "path": "github.com_google_go-cmp@v0.5.4.registry.json",
        "size": 758,
        "type": "registry",
        "depth": 2
      },
      {
        "id": 13,
        "sha": "d7fb2791088ad63c6ef4f75d05b6f89f39e4988bcd950ce6aedbbce857fa7c59",
        "path": "github.com_andybalholm_cascadia@v1.2.0.registry.json",
        "size": 765,
        "type": "registry",
        "depth": 2
      },
      {
        "id": 14,
        "sha": "f8f0db0bdeadfe63228b23698d8dde1eb5106a13a9e7af7e34febad4eb9bd8f1",
        "path": "golang.org_x_net@v0.0.0-20210614182718-04defd469f4e.registry.json",
        "size": 778,
        "type": "registry",
        "depth": 2
      },
      {
        "id": 15,
        "sha": "81a5d567efc822a1ec8cb80c552893ad6b9219551678a2062a7ff424a5323609",
        "path": "golang.org_x_xerrors@v0.0.0-20191204190536-9bdfabe68543.registry.json",
        "size": 782,
        "type": "registry",
        "depth": 2
      },
      {
        "id": 16,
        "mol": "Md",
        "sha": "74b365ae3d3587dcc1a3dc184896e0384d52eb2b751626095679e5c5ccc19896",
        "path": "github.com_danp_nspoweroutages@v0.0.0-20260714224501-823488c6a0cc.registry.json",
        "risk": 1,
        "size": 825,
        "type": "registry",
        "depth": 1
      }
    ],
    "omitted_files": 11,
    "v": "8"
  }
}