{
  "meta": {
    "tool": "galena-fingerprint",
    "tool_version": "0.4.0",
    "schema_version": 2,
    "generated_at": "2026-08-01T00:42:58Z",
    "git_version": "2.39.5 (Apple Git-154)",
    "os": "darwin",
    "arch": "arm64",
    "duration_ms": 163,
    "args": [
      "-o",
      "sample-manifest.json",
      "/tmp/galena-fixture"
    ],
    "paths_redacted": false,
    "network_calls": 0,
    "shallow_clone": false,
    "snapshot_mode": false
  },
  "repo": {
    "default_branch": "main",
    "head_commit": "c53aa0cce23ad00935aa73af3593382c037dab46",
    "remote_hosts": null,
    "remote_url_hashes": null,
    "ref_counts": {
      "heads": 2,
      "tags": 0,
      "remotes": 0
    },
    "git_dir_size_kb": 264,
    "object_counts": {
      "commits": 12,
      "trees": 30,
      "blobs": 24,
      "missing": 0,
      "truncated": false
    }
  },
  "commits": {
    "total": 12,
    "merges": 1,
    "pr_merges": 1,
    "first_author_date": "2019-01-15T15:00:00Z",
    "last_author_date": "2024-03-06T15:00:00Z",
    "span_days": 1877,
    "authors_distinct": 2,
    "author_email_hashes": {
      "5d35345f266da30d": 11,
      "88374ce704ad11d1": 1
    },
    "author_domains": {
      "deadstartup.io": 11,
      "gmail.com": 1
    },
    "top_author_share": 0.9166666666666666,
    "top3_author_share": 1,
    "monthly": {
      "2019-01": 1,
      "2019-03": 1,
      "2019-06": 1,
      "2019-08": 1,
      "2019-11": 1,
      "2020-02": 2,
      "2020-07": 1,
      "2020-09": 1,
      "2024-03": 3
    },
    "active_months": 9
  },
  "head": {
    "file_count": 21,
    "text_file_count": 20,
    "binary_file_count": 1,
    "total_bytes": 12207,
    "text_bytes": 11679,
    "binary_bytes": 528,
    "total_loc": 125,
    "submodule_count": 0,
    "test_file_count": 2,
    "test_ratio": 0.09523809523809523,
    "ci": {
      "github_workflows": 1,
      "gitlab_ci": false,
      "circleci": false,
      "travis": false,
      "jenkins": false,
      "azure_pipelines": false,
      "bitbucket_pipelines": false,
      "drone": false,
      "dependabot": false,
      "renovate": false,
      "dockerfile": true,
      "docker_compose": false,
      "makefile": false
    },
    "largest_files": [
      {
        "path": "src/icons.svg",
        "ext": ".svg",
        "size": 4649,
        "sha": "7a4cdb18b3ca9c6cd327a0c01d81ca82dca52fe4",
        "binary": true
      },
      {
        "path": "dist/app.min.js",
        "ext": ".js",
        "size": 3201,
        "sha": "4345ac9486a218a6229dd8f361644d23107a5904",
        "binary": false
      },
      {
        "path": "src/big.js",
        "ext": ".js",
        "size": 2801,
        "sha": "6c05d456cb14bec9c1fc9416f98a9c456a4875f0",
        "binary": false
      },
      {
        "path": "data/app.db",
        "ext": ".db",
        "size": 528,
        "sha": "859032f57ac5d747ad75542dfd76062eca2c7fff",
        "binary": true
      },
      {
        "path": "package.json",
        "ext": ".json",
        "size": 130,
        "sha": "73677005bf52ed104a36be9c7daaa2fcea9d4e73",
        "binary": false
      },
      {
        "path": "LICENSE",
        "ext": "",
        "size": 107,
        "sha": "6d0a4988a94799b4f21042d85ee49c376d315298",
        "binary": true
      },
      {
        "path": ".github/workflows/ci.yml",
        "ext": ".yml",
        "size": 101,
        "sha": "161dcee55e84c5aa62586f5c5cc25b41e7c95cd0",
        "binary": false
      },
      {
        "path": "src/index.js",
        "ext": ".js",
        "size": 77,
        "sha": "4d297486daa3fc635aaee90e662be3bf40182cac",
        "binary": false
      },
      {
        "path": "src/helper.js",
        "ext": ".js",
        "size": 75,
        "sha": "9b3bf333c1230bb4cfd2ef64cd73481854951ca5",
        "binary": false
      },
      {
        "path": "src/generated/api.pb.go",
        "ext": ".go",
        "size": 71,
        "sha": "79b00a2b0f78be6f37671d49a1ccf30c7362fd1f",
        "binary": false
      }
    ]
  },
  "languages": [
    {
      "language": "JavaScript",
      "files": 7,
      "bytes": 6279,
      "loc": 91
    },
    {
      "language": "Text/Other",
      "files": 5,
      "bytes": 4916,
      "loc": 13
    },
    {
      "language": "Binary/Other",
      "files": 1,
      "bytes": 528,
      "loc": 0
    },
    {
      "language": "JSON",
      "files": 2,
      "bytes": 152,
      "loc": 2
    },
    {
      "language": "YAML",
      "files": 1,
      "bytes": 101,
      "loc": 7
    },
    {
      "language": "Go",
      "files": 1,
      "bytes": 71,
      "loc": 3
    },
    {
      "language": "SQL",
      "files": 1,
      "bytes": 69,
      "loc": 2
    },
    {
      "language": "Text",
      "files": 1,
      "bytes": 34,
      "loc": 3
    },
    {
      "language": "Dockerfile",
      "files": 1,
      "bytes": 33,
      "loc": 3
    },
    {
      "language": "C",
      "files": 1,
      "bytes": 24,
      "loc": 1
    }
  ],
  "source_rollup": {
    "source_files": 7,
    "source_bytes": 3142,
    "source_loc": 94,
    "excluded_files": 13,
    "excluded_bytes": 8537,
    "excluded_loc": 31,
    "source_loc_share": 0.752,
    "analyzed_files": 20,
    "skipped_files": 0,
    "by_reason": {
      "asset": {
        "files": 1,
        "bytes": 4649,
        "loc": 3
      },
      "data": {
        "files": 2,
        "bytes": 231,
        "loc": 8
      },
      "docs": {
        "files": 1,
        "bytes": 34,
        "loc": 3
      },
      "generated": {
        "files": 1,
        "bytes": 71,
        "loc": 3
      },
      "lockfile": {
        "files": 1,
        "bytes": 22,
        "loc": 1
      },
      "minified": {
        "files": 1,
        "bytes": 3201,
        "loc": 1
      },
      "other": {
        "files": 1,
        "bytes": 107,
        "loc": 2
      },
      "snapshot": {
        "files": 1,
        "bytes": 56,
        "loc": 5
      },
      "sourcemap": {
        "files": 1,
        "bytes": 53,
        "loc": 1
      },
      "vendored": {
        "files": 3,
        "bytes": 113,
        "loc": 4
      }
    },
    "languages": [
      {
        "language": "JavaScript",
        "files": 5,
        "bytes": 3040,
        "loc": 89
      },
      {
        "language": "Dockerfile",
        "files": 1,
        "bytes": 33,
        "loc": 3
      },
      {
        "language": "SQL",
        "files": 1,
        "bytes": 69,
        "loc": 2
      }
    ],
    "note": "source_loc counts lines written in a programming, markup or styling language. It excludes vendored trees, lockfiles, minified bundles, test snapshots, sourcemaps, assets (SVG fonts, CSV, translation catalogues), generator-marked files, structured data (JSON/YAML/TOML/XML), prose (Markdown and friends) and files too large to analyze. head.total_loc counts every text line at HEAD, which is typically several times larger. Both are heuristics over paths, extensions and file headers; by_reason itemises every excluded line so nothing is hidden"
  },
  "dependencies": {
    "ecosystems": [
      {
        "name": "npm",
        "manifest_paths": [
          "package.json"
        ],
        "lockfile_present": true,
        "lockfile_paths": [
          "package-lock.json"
        ],
        "direct_deps": 3,
        "pinned_ratio": 0.3333333333333333,
        "deps": [
          "express@^4.16.0",
          "jest@^24.0.0",
          "lodash@4.17.11"
        ]
      },
      {
        "name": "pip",
        "manifest_paths": [
          "requirements.txt"
        ],
        "lockfile_present": false,
        "lockfile_paths": [],
        "direct_deps": 3,
        "pinned_ratio": 0.3333333333333333,
        "deps": [
          "flask",
          "numpy==1.16.4",
          "requests\u003e=2.0"
        ]
      }
    ]
  },
  "licenses": {
    "files": [
      {
        "path": "LICENSE",
        "spdx": "MIT",
        "vendored": false
      },
      {
        "path": "vendor/gpl-lib/LICENSE",
        "spdx": "GPL-3.0",
        "vendored": true
      }
    ],
    "spdx_header_tally": {},
    "summary": {
      "GPL-3.0": 1,
      "MIT": 1
    },
    "copyleft_present": true,
    "weak_copyleft_present": false,
    "vendored_copyleft": true,
    "vendored_trees": [
      "node_modules",
      "vendor"
    ]
  },
  "secrets": {
    "rules": {
      "aws_access_key_id": {
        "head_blobs": 0,
        "head_hits": 0,
        "history_blobs": 1,
        "history_hits": 1
      },
      "connection_string_with_creds": {
        "head_blobs": 0,
        "head_hits": 0,
        "history_blobs": 1,
        "history_hits": 1
      },
      "stripe_key": {
        "head_blobs": 0,
        "head_hits": 0,
        "history_blobs": 1,
        "history_hits": 1
      }
    },
    "scanned_head_blobs": 20,
    "scanned_head_bytes": 11679,
    "scanned_history_blobs": 3,
    "scanned_history_bytes": 223,
    "history_byte_cap": 314572800,
    "history_byte_cap_hit": false,
    "skipped_history_blobs": 0,
    "skipped_history_bytes": 0,
    "total_findings": 3,
    "note": "counts only; matched values are never recorded"
  },
  "risk_paths": {
    "env_files": 1,
    "sql_dumps": 1,
    "sqlite_confirmed": 1,
    "sqlite_candidates": 0,
    "key_material": 0,
    "credential_files": 0,
    "node_modules_files": 1,
    "vendor_files": 2,
    "items": [
      {
        "path": "data/app.db",
        "sha": "859032f57ac5d747ad75542dfd76062eca2c7fff",
        "size": 528,
        "kind": "sqlite_confirmed",
        "in_head": true
      },
      {
        "path": ".env",
        "sha": "465ad6aa34fd9f25cd4ae8ec9abda01752df7ced",
        "size": 147,
        "kind": "env_file",
        "in_head": false
      },
      {
        "path": "fixtures/users.sql",
        "sha": "0c24253074c12323b731057e81e2596ab9770cd2",
        "size": 69,
        "kind": "sql_dump",
        "in_head": true
      }
    ],
    "items_truncated": false
  },
  "minhash": {
    "perms": 64,
    "shingle_bytes": 16,
    "shingle_step": 8,
    "normalization": "ascii-lower, whitespace-collapsed",
    "file_count": 2,
    "repo_sketch_b64": "/zkEADGrUwPY4gQMP7lmAyPW/R14vIoA0JT/B9FwvACg61MGNZRMC4wb9QHixP4P1GjLD0jDkgWyErwCMNy1CBSKrwOGyz8E+2YJCB4rCAR45hsQWkHZA5FGKwXPo8gDpBI7Bg/wlQAAPEYCOlHXCbAjRwp7hSIREVIXGh/bfAq4chcEYSWULzJ+tAPIshgAbjXVBDnYcAPiQYoFFUh8BLVJQQHIYnIDgTEREzCdKAjoJl4HIU1KA7WAAwlqxHcH9Y/DAAlX7gLtqQcHKD13BTduihScLGsHNXGtACGO/gFZ+9gD0p02AMNjQAfRgoMKvd/jAtM9hAN6W5gYiPnCAQ==",
    "files": [
      {
        "path": "dist/app.min.js",
        "sha": "4345ac9486a218a6229dd8f361644d23107a5904",
        "size": 3201,
        "sig_b64": "sFhFEC7TvKjJs//JLy+13omT14MTig2+u0FoIfIKXfR0E2EX7W1SqjiJ/q46pLhdWCTaQvWvH6gOUBSi/HoXnyaSKvdlyToMLInr7f2ZfdoLEV7wWUcFo9YY6v6ByvJAalaOpBzNKM4X/N7PcOF4iFwktwp6L34jOHfKzjWkbRS4chcEWFOIozAlNgzoy/xnbmgkCQUhuszl2C7QlyjBqScE/17wcDqSF+x3N8NxU1ehi0fUyXQTETnrPDcYItCuGNBgRRcze5KLdOF/GdEu12FlhdOwQ7jI+VjXNM3BPBvU6nHZ9a58DIWDHxHjveumlZUdoO616Xzs4CnalITPGg=="
      },
      {
        "path": "src/big.js",
        "sha": "6c05d456cb14bec9c1fc9416f98a9c456a4875f0",
        "size": 2801,
        "sig_b64": "/zkEADGrUwPY4gQMP7lmAyPW/R14vIoA0JT/B9FwvACg61MGNZRMC4wb9QHixP4P1GjLD0jDkgWyErwCMNy1CBSKrwOGyz8E+2YJCB4rCAR45hsQWkHZA5FGKwXPo8gDpBI7Bg/wlQAAPEYCOlHXCbAjRwp7hSIREVIXGh/bfAo/flsLYSWULzJ+tAPIshgAbjXVBDnYcAPiQYoFFUh8BLVJQQHIYnIDgTEREzCdKAjoJl4HIU1KA7WAAwlqxHcH9Y/DAAlX7gLtqQcHKD13BTduihScLGsHNXGtACGO/gFZ+9gD0p02AMNjQAfRgoMKvd/jAtM9hAN6W5gYiPnCAQ=="
      }
    ]
  },
  "blob_inventory": {
    "head_blob_count": 21,
    "historical_only_blob_count": 3,
    "head_blobs": [
      {
        "sha": "7a4cdb18b3ca9c6cd327a0c01d81ca82dca52fe4",
        "size": 4649
      },
      {
        "sha": "4345ac9486a218a6229dd8f361644d23107a5904",
        "size": 3201
      },
      {
        "sha": "6c05d456cb14bec9c1fc9416f98a9c456a4875f0",
        "size": 2801
      },
      {
        "sha": "859032f57ac5d747ad75542dfd76062eca2c7fff",
        "size": 528
      },
      {
        "sha": "73677005bf52ed104a36be9c7daaa2fcea9d4e73",
        "size": 130
      },
      {
        "sha": "6d0a4988a94799b4f21042d85ee49c376d315298",
        "size": 107
      },
      {
        "sha": "161dcee55e84c5aa62586f5c5cc25b41e7c95cd0",
        "size": 101
      },
      {
        "sha": "4d297486daa3fc635aaee90e662be3bf40182cac",
        "size": 77
      },
      {
        "sha": "9b3bf333c1230bb4cfd2ef64cd73481854951ca5",
        "size": 75
      },
      {
        "sha": "79b00a2b0f78be6f37671d49a1ccf30c7362fd1f",
        "size": 71
      },
      {
        "sha": "0c24253074c12323b731057e81e2596ab9770cd2",
        "size": 69
      },
      {
        "sha": "0e46b0e065ad5172f871fa45955bfbb74ed6f7c6",
        "size": 56
      },
      {
        "sha": "988cdf8b79d42b0ac8e61997b392b40ae19964a5",
        "size": 53
      },
      {
        "sha": "33d2f97363c44384029db10497ce56d0e459f132",
        "size": 52
      },
      {
        "sha": "477bd768211fdca1ea2c5312956c30f096cf934b",
        "size": 51
      },
      {
        "sha": "aa9a87dbafc3fe9989c075518671f12d73461f22",
        "size": 38
      },
      {
        "sha": "014f40b6db7dbd60d6232359cfe0df585c44f95c",
        "size": 35
      },
      {
        "sha": "3f55ffc25ddbdb2300352f58ea1635005e6ac1c6",
        "size": 34
      },
      {
        "sha": "c5677c7132c40c961b13dbdbc619e9c95da4793b",
        "size": 33
      },
      {
        "sha": "a184d89eac6cd4eb2912a2846f0cce03bd2bdccf",
        "size": 24
      },
      {
        "sha": "9a088743fabff92c35823cf6cf42401eea70f419",
        "size": 22
      }
    ],
    "head_blobs_truncated": false
  },
  "commit_quality": {
    "commits_analyzed": 12,
    "churn_commits_measured": 11,
    "churn_commits_capped": false,
    "non_merge_commits": 11,
    "lines_added": 128,
    "lines_deleted": 3,
    "files_touched": 25,
    "mean_commit_churn": 11.909090909090908,
    "median_commit_churn": 3,
    "p90_commit_churn": 13,
    "max_commit_churn": 88,
    "trivial_commits": 8,
    "trivial_commit_ratio": 0.7272727272727273,
    "huge_commits": 0,
    "huge_commit_ratio": 0,
    "empty_commits": 0,
    "reverts": 0,
    "churn_to_head_loc_ratio": 1.024,
    "subject_bytes": 278,
    "mean_subject_length": 23.166666666666668,
    "conventional_messages": 0,
    "conventional_ratio": 0,
    "low_effort_messages": 0,
    "low_effort_ratio": 0
  },
  "tickets": {
    "commits_with_refs": 1,
    "closing_commits": 0,
    "distinct_refs": 1,
    "ref_coverage": 0.08333333333333333,
    "closing_coverage": 0,
    "tracker_prefixes": {},
    "tracker_style": "forge-issues",
    "note": "references parsed from commit messages; ticket status lives in the issue tracker and cannot be read from git"
  },
  "provenance": {
    "ai_era_cutoff": "2023-01-01T00:00:00Z",
    "pre_cutoff": {
      "commits": 9,
      "lines_added": 125
    },
    "post_cutoff": {
      "commits": 3,
      "lines_added": 3
    },
    "pre_cutoff_commit_share": 0.75,
    "pre_cutoff_loc_share": 0.9765625,
    "pre_cutoff_loc_share_valid": true,
    "yearly": {
      "2019": {
        "commits": 5,
        "lines_added": 98
      },
      "2020": {
        "commits": 4,
        "lines_added": 27
      },
      "2024": {
        "commits": 3,
        "lines_added": 3
      }
    },
    "signed_commits": 0,
    "signatures_checked": 0,
    "signed_ratio": 0,
    "timezones_distinct": 2,
    "max_identical_timestamp": 1,
    "committer_date_skewed": 0,
    "future_dated": 0,
    "flags": null,
    "note": "author dates are self-reported and can be forged; verify pre-cutoff claims externally by looking up this manifest's blob hashes (SWHIDs) in a third-party source archive"
  },
  "ai_assistance": {
    "commits_with_trailer": 2,
    "commit_share": 0.16666666666666666,
    "tools": {
      "Claude": 1,
      "GitHub Copilot": 1
    },
    "yearly": {
      "2024": 2
    },
    "first_trailer_date": "2024-03-04T15:00:00Z",
    "last_trailer_date": "2024-03-05T15:00:00Z",
    "lines_added": 2,
    "lines_added_capped": false,
    "note": "counts commits carrying an AI assistant's co-author or generated-by trailer. This is a lower bound: trailers are opt-in and can be stripped, so absence is not evidence a human wrote the code. Presence is strong evidence for that commit"
  },
  "integrity": {
    "manifest_sha256": "9581732d3340948715e56eefc8e42820754c05a53525e8b249dacd7c801e55a3",
    "algorithm": "sha256-of-manifest-with-integrity-zeroed"
  }
}