Registro público
Informe de salud del softwareesquema 0.27.0 · métricas 1.13.0 · 2026-07-30 19:47 UTC

fishkabio / seqio

Sequencing file parsers and writers for bioinformatics data

TypeScriptApache-2.0★ 0 estrellas⑂ 0 forksdesde jul 2026Ver en GitHub ↗

fishkabio/seqio tiene un índice de salud de 32 sobre 100, lo que lo sitúa en la banda En riesgo. Su puntuación más alta es AI Readiness (73/100) y la más baja, Security (20/100). Se actualizó por última vez hace 8 días. Una sola persona concentra la mayor parte del trabajo reciente.

32
global / 100
En riesgo

Índice de salud del software

Las métricas se agrupan en categorías ponderadas sobre una escala de 1 a 100. El resultado global parte de su media; cuando la evidencia pública activa la Política de Jurisdicciones de Alto Riesgo, la calificación se ajusta y recibe el límite 49 (En riesgo). Preparación para IA queda fuera.

32
Excelente85-100Ejemplar; cumple prácticamente todos los criterios evaluados
Bueno70-84Saludable; carencias menores
Moderado50-69Aceptable con carencias notables; se recomienda revisión
En riesgo30-49Debilidades significativas; su adopción exige cautela
Crítico1-29Problemas graves (proyecto abandonado, un solo mantenedor, sin higiene)
VitalidadComunidad yAdopciónSostenibilidady GobernanzaCalidad deIngenieríaSeguridadPreparaciónpara IA

Perfil de puntuación

Cada eje es una categoría. La forma importa más que la media: un proyecto sano llena toda la figura, mientras que un perfil de picos y cráteres indica que la fortaleza en una dimensión enmascara el riesgo en otra.

Titularidad

fishka.bioCuenta personal
0 seguidores7 repositorios públicosdesde jul 2026

Este repositorio pertenece a una cuenta personal. Un proyecto con un único propietario conlleva más riesgo de continuidad que uno respaldado por una organización.

Ecosistemas de paquetes

RegistroPaqueteVersiónDescargas / mesVersionesÚltima publicaciónEtiquetas
npm@fishka/seqio0.10.0960115hace 8 díasabifab1scffastafastqchromatogramsangersequencingbioinformatics

Métricas por categoría

Vitalidad

¿Está vivo el proyecto: se escribe código y se publican versiones?

27Crítico · 22% del índice global
Cómo se puntúa
28.8/36Recencia de push — último push hace 8 días
3.5/36Cadencia de commits — 5/52 semanas con commits
13.1/18Volumen de commits — 28 commits en el último año
0/10OpenSSF Scorecard: Maintained — project was created within the last 90 days. Please review its contents carefully
Datos de entrada utilizados
commits_last_year28
human_commit_share1
days_since_last_push8
active_weeks_last_year5
Cómo se puntúa
0/27Publica versiones — sin versiones publicadas
0/36Recencia de las versiones — sin versiones
0/27Cadencia de publicación — sin versiones
0/10OpenSSF Scorecard: Signed-Releases — sin datos
Datos de entrada utilizados
releases_count0
Excluidos de la puntuación (sin datos o no aplicable): OpenSSF Scorecard: Signed-Releases. Los pesos restantes se han renormalizado.

Comunidad y Adopción

¿Tiene el proyecto usuarios, descargas, atención y unas condiciones acogedoras para quienes contribuyen?

34En riesgo · 18% del índice global
Cómo se puntúa
0/60Estrellas — 0 estrellas
0/25Forks — 0 forks
0/15Observadores — 0 observadores
Datos de entrada utilizados
forks0
stars0
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Cómo se puntúa
22.5/22.5README
22.5/22.5Licencia — licencia reconocida (Apache-2.0)
0/18Guía CONTRIBUTING
0/13.5Código de conducta
0/7.2Plantilla de issues
0/6.3Plantilla de PR
Datos de entrada utilizados
has_readme
has_license
has_contributingno
has_issue_templateno
has_code_of_conductno
has_pull_request_templateno
Cómo se puntúa
53.1/80Descargas mensuales — 9601 descargas/mes en npm
0/20Dependientes en el registro — no lo informa este ecosistema
Datos de entrada utilizados
packages@fishka/seqio
dependents
ecosystemsnpm
total_downloads
monthly_downloads9601
Excluidos de la puntuación (sin datos o no aplicable): Dependientes en el registro. Los pesos restantes se han renormalizado.

