{"id":548,"name":null,"description":"RSpec runner and formatters","url":"https://github.com/rspec/rspec-core","last_synced_at":"2026-06-16T04:00:55.636Z","repository":{"id":602750,"uuid":"238972","full_name":"rspec/rspec-core","owner":"rspec","description":"RSpec runner and formatters","archived":true,"fork":false,"pushed_at":"2024-11-30T10:40:27.000Z","size":12027,"stargazers_count":1229,"open_issues_count":0,"forks_count":751,"subscribers_count":5,"default_branch":"main","last_synced_at":"2026-05-20T17:52:05.343Z","etag":null,"topics":["rspec","ruby"],"latest_commit_sha":null,"homepage":"http://rspec.info","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"influxdata/influxdb","license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rspec.png","metadata":{"files":{"readme":"README.md","changelog":"Changelog.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["JonRowe","benoittgt"],"open_collective":"rspec"}},"created_at":"2009-06-29T15:41:05.000Z","updated_at":"2026-05-13T15:15:29.000Z","dependencies_parsed_at":"2023-07-05T15:03:01.263Z","dependency_job_id":"9f5b36ff-aaca-4ff4-a4af-c580d3483f3d","html_url":"https://github.com/rspec/rspec-core","commit_stats":{"total_commits":4860,"total_committers":376,"mean_commits":"12.925531914893616","dds":0.7111111111111111,"last_synced_commit":"aec5f49485d97908183dbe790a7fefb8baaa8091"},"previous_names":[],"tags_count":154,"template":false,"template_full_name":null,"purl":"pkg:github/rspec/rspec-core","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rspec%2Frspec-core","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rspec%2Frspec-core/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rspec%2Frspec-core/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rspec%2Frspec-core/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rspec","download_url":"https://codeload.github.com/rspec/rspec-core/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rspec%2Frspec-core/sbom","scorecard":{"id":787566,"data":{"date":"2025-08-11","repo":{"name":"github.com/rspec/rspec-core","commit":"aec5f49485d97908183dbe790a7fefb8baaa8091"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5.6,"checks":[{"name":"Code-Review","score":1,"reason":"Found 2/15 approved changesets -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: SECURITY.md:1","Info: Found linked content: SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: SECURITY.md:1","Info: Found text in security policy: SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Maintained","score":0,"reason":"project is archived","details":["Warn: Repository is archived."],"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":10,"reason":"GitHub workflow tokens follow principle of least privilege","details":["Info: topLevel 'contents' permission set to 'read': .github/workflows/ci.yml:15","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Info: Possibly incomplete results: error parsing job operating system: .github/workflows/ci.yml:81","Info: Possibly incomplete results: error parsing job operating system: .github/workflows/ci.yml:82","Info: Possibly incomplete results: error parsing job operating system: .github/workflows/ci.yml:83","Info: Possibly incomplete results: error parsing job operating system: .github/workflows/ci.yml:84","Info: Possibly incomplete results: error parsing job operating system: .github/workflows/ci.yml:85","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:76: update your workflow using https://app.stepsecurity.io/secureworkflow/rspec/rspec-core/ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:77: update your workflow using https://app.stepsecurity.io/secureworkflow/rspec/rspec-core/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:87: update your workflow using https://app.stepsecurity.io/secureworkflow/rspec/rspec-core/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:136: update your workflow using https://app.stepsecurity.io/secureworkflow/rspec/rspec-core/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:157: update your workflow using https://app.stepsecurity.io/secureworkflow/rspec/rspec-core/ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:158: update your workflow using https://app.stepsecurity.io/secureworkflow/rspec/rspec-core/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/rspec/rspec-core/ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/rspec/rspec-core/ci.yml/main?enable=pin","Info:   0 out of   5 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   3 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.md:0","Info: FSF or OSI recognized license: MIT License: LICENSE.md:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 24 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-23T06:29:23.963Z","repository_id":602750,"created_at":"2025-08-23T06:29:23.963Z","updated_at":"2025-08-23T06:29:23.963Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33532404,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"ssl_error","status_checked_at":"2026-05-26T15:22:15.568Z","response_time":63,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"owner":{"login":"rspec","name":"RSpec","uuid":"22388","kind":"organization","description":"","email":null,"website":"http://rspec.info","location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/22388?v=4","repositories_count":18,"last_synced_at":"2024-03-25T19:34:00.441Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/rspec","funding_links":[],"total_stars":12597,"followers":89,"following":0,"created_at":"2022-11-02T16:17:28.010Z","updated_at":"2024-03-25T19:34:05.806Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rspec","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rspec/repositories"},"packages":[{"id":14514057,"name":"dev-ruby/rspec-core","ecosystem":"gentoo","description":"A Behaviour Driven Development (BDD) framework for Ruby","homepage":"https://github.com/rspec/rspec-core","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/rspec/rspec-core","keywords_array":["~alpha","amd64","arm","arm64","~hppa","~loong","~mips","ppc","ppc64","~riscv","~s390","~sparc","x86","~x64-macos","~x64-solaris"],"namespace":"dev-ruby","versions_count":2,"first_release_published_at":"2026-04-22T07:13:25.000Z","latest_release_published_at":"2026-04-22T07:13:25.000Z","latest_release_number":"3.13.6","last_synced_at":"2026-05-27T02:49:49.671Z","created_at":"2026-05-27T02:49:49.362Z","updated_at":"2026-06-05T23:02:52.616Z","registry_url":"https://packages.gentoo.org/packages/dev-ruby/rspec-core","install_command":"emerge dev-ruby/rspec-core","documentation_url":"https://packages.gentoo.org/packages/dev-ruby/rspec-core","metadata":{"category":"dev-ruby","slot":"3","eapi":"8","inherit":"ruby-fakegem","iuse":"highlight test test ruby_targets_ruby32 ruby_targets_ruby33 ruby_targets_ruby34 doc test test"},"repo_metadata":{"id":602750,"uuid":"238972","full_name":"rspec/rspec-core","owner":"rspec","description":"RSpec runner and formatters","archived":true,"fork":false,"pushed_at":"2024-11-30T10:40:27.000Z","size":12027,"stargazers_count":1229,"open_issues_count":0,"forks_count":751,"subscribers_count":5,"default_branch":"main","last_synced_at":"2026-05-20T17:52:05.343Z","etag":null,"topics":["rspec","ruby"],"latest_commit_sha":null,"homepage":"http://rspec.info","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"influxdata/influxdb","license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rspec.png","metadata":{"files":{"readme":"README.md","changelog":"Changelog.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["JonRowe","benoittgt"],"open_collective":"rspec"}},"created_at":"2009-06-29T15:41:05.000Z","updated_at":"2026-05-13T15:15:29.000Z","dependencies_parsed_at":"2023-07-05T15:03:01.263Z","dependency_job_id":"9f5b36ff-aaca-4ff4-a4af-c580d3483f3d","html_url":"https://github.com/rspec/rspec-core","commit_stats":{"total_commits":4860,"total_committers":376,"mean_commits":"12.925531914893616","dds":0.7111111111111111,"last_synced_commit":"aec5f49485d97908183dbe790a7fefb8baaa8091"},"previous_names":[],"tags_count":154,"template":false,"template_full_name":null,"purl":"pkg:github/rspec/rspec-core","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rspec%2Frspec-core","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rspec%2Frspec-core/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rspec%2Frspec-core/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rspec%2Frspec-core/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rspec","download_url":"https://codeload.github.com/rspec/rspec-core/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rspec%2Frspec-core/sbom","scorecard":{"id":787566,"data":{"date":"2025-08-11","repo":{"name":"github.com/rspec/rspec-core","commit":"aec5f49485d97908183dbe790a7fefb8baaa8091"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5.6,"checks":[{"name":"Code-Review","score":1,"reason":"Found 2/15 approved changesets -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: SECURITY.md:1","Info: Found linked content: SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: SECURITY.md:1","Info: Found text in security policy: SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Maintained","score":0,"reason":"project is archived","details":["Warn: Repository is archived."],"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":10,"reason":"GitHub workflow tokens follow principle of least privilege","details":["Info: topLevel 'contents' permission set to 'read': .github/workflows/ci.yml:15","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Info: Possibly incomplete results: error parsing job operating system: .github/workflows/ci.yml:81","Info: Possibly incomplete results: error parsing job operating system: .github/workflows/ci.yml:82","Info: Possibly incomplete results: error parsing job operating system: .github/workflows/ci.yml:83","Info: Possibly incomplete results: error parsing job operating system: .github/workflows/ci.yml:84","Info: Possibly incomplete results: error parsing job operating system: .github/workflows/ci.yml:85","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:76: update your workflow using https://app.stepsecurity.io/secureworkflow/rspec/rspec-core/ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:77: update your workflow using https://app.stepsecurity.io/secureworkflow/rspec/rspec-core/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:87: update your workflow using https://app.stepsecurity.io/secureworkflow/rspec/rspec-core/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:136: update your workflow using https://app.stepsecurity.io/secureworkflow/rspec/rspec-core/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:157: update your workflow using https://app.stepsecurity.io/secureworkflow/rspec/rspec-core/ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:158: update your workflow using https://app.stepsecurity.io/secureworkflow/rspec/rspec-core/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/rspec/rspec-core/ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/rspec/rspec-core/ci.yml/main?enable=pin","Info:   0 out of   5 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   3 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.md:0","Info: FSF or OSI recognized license: MIT License: LICENSE.md:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 24 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-23T06:29:23.963Z","repository_id":602750,"created_at":"2025-08-23T06:29:23.963Z","updated_at":"2025-08-23T06:29:23.963Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33532404,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"ssl_error","status_checked_at":"2026-05-26T15:22:15.568Z","response_time":63,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"repo_metadata_updated_at":"2026-06-05T23:02:52.615Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:gentoo/dev-ruby/rspec-core","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/gentoo/dev-ruby/rspec-core","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/gentoo/dev-ruby/rspec-core","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/gentoo/dev-ruby/rspec-core/dependencies","status":null,"funding_links":["https://github.com/sponsors/JonRowe","https://github.com/sponsors/benoittgt","https://opencollective.com/rspec"],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/gentoo-portage/packages/dev-ruby%2Frspec-core/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/gentoo-portage/packages/dev-ruby%2Frspec-core/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/gentoo-portage/packages/dev-ruby%2Frspec-core/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/gentoo-portage/packages/dev-ruby%2Frspec-core/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/gentoo-portage/packages/dev-ruby%2Frspec-core/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/gentoo-portage/packages/dev-ruby%2Frspec-core/codemeta","maintainers":[],"registry":{"name":"gentoo-portage","url":"https://packages.gentoo.org/","ecosystem":"gentoo","default":true,"packages_count":19332,"maintainers_count":0,"namespaces_count":174,"keywords_count":382,"github":"gentoo","metadata":{"snapshot_url":"https://distfiles.gentoo.org/snapshots/portage-latest.tar.xz","funded_packages_count":77},"icon_url":"https://github.com/gentoo.png","created_at":"2026-05-26T08:59:24.155Z","updated_at":"2026-06-10T05:04:01.738Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/gentoo-portage/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/gentoo-portage/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/gentoo-portage/namespaces"}},{"id":13950662,"name":"ruby-rspec-core","ecosystem":"guix","description":"RSpec core library","homepage":"https://github.com/rspec/rspec-core","licenses":"expat","normalized_licenses":["Other"],"repository_url":"https://github.com/rspec/rspec-core","keywords_array":[],"namespace":null,"versions_count":2,"first_release_published_at":"2026-03-02T18:59:57.713Z","latest_release_published_at":"2026-03-02T18:59:57.713Z","latest_release_number":"3.13.2","last_synced_at":"2026-04-27T16:21:35.843Z","created_at":"2026-03-02T18:59:57.533Z","updated_at":"2026-06-05T23:02:52.544Z","registry_url":"https://packages.guix.gnu.org/packages/ruby-rspec-core/3.13.2/","install_command":"guix install ruby-rspec-core","documentation_url":"https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/ruby-check.scm#n977","metadata":{"location":"gnu/packages/ruby-check.scm:977","variable_name":"ruby-rspec-core"},"repo_metadata":{"id":602750,"uuid":"238972","full_name":"rspec/rspec-core","owner":"rspec","description":"RSpec runner and formatters","archived":true,"fork":false,"pushed_at":"2024-11-30T10:40:27.000Z","size":12027,"stargazers_count":1229,"open_issues_count":0,"forks_count":751,"subscribers_count":5,"default_branch":"main","last_synced_at":"2026-05-20T17:52:05.343Z","etag":null,"topics":["rspec","ruby"],"latest_commit_sha":null,"homepage":"http://rspec.info","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"influxdata/influxdb","license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rspec.png","metadata":{"files":{"readme":"README.md","changelog":"Changelog.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["JonRowe","benoittgt"],"open_collective":"rspec"}},"created_at":"2009-06-29T15:41:05.000Z","updated_at":"2026-05-13T15:15:29.000Z","dependencies_parsed_at":"2023-07-05T15:03:01.263Z","dependency_job_id":"9f5b36ff-aaca-4ff4-a4af-c580d3483f3d","html_url":"https://github.com/rspec/rspec-core","commit_stats":{"total_commits":4860,"total_committers":376,"mean_commits":"12.925531914893616","dds":0.7111111111111111,"last_synced_commit":"aec5f49485d97908183dbe790a7fefb8baaa8091"},"previous_names":[],"tags_count":154,"template":false,"template_full_name":null,"purl":"pkg:github/rspec/rspec-core","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rspec%2Frspec-core","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rspec%2Frspec-core/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rspec%2Frspec-core/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rspec%2Frspec-core/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rspec","download_url":"https://codeload.github.com/rspec/rspec-core/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rspec%2Frspec-core/sbom","scorecard":{"id":787566,"data":{"date":"2025-08-11","repo":{"name":"github.com/rspec/rspec-core","commit":"aec5f49485d97908183dbe790a7fefb8baaa8091"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5.6,"checks":[{"name":"Code-Review","score":1,"reason":"Found 2/15 approved changesets -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: SECURITY.md:1","Info: Found linked content: SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: SECURITY.md:1","Info: Found text in security policy: SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Maintained","score":0,"reason":"project is archived","details":["Warn: Repository is archived."],"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":10,"reason":"GitHub workflow tokens follow principle of least privilege","details":["Info: topLevel 'contents' permission set to 'read': .github/workflows/ci.yml:15","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Info: Possibly incomplete results: error parsing job operating system: .github/workflows/ci.yml:81","Info: Possibly incomplete results: error parsing job operating system: .github/workflows/ci.yml:82","Info: Possibly incomplete results: error parsing job operating system: .github/workflows/ci.yml:83","Info: Possibly incomplete results: error parsing job operating system: .github/workflows/ci.yml:84","Info: Possibly incomplete results: error parsing job operating system: .github/workflows/ci.yml:85","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:76: update your workflow using https://app.stepsecurity.io/secureworkflow/rspec/rspec-core/ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:77: update your workflow using https://app.stepsecurity.io/secureworkflow/rspec/rspec-core/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:87: update your workflow using https://app.stepsecurity.io/secureworkflow/rspec/rspec-core/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:136: update your workflow using https://app.stepsecurity.io/secureworkflow/rspec/rspec-core/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:157: update your workflow using https://app.stepsecurity.io/secureworkflow/rspec/rspec-core/ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:158: update your workflow using https://app.stepsecurity.io/secureworkflow/rspec/rspec-core/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/rspec/rspec-core/ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/rspec/rspec-core/ci.yml/main?enable=pin","Info:   0 out of   5 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   3 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.md:0","Info: FSF or OSI recognized license: MIT License: LICENSE.md:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 24 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-23T06:29:23.963Z","repository_id":602750,"created_at":"2025-08-23T06:29:23.963Z","updated_at":"2025-08-23T06:29:23.963Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33532404,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"ssl_error","status_checked_at":"2026-05-26T15:22:15.568Z","response_time":63,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"repo_metadata_updated_at":"2026-06-05T23:02:52.544Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:guix/ruby-rspec-core","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/guix/ruby-rspec-core","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/guix/ruby-rspec-core","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/guix/ruby-rspec-core/dependencies","status":null,"funding_links":["https://github.com/sponsors/JonRowe","https://github.com/sponsors/benoittgt","https://opencollective.com/rspec"],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/guix/packages/ruby-rspec-core/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/guix/packages/ruby-rspec-core/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/guix/packages/ruby-rspec-core/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/guix/packages/ruby-rspec-core/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/guix/packages/ruby-rspec-core/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/guix/packages/ruby-rspec-core/codemeta","maintainers":[],"registry":{"name":"guix","url":"https://guix.gnu.org","ecosystem":"guix","default":true,"packages_count":31756,"maintainers_count":0,"namespaces_count":0,"keywords_count":1627,"github":"guix-mirror","metadata":{"funded_packages_count":368},"icon_url":"https://github.com/guix-mirror.png","created_at":"2026-03-02T16:23:46.981Z","updated_at":"2026-06-10T05:17:25.224Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/guix/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/guix/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/guix/namespaces"}},{"id":8614749,"name":"github.com/rspec/rspec-core","ecosystem":"go","description":null,"homepage":null,"licenses":"mit","normalized_licenses":["MIT"],"repository_url":"https://github.com/rspec/rspec-core","keywords_array":[],"namespace":null,"versions_count":95,"first_release_published_at":"2009-06-29T16:06:59.000Z","latest_release_published_at":"2024-10-18T18:39:56.000Z","latest_release_number":"v3.13.2+incompatible","last_synced_at":"2026-06-14T03:03:11.039Z","created_at":"2023-12-02T02:14:57.009Z","updated_at":"2026-06-14T03:03:11.039Z","registry_url":"https://pkg.go.dev/github.com/rspec/rspec-core","install_command":"go get github.com/rspec/rspec-core","documentation_url":"https://pkg.go.dev/github.com/rspec/rspec-core#section-documentation","metadata":{},"repo_metadata":{"id":602750,"uuid":"238972","full_name":"rspec/rspec-core","owner":"rspec","description":"RSpec runner and formatters","archived":true,"fork":false,"pushed_at":"2024-11-30T10:40:27.000Z","size":12027,"stargazers_count":1229,"open_issues_count":0,"forks_count":751,"subscribers_count":5,"default_branch":"main","last_synced_at":"2026-05-20T17:52:05.343Z","etag":null,"topics":["rspec","ruby"],"latest_commit_sha":null,"homepage":"http://rspec.info","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"influxdata/influxdb","license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rspec.png","metadata":{"files":{"readme":"README.md","changelog":"Changelog.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["JonRowe","benoittgt"],"open_collective":"rspec"}},"created_at":"2009-06-29T15:41:05.000Z","updated_at":"2026-05-13T15:15:29.000Z","dependencies_parsed_at":"2023-07-05T15:03:01.263Z","dependency_job_id":"9f5b36ff-aaca-4ff4-a4af-c580d3483f3d","html_url":"https://github.com/rspec/rspec-core","commit_stats":{"total_commits":4860,"total_committers":376,"mean_commits":"12.925531914893616","dds":0.7111111111111111,"last_synced_commit":"aec5f49485d97908183dbe790a7fefb8baaa8091"},"previous_names":[],"tags_count":154,"template":false,"template_full_name":null,"purl":"pkg:github/rspec/rspec-core","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rspec%2Frspec-core","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rspec%2Frspec-core/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rspec%2Frspec-core/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rspec%2Frspec-core/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rspec","download_url":"https://codeload.github.com/rspec/rspec-core/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rspec%2Frspec-core/sbom","scorecard":{"id":787566,"data":{"date":"2025-08-11","repo":{"name":"github.com/rspec/rspec-core","commit":"aec5f49485d97908183dbe790a7fefb8baaa8091"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5.6,"checks":[{"name":"Code-Review","score":1,"reason":"Found 2/15 approved changesets -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: SECURITY.md:1","Info: Found linked content: SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: SECURITY.md:1","Info: Found text in security policy: SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Maintained","score":0,"reason":"project is archived","details":["Warn: Repository is archived."],"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":10,"reason":"GitHub workflow tokens follow principle of least privilege","details":["Info: topLevel 'contents' permission set to 'read': .github/workflows/ci.yml:15","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Info: Possibly incomplete results: error parsing job operating system: .github/workflows/ci.yml:81","Info: Possibly incomplete results: error parsing job operating system: .github/workflows/ci.yml:82","Info: Possibly incomplete results: error parsing job operating system: .github/workflows/ci.yml:83","Info: Possibly incomplete results: error parsing job operating system: .github/workflows/ci.yml:84","Info: Possibly incomplete results: error parsing job operating system: .github/workflows/ci.yml:85","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:76: update your workflow using https://app.stepsecurity.io/secureworkflow/rspec/rspec-core/ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:77: update your workflow using https://app.stepsecurity.io/secureworkflow/rspec/rspec-core/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:87: update your workflow using https://app.stepsecurity.io/secureworkflow/rspec/rspec-core/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:136: update your workflow using https://app.stepsecurity.io/secureworkflow/rspec/rspec-core/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:157: update your workflow using https://app.stepsecurity.io/secureworkflow/rspec/rspec-core/ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:158: update your workflow using https://app.stepsecurity.io/secureworkflow/rspec/rspec-core/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/rspec/rspec-core/ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/rspec/rspec-core/ci.yml/main?enable=pin","Info:   0 out of   5 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   3 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.md:0","Info: FSF or OSI recognized license: MIT License: LICENSE.md:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 24 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-23T06:29:23.963Z","repository_id":602750,"created_at":"2025-08-23T06:29:23.963Z","updated_at":"2025-08-23T06:29:23.963Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33532404,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"ssl_error","status_checked_at":"2026-05-26T15:22:15.568Z","response_time":63,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"},"owner_record":{"login":"rspec","name":"RSpec","uuid":"22388","kind":"organization","description":"","email":null,"website":"http://rspec.info","location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/22388?v=4","repositories_count":18,"last_synced_at":"2024-03-25T19:34:00.441Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/rspec","funding_links":[],"total_stars":12597,"followers":89,"following":0,"created_at":"2022-11-02T16:17:28.010Z","updated_at":"2024-03-25T19:34:05.806Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rspec","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rspec/repositories"},"tags":[]},"repo_metadata_updated_at":"2026-06-05T23:02:54.966Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":10.801592556016239,"dependent_packages_count":9.575730298247606,"stargazers_count":1.9445184901621635,"forks_count":1.0000190881682491,"docker_downloads_count":null,"average":5.830465108148564},"purl":"pkg:golang/github.com/rspec/rspec-core","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/go/github.com/rspec/rspec-core","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/go/github.com/rspec/rspec-core","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/go/github.com/rspec/rspec-core/dependencies","status":null,"funding_links":["https://github.com/sponsors/JonRowe","https://github.com/sponsors/benoittgt","https://opencollective.com/rspec"],"critical":null,"issue_metadata":{"last_synced_at":"2025-08-31T15:36:41.109Z","issues_count":119,"pull_requests_count":123,"avg_time_to_close_issue":40862812.166666664,"avg_time_to_close_pull_request":6675998.276422764,"issues_closed_count":107,"pull_requests_closed_count":123,"pull_request_authors_count":42,"issue_authors_count":107,"avg_comments_per_issue":6.504201680672269,"avg_comments_per_pull_request":2.5121951219512195,"merged_pull_requests_count":82,"bot_issues_count":0,"bot_pull_requests_count":1,"past_year_issues_count":10,"past_year_pull_requests_count":14,"past_year_avg_time_to_close_issue":201749.3,"past_year_avg_time_to_close_pull_request":135061.92857142858,"past_year_issues_closed_count":10,"past_year_pull_requests_closed_count":14,"past_year_pull_request_authors_count":5,"past_year_issue_authors_count":9,"past_year_avg_comments_per_issue":2.7,"past_year_avg_comments_per_pull_request":0.7857142857142857,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":10,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/rspec%2Frspec-core/issues","maintainers":[{"login":"JonRowe","count":73,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/JonRowe"},{"login":"pirj","count":19,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/pirj"},{"login":"myronmarston","count":6,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/myronmarston"},{"login":"xaviershay","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/xaviershay"},{"login":"cupakromer","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/cupakromer"},{"login":"yujinakayama","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/yujinakayama"},{"login":"soulcutter","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/soulcutter"},{"login":"benoittgt","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/benoittgt"}],"active_maintainers":[{"login":"JonRowe","count":4,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/JonRowe"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Frspec%2Frspec-core/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Frspec%2Frspec-core/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Frspec%2Frspec-core/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Frspec%2Frspec-core/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Frspec%2Frspec-core/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Frspec%2Frspec-core/codemeta","maintainers":[],"registry":{"name":"proxy.golang.org","url":"https://proxy.golang.org","ecosystem":"go","default":true,"packages_count":2170943,"maintainers_count":0,"namespaces_count":792747,"keywords_count":113213,"github":"golang","metadata":{"funded_packages_count":53976},"icon_url":"https://github.com/golang.png","created_at":"2022-04-04T15:19:22.939Z","updated_at":"2026-06-10T05:03:23.672Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/namespaces"}}],"commits":{"id":3371,"full_name":"rspec/rspec-core","default_branch":"main","total_commits":4860,"total_committers":376,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":12.925531914893616,"dds":0.7111111111111111,"past_year_total_commits":0,"past_year_total_committers":0,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":0.0,"past_year_dds":0.0,"last_synced_at":"2026-06-14T03:25:20.303Z","last_synced_commit":"aec5f49485d97908183dbe790a7fefb8baaa8091","created_at":"2023-03-07T09:17:26.178Z","updated_at":"2026-06-14T03:07:30.042Z","committers":[{"name":"David Chelimsky","email":"dchelimsky@gmail.com","login":"dchelimsky","count":1404},{"name":"Myron Marston","email":"myron.marston@gmail.com","login":"myronmarston","count":1266},{"name":"Jon Rowe","email":"hello@jonrowe.co.uk","login":"JonRowe","count":797},{"name":"Chad Humphries","email":"chad@spicycode.com","login":"spicycode","count":88},{"name":"Sam Phippen","email":"samphippen@googlemail.com","login":null,"count":82},{"name":"Justin Ko","email":"jko170@gmail.com","login":"justinko","count":81},{"name":"Andy Lindeman","email":"alindeman@gmail.com","login":"alindeman","count":62},{"name":"Bradley Schaefer","email":"bradley.schaefer@gmail.com","login":"soulcutter","count":51},{"name":"Xavier Shay","email":"xavier@rhnh.net","login":"xaviershay","count":48},{"name":"Aaron Kromer","email":"aaron.kromer@gmail.com","login":"cupakromer","count":47},{"name":"Yuji Nakayama","email":"nkymyj@gmail.com","login":"yujinakayama","count":39},{"name":"Benoit Tigeot","email":"benoit@hopsandfork.com","login":"benoittgt","count":36},{"name":"Phil Pirozhkov","email":"hello@fili.pp.ru","login":"pirj","count":19},{"name":"Charlie Maffitt","email":"cmaffitt@highgroove.com","login":null,"count":18},{"name":"Greggory Rothmeier","email":"gregg@highgroove.com","login":null,"count":18},{"name":"Eric Mueller","email":"nevinera@gmail.com","login":"nevinera","count":15},{"name":"Baden Ashford","email":"baden.ashford@gmail.com","login":"kykyi","count":14},{"name":"Ben Hoskings","email":"ben@hoskings.net","login":"benhoskings","count":13},{"name":"Charlie Tanksley","email":"charlie.tanksley@gmail.com","login":"charlietanksley","count":12},{"name":"Jay Hayes","email":"ur@iamvery.com","login":"iamvery","count":12},{"name":"Simon Coffey","email":"simon@urbanautomaton.com","login":"urbanautomaton","count":12},{"name":"Sasha","email":"sashainkiev@gmail.com","login":null,"count":12},{"name":"Alex Chaffee","email":"alex@stinky.com","login":"alexch","count":11},{"name":"Pete Hodgson","email":"git@thepete.net","login":"moredip","count":10},{"name":"Samuel Williams","email":"samuel.williams@oriontransfer.co.nz","login":"ioquatix","count":10},{"name":"Gary Fleshman","email":"gfleshman@optoro.com","login":null,"count":9},{"name":"bennacer860","email":"bennacer860@gmail.com","login":"bennacer860","count":9},{"name":"bootstraponline","email":"code@bootstraponline.com","login":"bootstraponline","count":8},{"name":"Pete Higgins","email":"pete@peterhiggins.org","login":"phiggins","count":8},{"name":"Matheus Richard","email":"matheusrichardt@gmail.com","login":"MatheusRich","count":8},{"name":"Marc-Andre Lafortune","email":"github@marc-andre.ca","login":"marcandre","count":8},{"name":"Chad Humphries and Nick Ang","email":"pair@thinkrelevance.com","login":null,"count":7},{"name":"Olek Janiszewski","email":"olek.janiszewski@gmail.com","login":"exviva","count":7},{"name":"Pat Allan","email":"pat@freelancing-gods.com","login":"pat","count":7},{"name":"Michi Huber","email":"michi.huber@gmail.com","login":null,"count":6},{"name":"Travis Spangle","email":"travis.spangle@k2sports.com","login":null,"count":6},{"name":"Thomas Stratmann","email":"thomas.stratmann@9elements.com","login":"schnittchen","count":6},{"name":"Ben Armston","email":"ben.armston@googlemail.com","login":"benarmston","count":6},{"name":"Alexey Fedorov","email":"waterlink000@gmail.com","login":"waterlink","count":6},{"name":"Ben Moss","email":"ben@mossity.com","login":"benmoss","count":6},{"name":"John Feminella","email":"jxf@jxf.me","login":"fj","count":6},{"name":"Max Shytikov","email":"mshytikov@gmail.com","login":"mshytikov","count":6},{"name":"Edward Park","email":"parkes.edward@gmail.com","login":"edwardpark","count":5},{"name":"Jim Breen","email":"jamesbreen37@gmail.com","login":"jimbreen","count":5},{"name":"Jo Liss","email":"joliss42@gmail.com","login":"joliss","count":5},{"name":"Josh Cheek","email":"josh.cheek@gmail.com","login":"JoshCheek","count":5},{"name":"Lucy Fu","email":"lufu@redhat.com","login":"lfu","count":5},{"name":"MasterLambaster","email":"masterlambaster@gmail.com","login":"MasterLambaster","count":5},{"name":"Olle Jonsson","email":"olle.jonsson@gmail.com","login":"olleolleolle","count":5},{"name":"dblock","email":"dblock@dblock.org","login":"dblock","count":5},{"name":"moro","email":"moronatural@gmail.com","login":"moro","count":5},{"name":"tomykaira","email":"tomykaira@gmail.com","login":"tomykaira","count":5},{"name":"Calvin Bascom","email":"calvin.bascom@adtran.com","login":"cbascom","count":5},{"name":"AlexKVal","email":"alexkval@gmail.com","login":"AlexKVal","count":5},{"name":"Alex Peattie","email":"alexpeattie@gmail.com","login":"alexpeattie","count":5},{"name":"Xavier Shay","email":"contact@xaviershay.com","login":null,"count":5},{"name":"Josh Justice","email":"jjustice@bignerdranch.com","login":null,"count":5},{"name":"Sidu Ponnappa","email":"ckponnappa@gmail.com","login":"kaiwren","count":4},{"name":"Roman Chernyatchik","email":"roman.chernyatchik@jetbrains.com","login":"iromeo","count":4},{"name":"Postmodern","email":"postmodern.mod3@gmail.com","login":"postmodern","count":4},{"name":"Paweł Gościcki","email":"pawel.goscicki@gmail.com","login":"pjg","count":4},{"name":"Benoit Daloze","email":"eregontp@gmail.com","login":"eregon","count":4},{"name":"Pat Maddox","email":"patmaddox@me.com","login":null,"count":4},{"name":"Liberatys","email":"nick.flueckiger@renuo.ch","login":null,"count":4},{"name":"Arlandis Lawrence","email":"arlandislawrence@gmail.com","login":"arlandism","count":4},{"name":"Ashish Dixit","email":"tundal45@gmail.com","login":"tundal45","count":4},{"name":"Christian Nelson","email":"christian@carbonfive.com","login":"christiannelson","count":4},{"name":"Eugene Kenny","email":"elkenny@gmail.com","login":"eugeneius","count":4},{"name":"Garami Gábor","email":"hron@hron.me","login":"hron84","count":4},{"name":"Jared Beck","email":"jared@jaredbeck.com","login":"jaredbeck","count":4},{"name":"Jarmo Pertman","email":"jarmo.p@gmail.com","login":"jarmo","count":4},{"name":"Magnus Bergmark","email":"magnus.bergmark@gmail.com","login":"Mange","count":4},{"name":"Brandon Fish","email":"brandon.j.fish@oracle.com","login":"bjfish","count":4},{"name":"rsperberg","email":"rsperberg@gmail.com","login":"rsperberg","count":4},{"name":"mrageh","email":"adam@mrageh.com","login":"mrageh","count":4},{"name":"makicamel","email":"unright@gmail.com","login":"makicamel","count":4},{"name":"jackscotti","email":"jacopojackscotti@gmail.com","login":"jackscotti","count":4},{"name":"grosser","email":"grosser.michael@gmail.com","login":"grosser","count":4},{"name":"Xenor Chang","email":"tubaxenor@gmail.com","login":"tubaxenor","count":4},{"name":"Wincent Colaiuta","email":"win@wincent.com","login":"wincent","count":4},{"name":"Vipul A M","email":"vipulnsward@gmail.com","login":"vipulnsward","count":4},{"name":"Parker Selbert","email":"parker@sorentwo.com","login":"sorentwo","count":4},{"name":"Benjamin Fleischer","email":"github@benjaminfleischer.com","login":"bf4","count":3},{"name":"ChaYoung You","email":"yousbe@gmail.com","login":"yous","count":3},{"name":"Damian Nurzynski","email":"dnurzynski@gmail.com","login":"dnurzynski","count":3},{"name":"Devon Estes","email":"devon.c.estes@gmail.com","login":"devonestes","count":3},{"name":"Dominic Muller","email":"nicklink483@gmail.com","login":"domgetter","count":3},{"name":"Jonas Tingeborn","email":"tinjon@gmail.com","login":"jojje","count":3},{"name":"Karthik Kastury","email":"hello@karthik.kastury.in","login":"KarthikDot","count":3},{"name":"Matijs van Zuijlen","email":"matijs@matijs.net","login":"mvz","count":3},{"name":"Alyssa Ross","email":"hi@alyssa.is","login":"alyssais","count":3},{"name":"Ivan Neverov","email":"ivan.neverov@gmail.com","login":"ineverov","count":3},{"name":"preethiramdev","email":"preethiramdev@yahoo.com","login":"preethiramdev","count":3},{"name":"Zubin Henner","email":"zubin.henner@gmail.com","login":"zubin","count":3},{"name":"Rob Sanheim","email":"rsanheim@gmail.com","login":"rsanheim","count":3},{"name":"Peter Goldstein","email":"peter.m.goldstein@gmail.com","login":"petergoldstein","count":3},{"name":"Nerian","email":"siotopo@gmail.com","login":"Nerian","count":3},{"name":"Michael de Silva","email":"michael@mwdesilva.com","login":"bsodmike","count":3},{"name":"Josep M. Bach","email":"josep.m.bach@gmail.com","login":null,"count":3},{"name":"vanstee","email":"vanstee@highgroove.com","login":null,"count":3},{"name":"Yule","email":"paul.brennan@ahc.uk.com","login":null,"count":3},{"name":"Tim Mertens","email":"tim.mertens@avant.com","login":null,"count":3},{"name":"Adrian CB","email":"adrian.cretu-barbul@intentmedia.com","login":null,"count":3},{"name":"Mark Burns","email":"markthedeveloper@gmail.com","login":"markburns","count":2},{"name":"Max Lincoln","email":"max@devopsy.com","login":"maxlinc","count":2},{"name":"David J. Hamilton","email":"davidjh@hjdivad.com","login":"hjdivad","count":2},{"name":"Durran Jordan","email":"durran@gmail.com","login":"durran","count":2},{"name":"Federico Ravasio","email":"ravasio.federico@gmail.com","login":"razielgn","count":2},{"name":"Gary Bernhardt","email":"gary.bernhardt@gmail.com","login":"garybernhardt","count":2},{"name":"Greg Sterndale","email":"gsterndale@gmail.com","login":"gsterndale","count":2},{"name":"Hans de Graaff","email":"hans@degraaff.org","login":"graaff","count":2},{"name":"Sam Umbach","email":"sumbach@gmail.com","login":"sumbach","count":2},{"name":"Suraj N. Kurapati","email":"sunaku@gmail.com","login":"sunaku","count":2},{"name":"Tay Ray Chuan","email":"rctay89@gmail.com","login":"rctay","count":2},{"name":"draffensperger","email":"d.raffensperger@gmail.com","login":"draffensperger","count":2},{"name":"niceking","email":"rose@buildkite.com","login":"niceking","count":2},{"name":"pyromaniac","email":"kinwizard@gmail.com","login":"pyromaniac","count":2},{"name":"sanemat","email":"o.gata.ken@gmail.com","login":"sanemat","count":2},{"name":"slyphon","email":"slyphon@gmail.com","login":"slyphon","count":2},{"name":"John Wilger","email":"johnwilger@gmail.com","login":"jwilger","count":2},{"name":"Jon Moss","email":"maclover7","login":"maclover7","count":2},{"name":"Jonathan Rochkind","email":"jonathan@dnil.net","login":"jrochkind","count":2},{"name":"Thomas Hart","email":"myrridin@gmail.com","login":"myrridin","count":2},{"name":"Juanito Fatas","email":"katehuang0320@gmail.com","login":"JuanitoFatas","count":2},{"name":"Keiji, Yoshimi","email":"walf443@gmail.com","login":"walf443","count":2},{"name":"Kenichi Kamiya","email":"kachick1@gmail.com","login":"kachick","count":2},{"name":"Les Hill","email":"leshill@gmail.com","login":"leshill","count":2},{"name":"Luis Lavena","email":"luislavena@gmail.com","login":"luislavena","count":2},{"name":"Samuel Esposito","email":"s.esposito@catawiki.nl","login":null,"count":2},{"name":"Samuel Lourenço","email":"slourenco@tray.net.br","login":null,"count":2},{"name":"Sebastián Tello","email":"sebastian.tello@klarna.com","login":null,"count":2},{"name":"mcandre","email":"andrew.pennebaker@gmail.com","login":null,"count":2},{"name":"takiy33","email":"takiy33@gmail.com","login":null,"count":2},{"name":"David Chelimsky","email":"dchelimsky@drw.com","login":null,"count":2},{"name":"M. Scott Ford","email":"sford@cardagin.com","login":null,"count":2},{"name":"Raymond Sanchez","email":"'raysanchez1979@gmail.com'","login":null,"count":2},{"name":"Ilkka Laukkanen","email":"ilkka.s.laukkanen@gmail.com","login":null,"count":2},{"name":"Jack Scotti","email":"jack.scotti@digital.cabinet-office.gov.uk","login":null,"count":2},{"name":"Jean-Daniel Guyot","email":"jean-daniel.guyot@elegantes-solutions.com","login":null,"count":2},{"name":"Jeff Kreeftmeijer","email":"jeff@kreeftmeijer.nl","login":null,"count":2},{"name":"John Firebaugh","email":"john_firebaugh@us.ibm.com","login":null,"count":2},{"name":"Adam Farhi","email":"afarhi@ebay.com","login":null,"count":2},{"name":"Alex Tan","email":"alex.r.tan@gmail.com","login":null,"count":2},{"name":"Alexey Fedorov","email":"alexey.fedorov@wimdu.com","login":null,"count":2},{"name":"Brian Faherty","email":"bfaherty@fool.com","login":null,"count":2},{"name":"Daniil Kachur","email":"kachur.daniil@gmail.com","login":"DDKatch","count":2},{"name":"Chris Griego","email":"cgriego@gmail.com","login":"cgriego","count":2},{"name":"Benjamin Quorning","email":"bquorning","login":"bquorning","count":2},{"name":"Ashley Engelund (aenw / weedySeaDragon)","email":"ashley@ashleycaroline.com","login":"weedySeaDragon","count":2},{"name":"Alexander Clark","email":"sasha.jackal@gmail.com","login":"alexander-clark","count":2},{"name":"Alex Crichton","email":"alex@alexcrichton.com","login":"alexcrichton","count":2},{"name":"yui-knk","email":"spiketeika@gmail.com","login":"yui-knk","count":2},{"name":"Igor Victor","email":"gogainda@yandex.ru","login":"gogainda","count":2},{"name":"Tom Stuart","email":"tom@codon.com","login":"tomstuart","count":2},{"name":"Shota Fukumori (sora_h)","email":"sora134@gmail.com","login":"sorah","count":2},{"name":"Yudai Takada","email":"t.yudai92@gmail.com","login":"ydah","count":2},{"name":"Sam Pohlenz","email":"sam@sampohlenz.com","login":"spohlenz","count":1},{"name":"Sebastian Skałacki","email":"skalee@gmail.com","login":"skalee","count":1},{"name":"Steve Richert","email":"steve.richert@gmail.com","login":"laserlemon","count":1},{"name":"Su Zhang (張甦)","email":"me@zhang.su","login":"zhangsu","count":1},{"name":"Systho","email":"systho@gmail.com","login":"Systho","count":1},{"name":"Sławosz Sławiński","email":"slawosz@cubiware.com","login":"slawosz","count":1},{"name":"Takeshi Arabiki","email":"takeshi.arabiki@gmail.com","login":"abicky","count":1},{"name":"Tejas Dinkar","email":"tejas@gja.in","login":"gja","count":1},{"name":"Thibaud Guillaume-Gentil","email":"thibaud@thibaud.me","login":"thibaudgg","count":1},{"name":"Three Planets Software","email":"threeplanetssoftware","login":"threeplanetssoftware","count":1},{"name":"weidenfreak","email":"meike.wiemann@blau.de","login":null,"count":1},{"name":"uzzz","email":"uzzable@gmail.com","login":null,"count":1},{"name":"slyphon","email":"simms@hp.com","login":null,"count":1},{"name":"raymond sanchez","email":"raysanchez1979@gmail.com","login":null,"count":1},{"name":"mrageh","email":"adam.magan@futurelearn.com","login":null,"count":1},{"name":"Yamada Masaki","email":"masaki@hisme.net","login":null,"count":1},{"name":"VTJamie","email":"jdabbott@vt.edu","login":null,"count":1},{"name":"Travis Vachon","email":"travis@copious.com","login":null,"count":1},{"name":"Tom Stuart","email":"stuart@soundcloud.com","login":null,"count":1},{"name":"Tom Anderson","email":"tom.anderson@timgroup.com","login":null,"count":1},{"name":"Thomas Holmes","email":"thomas@devminded.com","login":null,"count":1},{"name":"Sergey Pchelincev","email":"mail@sergeyp.me","login":null,"count":1},{"name":"Samuel Esposito","email":"s.esposito@roqua.nl","login":null,"count":1},{"name":"Sam Goldman","email":"sam@smartlogicsolutions.com","login":null,"count":1},{"name":"Pivotal Casebook","email":"casebook-dev@googlegroups.com","login":null,"count":1},{"name":"Matt Remsik and Ethan Gunderson","email":"mremsik@gmail.com, ethan@ethangunderson.com","login":null,"count":1},{"name":"Nick LaMuro","email":"nicklamuro@gmail.com","login":"NickLaMuro","count":1},{"name":"Nick Novitski","email":"nicknovitski@gmail.com","login":"nicknovitski","count":1},{"name":"Odin Dutton","email":"odindutton@gmail.com","login":"twe4ked","count":1},{"name":"Odin H B","email":"odinh2908@gmail.com","login":"odinhb","count":1},{"name":"Oleg Pudeyev","email":"oleg@bsdpower.com","login":"p","count":1},{"name":"Oleksandr Petrov","email":"oleksandr.petrov@gmail.com","login":"ifesdjeen","count":1},{"name":"Orien Madgwick","email":"_@orien.io","login":"orien","count":1},{"name":"Patrik Wenger","email":"paddor@gmail.com","login":"paddor","count":1},{"name":"Paul Annesley","email":"paul@annesley.cc","login":"pda","count":1},{"name":"Paul Cortens","email":"paul@thoughtless.ca","login":"thoughtless","count":1},{"name":"Perry Smith","email":"pedz@easesoftware.com","login":"pedz","count":1},{"name":"Pete Johns","email":"johnsyweb","login":"johnsyweb","count":1},{"name":"Peter Alfvin","email":"palfvin@gmail.com","login":"palfvin","count":1},{"name":"Peter Jaros","email":"peter.a.jaros@gmail.com","login":"Peeja","count":1},{"name":"Peter Wall","email":"47324121+p-wall","login":"p-wall","count":1},{"name":"Phil Thompson","email":"phil@electricvisions.com","login":"PhilT","count":1},{"name":"Philippe Hardardt","email":"peagha","login":"peagha","count":1},{"name":"Prem Sichanugrist","email":"s@sikac.hu","login":"sikachu","count":1},{"name":"René Föhring","email":"rf@bamaru.de","login":"rrrene","count":1},{"name":"Richard Platel","email":"richard.platel@gmail.com","login":"richardplatel","count":1},{"name":"Richie Vos","email":"richie@groupon.com","login":"richievos","count":1},{"name":"Robert Lowe","email":"robert@iblargz.com","login":"RobertLowe","count":1},{"name":"Robert Speicher","email":"rspeicher@gmail.com","login":"rspeicher","count":1},{"name":"Rodrigo Rosenfeld Rosas","email":"rr_rosas@yahoo.com.br","login":"rosenfeld","count":1},{"name":"Romain Tartière","email":"romain@blogreen.org","login":"smortex","count":1},{"name":"Ryan Bigg","email":"radarlistener@gmail.com","login":"radar","count":1},{"name":"Ryo Nakamura","email":"r7kamura@gmail.com","login":"r7kamura","count":1},{"name":"Sam Joseph","email":"tansaku@gmail.com","login":"tansaku","count":1},{"name":"Travis Grathwell","email":"tjgrathwell@gmail.com","login":"tjgrathwell","count":1},{"name":"Travis Herrick","email":"tthetoad@gmail.com","login":"ToadJamb","count":1},{"name":"Tyler Brock","email":"tyler.brock@gmail.com","login":"TylerBrock","count":1},{"name":"Viktor Fonic","email":"viktor.fonic@gmail.com","login":"vfonic","count":1},{"name":"Vít Ondruch","email":"v.ondruch@gmail.com","login":"voxik","count":1},{"name":"Yann Lugrin","email":"yann.lugrin@liquid-concept.ch","login":"yannlugrin","count":1},{"name":"Zeljko Filipin","email":"zeljko.filipin@gmail.com","login":"zeljkofilipin","count":1},{"name":"Zinovyev Ivan","email":"ivan@zinovyev.net","login":"zinovyev","count":1},{"name":"arjan0307","email":"arjan0307@gmail.com","login":"arjan0307","count":1},{"name":"aslakhellesoy","email":"aslak.hellesoy@gmail.com","login":"aslakhellesoy","count":1},{"name":"delba","email":"delba@server.fake","login":"delba","count":1},{"name":"githubuseracct","email":"githubuseracct@gmail.com","login":"githubuseracct","count":1},{"name":"hasimo","email":"sulky.to@gmail.com","login":"hasimo","count":1},{"name":"jfelchner","email":"jeff@thekompanee.com","login":"jfelchner","count":1},{"name":"joshcooper","email":"josh.nw@gmail.com","login":"joshcooper","count":1},{"name":"marekj","email":"marekj.com@gmail.com","login":"hatched-marek","count":1},{"name":"matrinox","email":"geoff.lee@lendesk.com","login":"geoff-lee-lendesk","count":1},{"name":"matrinox","email":"geofflee25@gmail.com","login":"matrinox","count":1},{"name":"monocle","email":"hchw29@gmail.com","login":"CapyTheBeara","count":1},{"name":"phoet","email":"phoetmail@googlemail.com","login":"phoet","count":1},{"name":"pjambet","email":"pierre.jambet@gmail.com","login":"pjambet","count":1},{"name":"ragaskar","email":"ragaskar@gmail.com","login":"ragaskar","count":1},{"name":"rubiii","email":"me@rubiii.com","login":"rubiii","count":1},{"name":"schneems","email":"richard.schneeman+foo@gmail.com","login":"schneems","count":1},{"name":"teyamagu","email":"907019+teyamagu","login":"teyamagu","count":1},{"name":"thepoho","email":"thepoho@gmail.com","login":"thepoho","count":1},{"name":"tyler-ball","email":"tyleraball@gmail.com","login":"tyler-ball","count":1},{"name":"Mark Lorenz","email":"mlorenz@covermymeds.com","login":null,"count":1},{"name":"Lailson Bandeira","email":"lailson@guava.com.br","login":null,"count":1},{"name":"Kelly Stannard","email":"kelly.stannard@lendkey.com","login":null,"count":1},{"name":"Julian Scheid","email":"julian.scheid@rsp.com.au","login":null,"count":1},{"name":"Jonathan Hinkle","email":"jonathan@vermonster.com","login":null,"count":1},{"name":"Jim Kingdon","email":"jkingdon@squareup.com","login":null,"count":1},{"name":"Jacques Crocker","email":"railsjedi@gmail.com","login":null,"count":1},{"name":"Hans Hasselberg","email":"hans.hasselberg@kaeuferportal.de","login":null,"count":1},{"name":"Glyn Normington","email":"gnormington@vmware.com","login":null,"count":1},{"name":"Geoffrey Byers","email":"geoff@seaandco.com","login":null,"count":1},{"name":"David Chelimsky, Chad Humphries and Corey Haines","email":"dchelimsky+pair@gmail.com","login":null,"count":1},{"name":"Dave Newman","email":"dave@snappyco.de","login":null,"count":1},{"name":"Daniela Wellisz","email":"dwellisz@engineyard.com","login":null,"count":1},{"name":"Chuck Remes","email":"cremes@mac.com","login":null,"count":1},{"name":"Ben Snape","email":"ben.snape@itv.com","login":null,"count":1},{"name":"Ben Rady","email":"brady@drw.com","login":null,"count":1},{"name":"Artur Małecki","email":"artur.malecki@aenima.pl","login":null,"count":1},{"name":"Ashley Moran","email":"ashley.moran@patchspace.co.uk","login":null,"count":1},{"name":"Ben Axnick","email":"ben.axnick@flippa.com","login":null,"count":1},{"name":"Andreas Tolf Tolfsen","email":"andreastt@opera.com","login":null,"count":1},{"name":"Alireza Bashiri","email":"azbshiri@gmail.com","login":null,"count":1},{"name":"Alex Kwiatkowski and Ryan Ong","email":"pair+alex+ryan@schoolkeep.com","login":null,"count":1},{"name":"Akos Vandra","email":"avandra@whitepages.com","login":null,"count":1},{"name":"Tianyi Cui","email":"tianyicui@gmail.com","login":"tianyicui","count":1},{"name":"Tim Harper","email":"timcharper@gmail.com","login":"timcharper","count":1},{"name":"Tobias Pfeiffer","email":"pragtob@gmail.com","login":"PragTob","count":1},{"name":"Tom Schady","email":"tschady@gmail.com","login":"tschady","count":1},{"name":"Adam Walters","email":"ajwalters@gmail.com","login":"ajwalters","count":1},{"name":"Adam Meehan","email":"adam.meehan@gmail.com","login":"adzap","count":1},{"name":"Aaron Gibralter","email":"aaron.gibralter@gmail.com","login":"agibralter","count":1},{"name":"Clifford Heath","email":"clifford.heath@gmail.com","login":"cjheath","count":1},{"name":"Colin Jones","email":"trptcolin@gmail.com","login":"trptcolin","count":1},{"name":"Corey Haines","email":"coreyhaines@gmail.com","login":"coreyhaines","count":1},{"name":"Dan Peterson","email":"dpiddy@gmail.com","login":"danp","count":1},{"name":"Dana Sherson","email":"robot@dana.sh","login":"robotdana","count":1},{"name":"Daniel Grippi","email":"danielgrippi@gmail.com","login":"danielgrippi","count":1},{"name":"Daniel Quimper","email":"dquimper@gmail.com","login":"dquimper","count":1},{"name":"David Ed Mellum","email":"david@edmellum.com","login":"edmellum","count":1},{"name":"David Grayson","email":"davidegrayson@gmail.com","login":"DavidEGrayson","count":1},{"name":"David Rodríguez","email":"deivid.rodriguez@riseup.net","login":"deivid-rodriguez","count":1},{"name":"David Taylor","email":"david@taylorhq.com","login":"davidtaylorhq","count":1},{"name":"Denis Laliberté","email":"denis.laliberte@gmail.com","login":"denislaliberte","count":1},{"name":"Elliot Winkler","email":"elliot.winkler@gmail.com","login":"mcmire","count":1},{"name":"Evgeny Zhdanov","email":"evdev34@gmail.com","login":"zhisme","count":1},{"name":"Evgeny Zislis","email":"evgeny.zislis@gmail.com","login":"kesor","count":1},{"name":"Ewa Czechowska","email":"ewa@ai-traders.com","login":"xmik","count":1},{"name":"Fabien Schurter","email":"fabschurt","login":"fabschurt","count":1},{"name":"Fabio Napoleoni","email":"f.napoleoni@gmail.com","login":"fabn","count":1},{"name":"Fumiaki MATSUSHIMA","email":"mtsmfm@gmail.com","login":"mtsmfm","count":1},{"name":"Gabriel Sobrinho","email":"gabriel.sobrinho@gmail.com","login":"sobrinho","count":1},{"name":"Garett Arrowood","email":"garettarrowood@gmail.com","login":"garettarrowood","count":1},{"name":"Gavin Miller","email":"gavingmiller@gmail.com","login":"gavingmiller","count":1},{"name":"Giuseppe Capizzi","email":"g.capizzi@gmail.com","login":"gcapizzi","count":1},{"name":"Glenn Vanderburg","email":"glv@vanderburg.org","login":"glv","count":1},{"name":"Gonçalo Silva","email":"goncalossilva@gmail.com","login":"goncalossilva","count":1},{"name":"Christophe Bliard","email":"christophe.bliard@trux.info","login":"cbliard","count":1},{"name":"Christian Treppo","email":"christian@treppo.org","login":"treppo","count":1},{"name":"Christian Seiler","email":"chr.seiler@gmail.com","login":"csmuc","count":1},{"name":"Christian Adamini","email":"christian.adamini@invision.de","login":"cadamini","count":1},{"name":"Chris","email":"obromios","login":"obromios","count":1},{"name":"Charles Lowell","email":"cowboyd@thefrontside.net","login":"cowboyd","count":1},{"name":"Cezary Baginski","email":"cezary@chronomantic.net","login":"e2","count":1},{"name":"Carlos Antonio da Silva","email":"carlosantoniodasilva@gmail.com","login":"carlosantoniodasilva","count":1},{"name":"Bryan Helmkamp","email":"bryan@brynary.com","login":"brynary","count":1},{"name":"Brian John","email":"brian@brianjohn.com","login":"f1sherman","count":1},{"name":"Brian Dunn","email":"brianpatrickdunn@gmail.com","login":"briandunn","count":1},{"name":"Bosko Ivanisevic","email":"bosko.ivanisevic@gmail.com","login":"bosko","count":1},{"name":"Ben Woosley","email":"ben.woosley@gmail.com","login":"Empact","count":1},{"name":"Andrew Hooker","email":"geekoncoffee@gmail.com","login":"GeekOnCoffee","count":1},{"name":"Andrew Vit","email":"andrew@avit.ca","login":"avit","count":1},{"name":"Andy Waite","email":"andyw8","login":"andyw8","count":1},{"name":"Arthur Gunn","email":"arthur@gunn.co.nz","login":"gunn","count":1},{"name":"Arthur Neves","email":"arthurnn@gmail.com","login":"arthurnn","count":1},{"name":"Ben Lavender","email":"blavender@gmail.com","login":"bhuga","count":1},{"name":"Andreas Neuhaus","email":"zargony@zargony.com","login":"zargony","count":1},{"name":"Alexander Skiba","email":"alex@hauptstimme.com","login":"lacrosse","count":1},{"name":"Alex Soulim","email":"soulim@gmail.com","login":"soulim","count":1},{"name":"Alex Pounds","email":"alex+git@alexpounds.com","login":"creature","count":1},{"name":"Alex Haynes","email":"alexhaynes93@gmail.com","login":"Deseao","count":1},{"name":"Alex","email":"93376818+sashashura","login":"sashashura","count":1},{"name":"Akshay Birajdar","email":"akshaybirajdar05@gmail.com","login":"the-spectator","count":1},{"name":"Akira Matsuda","email":"ronnie@dio.jp","login":"amatsuda","count":1},{"name":"Agis Anastasopoulos","email":"a@xz0.org","login":"agis","count":1},{"name":"Konstantin Haase","email":"konstantin.mailinglists@googlemail.com","login":"rkh","count":1},{"name":"Lake Denman","email":"lake@lakedenman.com","login":"ldenman","count":1},{"name":"Laszlo Bacsi","email":"lackac@lackac.hu","login":"lackac","count":1},{"name":"Leo Arnold","email":"github@leoarnold.de","login":"leoarnold","count":1},{"name":"Leo Cassarani","email":"me@leocassarani.net","login":"leocassarani","count":1},{"name":"Leo Gallucci","email":"elgalu3@gmail.com","login":"elgalu","count":1},{"name":"Leonardo Bessa","email":"leobessa@gmail.com","login":"leobessa","count":1},{"name":"Levi Robertson","email":"levi@lvrbrtsn.com","login":"liltechnomancer","count":1},{"name":"MIKAMI Yoshiyuki","email":"yoshuki@saikyoline.jp","login":"yoshuki","count":1},{"name":"Marek Tuchowski","email":"mtuchowski","login":"mtuchowski","count":1},{"name":"Mark Campbell","email":"nitrodist@gmail.com","login":"Nitrodist","count":1},{"name":"Mark Swinson","email":"mark@mswinson.com","login":"mswinson","count":1},{"name":"Matt Jones","email":"al2o3cr@gmail.com","login":"al2o3cr","count":1},{"name":"Matt Kirk","email":"matt@matthewkirk.com","login":"hexgnu","count":1},{"name":"Matt Larraz","email":"mlarraz","login":"mlarraz","count":1},{"name":"Matthew M. Boedicker","email":"matthewm@boedicker.org","login":"mmb","count":1},{"name":"Maxime Lapointe","email":"hunter_spawn@hotmail.com","login":"MaxLap","count":1},{"name":"Melissa Xie","email":"melissa@thoughtbot.com","login":"mxie","count":1},{"name":"Michal Bruzda","email":"68468929+MicBruz","login":"MicBruz","count":1},{"name":"Michele Piccirillo","email":"michele.piccirillo@gmail.com","login":"lordofthelake","count":1},{"name":"Mike Dalton","email":"michaelcdalton@gmail.com","login":"kcdragon","count":1},{"name":"Mike Jarema","email":"mike@jarema.com","login":"mikejarema","count":1},{"name":"Mike Moore","email":"mike@blowmage.com","login":"blowmage","count":1},{"name":"Mislav Marohnić","email":"mislav.marohnic@gmail.com","login":"mislav","count":1},{"name":"Mitsutaka Mimura","email":"takkanm@gmail.com","login":"takkanm","count":1},{"name":"Nate Jackson","email":"nate.d.jackson@gmail.com","login":"njackson","count":1},{"name":"Ned Ruggeri","email":"ruggeri@self-loop.com","login":"ruggeri","count":1},{"name":"vfrride","email":"jeff@jpcutler.net","login":"vfrride","count":1},{"name":"Grzegorz Świrski","email":"sognat@gmail.com","login":"gswirski","count":1},{"name":"Guido Günther","email":"agx@sigxcpu.org","login":"agx","count":1},{"name":"Iain Hecker","email":"iain@iain.nl","login":"iain","count":1},{"name":"Ian Ker-Seymer","email":"i.kerseymer@gmail.com","login":"ianks","count":1},{"name":"Ian Leitch","email":"port001@gmail.com","login":"ileitch","count":1},{"name":"Ilya Lavrov","email":"dzjuck@gmail.com","login":"dzjuck","count":1},{"name":"Jack Danger Canty","email":"github@6brand.com","login":"JackDanger","count":1},{"name":"Jake Goulding","email":"jake.goulding@gmail.com","login":"shepmaster","count":1},{"name":"Janmejay Singh","email":"singh.janmejay@gmail.com","login":"janmejay","count":1},{"name":"Jeroen van Dijk","email":"jeroentjevandijk@gmail.com","login":"jeroenvandijk","count":1},{"name":"Jimmy Cuadra","email":"jimmy@jimmycuadra.com","login":"jimmycuadra","count":1},{"name":"Joel Stimson","email":"stimsojr@gmail.com","login":"stim371","count":1},{"name":"John Andrews","email":"john.andrews@joinroot.com","login":"jxa","count":1},{"name":"John Bintz","email":"john@coswellproductions.com","login":"johnbintz","count":1},{"name":"John Gesimondo","email":"john@jmondo.com","login":"jmondo","count":1},{"name":"Jon Jensen","email":"jenseng@gmail.com","login":"jenseng","count":1},{"name":"Jordi Carres","email":"jcarres@mdsol.com","login":"jcarres-mdsol","count":1},{"name":"Joshua Pinter","email":"joshuapinter@gmail.com","login":"joshuapinter","count":1},{"name":"Jun Aruga","email":"jaruga@redhat.com","login":"junaruga","count":1},{"name":"Junichi Ito","email":"jit@sonicgarden.jp","login":"JunichiIto","count":1},{"name":"Kabari Hendrick","email":"kabari@gmail.com","login":"probablykabari","count":1},{"name":"Kazuki Nishikawa","email":"kz.nishikawa@gmail.com","login":"kzkn","count":1},{"name":"Keiko Kaneko","email":"keiko.cda@gmail.com","login":"neko314","count":1},{"name":"Kelly Felkins","email":"kelly@restlater.com","login":"kellyfelkins","count":1},{"name":"Kevin Mook","email":"kevin@kevinmook.com","login":"kevinmook","count":1},{"name":"Kim Burgestrand","email":"kim@burgestrand.se","login":"Burgestrand","count":1},{"name":"Kohei Hasegawa","email":"ameutau@gmail.com","login":"banyan","count":1},{"name":"Koichi ITO","email":"koic.ito@gmail.com","login":"koic","count":1}],"past_year_committers":[],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/rspec%2Frspec-core/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-06-16T00:00:12.235Z","repositories_count":6260317,"commits_count":877544107,"contributors_count":35090400,"owners_count":1166991,"icon_url":"https://github.com/github.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories"}},"issues_stats":{"full_name":"rspec/rspec-core","html_url":"https://github.com/rspec/rspec-core","last_synced_at":"2026-06-10T01:00:49.931Z","status":"error","issues_count":119,"pull_requests_count":123,"avg_time_to_close_issue":40862812.166666664,"avg_time_to_close_pull_request":6675998.276422764,"issues_closed_count":107,"pull_requests_closed_count":123,"pull_request_authors_count":42,"issue_authors_count":107,"avg_comments_per_issue":6.504201680672269,"avg_comments_per_pull_request":2.5121951219512195,"merged_pull_requests_count":82,"bot_issues_count":0,"bot_pull_requests_count":1,"past_year_issues_count":10,"past_year_pull_requests_count":14,"past_year_avg_time_to_close_issue":201749.3,"past_year_avg_time_to_close_pull_request":135061.92857142858,"past_year_issues_closed_count":10,"past_year_pull_requests_closed_count":14,"past_year_pull_request_authors_count":5,"past_year_issue_authors_count":9,"past_year_avg_comments_per_issue":2.7,"past_year_avg_comments_per_pull_request":0.7857142857142857,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":10,"created_at":"2023-05-12T16:28:50.724Z","updated_at":"2026-06-10T01:00:49.931Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/rspec%2Frspec-core","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/rspec%2Frspec-core/issues","issue_labels_count":{"Feature":4,"Bug":1,"Good first issue":1},"pull_request_labels_count":{"dependencies":1},"issue_author_associations_count":{"NONE":93,"CONTRIBUTOR":18,"MEMBER":8},"pull_request_author_associations_count":{"MEMBER":97,"CONTRIBUTOR":34,"NONE":31},"issue_authors":{"myronmarston":3,"mtasaka":3,"francktrouillez":2,"nevinera":2,"eregon":2,"schneems":2,"eisukeyeongjo":2,"xaviershay":2,"maxlinc":2,"tomczak-mateusz":2,"nbt":1,"Startouf":1,"okuramasafumi":1,"JunichiIto":1,"semaperepelitsa":1,"aripollak":1,"BestFriendChris":1,"tansaku":1,"Aiderlei":1,"elrayle":1,"tubaxenor":1,"kzkn":1,"delj":1,"marko-avlijas":1,"timdiggins":1,"gaganawhad":1,"oveddan":1,"voxik":1,"phoet":1,"yujinakayama":1,"ksol":1,"0llirocks":1,"ankurd1":1,"ArturT":1,"wildmaples":1,"raoehtesham79":1,"utkarshkukreti":1,"magni-":1,"ilyazub":1,"alexdowad":1,"astley92":1,"barelyknown":1,"Nitrodist":1,"tammersaleh":1,"lvonk":1,"glennfu":1,"beviz":1,"Jammjammjamm":1,"robotdana":1,"tenderlove":1,"olbrich":1,"fmichaut-diff":1,"imran-iq":1,"LukeIGS":1,"benoittgt":1,"JonRowe":1,"MSP-Greg":1,"markburns":1,"shusuke-nakamura":1,"DDKatch":1,"375gnu":1,"agis":1,"jvon1904":1,"lackovic":1,"jeffwidman":1,"mrtazz":1,"manueljacob":1,"rhiknow55":1,"jcoyne":1,"wooly":1,"brandondrew":1,"cheerfulstoic":1,"svyatov":1,"jasonkarns":1,"ezekg":1,"Draiken":1,"ghostsquad":1,"mirubiri":1,"robert-resemble":1,"sleepingkingstudios":1,"loqimean":1,"trinistr":1,"nakulpathak3":1,"runephilosof-abtion":1,"TravisSpangle":1,"dzirtusss":1,"DavidS":1,"ioquatix":1,"Leee-xx":1,"WoolenWang":1,"schnittchen":1,"joequincy":1,"ka8725":1,"CoderJayUK":1,"ngan":1,"nunosilva800":1,"mpalmer":1,"mbajur":1,"wrburgess":1,"SamuelFrost":1,"sj26":1,"hyuraku":1,"asterite":1,"mehulkar":1,"SpyMachine":1,"theldoria":1,"stillhart":1},"pull_request_authors":{"JonRowe":72,"pirj":19,"makicamel":8,"eisukeyeongjo":8,"nevinera":4,"myronmarston":3,"ydah":3,"jaredbeck":2,"jdelStrother":2,"rahearn":2,"kykyi":2,"the-spectator":2,"davidtaylorhq":2,"kzkn":2,"jvon1904":2,"threeplanetssoftware":2,"pda":2,"MicBruz":1,"bicarbon8":1,"schneems":1,"richardplatel":1,"maxlinc":1,"paddor":1,"soulcutter":1,"DDKatch":1,"xaviershay":1,"mcyoung":1,"iridakos":1,"jfelchner":1,"zhisme":1,"dependabot[bot]":1,"voxik":1,"JunichiIto":1,"sashashura":1,"jackscotti":1,"nfedyashev":1,"cupakromer":1,"olleolleolle":1,"mlarraz":1,"moll":1,"tubaxenor":1,"nobu":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-06-16T00:00:20.494Z","repositories_count":14810623,"issues_count":33160479,"pull_requests_count":109462409,"authors_count":11307693,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{},"past_year_pull_request_labels_count":{},"past_year_issue_author_associations_count":{},"past_year_pull_request_author_associations_count":{},"past_year_issue_authors":{},"past_year_pull_request_authors":{},"maintainers":[{"login":"JonRowe","count":73,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/JonRowe"},{"login":"pirj","count":19,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/pirj"},{"login":"myronmarston","count":6,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/myronmarston"},{"login":"xaviershay","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/xaviershay"},{"login":"cupakromer","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/cupakromer"},{"login":"yujinakayama","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/yujinakayama"},{"login":"soulcutter","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/soulcutter"},{"login":"benoittgt","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/benoittgt"}],"active_maintainers":[]},"events":{"total":{"DeleteEvent":4,"PullRequestEvent":17,"ForkEvent":20,"IssuesEvent":31,"WatchEvent":14,"IssueCommentEvent":41,"PushEvent":14,"CreateEvent":4},"last_year":{"ForkEvent":2,"WatchEvent":1}},"keywords":["rspec","ruby"],"dependencies":[{"ecosystem":"rubygems","filepath":"Gemfile","sha":null,"kind":"manifest","created_at":"2022-07-07T15:10:24.232Z","updated_at":"2022-07-07T15:10:24.232Z","repository_link":"https://github.com/rspec/rspec-core/blob/main/Gemfile","dependencies":[{"id":111413111,"package_name":"rake","ecosystem":"rubygems","requirements":"\u003c 11.0.0","direct":true,"kind":"runtime","optional":false},{"id":111413112,"package_name":"rake","ecosystem":"rubygems","requirements":"\u003c 12.0.0","direct":true,"kind":"runtime","optional":false},{"id":111413113,"package_name":"rake","ecosystem":"rubygems","requirements":"\u003c 13.0.0","direct":true,"kind":"runtime","optional":false},{"id":111413114,"package_name":"rake","ecosystem":"rubygems","requirements":"\u003e= 13.0.0","direct":true,"kind":"runtime","optional":false},{"id":111413115,"package_name":"diff-lcs","ecosystem":"rubygems","requirements":"~\u003e 1.4, \u003e= 1.4.3","direct":true,"kind":"runtime","optional":false},{"id":111413116,"package_name":"redcarpet","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":111413117,"package_name":"github-markup","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":111413118,"package_name":"yard","ecosystem":"rubygems","requirements":"~\u003e 0.9.24","direct":true,"kind":"development","optional":false},{"id":111413119,"package_name":"thor","ecosystem":"rubygems","requirements":"\u003c 1.0.0","direct":true,"kind":"runtime","optional":false},{"id":111413120,"package_name":"thor","ecosystem":"rubygems","requirements":"\u003e 1.0.0","direct":true,"kind":"runtime","optional":false},{"id":111413121,"package_name":"json","ecosystem":"rubygems","requirements":"\u003c 2.0.0","direct":true,"kind":"runtime","optional":false},{"id":111413122,"package_name":"json","ecosystem":"rubygems","requirements":"\u003e 2.3.0","direct":true,"kind":"runtime","optional":false},{"id":111413123,"package_name":"ffi","ecosystem":"rubygems","requirements":"\u003c 1.10","direct":true,"kind":"runtime","optional":false},{"id":111413124,"package_name":"ffi","ecosystem":"rubygems","requirements":"\u003c 1.15","direct":true,"kind":"runtime","optional":false},{"id":111413125,"package_name":"ffi","ecosystem":"rubygems","requirements":"\u003c 1.9.19","direct":true,"kind":"runtime","optional":false},{"id":111413126,"package_name":"ffi","ecosystem":"rubygems","requirements":"~\u003e 1.12.0","direct":true,"kind":"runtime","optional":false},{"id":111413127,"package_name":"ffi","ecosystem":"rubygems","requirements":"~\u003e 1.15.0","direct":true,"kind":"runtime","optional":false},{"id":111413128,"package_name":"childprocess","ecosystem":"rubygems","requirements":"\u003c 1.0.0","direct":true,"kind":"runtime","optional":false},{"id":111413129,"package_name":"childprocess","ecosystem":"rubygems","requirements":"\u003c 3.0.0","direct":true,"kind":"runtime","optional":false},{"id":111413130,"package_name":"childprocess","ecosystem":"rubygems","requirements":"\u003e= 3.0.0","direct":true,"kind":"runtime","optional":false},{"id":111413131,"package_name":"jruby-openssl","ecosystem":"rubygems","requirements":"\u003c 0.10.0","direct":true,"kind":"runtime","optional":false},{"id":111413132,"package_name":"jruby-openssl","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":111413133,"package_name":"simplecov","ecosystem":"rubygems","requirements":"~\u003e 0.8","direct":true,"kind":"development","optional":false},{"id":111413134,"package_name":"rubocop","ecosystem":"rubygems","requirements":"~\u003e 1.0, \u003c 1.12","direct":true,"kind":"runtime","optional":false},{"id":111413135,"package_name":"minitest","ecosystem":"rubygems","requirements":"\u003c 5.12.0","direct":true,"kind":"runtime","optional":false},{"id":111413136,"package_name":"cucumber","ecosystem":"rubygems","requirements":"\u003c= 1.3.22","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"rubygems","filepath":"rspec-core.gemspec","sha":null,"kind":"manifest","created_at":"2022-07-07T15:10:24.280Z","updated_at":"2022-07-07T15:10:24.280Z","repository_link":"https://github.com/rspec/rspec-core/blob/main/rspec-core.gemspec","dependencies":[{"id":111413137,"package_name":"cucumber","ecosystem":"rubygems","requirements":"\u003e= 1.3","direct":true,"kind":"development","optional":false},{"id":111413138,"package_name":"minitest","ecosystem":"rubygems","requirements":"~\u003e 5.3","direct":true,"kind":"development","optional":false},{"id":111413139,"package_name":"aruba","ecosystem":"rubygems","requirements":"~\u003e 0.14.9","direct":true,"kind":"development","optional":false},{"id":111413140,"package_name":"coderay","ecosystem":"rubygems","requirements":"~\u003e 1.1.1","direct":true,"kind":"development","optional":false},{"id":111413141,"package_name":"mocha","ecosystem":"rubygems","requirements":"~\u003e 0.13.0","direct":true,"kind":"development","optional":false},{"id":111413142,"package_name":"rr","ecosystem":"rubygems","requirements":"~\u003e 1.0.4","direct":true,"kind":"development","optional":false},{"id":111413143,"package_name":"flexmock","ecosystem":"rubygems","requirements":"~\u003e 0.9.0","direct":true,"kind":"development","optional":false},{"id":111413144,"package_name":"thread_order","ecosystem":"rubygems","requirements":"~\u003e 1.1.0","direct":true,"kind":"development","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/ci.yml","sha":null,"kind":"manifest","created_at":"2023-01-13T10:31:12.233Z","updated_at":"2023-01-13T10:31:12.233Z","repository_link":"https://github.com/rspec/rspec-core/blob/main/.github/workflows/ci.yml","dependencies":[{"id":6875550281,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":6875550282,"package_name":"ruby/setup-ruby","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false}]}],"score":null,"created_at":"2024-12-15T21:38:08.331Z","updated_at":"2026-06-16T04:00:55.639Z","avatar_url":"https://github.com/rspec.png","language":"Ruby","monthly_downloads":0,"readme":"# rspec-core [![Build Status](https://github.com/rspec/rspec-core/workflows/RSpec%20CI/badge.svg)](https://github.com/rspec/rspec-core/actions) [![Code Climate](https://codeclimate.com/github/rspec/rspec-core.svg)](https://codeclimate.com/github/rspec/rspec-core)\n\nrspec-core provides the structure for writing executable examples of how your\ncode should behave, and an `rspec` command with tools to constrain which\nexamples get run and tailor the output.\n\n**This is the old rspec core repository, please see the monorepo rspec/rspec for new issues and releases.**\n\n## Install\n\n    gem install rspec      # for rspec-core, rspec-expectations, rspec-mocks\n    gem install rspec-core # for rspec-core only\n    rspec --help\n\nWant to run against the `main` branch? You'll need to include the dependent\nRSpec repos as well. Add the following to your `Gemfile`:\n\n```ruby\n%w[rspec rspec-core rspec-expectations rspec-mocks rspec-support].each do |lib|\n  gem lib, :git =\u003e \"https://github.com/rspec/#{lib}.git\", :branch =\u003e 'main'\nend\n```\n\n## Basic Structure\n\nRSpec uses the words \"describe\" and \"it\" so we can express concepts like a conversation:\n\n    \"Describe an order.\"\n    \"It sums the prices of its line items.\"\n\n```ruby\nRSpec.describe Order do\n  it \"sums the prices of its line items\" do\n    order = Order.new\n\n    order.add_entry(LineItem.new(:item =\u003e Item.new(\n      :price =\u003e Money.new(1.11, :USD)\n    )))\n    order.add_entry(LineItem.new(:item =\u003e Item.new(\n      :price =\u003e Money.new(2.22, :USD),\n      :quantity =\u003e 2\n    )))\n\n    expect(order.total).to eq(Money.new(5.55, :USD))\n  end\nend\n```\n\nThe `describe` method creates an [ExampleGroup](http://rubydoc.info/gems/rspec-core/RSpec/Core/ExampleGroup).  Within the\nblock passed to `describe` you can declare examples using the `it` method.\n\nUnder the hood, an example group is a class in which the block passed to\n`describe` is evaluated. The blocks passed to `it` are evaluated in the\ncontext of an _instance_ of that class.\n\n## Nested Groups\n\nYou can also declare nested groups using the `describe` or `context`\nmethods:\n\n```ruby\nRSpec.describe Order do\n  context \"with no items\" do\n    it \"behaves one way\" do\n      # ...\n    end\n  end\n\n  context \"with one item\" do\n    it \"behaves another way\" do\n      # ...\n    end\n  end\nend\n```\n\nNested groups are subclasses of the outer example group class, providing\nthe inheritance semantics you'd want for free.\n\n## Aliases\n\nYou can declare example groups using either `describe` or `context`.\nFor a top level example group, `describe` and `context` are available\noff of `RSpec`. For backwards compatibility, they are also available\noff of the `main` object and `Module` unless you disable monkey\npatching.\n\nYou can declare examples within a group using any of `it`, `specify`, or\n`example`.\n\n## Shared Examples and Contexts\n\nDeclare a shared example group using `shared_examples`, and then include it\nin any group using `include_examples`.\n\n```ruby\nRSpec.shared_examples \"collections\" do |collection_class|\n  it \"is empty when first created\" do\n    expect(collection_class.new).to be_empty\n  end\nend\n\nRSpec.describe Array do\n  include_examples \"collections\", Array\nend\n\nRSpec.describe Hash do\n  include_examples \"collections\", Hash\nend\n```\n\nNearly anything that can be declared within an example group can be declared\nwithin a shared example group. This includes `before`, `after`, and `around`\nhooks, `let` declarations, and nested groups/contexts.\n\nYou can also use the names `shared_context` and `include_context`. These are\npretty much the same as `shared_examples` and `include_examples`, providing\nmore accurate naming when you share hooks, `let` declarations, helper methods,\netc, but no examples.\n\nIf you want to reuse shared examples or contexts across your RSpec suite you can\ndefine them in a stand alone _*.rb_ files (_spec/support/shared_examples/definition.rb_\nfor example). But you will have to manually `require` them (there is no autoloading of\n_spec/support/_ directory unless you set it up yourself).\n\n## Metadata\n\nrspec-core stores a metadata hash with every example and group, which\ncontains their descriptions, the locations at which they were\ndeclared, etc, etc. This hash powers many of rspec-core's features,\nincluding output formatters (which access descriptions and locations),\nand filtering before and after hooks.\n\nAlthough you probably won't ever need this unless you are writing an\nextension, you can access it from an example like this:\n\n```ruby\nit \"does something\" do |example|\n  expect(example.metadata[:description]).to eq(\"does something\")\nend\n```\n\n### `described_class`\n\nWhen a class is passed to `describe`, you can access it from an example\nusing the `described_class` method, which is a wrapper for\n`example.metadata[:described_class]`.\n\n```ruby\nRSpec.describe Widget do\n  example do\n    expect(described_class).to equal(Widget)\n  end\nend\n```\n\nThis is useful in extensions or shared example groups in which the specific\nclass is unknown. Taking the collections shared example group from above, we can\nclean it up a bit using `described_class`:\n\n```ruby\nRSpec.shared_examples \"collections\" do\n  it \"is empty when first created\" do\n    expect(described_class.new).to be_empty\n  end\nend\n\nRSpec.describe Array do\n  include_examples \"collections\"\nend\n\nRSpec.describe Hash do\n  include_examples \"collections\"\nend\n```\n\n## A Word on Scope\n\nRSpec has two scopes:\n\n* **Example Group**: Example groups are defined by a `describe` or\n  `context` block, which is eagerly evaluated when the spec file is\n  loaded. The block is evaluated in the context of a subclass of\n  `RSpec::Core::ExampleGroup`, or a subclass of the parent example group\n  when you're nesting them.\n* **Example**: Examples -- typically defined by an `it` block -- and any other\n  blocks with per-example semantics -- such as a `before(:example)` hook -- are\n  evaluated in the context of\n  an _instance_ of the example group class to which the example belongs.\n  Examples are _not_ executed when the spec file is loaded; instead,\n  RSpec waits to run any examples until all spec files have been loaded,\n  at which point it can apply filtering, randomization, etc.\n\nTo make this more concrete, consider this code snippet:\n\n``` ruby\nRSpec.describe \"Using an array as a stack\" do\n  def build_stack\n    []\n  end\n\n  before(:example) do\n    @stack = build_stack\n  end\n\n  it 'is initially empty' do\n    expect(@stack).to be_empty\n  end\n\n  context \"after an item has been pushed\" do\n    before(:example) do\n      @stack.push :item\n    end\n\n    it 'allows the pushed item to be popped' do\n      expect(@stack.pop).to eq(:item)\n    end\n  end\nend\n```\n\nUnder the covers, this is (roughly) equivalent to:\n\n``` ruby\nclass UsingAnArrayAsAStack \u003c RSpec::Core::ExampleGroup\n  def build_stack\n    []\n  end\n\n  def before_example_1\n    @stack = build_stack\n  end\n\n  def it_is_initially_empty\n    expect(@stack).to be_empty\n  end\n\n  class AfterAnItemHasBeenPushed \u003c self\n    def before_example_2\n      @stack.push :item\n    end\n\n    def it_allows_the_pushed_item_to_be_popped\n      expect(@stack.pop).to eq(:item)\n    end\n  end\nend\n```\n\nTo run these examples, RSpec would (roughly) do the following:\n\n``` ruby\nexample_1 = UsingAnArrayAsAStack.new\nexample_1.before_example_1\nexample_1.it_is_initially_empty\n\nexample_2 = UsingAnArrayAsAStack::AfterAnItemHasBeenPushed.new\nexample_2.before_example_1\nexample_2.before_example_2\nexample_2.it_allows_the_pushed_item_to_be_popped\n```\n\n## The `rspec` Command\n\nWhen you install the rspec-core gem, it installs the `rspec` executable,\nwhich you'll use to run rspec. The `rspec` command comes with many useful\noptions.\nRun `rspec --help` to see the complete list.\n\n## Store Command Line Options `.rspec`\n\nYou can store command line options in a `.rspec` file in the project's root\ndirectory, and the `rspec` command will read them as though you typed them on\nthe command line.\n\n## Get Started\n\nStart with a simple example of behavior you expect from your system. Do\nthis before you write any implementation code:\n\n```ruby\n# in spec/calculator_spec.rb\nRSpec.describe Calculator do\n  describe '#add' do\n    it 'returns the sum of its arguments' do\n      expect(Calculator.new.add(1, 2)).to eq(3)\n    end\n  end\nend\n```\n\nRun this with the rspec command, and watch it fail:\n\n```\n$ rspec spec/calculator_spec.rb\n./spec/calculator_spec.rb:1: uninitialized constant Calculator\n```\n\nAddress the failure by defining a skeleton of the `Calculator` class:\n\n```ruby\n# in lib/calculator.rb\nclass Calculator\n  def add(a, b)\n  end\nend\n```\n\nBe sure to require the implementation file in the spec:\n\n```ruby\n# in spec/calculator_spec.rb\n# - RSpec adds ./lib to the $LOAD_PATH\nrequire \"calculator\"\n```\n\nNow run the spec again, and watch the expectation fail:\n\n```\n$ rspec spec/calculator_spec.rb\nF\n\nFailures:\n\n  1) Calculator#add returns the sum of its arguments\n     Failure/Error: expect(Calculator.new.add(1, 2)).to eq(3)\n\n       expected: 3\n            got: nil\n\n       (compared using ==)\n     # ./spec/calculator_spec.rb:6:in `block (3 levels) in \u003ctop (required)\u003e'\n\nFinished in 0.00131 seconds (files took 0.10968 seconds to load)\n1 example, 1 failure\n\nFailed examples:\n\nrspec ./spec/calculator_spec.rb:5 # Calculator#add returns the sum of its arguments\n```\n\nImplement the simplest solution, by changing the definition of `Calculator#add` to:\n\n```ruby\ndef add(a, b)\n  a + b\nend\n```\n\nNow run the spec again, and watch it pass:\n\n```\n$ rspec spec/calculator_spec.rb\n.\n\nFinished in 0.000315 seconds\n1 example, 0 failures\n```\n\nUse the `documentation` formatter to see the resulting spec:\n\n```\n$ rspec spec/calculator_spec.rb --format doc\nCalculator\n  #add\n    returns the sum of its arguments\n\nFinished in 0.000379 seconds\n1 example, 0 failures\n```\n\n## Contributing\n\nOnce you've set up the environment, you'll need to cd into the working\ndirectory of whichever repo you want to work in. From there you can run the\nspecs and cucumber features, and make patches.\n\nNOTE: You do not need to use rspec-dev to work on a specific RSpec repo. You\ncan treat each RSpec repo as an independent project.\n\n* [Build details](BUILD_DETAIL.md)\n* [Code of Conduct](CODE_OF_CONDUCT.md)\n* [Detailed contributing guide](CONTRIBUTING.md)\n* [Development setup guide](DEVELOPMENT.md)\n\n## Also see\n\n* [https://github.com/rspec/rspec-metagem](https://github.com/rspec/rspec-metagem)\n* [https://github.com/rspec/rspec-expectations](https://github.com/rspec/rspec-expectations)\n* [https://github.com/rspec/rspec-mocks](https://github.com/rspec/rspec-mocks)\n* [https://github.com/rspec/rspec-rails](https://github.com/rspec/rspec-rails)\n","funding_links":["https://github.com/sponsors/JonRowe","https://github.com/sponsors/benoittgt","https://opencollective.com/rspec"],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["activerecord","activejob","mvc","rubygem","rubocop","rack","code-formatter","static-code-analysis","crash-reporting","cucumber"],"project_url":"https://ruby.ecosyste.ms/api/v1/projects/548","html_url":"https://ruby.ecosyste.ms/projects/548"}