Public record
Software health reportschema 0.27.0 · metrics 1.13.0 · 2026-07-30 19:47 UTC

fishkabio / seqio

Sequencing file parsers and writers for bioinformatics data

TypeScriptApache-2.0★ 0 stars⑂ 0 forkssince Jul 2026View on GitHub ↗

fishkabio/seqio holds a health index of 32 out of 100, placing it in the At risk band. It scores highest on AI Readiness (73/100) and lowest on Security (20/100). It was last updated 8 days ago. A single contributor accounts for most of its recent work.

32
overall / 100
At risk

Software health index

Metrics are grouped into weighted categories on one standardized 1–100 scale. Overall starts as their weighted mean; when public evidence triggers the High-Risk Jurisdiction Policy, the rating is adjusted and receives an At risk ceiling of 49. AI Readiness sits outside the overall score.

32
Excellent85-100Exemplary; meets essentially all checked criteria
Good70-84Healthy; minor gaps
Moderate50-69Acceptable with notable gaps; review recommended
At risk30-49Significant weaknesses; adoption warrants caution
Critical1-29Severe problems (abandoned, single-maintainer, no hygiene)
VitalityCommunity &AdoptionSustainability &GovernanceEngineeringQualitySecurityAI Readiness

Score profile

Each axis is a category. The shape matters more than the average — a healthy subject fills the whole shape, while a spike-and-crater profile means strength in one dimension is masking risk in another.

Ownership

fishka.bioPersonal account
0 followers7 public repossince Jul 2026

This repository is owned by a personal account. A single-owner project carries more continuity risk than an organization-backed one.

Package ecosystems

RegistryPackageVersionDownloads / moVersionsLast publishTags
npm@fishka/seqio0.10.09,601158 days agoabifab1scffastafastqchromatogramsangersequencingbioinformatics

Metrics by category

Vitality

Is the project alive — is code being written and are releases shipping?

27Critical · 22% of overall
How it's scored
28.8/36Push recency — last push 8 days ago
3.5/36Commit cadence — 5/52 weeks with commits
13.1/18Commit volume — 28 commits in the last year
0/10OpenSSF Scorecard: Maintained — project was created within the last 90 days. Please review its contents carefully
Inputs used
commits_last_year28
human_commit_share1
days_since_last_push8
active_weeks_last_year5
How it's scored
0/27Ships releases — no releases published
0/36Release recency — no releases
0/27Release cadence — no releases
0/10OpenSSF Scorecard: Signed-Releases — no data
Inputs used
releases_count0
Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.

Community & Adoption

Does the project have users, downloads, attention, and a welcoming setup for contributors?

34At risk · 18% of overall
How it's scored
0/60Stars — 0 stars
0/25Forks — 0 forks
0/15Watchers — 0 watchers
Inputs used
forks0
stars0
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
How it's scored
22.5/22.5README
22.5/22.5License — recognized license (Apache-2.0)
0/18CONTRIBUTING guide
0/13.5Code of conduct
0/7.2Issue template
0/6.3PR template
Inputs used
has_readmeyes
has_licenseyes
has_contributingno
has_issue_templateno
has_code_of_conductno
has_pull_request_templateno
How it's scored
53.1/80Monthly downloads — 9,601 downloads/month across npm
0/20Registry dependents — not reported by this ecosystem
Inputs used
packages@fishka/seqio
dependents
ecosystemsnpm
total_downloads
monthly_downloads9,601
Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.

Sustainability & Governance

Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?

28Critical · 24% of overall
How it's scored
9/54Bus factor — 1 contributor(s) cover half of all commits
0/22.5Commit distribution — top contributor authored 100% of commits
1.4/13.5Contributor breadth — 1 contributors
0/10OpenSSF Scorecard: Contributors — project has 0 contributing companies or organizations -- score normalized to 0
Inputs used
bus_factor1
contributors_sampled1
top_contributor_share1
How it's scored
0/46.8Issue resolution — no issues or no data
0/38.3PR acceptance — no decided pull requests or no data
0/15OpenSSF Scorecard: Code-Review — Found 0/28 approved changesets -- score normalized to 0
Inputs used
merged_prs0
open_issues0
closed_issues0
issue_closed_ratio
closed_unmerged_prs0
Excluded from scoring (no data or not applicable): Issue resolution, PR acceptance. Remaining weights renormalized.
How it's scored
10/30Ownership backing — personal (user) account
0/20Verified domain — not applicable to user accounts
0/25Owner reach — 0 followers of fishkabio
6.7/25Track record — 7 public repos, account ~0 yr old
Inputs used
followers0
owner_typeUser
is_verified
owner_loginfishkabio
public_repos7
account_age_days29
Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.
How it's scored
25/25Published & resolvable — 1 package(s) on npm
35/35Publish recency — latest publish 8 days ago
20/20Version history — 15 published versions
20/20Not deprecated — active, not deprecated or yanked
Inputs used
packages@fishka/seqio
ecosystemsnpm
any_deprecatedno
min_days_since_publish8

Engineering Quality

