Public record
Software health reportschema 0.27.0 · metrics 1.13.0 · 2026-07-23 08:39 UTC

tamatebako / tebako

Tebako: an executable packager (for Ruby programs)

RubyCustom license★ 438 stars⑂ 21 forkssince Jul 2021View on GitHub ↗

tamatebako/tebako holds a health index of 63 out of 100, placing it in the Moderate band. It scores highest on Engineering Quality (69/100) and lowest on AI Readiness (45/100). It was last updated today. A single contributor accounts for most of its recent work.

63
overall / 100
Moderate

Software health index

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

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

Score profile

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

Ownership

TebakoOrganization
3 followers19 public repossince Jul 2021

This repository is backed by an organization — shared, accountable stewardship that can outlive any single maintainer.

Package ecosystems

RegistryPackageVersionDownloads / moVersionsLast publish
RubyGemstebako0.15.1-720 days ago

Metrics by category

Vitality

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

68Moderate · 22% of overall
How it's scored
36/36Push recency — last push 0 days ago
2.1/36Commit cadence — 3/52 weeks with commits
13/18Commit volume — 27 commits in the last year
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Inputs used
commits_last_year27
human_commit_share1
days_since_last_push0
active_weeks_last_year3
How it's scored
27/27Ships releases — 28 releases published
16.2/36Release recency — latest release 260 days ago
27/27Release cadence — a release every ~29.2 days
0/10OpenSSF Scorecard: Signed-Releases — no data
Inputs used
releases_count28
latest_release_tagv0.14.0
releases_from_tagsno
days_since_latest_release260
mean_days_between_releases29.2
Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.

Community & Adoption

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

61Moderate · 18% of overall
How it's scored
42.8/60Stars — 438 stars
10.8/25Forks — 21 forks
5/15Watchers — 9 watchers
Inputs used
forks21
stars438
watchers9
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
How it's scored
22.5/22.5README
16.9/22.5License — license file present, not a recognized license
18/18CONTRIBUTING guide
0/13.5Code of conduct
0/7.2Issue template
0/6.3PR template
Inputs used
has_readmeyes
has_licenseyes
has_contributingyes
has_issue_templateno
has_code_of_conductno
has_pull_request_templateno
How it's scored
48.7/80Total downloads — 48,976 downloads all-time across rubygems
0/20Registry dependents — not reported by this ecosystem
Inputs used
packagestebako
dependents
ecosystemsrubygems
total_downloads48,976
monthly_downloads
Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.

Sustainability & Governance

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

60Moderate · 24% of overall
How it's scored
9/54Bus factor — 1 contributor(s) cover half of all commits
4/22.5Commit distribution — top contributor authored 82% of commits
8.1/13.5Contributor breadth — 6 contributors
10/10OpenSSF Scorecard: Contributors — project has 7 contributing companies or organizations
Inputs used
bus_factor1
contributors_sampled6
top_contributor_share0.824
How it's scored
33.6/46.8Issue resolution — 72% of issues closed
34.8/38.3PR acceptance — 133/146 decided PRs merged
0/15OpenSSF Scorecard: Code-Review — Found 0/10 approved changesets -- score normalized to 0
Inputs used
merged_prs133
open_issues51
closed_issues130
issue_closed_ratio0.718
closed_unmerged_prs13
How it's scored
30/30Ownership backing — organization-owned
0/20Verified domain
4.3/25Owner reach — 3 followers of tamatebako
19.5/25Track record — 19 public repos, account ~5 yr old
Inputs used
followers3
owner_typeOrganization
is_verified
owner_logintamatebako
public_repos19
account_age_days1,830
How it's scored
25/25Published & resolvable — 1 package(s) on rubygems
35/35Publish recency — latest publish 0 days ago
20/20Version history — 72 published versions
20/20Not deprecated — active, not deprecated or yanked
Inputs used
packagestebako
ecosystemsrubygems
any_deprecatedno
min_days_since_publish0

Engineering Quality

Are baseline engineering and documentation practices in place?

69Moderate · 20% of overall
How it's scored
24/24CI workflows — 6 workflow(s)
24/24Tests present
16/16Linter config — .rubocop.yml
0/9.6Pre-commit hooks
0/6.4.editorconfig
8/20OpenSSF Scorecard: CI-Tests — 2 out of 5 merged PRs checked by a CI test -- score normalized to 4
Inputs used
has_ciyes
has_testsyes
has_editorconfigno
has_linter_configyes
has_precommit_configno

Documentation

65Moderate
How it's scored
30/30README
0/25Documentation directory
15/15Documentation / homepage site — https://www.tebako.org
10/10Repository description
0/10Topics
10/10Wiki
Inputs used
topics
has_wikiyes
homepagehttps://www.tebako.org
has_readmeyes
has_docs_dirno
has_descriptionyes

Security

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

58Moderate · 16% of overall
How it's scored
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — branch protection not enabled on development/release branches
1/2.5CI-Tests — 2 out of 5 merged PRs checked by a CI test -- score normalized to 4
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/10 approved changesets -- score normalized to 0
2.5/2.5Contributors — project has 7 contributing companies or organizations
10/10Dangerous-Workflow — no dangerous workflow patterns detected
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.2/2.5License — license file detected
7.5/7.5Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
5/5Packaging — packaging workflow detected
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
4/5SAST — SAST tool is not run on all commits -- score normalized to 8
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — no data
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
7.5/7.5Vulnerabilities — 0 existing vulnerabilities detected
Inputs used
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate4.8
Excluded from scoring (no data or not applicable): signed_releases. Remaining weights renormalized.
How it's scored
35/35Direct dependencies free of known advisories — no direct dependency carries a known advisory
0/25Indirect dependencies free of known advisories — transitive set not separable from development and test dependencies in this scope
0/40No advisories left outstanding — no advisory carries a publication date
Inputs used
sourceosv
advisories0
affected_packages0
assessed_packages13
unassessed_packages25
affected_by_severitynone
direct_affected_packages0
Excluded from scoring (no data or not applicable): Indirect dependencies free of known advisories, No advisories left outstanding. Remaining weights renormalized. Matched 13 resolved dependencies against OSV. 25 could not be assessed — no resolved version, an unsupported ecosystem, or beyond the reported package list. This repository publishes no package the index resolves, so the repository dependency graph was assessed instead. That graph mixes development and test pins with shipped dependencies, so only the declared runtime dependencies are scored; transitive findings are reported as context and excluded from the score. Reachability is not analyzed.

AI Readiness

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

45At risk · 0% of overall
How it's scored
0/45Agent instructions — no CLAUDE.md / AGENTS.md / editor rules
0/15Machine-readable docs (llms.txt)
40/40Legible commit history — 100 of 100 human commits state their intent (structured subject or explanatory body)
Inputs used
has_llms_txtno
legible_history_share1
agent_instruction_files
agent_instruction_max_bytes
How it's scored
0/18One-command bootstrap
22/22Automated tests
11/11Lint / format config — .rubocop.yml
0/11Static type checking
10/10Reproducible environment — lockfile
2/10Demonstrated agent practice — 1 of the last 100 commits agent-authored or agent-credited
0/8Automated maintenance — no automated dependency updates observed
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Inputs used
has_nixno
has_testsyes
lockfilesGemfile.lock
has_dockerfileno
typed_languageno
bootstrap_files
has_devcontainerno
has_linter_configyes
typecheck_configs
agent_commit_share0.01
toolchain_manifests
dependency_bot_commit_share0
How it's scored
0/45Type-checkable code — Ruby without a type-check config
55/55Manageable file sizes — 0/111 source files over 60KB
Inputs used
primary_languageRuby
largest_source_bytes35,216
source_files_sampled111
oversized_source_files0

Key facts

438GitHub stars
6contributors
27commits, last 12 months
0days since last push
28releases
1bus factor
51open issues
RubyGemspackage ecosystems

Data collection warnings

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token

More detail

Star and fork history 0 ★ / 21 ⇿
0Stars
21Forks
28Releases

When each star and fork was added, collected from GitHub and bucketed by day. Cumulative growth sits directly above the daily additions it is made of, so the two read against each other: steady organic accretion looks nothing like an abrupt, short-lived burst. Where that difference is measurable, it is reported as growth authenticity.

0481216202012023-102025-022026-07
Major 0Minor 6Patch 22

Each point covers 3 days.

OpenSSF Scorecard 4.8 / 10
4.8aggregate

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

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
4CI-Tests2 out of 5 merged PRs checked by a CI test -- score normalized to 4
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/10 approved changesets -- score normalized to 0
10Contributorsproject has 7 contributing companies or organizations
10Dangerous-Workflowno dangerous workflow patterns detected
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
9Licenselicense file detected
10Maintained30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
10Packagingpackaging workflow detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
8SASTSAST tool is not run on all commits -- score normalized to 8
0Security-Policysecurity policy file not detected
n/aSigned-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
10Vulnerabilities0 existing vulnerabilities detected
All dependencies 38

Full resolved dependency set from the GitHub dependency graph: 0 direct and 38 indirect (transitive) packages. The transitive closure is complete when the repository commits a lockfile.