Sostenibilidad y Gobernanza

¿Sobrevivirá el proyecto a sus personas: factor bus, capacidad de respuesta, quién lo respalda y mantenimiento del paquete?

28Crítico · 24% del índice global
Cómo se puntúa
9/54Factor bus — la mitad de los commits recae en 1 contribuyente(s)
0/22.5Distribución de commits — el principal contribuyente firma el 100% de los commits
1.4/13.5Amplitud de contribuyentes — 1 contribuyentes
0/10OpenSSF Scorecard: Contributors — project has 0 contributing companies or organizations -- score normalized to 0
Datos de entrada utilizados
bus_factor1
contributors_sampled1
top_contributor_share1
Cómo se puntúa
0/46.8Resolución de issues — sin issues o sin datos
0/38.3Aceptación de PR — sin PR decididos o sin datos
0/15OpenSSF Scorecard: Code-Review — Found 0/28 approved changesets -- score normalized to 0
Datos de entrada utilizados
merged_prs0
open_issues0
closed_issues0
issue_closed_ratio
closed_unmerged_prs0
Excluidos de la puntuación (sin datos o no aplicable): Resolución de issues, Aceptación de PR. Los pesos restantes se han renormalizado.
Cómo se puntúa
10/30Respaldo de la propiedad — cuenta personal (usuario)
0/20Dominio verificado — no aplicable a cuentas de usuario
0/25Alcance del propietario — 0 seguidores de fishkabio
6.7/25Trayectoria — 7 repos públicos, cuenta de ~0 años
Datos de entrada utilizados
followers0
owner_typeUser
is_verified
owner_loginfishkabio
public_repos7
account_age_days29
Excluidos de la puntuación (sin datos o no aplicable): Dominio verificado. Los pesos restantes se han renormalizado.
Cómo se puntúa
25/25Publicado y resoluble — 1 paquete(s) en npm
35/35Recencia de publicación — última publicación hace 8 días
20/20Historial de versiones — 15 versiones en el registro
20/20No obsoleto — activo, ni obsoleto ni retirado
Datos de entrada utilizados
packages@fishka/seqio
ecosystemsnpm
any_deprecatedno
min_days_since_publish8

Calidad de Ingeniería

¿Existen unas prácticas mínimas de ingeniería y documentación?

52Moderado · 20% del índice global
Cómo se puntúa
0/24Flujos de trabajo de CI
24/24Pruebas presentes
16/16Configuración de linter — eslint.config.js
0/9.6Hooks de pre-commit
0/6.4.editorconfig
0/20OpenSSF Scorecard: CI-Tests — sin datos
Datos de entrada utilizados
has_cino
has_tests
has_editorconfigno
has_linter_config
has_precommit_configno
Excluidos de la puntuación (sin datos o no aplicable): OpenSSF Scorecard: CI-Tests. Los pesos restantes se han renormalizado.

Documentación

55Moderado
Cómo se puntúa
30/30README
0/25Directorio de documentación
15/15Sitio de documentación / página del proyecto — https://fishka.bio
10/10Descripción del repositorio
0/10Topics
0/10Wiki
Datos de entrada utilizados
topics
has_wikino
homepagehttps://fishka.bio
has_readme
has_docs_dirno
has_description

Seguridad

¿Son sólidas las prácticas visibles de seguridad y de cadena de suministro, sin exposición jurisdiccional de alto riesgo sin resolver?

20Crítico · 16% del índice global
Cómo se puntúa
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 — sin datos
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 — sin datos
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5Licencia — license file detected
0/7.5Maintained — project was created within the last 90 days. Please review its contents carefully
0/5Packaging — sin datos
0/5Pinned-Dependencies — sin datos
0/5SAST — no SAST tool detected
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — sin datos
0/7.5Token-Permissions — sin datos
3.8/7.5Vulnerabilities — 5 existing vulnerabilities detected
Datos de entrada utilizados
sourceopenssf_scorecard
checks_evaluated12
scorecard_versionv5.5.0
checks_inconclusive6
scorecard_aggregate2
Excluidos de la puntuación (sin datos o no aplicable): ci_tests, dangerous_workflow, packaging, pinned_dependencies, signed_releases, token_permissions. Los pesos restantes se han renormalizado.