Are baseline engineering and documentation practices in place?

52Moderate · 20% of overall
How it's scored
0/24CI workflows
24/24Tests present
16/16Linter config — eslint.config.js
0/9.6Pre-commit hooks
0/6.4.editorconfig
0/20OpenSSF Scorecard: CI-Tests — no data
Inputs used
has_cino
has_testsyes
has_editorconfigno
has_linter_configyes
has_precommit_configno
Excluded from scoring (no data or not applicable): OpenSSF Scorecard: CI-Tests. Remaining weights renormalized.

Documentation

55Moderate
How it's scored
30/30README
0/25Documentation directory
15/15Documentation / homepage site — https://fishka.bio
10/10Repository description
0/10Topics
0/10Wiki
Inputs used
topics
has_wikino
homepagehttps://fishka.bio
has_readmeyes
has_docs_dirno
has_descriptionyes

Security

Are visible security and supply-chain practices strong, without unresolved high-risk jurisdiction exposure?

20Critical · 16% of overall
How it's scored
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — branch protection not enabled on development/release branches
0/2.5CI-Tests — no data
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/28 approved changesets -- score normalized to 0
0/2.5Contributors — project has 0 contributing companies or organizations -- score normalized to 0
0/10Dangerous-Workflow — no data
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5License — license file detected
0/7.5Maintained — project was created within the last 90 days. Please review its contents carefully
0/5Packaging — no data
0/5Pinned-Dependencies — no data
0/5SAST — no SAST tool detected
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — no data
0/7.5Token-Permissions — no data
3.8/7.5Vulnerabilities — 5 existing vulnerabilities detected
Inputs used
sourceopenssf_scorecard
checks_evaluated12
scorecard_versionv5.5.0
checks_inconclusive6
scorecard_aggregate2
Excluded from scoring (no data or not applicable): ci_tests, dangerous_workflow, packaging, pinned_dependencies, signed_releases, token_permissions. Remaining weights renormalized.

AI Readiness

How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score.

73Good · 0% of overall
How it's scored
45/45Agent instructions — AGENTS.md, CLAUDE.md
0/15Machine-readable docs (llms.txt)
32.4/40Legible commit history — 17 of 28 human commits state their intent (structured subject or explanatory body)
Inputs used
has_llms_txtno
legible_history_share0.607
agent_instruction_filesAGENTS.md, CLAUDE.md
agent_instruction_max_bytes6,182
How it's scored
0/18One-command bootstrap
22/22Automated tests
11/11Lint / format config — eslint.config.js
11/11Static type checking — tsconfig.json
10/10Reproducible environment — lockfile
0/10Demonstrated agent practice — no agent-authored commits among the last 28
0/8Automated maintenance — no automated dependency updates observed
0/10OpenSSF Scorecard: Pinned-Dependencies — no data
Inputs used
has_nixno
has_testsyes
lockfilespackage-lock.json
has_dockerfileno
typed_languageyes
bootstrap_files
has_devcontainerno
has_linter_configyes
typecheck_configstsconfig.json
agent_commit_share0
toolchain_manifests
dependency_bot_commit_share0
Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Pinned-Dependencies. Remaining weights renormalized.
How it's scored
45/45Type-checkable code — TypeScript (statically typed)
55/55Manageable file sizes — 0/64 source files over 60KB
Inputs used
primary_languageTypeScript
largest_source_bytes33,921
source_files_sampled64
oversized_source_files0

Key facts

0GitHub stars
1contributors
28commits, last 12 months
8days since last push
0releases
1bus factor
0open issues
npmpackage ecosystems

Data collection warnings

  • GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

More detail

OpenSSF Scorecard 2.0 / 10
2.0aggregate

Independent, tool-agnostic security assessment from the open-source OpenSSF Scorecard. Each check rewards a security practice, not a specific vendor's tool. Checks Scorecard could not determine are marked n/a and excluded from the security score (never counted as zero).Scorecard v5.5.0 · 2026-07-30 19:47 UTC

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
n/aCI-Testsno pull request found
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/28 approved changesets -- score normalized to 0
0Contributorsproject has 0 contributing companies or organizations -- score normalized to 0
n/aDangerous-Workflowno workflows found
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
0Maintainedproject was created within the last 90 days. Please review its contents carefully
n/aPackagingpackaging workflow not detected
n/aPinned-Dependenciesno dependencies found
0SASTno SAST tool detected
0Security-Policysecurity policy file not detected
n/aSigned-Releasesno releases found
n/aToken-PermissionsNo tokens found
5Vulnerabilities5 existing vulnerabilities detected
All dependencies not collected