RegistryPackageVersionRelation
RubyGemsbundlerindirect
RubyGemsbyebugindirect
RubyGemsbyebug11.1.3indirect
RubyGemsdate3.4.1indirect
RubyGemsdebugindirect
RubyGemsdebug1.10.0indirect
RubyGemsexcavateindirect
RubyGemsexpressirindirect
RubyGemsffiindirect
RubyGemsffi1.17.1indirect
RubyGemsffi-libarchive-binaryindirect
RubyGemshoeindirect
RubyGemsio-console0.8.0indirect
RubyGemsirb1.15.1indirect
RubyGemslibmspackindirect
RubyGemsminitestindirect
RubyGemsnet-httpindirect
RubyGemsnokogiriindirect
RubyGemspp0.6.2indirect
RubyGemsprettyprint0.2.0indirect
RubyGemspsychindirect
RubyGemspsych5.2.3indirect
RubyGemsrakeindirect
RubyGemsrdbgindirect
RubyGemsrdoc6.11.0indirect
RubyGemsreline0.6.0indirect
RubyGemsrspecindirect
RubyGemsrubocopindirect
RubyGemsrubocop-rubycwindirect
RubyGemssasscindirect
RubyGemsseven-zipindirect
RubyGemssimplecovindirect
RubyGemssimplecov-coberturaindirect
RubyGemsstringio3.1.2indirect
RubyGemstext-tableindirect
RubyGemstext-table1.2.4indirect
RubyGemsthorindirect
RubyGemsyamlindirect
Dependency advisories 0

This repository publishes no package the index resolves, so its own dependency graph was assessed — 13 packages, which also include development and test pins that never ship: 0 carry known advisories, of which 0 are direct. 25 could not be assessed — no resolved version, an unsupported ecosystem, or beyond the reported package list.

No known advisories affect the assessed dependencies.

An advisory means the version recorded in the dependency graph falls inside an advisory’s affected range. Reachability is not analysed, and the graph includes development and test pins — a finding may concern tooling rather than shipped software.

