{"id":214,"name":null,"description":"Adds support for creating state machines for attributes on any Ruby class","url":"https://github.com/state-machines/state_machines","last_synced_at":"2026-04-30T16:30:32.182Z","repository":{"id":16467117,"uuid":"19219215","full_name":"state-machines/state_machines","owner":"state-machines","description":"Adds support for creating state machines for attributes on any Ruby class","archived":false,"fork":false,"pushed_at":"2026-03-22T22:32:57.000Z","size":5577,"stargazers_count":867,"open_issues_count":1,"forks_count":99,"subscribers_count":17,"default_branch":"master","last_synced_at":"2026-04-19T01:03:00.366Z","etag":null,"topics":["ruby","state-machine"],"latest_commit_sha":null,"homepage":"https://github.com/state-machines/state_machines","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/state-machines.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2014-04-27T22:05:49.000Z","updated_at":"2026-04-07T12:52:34.000Z","dependencies_parsed_at":"2024-06-18T11:20:29.732Z","dependency_job_id":"f18c5d1d-ec5c-403c-805a-1a22e1ee9cdc","html_url":"https://github.com/state-machines/state_machines","commit_stats":{"total_commits":83,"total_committers":28,"mean_commits":"2.9642857142857144","dds":0.5662650602409638,"last_synced_commit":"e9f212ab0342494d2741008603be344d21c462ef"},"previous_names":[],"tags_count":37,"template":false,"template_full_name":null,"purl":"pkg:github/state-machines/state_machines","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/state-machines","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/sbom","scorecard":{"id":846711,"data":{"date":"2025-08-11","repo":{"name":"github.com/state-machines/state_machines","commit":"aec5cd1440fbd91a4f5049fb4475a0f63c7b2a6c"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.8,"checks":[{"name":"Code-Review","score":0,"reason":"Found 2/23 approved changesets -- score normalized to 0","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":"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":"Maintained","score":10,"reason":"30 commit(s) and 5 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/engines.yml:1","Warn: topLevel 'contents' permission set to 'write': .github/workflows/release.yml:10","Warn: no topLevel permission defined: .github/workflows/ruby.yml:1","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":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/engines.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/state-machines/state_machines/engines.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/engines.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/state-machines/state_machines/engines.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/engines.yml:32: update your workflow using https://app.stepsecurity.io/secureworkflow/state-machines/state_machines/engines.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/state-machines/state_machines/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/state-machines/state_machines/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ruby.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/state-machines/state_machines/ruby.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ruby.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/state-machines/state_machines/ruby.yml/master?enable=pin","Info:   0 out of   4 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":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"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":"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":"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":"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.txt:0","Info: FSF or OSI recognized license: MIT License: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"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 21 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-23T21:39:27.825Z","repository_id":16467117,"created_at":"2025-08-23T21:39:27.825Z","updated_at":"2025-08-23T21:39:27.825Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32208477,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-24T03:15:14.334Z","status":"ssl_error","status_checked_at":"2026-04-24T03:15:11.608Z","response_time":64,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":"state-machines","name":"State Machines","uuid":"7613709","kind":"organization","description":"","email":null,"website":null,"location":"Antarctica","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/7613709?v=4","repositories_count":11,"last_synced_at":"2023-09-07T15:13:42.457Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/state-machines","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-08T03:31:12.890Z","updated_at":"2023-09-07T15:13:44.450Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/state-machines","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/state-machines/repositories"},"packages":[{"id":13531054,"name":"ruby-state-machines","ecosystem":"debian","description":null,"homepage":"https://github.com/state-machines/state_machines","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/state-machines/state_machines","keywords_array":["misc"],"namespace":"main","versions_count":1,"first_release_published_at":"2026-02-10T23:39:48.586Z","latest_release_published_at":"2026-02-10T23:39:48.586Z","latest_release_number":"0.5.0-3","last_synced_at":"2026-03-13T08:29:53.346Z","created_at":"2026-02-10T23:39:48.405Z","updated_at":"2026-03-13T08:29:53.346Z","registry_url":"https://tracker.debian.org/pkg/ruby-state-machines","install_command":"apt-get install ruby-state-machines","documentation_url":"https://packages.debian.org/bullseye/ruby-state-machines","metadata":{"component":"main","architecture":"all","priority":"optional","binary":"ruby-state-machines","standards_version":"4.1.4","maintainer":"Debian Ruby Extras Maintainers \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"bundler, debhelper (\u003e= 11~), gem2deb, rake, ruby-minitest, ruby-minitest-reporters","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-02-11T14:27:04.826Z","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:deb/debian/ruby-state-machines?arch=source\u0026distro=debian-11\u0026repository_url=https://packages.debian.org/bullseye","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/debian/ruby-state-machines","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/debian/ruby-state-machines","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/debian/ruby-state-machines/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/packages/ruby-state-machines/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/packages/ruby-state-machines/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/packages/ruby-state-machines/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/packages/ruby-state-machines/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/packages/ruby-state-machines/codemeta","maintainers":[],"registry":{"name":"debian-11","url":"https://packages.debian.org/bullseye","ecosystem":"debian","default":false,"packages_count":31268,"maintainers_count":0,"namespaces_count":3,"keywords_count":0,"github":"debian","metadata":{"codename":"bullseye","funded_packages_count":77},"icon_url":"https://github.com/debian.png","created_at":"2026-02-04T11:01:49.702Z","updated_at":"2026-04-01T06:53:20.333Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/namespaces"}},{"id":13779884,"name":"ruby-state-machines","ecosystem":"ubuntu","description":null,"homepage":"https://github.com/state-machines/state_machines","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/state-machines/state_machines","keywords_array":["universe/misc"],"namespace":"universe","versions_count":1,"first_release_published_at":"2026-02-13T13:26:33.068Z","latest_release_published_at":"2026-02-13T13:26:33.068Z","latest_release_number":"0.5.0-3","last_synced_at":"2026-03-13T13:36:41.505Z","created_at":"2026-02-13T13:26:32.891Z","updated_at":"2026-03-13T13:36:41.506Z","registry_url":"https://launchpad.net/ubuntu/+source/ruby-state-machines","install_command":"apt-get install ruby-state-machines","documentation_url":null,"metadata":{"component":"universe","architecture":"all","priority":"optional","binary":"ruby-state-machines","standards_version":"4.1.4","maintainer":"Debian Ruby Extras Maintainers \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"bundler, debhelper (\u003e= 11~), gem2deb, rake, ruby-minitest, ruby-minitest-reporters","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-02-13T13:26:33.665Z","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:deb/ubuntu/ruby-state-machines?arch=source\u0026distro=ubuntu-22.04\u0026repository_url=https://launchpad.net/ubuntu/jammy","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/ubuntu/ruby-state-machines","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/ubuntu/ruby-state-machines","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/ubuntu/ruby-state-machines/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/packages/ruby-state-machines/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/packages/ruby-state-machines/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/packages/ruby-state-machines/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/packages/ruby-state-machines/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/packages/ruby-state-machines/codemeta","maintainers":[],"registry":{"name":"ubuntu-22.04","url":"https://launchpad.net/ubuntu/jammy","ecosystem":"ubuntu","default":false,"packages_count":34289,"maintainers_count":0,"namespaces_count":4,"keywords_count":0,"github":"ubuntu","metadata":{"codename":"jammy","funded_packages_count":142},"icon_url":"https://github.com/ubuntu.png","created_at":"2026-02-04T11:01:46.486Z","updated_at":"2026-04-01T06:53:21.644Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/namespaces"}},{"id":12334008,"name":"state_machines","ecosystem":"rubygems","description":"Adds support for creating state machines for attributes on any Ruby class","homepage":"https://github.com/state-machines/state_machines","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/state-machines/state_machines","keywords_array":[],"namespace":null,"versions_count":25,"first_release_published_at":"2014-04-27T22:03:15.236Z","latest_release_published_at":"2026-03-22T22:33:28.416Z","latest_release_number":"0.101.0","last_synced_at":"2026-04-20T04:01:24.941Z","created_at":"2025-10-07T06:13:44.761Z","updated_at":"2026-04-20T04:02:28.066Z","registry_url":"https://gem.coop/gems/state_machines","install_command":"gem install state_machines -s https://gem.coop","documentation_url":"http://www.rubydoc.info/gems/state_machines/","metadata":{"funding":null},"repo_metadata":{"id":16467117,"uuid":"19219215","full_name":"state-machines/state_machines","owner":"state-machines","description":"Adds support for creating state machines for attributes on any Ruby class","archived":false,"fork":false,"pushed_at":"2026-03-22T22:32:57.000Z","size":5577,"stargazers_count":867,"open_issues_count":1,"forks_count":99,"subscribers_count":17,"default_branch":"master","last_synced_at":"2026-04-09T06:03:43.208Z","etag":null,"topics":["ruby","state-machine"],"latest_commit_sha":null,"homepage":"https://github.com/state-machines/state_machines","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/state-machines.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2014-04-27T22:05:49.000Z","updated_at":"2026-04-07T12:52:34.000Z","dependencies_parsed_at":"2024-06-18T11:20:29.732Z","dependency_job_id":"f18c5d1d-ec5c-403c-805a-1a22e1ee9cdc","html_url":"https://github.com/state-machines/state_machines","commit_stats":{"total_commits":83,"total_committers":28,"mean_commits":"2.9642857142857144","dds":0.5662650602409638,"last_synced_commit":"e9f212ab0342494d2741008603be344d21c462ef"},"previous_names":[],"tags_count":37,"template":false,"template_full_name":null,"purl":"pkg:github/state-machines/state_machines","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/state-machines","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/sbom","scorecard":{"id":846711,"data":{"date":"2025-08-11","repo":{"name":"github.com/state-machines/state_machines","commit":"aec5cd1440fbd91a4f5049fb4475a0f63c7b2a6c"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.8,"checks":[{"name":"Code-Review","score":0,"reason":"Found 2/23 approved changesets -- score normalized to 0","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":"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":"Maintained","score":10,"reason":"30 commit(s) and 5 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/engines.yml:1","Warn: topLevel 'contents' permission set to 'write': .github/workflows/release.yml:10","Warn: no topLevel permission defined: .github/workflows/ruby.yml:1","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":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/engines.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/state-machines/state_machines/engines.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/engines.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/state-machines/state_machines/engines.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/engines.yml:32: update your workflow using https://app.stepsecurity.io/secureworkflow/state-machines/state_machines/engines.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/state-machines/state_machines/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/state-machines/state_machines/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ruby.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/state-machines/state_machines/ruby.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ruby.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/state-machines/state_machines/ruby.yml/master?enable=pin","Info:   0 out of   4 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":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"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":"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":"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":"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.txt:0","Info: FSF or OSI recognized license: MIT License: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"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 21 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-23T21:39:27.825Z","repository_id":16467117,"created_at":"2025-08-23T21:39:27.825Z","updated_at":"2025-08-23T21:39:27.825Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31990577,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T20:23:30.271Z","status":"ssl_error","status_checked_at":"2026-04-18T20:23:29.375Z","response_time":103,"last_error":"SSL_read: 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":"state-machines","name":"State Machines","uuid":"7613709","kind":"organization","description":"","email":null,"website":null,"location":"Antarctica","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/7613709?v=4","repositories_count":11,"last_synced_at":"2023-09-07T15:13:42.457Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/state-machines","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-08T03:31:12.890Z","updated_at":"2023-09-07T15:13:44.450Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/state-machines","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/state-machines/repositories"},"tags":[{"name":"v0.101.0","sha":"ba45958e0f8bac57d0a50f41cef4bb96afde85d4","kind":"tag","published_at":"2026-03-22T22:32:51.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.101.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.101.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.101.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.101.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.101.0/manifests"},{"name":"state_machines/v0.101.0","sha":"ba45958e0f8bac57d0a50f41cef4bb96afde85d4","kind":"commit","published_at":"2026-03-22T22:32:41.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/state_machines/v0.101.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/state_machines/v0.101.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@state_machines%2Fv0.101.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.101.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.101.0/manifests"},{"name":"v0.100.4","sha":"32405b0d1fe423300c01b40305b85ed1229f1df7","kind":"tag","published_at":"2025-10-14T02:40:19.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.100.4","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.100.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.100.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.100.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.100.4/manifests"},{"name":"state_machines/v0.100.4","sha":"32405b0d1fe423300c01b40305b85ed1229f1df7","kind":"commit","published_at":"2025-10-14T02:40:11.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/state_machines/v0.100.4","html_url":"https://github.com/state-machines/state_machines/releases/tag/state_machines/v0.100.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@state_machines%2Fv0.100.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.100.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.100.4/manifests"},{"name":"v0.100.3","sha":"668ebe327219d132804a8cd53da3f28e4841d68b","kind":"tag","published_at":"2025-10-14T02:39:44.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.100.3","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.100.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.100.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.100.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.100.3/manifests"},{"name":"state_machines/v0.100.3","sha":"e0bac8bed09d6663e17d30c2a113daecc791e8d1","kind":"commit","published_at":"2025-09-27T15:03:59.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/state_machines/v0.100.3","html_url":"https://github.com/state-machines/state_machines/releases/tag/state_machines/v0.100.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@state_machines%2Fv0.100.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.100.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.100.3/manifests"},{"name":"v0.100.2","sha":"e90f771e3cfe3d93c6e38752d1406dcddd7f679c","kind":"tag","published_at":"2025-09-12T17:46:10.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.100.2","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.100.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.100.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.100.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.100.2/manifests"},{"name":"state_machines/v0.100.2","sha":"ec6d8770421aee3d3530e2cbdb95d42724442801","kind":"commit","published_at":"2025-09-12T17:45:53.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/state_machines/v0.100.2","html_url":"https://github.com/state-machines/state_machines/releases/tag/state_machines/v0.100.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@state_machines%2Fv0.100.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.100.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.100.2/manifests"},{"name":"v0.100.1","sha":"aec5cd1440fbd91a4f5049fb4475a0f63c7b2a6c","kind":"tag","published_at":"2025-07-25T12:50:31.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.100.1","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.100.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.100.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.100.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.100.1/manifests"},{"name":"state_machines/v0.100.1","sha":"dc410f8a84d2554454180559b1ab55fe406c5ea5","kind":"commit","published_at":"2025-07-25T12:44:43.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/state_machines/v0.100.1","html_url":"https://github.com/state-machines/state_machines/releases/tag/state_machines/v0.100.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@state_machines%2Fv0.100.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.100.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.100.1/manifests"},{"name":"v0.100.0","sha":"9ac9b86869ff1c853e9bd0271ab087babc39446a","kind":"tag","published_at":"2025-07-17T02:50:49.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.100.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.100.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.100.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.100.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.100.0/manifests"},{"name":"state_machines/v0.100.0","sha":"15e2a097db3ea9d203b42fc4f8f5c856ad584361","kind":"commit","published_at":"2025-07-16T22:49:04.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/state_machines/v0.100.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/state_machines/v0.100.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@state_machines%2Fv0.100.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.100.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.100.0/manifests"},{"name":"v0.50.0","sha":"a5d4b4c589eed2c37329085b66f91cf11ac7181d","kind":"tag","published_at":"2025-07-12T18:43:05.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.50.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.50.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.50.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.50.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.50.0/manifests"},{"name":"state_machines/v0.50.0","sha":"ba17e0e1af162bb2af52ebc8253136bb99a8188f","kind":"commit","published_at":"2025-07-12T18:37:27.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/state_machines/v0.50.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/state_machines/v0.50.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@state_machines%2Fv0.50.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.50.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.50.0/manifests"},{"name":"v0.40.0","sha":"fe7f908ac0a9904736277f333c89781349df4698","kind":"tag","published_at":"2025-07-12T12:59:25.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.40.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.40.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.40.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.40.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.40.0/manifests"},{"name":"state_machines/v0.40.0","sha":"53a492a9fda5fe29877729f23c951b3184e97ffe","kind":"commit","published_at":"2025-07-12T12:58:10.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/state_machines/v0.40.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/state_machines/v0.40.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@state_machines%2Fv0.40.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.40.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.40.0/manifests"},{"name":"v0.31.0","sha":"d69a3ac621ee448efcf6902e100fd9d8ed3a6777","kind":"tag","published_at":"2025-06-29T16:02:19.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.31.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.31.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.31.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.31.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.31.0/manifests"},{"name":"state_machines/v0.31.0","sha":"d69a3ac621ee448efcf6902e100fd9d8ed3a6777","kind":"commit","published_at":"2025-06-29T16:02:07.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/state_machines/v0.31.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/state_machines/v0.31.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@state_machines%2Fv0.31.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.31.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.31.0/manifests"},{"name":"v0.30.0","sha":"21dabf98c2ed5163d41210ecb5ed3cf29d679e1a","kind":"tag","published_at":"2025-06-19T09:48:40.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.30.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.30.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.30.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.30.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.30.0/manifests"},{"name":"state_machines/v0.30.0","sha":"4e59948a5459ffdafb71e5f7bdb4230d1e545c32","kind":"commit","published_at":"2025-06-19T09:46:04.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/state_machines/v0.30.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/state_machines/v0.30.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@state_machines%2Fv0.30.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.30.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.30.0/manifests"},{"name":"v0.20.0","sha":"740c1d2ffbd39e76778f70fed819db815bdf4c26","kind":"tag","published_at":"2025-06-17T20:22:23.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.20.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.20.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.20.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.20.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.20.0/manifests"},{"name":"state_machines/v0.20.0","sha":"740c1d2ffbd39e76778f70fed819db815bdf4c26","kind":"commit","published_at":"2025-06-17T20:22:09.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/state_machines/v0.20.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/state_machines/v0.20.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@state_machines%2Fv0.20.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.20.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.20.0/manifests"},{"name":"state_machines/v0.10.1","sha":"9093a2031052a653609625d1b06fe95d76750d2f","kind":"commit","published_at":"2025-06-16T10:48:46.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/state_machines/v0.10.1","html_url":"https://github.com/state-machines/state_machines/releases/tag/state_machines/v0.10.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@state_machines%2Fv0.10.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.10.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.10.1/manifests"},{"name":"v0.10.0","sha":"e9d8375b5a94ee859e52496f36a9120411ec08e5","kind":"tag","published_at":"2025-06-12T22:15:07.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.10.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.10.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.10.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.10.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.10.0/manifests"},{"name":"state_machines/v0.10.0","sha":"e9d8375b5a94ee859e52496f36a9120411ec08e5","kind":"commit","published_at":"2025-05-29T11:39:10.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/state_machines/v0.10.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/state_machines/v0.10.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@state_machines%2Fv0.10.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.10.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.10.0/manifests"},{"name":"v0.6.0","sha":"4747004917893dad56a3c13e565de879c0a87f0f","kind":"tag","published_at":"2023-06-30T16:51:16.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.6.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.6.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.6.0/manifests"},{"name":"v0.5.0","sha":"e60fe9600b53d94484c7a3431aad994fc6a1e9d3","kind":"tag","published_at":"2017-06-20T21:00:05.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.5.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.5.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.5.0/manifests"},{"name":"v0.4.0","sha":"14c03a60d125c5c772952cf38d1aa0581341b589","kind":"tag","published_at":"2015-06-18T11:19:02.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.4.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.4.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.4.0/manifests"},{"name":"v0.3.0","sha":"a0963b14671a6f6b99ec089b18143f435c78c6ae","kind":"tag","published_at":"2015-04-27T21:42:41.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.3.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.3.0/manifests"},{"name":"v0.2.2","sha":"af0001104d652c9df40793473305c2eadec381cd","kind":"tag","published_at":"2015-02-06T15:42:39.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.2.2","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.2.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.2.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.2.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.2.2/manifests"},{"name":"v0.2.1","sha":"2051b73ebd5b04662a15d0784dbde67af842862c","kind":"tag","published_at":"2015-02-04T18:19:18.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.2.1","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.2.1/manifests"},{"name":"v0.2.0","sha":"a176a6dae5379c63a89ed1b743f5e842d81c5cea","kind":"tag","published_at":"2015-01-30T21:22:01.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.2.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.2.0/manifests"},{"name":"v0.1.4","sha":"9fc3510ce6beedf152405da53b77c7142c63266d","kind":"tag","published_at":"2015-01-28T16:37:13.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.1.4","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.1.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.1.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.1.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.1.4/manifests"},{"name":"v0.1.3","sha":"413182d249c25b32c918a21b6b3c80f6350d9b67","kind":"tag","published_at":"2015-01-21T10:26:29.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.1.3","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.1.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.1.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.1.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.1.3/manifests"},{"name":"v0.1.2","sha":"d95af4609a64aaae63b0ec403d9a713df315af7f","kind":"tag","published_at":"2015-01-20T20:34:31.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.1.2","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.1.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.1.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.1.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.1.2/manifests"},{"name":"v0.1.1","sha":"e541d2acbf49f36ca49c5e344e3ec3dfe5e522e5","kind":"tag","published_at":"2015-01-20T12:17:28.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.1.1","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.1.1/manifests"},{"name":"v0.1.0","sha":"9a5d814ab2c9f3277e4e8a777e6e3d58cb3d1770","kind":"tag","published_at":"2015-01-04T03:07:55.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.1.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.1.0/manifests"}]},"repo_metadata_updated_at":"2026-04-20T04:02:28.066Z","dependent_packages_count":0,"downloads":179195509,"downloads_period":"total","dependent_repos_count":0,"rankings":{"downloads":0.13840381475514418,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":0.30546154428381433,"average":0.11096633975973963},"purl":"pkg:gem/state_machines?repository_url=https://gem.coop","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/rubygems/state_machines","docker_dependents_count":205,"docker_downloads_count":434270783,"usage_url":"https://repos.ecosyste.ms/usage/rubygems/state_machines","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/rubygems/state_machines/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2026-03-25T02:03:00.618Z","issues_count":63,"pull_requests_count":129,"avg_time_to_close_issue":27128005.098360654,"avg_time_to_close_pull_request":8893853.327433629,"issues_closed_count":61,"pull_requests_closed_count":113,"pull_request_authors_count":36,"issue_authors_count":51,"avg_comments_per_issue":3.5238095238095237,"avg_comments_per_pull_request":0.6434108527131783,"merged_pull_requests_count":98,"bot_issues_count":0,"bot_pull_requests_count":21,"past_year_issues_count":6,"past_year_pull_requests_count":73,"past_year_avg_time_to_close_issue":938306.0,"past_year_avg_time_to_close_pull_request":269247.1967213115,"past_year_issues_closed_count":6,"past_year_pull_requests_closed_count":61,"past_year_pull_request_authors_count":7,"past_year_issue_authors_count":5,"past_year_avg_comments_per_issue":8.0,"past_year_avg_comments_per_pull_request":0.3150684931506849,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":21,"past_year_merged_pull_requests_count":51,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/issues","maintainers":[{"login":"seuros","count":53,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/seuros"},{"login":"rosskevin","count":9,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/rosskevin"}],"active_maintainers":[{"login":"seuros","count":28,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/seuros"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/state_machines/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/state_machines/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/state_machines/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/state_machines/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/state_machines/codemeta","maintainers":[{"uuid":"27590","login":"seuros","name":null,"email":null,"url":null,"packages_count":76,"html_url":"https://gem.coop/profiles/seuros","role":null,"created_at":"2025-10-09T22:45:54.244Z","updated_at":"2025-10-09T22:45:54.244Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/maintainers/seuros/packages"},{"uuid":"47349","login":"rafaelfranca","name":null,"email":null,"url":null,"packages_count":107,"html_url":"https://gem.coop/profiles/rafaelfranca","role":null,"created_at":"2025-10-09T22:45:54.307Z","updated_at":"2025-10-09T22:45:54.307Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/maintainers/rafaelfranca/packages"},{"uuid":"71091","login":"rosskevin","name":null,"email":null,"url":null,"packages_count":12,"html_url":"https://gem.coop/profiles/rosskevin","role":null,"created_at":"2025-10-09T22:45:54.374Z","updated_at":"2025-10-09T22:45:54.374Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/maintainers/rosskevin/packages"}],"registry":{"name":"gem.coop","url":"https://gem.coop","ecosystem":"rubygems","default":false,"packages_count":190156,"maintainers_count":67407,"namespaces_count":0,"keywords_count":0,"github":"gem-coop","metadata":{"funded_packages_count":6507},"icon_url":"https://github.com/gem-coop.png","created_at":"2025-10-06T17:24:20.932Z","updated_at":"2026-04-03T06:45:05.763Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/namespaces"}},{"id":13751785,"name":"ruby-state-machines","ecosystem":"ubuntu","description":null,"homepage":"https://github.com/state-machines/state_machines","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/state-machines/state_machines","keywords_array":["universe/misc"],"namespace":"universe","versions_count":1,"first_release_published_at":"2026-02-13T07:23:25.510Z","latest_release_published_at":"2026-02-13T07:23:25.510Z","latest_release_number":"0.5.0-3","last_synced_at":"2026-03-13T14:25:30.732Z","created_at":"2026-02-13T07:23:25.323Z","updated_at":"2026-03-13T14:25:30.733Z","registry_url":"https://launchpad.net/ubuntu/+source/ruby-state-machines","install_command":"apt-get install ruby-state-machines","documentation_url":null,"metadata":{"component":"universe","architecture":"all","priority":"optional","binary":"ruby-state-machines","standards_version":"4.1.4","maintainer":"Debian Ruby Extras Maintainers \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"bundler, debhelper (\u003e= 11~), gem2deb, rake, ruby-minitest, ruby-minitest-reporters","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-02-13T07:23:26.049Z","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:deb/ubuntu/ruby-state-machines?arch=source\u0026distro=ubuntu-20.04\u0026repository_url=https://launchpad.net/ubuntu/focal","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/ubuntu/ruby-state-machines","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/ubuntu/ruby-state-machines","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/ubuntu/ruby-state-machines/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/packages/ruby-state-machines/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/packages/ruby-state-machines/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/packages/ruby-state-machines/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/packages/ruby-state-machines/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/packages/ruby-state-machines/codemeta","maintainers":[],"registry":{"name":"ubuntu-20.04","url":"https://launchpad.net/ubuntu/focal","ecosystem":"ubuntu","default":false,"packages_count":30789,"maintainers_count":0,"namespaces_count":4,"keywords_count":0,"github":"ubuntu","metadata":{"codename":"focal","funded_packages_count":142},"icon_url":"https://github.com/ubuntu.png","created_at":"2026-02-04T11:01:47.233Z","updated_at":"2026-04-01T06:53:15.590Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/namespaces"}},{"id":13606143,"name":"ruby-state-machines","ecosystem":"debian","description":null,"homepage":"https://github.com/state-machines/state_machines","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/state-machines/state_machines","keywords_array":["misc"],"namespace":"main","versions_count":1,"first_release_published_at":"2026-02-11T11:28:13.541Z","latest_release_published_at":"2026-02-11T11:28:13.541Z","latest_release_number":"0.5.0-3","last_synced_at":"2026-03-14T03:02:21.804Z","created_at":"2026-02-11T11:28:12.987Z","updated_at":"2026-03-14T03:02:21.804Z","registry_url":"https://tracker.debian.org/pkg/ruby-state-machines","install_command":"apt-get install ruby-state-machines","documentation_url":"https://packages.debian.org/buster/ruby-state-machines","metadata":{"component":"main","architecture":"all","priority":"optional","binary":"ruby-state-machines","standards_version":"4.1.4","maintainer":"Debian Ruby Extras Maintainers \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"bundler, debhelper (\u003e= 11~), gem2deb, rake, ruby-minitest, ruby-minitest-reporters","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-02-11T15:15:25.996Z","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:deb/debian/ruby-state-machines?arch=source\u0026distro=debian-10\u0026repository_url=https://packages.debian.org/buster","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/debian/ruby-state-machines","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/debian/ruby-state-machines","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/debian/ruby-state-machines/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/debian-10/packages/ruby-state-machines/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/debian-10/packages/ruby-state-machines/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-10/packages/ruby-state-machines/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-10/packages/ruby-state-machines/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/debian-10/packages/ruby-state-machines/codemeta","maintainers":[],"registry":{"name":"debian-10","url":"https://packages.debian.org/buster","ecosystem":"debian","default":false,"packages_count":28836,"maintainers_count":0,"namespaces_count":3,"keywords_count":915,"github":"debian","metadata":{"codename":"buster","mirror":"http://archive.debian.org/debian","funded_packages_count":81},"icon_url":"https://github.com/debian.png","created_at":"2026-02-04T11:01:50.156Z","updated_at":"2026-04-20T05:04:47.397Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-10/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/debian-10/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/debian-10/namespaces"}},{"id":13567237,"name":"ruby-state-machines","ecosystem":"ubuntu","description":null,"homepage":"https://github.com/state-machines/state_machines","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/state-machines/state_machines","keywords_array":["universe/misc"],"namespace":"universe","versions_count":1,"first_release_published_at":"2026-02-11T06:50:32.734Z","latest_release_published_at":"2026-02-11T06:50:32.734Z","latest_release_number":"0.5.0-3","last_synced_at":"2026-03-11T15:30:38.169Z","created_at":"2026-02-11T06:50:32.569Z","updated_at":"2026-03-11T15:30:38.169Z","registry_url":"https://launchpad.net/ubuntu/+source/ruby-state-machines","install_command":"apt-get install ruby-state-machines","documentation_url":null,"metadata":{"component":"universe","architecture":"all","priority":"optional","binary":"ruby-state-machines","standards_version":"4.1.4","maintainer":"Debian Ruby Extras Maintainers \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"bundler, debhelper (\u003e= 11~), gem2deb, rake, ruby-minitest, ruby-minitest-reporters","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-02-11T14:57:15.801Z","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:deb/ubuntu/ruby-state-machines?arch=source\u0026distro=ubuntu-23.04\u0026repository_url=https://launchpad.net/ubuntu/lunar","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/ubuntu/ruby-state-machines","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/ubuntu/ruby-state-machines","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/ubuntu/ruby-state-machines/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/packages/ruby-state-machines/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/packages/ruby-state-machines/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/packages/ruby-state-machines/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/packages/ruby-state-machines/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/packages/ruby-state-machines/codemeta","maintainers":[],"registry":{"name":"ubuntu-23.04","url":"https://launchpad.net/ubuntu/lunar","ecosystem":"ubuntu","default":false,"packages_count":36116,"maintainers_count":0,"namespaces_count":4,"keywords_count":0,"github":"ubuntu","metadata":{"codename":"lunar","mirror":"http://old-releases.ubuntu.com/ubuntu","funded_packages_count":99},"icon_url":"https://github.com/ubuntu.png","created_at":"2026-02-04T11:01:49.117Z","updated_at":"2026-04-01T06:53:19.375Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/namespaces"}},{"id":13805386,"name":"ruby-state-machines","ecosystem":"ubuntu","description":null,"homepage":"https://github.com/state-machines/state_machines","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/state-machines/state_machines","keywords_array":["universe/misc"],"namespace":"universe","versions_count":1,"first_release_published_at":"2026-02-13T18:33:52.105Z","latest_release_published_at":"2026-02-13T18:33:52.105Z","latest_release_number":"0.5.0-3","last_synced_at":"2026-03-14T08:13:55.843Z","created_at":"2026-02-13T18:33:51.847Z","updated_at":"2026-03-14T08:13:55.843Z","registry_url":"https://launchpad.net/ubuntu/+source/ruby-state-machines","install_command":"apt-get install ruby-state-machines","documentation_url":null,"metadata":{"component":"universe","architecture":"all","priority":"optional","binary":"ruby-state-machines","standards_version":"4.1.4","maintainer":"Debian Ruby Extras Maintainers \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"bundler, debhelper (\u003e= 11~), gem2deb, rake, ruby-minitest, ruby-minitest-reporters","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-02-13T18:33:52.706Z","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:deb/ubuntu/ruby-state-machines?arch=source\u0026distro=ubuntu-23.10\u0026repository_url=https://launchpad.net/ubuntu/mantic","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/ubuntu/ruby-state-machines","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/ubuntu/ruby-state-machines","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/ubuntu/ruby-state-machines/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/packages/ruby-state-machines/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/packages/ruby-state-machines/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/packages/ruby-state-machines/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/packages/ruby-state-machines/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/packages/ruby-state-machines/codemeta","maintainers":[],"registry":{"name":"ubuntu-23.10","url":"https://launchpad.net/ubuntu/mantic","ecosystem":"ubuntu","default":false,"packages_count":36642,"maintainers_count":0,"namespaces_count":4,"keywords_count":0,"github":"ubuntu","metadata":{"codename":"mantic","mirror":"http://old-releases.ubuntu.com/ubuntu","funded_packages_count":412},"icon_url":"https://github.com/ubuntu.png","created_at":"2026-02-04T11:01:48.636Z","updated_at":"2026-04-01T06:53:18.736Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/namespaces"}},{"id":309337,"name":"state_machines","ecosystem":"rubygems","description":"Adds support for creating state machines for attributes on any Ruby class","homepage":"https://github.com/state-machines/state_machines","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/state-machines/state_machines","keywords_array":[],"namespace":null,"versions_count":25,"first_release_published_at":"2014-04-27T22:03:15.236Z","latest_release_published_at":"2026-03-22T22:33:28.416Z","latest_release_number":"0.101.0","last_synced_at":"2026-04-21T01:00:58.340Z","created_at":"2022-04-06T11:19:18.516Z","updated_at":"2026-04-21T01:03:55.235Z","registry_url":"https://rubygems.org/gems/state_machines","install_command":"gem install state_machines -s https://rubygems.org","documentation_url":"http://www.rubydoc.info/gems/state_machines/","metadata":{"funding":null},"repo_metadata":{"id":16467117,"uuid":"19219215","full_name":"state-machines/state_machines","owner":"state-machines","description":"Adds support for creating state machines for attributes on any Ruby class","archived":false,"fork":false,"pushed_at":"2026-03-22T22:32:57.000Z","size":5577,"stargazers_count":867,"open_issues_count":1,"forks_count":99,"subscribers_count":17,"default_branch":"master","last_synced_at":"2026-04-09T06:03:43.208Z","etag":null,"topics":["ruby","state-machine"],"latest_commit_sha":null,"homepage":"https://github.com/state-machines/state_machines","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/state-machines.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2014-04-27T22:05:49.000Z","updated_at":"2026-04-07T12:52:34.000Z","dependencies_parsed_at":"2024-06-18T11:20:29.732Z","dependency_job_id":"f18c5d1d-ec5c-403c-805a-1a22e1ee9cdc","html_url":"https://github.com/state-machines/state_machines","commit_stats":{"total_commits":83,"total_committers":28,"mean_commits":"2.9642857142857144","dds":0.5662650602409638,"last_synced_commit":"e9f212ab0342494d2741008603be344d21c462ef"},"previous_names":[],"tags_count":37,"template":false,"template_full_name":null,"purl":"pkg:github/state-machines/state_machines","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/state-machines","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/sbom","scorecard":{"id":846711,"data":{"date":"2025-08-11","repo":{"name":"github.com/state-machines/state_machines","commit":"aec5cd1440fbd91a4f5049fb4475a0f63c7b2a6c"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.8,"checks":[{"name":"Code-Review","score":0,"reason":"Found 2/23 approved changesets -- score normalized to 0","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":"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":"Maintained","score":10,"reason":"30 commit(s) and 5 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/engines.yml:1","Warn: topLevel 'contents' permission set to 'write': .github/workflows/release.yml:10","Warn: no topLevel permission defined: .github/workflows/ruby.yml:1","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":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/engines.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/state-machines/state_machines/engines.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/engines.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/state-machines/state_machines/engines.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/engines.yml:32: update your workflow using https://app.stepsecurity.io/secureworkflow/state-machines/state_machines/engines.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/state-machines/state_machines/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/state-machines/state_machines/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ruby.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/state-machines/state_machines/ruby.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ruby.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/state-machines/state_machines/ruby.yml/master?enable=pin","Info:   0 out of   4 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":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"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":"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":"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":"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.txt:0","Info: FSF or OSI recognized license: MIT License: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"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 21 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-23T21:39:27.825Z","repository_id":16467117,"created_at":"2025-08-23T21:39:27.825Z","updated_at":"2025-08-23T21:39:27.825Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31990577,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T20:23:30.271Z","status":"ssl_error","status_checked_at":"2026-04-18T20:23:29.375Z","response_time":103,"last_error":"SSL_read: 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":"state-machines","name":"State Machines","uuid":"7613709","kind":"organization","description":"","email":null,"website":null,"location":"Antarctica","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/7613709?v=4","repositories_count":11,"last_synced_at":"2023-09-07T15:13:42.457Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/state-machines","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-08T03:31:12.890Z","updated_at":"2023-09-07T15:13:44.450Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/state-machines","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/state-machines/repositories"},"tags":[{"name":"v0.101.0","sha":"ba45958e0f8bac57d0a50f41cef4bb96afde85d4","kind":"tag","published_at":"2026-03-22T22:32:51.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.101.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.101.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.101.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.101.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.101.0/manifests"},{"name":"state_machines/v0.101.0","sha":"ba45958e0f8bac57d0a50f41cef4bb96afde85d4","kind":"commit","published_at":"2026-03-22T22:32:41.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/state_machines/v0.101.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/state_machines/v0.101.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@state_machines%2Fv0.101.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.101.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.101.0/manifests"},{"name":"v0.100.4","sha":"32405b0d1fe423300c01b40305b85ed1229f1df7","kind":"tag","published_at":"2025-10-14T02:40:19.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.100.4","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.100.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.100.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.100.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.100.4/manifests"},{"name":"state_machines/v0.100.4","sha":"32405b0d1fe423300c01b40305b85ed1229f1df7","kind":"commit","published_at":"2025-10-14T02:40:11.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/state_machines/v0.100.4","html_url":"https://github.com/state-machines/state_machines/releases/tag/state_machines/v0.100.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@state_machines%2Fv0.100.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.100.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.100.4/manifests"},{"name":"v0.100.3","sha":"668ebe327219d132804a8cd53da3f28e4841d68b","kind":"tag","published_at":"2025-10-14T02:39:44.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.100.3","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.100.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.100.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.100.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.100.3/manifests"},{"name":"state_machines/v0.100.3","sha":"e0bac8bed09d6663e17d30c2a113daecc791e8d1","kind":"commit","published_at":"2025-09-27T15:03:59.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/state_machines/v0.100.3","html_url":"https://github.com/state-machines/state_machines/releases/tag/state_machines/v0.100.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@state_machines%2Fv0.100.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.100.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.100.3/manifests"},{"name":"v0.100.2","sha":"e90f771e3cfe3d93c6e38752d1406dcddd7f679c","kind":"tag","published_at":"2025-09-12T17:46:10.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.100.2","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.100.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.100.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.100.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.100.2/manifests"},{"name":"state_machines/v0.100.2","sha":"ec6d8770421aee3d3530e2cbdb95d42724442801","kind":"commit","published_at":"2025-09-12T17:45:53.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/state_machines/v0.100.2","html_url":"https://github.com/state-machines/state_machines/releases/tag/state_machines/v0.100.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@state_machines%2Fv0.100.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.100.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.100.2/manifests"},{"name":"v0.100.1","sha":"aec5cd1440fbd91a4f5049fb4475a0f63c7b2a6c","kind":"tag","published_at":"2025-07-25T12:50:31.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.100.1","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.100.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.100.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.100.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.100.1/manifests"},{"name":"state_machines/v0.100.1","sha":"dc410f8a84d2554454180559b1ab55fe406c5ea5","kind":"commit","published_at":"2025-07-25T12:44:43.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/state_machines/v0.100.1","html_url":"https://github.com/state-machines/state_machines/releases/tag/state_machines/v0.100.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@state_machines%2Fv0.100.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.100.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.100.1/manifests"},{"name":"v0.100.0","sha":"9ac9b86869ff1c853e9bd0271ab087babc39446a","kind":"tag","published_at":"2025-07-17T02:50:49.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.100.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.100.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.100.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.100.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.100.0/manifests"},{"name":"state_machines/v0.100.0","sha":"15e2a097db3ea9d203b42fc4f8f5c856ad584361","kind":"commit","published_at":"2025-07-16T22:49:04.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/state_machines/v0.100.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/state_machines/v0.100.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@state_machines%2Fv0.100.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.100.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.100.0/manifests"},{"name":"v0.50.0","sha":"a5d4b4c589eed2c37329085b66f91cf11ac7181d","kind":"tag","published_at":"2025-07-12T18:43:05.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.50.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.50.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.50.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.50.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.50.0/manifests"},{"name":"state_machines/v0.50.0","sha":"ba17e0e1af162bb2af52ebc8253136bb99a8188f","kind":"commit","published_at":"2025-07-12T18:37:27.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/state_machines/v0.50.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/state_machines/v0.50.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@state_machines%2Fv0.50.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.50.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.50.0/manifests"},{"name":"v0.40.0","sha":"fe7f908ac0a9904736277f333c89781349df4698","kind":"tag","published_at":"2025-07-12T12:59:25.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.40.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.40.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.40.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.40.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.40.0/manifests"},{"name":"state_machines/v0.40.0","sha":"53a492a9fda5fe29877729f23c951b3184e97ffe","kind":"commit","published_at":"2025-07-12T12:58:10.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/state_machines/v0.40.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/state_machines/v0.40.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@state_machines%2Fv0.40.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.40.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.40.0/manifests"},{"name":"v0.31.0","sha":"d69a3ac621ee448efcf6902e100fd9d8ed3a6777","kind":"tag","published_at":"2025-06-29T16:02:19.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.31.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.31.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.31.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.31.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.31.0/manifests"},{"name":"state_machines/v0.31.0","sha":"d69a3ac621ee448efcf6902e100fd9d8ed3a6777","kind":"commit","published_at":"2025-06-29T16:02:07.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/state_machines/v0.31.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/state_machines/v0.31.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@state_machines%2Fv0.31.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.31.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.31.0/manifests"},{"name":"v0.30.0","sha":"21dabf98c2ed5163d41210ecb5ed3cf29d679e1a","kind":"tag","published_at":"2025-06-19T09:48:40.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.30.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.30.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.30.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.30.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.30.0/manifests"},{"name":"state_machines/v0.30.0","sha":"4e59948a5459ffdafb71e5f7bdb4230d1e545c32","kind":"commit","published_at":"2025-06-19T09:46:04.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/state_machines/v0.30.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/state_machines/v0.30.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@state_machines%2Fv0.30.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.30.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.30.0/manifests"},{"name":"v0.20.0","sha":"740c1d2ffbd39e76778f70fed819db815bdf4c26","kind":"tag","published_at":"2025-06-17T20:22:23.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.20.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.20.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.20.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.20.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.20.0/manifests"},{"name":"state_machines/v0.20.0","sha":"740c1d2ffbd39e76778f70fed819db815bdf4c26","kind":"commit","published_at":"2025-06-17T20:22:09.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/state_machines/v0.20.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/state_machines/v0.20.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@state_machines%2Fv0.20.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.20.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.20.0/manifests"},{"name":"state_machines/v0.10.1","sha":"9093a2031052a653609625d1b06fe95d76750d2f","kind":"commit","published_at":"2025-06-16T10:48:46.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/state_machines/v0.10.1","html_url":"https://github.com/state-machines/state_machines/releases/tag/state_machines/v0.10.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@state_machines%2Fv0.10.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.10.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.10.1/manifests"},{"name":"v0.10.0","sha":"e9d8375b5a94ee859e52496f36a9120411ec08e5","kind":"tag","published_at":"2025-06-12T22:15:07.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.10.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.10.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.10.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.10.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.10.0/manifests"},{"name":"state_machines/v0.10.0","sha":"e9d8375b5a94ee859e52496f36a9120411ec08e5","kind":"commit","published_at":"2025-05-29T11:39:10.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/state_machines/v0.10.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/state_machines/v0.10.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@state_machines%2Fv0.10.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.10.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.10.0/manifests"},{"name":"v0.6.0","sha":"4747004917893dad56a3c13e565de879c0a87f0f","kind":"tag","published_at":"2023-06-30T16:51:16.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.6.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.6.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.6.0/manifests"},{"name":"v0.5.0","sha":"e60fe9600b53d94484c7a3431aad994fc6a1e9d3","kind":"tag","published_at":"2017-06-20T21:00:05.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.5.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.5.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.5.0/manifests"},{"name":"v0.4.0","sha":"14c03a60d125c5c772952cf38d1aa0581341b589","kind":"tag","published_at":"2015-06-18T11:19:02.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.4.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.4.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.4.0/manifests"},{"name":"v0.3.0","sha":"a0963b14671a6f6b99ec089b18143f435c78c6ae","kind":"tag","published_at":"2015-04-27T21:42:41.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.3.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.3.0/manifests"},{"name":"v0.2.2","sha":"af0001104d652c9df40793473305c2eadec381cd","kind":"tag","published_at":"2015-02-06T15:42:39.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.2.2","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.2.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.2.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.2.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.2.2/manifests"},{"name":"v0.2.1","sha":"2051b73ebd5b04662a15d0784dbde67af842862c","kind":"tag","published_at":"2015-02-04T18:19:18.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.2.1","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.2.1/manifests"},{"name":"v0.2.0","sha":"a176a6dae5379c63a89ed1b743f5e842d81c5cea","kind":"tag","published_at":"2015-01-30T21:22:01.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.2.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.2.0/manifests"},{"name":"v0.1.4","sha":"9fc3510ce6beedf152405da53b77c7142c63266d","kind":"tag","published_at":"2015-01-28T16:37:13.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.1.4","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.1.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.1.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.1.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.1.4/manifests"},{"name":"v0.1.3","sha":"413182d249c25b32c918a21b6b3c80f6350d9b67","kind":"tag","published_at":"2015-01-21T10:26:29.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.1.3","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.1.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.1.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.1.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.1.3/manifests"},{"name":"v0.1.2","sha":"d95af4609a64aaae63b0ec403d9a713df315af7f","kind":"tag","published_at":"2015-01-20T20:34:31.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.1.2","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.1.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.1.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.1.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.1.2/manifests"},{"name":"v0.1.1","sha":"e541d2acbf49f36ca49c5e344e3ec3dfe5e522e5","kind":"tag","published_at":"2015-01-20T12:17:28.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.1.1","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.1.1/manifests"},{"name":"v0.1.0","sha":"9a5d814ab2c9f3277e4e8a777e6e3d58cb3d1770","kind":"tag","published_at":"2015-01-04T03:07:55.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.1.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.1.0/manifests"}]},"repo_metadata_updated_at":"2026-04-21T01:03:55.235Z","dependent_packages_count":26,"downloads":179229080,"downloads_period":"total","dependent_repos_count":2903,"rankings":{"downloads":0.11317893422241054,"dependent_repos_count":0.5837356853737135,"dependent_packages_count":0.923830019736622,"stargazers_count":2.0935315172667566,"forks_count":2.7993666439937113,"docker_downloads_count":0.36016547540727695,"average":1.1456347126667483},"purl":"pkg:gem/state_machines","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/rubygems/state_machines","docker_dependents_count":205,"docker_downloads_count":434270783,"usage_url":"https://repos.ecosyste.ms/usage/rubygems/state_machines","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/rubygems/state_machines/dependencies","status":null,"funding_links":[],"critical":true,"issue_metadata":{"last_synced_at":"2026-03-25T02:03:00.618Z","issues_count":63,"pull_requests_count":129,"avg_time_to_close_issue":27128005.098360654,"avg_time_to_close_pull_request":8893853.327433629,"issues_closed_count":61,"pull_requests_closed_count":113,"pull_request_authors_count":36,"issue_authors_count":51,"avg_comments_per_issue":3.5238095238095237,"avg_comments_per_pull_request":0.6434108527131783,"merged_pull_requests_count":98,"bot_issues_count":0,"bot_pull_requests_count":21,"past_year_issues_count":6,"past_year_pull_requests_count":73,"past_year_avg_time_to_close_issue":938306.0,"past_year_avg_time_to_close_pull_request":269247.1967213115,"past_year_issues_closed_count":6,"past_year_pull_requests_closed_count":61,"past_year_pull_request_authors_count":7,"past_year_issue_authors_count":5,"past_year_avg_comments_per_issue":8.0,"past_year_avg_comments_per_pull_request":0.3150684931506849,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":21,"past_year_merged_pull_requests_count":51,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/issues","maintainers":[{"login":"seuros","count":53,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/seuros"},{"login":"rosskevin","count":9,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/rosskevin"}],"active_maintainers":[{"login":"seuros","count":28,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/seuros"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/state_machines/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/state_machines/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/state_machines/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/state_machines/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/state_machines/codemeta","maintainers":[{"uuid":"47349","login":"rafaelfranca","name":null,"email":null,"url":null,"packages_count":120,"html_url":"https://rubygems.org/profiles/rafaelfranca","role":null,"created_at":"2022-11-09T09:52:39.607Z","updated_at":"2022-11-09T09:52:39.607Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/maintainers/rafaelfranca/packages"},{"uuid":"27590","login":"seuros","name":null,"email":null,"url":null,"packages_count":78,"html_url":"https://rubygems.org/profiles/seuros","role":null,"created_at":"2022-11-09T09:52:39.574Z","updated_at":"2022-11-09T09:52:39.574Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/maintainers/seuros/packages"},{"uuid":"71091","login":"rosskevin","name":null,"email":null,"url":null,"packages_count":12,"html_url":"https://rubygems.org/profiles/rosskevin","role":null,"created_at":"2022-11-09T09:52:39.621Z","updated_at":"2022-11-09T09:52:39.621Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/maintainers/rosskevin/packages"}],"registry":{"name":"rubygems.org","url":"https://rubygems.org","ecosystem":"rubygems","default":true,"packages_count":205305,"maintainers_count":68398,"namespaces_count":0,"keywords_count":0,"github":"rubygems","metadata":{"funded_packages_count":7260},"icon_url":"https://github.com/rubygems.png","created_at":"2022-04-04T15:19:23.446Z","updated_at":"2026-04-03T06:42:17.024Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/namespaces"}},{"id":10437748,"name":"github.com/state-machines/state_machines","ecosystem":"go","description":null,"homepage":null,"licenses":"mit","normalized_licenses":["MIT"],"repository_url":"https://github.com/state-machines/state_machines","keywords_array":[],"namespace":null,"versions_count":24,"first_release_published_at":"2024-06-24T04:49:07.732Z","latest_release_published_at":"2026-03-22T22:32:41.000Z","latest_release_number":"v0.101.0","last_synced_at":"2026-04-07T05:01:18.182Z","created_at":"2024-06-24T04:48:41.818Z","updated_at":"2026-04-07T05:01:18.182Z","registry_url":"https://pkg.go.dev/github.com/state-machines/state_machines","install_command":"go get github.com/state-machines/state_machines","documentation_url":"https://pkg.go.dev/github.com/state-machines/state_machines#section-documentation","metadata":{},"repo_metadata":{"id":16467117,"uuid":"19219215","full_name":"state-machines/state_machines","owner":"state-machines","description":"Adds support for creating state machines for attributes on any Ruby class","archived":false,"fork":false,"pushed_at":"2025-09-27T15:04:15.000Z","size":855,"stargazers_count":850,"open_issues_count":1,"forks_count":96,"subscribers_count":17,"default_branch":"master","last_synced_at":"2025-10-05T11:05:49.033Z","etag":null,"topics":["ruby","state-machine"],"latest_commit_sha":null,"homepage":"https://github.com/state-machines/state_machines","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/state-machines.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2014-04-27T22:05:49.000Z","updated_at":"2025-09-29T19:15:01.000Z","dependencies_parsed_at":"2024-06-18T11:20:29.732Z","dependency_job_id":"f18c5d1d-ec5c-403c-805a-1a22e1ee9cdc","html_url":"https://github.com/state-machines/state_machines","commit_stats":{"total_commits":83,"total_committers":28,"mean_commits":"2.9642857142857144","dds":0.5662650602409638,"last_synced_commit":"e9f212ab0342494d2741008603be344d21c462ef"},"previous_names":[],"tags_count":32,"template":false,"template_full_name":null,"purl":"pkg:github/state-machines/state_machines","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/state-machines","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/sbom","scorecard":{"id":846711,"data":{"date":"2025-08-11","repo":{"name":"github.com/state-machines/state_machines","commit":"aec5cd1440fbd91a4f5049fb4475a0f63c7b2a6c"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.8,"checks":[{"name":"Code-Review","score":0,"reason":"Found 2/23 approved changesets -- score normalized to 0","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":"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":"Maintained","score":10,"reason":"30 commit(s) and 5 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/engines.yml:1","Warn: topLevel 'contents' permission set to 'write': .github/workflows/release.yml:10","Warn: no topLevel permission defined: .github/workflows/ruby.yml:1","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":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/engines.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/state-machines/state_machines/engines.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/engines.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/state-machines/state_machines/engines.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/engines.yml:32: update your workflow using https://app.stepsecurity.io/secureworkflow/state-machines/state_machines/engines.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/state-machines/state_machines/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/state-machines/state_machines/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ruby.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/state-machines/state_machines/ruby.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ruby.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/state-machines/state_machines/ruby.yml/master?enable=pin","Info:   0 out of   4 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":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"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":"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":"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":"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.txt:0","Info: FSF or OSI recognized license: MIT License: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"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 21 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-23T21:39:27.825Z","repository_id":16467117,"created_at":"2025-08-23T21:39:27.825Z","updated_at":"2025-08-23T21:39:27.825Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278444552,"owners_count":25987790,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-05T02:00:06.059Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":"state-machines","name":"State Machines","uuid":"7613709","kind":"organization","description":"","email":null,"website":null,"location":"Antarctica","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/7613709?v=4","repositories_count":11,"last_synced_at":"2023-09-07T15:13:42.457Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/state-machines","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-08T03:31:12.890Z","updated_at":"2023-09-07T15:13:44.450Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/state-machines","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/state-machines/repositories"},"tags":[{"name":"state_machines/v0.100.3","sha":"e0bac8bed09d6663e17d30c2a113daecc791e8d1","kind":"commit","published_at":"2025-09-27T15:03:59.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/state_machines/v0.100.3","html_url":"https://github.com/state-machines/state_machines/releases/tag/state_machines/v0.100.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@state_machines%2Fv0.100.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.100.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.100.3/manifests"},{"name":"v0.100.2","sha":"e90f771e3cfe3d93c6e38752d1406dcddd7f679c","kind":"tag","published_at":"2025-09-12T17:46:10.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.100.2","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.100.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.100.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.100.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.100.2/manifests"},{"name":"state_machines/v0.100.2","sha":"ec6d8770421aee3d3530e2cbdb95d42724442801","kind":"commit","published_at":"2025-09-12T17:45:53.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/state_machines/v0.100.2","html_url":"https://github.com/state-machines/state_machines/releases/tag/state_machines/v0.100.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@state_machines%2Fv0.100.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.100.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.100.2/manifests"},{"name":"v0.100.1","sha":"aec5cd1440fbd91a4f5049fb4475a0f63c7b2a6c","kind":"tag","published_at":"2025-07-25T12:50:31.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.100.1","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.100.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.100.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.100.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.100.1/manifests"},{"name":"state_machines/v0.100.1","sha":"dc410f8a84d2554454180559b1ab55fe406c5ea5","kind":"commit","published_at":"2025-07-25T12:44:43.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/state_machines/v0.100.1","html_url":"https://github.com/state-machines/state_machines/releases/tag/state_machines/v0.100.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@state_machines%2Fv0.100.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.100.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.100.1/manifests"},{"name":"v0.100.0","sha":"9ac9b86869ff1c853e9bd0271ab087babc39446a","kind":"tag","published_at":"2025-07-17T02:50:49.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.100.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.100.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.100.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.100.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.100.0/manifests"},{"name":"state_machines/v0.100.0","sha":"15e2a097db3ea9d203b42fc4f8f5c856ad584361","kind":"commit","published_at":"2025-07-16T22:49:04.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/state_machines/v0.100.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/state_machines/v0.100.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@state_machines%2Fv0.100.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.100.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.100.0/manifests"},{"name":"v0.50.0","sha":"a5d4b4c589eed2c37329085b66f91cf11ac7181d","kind":"tag","published_at":"2025-07-12T18:43:05.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.50.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.50.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.50.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.50.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.50.0/manifests"},{"name":"state_machines/v0.50.0","sha":"ba17e0e1af162bb2af52ebc8253136bb99a8188f","kind":"commit","published_at":"2025-07-12T18:37:27.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/state_machines/v0.50.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/state_machines/v0.50.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@state_machines%2Fv0.50.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.50.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.50.0/manifests"},{"name":"v0.40.0","sha":"fe7f908ac0a9904736277f333c89781349df4698","kind":"tag","published_at":"2025-07-12T12:59:25.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.40.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.40.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.40.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.40.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.40.0/manifests"},{"name":"state_machines/v0.40.0","sha":"53a492a9fda5fe29877729f23c951b3184e97ffe","kind":"commit","published_at":"2025-07-12T12:58:10.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/state_machines/v0.40.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/state_machines/v0.40.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@state_machines%2Fv0.40.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.40.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.40.0/manifests"},{"name":"v0.31.0","sha":"d69a3ac621ee448efcf6902e100fd9d8ed3a6777","kind":"tag","published_at":"2025-06-29T16:02:19.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.31.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.31.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.31.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.31.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.31.0/manifests"},{"name":"state_machines/v0.31.0","sha":"d69a3ac621ee448efcf6902e100fd9d8ed3a6777","kind":"commit","published_at":"2025-06-29T16:02:07.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/state_machines/v0.31.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/state_machines/v0.31.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@state_machines%2Fv0.31.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.31.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.31.0/manifests"},{"name":"v0.30.0","sha":"21dabf98c2ed5163d41210ecb5ed3cf29d679e1a","kind":"tag","published_at":"2025-06-19T09:48:40.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.30.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.30.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.30.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.30.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.30.0/manifests"},{"name":"state_machines/v0.30.0","sha":"4e59948a5459ffdafb71e5f7bdb4230d1e545c32","kind":"commit","published_at":"2025-06-19T09:46:04.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/state_machines/v0.30.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/state_machines/v0.30.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@state_machines%2Fv0.30.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.30.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.30.0/manifests"},{"name":"v0.20.0","sha":"740c1d2ffbd39e76778f70fed819db815bdf4c26","kind":"tag","published_at":"2025-06-17T20:22:23.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.20.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.20.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.20.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.20.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.20.0/manifests"},{"name":"state_machines/v0.20.0","sha":"740c1d2ffbd39e76778f70fed819db815bdf4c26","kind":"commit","published_at":"2025-06-17T20:22:09.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/state_machines/v0.20.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/state_machines/v0.20.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@state_machines%2Fv0.20.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.20.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.20.0/manifests"},{"name":"state_machines/v0.10.1","sha":"9093a2031052a653609625d1b06fe95d76750d2f","kind":"commit","published_at":"2025-06-16T10:48:46.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/state_machines/v0.10.1","html_url":"https://github.com/state-machines/state_machines/releases/tag/state_machines/v0.10.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@state_machines%2Fv0.10.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.10.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.10.1/manifests"},{"name":"v0.10.0","sha":"e9d8375b5a94ee859e52496f36a9120411ec08e5","kind":"tag","published_at":"2025-06-12T22:15:07.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.10.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.10.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.10.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.10.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.10.0/manifests"},{"name":"state_machines/v0.10.0","sha":"e9d8375b5a94ee859e52496f36a9120411ec08e5","kind":"commit","published_at":"2025-05-29T11:39:10.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/state_machines/v0.10.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/state_machines/v0.10.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@state_machines%2Fv0.10.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.10.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/state_machines%2Fv0.10.0/manifests"},{"name":"v0.6.0","sha":"4747004917893dad56a3c13e565de879c0a87f0f","kind":"tag","published_at":"2023-06-30T16:51:16.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.6.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.6.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.6.0/manifests"},{"name":"v0.5.0","sha":"e60fe9600b53d94484c7a3431aad994fc6a1e9d3","kind":"tag","published_at":"2017-06-20T21:00:05.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.5.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.5.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.5.0/manifests"},{"name":"v0.4.0","sha":"14c03a60d125c5c772952cf38d1aa0581341b589","kind":"tag","published_at":"2015-06-18T11:19:02.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.4.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.4.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.4.0/manifests"},{"name":"v0.3.0","sha":"a0963b14671a6f6b99ec089b18143f435c78c6ae","kind":"tag","published_at":"2015-04-27T21:42:41.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.3.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.3.0/manifests"},{"name":"v0.2.2","sha":"af0001104d652c9df40793473305c2eadec381cd","kind":"tag","published_at":"2015-02-06T15:42:39.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.2.2","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.2.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.2.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.2.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.2.2/manifests"},{"name":"v0.2.1","sha":"2051b73ebd5b04662a15d0784dbde67af842862c","kind":"tag","published_at":"2015-02-04T18:19:18.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.2.1","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.2.1/manifests"},{"name":"v0.2.0","sha":"a176a6dae5379c63a89ed1b743f5e842d81c5cea","kind":"tag","published_at":"2015-01-30T21:22:01.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.2.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.2.0/manifests"},{"name":"v0.1.4","sha":"9fc3510ce6beedf152405da53b77c7142c63266d","kind":"tag","published_at":"2015-01-28T16:37:13.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.1.4","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.1.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.1.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.1.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.1.4/manifests"},{"name":"v0.1.3","sha":"413182d249c25b32c918a21b6b3c80f6350d9b67","kind":"tag","published_at":"2015-01-21T10:26:29.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.1.3","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.1.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.1.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.1.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.1.3/manifests"},{"name":"v0.1.2","sha":"d95af4609a64aaae63b0ec403d9a713df315af7f","kind":"tag","published_at":"2015-01-20T20:34:31.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.1.2","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.1.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.1.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.1.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.1.2/manifests"},{"name":"v0.1.1","sha":"e541d2acbf49f36ca49c5e344e3ec3dfe5e522e5","kind":"tag","published_at":"2015-01-20T12:17:28.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.1.1","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.1.1/manifests"},{"name":"v0.1.0","sha":"9a5d814ab2c9f3277e4e8a777e6e3d58cb3d1770","kind":"tag","published_at":"2015-01-04T03:07:55.000Z","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/v0.1.0","html_url":"https://github.com/state-machines/state_machines/releases/tag/v0.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/state-machines/state_machines@v0.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags/v0.1.0/manifests"}]},"repo_metadata_updated_at":"2025-10-05T11:19:44.778Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":6.885182916395525,"dependent_packages_count":6.4498933562841545,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":6.667538136339839},"purl":"pkg:golang/github.com/state-machines/state_machines","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/go/github.com/state-machines/state_machines","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/go/github.com/state-machines/state_machines","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/go/github.com/state-machines/state_machines/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-10-01T02:00:16.986Z","issues_count":63,"pull_requests_count":124,"avg_time_to_close_issue":27109641.98360656,"avg_time_to_close_pull_request":9215948.357798165,"issues_closed_count":61,"pull_requests_closed_count":109,"pull_request_authors_count":34,"issue_authors_count":51,"avg_comments_per_issue":3.2857142857142856,"avg_comments_per_pull_request":0.6451612903225806,"merged_pull_requests_count":96,"bot_issues_count":0,"bot_pull_requests_count":20,"past_year_issues_count":8,"past_year_pull_requests_count":76,"past_year_avg_time_to_close_issue":969818.5,"past_year_avg_time_to_close_pull_request":277234.68253968254,"past_year_issues_closed_count":8,"past_year_pull_requests_closed_count":63,"past_year_pull_request_authors_count":6,"past_year_issue_authors_count":7,"past_year_avg_comments_per_issue":4.25,"past_year_avg_comments_per_pull_request":0.27631578947368424,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":20,"past_year_merged_pull_requests_count":55,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/issues","maintainers":[{"login":"seuros","count":52,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/seuros"},{"login":"rosskevin","count":9,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/rosskevin"}],"active_maintainers":[{"login":"seuros","count":41,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/seuros"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fstate-machines%2Fstate_machines/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fstate-machines%2Fstate_machines/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fstate-machines%2Fstate_machines/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fstate-machines%2Fstate_machines/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fstate-machines%2Fstate_machines/codemeta","maintainers":[],"registry":{"name":"proxy.golang.org","url":"https://proxy.golang.org","ecosystem":"go","default":true,"packages_count":2103565,"maintainers_count":0,"namespaces_count":782439,"keywords_count":112823,"github":"golang","metadata":{"funded_packages_count":53495},"icon_url":"https://github.com/golang.png","created_at":"2022-04-04T15:19:22.939Z","updated_at":"2026-04-19T05:14:45.920Z","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"}},{"id":13467335,"name":"ruby-state-machines","ecosystem":"ubuntu","description":null,"homepage":"https://github.com/state-machines/state_machines","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/state-machines/state_machines","keywords_array":["universe/misc"],"namespace":"universe","versions_count":1,"first_release_published_at":"2026-02-09T17:22:34.373Z","latest_release_published_at":"2026-02-09T17:22:34.373Z","latest_release_number":"0.6.0-1","last_synced_at":"2026-03-09T18:23:07.450Z","created_at":"2026-02-09T17:22:33.902Z","updated_at":"2026-03-09T18:32:55.441Z","registry_url":"https://launchpad.net/ubuntu/+source/ruby-state-machines","install_command":"apt-get install ruby-state-machines","documentation_url":null,"metadata":{"component":"universe","architecture":"all","priority":"optional","binary":"ruby-state-machines","standards_version":"4.7.0","maintainer":"Debian Ruby Team \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"bundler, debhelper-compat (= 13), gem2deb, rake, ruby-minitest, ruby-minitest-reporters","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":null,"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:deb/ubuntu/ruby-state-machines?arch=source\u0026distro=ubuntu-24.10\u0026repository_url=https://launchpad.net/ubuntu/oracular","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/ubuntu/ruby-state-machines","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/ubuntu/ruby-state-machines","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/ubuntu/ruby-state-machines/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/packages/ruby-state-machines/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/packages/ruby-state-machines/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/packages/ruby-state-machines/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/packages/ruby-state-machines/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/packages/ruby-state-machines/codemeta","maintainers":[],"registry":{"name":"ubuntu-24.10","url":"https://launchpad.net/ubuntu/oracular","ecosystem":"ubuntu","default":false,"packages_count":38437,"maintainers_count":0,"namespaces_count":4,"keywords_count":0,"github":"ubuntu","metadata":{"codename":"oracular","mirror":"http://old-releases.ubuntu.com/ubuntu","funded_packages_count":177},"icon_url":"https://github.com/ubuntu.png","created_at":"2026-02-04T11:01:48.028Z","updated_at":"2026-03-31T06:41:18.525Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/namespaces"}},{"id":13713412,"name":"ruby-state-machines","ecosystem":"debian","description":null,"homepage":"https://github.com/state-machines/state_machines","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/state-machines/state_machines","keywords_array":["misc"],"namespace":"main","versions_count":1,"first_release_published_at":"2026-02-12T23:42:20.255Z","latest_release_published_at":"2026-02-12T23:42:20.255Z","latest_release_number":"0.5.0-3","last_synced_at":"2026-03-13T23:47:17.581Z","created_at":"2026-02-12T23:42:20.033Z","updated_at":"2026-03-14T00:02:13.516Z","registry_url":"https://tracker.debian.org/pkg/ruby-state-machines","install_command":"apt-get install ruby-state-machines","documentation_url":"https://packages.debian.org/bookworm/ruby-state-machines","metadata":{"component":"main","architecture":"all","priority":"optional","binary":"ruby-state-machines","standards_version":"4.1.4","maintainer":"Debian Ruby Extras Maintainers \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"bundler, debhelper (\u003e= 11~), gem2deb, rake, ruby-minitest, ruby-minitest-reporters","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-02-12T23:42:20.851Z","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:deb/debian/ruby-state-machines?arch=source\u0026distro=debian-12","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/debian/ruby-state-machines","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/debian/ruby-state-machines","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/debian/ruby-state-machines/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/packages/ruby-state-machines/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/packages/ruby-state-machines/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/packages/ruby-state-machines/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/packages/ruby-state-machines/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/packages/ruby-state-machines/codemeta","maintainers":[],"registry":{"name":"debian-12","url":"https://packages.debian.org/bookworm","ecosystem":"debian","default":true,"packages_count":34734,"maintainers_count":0,"namespaces_count":4,"keywords_count":0,"github":"debian","metadata":{"codename":"bookworm","funded_packages_count":364},"icon_url":"https://github.com/debian.png","created_at":"2026-02-04T11:01:49.459Z","updated_at":"2026-04-01T06:53:23.701Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/namespaces"}},{"id":13721861,"name":"ruby-state-machines","ecosystem":"ubuntu","description":null,"homepage":"https://github.com/state-machines/state_machines","licenses":"mit","normalized_licenses":["MIT"],"repository_url":"https://github.com/state-machines/state_machines","keywords_array":["universe/misc"],"namespace":"universe","versions_count":1,"first_release_published_at":"2026-02-13T01:03:26.667Z","latest_release_published_at":"2026-02-13T01:03:26.667Z","latest_release_number":"0.5.0-3","last_synced_at":"2026-03-13T04:14:26.596Z","created_at":"2026-02-13T01:03:26.443Z","updated_at":"2026-03-13T04:14:26.776Z","registry_url":"https://launchpad.net/ubuntu/+source/ruby-state-machines","install_command":"apt-get install ruby-state-machines","documentation_url":null,"metadata":{"component":"universe","architecture":"all","priority":"optional","binary":"ruby-state-machines","standards_version":"4.1.4","maintainer":"Debian Ruby Extras Maintainers \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"bundler, debhelper (\u003e= 11~), gem2deb, rake, ruby-minitest, ruby-minitest-reporters","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{"id":16467117,"uuid":"19219215","full_name":"state-machines/state_machines","owner":"state-machines","description":"Adds support for creating state machines for attributes on any Ruby class","archived":false,"fork":false,"pushed_at":"2026-01-06T12:21:43.000Z","size":5559,"stargazers_count":862,"open_issues_count":1,"forks_count":96,"subscribers_count":17,"default_branch":"master","last_synced_at":"2026-02-11T02:42:58.202Z","etag":null,"topics":["ruby","state-machine"],"latest_commit_sha":null,"homepage":"https://github.com/state-machines/state_machines","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/state-machines.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2014-04-27T22:05:49.000Z","updated_at":"2026-01-14T11:52:20.000Z","dependencies_parsed_at":"2024-06-18T11:20:29.732Z","dependency_job_id":"f18c5d1d-ec5c-403c-805a-1a22e1ee9cdc","html_url":"https://github.com/state-machines/state_machines","commit_stats":{"total_commits":83,"total_committers":28,"mean_commits":"2.9642857142857144","dds":0.5662650602409638,"last_synced_commit":"e9f212ab0342494d2741008603be344d21c462ef"},"previous_names":[],"tags_count":35,"template":false,"template_full_name":null,"purl":"pkg:github/state-machines/state_machines","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/state-machines","download_url":"https://codeload.github.com/state-machines/state_machines/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/sbom","scorecard":{"id":846711,"data":{"date":"2025-08-11","repo":{"name":"github.com/state-machines/state_machines","commit":"aec5cd1440fbd91a4f5049fb4475a0f63c7b2a6c"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.8,"checks":[{"name":"Code-Review","score":0,"reason":"Found 2/23 approved changesets -- score normalized to 0","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":"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":"Maintained","score":10,"reason":"30 commit(s) and 5 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/engines.yml:1","Warn: topLevel 'contents' permission set to 'write': .github/workflows/release.yml:10","Warn: no topLevel permission defined: .github/workflows/ruby.yml:1","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":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/engines.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/state-machines/state_machines/engines.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/engines.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/state-machines/state_machines/engines.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/engines.yml:32: update your workflow using https://app.stepsecurity.io/secureworkflow/state-machines/state_machines/engines.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/state-machines/state_machines/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/state-machines/state_machines/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ruby.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/state-machines/state_machines/ruby.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ruby.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/state-machines/state_machines/ruby.yml/master?enable=pin","Info:   0 out of   4 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":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"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":"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":"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":"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.txt:0","Info: FSF or OSI recognized license: MIT License: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"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 21 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-23T21:39:27.825Z","repository_id":16467117,"created_at":"2025-08-23T21:39:27.825Z","updated_at":"2025-08-23T21:39:27.825Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29390723,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-13T00:53:09.511Z","status":"ssl_error","status_checked_at":"2026-02-13T00:53:09.126Z","response_time":55,"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-02-13T01:04:01.223Z","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:deb/ubuntu/ruby-state-machines?arch=source\u0026distro=ubuntu-24.04","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/ubuntu/ruby-state-machines","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/ubuntu/ruby-state-machines","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/ubuntu/ruby-state-machines/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2026-01-06T15:01:50.134Z","issues_count":63,"pull_requests_count":128,"avg_time_to_close_issue":27128005.098360654,"avg_time_to_close_pull_request":8893853.327433629,"issues_closed_count":61,"pull_requests_closed_count":113,"pull_request_authors_count":35,"issue_authors_count":51,"avg_comments_per_issue":3.5238095238095237,"avg_comments_per_pull_request":0.6484375,"merged_pull_requests_count":98,"bot_issues_count":0,"bot_pull_requests_count":21,"past_year_issues_count":8,"past_year_pull_requests_count":80,"past_year_avg_time_to_close_issue":1109837.25,"past_year_avg_time_to_close_pull_request":267654.32835820894,"past_year_issues_closed_count":8,"past_year_pull_requests_closed_count":67,"past_year_pull_request_authors_count":7,"past_year_issue_authors_count":7,"past_year_avg_comments_per_issue":6.125,"past_year_avg_comments_per_pull_request":0.3,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":21,"past_year_merged_pull_requests_count":57,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/issues","maintainers":[{"login":"seuros","count":53,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/seuros"},{"login":"rosskevin","count":9,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/rosskevin"}],"active_maintainers":[{"login":"seuros","count":42,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/seuros"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/packages/ruby-state-machines/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/packages/ruby-state-machines/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/packages/ruby-state-machines/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/packages/ruby-state-machines/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/packages/ruby-state-machines/codemeta","maintainers":[],"registry":{"name":"ubuntu-24.04","url":"https://launchpad.net/ubuntu/noble","ecosystem":"ubuntu","default":true,"packages_count":37306,"maintainers_count":0,"namespaces_count":4,"keywords_count":0,"github":"ubuntu","metadata":{"codename":"noble","funded_packages_count":161},"icon_url":"https://github.com/ubuntu.png","created_at":"2026-02-04T11:01:45.928Z","updated_at":"2026-04-01T06:53:16.927Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/namespaces"}},{"id":13669593,"name":"ruby-state-machines","ecosystem":"debian","description":null,"homepage":"https://github.com/state-machines/state_machines","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/state-machines/state_machines","keywords_array":["misc"],"namespace":"main","versions_count":1,"first_release_published_at":"2026-02-12T12:44:56.853Z","latest_release_published_at":"2026-02-12T12:44:56.853Z","latest_release_number":"0.6.0-1","last_synced_at":"2026-03-14T18:11:35.149Z","created_at":"2026-02-12T12:44:56.384Z","updated_at":"2026-03-14T18:11:35.149Z","registry_url":"https://tracker.debian.org/pkg/ruby-state-machines","install_command":"apt-get install ruby-state-machines","documentation_url":"https://packages.debian.org/trixie/ruby-state-machines","metadata":{"component":"main","architecture":"all","priority":"optional","binary":"ruby-state-machines","standards_version":"4.7.0","maintainer":"Debian Ruby Team \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"bundler, debhelper-compat (= 13), gem2deb, rake, ruby-minitest, ruby-minitest-reporters","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-02-12T12:44:57.438Z","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:deb/debian/ruby-state-machines?arch=source\u0026distro=debian-13\u0026repository_url=https://packages.debian.org/trixie","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/debian/ruby-state-machines","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/debian/ruby-state-machines","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/debian/ruby-state-machines/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/packages/ruby-state-machines/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/packages/ruby-state-machines/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/packages/ruby-state-machines/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/packages/ruby-state-machines/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/packages/ruby-state-machines/codemeta","maintainers":[],"registry":{"name":"debian-13","url":"https://packages.debian.org/trixie","ecosystem":"debian","default":false,"packages_count":38024,"maintainers_count":0,"namespaces_count":4,"keywords_count":0,"github":"debian","metadata":{"codename":"trixie","funded_packages_count":282},"icon_url":"https://github.com/debian.png","created_at":"2026-02-04T11:01:50.448Z","updated_at":"2026-03-31T06:41:13.743Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/namespaces"}}],"commits":{"id":19555,"full_name":"state-machines/state_machines","default_branch":"master","total_commits":160,"total_committers":36,"total_bot_commits":13,"total_bot_committers":1,"mean_commits":4.444444444444445,"dds":0.50625,"past_year_total_commits":60,"past_year_total_committers":7,"past_year_total_bot_commits":13,"past_year_total_bot_committers":1,"past_year_mean_commits":8.571428571428571,"past_year_dds":0.5166666666666666,"last_synced_at":"2026-04-20T04:05:14.599Z","last_synced_commit":"12eb5bccf630cde7df4fa3e101a37b66dcde501d","created_at":"2023-03-07T11:41:26.773Z","updated_at":"2026-04-20T04:04:43.237Z","committers":[{"name":"Abdelkader Boudih","email":"terminale@gmail.com","login":"seuros","count":79},{"name":"github-actions[bot]","email":"41898282+github-actions[bot]","login":"github-actions[bot]","count":13},{"name":"GitHub Action","email":"action@github.com","login":"actions-user","count":12},{"name":"Kevin Ross","email":"kevin.ross@alienfast.com","login":"rosskevin","count":7},{"name":"Rafael Mendonça França","email":"rafaelmfranca@gmail.com","login":"rafaelfranca","count":5},{"name":"Washington Luiz","email":"huoxito@gmail.com","login":"huoxito","count":4},{"name":"Ivan Povalyukhin","email":"ivanpoval@gmail.com","login":"ipoval","count":3},{"name":"Ryan Schlesinger","email":"ryan@ryanschlesinger.com","login":"ryansch","count":3},{"name":"Jean Boussier","email":"jean.boussier@gmail.com","login":"byroot","count":2},{"name":"Jonas S","email":"jonas_s@posteo.de","login":"rocket-turtle","count":2},{"name":"Malo Skrylevo","email":"majioa@yandex.ru","login":"majioa","count":2},{"name":"Mohamed Alouane","email":"flahweb@gmail.com","login":"alouanemed","count":2},{"name":"Olle Jonsson","email":"olle.jonsson@gmail.com","login":"olleolleolle","count":2},{"name":"Peter Goldstein","email":"peter.m.goldstein@gmail.com","login":"petergoldstein","count":2},{"name":"Alex Gornov","email":"Zmokizmoghi","login":"Zmokizmoghi","count":1},{"name":"Alex Ghiculescu","email":"alex@tanda.co","login":"ghiculescu","count":1},{"name":"Matheus Santana","email":"matheus@guava.com.br","login":null,"count":1},{"name":"Konstantin Delchev","email":"konstantin.delchev@shore.com","login":null,"count":1},{"name":"jeff-hamm","email":"jeff.hamm@gmail.com","login":"jeff-hamm","count":1},{"name":"danhodge","email":"dan@swipely.com","login":"danhodge","count":1},{"name":"Vasily Kolesnikov","email":"re.vkolesnikov@gmail.com","login":"v-kolesnikov","count":1},{"name":"Tony Marklove","email":"tony@fluxbit.co.uk","login":"tonymarklove","count":1},{"name":"Tobias L. Maier","email":"me@tobiasmaier.info","login":"tmaier","count":1},{"name":"Stan Hu","email":"stanhu@gmail.com","login":"stanhu","count":1},{"name":"Simon Claessens","email":"gagalago@gmail.com","login":"gagalago","count":1},{"name":"Philihp Busby","email":"philihp@gmail.com","login":"philihp","count":1},{"name":"Omar Ahmed","email":"neb.trx@gmail.com","login":"nebtrx","count":1},{"name":"Kevin Newton","email":"kddnewton@gmail.com","login":"kddnewton","count":1},{"name":"Karl Falconer","email":"karl.falconer@falconerdevelopment.com","login":"kfalconer","count":1},{"name":"Julio AG","email":"julio.antequera.galiano@gmail.com","login":"julitrows","count":1},{"name":"Eric Guo","email":"eric.guo@sandisk.com","login":"Eric-Guo","count":1},{"name":"Daniele Palombo","email":"ksemuldie@gmail.com","login":"DanielePalombo","count":1},{"name":"Cédric Boutillier","email":"boutil@debian.org","login":"boutil","count":1},{"name":"Christoph Olszowka","email":"colszowka","login":"colszowka","count":1},{"name":"Brandon Conway","email":"brandoncc@gmail.com","login":"brandoncc","count":1},{"name":"Bohdan Nikolaienko","email":"bohdan.nikolaienko@yalantis.com","login":"23shortstop","count":1}],"past_year_committers":[{"name":"Abdelkader Boudih","email":"terminale@gmail.com","login":"seuros","count":29},{"name":"github-actions[bot]","email":"41898282+github-actions[bot]","login":"github-actions[bot]","count":13},{"name":"GitHub Action","email":"action@github.com","login":"actions-user","count":12},{"name":"Ryan Schlesinger","email":"ryan@ryanschlesinger.com","login":"ryansch","count":3},{"name":"Stan Hu","email":"stanhu@gmail.com","login":"stanhu","count":1},{"name":"Kevin Newton","email":"kddnewton@gmail.com","login":"kddnewton","count":1},{"name":"Christoph Olszowka","email":"colszowka","login":"colszowka","count":1}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-21T00:00:07.949Z","repositories_count":6215268,"commits_count":899447002,"contributors_count":34906382,"owners_count":1143777,"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":"state-machines/state_machines","html_url":"https://github.com/state-machines/state_machines","last_synced_at":"2026-03-25T02:03:00.618Z","status":"error","issues_count":63,"pull_requests_count":129,"avg_time_to_close_issue":27128005.098360654,"avg_time_to_close_pull_request":8893853.327433629,"issues_closed_count":61,"pull_requests_closed_count":113,"pull_request_authors_count":36,"issue_authors_count":51,"avg_comments_per_issue":3.5238095238095237,"avg_comments_per_pull_request":0.6434108527131783,"merged_pull_requests_count":98,"bot_issues_count":0,"bot_pull_requests_count":21,"past_year_issues_count":6,"past_year_pull_requests_count":73,"past_year_avg_time_to_close_issue":938306.0,"past_year_avg_time_to_close_pull_request":269247.1967213115,"past_year_issues_closed_count":6,"past_year_pull_requests_closed_count":61,"past_year_pull_request_authors_count":7,"past_year_issue_authors_count":5,"past_year_avg_comments_per_issue":8.0,"past_year_avg_comments_per_pull_request":0.3150684931506849,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":21,"past_year_merged_pull_requests_count":51,"created_at":"2023-05-12T17:50:31.285Z","updated_at":"2026-03-25T02:03:00.618Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/state-machines%2Fstate_machines/issues","issue_labels_count":{"enhancement":3,"question":3},"pull_request_labels_count":{"autorelease: pending":9,"autorelease: tagged":8},"issue_author_associations_count":{"NONE":53,"MEMBER":6,"CONTRIBUTOR":4},"pull_request_author_associations_count":{"MEMBER":56,"CONTRIBUTOR":54,"NONE":19},"issue_authors":{"rosskevin":6,"vanboom":3,"ghost":2,"tmaier":2,"espen":2,"dmlond":2,"neumachen":2,"nburt":1,"Tuhaj":1,"JohnSmall":1,"oehlschl":1,"logicminds":1,"daslicious":1,"gustavogsimas":1,"nir0":1,"imranmalik":1,"arches":1,"pragmaticivan":1,"gagalago":1,"jjb":1,"AdamMusa":1,"sbishep":1,"magni-":1,"disastrous-charly":1,"dylan-hoefsloot":1,"SirRawlins":1,"ryancheung":1,"Janther":1,"julitrows":1,"lyden29":1,"QQDengWangF":1,"colszowka":1,"rocket-turtle":1,"tonyvince":1,"NielsKSchjoedt":1,"pendletons":1,"tquackenbush":1,"johannesluedke":1,"balancedcomp":1,"Papipo":1,"epinault":1,"seliverstov-maxim":1,"thiagoliof":1,"robert-sutton":1,"UnderpantsGnome":1,"samstickland":1,"greggawatt":1,"jankeesvw":1,"jponc":1,"kevintraver":1,"obfuscoder":1},"pull_request_authors":{"seuros":53,"github-actions[bot]":21,"ryansch":8,"rocket-turtle":4,"rosskevin":3,"huoxito":3,"ristovskiv":2,"alouanemed":2,"casperisfine":2,"olleolleolle":2,"boutil":2,"tmaier":2,"Copilot":2,"majioa":1,"jonathan-wheeler":1,"kdelchev":1,"embs":1,"jeff-hamm":1,"philihp":1,"kddnewton":1,"23shortstop":1,"v-kolesnikov":1,"brandoncc":1,"Zmokizmoghi":1,"tonymarklove":1,"Eyvgeniy":1,"nebtrx":1,"joaolrpaulo":1,"Eric-Guo":1,"gagalago":1,"danhodge":1,"ghiculescu":1,"colszowka":1,"julitrows":1,"kfalconer":1,"ipoval":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-03-25T00:00:37.747Z","repositories_count":13921453,"issues_count":34701008,"pull_requests_count":113406649,"authors_count":11209555,"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":{"autorelease: pending":9,"autorelease: tagged":8},"past_year_issue_author_associations_count":{"NONE":4,"CONTRIBUTOR":2},"past_year_pull_request_author_associations_count":{"MEMBER":36,"CONTRIBUTOR":27,"NONE":10},"past_year_issue_authors":{"dmlond":2,"colszowka":1,"espen":1,"oehlschl":1,"rocket-turtle":1},"past_year_pull_request_authors":{"seuros":36,"github-actions[bot]":21,"ryansch":8,"rocket-turtle":4,"Copilot":2,"colszowka":1,"kddnewton":1},"maintainers":[{"login":"seuros","count":53,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/seuros"},{"login":"rosskevin","count":9,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/rosskevin"}],"active_maintainers":[{"login":"seuros","count":36,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/seuros"}]},"events":{"total":{"ReleaseEvent":10,"DeleteEvent":25,"PullRequestEvent":67,"ForkEvent":4,"IssuesEvent":19,"WatchEvent":41,"IssueCommentEvent":52,"PushEvent":115,"PullRequestReviewCommentEvent":32,"PullRequestReviewEvent":41,"CreateEvent":43},"last_year":{"ReleaseEvent":10,"DeleteEvent":18,"PullRequestEvent":46,"ForkEvent":3,"IssuesEvent":13,"WatchEvent":26,"IssueCommentEvent":47,"PushEvent":81,"PullRequestReviewCommentEvent":32,"PullRequestReviewEvent":31,"CreateEvent":35}},"keywords":["ruby","state-machine"],"dependencies":[{"ecosystem":"rubygems","filepath":"Gemfile","sha":null,"kind":"manifest","created_at":"2022-08-07T08:15:23.504Z","updated_at":"2022-08-07T08:15:23.504Z","repository_link":"https://github.com/state-machines/state_machines/blob/master/Gemfile","dependencies":[{"id":590611036,"package_name":"pry-byebug","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":590611037,"package_name":"minitest-reporters","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"rubygems","filepath":"state_machines.gemspec","sha":null,"kind":"manifest","created_at":"2022-08-07T08:15:23.621Z","updated_at":"2022-08-07T08:15:23.621Z","repository_link":"https://github.com/state-machines/state_machines/blob/master/state_machines.gemspec","dependencies":[{"id":590612955,"package_name":"bundler","ecosystem":"rubygems","requirements":"\u003e= 1.7.6","direct":true,"kind":"development","optional":false},{"id":590612963,"package_name":"rake","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":590612964,"package_name":"minitest","ecosystem":"rubygems","requirements":"\u003e= 5.4","direct":true,"kind":"development","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/engines.yml","sha":null,"kind":"manifest","created_at":"2023-01-13T18:51:50.746Z","updated_at":"2023-01-13T18:51:50.746Z","repository_link":"https://github.com/state-machines/state_machines/blob/master/.github/workflows/engines.yml","dependencies":[{"id":6891063766,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":6891063767,"package_name":"ruby/setup-ruby","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/ruby.yml","sha":null,"kind":"manifest","created_at":"2023-01-13T18:51:50.768Z","updated_at":"2023-01-13T18:51:50.768Z","repository_link":"https://github.com/state-machines/state_machines/blob/master/.github/workflows/ruby.yml","dependencies":[{"id":6891063768,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":6891063769,"package_name":"ruby/setup-ruby","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false}]}],"score":31.277523795661935,"created_at":"2024-12-15T21:38:07.313Z","updated_at":"2026-04-30T16:30:32.185Z","avatar_url":"https://github.com/state-machines.png","language":"Ruby","monthly_downloads":0,"readme":"![Build Status](https://github.com/state-machines/state_machines/actions/workflows/ruby.yml/badge.svg)\n\n# State Machines\n\nState Machines adds support for creating state machines for attributes on any Ruby class.\n\n*Please note that multiple integrations are available for [Active Model](https://github.com/state-machines/state_machines-activemodel), [Active Record](https://github.com/state-machines/state_machines-activerecord), [Mongoid](https://github.com/state-machines/state_machines-mongoid) and more in the [State Machines organisation](https://github.com/state-machines).*  If you want to save state in your database, **you need one of these additional integrations**.\n\n## Installation\n\nAdd this line to your application's Gemfile:\n\n```ruby\ngem 'state_machines'\n```\n\nAnd then execute:\n\n```sh\nbundle\n```\n\nOr install it yourself as:\n\n```sh\ngem install state_machines\n```\n\n## Usage\n\n### Example\n\nBelow is an example of many of the features offered by this plugin, including:\n\n* Initial states\n* Namespaced states\n* Transition callbacks\n* Conditional transitions\n* Coordinated state management guards\n* Asynchronous state machines (async: true)\n* State-driven instance behavior\n* Customized state values\n* Parallel events\n* Path analysis\n\nClass definition:\n\n```ruby\nclass Vehicle\n  attr_accessor :seatbelt_on, :time_used, :auto_shop_busy, :parking_meter_number\n\n  state_machine :state, initial: :parked do\n    before_transition parked: any - :parked, do: :put_on_seatbelt\n\n    after_transition on: :crash, do: :tow\n    after_transition on: :repair, do: :fix\n    after_transition any =\u003e :parked do |vehicle, transition|\n      vehicle.seatbelt_on = false\n    end\n\n    after_failure on: :ignite, do: :log_start_failure\n\n    around_transition do |vehicle, transition, block|\n      start = Time.now\n      block.call\n      vehicle.time_used += Time.now - start\n    end\n\n    event :park do\n      transition [:idling, :first_gear] =\u003e :parked\n    end\n\n    before_transition on: :park do |vehicle, transition|\n      # If using Rails:\n      # options = transition.args.extract_options!\n\n      options = transition.args.last.is_a?(Hash) ? transition.args.pop : {}\n      meter_number = options[:meter_number]\n\n      unless meter_number.nil?\n        vehicle.parking_meter_number = meter_number\n      end\n    end\n\n    event :ignite do\n      transition stalled: same, parked: :idling\n    end\n\n    event :idle do\n      transition first_gear: :idling\n    end\n\n    event :shift_up do\n      transition idling: :first_gear, first_gear: :second_gear, second_gear: :third_gear\n    end\n\n    event :shift_down do\n      transition third_gear: :second_gear, second_gear: :first_gear\n    end\n\n    event :crash do\n      transition all - [:parked, :stalled] =\u003e :stalled, if: -\u003e(vehicle) {!vehicle.passed_inspection?}\n    end\n\n    event :repair do\n      # The first transition that matches the state and passes its conditions\n      # will be used\n      transition stalled: :parked, unless: :auto_shop_busy\n      transition stalled: same\n    end\n\n    state :parked do\n      def speed\n        0\n      end\n    end\n\n    state :idling, :first_gear do\n      def speed\n        10\n      end\n    end\n\n    state all - [:parked, :stalled, :idling] do\n      def moving?\n        true\n      end\n    end\n\n    state :parked, :stalled, :idling do\n      def moving?\n        false\n      end\n    end\n  end\n\n  state_machine :alarm_state, initial: :active, namespace: :'alarm' do\n    event :enable do\n      transition all =\u003e :active\n    end\n\n    event :disable do\n      transition all =\u003e :off\n    end\n\n    state :active, :value =\u003e 1\n    state :off, :value =\u003e 0\n  end\n\n  def initialize\n    @seatbelt_on = false\n    @time_used = 0\n    @auto_shop_busy = true\n    @parking_meter_number = nil\n    super() # NOTE: This *must* be called, otherwise states won't get initialized\n  end\n\n  def put_on_seatbelt\n    @seatbelt_on = true\n  end\n\n  def passed_inspection?\n    false\n  end\n\n  def tow\n    # tow the vehicle\n  end\n\n  def fix\n    # get the vehicle fixed by a mechanic\n  end\n\n  def log_start_failure\n    # log a failed attempt to start the vehicle\n  end\nend\n```\n\n**Note** the comment made on the `initialize` method in the class.  In order for\nstate machine attributes to be properly initialized, `super()` must be called.\nSee `StateMachines:MacroMethods` for more information about this.\n\nUsing the above class as an example, you can interact with the state machine\nlike so:\n\n```ruby\nvehicle = Vehicle.new           # =\u003e #\u003cVehicle:0xb7cf4eac @state=\"parked\", @seatbelt_on=false\u003e\nvehicle.state                   # =\u003e \"parked\"\nvehicle.state_name              # =\u003e :parked\nvehicle.human_state_name        # =\u003e \"parked\"\nvehicle.parked?                 # =\u003e true\nvehicle.can_ignite?             # =\u003e true\nvehicle.ignite_transition       # =\u003e #\u003cStateMachines:Transition attribute=:state event=:ignite from=\"parked\" from_name=:parked to=\"idling\" to_name=:idling\u003e\nvehicle.state_events            # =\u003e [:ignite]\nvehicle.state_transitions       # =\u003e [#\u003cStateMachines:Transition attribute=:state event=:ignite from=\"parked\" from_name=:parked to=\"idling\" to_name=:idling\u003e]\nvehicle.speed                   # =\u003e 0\nvehicle.moving?                 # =\u003e false\n\nvehicle.ignite                  # =\u003e true\nvehicle.parked?                 # =\u003e false\nvehicle.idling?                 # =\u003e true\nvehicle.speed                   # =\u003e 10\nvehicle                         # =\u003e #\u003cVehicle:0xb7cf4eac @state=\"idling\", @seatbelt_on=true\u003e\n\nvehicle.shift_up                # =\u003e true\nvehicle.speed                   # =\u003e 10\nvehicle.moving?                 # =\u003e true\nvehicle                         # =\u003e #\u003cVehicle:0xb7cf4eac @state=\"first_gear\", @seatbelt_on=true\u003e\n\n# A generic event helper is available to fire without going through the event's instance method\nvehicle.fire_state_event(:shift_up) # =\u003e true\n\n# Call state-driven behavior that's undefined for the state raises a NoMethodError\nvehicle.speed                   # =\u003e NoMethodError: super: no superclass method `speed' for #\u003cVehicle:0xb7cf4eac\u003e\nvehicle                         # =\u003e #\u003cVehicle:0xb7cf4eac @state=\"second_gear\", @seatbelt_on=true\u003e\n\n# The bang (!) operator can raise exceptions if the event fails\nvehicle.park!                   # =\u003e StateMachines:InvalidTransition: Cannot transition state via :park from :second_gear\n\n# Generic state predicates can raise exceptions if the value does not exist\nvehicle.state?(:parked)         # =\u003e false\nvehicle.state?(:invalid)        # =\u003e IndexError: :invalid is an invalid name\n\n# Transition callbacks can receive arguments\nvehicle.park(meter_number: '12345') # =\u003e true\nvehicle.parked?                     # =\u003e true\nvehicle.parking_meter_number        # =\u003e \"12345\"\n\n# Namespaced machines have uniquely-generated methods\nvehicle.alarm_state             # =\u003e 1\nvehicle.alarm_state_name        # =\u003e :active\n\nvehicle.can_disable_alarm?      # =\u003e true\nvehicle.disable_alarm           # =\u003e true\nvehicle.alarm_state             # =\u003e 0\nvehicle.alarm_state_name        # =\u003e :off\nvehicle.can_enable_alarm?       # =\u003e true\n\nvehicle.alarm_off?              # =\u003e true\nvehicle.alarm_active?           # =\u003e false\n\n# Events can be fired in parallel\nvehicle.fire_events(:shift_down, :enable_alarm) # =\u003e true\nvehicle.state_name                              # =\u003e :first_gear\nvehicle.alarm_state_name                        # =\u003e :active\n\nvehicle.fire_events!(:ignite, :enable_alarm)    # =\u003e StateMachines:InvalidParallelTransition: Cannot run events in parallel: ignite, enable_alarm\n\n# Coordinated State Management\n\nState machines can coordinate with each other using state guards, allowing transitions to depend on the state of other state machines within the same object. This enables complex system modeling where components are interdependent.\n\n## State Guard Options\n\n### Single State Guards\n\n* `:if_state` - Transition only if another state machine is in a specific state.\n* `:unless_state` - Transition only if another state machine is NOT in a specific state.\n\n```ruby\nclass TorpedoSystem\n  state_machine :bay_doors, initial: :closed do\n    event :open do\n      transition closed: :open\n    end\n\n    event :close do\n      transition open: :closed\n    end\n  end\n\n  state_machine :torpedo_status, initial: :loaded do\n    event :fire_torpedo do\n      # Can only fire torpedo if bay doors are open\n      transition loaded: :fired, if_state: { bay_doors: :open }\n    end\n\n    event :reload do\n      # Can only reload if bay doors are closed (for safety)\n      transition fired: :loaded, unless_state: { bay_doors: :open }\n    end\n  end\nend\n\nsystem = TorpedoSystem.new\nsystem.fire_torpedo  # =\u003e false (bay doors are closed)\n\nsystem.open_bay_doors!\nsystem.fire_torpedo  # =\u003e true (bay doors are now open)\n```\n\n### Multiple State Guards\n\n* `:if_all_states` - Transition only if ALL specified state machines are in their respective states.\n* `:unless_all_states` - Transition only if NOT ALL specified state machines are in their respective states.\n* `:if_any_state` - Transition only if ANY of the specified state machines are in their respective states.\n* `:unless_any_state` - Transition only if NONE of the specified state machines are in their respective states.\n\n```ruby\nclass StarshipBridge\n  state_machine :shields, initial: :down\n  state_machine :weapons, initial: :offline\n  state_machine :warp_core, initial: :stable\n\n  state_machine :alert_status, initial: :green do\n    event :red_alert do\n      # Red alert if ANY critical system needs attention\n      transition green: :red, if_any_state: { warp_core: :critical, shields: :down }\n    end\n\n    event :battle_stations do\n      # Battle stations only if ALL combat systems are ready\n      transition green: :battle, if_all_states: { shields: :up, weapons: :armed }\n    end\n  end\nend\n```\n\n## Error Handling\n\nState guards provide comprehensive error checking:\n\n```ruby\n# Referencing a non-existent state machine\nevent :invalid, if_state: { nonexistent_machine: :some_state }\n# =\u003e ArgumentError: State machine 'nonexistent_machine' is not defined for StarshipBridge\n\n# Referencing a non-existent state\nevent :another_invalid, if_state: { shields: :nonexistent_state }\n# =\u003e ArgumentError: State 'nonexistent_state' is not defined in state machine 'shields'\n```\n\n# Asynchronous State Machines\n\nState machines can operate asynchronously for high-performance applications. This is ideal for I/O-bound tasks, such as in web servers or other concurrent environments, where you don't want a long-running state transition (like one involving a network call) to block the entire thread.\n\nThis feature is powered by the [async](https://github.com/socketry/async) gem and uses `concurrent-ruby` for enterprise-grade thread safety.\n\n## Platform Compatibility\n\n**Supported Platforms:**\n* MRI Ruby (CRuby) 3.2+\n* Other Ruby engines with full Fiber scheduler support\n\n**Unsupported Platforms:**\n* JRuby - Falls back to synchronous mode with warnings\n* TruffleRuby - Falls back to synchronous mode with warnings\n\n## Basic Async Usage\n\nEnable async mode by adding `async: true` to your state machine declaration:\n\n```ruby\nclass AutonomousDrone \u003c StarfleetShip\n  # Async-enabled state machine for autonomous operation\n  state_machine :status, async: true, initial: :docked do\n    event :launch do\n      transition docked: :flying\n    end\n\n    event :land do\n      transition flying: :docked\n    end\n  end\n\n  # Mixed configuration: some machines async, others sync\n  state_machine :teleporter_status, async: true, initial: :offline do\n    event :power_up do\n      transition offline: :charging\n    end\n\n    event :teleport do\n      transition ready: :teleporting\n    end\n  end\n\n  # Weapons remain synchronous for safety\n  state_machine :weapons, initial: :disarmed do\n    event :arm do\n      transition disarmed: :armed\n    end\n  end\nend\n```\n\n## Async Event Methods\n\nAsync-enabled machines automatically generate async versions of event methods:\n\n```ruby\ndrone = AutonomousDrone.new\n\n# Within an Async context\nAsync do\n  # Async event firing - returns Async::Task\n  task = drone.launch_async\n  result = task.wait  # =\u003e true\n\n  # Bang methods for strict error handling\n  drone.power_up_async!  # =\u003e Async::Task (raises on failure)\n\n  # Generic async event firing\n  drone.fire_event_async(:teleport)  # =\u003e Async::Task\nend\n\n# Outside Async context - raises error\ndrone.launch_async  # =\u003e RuntimeError: launch_async must be called within an Async context\n```\n\n## Thread Safety\n\nAsync state machines use enterprise-grade thread safety with `concurrent-ruby`:\n\n```ruby\n# Concurrent operations are automatically thread-safe\nthreads = []\n10.times do\n  threads \u003c\u003c Thread.new do\n    Async do\n      drone.launch_async.wait\n      drone.land_async.wait\n    end\n  end\nend\nthreads.each(\u0026:join)\n```\n\n## Performance Considerations\n\n* **Thread Safety**: Uses `Concurrent::ReentrantReadWriteLock` for optimal read/write performance.\n* **Memory**: Each async-enabled object gets its own mutex (lazy-loaded).\n* **Marshalling**: Objects with async state machines can be serialized (mutex excluded/recreated).\n* **Mixed Mode**: You can mix async and sync state machines in the same class.\n\n## Dependencies\n\nAsync functionality requires:\n\n```ruby\n# Gemfile (automatically scoped to MRI Ruby)\nplatform :ruby do\n  gem 'async', '\u003e= 2.25.0'\n  gem 'concurrent-ruby', '\u003e= 1.3.5'\nend\n```\n\n*Note: These gems are only installed on supported platforms. JRuby/TruffleRuby won't attempt installation.*\n\n# Human-friendly names can be accessed for states/events\nVehicle.human_state_name(:first_gear)               # =\u003e \"first gear\"\nVehicle.human_alarm_state_name(:active)             # =\u003e \"active\"\n\nVehicle.human_state_event_name(:shift_down)         # =\u003e \"shift down\"\nVehicle.human_alarm_state_event_name(:enable)       # =\u003e \"enable\"\n\n# States / events can also be references by the string version of their name\nVehicle.human_state_name('first_gear')              # =\u003e \"first gear\"\nVehicle.human_state_event_name('shift_down')        # =\u003e \"shift down\"\n\n# Available transition paths can be analyzed for an object\nvehicle.state_paths                                       # =\u003e [[#\u003cStateMachines:Transition ...], [#\u003cStateMachines:Transition ...], ...]\nvehicle.state_paths.to_states                             # =\u003e [:parked, :idling, :first_gear, :stalled, :second_gear, :third_gear]\nvehicle.state_paths.events                                # =\u003e [:park, :ignite, :shift_up, :idle, :crash, :repair, :shift_down]\n\n# Possible states can be analyzed for a class\nVehicle.state_machine.states.to_a                   # [#\u003cStateMachines::State name=:parked value=\"parked\" initial=true\u003e, #\u003cStateMachines::State name=:idling value=\"idling\" initial=false\u003e, ...]\nVehicle.state_machines[:state].states.to_a          # [#\u003cStateMachines::State name=:parked value=\"parked\" initial=true\u003e, #\u003cStateMachines::State name=:idling value=\"idling\" initial=false\u003e, ...]\n\n# Find all paths that start and end on certain states\nvehicle.state_paths(:from =\u003e :parked, :to =\u003e :first_gear) # =\u003e [[\n                                                          #       #\u003cStateMachines:Transition attribute=:state event=:ignite from=\"parked\" ...\u003e,\n                                                          #       #\u003cStateMachines:Transition attribute=:state event=:shift_up from=\"idling\" ...\u003e\n                                                          #    ]]\n# Skipping state_machine and writing to attributes directly\nvehicle.state = \"parked\"\nvehicle.state                   # =\u003e \"parked\"\nvehicle.state_name              # =\u003e :parked\n\n# *Note* that the following is not supported (see StateMachines:MacroMethods#state_machine):\n# vehicle.state = :parked\n```\n\n## Testing\n\nState Machines provides an optional `TestHelper` module with assertion methods to make testing state machines easier and more expressive.\n\n**Note: TestHelper is not required by default** - you must explicitly require it in your test files.\n\n### Setup\n\nFirst, require the test helper module, then include it in your test class:\n\n```ruby\n# For Minitest\nrequire 'state_machines/test_helper'\n\nclass VehicleTest \u003c Minitest::Test\n  include StateMachines::TestHelper\n\n  def test_initial_state\n    vehicle = Vehicle.new\n    assert_sm_state vehicle, :parked\n  end\nend\n\n# For RSpec\nrequire 'state_machines/test_helper'\n\nRSpec.describe Vehicle do\n  include StateMachines::TestHelper\n\n  it \"starts in parked state\" do\n    vehicle = Vehicle.new\n    assert_sm_state vehicle, :parked\n  end\nend\n```\n\n### Available Assertions\n\nThe TestHelper provides both basic assertions and comprehensive state machine-specific assertions with `sm_` prefixes:\n\n#### Basic Assertions\n\n```ruby\nvehicle = Vehicle.new\n\n# New standardized API (all methods prefixed with assert_sm_)\nassert_sm_state(vehicle, :parked)                                    # Uses default :state machine\nassert_sm_state(vehicle, :parked, machine_name: :status)             # Specify machine explicitly\nassert_sm_can_transition(vehicle, :ignite)                           # Test transition capability\nassert_sm_cannot_transition(vehicle, :shift_up)                      # Test transition restriction\nassert_sm_transition(vehicle, :ignite, :idling)                      # Test actual transition\n\n# Multi-FSM examples\nassert_sm_state(vehicle, :inactive, machine_name: :insurance_state)  # Test insurance state\nassert_sm_can_transition(vehicle, :buy_insurance, machine_name: :insurance_state)\n```\n\n#### Extended State Machine Assertions\n\n```ruby\nmachine = Vehicle.state_machine(:state)\nvehicle = Vehicle.new\n\n# State configuration\nassert_sm_states_list machine, [:parked, :idling, :stalled]\nassert_sm_initial_state machine, :parked\n\n# Event behavior\nassert_sm_event_triggers vehicle, :ignite\nrefute_sm_event_triggers vehicle, :shift_up\nassert_sm_event_raises_error vehicle, :invalid_event, StateMachines::InvalidTransition\n\n# Persistence (with ActiveRecord integration)\nassert_sm_state_persisted record, expected: :active\n```\n\n#### Indirect Event Testing\n\nTest that methods trigger state machine events indirectly:\n\n```ruby\n# Minitest style\nvehicle = Vehicle.new\nvehicle.ignite  # Put in idling state\n\n# Test that a custom method triggers a specific event\nassert_sm_triggers_event(vehicle, :crash) do\n  vehicle.redline  # Custom method that calls crash! internally\nend\n\n# Test multiple events\nassert_sm_triggers_event(vehicle, [:crash, :emergency]) do\n  vehicle.emergency_stop\nend\n\n# Test on specific state machine (multi-FSM support)\nassert_sm_triggers_event(vehicle, :disable, machine_name: :alarm) do\n  vehicle.turn_off_alarm\nend\n```\n\n```ruby\n# RSpec style (coming soon with proper matcher support)\nRSpec.describe Vehicle do\n  include StateMachines::TestHelper\n\n  it \"triggers crash when redlining\" do\n    vehicle = Vehicle.new\n    vehicle.ignite\n\n    expect_to_trigger_event(vehicle, :crash) do\n      vehicle.redline\n    end\n  end\nend\n```\n\n#### Callback Definition Testing (TDD Support)\n\nVerify that callbacks are properly defined in your state machine:\n\n```ruby\n# Test after_transition callbacks\nassert_after_transition(Vehicle, on: :crash, do: :tow)\nassert_after_transition(Vehicle, from: :stalled, to: :parked, do: :log_repair)\n\n# Test before_transition callbacks\nassert_before_transition(Vehicle, from: :parked, do: :put_on_seatbelt)\nassert_before_transition(Vehicle, on: :ignite, if: :seatbelt_on?)\n\n# Works with machine instances too\nmachine = Vehicle.state_machine(:state)\nassert_after_transition(machine, on: :crash, do: :tow)\n```\n\n#### Multiple State Machine Support\n\nThe TestHelper fully supports objects with multiple state machines:\n\n```ruby\n# Example: StarfleetShip with 3 state machines\nship = StarfleetShip.new\n\n# Test states on different machines\nassert_sm_state(ship, :docked, machine_name: :status)       # Main ship status\nassert_sm_state(ship, :down, machine_name: :shields)        # Shield system\nassert_sm_state(ship, :standby, machine_name: :weapons)     # Weapons system\n\n# Test transitions on specific machines\nassert_sm_transition(ship, :undock, :impulse, machine_name: :status)\nassert_sm_transition(ship, :raise_shields, :up, machine_name: :shields)\nassert_sm_transition(ship, :arm_weapons, :armed, machine_name: :weapons)\n\n# Test event triggering across multiple machines\nassert_sm_triggers_event(ship, :red_alert, machine_name: :status) do\n  ship.engage_combat_mode  # Custom method affecting multiple systems\nend\n\nassert_sm_triggers_event(ship, :raise_shields, machine_name: :shields) do\n  ship.engage_combat_mode\nend\n\n# Test callback definitions on specific machines\nshields_machine = StarfleetShip.state_machine(:shields)\nassert_before_transition(shields_machine, from: :down, to: :up, do: :power_up_shields)\n\n# Test persistence across multiple machines\nassert_sm_state_persisted(ship, \"impulse\", :status)\nassert_sm_state_persisted(ship, \"up\", :shields)\nassert_sm_state_persisted(ship, \"armed\", :weapons)\n```\n\nThe test helper works with both Minitest and RSpec, automatically detecting your testing framework.\n\n**Note:** All methods use consistent keyword arguments with `machine_name:` as the last parameter, making the API intuitive and Grep-friendly.\n\n## Additional Topics\n\n### Explicit vs. Implicit Event Transitions\n\nEvery event defined for a state machine generates an instance method on the\nclass that allows the event to be explicitly triggered.  Most of the examples in\nthe state_machine documentation use this technique.  However, with some types of\nintegrations, like ActiveRecord, you can also *implicitly* fire events by\nsetting a special attribute on the instance.\n\nSuppose you're using the ActiveRecord integration and the following model is\ndefined:\n\n```ruby\nclass Vehicle \u003c ActiveRecord::Base\n  state_machine initial: :parked do\n    event :ignite do\n      transition parked: :idling\n    end\n  end\nend\n```\n\nTo trigger the `ignite` event, you would typically call the `Vehicle#ignite`\nmethod like so:\n\n```ruby\nvehicle = Vehicle.create    # =\u003e #\u003cVehicle id=1 state=\"parked\"\u003e\nvehicle.ignite              # =\u003e true\nvehicle.state               # =\u003e \"idling\"\n```\n\nThis is referred to as an *explicit* event transition.  The same behavior can\nalso be achieved *implicitly* by setting the state event attribute and invoking\nthe action associated with the state machine.  For example:\n\n```ruby\nvehicle = Vehicle.create        # =\u003e #\u003cVehicle id=1 state=\"parked\"\u003e\nvehicle.state_event = 'ignite'  # =\u003e 'ignite'\nvehicle.save                    # =\u003e true\nvehicle.state                   # =\u003e 'idling'\nvehicle.state_event             # =\u003e nil\n```\n\nAs you can see, the `ignite` event was automatically triggered when the `save`\naction was called.  This is particularly useful if you want to allow users to\ndrive the state transitions from a web API.\n\nSee each integration's API documentation for more information on the implicit\napproach.\n\n### Symbols vs. Strings\n\nIn all of the examples used throughout the documentation, you'll notice that\nstates and events are almost always referenced as symbols.  This isn't a\nrequirement, but rather a suggested best practice.\n\nYou can very well define your state machine with Strings like so:\n\n```ruby\nclass Vehicle\n  state_machine initial: 'parked' do\n    event 'ignite' do\n      transition 'parked' =\u003e 'idling'\n    end\n\n    # ...\n  end\nend\n```\n\nYou could even use numbers as your state / event names.  The **important** thing\nto keep in mind is that the type being used for referencing states / events in\nyour machine definition must be **consistent**.  If you're using Symbols, then\nall states / events must use Symbols.  Otherwise you'll encounter the following\nerror:\n\n```ruby\nclass Vehicle\n  state_machine do\n    event :ignite do\n      transition parked: 'idling'\n    end\n  end\nend\n\n# =\u003e ArgumentError: \"idling\" state defined as String, :parked defined as Symbol; all states must be consistent\n```\n\nThere **is** an exception to this rule.  The consistency is only required within\nthe definition itself.  However, when the machine's helper methods are called\nwith input from external sources, such as a web form, state_machine will map\nthat input to a String / Symbol.  For example:\n\n```ruby\nclass Vehicle\n  state_machine initial: :parked do\n    event :ignite do\n      transition parked: :idling\n    end\n  end\nend\n\nv = Vehicle.new     # =\u003e #\u003cVehicle:0xb71da5f8 @state=\"parked\"\u003e\nv.state?('parked')  # =\u003e true\nv.state?(:parked)   # =\u003e true\n```\n\n**Note** that none of this actually has to do with the type of the value that\ngets stored.  By default, all state values are assumed to be string -- regardless\nof whether the state names are symbols or strings.  If you want to store states\nas symbols instead you'll have to be explicit about it:\n\n```ruby\nclass Vehicle\n  state_machine initial: :parked do\n    event :ignite do\n      transition parked: :idling\n    end\n\n    states.each do |state|\n      self.state(state.name, :value =\u003e state.name.to_sym)\n    end\n  end\nend\n\nv = Vehicle.new     # =\u003e #\u003cVehicle:0xb71da5f8 @state=:parked\u003e\nv.state?('parked')  # =\u003e true\nv.state?(:parked)   # =\u003e true\n```\n\n### Syntax flexibility\n\nAlthough state_machine introduces a simplified syntax, it still remains\nbackwards compatible with previous versions and other state-related libraries by\nproviding some flexibility around how transitions are defined.  See below for an\noverview of these syntaxes.\n\n#### Verbose syntax\n\nIn general, it's recommended that state machines use the implicit syntax for\ntransitions.  However, you can be a little more explicit and verbose about\ntransitions by using the `:from`, `:except_from`, `:to`,\nand `:except_to` options.\n\nFor example, transitions and callbacks can be defined like so:\n\n```ruby\nclass Vehicle\n  state_machine initial: :parked do\n    before_transition from: :parked, except_to: :parked, do: :put_on_seatbelt\n    after_transition to: :parked do |vehicle, transition|\n      vehicle.seatbelt = 'off'\n    end\n\n    event :ignite do\n      transition from: :parked, to: :idling\n    end\n  end\nend\n```\n\n#### Transition context\n\nSome flexibility is provided around the context in which transitions can be\ndefined.  In almost all examples throughout the documentation, transitions are\ndefined within the context of an event.  If you prefer to have state machines\ndefined in the context of a **state** either out of preference or in order to\neasily migrate from a different library, you can do so as shown below:\n\n```ruby\nclass Vehicle\n  state_machine initial: :parked do\n    # ...\n\n    state :parked do\n      transition to: :idling, :on =\u003e [:ignite, :shift_up], if: :seatbelt_on?\n\n      def speed\n        0\n      end\n    end\n\n    state :first_gear do\n      transition to: :second_gear, on: :shift_up\n\n      def speed\n        10\n      end\n    end\n\n    state :idling, :first_gear do\n      transition to: :parked, on: :park\n    end\n  end\nend\n```\n\nIn the above example, there's no need to specify the `from` state for each\ntransition since it's inferred from the context.\n\nYou can also define transitions completely outside the context of a particular\nstate / event.  This may be useful in cases where you're building a state\nmachine from a data store instead of part of the class definition.  See the\nexample below:\n\n```ruby\nclass Vehicle\n  state_machine initial: :parked do\n    # ...\n\n    transition parked: :idling, :on =\u003e [:ignite, :shift_up]\n    transition first_gear: :second_gear, second_gear: :third_gear, on: :shift_up\n    transition [:idling, :first_gear] =\u003e :parked, on: :park\n    transition all - [:parked, :stalled]: :stalled, unless: :auto_shop_busy?\n  end\nend\n```\n\nNotice that in these alternative syntaxes:\n\n* You can continue to configure `:if` and `:unless` conditions\n* You can continue to define `from` states (when in the machine context) using\nthe `all`, `any`, and `same` helper methods\n\n### Static / Dynamic definitions\n\nIn most cases, the definition of a state machine is **static**.  That is to say,\nthe states, events and possible transitions are known ahead of time even though\nthey may depend on data that's only known at runtime.  For example, certain\ntransitions may only be available depending on an attribute on that object it's\nbeing run on.  All of the documentation in this library define static machines\nlike so:\n\n```ruby\nclass Vehicle\n  state_machine :state, initial: :parked do\n    event :park do\n      transition [:idling, :first_gear] =\u003e :parked\n    end\n\n    # ...\n  end\nend\n```\n\n#### Draw state machines\n\nState machines includes a default STDIORenderer for debugging state machines without external dependencies.\nThis renderer can be used to visualize the state machine in the console.\n\nTo use the renderer, simply call the `draw` method on the state machine:\n\n```ruby\nVehicle.state_machine.draw # Outputs the state machine diagram to the console\n```\n\nYou can customize the output by passing in options to the `draw` method, such as the output stream:\n\n```ruby\nVehicle.state_machine.draw(io: $stderr) # Outputs the state machine diagram to stderr\n```\n\n#### Dynamic definitions\n\nThere may be cases where the definition of a state machine is **dynamic**.\nThis means that you don't know the possible states or events for a machine until\nruntime.  For example, you may allow users in your application to manage the\nstate machine of a project or task in your system.  This means that the list of\ntransitions (and their associated states / events) could be stored externally,\nsuch as in a database.  In a case like this, you can define dynamically-generated\nstate machines like so:\n\n```ruby\nclass Vehicle\n  attr_accessor :state\n\n  # Make sure the machine gets initialized so the initial state gets set properly\n  def initialize(*)\n    super\n    machine\n  end\n\n  # Replace this with an external source (like a db)\n  def transitions\n    [\n      {parked: :idling, on: :ignite},\n      {idling: :first_gear, first_gear: :second_gear, on: :shift_up}\n      # ...\n    ]\n  end\n\n  # Create a state machine for this vehicle instance dynamically based on the\n  # transitions defined from the source above\n  def machine\n    vehicle = self\n    @machine ||= Machine.new(vehicle, initial: :parked, action: :save) do\n      vehicle.transitions.each {|attrs| transition(attrs)}\n    end\n  end\n\n  def save\n    # Save the state change...\n    true\n  end\nend\n\n# Generic class for building machines\nclass Machine\n  def self.new(object, *args, \u0026block)\n    machine_class = Class.new\n    machine = machine_class.state_machine(*args, \u0026block)\n    attribute = machine.attribute\n    action = machine.action\n\n    # Delegate attributes\n    machine_class.class_eval do\n      define_method(:definition) { machine }\n      define_method(attribute) { object.send(attribute) }\n      define_method(\"#{attribute}=\") {|value| object.send(\"#{attribute}=\", value) }\n      define_method(action) { object.send(action) } if action\n    end\n\n    machine_class.new\n  end\nend\n\nvehicle = Vehicle.new                   # =\u003e #\u003cVehicle:0xb708412c @state=\"parked\" ...\u003e\nvehicle.state                           # =\u003e \"parked\"\nvehicle.machine.ignite                  # =\u003e true\nvehicle.machine.state                   # =\u003e \"idling\"\nvehicle.state                           # =\u003e \"idling\"\nvehicle.machine.state_transitions       # =\u003e [#\u003cStateMachines:Transition ...\u003e]\nvehicle.machine.definition.states.keys  # =\u003e :first_gear, :second_gear, :parked, :idling\n```\n\nAs you can see, state_machine provides enough flexibility for you to be able\nto create new machine definitions on the fly based on an external source of\ntransitions.\n\n## Dependencies\n\nRuby versions officially supported and tested:\n\n* Ruby (MRI) 3.0.0+\n\nFor graphing state machine:\n\n* [state_machines-graphviz](https://github.com/state-machines/state_machines-graphviz)\n\nFor documenting state machines:\n\n* [state_machines-yard](https://github.com/state-machines/state_machines-yard)\n\nFor RSpec testing, use the custom RSpec matchers:\n\n* [state_machines-rspec](https://github.com/state-machines/state_machines-rspec)\n\n## Contributing\n\n1. Fork it ( \u003chttps://github.com/state-machines/state_machines/fork\u003e )\n2. Create your feature branch (`git checkout -b my-new-feature`)\n3. Commit your changes (`git commit -am 'Add some feature'`)\n4. Push to the branch (`git push origin my-new-feature`)\n5. Create a new Pull Request\n","funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["rubygems","feature-flag","activerecord","activejob","mvc","feature","ruby-gem","feature-toggle","rack","background-jobs"],"project_url":"https://ruby.ecosyste.ms/api/v1/projects/214","html_url":"https://ruby.ecosyste.ms/projects/214"}