{"ok":true,"data":{"schemaVersion":"repopulse.v1","weights":{"commitRecency":20,"releaseCadence":8,"issueHygiene":10,"prFlow":16,"busFactor":12,"ciPresence":10,"testPresence":12,"docs":6,"depFreshness":6},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://repo-pulse/schema/repopulse.v1.json","title":"RepoPulse Health Report","description":"Deterministic health assessment of a public GitHub repository. The same repository state always yields the same score.","type":"object","properties":{"schemaVersion":{"type":"string","const":"repopulse.v1","description":"Response schema version."},"repo":{"type":"string","description":"Canonical owner/name identifier of the scored repository."},"score":{"type":"integer","minimum":0,"maximum":100,"description":"Composite health score, 0 (worst) to 100 (best)."},"grade":{"type":"string","enum":["A","B","C","D","F"],"description":"Letter grade derived from the score."},"signals":{"type":"object","description":"Per-signal breakdown; each entry has a 0–100 score plus signal-specific metrics.","properties":{"commitRecency":{"type":"object","description":"How recently the default branch was updated; decays as the last commit ages.","properties":{"score":{"type":"number","minimum":0,"maximum":100,"description":"0–100 sub-score."}},"required":["score"],"additionalProperties":true},"releaseCadence":{"type":"object","description":"Regularity and recency of published releases/tags.","properties":{"score":{"type":"number","minimum":0,"maximum":100,"description":"0–100 sub-score."}},"required":["score"],"additionalProperties":true},"issueHygiene":{"type":"object","description":"Issue close rate and responsiveness (open/closed ratio, age of open issues).","properties":{"score":{"type":"number","minimum":0,"maximum":100,"description":"0–100 sub-score."}},"required":["score"],"additionalProperties":true},"prFlow":{"type":"object","description":"Pull-request throughput: merge rate and how quickly PRs are resolved.","properties":{"score":{"type":"number","minimum":0,"maximum":100,"description":"0–100 sub-score."}},"required":["score"],"additionalProperties":true},"busFactor":{"type":"object","description":"Concentration of contributions; low when a single author dominates.","properties":{"score":{"type":"number","minimum":0,"maximum":100,"description":"0–100 sub-score."}},"required":["score"],"additionalProperties":true},"ciPresence":{"type":"object","description":"Whether continuous-integration configuration is present.","properties":{"score":{"type":"number","minimum":0,"maximum":100,"description":"0–100 sub-score."}},"required":["score"],"additionalProperties":true},"testPresence":{"type":"object","description":"Whether a test suite / test directories are present.","properties":{"score":{"type":"number","minimum":0,"maximum":100,"description":"0–100 sub-score."}},"required":["score"],"additionalProperties":true},"docs":{"type":"object","description":"Presence and depth of documentation (README, docs/, license, description).","properties":{"score":{"type":"number","minimum":0,"maximum":100,"description":"0–100 sub-score."}},"required":["score"],"additionalProperties":true},"depFreshness":{"type":"object","description":"Best-effort freshness of declared dependencies from the manifest.","properties":{"score":{"type":"number","minimum":0,"maximum":100,"description":"0–100 sub-score."}},"required":["score"],"additionalProperties":true}},"required":["commitRecency","releaseCadence","issueHygiene","prFlow","busFactor","ciPresence","testPresence","docs","depFreshness"],"additionalProperties":false},"weights":{"type":"object","description":"Relative weight applied to each signal when computing the composite score.","properties":{"commitRecency":{"type":"number"},"releaseCadence":{"type":"number"},"issueHygiene":{"type":"number"},"prFlow":{"type":"number"},"busFactor":{"type":"number"},"ciPresence":{"type":"number"},"testPresence":{"type":"number"},"docs":{"type":"number"},"depFreshness":{"type":"number"}},"required":["commitRecency","releaseCadence","issueHygiene","prFlow","busFactor","ciPresence","testPresence","docs","depFreshness"],"additionalProperties":false},"flags":{"type":"array","description":"Notable conditions, e.g. ARCHIVED, NO_LICENSE, SINGLE_MAINTAINER, STALE.","items":{"type":"string","enum":["ARCHIVED","NO_LICENSE","SINGLE_MAINTAINER","NO_CI","NO_TESTS","NO_DESCRIPTION","STALE","NO_RELEASES","FORK"]}},"summary":{"type":"string","description":"One-sentence, human-readable summary of the repository's health."},"generatedAt":{"type":"string","format":"date-time","description":"When the score was computed (ISO-8601)."},"stale":{"type":"boolean","description":"Present and true when served from cache because GitHub was slow or unavailable."}},"required":["schemaVersion","repo","score","grade","signals","weights","flags","summary","generatedAt"],"additionalProperties":false,"examples":[{"schemaVersion":"repopulse.v1","repo":"honojs/hono","score":91,"grade":"A","signals":{"commitRecency":{"score":100,"daysSinceLastCommit":0},"releaseCadence":{"score":88,"releasesLast90Days":3,"daysSinceLastRelease":12},"issueHygiene":{"score":82,"openIssues":40,"closeRatio":0.86},"prFlow":{"score":90,"mergeRatio":0.78,"medianMergeHours":20},"busFactor":{"score":74,"topAuthorShare":0.41,"effectiveContributors":6},"ciPresence":{"score":100,"hasCI":true},"testPresence":{"score":100,"hasTests":true},"docs":{"score":92,"hasReadme":true,"hasDocsDir":true,"hasLicense":true},"depFreshness":{"score":80,"manifest":"package.json","pinnedRatio":0.8}},"weights":{"commitRecency":20,"releaseCadence":8,"issueHygiene":10,"prFlow":16,"busFactor":12,"ciPresence":10,"testPresence":12,"docs":6,"depFreshness":6},"flags":[],"summary":"Actively maintained with strong CI, tests, and a healthy contributor base.","generatedAt":"2026-07-11T00:00:00.000Z"}]}},"callId":"107d0ae1-5cfc-4373-ae86-4cb5f88e8204"}