Raw JSON report machine-readable
{
  "data": {
    "repo": {
      "topics": [],
      "is_fork": false,
      "size_kb": 16557,
      "has_wiki": true,
      "homepage": "https://www.tebako.org",
      "languages": {
        "C": 22078,
        "C++": 27153,
        "Ruby": 543666,
        "SCSS": 2238,
        "CMake": 42386,
        "Shell": 29424
      },
      "pushed_at": "2026-07-23T08:18:25Z",
      "created_at": "2021-07-18T07:29:47Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-23T06:46:01Z",
      "description": "Tebako: an executable packager (for Ruby programs)",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": null,
      "default_branch": "main",
      "license_spdx_raw": "NOASSERTION",
      "primary_language": "Ruby",
      "significant_languages": [
        "Ruby"
      ]
    },
    "owner": {
      "blog": "https://www.tebako.org",
      "name": "Tebako",
      "type": "Organization",
      "login": "tamatebako",
      "company": null,
      "location": null,
      "followers": 3,
      "avatar_url": "https://avatars.githubusercontent.com/u/87628837?v=4",
      "created_at": "2021-07-19T03:13:53Z",
      "is_verified": null,
      "public_repos": 19,
      "account_age_days": 1830
    },
    "license": {
      "state": "custom",
      "spdx_id": null,
      "raw_spdx": "NOASSERTION",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v0.14.0",
          "kind": "minor",
          "published_at": "2025-11-04T11:36:55Z"
        },
        {
          "tag": "v0.13.3",
          "kind": "patch",
          "published_at": "2025-05-01T06:47:20Z"
        },
        {
          "tag": "v0.13.2",
          "kind": "patch",
          "published_at": "2025-04-13T18:28:25Z"
        },
        {
          "tag": "v0.13.1",
          "kind": "patch",
          "published_at": "2025-04-09T22:10:41Z"
        },
        {
          "tag": "v0.13.0",
          "kind": "minor",
          "published_at": "2025-03-21T10:19:43Z"
        },
        {
          "tag": "v0.12.16",
          "kind": "patch",
          "published_at": "2025-03-03T17:08:31Z"
        },
        {
          "tag": "v0.12.15",
          "kind": "patch",
          "published_at": "2025-02-24T09:33:05Z"
        },
        {
          "tag": "v0.12.14",
          "kind": "patch",
          "published_at": "2025-02-22T14:38:55Z"
        },
        {
          "tag": "v0.12.13",
          "kind": "patch",
          "published_at": "2025-02-15T08:31:38Z"
        },
        {
          "tag": "v0.12.12",
          "kind": "patch",
          "published_at": "2025-02-14T19:18:57Z"
        },
        {
          "tag": "v0.12.11",
          "kind": "patch",
          "published_at": "2025-02-14T06:35:45Z"
        },
        {
          "tag": "v0.12.10",
          "kind": "patch",
          "published_at": "2025-02-08T06:49:11Z"
        },
        {
          "tag": "v0.12.9",
          "kind": "patch",
          "published_at": "2025-01-31T07:38:25Z"
        },
        {
          "tag": "v0.12.8",
          "kind": "patch",
          "published_at": "2025-01-25T18:53:24Z"
        },
        {
          "tag": "v0.12.6",
          "kind": "patch",
          "published_at": "2025-01-24T16:09:09Z"
        },
        {
          "tag": "v0.12.4",
          "kind": "patch",
          "published_at": "2025-01-18T08:05:49Z"
        },
        {
          "tag": "v0.12.1",
          "kind": "patch",
          "published_at": "2025-01-12T20:29:07Z"
        },
        {
          "tag": "v0.12.0",
          "kind": "minor",
          "published_at": "2025-01-05T09:54:36Z"
        },
        {
          "tag": "v0.11.0",
          "kind": "minor",
          "published_at": "2024-12-25T18:27:32Z"
        },
        {
          "tag": "v0.10.0",
          "kind": "minor",
          "published_at": "2024-12-15T06:53:44Z"
        },
        {
          "tag": "v0.9.3",
          "kind": "patch",
          "published_at": "2024-11-28T07:54:42Z"
        },
        {
          "tag": "v0.9.2",
          "kind": "patch",
          "published_at": "2024-11-28T07:54:14Z"
        },
        {
          "tag": "v0.9.1",
          "kind": "patch",
          "published_at": "2024-10-03T22:00:53Z"
        },
        {
          "tag": "v0.9.0",
          "kind": "minor",
          "published_at": "2024-10-03T14:54:34Z"
        },
        {
          "tag": "v0.8.8",
          "kind": "patch",
          "published_at": "2024-10-02T15:43:50Z"
        },
        {
          "tag": "v0.8.7",
          "kind": "patch",
          "published_at": "2024-09-03T11:55:52Z"
        },
        {
          "tag": "v0.8.6",
          "kind": "patch",
          "published_at": "2024-09-02T13:19:31Z"
        },
        {
          "tag": "v0.8.5",
          "kind": "patch",
          "published_at": "2024-08-31T13:34:21Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "51787fd44a14a259e3d5783554da1f38246ce0b8",
          "body": "Supersedes 0.15.0 immediately: drops folly-era libiberty/libunwind\nfrom the linux link lists (runtime-ruby legs on the refreshed ci\ncontainers could not link miniruby without them).",
          "is_bot": false,
          "headline": "chore: version 0.15.1",
          "author_name": "Ronald Tse",
          "author_login": "ronaldtse",
          "committed_at": "2026-07-23T08:18:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0d435ac211ba732f96fc8449930acde6c091d013",
          "body": "Nothing in the shipped libtfs/dwarfs-t deps, tebako-main, or ruby\nreferences libiberty or libunwind symbols (nm-verified across all\narchives), and the refreshed ci containers no longer ship them — the\nruntime-ruby v0.15.0 gnu legs failed to link miniruby on the missing\nlibraries. The entries were folly-era dead weight.",
          "is_bot": false,
          "headline": "fix(packager): drop folly-era libiberty/libunwind from linux link lists",
          "author_name": "Ronald Tse",
          "author_login": "ronaldtse",
          "committed_at": "2026-07-23T08:16:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b59ffe793e6fd8a2c1ad6817626ab439191d403f",
          "body": null,
          "is_bot": false,
          "headline": "ci: cross-test legs advisory too (same release-blocking rationale)",
          "author_name": "Ronald Tse",
          "author_login": "ronaldtse",
          "committed_at": "2026-07-23T06:44:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ae6e2faeb3895fe977f7d1a331ae9f4815b95e15",
          "body": "…eleases\n\nThe metanorma/fontist packaging legs carry pre-existing upstream\ngem-drift failures (lutaml LoadError, fontist NameError) that are\ntracked separately. The release job needs these legs, so their\npre-existing redness skipped the release entirely (as seen on main\nsince the v0.14.0 line). They keep running as signal but no longer\ngate the gem release and the dependent-repositories dispatch.",
          "is_bot": false,
          "headline": "ci: packaging test legs advisory (continue-on-error) — do not block r…",
          "author_name": "Ronald Tse",
          "author_login": "ronaldtse",
          "committed_at": "2026-07-23T06:03:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7aa5b3ed856c46ee247e7d16c4e6657bb1f0dfc6",
          "body": "The thrift-free engine release: libtfs replaces libdwarfs as the VFS\nengine (dwarfs-t backend, no folly/fbthrift), prebuilt libtfs/deps\npackages, trailer-aware tebako-main (tpkg), runtime manager for\nprebuilt runtime packages, stitcher, and launcher ABI v1 for\nthree-part packages (bootstrap + runtime + images).",
          "is_bot": false,
          "headline": "chore: version 0.15.0",
          "author_name": "Ronald Tse",
          "author_login": "ronaldtse",
          "committed_at": "2026-07-23T05:59:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3c770c3550b2f6a3b3637c9d02cbe9a21e98996c",
          "body": "Runtime side of the three-part package handoff (Stage 3B-2, spec §4.4):\na lean package's tebako-bootstrap execs the runtime as\n\n  <runtime> --tebako-image <file>:<slot>:<mount-point> ...\n            --tebako-entry <argv0> <user args...>\n\nand tebako-main now consumes that handoff before the classic\nc\n[…]\ns on ubuntu 24.04; the end-to-end run there is blocked by the\nprebuilt libtfs-deps-0.12.5-linux-gnu-arm64 package missing\nBoost.Process v2 symbols (upstream packaging issue, unrelated to this\nchange).",
          "is_bot": false,
          "headline": "feat: launcher ABI v1 (bootstrap→runtime image mounting)",
          "author_name": "Ronald Tse",
          "author_login": "ronaldtse",
          "committed_at": "2026-07-23T05:57:03Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "206571ee8b40bd6d1111808519db1149a3cf2e60",
          "body": "Tebako::Stitcher (pure Ruby + File IO, stdlib only) appends DwarFS images\nonto a prebuilt runtime binary and writes the tpkg manifest trailer\n(spec §4.3): 8-byte-aligned slots, slot table, fixed 166-byte header at\nEOF with magic TEBAKOTFS, LEAN package flag, runtime_ref, and a\nzlib-polynomial CRC32 \n[…]\nool is a user step).\n\nGolden-verified on macOS arm64: hello fixture pressed from source and\nstitched produce identical stdout and exit code, and identical image\nlayout (except the dispatcher stub.rb).",
          "is_bot": false,
          "headline": "feat: stitch flow — press from prebuilt runtimes (Stage 3A-4)",
          "author_name": "Ronald Tse",
          "author_login": "ronaldtse",
          "committed_at": "2026-07-23T05:56:12Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ce4f6fd91438bdf21b2e53407e615c588e5115dd",
          "body": "…es (Stage 3A-3)\n\nTebako::RuntimeManager resolves prebuilt tebako runtime packages from\ntamatebako/tebako-runtime-ruby releases into a machine-wide cache\n($TEBAKO_HOME or ~/.tebako, runtimes/<type>-<ruby>-<tebakoabi>-<platform>/).\n\n- manifest.json-first index with SHA256SUMS.txt fallback parsing\n- d\n[…]\nfline miss (123),\n  no usable index (124), lock timeout (125)\n- tebako cache list / tebako cache prune [--all | --older-than Nd]\n\nstdlib only (net/http, fileutils, digest, json); 27 new rspec examples",
          "is_bot": false,
          "headline": "feat: runtime manager — resolve/download/verify/cache prebuilt runtim…",
          "author_name": "Ronald Tse",
          "author_login": "ronaldtse",
          "committed_at": "2026-07-23T05:55:10Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b80ef0352b4ebee8fffadfaafb2c83e902663d17",
          "body": "Probe the own executable for a tpkg manifest trailer at incbin startup\nand mount recorded images instead of the incbin section when present\n(spec 4.3 / 6):\n\n- trailer present: read self image, mount each slot at its recorded\n  mount point via the legacy memfs path using the slot's explicit\n  offset \n[…]\ntation (pre-existing, not introduced here): extra (non-root)\nslot mounts hit a libtfs/dwarfs-t multi-memfs engine bug (inode_offset\ndouble-subtraction in the FlatBuffers metadata path) -- see PR body.",
          "is_bot": false,
          "headline": "feat: trailer-aware tebako-main (append-mount path, Stage 3A-2)",
          "author_name": "Ronald Tse",
          "author_login": "ronaldtse",
          "committed_at": "2026-07-23T05:54:13Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "94c22eba3de86ab810d158acdcd888b861807fff",
          "body": "brew's static libjemalloc.a crashes packaged miniruby at startup on\nthe XCode 15.4 CI runners (SEGV in je_arena_ralloc during builtin\ninit); the dylib alternative fails test_101's no-shared-libs\nassertion. Neither libtfs nor ruby references je_ symbols (verified\nin the shipped archives), so link no allocator on macOS until a\nproperly built static jemalloc ships with libtfs-deps.",
          "is_bot": false,
          "headline": "fix(packager): drop jemalloc from the darwin link",
          "author_name": "Ronald Tse",
          "author_login": "ronaldtse",
          "committed_at": "2026-07-23T05:53:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "afe9efc74c8ed971639ff9651075fefddefd82bf",
          "body": "The harness captures press output into a variable with VERBOSE=no, so\nCI logs show the ASSERT lines but never the actual error. Print the\ncaptured output on non-zero/unexpected exit codes.",
          "is_bot": false,
          "headline": "test: print captured press output when a functional press fails",
          "author_name": "Ronald Tse",
          "author_login": "ronaldtse",
          "committed_at": "2026-07-23T05:53:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "eed02bb77d5a84507a4412840d1ffa3300349a3f",
          "body": "(The env override in def_ext_prj_g is currently inert due to a missing\nclosing brace in its condition — the CMakeLists pin is the operative\nselection; common.env is kept in sync for the release convention and\nthe GITHUB_ENV echo.)",
          "is_bot": false,
          "headline": "chore: common.env DWARFS_WR_TAG=v0.12.8 (track the CMakeLists pin)",
          "author_name": "Ronald Tse",
          "author_login": "ronaldtse",
          "committed_at": "2026-07-23T05:53:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5fd28643bdd8955fb617bde6e5b6f261a7083933",
          "body": "The deps cache restored ruby build trees whose baked Makefiles/rbconfig\nreflected an older patch_libraries.rb (link libs list) — press relinks\nthen failed with no source-level explanation while setup passed. This\nbit twice in a row (pre-group list, then the jemalloc concatenation\ntypo). Packager changes now invalidate the cache.",
          "is_bot": false,
          "headline": "ci: hash lib/tebako/packager into the deps cache key",
          "author_name": "Ronald Tse",
          "author_login": "ronaldtse",
          "committed_at": "2026-07-23T05:53:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3f6f24601eb1401b59c9fe27c7ad0dbe25251b83",
          "body": "…k line\n\nThe line continuation in 7328be4 concatenated 'libjemalloc.a' and\n'-lc++' into a single nonexistent path and every macOS press failed to\nlink miniruby.",
          "is_bot": false,
          "headline": "fix(packager): keep the space before -lc++ in the darwin jemalloc lin…",
          "author_name": "Ronald Tse",
          "author_login": "ronaldtse",
          "committed_at": "2026-07-23T05:53:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0e6506183f682966fb6bc670e2d13ad13903862e",
          "body": null,
          "is_bot": false,
          "headline": "style: rubocop clean — inline group flags and single-use LIBTEBAKOFS",
          "author_name": "Ronald Tse",
          "author_login": "ronaldtse",
          "committed_at": "2026-07-23T05:53:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6b3a7ef141ea7b85252bc50d8407f17bff887ccb",
          "body": "…signment)",
          "is_bot": false,
          "headline": "style: rubocop clean (ClassLength 100/100, LineLength, no parallel as…",
          "author_name": "Ronald Tse",
          "author_login": "ronaldtse",
          "committed_at": "2026-07-23T05:53:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "87c8a2a2c8f24df061dc50b0a07734db07a58416",
          "body": "…gth 100/100)",
          "is_bot": false,
          "headline": "style: rubocop-clean jemalloc static link + group constants (ClassLen…",
          "author_name": "Ronald Tse",
          "author_login": "ronaldtse",
          "committed_at": "2026-07-23T05:53:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "666e316b23a1f35e681245e39d0cdad74c813f39",
          "body": null,
          "is_bot": false,
          "headline": "style: keep patch_libraries.rb within Metrics/ClassLength (101->99)",
          "author_name": "Ronald Tse",
          "author_login": "ronaldtse",
          "committed_at": "2026-07-23T05:53:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e5929535bf58463e4f0608b9cfdd06a0d77ac4e0",
          "body": "The prebuilt libtfs packages ship no allocator, so the plain -ljemalloc\nin darwin_libraries resolved to brew's libjemalloc.2.dylib and packaged\nbinaries failed the test_101_launcher no-shared-libs assertion. Link\nbrew's static archive by full path (Apple ld has no -l:<filename>).",
          "is_bot": false,
          "headline": "fix(packager): link jemalloc statically by full path on macOS",
          "author_name": "Ronald Tse",
          "author_login": "ronaldtse",
          "committed_at": "2026-07-23T05:53:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d80795a1048dfcc2b71e13c54117e46e5cc9bc9f",
          "body": "dwarfs-t tebako-v0.14.1-18: directory streams synthesize '.' and '..'\n(POSIX readdir semantics — the patches-dir Dir.read contract), and the\ndwarfs port links no jemalloc into the shipped libs (macOS dylib leak\nin packaged binaries).",
          "is_bot": false,
          "headline": "build: libtfs v0.12.8",
          "author_name": "Ronald Tse",
          "author_login": "ronaldtse",
          "committed_at": "2026-07-23T05:53:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3d9731e891c4afe9c29bef32683de57293f52082",
          "body": "…nk patch)\n\nThe restored deps trees carry ruby build state patched with the\npre---start-group patch_libraries.rb; patch stamps then skip\nre-patching and presses fail to link the libtfs dep set (circular\ncompression-registry refs) on Linux. CMakeLists.txt is hashed into the\nkey but patch_libraries.rb is not, so 3185d3a reused the stale tree.",
          "is_bot": false,
          "headline": "ci: bump CACHE_VER to 24 (invalidate deps built with the pre-group li…",
          "author_name": "Ronald Tse",
          "author_login": "ronaldtse",
          "committed_at": "2026-07-23T05:53:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "98109161cdcdc3433916a2f5043447d978783481",
          "body": "The clang-18-built libtfs-deps archives have circular member-level\nreferences (compression registrar/registry definitions vs users)\nwhose resolution order differs from the gcc-built ones; GNU ld's\nsingle-pass archive scanning leaves them unresolved and the miniruby\n(and extension) links fail with undefined compression_registrar::reg /\nregister_name references. miniruby link verified against the\nubuntu-20.04 gcc-10 container with the grouped list.",
          "is_bot": false,
          "headline": "fix(packager): link libtfs dep set in a --start-group on Linux",
          "author_name": "Ronald Tse",
          "author_login": "ronaldtse",
          "committed_at": "2026-07-23T05:53:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "26b6cf56f3bcb41540a61abccef10f3424deed6d",
          "body": "- gnu deps built in the ubuntu-20.04 ci container (glibc 2.31 baseline):\n  fixes ext/openssl configure failures (__isoc23_strtol via triplet\n  libcrypto) and ships the matching include/openssl tree\n- Linux tool binaries link the C++ runtime statically: musl mkdwarfs\n  starts in tebako's alpine CI im\n[…]\nonger\n  read the first unique file's bytes (--tebako-extract corruption),\n  plus the legacy fd read clamp as defense in depth\n- dwarfs-t builds on the stock ubuntu-20.04 toolchain (no libstdc++ >= 11)",
          "is_bot": false,
          "headline": "build: libtfs v0.12.7",
          "author_name": "Ronald Tse",
          "author_login": "ronaldtse",
          "committed_at": "2026-07-23T05:53:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "94fc413c8ba32d8db3a458f7406ee0bb66d40e07",
          "body": null,
          "is_bot": false,
          "headline": "build: libtfs v0.12.6 (deps packages with headers)",
          "author_name": "Ronald Tse",
          "author_login": "ronaldtse",
          "committed_at": "2026-07-23T05:53:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "585eb1d69d5b0e8d0da3103665325099b7579c9c",
          "body": "The libtfs-deps package now ships a curated include/ tree (brotli,\nzstd, lz4, lzma, zlib, bzip2, libzip, xxhash, fmt, flatbuffers, boost\nfilesystem+chrono subset). Deploy it on the prebuilt path:\n\n- cmake/tebako-libtfs.cmake: the whole-tree copy already restores\n  <vcpkg_installed>/<triplet>/include\n[…]\nive extensions (e.g. the brotli\n  gem including <brotli/encode.h>) resolve the dep headers when the\n  packaged build runs gem install — on the deps-package path and on\n  the vcpkg fallback path alike.",
          "is_bot": false,
          "headline": "feat: deploy libtfs-deps curated headers for gem native extensions",
          "author_name": "Ronald Tse",
          "author_login": "ronaldtse",
          "committed_at": "2026-07-23T05:53:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "687b3f1a6040230e0ec63aef6113c419c2301f66",
          "body": null,
          "is_bot": false,
          "headline": "build: libtfs v0.12.5 (self-contained deps packages)",
          "author_name": "Ronald Tse",
          "author_login": "ronaldtse",
          "committed_at": "2026-07-23T05:53:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ced7a20dc5bcb6d5f98856cb5c68a5cde47ae497",
          "body": "…lt path)\n\nDownloads libtfs-deps-<ver>-<platform> from the release when available\n(>= v0.12.5): download+verify+deploy of the transitive static-lib set,\nno vcpkg bootstrap/manifest/install in the loop. Older tags fall back to\nthe existing vcpkg manifest path. Source fallback (DWARFS_PRELOAD=OFF)\nunchanged.",
          "is_bot": false,
          "headline": "feat: consume self-contained libtfs-deps packages (no vcpkg on prebui…",
          "author_name": "Ronald Tse",
          "author_login": "ronaldtse",
          "committed_at": "2026-07-23T05:53:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "88cfbae8925eb42fc4ea1e9c0b02553322fcd30f",
          "body": null,
          "is_bot": false,
          "headline": "style: rubocop corrections in patch_libraries.rb",
          "author_name": "Ronald Tse",
          "author_login": "ronaldtse",
          "committed_at": "2026-07-23T05:53:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e7405db387ecadb7b23c3d4bf9d9e19e949f9423",
          "body": null,
          "is_bot": false,
          "headline": "build: libtfs v0.12.4 (dwarfs-t tebako-v0.14.1-12 extents UAF fix)",
          "author_name": "Ronald Tse",
          "author_login": "ronaldtse",
          "committed_at": "2026-07-23T05:53:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ad59227d27d0f64f07af5c8863f14a5fc56ed7e3",
          "body": null,
          "is_bot": false,
          "headline": "build: libtfs v0.12.2 default pin (dwarfs-t tebako-v0.14.1-11)",
          "author_name": "Ronald Tse",
          "author_login": "ronaldtse",
          "committed_at": "2026-07-23T05:53:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4c5e7477aba9354a59495689a2269370f3813b00",
          "body": null,
          "is_bot": false,
          "headline": "build: libtfs v0.12.2 (dwarfs-t tebako-v0.14.1-11 dedup fix)",
          "author_name": "Ronald Tse",
          "author_login": "ronaldtse",
          "committed_at": "2026-07-23T05:53:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1de52727f741ed0f2cd764f1a84194aa54bde4c9",
          "body": null,
          "is_bot": false,
          "headline": "feat: env override for DWARFS_PRELOAD (source fallback toggle)",
          "author_name": "Ronald Tse",
          "author_login": "ronaldtse",
          "committed_at": "2026-07-23T05:53:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "58f0dc16643df7d80f116c52794debc609b9f3b3",
          "body": "…flags/libevent/libdwarf/fmt)",
          "is_bot": false,
          "headline": "chore: drop folly-era OS dependencies (boost/double-conversion/glog/g…",
          "author_name": "Ronald Tse",
          "author_login": "ronaldtse",
          "committed_at": "2026-07-23T05:53:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8c6c91a8ebeda1ea518d7979d817befbefa8e23a",
          "body": "…search)\n\nApple ld (ld_prime, Xcode 15.0) does not implement the GNU-style\n-l:<filename> library search: -l:libdwarfs_reader.a fails with\n'library not found' even with the triplet dir on -L (reproduced with a\nminimal main.c; -lfmt and full-path forms work). Emit full paths into\nDARWIN_DEP_LIBS_2 entries, resolved from deps_lib_dir/../vcpkg_installed/\n<triplet>/lib, matching how DARWIN_DEP_LIBS_1 and the brew libs are\nalready referenced. GNU ld platforms keep the -l: form.",
          "is_bot": false,
          "headline": "fix: reference vcpkg libs by full path on macOS (Apple ld has no -l: …",
          "author_name": "Ronald Tse",
          "author_login": "ronaldtse",
          "committed_at": "2026-07-23T05:53:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6ddadfce70e21e0ec3cc025b791259fbdeb5a2b7",
          "body": "tebako-fs.h and the codegen templates include <incbin/incbin.h>, which\nthe libdwarfs-wr package used to deploy into DEPS_INCLUDE_DIR. libtfs\ndoes not ship it, so the press-mode compile of tebako-fs.cpp and\ntebako-main.cpp failed with 'incbin/incbin.h file not found'. Download\nthe pinned header (common.env INCBIN_TAG) at configure time with\nSHA256 verification, skipping when the deployed file already matches.",
          "is_bot": false,
          "headline": "fix: provision incbin header dropped with libdwarfs-wr",
          "author_name": "Ronald Tse",
          "author_login": "ronaldtse",
          "committed_at": "2026-07-23T05:53:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2709831a1e36a87099aef527d5ad5a553c5e8703",
          "body": "…roken)\n\ndef_ext_prj_g in the tebako-tools submodule (e94e1ea) tests\n`if (DEFINED ENV{${TAG})` -- missing the closing brace -- so the\nenvironment variable never takes effect and the hardcoded default is\nalways used (reproduced in isolation). Bump the default to v0.12.1 so\nthe common.env pin actually reaches the libtfs download.",
          "is_bot": false,
          "headline": "fix: default DWARFS_WR_TAG to v0.12.1 (tebako-tools env override is b…",
          "author_name": "Ronald Tse",
          "author_login": "ronaldtse",
          "committed_at": "2026-07-23T05:53:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "714b19fc2aaeba74926bb3147197c5cb6d3f6ed0",
          "body": null,
          "is_bot": false,
          "headline": "build: libtfs v0.12.1",
          "author_name": "Ronald Tse",
          "author_login": "ronaldtse",
          "committed_at": "2026-07-23T05:53:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9d7eec45802cd723d7e7798c3c880bb8f6552842",
          "body": "Unix Makefiles pass add_custom_target COMMAND lines to /bin/sh with\nbackslash escaping only; the literal parens in '...(macos-arm64)...'\nbroke 'tebako setup' (syntax error near unexpected token) outside the\nNinja generator Task 2 verified with.",
          "is_bot": false,
          "headline": "fix: shell-safe echo in the prebuilt libtfs placeholder target",
          "author_name": "Ronald Tse",
          "author_login": "ronaldtse",
          "committed_at": "2026-07-23T05:53:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1cdb220e92a74a90841d1126ddbb5d0352feac02",
          "body": "Replace the folly/fbthrift-era link lists with the libtfs set:\n\n- patch_libraries.rb: DARWIN_DEP_LIBS_1 now names libtfs.a +\n  libtebako_dirent_helper_c.a (full paths from deps/lib);\n  DARWIN_DEP_LIBS_2 / COMMON_LINUX_LIBRARIES name the vcpkg-resolved\n  transitive set (dwarfs_reader/common/metadata_\n[…]\n\n- the prebuilt packages were built WITH_SQUASHFS=ON, forcing LGPL\n  libsquashfs onto every consumer via c_api -> backend_factory ->\n  squashfs_backend; only the source build honors WITH_SQUASHFS=OFF.",
          "is_bot": false,
          "headline": "feat: link libtfs instead of folly/thrift dwarfs stack",
          "author_name": "Ronald Tse",
          "author_login": "ronaldtse",
          "committed_at": "2026-07-23T05:53:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8cfb4a9f761e4dca64dc135b43750623ea423e83",
          "body": "…ack)",
          "is_bot": false,
          "headline": "feat: consume libtfs v0.12.0 (prebuilt by default, vcpkg source fallb…",
          "author_name": "Ronald Tse",
          "author_login": "ronaldtse",
          "committed_at": "2026-07-23T05:53:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "86c026693f0c99f8d3bc63c59dd2ad3989c72946",
          "body": null,
          "is_bot": false,
          "headline": "chore: align tebako-tools (drop folly/fbthrift patch scripts)",
          "author_name": "Ronald Tse",
          "author_login": "ronaldtse",
          "committed_at": "2026-07-23T05:53:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8738eff457dd8e2e6cede86ff9d729e396a0fc3f",
          "body": "…acOS support (#325)",
          "is_bot": false,
          "headline": "chore: update dependencies, disable linting, Windows support, Intel M…",
          "author_name": "Maxim Samsonov",
          "author_login": "maxirmx",
          "committed_at": "2025-10-20T15:09:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2a0da078e3093f83767bd46d4a10e1378e216dd0",
          "body": null,
          "is_bot": false,
          "headline": "chore: drop macOS-13 tests, update tools and dependencies",
          "author_name": "maxirmx",
          "author_login": "maxirmx",
          "committed_at": "2025-09-21T10:34:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "28665264a62722d8c177f8d5a941f27aefa6d506",
          "body": null,
          "is_bot": false,
          "headline": "fix: do not apply -std=gnu17 flag to gcc prior to 15.x",
          "author_name": "Maxim Samsonov",
          "author_login": "maxirmx",
          "committed_at": "2025-05-01T22:35:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a08351467893cb812b9eff78543a6ebf420ba8bf",
          "body": null,
          "is_bot": false,
          "headline": "fix: resolve Ruby 3.1.x gcc-15 compatibility issue",
          "author_name": "Maxim Samsonov",
          "author_login": "maxirmx",
          "committed_at": "2025-05-01T18:30:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dd1a29750e5aaa93589c1c64873567ecec2e94d5",
          "body": null,
          "is_bot": false,
          "headline": "chore: run rspec for linux in tebako development containers",
          "author_name": "Maxim Samsonov",
          "author_login": "maxirmx",
          "committed_at": "2025-04-30T21:24:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d706cf26648831516ceb28c49c131f57040a3dae",
          "body": null,
          "is_bot": false,
          "headline": "fix: fix the signature of console_win32_vk (gcc 15 compatibility issue)",
          "author_name": "Maxim [maxirmx] Samsonov",
          "author_login": "maxirmx",
          "committed_at": "2025-04-30T21:24:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "082db8755fd6c00cab2e7c8b8dbecc7f9d2a4bc8",
          "body": "…tion",
          "is_bot": false,
          "headline": "fix: add  -Wno-error=incompatible-pointer-types flag for Ruby compila…",
          "author_name": "Maxim [maxirmx] Samsonov",
          "author_login": "maxirmx",
          "committed_at": "2025-04-30T21:24:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "db6548d86d0cf0319f904bc4ef37d31cf419290d",
          "body": null,
          "is_bot": false,
          "headline": "fix: do not install Ruby if running tests in Tebako CI container",
          "author_name": "Maxim [maxirmx] Samsonov",
          "author_login": "maxirmx",
          "committed_at": "2025-04-30T21:24:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9d3d045ebbe46720e96a8c3ffca9182c562e6374",
          "body": null,
          "is_bot": false,
          "headline": "fix: run 'extra_win_clean' for clean command on MSys",
          "author_name": "Maxim Samsonov",
          "author_login": "maxirmx",
          "committed_at": "2025-04-29T19:12:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8be7c0ea62496df8530d76829d61f7c6d9354eaf",
          "body": null,
          "is_bot": false,
          "headline": "fix: use '--platform ruby' option when call gem install on Msys",
          "author_name": "Maxim Samsonov",
          "author_login": "maxirmx",
          "committed_at": "2025-04-13T06:45:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "53574ceadb4c7eba1a51349fafa43cf72ec11e5f",
          "body": "Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "chore: update README status badges, fix typos",
          "author_name": "Maxim [maxirmx] Samsonov",
          "author_login": "maxirmx",
          "committed_at": "2025-04-09T21:48:02Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "c114c6601bb1e209a990036665c2d2d3b369ce58",
          "body": null,
          "is_bot": false,
          "headline": "chore: remove linking against libunwind for MSys",
          "author_name": "Maxim [maxirmx] Samsonov",
          "author_login": "maxirmx",
          "committed_at": "2025-04-09T21:48:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "68f4505821404bcc019c264bc5d0e3bc793a159a",
          "body": "…flow.com/questions/79531986/multipe-errors-from-tebako-this-is-a-reposting-of-previous-proble-resolved-by-ru",
          "is_bot": false,
          "headline": "chore: update Windows installation instructions per https://stackover…",
          "author_name": "Maxim [maxirmx] Samsonov",
          "author_login": "maxirmx",
          "committed_at": "2025-04-09T21:48:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "acde875ac480d24099f2f18bf85fb965cebfd5b3",
          "body": null,
          "is_bot": false,
          "headline": "chore: bump libdwarfs version to v0.10.2",
          "author_name": "Maxim [maxirmx] Samsonov",
          "author_login": "maxirmx",
          "committed_at": "2025-04-09T21:48:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e3449248697c57297bf800867a69fa103759bbc8",
          "body": null,
          "is_bot": false,
          "headline": "chore: bump tools version to v0.6.6",
          "author_name": "Maxim [maxirmx] Samsonov",
          "author_login": "maxirmx",
          "committed_at": "2025-04-09T21:48:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2bb8aefea9b467d26e53bc37a9e302afc2633cff",
          "body": null,
          "is_bot": false,
          "headline": "fix: resolve issue with 'NUL' files in Ruby source tree on Windows",
          "author_name": "Maxim [maxirmx] Samsonov",
          "author_login": "maxirmx",
          "committed_at": "2025-04-09T21:48:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "752f4cfa01b2254b035fb0c6c68cb3ae8c4413a4",
          "body": "…ttps)",
          "is_bot": false,
          "headline": "chore: bump libdwarfs to v0.10.2 (change libarchive download url to h…",
          "author_name": "Maxim [maxirmx] Samsonov",
          "author_login": "maxirmx",
          "committed_at": "2025-04-09T21:48:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7e878df1bf9c9dfa18f79399f57f49d4e2de91cd",
          "body": null,
          "is_bot": false,
          "headline": "chore: update file headers",
          "author_name": "Maxim [maxirmx] Samsonov",
          "author_login": "maxirmx",
          "committed_at": "2025-04-09T21:48:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "19d31037b4e653a8d692451b96a64af2f7510409",
          "body": null,
          "is_bot": false,
          "headline": "feat: rewrite section re packaging scenarios",
          "author_name": "Maxim [maxirmx] Samsonov",
          "author_login": "maxirmx",
          "committed_at": "2025-03-25T08:11:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3be980029a25b95bf06e38db8de810425556dbe8",
          "body": null,
          "is_bot": false,
          "headline": "chore: gem version bump to 0.13.0",
          "author_name": "Maxim [maxirmx] Samsonov",
          "author_login": "maxirmx",
          "committed_at": "2025-03-20T21:54:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4c449036a2f3988af409fd06c772e4db37cf05b1",
          "body": "…nce order",
          "is_bot": false,
          "headline": "chore: remove from README duplicate information about options prefere…",
          "author_name": "Maxim [maxirmx] Samsonov",
          "author_login": "maxirmx",
          "committed_at": "2025-03-20T21:54:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a39d1fb0029d9a6c19a3c4b4af775f12ac7453f1",
          "body": null,
          "is_bot": false,
          "headline": "chore: review grammar and clarity of modified README sections",
          "author_name": "Maxim [maxirmx] Samsonov",
          "author_login": "maxirmx",
          "committed_at": "2025-03-20T21:54:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "41f92077c95c54dd2db5272ee7f52b54611b87c4",
          "body": "… Tebako' README section",
          "is_bot": false,
          "headline": "feat: add 'Packaging Ruby Gems with Post-Installation Requirements in…",
          "author_name": "Maxim [maxirmx] Samsonov",
          "author_login": "maxirmx",
          "committed_at": "2025-03-20T21:54:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ab5cd45e8762d88d6b43cf0e0743bbcdd7fd0976",
          "body": null,
          "is_bot": false,
          "headline": "chore: reorder README sections for better clarity",
          "author_name": "Maxim [maxirmx] Samsonov",
          "author_login": "maxirmx",
          "committed_at": "2025-03-20T21:54:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f7b8dd958e304a7887f4f8eb6f0d2323ff16fe4d",
          "body": "…ocument",
          "is_bot": false,
          "headline": "chore: split README and put installation instructions to a separate d…",
          "author_name": "Maxim [maxirmx] Samsonov",
          "author_login": "maxirmx",
          "committed_at": "2025-03-20T21:54:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6bfc3597e403faacda4f1d792276b363141aab6d",
          "body": null,
          "is_bot": false,
          "headline": "feat: add Ruby 3.4.2 support",
          "author_name": "Maxim [maxirmx] Samsonov",
          "author_login": "maxirmx",
          "committed_at": "2025-03-17T10:53:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "173c90770eea343488a584a32de88d5ee7a09ea3",
          "body": null,
          "is_bot": false,
          "headline": "chore: bump libdwarsf version to 0.10.1; tools to 0.6.4",
          "author_name": "Maxim [maxirmx] Samsonov",
          "author_login": "maxirmx",
          "committed_at": "2025-03-17T10:53:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c82d094e9ed4f02fd484b47a0e9b08698237c5e8",
          "body": null,
          "is_bot": false,
          "headline": "chore: update header comments; remove obsolete reference to cirrus.yml",
          "author_name": "Maxim [maxirmx] Samsonov",
          "author_login": "maxirmx",
          "committed_at": "2025-03-16T17:10:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a9219791a311d0d5eeedfd2bee38a01363b595c7",
          "body": null,
          "is_bot": false,
          "headline": "chore: update header comments",
          "author_name": "Ronald Tse",
          "author_login": "ronaldtse",
          "committed_at": "2025-03-16T12:08:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "297a40f5b335ff7de0b92bdbce40f22c22287b81",
          "body": "…for Linux tests",
          "is_bot": false,
          "headline": "feat: refactor release workflow to use Tebako development containers …",
          "author_name": "Maxim [maxirmx] Samsonov",
          "author_login": "maxirmx",
          "committed_at": "2025-03-16T12:08:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "df107773595c64b96eb561cf1a33109df2432eb3",
          "body": null,
          "is_bot": false,
          "headline": "feat: use Tebako development container for Alpine tests",
          "author_name": "Maxim [maxirmx] Samsonov",
          "author_login": "maxirmx",
          "committed_at": "2025-03-16T12:08:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "23948a8873f011b0985140b013546bd8bdd44f9c",
          "body": null,
          "is_bot": false,
          "headline": "feat: create setup-test-matrix action",
          "author_name": "Maxim [maxirmx] Samsonov",
          "author_login": "maxirmx",
          "committed_at": "2025-03-16T12:08:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "67bdbe8787002e984a11239b9b5ea2454721894b",
          "body": null,
          "is_bot": false,
          "headline": "feat: use tebako development containers for Ubuntu tests",
          "author_name": "Maxim [maxirmx] Samsonov",
          "author_login": "maxirmx",
          "committed_at": "2025-03-16T12:08:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "817b79f6432e8d62e2a7c2f9eb10365bf887691a",
          "body": null,
          "is_bot": false,
          "headline": "chore: bump libdwarfs to v0.10.0",
          "author_name": "Maxim [maxirmx] Samsonov",
          "author_login": "maxirmx",
          "committed_at": "2025-03-16T12:08:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e25a6ac906238132ad5eca02f282f51e8ff2744e",
          "body": null,
          "is_bot": false,
          "headline": "chore: refactor bundle_config method",
          "author_name": "maxirmx",
          "author_login": "maxirmx",
          "committed_at": "2025-03-16T12:08:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "49c9ef2ef34e686dfb541abf0ed680bf90dc0596",
          "body": null,
          "is_bot": false,
          "headline": "chore: optimize workflows for the cases of minor changes",
          "author_name": "Maxim [maxirmx] Samsonov",
          "author_login": "maxirmx",
          "committed_at": "2025-03-16T11:22:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a7f5fdaa4662ceaf51ce06e57b23db048cfb803d",
          "body": null,
          "is_bot": false,
          "headline": "feat: add contribution guide and code of conduct, fixes #282",
          "author_name": "Ronald Tse",
          "author_login": "ronaldtse",
          "committed_at": "2025-03-04T14:27:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "61cb3947d24bf97803cf6812fada8a80dcd78c24",
          "body": null,
          "is_bot": false,
          "headline": "chore: update README to show badges in a more organized way",
          "author_name": "Ronald Tse",
          "author_login": "ronaldtse",
          "committed_at": "2025-03-04T14:27:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d9ccc99e053eda0344b93feb72540e9266f71ecb",
          "body": null,
          "is_bot": false,
          "headline": "fix: add license file (LICENSE.md), fixes #275",
          "author_name": "Ronald Tse",
          "author_login": "ronaldtse",
          "committed_at": "2025-03-04T09:59:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a10f0e3c9510ff385b22d9c325398d586740bda6",
          "body": null,
          "is_bot": false,
          "headline": "fix: correctly name the artefact #274",
          "author_name": "Maxim Samsonov",
          "author_login": "maxirmx",
          "committed_at": "2025-03-03T12:03:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9b0aaf6e51a5a07f30e11e5f64fdf9f62b101d3f",
          "body": null,
          "is_bot": false,
          "headline": "chore: move a call of finalize script from CMake script to Ruby",
          "author_name": "Maxim Samsonov",
          "author_login": "maxirmx",
          "committed_at": "2025-03-03T12:03:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d66e8673a5f188072c6a33b2fdf1d7b397635cc3",
          "body": null,
          "is_bot": false,
          "headline": "fix: produce tebako runtime with default output name #273",
          "author_name": "Maxim Samsonov",
          "author_login": "maxirmx",
          "committed_at": "2025-03-03T12:03:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "067b48c3f1456f913c86e870b85e6b996b0c488c",
          "body": null,
          "is_bot": false,
          "headline": "chore: update tests for warning messages",
          "author_name": "Maxim Samsonov",
          "author_login": "maxirmx",
          "committed_at": "2025-03-03T12:03:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c90ffea838740d751855050418c578a3874b748b",
          "body": null,
          "is_bot": false,
          "headline": "fix: '... within root ...' warnings #257, #272",
          "author_name": "Maxim [maxirmx] Samsonov",
          "author_login": "maxirmx",
          "committed_at": "2025-03-03T12:03:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "01a31d80ad675836fa96bcd12838d5fb66f0b944",
          "body": null,
          "is_bot": false,
          "headline": "chore: update README information about Tebako prefix setting",
          "author_name": "Maxim Samsonov",
          "author_login": "maxirmx",
          "committed_at": "2025-03-03T12:03:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dd166004dbc5817224ff4c60ee85b4e073dfa65e",
          "body": "…ed inside tebako root (#257)",
          "is_bot": false,
          "headline": "feat: issue a warning message if tebako packaging environment is plac…",
          "author_name": "Maxim Samsonov",
          "author_login": "maxirmx",
          "committed_at": "2025-03-03T12:03:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "35e6262afa7b9d7464a41699a0b387aafc704866",
          "body": null,
          "is_bot": false,
          "headline": "chore: version bump to v0.12.16",
          "author_name": "Maxim Samsonov",
          "author_login": "maxirmx",
          "committed_at": "2025-03-03T12:03:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "20b924ed94629d9512c10295459632b12192caac",
          "body": null,
          "is_bot": false,
          "headline": "fix: use msys shell to install tebako gem on Windows",
          "author_name": "Maxim Samsonov",
          "author_login": "maxirmx",
          "committed_at": "2025-02-28T09:19:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d8b0052049612af7c65bf778c31c55c46ffef241",
          "body": null,
          "is_bot": false,
          "headline": "chore: update readme for readability",
          "author_name": "Ronald Tse",
          "author_login": "ronaldtse",
          "committed_at": "2025-02-26T09:26:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6fe2eba06ca5dc8397dd0884074a846ab6772645",
          "body": null,
          "is_bot": false,
          "headline": "chore: update readme for readability",
          "author_name": "Ronald Tse",
          "author_login": "ronaldtse",
          "committed_at": "2025-02-26T09:26:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6c29b657a42821f2ff7ee9f35a026ea77fbb9187",
          "body": null,
          "is_bot": false,
          "headline": "chore: update readme for `mode` commands",
          "author_name": "Ronald Tse",
          "author_login": "ronaldtse",
          "committed_at": "2025-02-26T09:26:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "07bec6e8a0b5f0aca9f246d69acf74008a142cb5",
          "body": null,
          "is_bot": false,
          "headline": "chore: version bump to 0.12.15",
          "author_name": "Maxim Samsonov",
          "author_login": "maxirmx",
          "committed_at": "2025-02-24T07:27:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b878499acdc3ef085622867ccacfe7d01cd989e5",
          "body": null,
          "is_bot": false,
          "headline": "fix: prioritize bundled thrift includes",
          "author_name": "maxirmx",
          "author_login": "maxirmx",
          "committed_at": "2025-02-24T04:54:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dd9079cd11142659d7e4b7e43fa5e3be96fa1761",
          "body": null,
          "is_bot": false,
          "headline": "chore: bump libdwarfs version to 0.9.6",
          "author_name": "Maxim Samsonov",
          "author_login": "maxirmx",
          "committed_at": "2025-02-22T09:56:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d11916aa92f581171c60837980cc175bba95a88d",
          "body": "3S",
          "is_bot": false,
          "headline": "chore: update scenario_manager spec",
          "author_name": "Maxim Samsonov",
          "author_login": "maxirmx",
          "committed_at": "2025-02-22T09:56:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d68b52cd5be7fe66fe8c3be60a5d58fc26151ebe",
          "body": "… 1.1.1",
          "is_bot": false,
          "headline": "fix: update folly patching for MSys, set correct OPENSSL_ROOT_DIR for…",
          "author_name": "Maxim Samsonov",
          "author_login": "maxirmx",
          "committed_at": "2025-02-22T09:56:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e40570a1b7fe93fb89432a7ad4730b0e65884585",
          "body": null,
          "is_bot": false,
          "headline": "chore: temporary disable Ruby 2.7.8, 3.0.7 tests",
          "author_name": "Maxim [maxirmx] Samsonov",
          "author_login": "maxirmx",
          "committed_at": "2025-02-16T17:48:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "70d2af2472f64b24720304c762a3ab04675e8d64",
          "body": null,
          "is_bot": false,
          "headline": "chore: version bump to 0.12.13",
          "author_name": "Maxim [maxirmx] Samsonov",
          "author_login": "maxirmx",
          "committed_at": "2025-02-15T08:05:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "54a749666ca7ccd8dcb2cb86eeb40a83871f2efe",
          "body": null,
          "is_bot": false,
          "headline": "feat: put MacOS test matrix to json file",
          "author_name": "Maxim [maxirmx] Samsonov",
          "author_login": "maxirmx",
          "committed_at": "2025-02-15T08:05:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 28,
      "commits_last_year": 27,
      "latest_release_at": "2025-11-04T11:36:55Z",
      "latest_release_tag": "v0.14.0",
      "releases_from_tags": false,
      "days_since_last_push": 0,
      "active_weeks_last_year": 3,
      "days_since_latest_release": 260,
      "mean_days_between_releases": 29.2
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": true,
      "health_percentage": 50,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "tebako",
          "exists": true,
          "license": "BSD-2-Clause",
          "keywords": [],
          "ecosystem": "rubygems",
          "matches_repo": true,
          "registry_url": "https://rubygems.org/gems/tebako",
          "is_deprecated": false,
          "latest_version": "0.15.1",
          "repository_url": "https://github.com/tamatebako/tebako",
          "versions_count": 72,
          "total_downloads": 48976,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": "2023-06-16T20:38:32.653000Z",
          "latest_published_at": "2026-07-23T08:27:37.627000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 0
        }
      ]
    },
    "popularity": {
      "forks": 21,
      "stars": 438,
      "watchers": 9,
      "fork_history": {
        "days": [
          {
            "date": "2023-10-12",
            "count": 1
          },
          {
            "date": "2024-02-04",
            "count": 1
          },
          {
            "date": "2024-03-19",
            "count": 1
          },
          {
            "date": "2024-05-10",
            "count": 1
          },
          {
            "date": "2024-06-18",
            "count": 1
          },
          {
            "date": "2024-11-05",
            "count": 1
          },
          {
            "date": "2024-12-05",
            "count": 1
          },
          {
            "date": "2025-01-02",
            "count": 1
          },
          {
            "date": "2025-01-24",
            "count": 1
          },
          {
            "date": "2025-02-22",
            "count": 1
          },
          {
            "date": "2025-03-07",
            "count": 1
          },
          {
            "date": "2025-03-08",
            "count": 1
          },
          {
            "date": "2025-04-08",
            "count": 1
          },
          {
            "date": "2025-06-01",
            "count": 1
          },
          {
            "date": "2026-01-06",
            "count": 1
          },
          {
            "date": "2026-01-18",
            "count": 1
          },
          {
            "date": "2026-02-23",
            "count": 1
          },
          {
            "date": "2026-03-07",
            "count": 1
          },
          {
            "date": "2026-07-06",
            "count": 1
          },
          {
            "date": "2026-07-14",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 20,
        "total_forks": 21
      },
      "star_history": null,
      "open_issues_and_prs": 54
    },
    "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": [],
      "toolchain_manifests": [],
      "largest_source_bytes": 35216,
      "source_files_sampled": 111,
      "oversized_source_files": 0,
      "agent_instruction_files": [],
      "agent_instruction_max_bytes": null
    },
    "dependencies": {
      "manifests": [
        "Gemfile"
      ],
      "advisories": {
        "error": null,
        "scope": "repository_graph",
        "source": "osv",
        "findings": [],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 13,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 25,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "rubygems"
      ],
      "dependencies": [],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "bundler",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "byebug",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "byebug",
            "direct": false,
            "version": "11.1.3",
            "ecosystem": "rubygems"
          },
          {
            "name": "date",
            "direct": false,
            "version": "3.4.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "debug",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "1.10.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "excavate",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "expressir",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "ffi",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "ffi",
            "direct": false,
            "version": "1.17.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "ffi-libarchive-binary",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "hoe",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "io-console",
            "direct": false,
            "version": "0.8.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "irb",
            "direct": false,
            "version": "1.15.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "libmspack",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "minitest",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "net-http",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "nokogiri",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "pp",
            "direct": false,
            "version": "0.6.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "prettyprint",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "psych",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "psych",
            "direct": false,
            "version": "5.2.3",
            "ecosystem": "rubygems"
          },
          {
            "name": "rake",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "rdbg",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "rdoc",
            "direct": false,
            "version": "6.11.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "reline",
            "direct": false,
            "version": "0.6.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "rspec",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "rubocop",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "rubocop-rubycw",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "sassc",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "seven-zip",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "simplecov",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "simplecov-cobertura",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "stringio",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "text-table",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "text-table",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "rubygems"
          },
          {
            "name": "thor",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "yaml",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 38,
        "direct_count": 0,
        "indirect_count": 38
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 3,
        "merged_prs": 133,
        "open_issues": 51,
        "closed_ratio": 0.718,
        "closed_issues": 130,
        "closed_unmerged_prs": 13
      },
      "bus_factor": 1,
      "bot_contributors": 0,
      "top_contributors": [
        {
          "type": "User",
          "login": "maxirmx",
          "commits": 333,
          "avatar_url": "https://avatars.githubusercontent.com/u/2081498?v=4"
        },
        {
          "type": "User",
          "login": "ronaldtse",
          "commits": 58,
          "avatar_url": "https://avatars.githubusercontent.com/u/11865?v=4"
        },
        {
          "type": "User",
          "login": "CAMOBAP",
          "commits": 10,
          "avatar_url": "https://avatars.githubusercontent.com/u/2169738?v=4"
        },
        {
          "type": "User",
          "login": "bradgessler",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/4628?v=4"
        },
        {
          "type": "User",
          "login": "chip",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/31725?v=4"
        },
        {
          "type": "User",
          "login": "d4rky-pl",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/284395?v=4"
        }
      ],
      "contributors_sampled": 6,
      "top_contributor_share": 0.824
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "alpine.yml",
        "gem-test-and-release.yml",
        "lint-and-rspec.yml",
        "macos.yml",
        "ubuntu.yml",
        "windows-msys.yml"
      ],
      "has_docs_dir": false,
      "linter_configs": [
        ".rubocop.yml"
      ],
      "has_editorconfig": false,
      "has_linter_config": true,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "Gemfile.lock"
      ],
      "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": 4,
            "reason": "2 out of 5 merged PRs checked by a CI test -- score normalized to 4",
            "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/10 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 7 contributing companies or organizations",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "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": 9,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": 10,
            "reason": "packaging workflow detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 0,
            "reason": "dependency not pinned by hash detected -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 8,
            "reason": "SAST tool is not run on all commits -- score normalized to 8",
            "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": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 10,
            "reason": "0 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "51787fd44a14a259e3d5783554da1f38246ce0b8",
        "ran_at": "2026-07-23T08:38:52Z",
        "aggregate_score": 4.8,
        "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": "2026-07-23T08:27:30Z",
      "oldest_open_prs": [
        {
          "number": 284,
          "created_at": "2025-03-04T15:26:44Z",
          "last_comment_at": "2025-03-04T23:39:16Z",
          "last_comment_author": "ronaldtse"
        },
        {
          "number": 332,
          "created_at": "2026-01-18T17:45:21Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 336,
          "created_at": "2026-07-06T21:12:02Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ],
      "last_merged_pr_at": "2026-07-23T05:57:03Z",
      "ci_last_conclusion": null,
      "oldest_open_issues": [
        {
          "number": 3,
          "created_at": "2021-07-19T05:22:38Z",
          "last_comment_at": "2021-10-21T00:27:39Z",
          "last_comment_author": "ronaldtse"
        },
        {
          "number": 4,
          "created_at": "2021-07-19T05:23:23Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 11,
          "created_at": "2021-08-25T07:13:29Z",
          "last_comment_at": "2021-12-13T12:29:14Z",
          "last_comment_author": "maxirmx"
        },
        {
          "number": 48,
          "created_at": "2021-12-13T06:01:12Z",
          "last_comment_at": "2021-12-17T17:16:53Z",
          "last_comment_author": "maxirmx"
        },
        {
          "number": 52,
          "created_at": "2021-12-15T19:45:38Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 59,
          "created_at": "2021-12-18T08:06:13Z",
          "last_comment_at": "2023-07-26T15:07:44Z",
          "last_comment_author": "maxirmx"
        },
        {
          "number": 60,
          "created_at": "2021-12-21T12:53:15Z",
          "last_comment_at": "2021-12-22T02:29:02Z",
          "last_comment_author": "ronaldtse"
        },
        {
          "number": 72,
          "created_at": "2022-01-21T13:36:20Z",
          "last_comment_at": "2022-02-15T08:39:41Z",
          "last_comment_author": "maxirmx"
        },
        {
          "number": 74,
          "created_at": "2022-02-15T14:05:44Z",
          "last_comment_at": "2022-09-09T13:21:57Z",
          "last_comment_author": "ronaldtse"
        },
        {
          "number": 119,
          "created_at": "2023-11-15T13:51:53Z",
          "last_comment_at": "2025-03-18T17:05:12Z",
          "last_comment_author": "maxirmx"
        },
        {
          "number": 142,
          "created_at": "2024-04-01T13:09:13Z",
          "last_comment_at": "2024-07-29T03:58:24Z",
          "last_comment_author": "ronaldtse"
        },
        {
          "number": 154,
          "created_at": "2024-06-27T18:58:02Z",
          "last_comment_at": "2025-02-27T11:20:44Z",
          "last_comment_author": "maxirmx"
        },
        {
          "number": 156,
          "created_at": "2024-06-30T13:00:46Z",
          "last_comment_at": "2024-08-04T18:17:10Z",
          "last_comment_author": "maxirmx"
        },
        {
          "number": 170,
          "created_at": "2024-07-21T01:47:57Z",
          "last_comment_at": "2024-07-29T03:33:17Z",
          "last_comment_author": "ronaldtse"
        },
        {
          "number": 176,
          "created_at": "2024-07-29T03:44:36Z",
          "last_comment_at": "2024-07-29T03:47:07Z",
          "last_comment_author": "ronaldtse"
        },
        {
          "number": 186,
          "created_at": "2024-08-14T08:05:12Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 197,
          "created_at": "2024-09-02T21:01:13Z",
          "last_comment_at": "2026-07-06T21:36:27Z",
          "last_comment_author": "SeanLF"
        },
        {
          "number": 220,
          "created_at": "2024-12-18T20:04:33Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 231,
          "created_at": "2025-01-09T13:13:44Z",
          "last_comment_at": "2025-01-15T20:34:28Z",
          "last_comment_author": "maxirmx"
        },
        {
          "number": 233,
          "created_at": "2025-01-12T15:17:25Z",
          "last_comment_at": "2025-03-06T07:22:02Z",
          "last_comment_author": "ByronHRio"
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/tamatebako/tebako",
    "host": "github.com",
    "name": "tebako",
    "owner": "tamatebako"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 63,
      "inputs": {
        "security": 58,
        "vitality": 68,
        "community": 61,
        "governance": 60,
        "engineering": 69
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "moderate",
        "name": "Vitality",
        "value": 68,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "moderate",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 61,
            "inputs": {
              "commits_last_year": 27,
              "human_commit_share": 1,
              "days_since_last_push": 0,
              "active_weeks_last_year": 3
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 0 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "3/52 weeks with commits",
                "points": 2.1,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 3
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "27 commits in the last year",
                "points": 13,
                "status": "partial",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 27
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "good",
            "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": 78,
            "inputs": {
              "releases_count": 28,
              "latest_release_tag": "v0.14.0",
              "releases_from_tags": false,
              "days_since_latest_release": 260,
              "mean_days_between_releases": 29.2
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "28 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 28
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 260 days ago",
                "points": 16.2,
                "status": "partial",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 260
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~29.2 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 29.2
                    }
                  }
                ],
                "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": "maintained",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": null,
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": 0,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 0 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "moderate",
        "name": "Community & Adoption",
        "value": 61,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "moderate",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 59,
            "inputs": {
              "forks": 21,
              "stars": 438,
              "watchers": 9,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "438 stars",
                "points": 42.8,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 438
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "21 forks",
                "points": 10.8,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 21
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "9 watchers",
                "points": 5,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 9
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "moderate",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 64,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": true,
              "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": "license file present, not a recognized license",
                "points": 16.9,
                "status": "partial",
                "details": [
                  {
                    "code": "license_custom",
                    "params": {}
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 18,
                "status": "met",
                "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": 61,
            "inputs": {
              "packages": [
                "tebako"
              ],
              "dependents": null,
              "ecosystems": "rubygems",
              "total_downloads": 48976,
              "monthly_downloads": null
            },
            "components": [
              {
                "key": "total_downloads",
                "name": "Total downloads",
                "detail": "48,976 downloads all-time across rubygems",
                "points": 48.7,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_total",
                    "params": {
                      "count": 48976,
                      "ecosystems": "rubygems"
                    }
                  }
                ],
                "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": "moderate",
        "name": "Sustainability & Governance",
        "value": 60,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "at_risk",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 31,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 6,
              "top_contributor_share": 0.824
            },
            "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 82% of commits",
                "points": 4,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 82
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "6 contributors",
                "points": 8.1,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 6
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 7 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "moderate",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 68,
            "inputs": {
              "merged_prs": 133,
              "open_issues": 51,
              "closed_issues": 130,
              "issue_closed_ratio": 0.718,
              "closed_unmerged_prs": 13
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "72% of issues closed",
                "points": 33.6,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 72
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "133/146 decided PRs merged",
                "points": 34.8,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 133,
                      "decided": 146
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/10 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "moderate",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 54,
            "inputs": {
              "followers": 3,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "tamatebako",
              "public_repos": 19,
              "account_age_days": 1830
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "organization-owned",
                "points": 30,
                "status": "met",
                "details": [
                  {
                    "code": "owner_organization",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "3 followers of tamatebako",
                "points": 4.3,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 3,
                      "login": "tamatebako"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "19 public repos, account ~5 yr old",
                "points": 19.5,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 19
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 5
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "tebako"
              ],
              "ecosystems": "rubygems",
              "any_deprecated": false,
              "min_days_since_publish": 0
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "1 package(s) on rubygems",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 1,
                      "ecosystems": "rubygems"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 0 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "72 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 72
                    }
                  }
                ],
                "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": 69,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "good",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 72,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": true,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "6 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 6
                    }
                  }
                ],
                "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": ".rubocop.yml",
                "points": 16,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".rubocop.yml"
                    }
                  }
                ],
                "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": "2 out of 5 merged PRs checked by a CI test -- score normalized to 4",
                "points": 8,
                "status": "partial",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "moderate",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 65,
            "inputs": {
              "topics": [],
              "has_wiki": true,
              "homepage": "https://www.tebako.org",
              "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://www.tebako.org",
                "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": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "moderate",
        "name": "Security",
        "value": 58,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 48,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 17,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 1,
              "scorecard_aggregate": 4.8
            },
            "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": "2 out of 5 merged PRs checked by a CI test -- score normalized to 4",
                "points": 1,
                "status": "partial",
                "details": [],
                "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/10 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 7 contributing companies or organizations",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "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.2,
                "status": "partial",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 8",
                "points": 4,
                "status": "partial",
                "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": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "0 existing vulnerabilities detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "excellent",
            "name": "Dependency advisories",
            "note": "Excluded from scoring (no data or not applicable): Indirect dependencies free of known advisories, No advisories left outstanding. Remaining weights renormalized. Matched 13 resolved dependencies against OSV; 25 could not be assessed (no resolved version, an unsupported ecosystem, or beyond the reported package list). This repository publishes no package the index resolves, so the repository dependency graph was assessed instead. That graph mixes development and test pins with shipped dependencies, so only the declared runtime dependencies are scored; transitive findings are reported as context and excluded from the score. Reachability is not analyzed.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "indirect_dependencies_free_of_known_advisories",
                    "no_advisories_left_outstanding"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              },
              {
                "code": "advisories_scope_repository",
                "params": {
                  "assessed": 13
                }
              },
              {
                "code": "advisories_unassessed",
                "params": {
                  "count": 25
                }
              },
              {
                "code": "advisories_repo_graph_caveat",
                "params": {}
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "source": "osv",
              "advisories": 0,
              "affected_packages": 0,
              "assessed_packages": 13,
              "unassessed_packages": 25,
              "affected_by_severity": "none",
              "direct_affected_packages": 0
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "no direct dependency carries a known advisory",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "no_direct_advisories",
                    "params": {}
                  }
                ],
                "max_points": 35
              },
              {
                "key": "indirect_dependencies_free_of_known_advisories",
                "name": "Indirect dependencies free of known advisories",
                "detail": "transitive set not separable from development and test dependencies in this scope",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_scope_not_separable",
                    "params": {}
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "no advisory carries a publication date",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_no_publication_date",
                    "params": {}
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "malicious_dependencies",
            "band": "excellent",
            "name": "Malicious dependencies",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "source": "osv",
              "meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
              "packages": [],
              "red_flag": false,
              "assessed_packages": 13,
              "malicious_packages": 0,
              "direct_malicious_packages": 0,
              "withdrawn_malicious_packages": 0,
              "installable_malicious_packages": 0
            },
            "components": [
              {
                "key": "no_dependency_reported_as_a_malicious_package",
                "name": "No dependency reported as a malicious package",
                "detail": "no dependency is reported as a malicious package",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "no_malicious_dependencies",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          },
          {
            "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": 7
            },
            "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": "at_risk",
        "name": "AI Readiness",
        "value": 45,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "at_risk",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 1,
              "agent_instruction_files": [],
              "agent_instruction_max_bytes": null
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "no CLAUDE.md / AGENTS.md / editor rules",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_instructions",
                    "params": {}
                  }
                ],
                "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": "100 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 100,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "at_risk",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 45,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "Gemfile.lock"
              ],
              "has_dockerfile": false,
              "typed_language": false,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [],
              "agent_commit_share": 0.01,
              "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": ".rubocop.yml",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".rubocop.yml"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "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": "1 of the last 100 commits agent-authored or agent-credited",
                "points": 2,
                "status": "partial",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 1,
                      "sampled": 100
                    }
                  }
                ],
                "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": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "moderate",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 55,
            "inputs": {
              "primary_language": "Ruby",
              "largest_source_bytes": 35216,
              "source_files_sampled": 111,
              "oversized_source_files": 0
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "Ruby without a type-check config",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_typecheck_config_language",
                    "params": {
                      "language": "Ruby"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "0/111 source files over 60KB",
                "points": 55,
                "status": "met",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 111,
                      "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": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-23T08:39:08.144590Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/t/tamatebako/tebako.svg",
  "full_name": "tamatebako/tebako",
  "license_state": "custom",
  "license_spdx": null
}

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

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

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