Preparación para IA

¿Hasta qué punto está el repositorio preparado para desarrollarse y mantenerse con agentes de codificación de IA? Es una insignia independiente y experimental — peso 0,0, de modo que se presenta por separado y no afecta a la puntuación de salud global.

73Bueno · 0% del índice global
Cómo se puntúa
45/45Instrucciones para agentes — AGENTS.md, CLAUDE.md
0/15Documentación legible por máquinas (llms.txt)
32.4/40Historial de commits legible — 17 de 28 commits humanos declaran su intención (asunto estructurado o cuerpo explicativo)
Datos de entrada utilizados
has_llms_txtno
legible_history_share0,607
agent_instruction_filesAGENTS.md, CLAUDE.md
agent_instruction_max_bytes6182
Cómo se puntúa
0/18Arranque con un solo comando
22/22Pruebas automatizadas
11/11Configuración de lint / formato — eslint.config.js
11/11Verificación estática de tipos — tsconfig.json
10/10Entorno reproducible — lockfile
0/10Práctica demostrada con agentes — ningún commit con autoría de agente entre los últimos 28
0/8Mantenimiento automatizado — no se observan actualizaciones automáticas de dependencias
0/10OpenSSF Scorecard: Pinned-Dependencies — sin datos
Datos de entrada utilizados
has_nixno
has_tests
lockfilespackage-lock.json
has_dockerfileno
typed_language
bootstrap_files
has_devcontainerno
has_linter_config
typecheck_configstsconfig.json
agent_commit_share0
toolchain_manifests
dependency_bot_commit_share0
Excluidos de la puntuación (sin datos o no aplicable): OpenSSF Scorecard: Pinned-Dependencies. Los pesos restantes se han renormalizado.
Cómo se puntúa
45/45Código verificable por tipos — TypeScript (tipado estático)
55/55Tamaños de archivo manejables — 0/64 archivos fuente de más de 60 KB
Datos de entrada utilizados
primary_languageTypeScript
largest_source_bytes33.921
source_files_sampled64
oversized_source_files0

Datos clave

0estrellas de GitHub
1contribuidores
28commits en los últimos 12 meses
8días desde el último push
0versiones publicadas
1factor bus
0issues abiertas
npmecosistemas de paquetes

Advertencias de recopilación de datos

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

Más detalle

OpenSSF Scorecard 2.0 / 10
2.0agregado

Evaluación de seguridad independiente y agnóstica en cuanto a herramientas, procedente del proyecto de código abierto OpenSSF Scorecard. Cada comprobación premia una práctica de seguridad, no la herramienta de un proveedor concreto. Las comprobaciones que Scorecard no pudo determinar se marcan como n/d y se excluyen de la puntuación de seguridad (nunca se cuentan como cero).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/dCI-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/dDangerous-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/dPackagingpackaging workflow not detected
n/dPinned-Dependenciesno dependencies found
0SASTno SAST tool detected
0Security-Policysecurity policy file not detected
n/dSigned-Releasesno releases found
n/dToken-PermissionsNo tokens found
5Vulnerabilities5 existing vulnerabilities detected
Todas las dependencias no recopilado

No fue posible recopilar el conjunto de dependencias resuelto para este informe: GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Informe JSON sin procesar legible por máquina
{
  "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"
}

Las puntuaciones son señales, no garantías. Reflejan prácticas públicamente visibles en GitHub; no son una auditoría de código ni una garantía de seguridad.

Los datos ausentes se excluyen y los pesos se renormalizan; nunca se puntúan como cero. La metodología es versionada y abierta: métricas v1.13.0, esquema v0.27.0 — metodología completa · wiki de métricas.

Cómo se sitúa un resultado dentro del registro general: estadísticas agregadasnpm.