The resolved dependency set could not be collected for this report: GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Raw JSON report machine-readable
{
  "data": {
    "repo": {
      "topics": [],
      "is_fork": false,
      "size_kb": 786,
      "has_wiki": false,
      "homepage": "https://fishka.bio",
      "languages": {
        "JavaScript": 1580,
        "TypeScript": 331096
      },
      "pushed_at": "2026-07-22T02:33:56Z",
      "created_at": "2026-07-03T20:43:54Z",
      "owner_type": "User",
      "updated_at": "2026-07-22T02:34:03Z",
      "description": "Sequencing file parsers and writers for bioinformatics data",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "Apache-2.0",
      "default_branch": "master",
      "license_spdx_raw": "Apache-2.0",
      "primary_language": "TypeScript",
      "significant_languages": [
        "TypeScript"
      ]
    },
    "owner": {
      "blog": "https://fishka.bio",
      "name": "fishka.bio",
      "type": "User",
      "login": "fishkabio",
      "company": null,
      "location": "Web-based bioinformatics",
      "followers": 0,
      "avatar_url": "https://avatars.githubusercontent.com/u/298752031?v=4",
      "created_at": "2026-07-01T14:31:49Z",
      "is_verified": null,
      "public_repos": 7,
      "account_age_days": 29
    },
    "license": {
      "state": "standard",
      "spdx_id": "Apache-2.0",
      "raw_spdx": "Apache-2.0",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [],
      "recent_commits": [
        {
          "oid": "051d5621fbcf991f5185852e29a140e78b1ad11e",
          "body": "….10.0\n\nresolveGenbankLocation() turns a parsed location AST into 0-based half-open\nsegments in reading order, handling complement (which reverses order and flips\nstrand), join/order, between-boundaries, fuzzy positions, origin-spanning ranges\non circular molecules, and out-of-bounds clamping; unknown operators and remote\nreferences resolve to nothing rather than to untrustworthy geometry.\n\nThe bump also carries the ABIF UTF-8 string decoding from the previous commit.",
          "is_bot": false,
          "headline": "genbank: resolve location expressions to concrete coordinates; bump 0…",
          "author_name": "fishka.bio",
          "author_login": "fishkabio",
          "committed_at": "2026-07-21T23:35:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cbbf8382e319cd37e434d675dd5d426b44c0f549",
          "body": "ABIF fixes no encoding for char/pString/cString, and instruments write their\nlocale: the Nanofor-05 stores cyrillic run metadata as UTF-8, which the previous\nbyte-per-character reading turned into mojibake. decodeAbifText() tries strict\nUTF-8 first and falls back to the old Latin-1 reading, so existing files are\nunaffected; encodeAbifText() is its counterpart for writers. Trailing NULs are\nnow trimmed off the payload before decoding rather than off the decoded string.",
          "is_bot": false,
          "headline": "abif: read string tags as UTF-8 when the bytes are valid UTF-8",
          "author_name": "fishka.bio",
          "author_login": "fishkabio",
          "committed_at": "2026-07-21T22:10:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "283bf1d51404afbd4d4b791b011001d70250a4d9",
          "body": "…ns, references); bump 0.8.4\n\nAdd parseGenbankDocument with a full flat-file model (LOCUS, DEFINITION,\nACCESSION/VERSION, DBLINK, SOURCE/ORGANISM, REFERENCE, FEATURES with an\nINSDC location parser, ORIGIN, BASE COUNT) plus recoverable diagnostics.\n\nFix two bugs found while reviewing the implementati\n[…]\nT,\n  PRIMARY, ...); reference subfields are distinguished by indentation.\n- missing-record-terminator diagnostics anchor to the unterminated record\n  so per-record filtering attributes them correctly.",
          "is_bot": false,
          "headline": "genbank: parse GenBank/GenPept documents (metadata, features, locatio…",
          "author_name": "fishka.bio",
          "author_login": "fishkabio",
          "committed_at": "2026-07-11T03:29:35Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a53745ad0a9e303fa3f28872b1edb9aad49d5845",
          "body": "…0.8.3\n\n- hasPdbSignal: window scan for a definitive PDB record (ATOM/HETATM with an x/y/z coordinate\n  triplet, SEQRES with optional blank chain, or CRYST1 unit-cell), firing only when the first line\n  is unclassifiable — catches bare-MODEL and I-TASSER 'HEADER protein' coordinate files\n- hasGffFas\n[…]\nected as gff\n- signatures use [ \\t] (not \\s) inter-field so they stay within one line; codex-reviewed\n- sweep of ~10500 UGENE fixtures: pdb 37->41 detected/39 parsed, gff 51->53/16, no false positives",
          "is_bot": false,
          "headline": "detect: recognize coordinate/SEQRES-led PDB and headerless GFF; bump …",
          "author_name": "fishka.bio",
          "author_login": "fishkabio",
          "committed_at": "2026-07-10T19:00:38Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8c173e1cfc9bac8906591bcb7736ac828f6da6e1",
          "body": "- MEGA (.meg): #mega header, !directives, #Name residue rows (interleaved), \"...\" comments stripped\n- PDB (.pdb): SEQRES chains, with an ATOM/HETATM first-model fallback for coordinate-only files\n  (HETATM gated to a polymer/modified-residue whitelist: MSE etc., excluding ligands/ions/solvent)\n- ACE\n[…]\n Staden chromatograms (v2 AoS / v3 SoA layouts)\n- detect: coordinate-led PDB, #mega, AS-header ACE signatures\n- validated against UGENE _common_data fixtures (20/20 scf, 35/39 pdb detected, 28/31 ace)",
          "is_bot": false,
          "headline": "Add MEGA, PDB, ACE and SCF sequence readers; bump 0.8.2",
          "author_name": "fishka.bio",
          "author_login": "fishkabio",
          "committed_at": "2026-07-10T18:36:09Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "70a876e40d298f4d7163792e9921713726ab667c",
          "body": "…tion\n\nparseMsf: drop the numeric position-ruler / coordinate lines GCG & GeneDoc\ninterleave between blocks (they carried digits, so were turning into bogus\n\"1\"/\"50\" records). A row is kept iff its residue field is digit-free — lenient\n(genuine rows survive even if Name: labels were truncated) and n\n[…]\nMUSCLE/… banner. Verified on UGENE's 17-file _common_data MSF corpus (lipid8,\nPileUp, GeneDoc-preamble, header-mangled all parse clean; garbage/negative file\nstays unknown). +7 unit tests (203 total).",
          "is_bot": false,
          "headline": "msf: read GeneDoc/PileUp variants; skip position rulers; robust detec…",
          "author_name": "fishka.bio",
          "author_login": "fishkabio",
          "committed_at": "2026-07-10T17:50:26Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "89d7b4a1515483624965d108e0e5be0405c5f11a",
          "body": null,
          "is_bot": false,
          "headline": "Bump @fishka/seqio to 0.8.0 (sam/bam/gfa readers)",
          "author_name": "fishka.bio",
          "author_login": "fishkabio",
          "committed_at": "2026-07-10T07:04:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9f4a8172c734730aaa9b9865fdffbac4373a3002",
          "body": "parseBam reads inflated BAM bytes (caller peels BGZF/gzip; DecompressionStream decodes\nBGZF's concatenated members). Parses the header ref table (fully bounds-checked against\nmalformed/huge headers) then alignment records: decodes the 4-bit-packed SEQ, maps\nrefID→RNAME, and applies the same rules as\n[…]\nnient: bounded loops + try/catch return partial results, never throw/hang.\nSAM reader refactored onto the shared common.ts. Reviewed with codex (offsets, 4-bit\ndecode, and the header-parse DoS guard).",
          "is_bot": false,
          "headline": "bam: binary BAM reader (parseBam), sharing SAM record semantics",
          "author_name": "fishka.bio",
          "author_login": "fishkabio",
          "committed_at": "2026-07-10T07:04:45Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3ecea3f65cf8bef71db59aa032004c16517dc758",
          "body": "parseSam: read sequence (SAM field 10) per alignment; skip '@' headers, SEQ='*', and\nsecondary(0x100)/supplementary(0x800) alignments so it yields one sequence per read;\nid = QNAME (+ /1,/2 for paired mates); description = 'RNAME:POS (+/-)' or 'unmapped';\nreverse-strand SEQ stored verbatim (referenc\n[…]\nGFA2 (S sid len seq); skip '*'.\ndetectFormat: +sam/+bam/+gfa — BAM 'BAM\\1' magic (post-inflate), SAM header/headerless\n(11-field CIGAR heuristic), GFA H-version/headerless S-line. Reviewed with codex.",
          "is_bot": false,
          "headline": "sam, gfa: sequence readers + content detection",
          "author_name": "fishka.bio",
          "author_login": "fishkabio",
          "committed_at": "2026-07-10T06:57:35Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0e1a2919817772d296a2af6d4db33490a658f242",
          "body": null,
          "is_bot": false,
          "headline": "Bump version to 0.7",
          "author_name": "fishka.bio",
          "author_login": "fishkabio",
          "committed_at": "2026-07-10T04:19:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "080af84b2da18dd2723f3643b3957bcc83cf2782",
          "body": "Add read-only sequence extractors, all lenient (never throw) and multi-record,\nreturning a uniform SeqRecord {id, description?, sequence}:\n\n- FASTA/FASTQ parsers (parseFasta/parseFastq); fastx split into src/fastx/ with\n  the codec in fastx-format.ts and record types in types.ts\n- GenBank/GenPept (p\n[…]\nextension\n\nShared helpers in src/text.ts and the SeqRecord model in src/seq-record.ts.\n181 Jest tests with real-world fixtures. AGENTS.md: leniency, multi-record, and\ndetection conventions documented.",
          "is_bot": false,
          "headline": "feat: sequence readers for text formats + content-based format detection",
          "author_name": "fishka.bio",
          "author_login": "fishkabio",
          "committed_at": "2026-07-10T03:54:24Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "32b8c3b02eb322fcbb20ea64eb552e4392612736",
          "body": "upsertEntry appended new tags with entries.push(), leaving the directory\nunsorted after a basecaller adds PBAS2/PCON2/PLOC2/DATA9..12. The ABIF\nspec prescribes a directory sorted by (tagName, tagNumber), and readers\nthat binary-search it — notably Chromas — silently miss a tag placed out\nof order: a\n[…]\n;\nensureRawDataChannels() uses it directly to copy DATA1..4 -> DATA9..12\nwith their payload/shape intact (upsertEntry's count*size check would\nreject a tolerated desynced source). Bump 0.6.0 -> 0.6.1.",
          "is_bot": false,
          "headline": "fix(abif): insert new directory entries sorted by (tagName, tagNumber)",
          "author_name": "fishka.bio",
          "author_login": "fishkabio",
          "committed_at": "2026-07-09T18:26:10Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fcec26c7bf94308b2fe4bba646e20789bc1d200a",
          "body": null,
          "is_bot": false,
          "headline": "Release v0.6.0",
          "author_name": "fishka.bio",
          "author_login": "fishkabio",
          "committed_at": "2026-07-07T03:53:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4813d3d98812744db33f81a01303dd65c40ac6dc",
          "body": "start/end is a half-open sample range in the processed (DATA9..12)\ndomain -- the only domain PLOC maps into. DATA9..12 are sliced\nexactly by that range (rejecting a range past the shortest channel's\nlength, rather than silently clamping it into an inconsistent state).\nDATA1..4/5..8 have no honest co\n[…]\nequenceForVersion/getConfidencesForVersion/getPositionsForVersion\nto the view layer (the existing preferred-version getters now delegate\nto them) so per-version basecall data has a single decode path.",
          "is_bot": false,
          "headline": "Add cropAbif: crop an ABIF file to a DATA9..12 sample range",
          "author_name": "fishka.bio",
          "author_login": "fishkabio",
          "committed_at": "2026-07-07T03:53:05Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "35632dc68aab2dc99d7a46bc0a528c768ec8e5be",
          "body": null,
          "is_bot": false,
          "headline": "Release v0.5.0",
          "author_name": "fishka.bio",
          "author_login": "fishkabio",
          "committed_at": "2026-07-07T03:29:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d94331c18aad3d28765a0cbbf61fd8003eb342bc",
          "body": "Rename raw.ts to abif-format.ts and document the raw/domain layered\ndesign as a convention for future formats (AGENTS.md).\n\nwriteAbif now reproduces the original file byte-for-byte when nothing\nwas changed, and keeps every untouched entry at its exact original\noffset when something else is mutated -\n[…]\no longer\ncombine new fields with a stale on-disk shape, and the anchor now\naccounts for the directory's physical size even when a file's declared\ntdir.dataSize is desynced from its actual entry count.",
          "is_bot": false,
          "headline": "Make writeAbif byte-exact on an unmodified round-trip",
          "author_name": "fishka.bio",
          "author_login": "fishkabio",
          "committed_at": "2026-07-07T03:29:07Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "91d108a947f487e662991b6052e62dc61887187e",
          "body": null,
          "is_bot": false,
          "headline": "Refresh README API overview",
          "author_name": "fishka.bio",
          "author_login": "fishkabio",
          "committed_at": "2026-07-03T22:49:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "66ec7ad625527319a20b0fa817012e55c08909fa",
          "body": null,
          "is_bot": false,
          "headline": "Add Ko-fi funding link",
          "author_name": "fishka.bio",
          "author_login": "fishkabio",
          "committed_at": "2026-07-03T22:37:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9131006b41e9d8102b8e960503d28554bcecbb35",
          "body": null,
          "is_bot": false,
          "headline": "Link README to fishka.bio",
          "author_name": "fishka.bio",
          "author_login": "fishkabio",
          "committed_at": "2026-07-03T22:09:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "83ccb3860be597a217e965ee4d08f311e612d7d1",
          "body": null,
          "is_bot": false,
          "headline": "Use GitHub repository URL",
          "author_name": "fishka.bio",
          "author_login": "fishkabio",
          "committed_at": "2026-07-03T21:53:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a25536a59087bb6131b817b9b4e2caeb405a4dce",
          "body": null,
          "is_bot": false,
          "headline": "Update repository URL",
          "author_name": "fishka.bio",
          "author_login": "fishkabio",
          "committed_at": "2026-07-03T21:50:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6d1efe9a96612cc9de4c462e8c0fe63c46eb93a0",
          "body": null,
          "is_bot": false,
          "headline": "Update package description",
          "author_name": "fishka.bio",
          "author_login": "fishkabio",
          "committed_at": "2026-07-03T21:31:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3b159e5f3b7abb0539f5df75a804847a89cfc7f5",
          "body": "Turn readAbif into a faithful 1:1 reader and keep parseAbif as the\ninterpreting convenience layer. Breaking public API (0.x → minor bump).\n\nRaw structure (readAbif):\n- every basecall version exposed via baseCallVariants (called/edited by\n  tag number, sequence case preserved); no \"preferred = ground\n[…]\n90 tests incl. exact per-fixture\nlocks (tdir, DATA ranges, PBAS/PCON/PLOC, FWO, RevC, gaps).\n\nContract: meaning-lossless + robust read now; byte-exact layout-preserving\nwriter remains a future opt-in.",
          "is_bot": false,
          "headline": "ABIF: expose full raw file structure, facts not verdicts (0.4.0)",
          "author_name": "fishka.bio",
          "author_login": "fishkabio",
          "committed_at": "2026-07-03T02:51:24Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "45511ec9504a5d4e74c27ca30da03ec9dd53bb9f",
          "body": null,
          "is_bot": false,
          "headline": "Add FASTA support",
          "author_name": "fishka.bio",
          "author_login": "fishkabio",
          "committed_at": "2026-06-29T17:41:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f099a0a2c345cd7a83ca5d0ea78ebcdf50cb394a",
          "body": "The old names were misleading. Per the ABIF spec:\n\n  - DATA1..4  are POST-PROCESSED traces (mobility-corrected, baseline-\n                subtracted, color-separated) on modern KB-basecaller-aware\n                instruments. On older instruments DATA1..4 IS the raw signal.\n  - DATA9..12 are RAW flu\n[…]\n longer\npretends to know which block the caller wants. hasProcessedTraces()\nremains as the helper for detecting modern (both-blocks-present) files.\n\nBreaking change → minor bump (we are still on 0.x).",
          "is_bot": false,
          "headline": "Rename basecalled/raw to data1To4/data9To12 (0.2.0)",
          "author_name": "fishka.bio",
          "author_login": "fishkabio",
          "committed_at": "2026-05-29T15:25:26Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ac7016f0c0c049197571a0d8186d8c11cb20d55a",
          "body": "The published package now contains only minified output:\n\n  dist/index.{mjs,js}        ESM + CJS, minified, ~12K each\n  dist/abif/index.{mjs,js}   subpath entry, minified\n  dist/*.d.{ts,mts}          generated type declarations\n\nWhat changed\n- Replaced dual-tsc setup (tsconfig.esm.json + tsconfig.cj\n[…]\nnode\"]` because TS 6 + bundler resolution\n  no longer auto-discovers @types/*.\n\nVerification: typecheck clean, 22/22 tests pass, lint clean,\nbuild produces minified .mjs/.js and matching .d.ts/.d.mts.",
          "is_bot": false,
          "headline": "Switch to tsup for minified ESM/CJS + .d.ts build",
          "author_name": "fishka.bio",
          "author_login": "fishkabio",
          "committed_at": "2026-05-29T14:36:29Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "00db296946de966a7a18e55c93483851e914a317",
          "body": "Copy AGENTS.md / CLAUDE.md and the .agents/.claude/.factory directories\nfrom the mitoseq repo, rewriting the prose to describe this library\n(scope, layered design, dev commands, browser-compat constraint).\n\neslint.config.js is a slim variant of mitoseq's: drops the workspace-\nspecific no-restricted-\n[…]\nd abif-spec.json overrides that\ndon't apply here. prettier-plugin-organize-imports added.\n\nCI sanity:\n- npm run lint  → clean\n- npm test      → 22/22 pass\n- npm run build → ESM + CJS dist/ regenerated",
          "is_bot": false,
          "headline": "Add agent configs, linter and formatter",
          "author_name": "fishka.bio",
          "author_login": "fishkabio",
          "committed_at": "2026-05-29T14:14:24Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2703137ce18d89d1d321f52a6f84b33b2c73685e",
          "body": "Bring up a new sequencing-I/O library to consolidate the four diverged ABIF\nparsers (abifviewer, mitoseq/formats, hiv/common/bio, basecaller-universal)\ninto a single browser- and Node-compatible package.\n\nLayout\n- src/abif/raw.ts    low-level read/write, lossless round-trip\n- src/abif/view.ts   type\n[…]\ne support\n\nTests (22) cover round-trip preservation, BioPython A_forward fixture\nedge case, raw-trace (no PBAS) handling, setter round-trip, and\nhigh-level parseAbif consistency on both fixture types.",
          "is_bot": false,
          "headline": "Initial @fishka/seqio with ABIF parser",
          "author_name": "fishka.bio",
          "author_login": "fishkabio",
          "committed_at": "2026-05-29T14:05:15Z",
          "body_truncated": true,
          "is_coding_agent": false
        }
      ],
      "releases_count": 0,
      "commits_last_year": 28,
      "latest_release_at": null,
      "latest_release_tag": null,
      "releases_from_tags": false,
      "days_since_last_push": 8,
      "active_weeks_last_year": 5,
      "days_since_latest_release": null,
      "mean_days_between_releases": null
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 42,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "@fishka/seqio",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "abif",
            "ab1",
            "scf",
            "fasta",
            "fastq",
            "chromatogram",
            "sanger",
            "sequencing",
            "bioinformatics"
          ],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/@fishka/seqio",
          "is_deprecated": false,
          "latest_version": "0.10.0",
          "repository_url": "https://github.com/fishkabio/seqio",
          "versions_count": 15,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 9601,
          "first_published_at": "2026-05-29T14:42:58.266000Z",
          "latest_published_at": "2026-07-21T23:35:37.107000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 8
        }
      ]
    },
    "popularity": {
      "forks": 0,
      "stars": 0,
      "watchers": 0,
      "fork_history": {
        "days": [],
        "complete": true,
        "collected": 0,
        "total_forks": 0
      },
      "star_history": {
        "days": [],
        "complete": true,
        "collected": 0,
        "total_stars": 0,
        "collected_at": null
      },
      "open_issues_and_prs": 0
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [
        "tsconfig.json"
      ],
      "toolchain_manifests": [],
      "largest_source_bytes": 33921,
      "source_files_sampled": 64,
      "oversized_source_files": 0,
      "agent_instruction_files": [
        "AGENTS.md",
        "CLAUDE.md"
      ],
      "agent_instruction_max_bytes": 6182
    },
    "dependencies": {
      "manifests": [
        "package.json"
      ],
      "advisories": {
        "error": null,
        "scope": null,
        "source": null,
        "findings": [],
        "collected": false,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 0,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "npm"
      ],
      "dependencies": [],
      "all_dependencies": {
        "error": "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
        "source": null,
        "packages": [],
        "collected": false,
        "truncated": false,
        "total_count": null,
        "direct_count": null,
        "indirect_count": null
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 0,
        "merged_prs": 0,
        "open_issues": 0,
        "closed_ratio": null,
        "closed_issues": 0,
        "closed_unmerged_prs": 0
      },
      "bus_factor": 1,
      "bot_contributors": 0,
      "top_contributors": [
        {
          "type": "User",
          "login": "fishkabio",
          "commits": 28,
          "avatar_url": "https://avatars.githubusercontent.com/u/298752031?v=4"
        }
      ],
      "contributors_sampled": 1,
      "top_contributor_share": 1
    },
    "quality_signals": {
      "has_ci": false,
      "has_tests": true,
      "ci_workflows": [],
      "has_docs_dir": false,
      "linter_configs": [
        "eslint.config.js"
      ],
      "has_editorconfig": false,
      "has_linter_config": true,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "package-lock.json"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 0,
            "reason": "branch protection not enabled on development/release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": null,
            "reason": "no pull request found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 0,
            "reason": "Found 0/28 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 0,
            "reason": "project has 0 contributing companies or organizations -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": null,
            "reason": "no workflows found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 0,
            "reason": "no update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 0,
            "reason": "project was created within the last 90 days. Please review its contents carefully",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": null,
            "reason": "packaging workflow not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": null,
            "reason": "no dependencies found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "no SAST tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 0,
            "reason": "security policy file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": null,
            "reason": "No tokens found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 5,
            "reason": "5 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "051d5621fbcf991f5185852e29a140e78b1ad11e",
        "ran_at": "2026-07-30T19:47:49Z",
        "aggregate_score": 2,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": null,
      "oldest_open_prs": [],
      "last_merged_pr_at": null,
      "ci_last_conclusion": null,
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/fishkabio/seqio",
    "host": "github.com",
    "name": "seqio",
    "owner": "fishkabio"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "at_risk",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 32,
      "inputs": {
        "security": 20,
        "vitality": 27,
        "community": 34,
        "governance": 28,
        "engineering": 52
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "critical",
        "name": "Vitality",
        "value": 27,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "at_risk",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 45,
            "inputs": {
              "commits_last_year": 28,
              "human_commit_share": 1,
              "days_since_last_push": 8,
              "active_weeks_last_year": 5
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 8 days ago",
                "points": 28.8,
                "status": "partial",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 8
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "5/52 weeks with commits",
                "points": 3.5,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 5
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "28 commits in the last year",
                "points": 13.1,
                "status": "partial",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 28
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "project was created within the last 90 days. Please review its contents carefully",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "critical",
            "name": "Release discipline",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 1,
            "inputs": {
              "releases_count": 0
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "no releases published",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_releases_published",
                    "params": {}
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "no releases",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_releases",
                    "params": {}
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "no releases",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_releases",
                    "params": {}
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "unverified",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": "repository_too_young",
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": null,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "maintenance record not established from the collected data",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_unverified",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "at_risk",
        "name": "Community & Adoption",
        "value": 34,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "critical",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 1,
            "inputs": {
              "forks": 0,
              "stars": 0,
              "watchers": 0,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "0 stars",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "0 forks",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "0 watchers",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "moderate",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 50,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (Apache-2.0)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "Apache-2.0"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          },
          {
            "key": "ecosystem_adoption",
            "band": "moderate",
            "name": "Ecosystem adoption (downloads)",
            "note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "registry_dependents"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 66,
            "inputs": {
              "packages": [
                "@fishka/seqio"
              ],
              "dependents": null,
              "ecosystems": "npm",
              "total_downloads": null,
              "monthly_downloads": 9601
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "9,601 downloads/month across npm",
                "points": 53.1,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 9601,
                      "ecosystems": "npm"
                    }
                  }
                ],
                "max_points": 80
              },
              {
                "key": "registry_dependents",
                "name": "Registry dependents",
                "detail": "not reported by this ecosystem",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_reported_by_this_ecosystem",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "critical",
        "name": "Sustainability & Governance",
        "value": 28,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 10,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 1,
              "top_contributor_share": 1
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "1 contributor(s) cover half of all commits",
                "points": 9,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 100% of commits",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 100
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "1 contributors",
                "points": 1.4,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 0 contributing companies or organizations -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "critical",
            "name": "Issue & PR responsiveness",
            "note": "Excluded from scoring (no data or not applicable): Issue resolution, PR acceptance. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "issue_resolution",
                    "pr_acceptance"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 1,
            "inputs": {
              "merged_prs": 0,
              "open_issues": 0,
              "closed_issues": 0,
              "issue_closed_ratio": null,
              "closed_unmerged_prs": 0
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "no issues or no data",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_issues_or_data",
                    "params": {}
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "no decided pull requests or no data",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_decided_prs_or_data",
                    "params": {}
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/28 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "critical",
            "name": "Ownership & stewardship",
            "note": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "verified_domain"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 21,
            "inputs": {
              "followers": 0,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "fishkabio",
              "public_repos": 7,
              "account_age_days": 29
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "personal (user) account",
                "points": 10,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_personal",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": "not applicable to user accounts",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_applicable_to_user_accounts",
                    "params": {}
                  }
                ],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "0 followers of fishkabio",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 0,
                      "login": "fishkabio"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "7 public repos, account ~0 yr old",
                "points": 6.7,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 7
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 0
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "@fishka/seqio"
              ],
              "ecosystems": "npm",
              "any_deprecated": false,
              "min_days_since_publish": 8
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "1 package(s) on npm",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 1,
                      "ecosystems": "npm"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 8 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 8
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "15 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 15
                    }
                  }
                ],
                "max_points": 20
              },
              {
                "key": "not_deprecated",
                "name": "Not deprecated",
                "detail": "active, not deprecated or yanked",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "package_not_deprecated",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "moderate",
        "name": "Engineering Quality",
        "value": 52,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "moderate",
            "name": "Engineering practices",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: CI-Tests. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_ci_tests"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 50,
            "inputs": {
              "has_ci": false,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": true,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": "eslint.config.js",
                "points": 16,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "eslint.config.js"
                    }
                  }
                ],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "moderate",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 55,
            "inputs": {
              "topics": [],
              "has_wiki": false,
              "homepage": "https://fishka.bio",
              "has_readme": true,
              "has_docs_dir": false,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": "https://fishka.bio",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "critical",
        "name": "Security",
        "value": 20,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "critical",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): CI-Tests, Dangerous-Workflow, Packaging, Pinned-Dependencies, Signed-Releases, Token-Permissions. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "ci_tests",
                    "dangerous_workflow",
                    "packaging",
                    "pinned_dependencies",
                    "signed_releases",
                    "token_permissions"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 20,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 12,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 6,
              "scorecard_aggregate": 2
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection not enabled on development/release branches",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 0/28 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 0 contributing companies or organizations -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no workflows found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "no update tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "project was created within the last 90 days. Please review its contents carefully",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow not detected",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "no dependencies found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "no SAST tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "No tokens found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "5 existing vulnerabilities detected",
                "points": 3.8,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 2
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "good",
        "name": "AI Readiness",
        "value": 73,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "good",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 77,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.607,
              "agent_instruction_files": [
                "AGENTS.md",
                "CLAUDE.md"
              ],
              "agent_instruction_max_bytes": 6182
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "AGENTS.md, CLAUDE.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "AGENTS.md, CLAUDE.md"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "17 of 28 human commits state their intent (structured subject or explanatory body)",
                "points": 32.4,
                "status": "partial",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 17,
                      "sampled": 28
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Pinned-Dependencies. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_pinned_dependencies"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 60,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "package-lock.json"
              ],
              "has_dockerfile": false,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [
                "tsconfig.json"
              ],
              "agent_commit_share": 0,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": "eslint.config.js",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "eslint.config.js"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "tsconfig.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "tsconfig.json"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "no agent-authored commits among the last 28",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_authored_commits",
                    "params": {
                      "sampled": 28
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "no automated dependency updates observed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_dependency_automation",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "no dependencies found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "primary_language": "TypeScript",
              "largest_source_bytes": 33921,
              "source_files_sampled": 64,
              "oversized_source_files": 0
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "TypeScript (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "TypeScript"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "0/64 source files over 60KB",
                "points": 55,
                "status": "met",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 64,
                      "oversized": 0
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-30T19:47:53.466621Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/f/fishkabio/seqio.svg",
  "full_name": "fishkabio/seqio",
  "license_state": "standard",
  "license_spdx": "Apache-2.0"
}

Scores are signals, not warranties. They reflect publicly visible practices on GitHub — not a code audit, and not a security guarantee.

Missing data is excluded and weights renormalized, never scored as zero. Methodology is versioned and open: metrics v1.13.0, schema v0.27.0 — full methodology · metrics wiki.

How one result sits in the wider record: aggregate statisticsnpm.