Informe JSON sin procesar legible por máquina
{
"data": {
"repo": {
"topics": [],
"is_fork": false,
"size_kb": 62427,
"has_wiki": false,
"homepage": "http://sequel.jeremyevans.net",
"languages": {
"CSS": 10040,
"HTML": 96829,
"Ruby": 7113334
},
"pushed_at": "2026-07-19T16:46:48Z",
"created_at": "2008-03-31T05:41:15Z",
"owner_type": "User",
"updated_at": "2026-07-19T16:46:54Z",
"description": "Sequel: The Database Toolkit for Ruby",
"is_archived": false,
"is_disabled": false,
"license_spdx": "MIT",
"default_branch": "master",
"license_spdx_raw": "MIT",
"primary_language": "Ruby",
"significant_languages": [
"Ruby"
]
},
"owner": {
"blog": "http://code.jeremyevans.net",
"name": "Jeremy Evans",
"type": "User",
"login": "jeremyevans",
"company": "Ubicloud, Inc.",
"location": "Sacramento, California, USA",
"followers": 1742,
"avatar_url": "https://avatars.githubusercontent.com/u/3846?v=4",
"created_at": "2008-03-26T00:07:41Z",
"is_verified": null,
"public_repos": 239,
"account_age_days": 6691
},
"license": {
"state": "standard",
"spdx_id": "MIT",
"raw_spdx": "MIT",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "5.106.0",
"kind": "minor",
"published_at": "2026-07-01T15:46:47Z"
},
{
"tag": "5.105.0",
"kind": "minor",
"published_at": "2026-06-01T14:28:09Z"
},
{
"tag": "5.104.0",
"kind": "minor",
"published_at": "2026-05-01T15:58:49Z"
},
{
"tag": "5.103.0",
"kind": "minor",
"published_at": "2026-04-01T16:09:25Z"
},
{
"tag": "5.102.0",
"kind": "minor",
"published_at": "2026-03-01T19:02:27Z"
},
{
"tag": "5.101.0",
"kind": "minor",
"published_at": "2026-02-01T17:05:52Z"
},
{
"tag": "5.100.0",
"kind": "minor",
"published_at": "2026-01-01T16:57:24Z"
},
{
"tag": "5.99.0",
"kind": "minor",
"published_at": "2025-12-01T18:20:49Z"
},
{
"tag": "5.98.0",
"kind": "minor",
"published_at": "2025-11-01T17:18:55Z"
},
{
"tag": "5.97.0",
"kind": "minor",
"published_at": "2025-10-01T16:18:38Z"
},
{
"tag": "5.96.0",
"kind": "minor",
"published_at": "2025-09-01T14:45:37Z"
},
{
"tag": "5.95.1",
"kind": "patch",
"published_at": "2025-08-05T15:15:55Z"
},
{
"tag": "5.95.0",
"kind": "minor",
"published_at": "2025-08-01T15:31:01Z"
},
{
"tag": "5.94.0",
"kind": "minor",
"published_at": "2025-07-01T15:25:01Z"
},
{
"tag": "5.93.0",
"kind": "minor",
"published_at": "2025-06-01T17:10:37Z"
},
{
"tag": "5.92.0",
"kind": "minor",
"published_at": "2025-05-01T14:47:22Z"
},
{
"tag": "5.91.0",
"kind": "minor",
"published_at": "2025-04-01T14:08:12Z"
},
{
"tag": "5.90.0",
"kind": "minor",
"published_at": "2025-03-01T17:27:11Z"
},
{
"tag": "5.89.0",
"kind": "minor",
"published_at": "2025-02-01T17:08:51Z"
},
{
"tag": "5.88.0",
"kind": "minor",
"published_at": "2025-01-01T17:18:19Z"
},
{
"tag": "5.87.0",
"kind": "minor",
"published_at": "2024-12-01T17:13:27Z"
},
{
"tag": "5.86.0",
"kind": "minor",
"published_at": "2024-11-01T16:04:14Z"
},
{
"tag": "5.85.0",
"kind": "minor",
"published_at": "2024-10-01T15:44:30Z"
},
{
"tag": "5.84.0",
"kind": "minor",
"published_at": "2024-08-29T23:43:25Z"
},
{
"tag": "5.83.1",
"kind": "patch",
"published_at": "2024-08-08T15:55:31Z"
},
{
"tag": "5.83.0",
"kind": "minor",
"published_at": "2024-08-01T15:02:05Z"
},
{
"tag": "5.82.0",
"kind": "minor",
"published_at": "2024-07-01T15:14:33Z"
},
{
"tag": "5.81.0",
"kind": "minor",
"published_at": "2024-05-31T18:59:27Z"
},
{
"tag": "5.80.0",
"kind": "minor",
"published_at": "2024-05-01T15:49:50Z"
},
{
"tag": "5.79.0",
"kind": "minor",
"published_at": "2024-04-01T16:04:28Z"
},
{
"tag": "5.78.0",
"kind": "minor",
"published_at": "2024-03-01T16:29:17Z"
},
{
"tag": "5.77.0",
"kind": "minor",
"published_at": "2024-02-01T16:27:19Z"
},
{
"tag": "5.76.0",
"kind": "minor",
"published_at": "2023-12-29T20:29:53Z"
},
{
"tag": "5.75.0",
"kind": "minor",
"published_at": "2023-12-01T16:25:41Z"
},
{
"tag": "5.74.0",
"kind": "minor",
"published_at": "2023-11-01T15:36:13Z"
},
{
"tag": "5.73.0",
"kind": "minor",
"published_at": "2023-09-28T22:16:59Z"
},
{
"tag": "5.72.0",
"kind": "minor",
"published_at": "2023-08-29T18:55:51Z"
},
{
"tag": "5.71.0",
"kind": "minor",
"published_at": "2023-08-01T14:39:10Z"
},
{
"tag": "5.70.0",
"kind": "minor",
"published_at": "2023-06-30T18:22:57Z"
},
{
"tag": "5.69.0",
"kind": "minor",
"published_at": "2023-06-01T14:29:18Z"
},
{
"tag": "5.68.0",
"kind": "minor",
"published_at": "2023-05-01T14:25:38Z"
},
{
"tag": "5.67.0",
"kind": "minor",
"published_at": "2023-04-01T14:29:55Z"
},
{
"tag": "5.66.0",
"kind": "minor",
"published_at": "2023-03-01T16:07:18Z"
},
{
"tag": "5.65.0",
"kind": "minor",
"published_at": "2023-02-01T17:28:11Z"
},
{
"tag": "5.64.0",
"kind": "minor",
"published_at": "2022-12-31T02:40:55Z"
},
{
"tag": "5.63.0",
"kind": "minor",
"published_at": "2022-12-01T15:04:38Z"
},
{
"tag": "5.62.0",
"kind": "minor",
"published_at": "2022-11-01T16:14:58Z"
},
{
"tag": "5.61.0",
"kind": "minor",
"published_at": "2022-09-30T20:29:52Z"
},
{
"tag": "5.60.1",
"kind": "patch",
"published_at": "2022-09-02T16:07:03Z"
},
{
"tag": "5.60.0",
"kind": "minor",
"published_at": "2022-09-01T14:51:51Z"
},
{
"tag": "5.59.0",
"kind": "minor",
"published_at": "2022-08-01T14:42:15Z"
},
{
"tag": "5.58.0",
"kind": "minor",
"published_at": "2022-07-01T14:39:54Z"
},
{
"tag": "5.57.0",
"kind": "minor",
"published_at": "2022-06-01T14:58:39Z"
},
{
"tag": "5.56.0",
"kind": "minor",
"published_at": "2022-04-29T19:18:45Z"
},
{
"tag": "5.55.0",
"kind": "minor",
"published_at": "2022-04-01T15:48:33Z"
},
{
"tag": "5.54.0",
"kind": "minor",
"published_at": "2022-03-01T16:11:07Z"
},
{
"tag": "5.53.0",
"kind": "minor",
"published_at": "2022-02-01T16:06:41Z"
},
{
"tag": "5.52.0",
"kind": "minor",
"published_at": "2021-12-30T21:01:54Z"
},
{
"tag": "5.51.0",
"kind": "minor",
"published_at": "2021-12-01T16:32:59Z"
},
{
"tag": "5.50.0",
"kind": "minor",
"published_at": "2021-11-01T15:56:45Z"
},
{
"tag": "5.49.0",
"kind": "minor",
"published_at": "2021-10-01T14:27:01Z"
},
{
"tag": "5.48.0",
"kind": "minor",
"published_at": "2021-09-01T15:20:31Z"
},
{
"tag": "5.47.0",
"kind": "minor",
"published_at": "2021-07-30T18:31:12Z"
},
{
"tag": "5.46.0",
"kind": "minor",
"published_at": "2021-07-01T14:57:24Z"
},
{
"tag": "5.45.0",
"kind": "minor",
"published_at": "2021-06-01T14:39:15Z"
},
{
"tag": "5.44.0",
"kind": "minor",
"published_at": "2021-04-30T21:59:17Z"
},
{
"tag": "5.43.0",
"kind": "minor",
"published_at": "2021-04-01T14:37:38Z"
},
{
"tag": "5.42.0",
"kind": "minor",
"published_at": "2021-03-01T15:44:27Z"
},
{
"tag": "5.41.0",
"kind": "minor",
"published_at": "2021-02-01T15:42:41Z"
},
{
"tag": "5.40.0",
"kind": "minor",
"published_at": "2020-12-31T19:04:45Z"
},
{
"tag": "5.39.0",
"kind": "minor",
"published_at": "2020-12-01T16:04:15Z"
},
{
"tag": "5.38.0",
"kind": "minor",
"published_at": "2020-10-30T18:01:26Z"
},
{
"tag": "5.37.0",
"kind": "minor",
"published_at": "2020-10-01T14:33:15Z"
},
{
"tag": "5.36.0",
"kind": "minor",
"published_at": "2020-09-01T15:05:22Z"
},
{
"tag": "5.35.0",
"kind": "minor",
"published_at": "2020-07-31T18:53:18Z"
},
{
"tag": "5.34.0",
"kind": "minor",
"published_at": "2020-07-01T14:34:50Z"
},
{
"tag": "5.33.0",
"kind": "minor",
"published_at": "2020-06-01T14:25:58Z"
},
{
"tag": "5.32.0",
"kind": "minor",
"published_at": "2020-05-01T14:42:45Z"
},
{
"tag": "5.31.0",
"kind": "minor",
"published_at": "2020-04-01T15:27:37Z"
},
{
"tag": "5.30.0",
"kind": "minor",
"published_at": "2020-02-28T17:27:07Z"
},
{
"tag": "5.29.0",
"kind": "minor",
"published_at": "2020-01-31T20:51:15Z"
},
{
"tag": "5.28.0",
"kind": "minor",
"published_at": "2019-12-31T22:22:55Z"
},
{
"tag": "5.27.0",
"kind": "minor",
"published_at": "2019-11-27T18:45:08Z"
},
{
"tag": "5.26.0",
"kind": "minor",
"published_at": "2019-11-01T16:00:20Z"
},
{
"tag": "5.25.0",
"kind": "minor",
"published_at": "2019-10-01T15:03:06Z"
},
{
"tag": "5.24.0",
"kind": "minor",
"published_at": "2019-08-30T17:43:49Z"
},
{
"tag": "5.23.0",
"kind": "minor",
"published_at": "2019-08-01T16:19:43Z"
},
{
"tag": "5.22.0",
"kind": "minor",
"published_at": "2019-07-01T14:13:59Z"
},
{
"tag": "5.21.0",
"kind": "minor",
"published_at": "2019-06-01T17:21:52Z"
},
{
"tag": "5.20.0",
"kind": "minor",
"published_at": "2019-05-01T15:21:14Z"
},
{
"tag": "5.19.0",
"kind": "minor",
"published_at": "2019-04-02T16:28:15Z"
},
{
"tag": "5.18.0",
"kind": "minor",
"published_at": "2019-03-01T13:59:17Z"
},
{
"tag": "5.17.0",
"kind": "minor",
"published_at": "2019-02-01T16:14:06Z"
},
{
"tag": "5.16.0",
"kind": "minor",
"published_at": "2019-01-02T18:07:51Z"
},
{
"tag": "5.15.0",
"kind": "minor",
"published_at": "2018-11-30T17:21:47Z"
},
{
"tag": "5.14.0",
"kind": "minor",
"published_at": "2018-11-01T14:32:34Z"
},
{
"tag": "5.13.0",
"kind": "minor",
"published_at": "2018-10-01T14:21:17Z"
},
{
"tag": "5.12.0",
"kind": "minor",
"published_at": "2018-08-31T15:39:17Z"
},
{
"tag": "5.11.0",
"kind": "minor",
"published_at": "2018-08-01T15:13:42Z"
},
{
"tag": "5.10.0",
"kind": "minor",
"published_at": "2018-07-01T16:34:27Z"
}
],
"recent_commits": [
{
"oid": "bdb03b6d7f3076c9c0c4880975afb6d159a2e717",
"body": "If there are multiple connections in the pool, there is no guarantee\nthat the same connection will be used for both statements by default,\nand TEMP creates a connection-specific table.",
"is_bot": false,
"headline": "Fix nondeterministic test failure in property graph spec",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-07-19T16:42:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3e45652ceaba025573d336fbfe38e276a4eded5d",
"body": "…roperty_graph_schema on PostgreSQL 19+\n\nrename_property_graph and set_property_graph_schema are separate\nmethods because we don't want the property graph name (schema\nqualified or not) to change inside an alter_property_graph block,\nas it could break operations after the rename/schema change.\n\nThis\n[…]\nple array of hashes,\nsimilar to how alter_table works.\n\nTo simplify the spec, it uses a transaction that is always rolled\nback, which is simpler than the code to manually roll back the\nschema changes.",
"is_bot": false,
"headline": "Add Database#alter_property_graph, #rename_property_graph, and #set_p…",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-07-13T03:25:21Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "6e118df5829f1a3eecc60bb6a10b0bc711839edd",
"body": "…e symbols on PostgreSQL 19+\n\nThis is basic reflection support for property graphs. This doesn't\ninclude support for getting details about a property graph (no\nDatabase#schema alternative), but that can be added later if\nrequested.",
"is_bot": false,
"headline": "Add Database#property_graphs to return an array of property graph nam…",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-07-13T01:39:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "114b59ccc13f35ef80d08ac6616ba56669341b89",
"body": "…ostgreSQL documentation",
"is_bot": false,
"headline": "Move parsing check/foreign key constraints to reflection section of P…",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-07-13T01:39:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "431979e60603b541f6b9f880579d33d6cb8597ca",
"body": "…eSQL 19+\n\nThis implements GRAPH_TABLE support similarly to how datasets are\nimplemented, using a frozen object with a method chaining. This allows\nfor using a base graph table to create multiple graph tables, each of\nwhich is independent.",
"is_bot": false,
"headline": "Add Database#graph_table to support GRAPH_TABLE expressions on Postgr…",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-07-13T01:39:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cef0e9cf8fbd35773939a1864975147f546aea1f",
"body": "…n PostgreSQL 19+\n\nThis uses a DSL that is similar in some ways to the create_table\ngenerator, but uses an approach where the generator new method\nuses a generator instance to evaluate the block, but it returns\na frozen struct for the data. This makes things easier and is\nmore flexible, because you often want to use the same method name\nto modify things while the generator is running and to retrieve\nconfigured information after the generator is not running.",
"is_bot": false,
"headline": "Add Database#create_property_graph to support CREATE PROPERTY GRAPH o…",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-07-13T01:39:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5609197d3d34b017c8f0afe26a02e65c316eee7a",
"body": null,
"is_bot": false,
"headline": "Restore TruffleRuby on CI",
"author_name": "Andrii Konchyn",
"author_login": "andrykonchin",
"committed_at": "2026-07-08T20:19:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c08bea8fd8b612af554b21b3fadb7929bc975f1f",
"body": null,
"is_bot": false,
"headline": "Fix specs on TruffleRuby",
"author_name": "Andrii Konchyn",
"author_login": "andrykonchin",
"committed_at": "2026-07-08T20:19:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "da33051614c8efa149c10185ae0e8666ac13f067",
"body": null,
"is_bot": false,
"headline": "Bump version to 5.106.0",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-07-01T15:46:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ff18939e8fded91827784272b6cf6d55d7ff66ec",
"body": null,
"is_bot": false,
"headline": "Test for FOR PORTION OF with table alias",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-06-29T23:25:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "16f7ddfde73993bad5dafe26130248f445851364",
"body": "…ALL) on PostgreSQL 19+",
"is_bot": false,
"headline": "Add Sequel::Constants::ALL to support GROUP BY ALL via group(Sequel::…",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-06-27T20:08:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dbd90ff1c8e28343dcf9b5a03cdb0b0c59663ee2",
"body": null,
"is_bot": false,
"headline": "Add example of Model.with_pk to querying documentation",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-06-12T14:53:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "933cf5a2e0d50537430896e4f7d9e08cf4e58968",
"body": "I believe both approaches should result in the same SQL, but I'm not\n100% sure that's true in all cases. So to be conservative, use the\nprevious approach when not using FOR PORTION OF.",
"is_bot": false,
"headline": "Only use more complex approach if for_portion_of is used",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-06-08T18:49:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "db78072759d1900c673ee4f79a6da726c54030a4",
"body": "This is only supported for the following window functions in\nPostgreSQL 19: lag, lead, first_value, last_value, nth_value. It's\na little odd in that the IGNORE NULLS clause goes before the OVER\nclause. This doesn't add support for RESPECT NULLS, as that is the\ndefault.",
"is_bot": false,
"headline": "Support :ignore_nulls window function option on PostgreSQL 19+",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-06-05T22:03:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7cc5582d0f092b970fe98748ae126948d517183a",
"body": "Because the FOR PORTION OF goes between the table and the alias, this\nrequires a bit more work than it otherwise would, but it's still a\nfairly simple addition.\n\nNote that DB2 and MariaDB both support FOR PORTION OF, but those\nrequire temporal tables instead of working with any range column.\nThis commit only implements support for PostgreSQL.",
"is_bot": false,
"headline": "Support UPDATE/DELETE FOR PORTION OF on PostgreSQL 19+",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-06-05T21:20:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ed26b86119d851053526c2714278a2b136f7ed7e",
"body": null,
"is_bot": false,
"headline": "Bump version to 5.105.0",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-06-01T14:28:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3708affbc4e6752f03d5cce2a3af9b32178c08d9",
"body": null,
"is_bot": false,
"headline": "Fix typo in CHANGELOG [ci skip]",
"author_name": "Yuki Fukuma",
"author_login": "fkmy",
"committed_at": "2026-05-31T20:26:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4fda8ef45b72591f0c28c13d812b780e6a383407",
"body": "With YJIT and Ruby 3.2+, shape-friendly code can be significantly\nfaster than non-shape-friendly code in many cases. On Ruby 3.2+\nwithout YJIT, shape-friendly code is faster to execute, but\ninitializing instance variables to nil is quite slow. On older\nRuby versions, there is not a significant advan\n[…]\nat removes nil instance variables\nduring marshalling and restores them on unmarshalling.\n\nTo run tests with shape-friendly mode on by default, use the\nSEQUEL_MODEL_SHAPE_FRIENDLY environment variable.",
"is_bot": false,
"headline": "Support shape-friendly Model instances via Model.shape_friendly = true",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-05-09T23:22:27Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "2e33acc01faed49f8aeee8ddb364f8fa907cfb4e",
"body": "…alizer\n\nThere were no explicit specs for this. The code was being run, but\nnow it appears to run after the coverage measurement, so it shows\nas uncovered. Add explicit specs to cover it.",
"is_bot": false,
"headline": "Add specs for Sequel::Database::AsyncThreadPool::JobProcessor.run_fin…",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-05-09T03:17:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b184a7d52d00e61c726f246174c8a596632039ea",
"body": "This avoids missing branch coverage, and it's better to raise an\nerror for external connection pool types that may not be handled.",
"is_bot": false,
"headline": "Switch conditionals in connection_expiration plugin",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-05-09T03:17:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "694ea77983746754e0035b1f8330f9091caa31e5",
"body": "Remove register_queued_connections method, as it only applies to timed\nqueue pools, so in some cases it may not be used. Move the logic to a\nlambda inside extended, and only create it if a timed queue connection\npool is used.\n\nRename register_connection to register_connection_expiration_time to\nmake it clear from the name what it is doing. Also make it return the\nconnection, to simplify calling code.\n\nUpdate CHANGELOG.",
"is_bot": false,
"headline": "Minor changes to connection_expiration handling of initial connections",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-05-08T16:35:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c52de6420619d27c7166f1d2cd25a81f2a5e8176",
"body": null,
"is_bot": false,
"headline": "Adds expiration for existing connections when added to a db",
"author_name": "Jacob Feldman",
"author_login": "cooljacob204",
"committed_at": "2026-05-08T15:42:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6a84e80fa5f619dd4d6699b12d67de2dab6f0666",
"body": "This adds some additional doc files that are referenced, so links\ninside the documentation are created appropriately.",
"is_bot": false,
"headline": "Avoid rdoc-ref resolution errors when building plugin/extension rdoc",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-05-01T16:19:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4642b4a2b6cb4a711e615da26a5f3f0a6166981d",
"body": null,
"is_bot": false,
"headline": "Bump version to 5.104.0",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-05-01T15:58:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "67d897c8b74cf88cb8f1e9f26b0b5d08db57cd11",
"body": "Mention the % operator support, and update the string operator\nsupport to not imply that the mathematical operators do not support\nthe numeric coercion protocol.",
"is_bot": false,
"headline": "Fix some minor issues in the Sequel for SQL users guide",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-04-27T23:50:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bdf0c1e88a3dd853376f52bd7d084f1c0223f9b2",
"body": null,
"is_bot": false,
"headline": "Add JRuby 10.1 to matrix",
"author_name": "Chad Wilson",
"author_login": "chadlwilson",
"committed_at": "2026-04-22T15:45:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f060c6c48e3e7f649943c9432b2e2ccaa0100e53",
"body": null,
"is_bot": false,
"headline": "test: fix must_raise assertions on minitest 6.0.5",
"author_name": "Chad Wilson",
"author_login": "chadlwilson",
"committed_at": "2026-04-22T14:28:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d40f4d3ff9ba23ca4ddb288651c777108109ae9b",
"body": "These databases do not support LATERAL. The\nmssql_emulate_lateral_with_apply extension allows partial emulation\nof LATERAL into APPLY, but the emulation is not good enough to\nallow the :lateral_subquery limit strategy to work.",
"is_bot": false,
"headline": "Skip lateral_subquery association tests on MSSQL and SQLAnywhere",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-04-16T05:17:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "025bdf70e1c661f5fe2e18d8971506083d292721",
"body": "Now that all :lateral_subquery is supported for all association\ntypes and all types of loading (eager loading, eager graphing,\nfiltering by associations, and dataset associations), it can be\nsimplified.",
"is_bot": false,
"headline": "Simplify lateral_subquery integration testing",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-04-14T07:16:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b826e2b34ae8c834c368d5c0952b19210dd90933",
"body": "…in the dataset associations plugin\n\nThis builds on the eager loading support, since dataset associations\nare similar to eager loading, but filtering using a dataset instead\nof an array.\n\n```ruby\nArtist.one_to_many :first_10_albums, class: :Album, limit: 10,\n filter_limit_strategy: :lateral_subquer\n[…]\n FROM albums\n WHERE (artists.id = albums.artist_id)\n ORDER BY name\n LIMIT 10\n) AS albums ON true\nWHERE (artists.id IN (\n SELECT artists.id\n FROM artists\n WHERE (name > 'M')\n))\nORDER BY name\n```",
"is_bot": false,
"headline": "Support :lateral_subquery as a filter by associations limit strategy …",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-04-14T07:16:02Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "98a70d24ae89af546b56fd1fb201d90aae067b5e",
"body": "Move apply_lateral_subquery_eager_limit_strategy to the\nAssociationReflection class, and override it as needed per assocation\ntype.\n\nAdd a lateral_subquery_eager_limit_strategy_lateral_dataset for\ncustomizing the lateral subquery, and override it for many_to_many\nto handle removing the associated key (which is on the main query\nand not on the lateral subquery).",
"is_bot": false,
"headline": "Refactor :lateral_subquery eager limit strategy support",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-04-14T07:16:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1ad2e967e8ab35c9a57e5b9ef5e0e07cfbfb27f3",
"body": "…_many/one_through_many associations\n\nThis inherits support from many_to_many, no code changes are needed.\n\n```ruby\nArtist.many_through_many :first_10_tags,\n [[:albums, :artist_id, :id], [:albums_tags, :album_id, :tag_id]],\n class: :Tag, limit: 10, order: :name,\n eager_limit_strategy: :lateral_su\n[…]\n\n INNER JOIN albums ON (albums.id = albums_tags.album_id)\n WHERE (artists.id = albums.artist_id)\n ORDER BY tags.name\n LIMIT 10\n) AS tags ON true\nWHERE (artists.id IN (1, 2))\nORDER BY tags.name\n```",
"is_bot": false,
"headline": "Support :lateral_subquery as an eager limit strategy for many_through…",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-04-14T06:55:46Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "49c7f746fc363809d4b929ca3536f2da13340333",
"body": "Now that the main association types all support the strategy, we can\nlook at the code and see what is common for each. This extracts three\ngeneral association reflection methods:\n\n* apply_lateral_subquery_filter_limit_strategy: Top level method that\n applies the entire filter\n\n* lateral_subquery_fi\n[…]\n:\n The column(s) that the lateral dataset should select\n\nThe only change is to the SQL for the one_to_many/one_to_one\ncases, where the lateral subquery now only selects the specific\ncolumns it needs.",
"is_bot": false,
"headline": "Refactor :lateral_subquery filter by associations limit strategy code",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-04-14T06:55:46Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "8f79b97d1a0b548b535fdcacba6d39fe8a1af5e7",
"body": "…for many_through_many/one_through_many associations\n\nFrom my testing, this is about 30x faster than the\ndistinct on and window function strategies.\n\n```ruby\nAlbum.many_through_many :first_10_tags,\n [[:albums, :artist_id, :id], [:albums_tags, :album_id, :tag_id]],\n class: :Tag, limit: 10, order: :\n[…]\n= 1)\n WHERE (artists.id IN (\n SELECT albums.artist_id\n FROM albums\n INNER JOIN albums_tags ON (albums_tags.album_id = albums.id)\n WHERE (albums_tags.tag_id = 1))\n ))\n)\nORDER BY name;\n```",
"is_bot": false,
"headline": "Support :lateral_subquery as a filter by associations limit strategy …",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-04-14T06:55:46Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "af97ecca6b64c943f4bfb5f6bdd8cbf646f9acc7",
"body": "…hrough_many/one_through_many associations\n\nThis was already supported when the many_to_many/one_through_one\nsupported was added, due to association reflection inheritance,\nthis just adds specs\n\nIn my testing, this is about 2-3x faster than the ruby strategy.",
"is_bot": false,
"headline": "Support :lateral_subquery as an eager_graph limit strategy for many_t…",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-04-14T06:55:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c752737b053fd817ade423e576b10ed080c18660",
"body": "…/one_through_one associations\n\n```ruby\nAlbum.many_to_many :first_10_tags, class: :Tag, limit: 10,\n order: :name, eager_limit_strategy: :lateral_subquery\nAlbum(eager: :first_10_tags).all\n```\n\nSQL:\n\n```sql\nSELECT * FROM albums;\n\nSELECT tags.*, albums.id AS x_foreign_key_x\nFROM albums\nINNER JOIN LATE\n[…]\nFROM tags\n INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id)\n WHERE (albums_tags.album_id = albums.id)\n ORDER BY name\n LIMIT 10\n) AS tags ON true\nWHERE (albums.id IN (2))\nORDER BY name;\n```",
"is_bot": false,
"headline": "Support :lateral_subquery as an eager limit strategy for many_to_many…",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-04-14T06:55:46Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "a157b2865b305df7f134de3a528376dcec11c218",
"body": "When including association specs through modules, the auto numbering\nof specs doesn't ensure uniqueness, if multiple modules have the\nsame spec name in the same position.",
"is_bot": false,
"headline": "Fix association spec names",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-04-14T06:55:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a1dbf12f18fb924dda4770f29ae727a9fd4d7778",
"body": "… for many_to_many/one_through_one associations\n\nFrom my testing, this is 30x faster than the distinct on and window\nfunction strategies.\n\n```ruby\nAlbum.many_to_many :first_10_tags, class: :Tag, limit: 10,\n order: :num, filter_limit_strategy: :lateral_subquery\nAlbum.where(first_10_tags: Tag[3]).all\n[…]\n WHERE (albums.id = albums_tags.album_id)\n ORDER BY num\n LIMIT 10\n ) AS tags ON (tags.id = 3)\n WHERE (albums.id IN (\n SELECT album_id\n FROM albums_tags\n WHERE (tag_id = 3)\n ))\n))\n```",
"is_bot": false,
"headline": "Support :lateral_subquery as an filter by associations limit strategy…",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-04-14T06:55:46Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "513b767ec1b79820c95317eab0f591818c77db26",
"body": "This will allow more testing these in isolation without bringing\nin other specs.",
"is_bot": false,
"headline": "Move some association integration tests into separate modules",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-04-14T06:55:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a68237dac26a2d43572afee38aa78094be8253d5",
"body": "…o_many/one_through_one associations\n\nFrom my testing, this is 2-3 times as fast as the :ruby strategy in\ncases with a lot of associated records and a small limit.\n\n```ruby\nArtist.many_to_many :first_10_albums, class: :Album, limit: 10, order: :release_date\nArtist.where(id: [1, 2]).eager_graph_with_\n[…]\nx = artists.id)\nWHERE (id IN (1, 2))\nORDER BY first_10_albums.release_date\n```\n\nThis actually fit in much easier than the one_to_many/one_to_one\nsupport, not requiring any changes to the general code.",
"is_bot": false,
"headline": "Support :lateral_subquery as an eager graph limit strategy for many_t…",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-04-14T03:31:22Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "a0c7e82c065adc78be0174f690cd1519585416f8",
"body": "…one_to_one associations\n\nWhether this is faster than other strategies likely depends on the\ndatabase.\n\n```ruby\nArtist.where(id: [1, 2]).eager(:first_10_albums).all\n```\n\nSQL:\n\n```sql\nSELECT * FROM artists WHERE (id IN (1, 2))\n\nSELECT albums.*\nFROM artists\nINNER JOIN LATERAL (\n SELECT *\n FROM album\n[…]\neager block is provided).\n\nThis also inlines quite a bit of logic into\napply_lateral_subquery_eager_limit_strategy. Some of this may be\nextracted into another method if it can be reused by other code.",
"is_bot": false,
"headline": "Support :lateral_subquery as an eager limit strategy for one_to_many/…",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-04-14T03:30:31Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "008698d98b07c4119890a542cac54e2f9d4b26ba",
"body": "…for one_to_many/one_to_one associations\n\nThis can be over 100 times faster than the current filter limit\nstrategies, though most of that is due to additional subquery filter\nand not the use of LATERAL by itself.\n\n```ruby\nalbum = Album[1]\nalbum.artist_id # => 2\nArtist.where(first_10_albums: album).a\n[…]\nions_conditions_dataset.\n\nThis also inlines quite a bit of logic into\napply_lateral_subquery_filter_limit_strategy. Some of this may be\nextracted into another method if it can be reused by other code.",
"is_bot": false,
"headline": "Support :lateral_subquery as a filter by associations limit strategy …",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-04-09T03:29:18Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "1aa11fbaedcaeac708fbbe671d26dc8a57089626",
"body": "…_many/one_to_one associations\n\nThis is the first eager_graph limit strategy that appears to be faster\nthan the default strategy of retrieving all records and filtering in\nRuby.\n\n```\nArtist.eager_graph_with_options(:first_10_albums, limit_strategy: :lateral_subquery).all\n```\n\nSQL:\n\n```sql\nSELECT art\n[…]\nlateral_subquery case. As only one_to_many/one_to_one\nassociations current support the lateral_subquery case, this is not\ngreat, but there are future plans to support this for more\nassociations types.",
"is_bot": false,
"headline": "Support :lateral_subquery as an eager_graph limit strategy for one_to…",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-04-09T03:29:18Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "973f60e004c51cddb63d94b0693cdbc8b01e0fab",
"body": null,
"is_bot": false,
"headline": "Fix bad example code in 5.103.0 release notes",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-04-01T16:24:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "37f97a1880291b0c5c12b2bb9e1f6aa939606ad5",
"body": null,
"is_bot": false,
"headline": "Bump version to 5.103.0",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-04-01T16:09:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8792c732a5489ec1e5978e242ba51218ab3d9e5c",
"body": "Minitest 6.0.3 made a backwards incompatible change to must_be_same_as\nto disallow nil values.",
"is_bot": false,
"headline": "Update specs to work with minitest 6.0.3",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-04-01T15:43:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "23634d8950a69e43528072aabf7e5e7b1fff1578",
"body": "…erride argument values\n\nThis is mostly to catch problems such as:\n\n```ruby\ncolumn :column_name, :table_name, type: :type_name\n```\n\nIn this case, it was likely the intention that column should have\ninstead been foreign key, as the :table_name argument is ignored.\nBehavior here cannot be changed for \n[…]\nnly shows the file and line numbers in the warning on Ruby\n3.2+, as it uses Thread.each_caller_location. This could probably\nbe changed to support older Ruby versions, but I'm not sure it\nis worth it.",
"is_bot": false,
"headline": "Have column and add_column in the generators warn if option values ov…",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-03-26T20:59:26Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "fb3df68e3460189edbf8b54cc2336b114a4e555b",
"body": "Use a simple if instead of case. Anything that is not an array can\nbe handled by _check_unfrozen_literal_string.",
"is_bot": false,
"headline": "Simplify code in lit_require_frozen",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-03-24T23:48:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "930b8860a01ed87905dd336473cc91c871f35e6c",
"body": "…tion message\n\nThis should ease debugging. For exceptions other than NoMethodError,\nalso use a more descriptive exception method.\n\nTo handle add_primary_key with an array, have it call super so it\nraises NoMethodError, so that we report the problem. It might be\nslightly misleading, as add_primary_ke\n[…]\nerse method to use rescue/else\nwhile here.\n\nThe existing specs that didn't check the exception message sort of\nworked by accident. Check the exception message in all specs for\nirreversible migrations.",
"is_bot": false,
"headline": "Show method name causing change migration to be irreversible in excep…",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-03-24T23:46:41Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "1d68f7750444d9cf9a0b17cff05a4f21a3e55937",
"body": "While it's unlikely to be helpful to have non-model columns in\nchanged_columns, the dirty plugin should not modify existing model\nbehavior unnecessarily.",
"is_bot": false,
"headline": "Always call super in Model#change_column_value in dirty plugin",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-03-23T17:05:26Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5c48c9deef4b313b8c676ad2cc80b162b1a00230",
"body": "…odel columns (Fixes #2357)",
"is_bot": false,
"headline": "Make dirty plugin handle the Model#[]= calls with keys that are not m…",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-03-23T16:53:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e849fd3c87ebb5478900b17febc393e4fe89a98f",
"body": null,
"is_bot": false,
"headline": "Fix doc typo: s/get get/to get/",
"author_name": "J. Lewis Muir",
"author_login": "jlmuir",
"committed_at": "2026-03-23T03:44:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "66e72a317afd855bc8b93e5480e38bd67e7b8ba8",
"body": "These aren't vulnerabilities in the plugin itself, and they require\na separate attack to even be vulnerable, but I think it's still\nworth documenting them so users are aware.",
"is_bot": false,
"headline": "Document potential security concerns in the serialization plugin",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-03-21T17:27:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "df447b4b2c0d7b82d7274c130d9156e6bf5d7b4c",
"body": "The existing code was probably left over from Ruby 1.8 support.",
"is_bot": false,
"headline": "Use start_with? in the serialization plugin",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-03-21T17:16:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4bc3d4d3b11866ec1243104b8b0a2ba3992d3c90",
"body": null,
"is_bot": false,
"headline": "Bump copyright year",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-03-14T20:20:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "98450553ad334a7e33a90ec6de581806674b5365",
"body": null,
"is_bot": false,
"headline": "Update to actions/checkout@v6",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-03-14T20:20:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e2f26024cfccd10238e206dc3a4e989f83680f94",
"body": "…d upstream\n\nNo deprecation warning yet, but the plan is to remove the adapter\nin Sequel 6.",
"is_bot": false,
"headline": "Soft-deprecate the jdbc/derby adapter, as Derby is no longer supporte…",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-03-09T04:49:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1540a8f3a9522e307605adab2e2f85023a319711",
"body": "…trings as literal SQL\n\nThis is designed for use with Ruby 3+ and frozen-string-literal,\nwhere interpolated string literals are unfrozen and may not be\nsafe, but uninterpolated string literals are frozen and are likely\nto be safe:\n\n Probably safe, no exception raised\n DB[\"SELECT * FROM t WHERE c > :v\", v: user_provided_string)\n\n Potentially unsafe, raises Sequel::LitRequireFrozen::Error\n DB[\"SELECT * FROM t WHERE c > '#{user_provided_string}'\"]",
"is_bot": false,
"headline": "Add lit_require_frozen extension, for disallowing usage of unfrozen s…",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-03-04T05:03:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "56a7300e3df406f948439b4772a1b9ddbf18c65f",
"body": "This allows for overriding the behavior of appending a literal\nstring to a dataset. Prior to this, overriding the behavior\nrequired overriding the top-level literal_append method.",
"is_bot": false,
"headline": "Add Dataset#literal_literal_string_append private method",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-03-04T05:03:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "da722f37844def9f925b1fcdfc81aa2877719797",
"body": "This is to ensure strings in the evaled code are also frozen.",
"is_bot": false,
"headline": "Add frozen_string_literal magic comment to a couple evals",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-03-04T05:03:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5322096dba8e1edb937a42ccb473dd480f78cbf8",
"body": "This adds freeze calls at numerous places internally, to prepare for\nan upcoming extension that can disallow operations on unfrozen\nstrings.",
"is_bot": false,
"headline": "Freeze more internally",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-03-04T05:03:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5231f7b12a59cc1122fe279d14c6bc53f887f4d9",
"body": "…t filtering method\n\nWe do not know how large the literal string is, and the previous code\nwould attempt to duplicate it twice, once as an interpolated plain\nstring surrounded by parentheses, and second as a literal string\nwrapping that.\n\nThis new code still creates two objects, but both are small.\n\nThis changes the internal representation of the object, which\nbreaks a to_dot spec. Switch from using filter to select to keep\nthe spec simpler.",
"is_bot": false,
"headline": "Avoid creating multiple strings when passing literal string to datase…",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-03-04T00:54:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "952d0c46434ecd6b1f81e30c5bba2378c540beb2",
"body": "All specs except one pass, because the release process includes\ntesting with --debug=frozen-string-literal\n--enable-frozen-string-literal on Ruby 2.7.\n\nOnly affected spec is a pg_auto_parameterize extension spec, which\npasses with --debug=frozen-string-literal but fails without it.\nFix that by using String#dup to ensure there are two separate\nobjects being used.",
"is_bot": false,
"headline": "Add frozen_string_literal magic comment to spec files",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-03-03T20:20:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ee7936438b615a9d290c05f9d8fd642bb6befae1",
"body": "…ions\n\nfill_queue is used by the timed queue connection pool so that if there\nis a disconnection while a thread is waiting to checkout a connection,\na new connection is created immediately. However, you never need to\ncreate more new connections than there were disconnections to handle\nthat case. The\n[…]\n the\nmutexes, this isn't problematic, though it is slightly inefficient.\nConsidering disconnects should be rare, this shouldn't be a problem,\nand optimizing for disconnect handling is probably unwise.",
"is_bot": false,
"headline": "Have fill_queue create no more connections than there were disconnect…",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-03-01T22:59:45Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "7948e9ba6b4373aa649d4d374feddb0f3a77f506",
"body": null,
"is_bot": false,
"headline": "Bump version to 5.102.0",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-03-01T19:02:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ab3525552bc8de9cc7326da37f1de05df4c2b5ec",
"body": "fill_queue starts a thread, so depending on timing, later expectations\ncan fail (seen locally with JRuby).",
"is_bot": false,
"headline": "Avoid nondeterministic behavior in timed queue connection pool specs",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-02-27T15:33:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3caf120f1b8f86fcecf0dcc1e03ef2c3b12e1c0f",
"body": "…t handle shared_timed_queue connection pool (Fixes #2354)\n\nPreviously, these extensions did not handle the shared_timed_queue\nconnection pool when disconnecting connections. The\nsharded_timed_queue needs extra care due to it's management of the\npool size. Add a disconnect_acquired_connection private method\nto the connection pool designed for use by these extensions, and\ncall that. Override the method in shared_timed_queue to correctly\ndecrement the size.",
"is_bot": false,
"headline": "Make connection_validator and connection_expiration extensions correc…",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-02-25T16:34:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cb8d60dd841b1319393f763eb4dffdd09c69bc44",
"body": null,
"is_bot": false,
"headline": "Remove extra + in rdoc formatting",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-02-18T04:43:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c556c41f0e246c9ccbc41548353a79f08a91cf06",
"body": null,
"is_bot": false,
"headline": "Fix doc typo: s/Sequel.connection/Sequel.connect/",
"author_name": "J. Lewis Muir",
"author_login": "jlmuir",
"committed_at": "2026-02-18T03:53:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4bce3850a2b0199e3ad57dc80abe8b907f956fcd",
"body": "…ck spec\n\nApparently, 10.times{Thread.pass} isn't enough. Use num_waiting on\nthe connection pool to wait until the second thread is definitely\nwaiting for a connection before proceding.\n\nWhile here, DRY up to the code that runs in separate threads.",
"is_bot": false,
"headline": "Fix nondeterministic test failure in connection_checkout_event_callba…",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-02-01T17:43:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "211a41e2435afc41fe5ba3d1474877304d2bb4fd",
"body": "…ing telemetry information",
"is_bot": false,
"headline": "Add connection_checkout_event_callback extension to assist in collect…",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-02-01T17:22:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "54b745c7597804d74fa8f8ccaa3625cf8a849ea5",
"body": "…ion pools\n\nThese DRY some existing code up, and will allow for easier extension.\n\nFor the sharded connection pool, the server argument isn't used by\ndefault, but it is passed so extensions can use it.",
"is_bot": false,
"headline": "Add available and wait_until_available methods to timed queue connect…",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-02-01T17:21:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e042ab7bbb936cde17019c2ff1507502bcdb56a2",
"body": null,
"is_bot": false,
"headline": "Bump version to 5.101.0",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-02-01T17:05:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8ea9e4544772bac8aa49c4a31775ce4afab44f07",
"body": "Apparently MySQL 9.6.0 fails with the previous code, apparently\nchecking for a foreign key match before generating the primary key\nfor a self-referencing foreign key constraint.\n\nFailure:\n\nEagerly loading a tree structure#before_all:\nSequel::ForeignKeyConstraintViolation: Mysql2::Error: Cannot add o\n[…]\na foreign key constraint fails (`sequel_test`.`nodes`, CONSTRAINT `nodes_ibfk_1` FOREIGN KEY (`parent_id`) REFERENCES `nodes` (`id`))\n\nThis started happening with MySQL 9.6.0. MySQL 9.5.0 worked fine.",
"is_bot": false,
"headline": "Work around regression in MySQL 9.6.0 in eager loader test",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-01-23T07:34:45Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "4293be3cb8dbb50992e2ee7c55415928e728512e",
"body": "Importantly, mention the only two cases where the return value\nshould be relied on.\n\nAlso document the behavior on PostgreSQL with RETURNING, since it\ncan be suprising.",
"is_bot": false,
"headline": "Document #import return values (Fixes #2347)",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-01-05T19:36:26Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5ebcb7ab31f544867b20ec6a373969dc1ae01932",
"body": "…nnecessary association options\n\nThis allows for detecting explicitly specified options that are the\nsame as Sequel's default for the option. The options then can be\nremoved, making the code cleaner (though less explicit).",
"is_bot": false,
"headline": "Add detect_unnecessary_association_options plugin to warn/raise for u…",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-01-05T17:07:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "25ee6b988d34c39e1f646230ade5eaf7769371d3",
"body": null,
"is_bot": false,
"headline": "Bump version to 5.100.0",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2026-01-01T16:57:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5c85ac912be9136da720ddd6f1fd132705e0e74e",
"body": "…sh replacement\n\nUse Regexp.union instead of Array#map with Regexp.escape and\nArray#join.\n\nUse until instead of while true and break.\n\nAssume $1 will be set if there is a partition (the q[1..-1] fallback\nwas only used on Ruby < 1.9, where String#partition with regexp\ndidn't set $1).",
"is_bot": false,
"headline": "Simplify Sequel::SQL::PlaceholderLiteralString literalization with ha…",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2025-12-22T20:50:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fbed5ce010b66a2098ebfd6164a26bc5e836e929",
"body": null,
"is_bot": false,
"headline": "Add Ruby 4.0 to CI",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2025-12-22T00:51:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6a91246a0f18a3353f9d1f6982f344cd05bcc8ca",
"body": "The previous code was invalid, but happened to work on the common\ndatabases that have optimizations for import.",
"is_bot": false,
"headline": "Fix single_statement_dataset_destroy plugin test",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2025-12-18T21:42:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "76ce8894fc6290c6f993cd2135d33f4cdc93c0c8",
"body": "Instead of doing any mocking, register an actual adapter class,\ntest without mocking, and remove the registered adapter class.",
"is_bot": false,
"headline": "Simplify mocking replacement",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2025-12-18T20:37:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b237f2607b7cb90c84afda30b408357687978adf",
"body": "This appears to be the only minitest mock/stub usage in the specs.\nminitest 6 moved the mock/stub code to a separate gem, and it's\nnot worth adding a dependency on that for one spec.",
"is_bot": false,
"headline": "Remove use of minitest stub",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2025-12-18T17:41:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dd2ee9c4859aab9229bc922d57aa68b7ea80f325",
"body": "These tests will fail on recent released versions of sequel_pg, due\nto a bug in sequel_pg. They will pass with sequel_pg's master branch.\nThere will be a sequel_pg release shortly containing the fix.",
"is_bot": false,
"headline": "Add spec for postgres adapter use_cursor with map/hash/set methods",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2025-12-16T21:35:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9f7c775a0f40b99b3433ca5576e9eae90408db69",
"body": "…ed_associations plugin\n\nPreviously, the :is_used association option only interacted with the\n:modify_associations plugin option, disabling the ignoring of this\nassociation. With this change, associations that use :is_used are\nnot reported as unused.\n\nWhile here, mention mocking as a possible cause of false positives\nwith this plugin.",
"is_bot": false,
"headline": "Do not report associations with :is_used option as unused in the unus…",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2025-12-13T02:01:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3032873f770cd443b4496dc7583d24a79c43eb0a",
"body": "…tput",
"is_bot": false,
"headline": "Make Postgres::PGRange#to_s an alias of #inspect, showing friendly ou…",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2025-12-10T20:26:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f0d918922ef05bd4b591a3ecf3e01c652519e6fd",
"body": "…uses a single DELETE statement\n\nHistorically, Sequel has always used a separate DELETE query per\nrow, since dataset.destroy was the same as all(&:destroy). However,\nthe only readon to use destroy over delete is to run the destroy\nhooks. If you don't have around_destroy hooks, you can run the\nbefore\n[…]\nhe all\nmatches the number of rows deleted. If not, an exception is\nraised and the changes are rolled back. This will not catch\na case where an existing entry is removed and a new one is\nadded, though.",
"is_bot": false,
"headline": "Add single_statement_dataset_destroy plugin, so that dataset.destroy …",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2025-12-07T02:15:02Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "78c768713972fd6042a37878485df12fddbe0be6",
"body": "This wasn't supported originally because COLLATE is handled as a\nseparate clause and not part of the type name. At least PostgreSQL\n9.1+ and MySQL support this.",
"is_bot": false,
"headline": "Support :collate option in set_column_type",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2025-12-07T01:08:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "78e600b0755db11cd711a575374305795f32abc2",
"body": null,
"is_bot": false,
"headline": "Bump version to 5.99.0",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2025-12-01T18:20:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e9288c6fb82035726aa665ba106367ae8de9128c",
"body": null,
"is_bot": false,
"headline": "Fix typo in CHANGELOG",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2025-12-01T18:20:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7b3b9b6bd3cbf310a8e2a744573cb64a847ec8e9",
"body": null,
"is_bot": false,
"headline": "Fix link to pg_auto_parameterize_duplicate_query_detection extension",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2025-11-24T16:06:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "caeddc85aa27115467342a7d605f605f411bf0e4",
"body": "This will automatically optimize the case where sequel/core is\nloaded, then sequel/adapters/postgres (with sequel_pg), then\nsequel/model. Previously in that case, the model code optimizations\nwould be skipped.\n\nThis is done only if sequel_pg 1.18+ is used, because that is the\nfirst version that splits the model code into its own file.",
"is_bot": false,
"headline": "Require sequel_pg/model when loading models if sequel_pg 1.18+ is loaded",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2025-11-24T00:53:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "839bec6a457e83d12a3295106fce0b8519d3da58",
"body": "These helped find some minor issues with sequel_pg",
"is_bot": false,
"headline": "Add a bunch of integration tests for dataset behavior",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2025-11-24T00:34:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1e7cf0433e22a0ca67987ffacbf45f7aafaed8df",
"body": "This was copied from _select_map, but select_set doesn't support\nan order (as sets are unordered), so it is not needed.",
"is_bot": false,
"headline": "Remove unnecessary line in Dataset#select_set",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2025-11-23T02:48:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "746d3e0039af4699203dd046b4c4a2d27a2b4bbf",
"body": "… MSSQL, MySQL, and PostgreSQL",
"is_bot": false,
"headline": "Support passing a set as a Dataset#full_text_search terms argument on…",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2025-11-23T02:48:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "64839bd26667eeeade309d786ecf08e6a9e7a43f",
"body": "…ache plugin",
"is_bot": false,
"headline": "Optimize Dataset#as_set calls to avoid queries in the subset_static_c…",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2025-11-23T02:48:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0641461bfa600ff6bb56caf15505d069b237c98f",
"body": null,
"is_bot": false,
"headline": "Optimize Model.as_set calls to avoid queries in the static_cache plugin",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2025-11-23T02:48:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c8f003b7f4ffaf7ee4491848091fc1d8453fd86e",
"body": "…ons plugin\n\nWhile here, add a test for filtering by associations with sets\nto the many_through_many plugin, but that did not require any\nchanges.",
"is_bot": false,
"headline": "Support filtering by associations with sets in the pg_array_associati…",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2025-11-23T02:48:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a03e33c9a0b8c9c4be150a6b9b23a9606181cabd",
"body": null,
"is_bot": false,
"headline": "Support sets in the to_dot extension",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2025-11-23T02:48:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d43194893900957565c26e19af4dc0dadeaa97dd",
"body": null,
"is_bot": false,
"headline": "Support splitting nil values from sets in the split_array_nil extension",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2025-11-23T02:48:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e357a2a0907efba3d9b66776c37c515ce0efcef3",
"body": null,
"is_bot": false,
"headline": "Fix typo in PGRow::Parser#typecast documentation",
"author_name": "Jeremy Evans",
"author_login": "jeremyevans",
"committed_at": "2025-11-23T02:48:20Z",
"body_truncated": false,
"is_coding_agent": false
}
],
"releases_count": 100,
"commits_last_year": 164,
"latest_release_at": "2026-07-01T15:46:47Z",
"latest_release_tag": "5.106.0",
"releases_from_tags": true,
"days_since_last_push": 2,
"active_weeks_last_year": 41,
"days_since_latest_release": 20,
"mean_days_between_releases": 30.3
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": true,
"health_percentage": 57,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"ecosystem": {
"packages": [
{
"name": "sequel",
"exists": true,
"license": "MIT",
"keywords": [],
"ecosystem": "rubygems",
"matches_repo": true,
"registry_url": "https://rubygems.org/gems/sequel",
"is_deprecated": false,
"latest_version": "5.106.0",
"repository_url": "https://github.com/jeremyevans/sequel",
"versions_count": 307,
"total_downloads": 72208559,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": null,
"monthly_downloads": null,
"first_published_at": "2009-07-25T17:53:00Z",
"latest_published_at": "2026-07-01T16:37:07.454000Z",
"latest_version_yanked": null,
"days_since_latest_publish": 20
}
]
},
"popularity": {
"forks": 1075,
"stars": 5087,
"watchers": 106,
"fork_history": {
"days": [
{
"date": "2011-11-14",
"count": 1
},
{
"date": "2011-11-17",
"count": 1
},
{
"date": "2011-11-20",
"count": 1
},
{
"date": "2011-12-02",
"count": 1
},
{
"date": "2011-12-04",
"count": 1
},
{
"date": "2011-12-11",
"count": 1
},
{
"date": "2011-12-19",
"count": 1
},
{
"date": "2011-12-27",
"count": 1
},
{
"date": "2012-01-10",
"count": 1
},
{
"date": "2012-01-16",
"count": 1
},
{
"date": "2012-01-20",
"count": 1
},
{
"date": "2012-01-25",
"count": 1
},
{
"date": "2012-01-31",
"count": 1
},
{
"date": "2012-02-05",
"count": 1
},
{
"date": "2012-02-29",
"count": 1
},
{
"date": "2012-03-11",
"count": 1
},
{
"date": "2012-03-13",
"count": 1
},
{
"date": "2012-03-15",
"count": 2
},
{
"date": "2012-03-20",
"count": 1
},
{
"date": "2012-03-24",
"count": 1
},
{
"date": "2012-03-27",
"count": 2
},
{
"date": "2012-04-09",
"count": 1
},
{
"date": "2012-04-11",
"count": 1
},
{
"date": "2012-04-14",
"count": 1
},
{
"date": "2012-04-23",
"count": 1
},
{
"date": "2012-04-24",
"count": 1
},
{
"date": "2012-05-09",
"count": 1
},
{
"date": "2012-05-14",
"count": 1
},
{
"date": "2012-05-23",
"count": 1
},
{
"date": "2012-05-24",
"count": 1
},
{
"date": "2012-05-27",
"count": 1
},
{
"date": "2012-05-28",
"count": 1
},
{
"date": "2012-06-04",
"count": 2
},
{
"date": "2012-06-17",
"count": 1
},
{
"date": "2012-06-21",
"count": 1
},
{
"date": "2012-07-01",
"count": 1
},
{
"date": "2012-07-13",
"count": 1
},
{
"date": "2012-07-14",
"count": 1
},
{
"date": "2012-07-19",
"count": 1
},
{
"date": "2012-07-20",
"count": 1
},
{
"date": "2012-07-25",
"count": 1
},
{
"date": "2012-07-31",
"count": 1
},
{
"date": "2012-08-08",
"count": 1
},
{
"date": "2012-08-13",
"count": 1
},
{
"date": "2012-08-21",
"count": 1
},
{
"date": "2012-08-22",
"count": 1
},
{
"date": "2012-08-30",
"count": 1
},
{
"date": "2012-09-04",
"count": 1
},
{
"date": "2012-09-14",
"count": 1
},
{
"date": "2012-09-15",
"count": 1
},
{
"date": "2012-09-30",
"count": 1
},
{
"date": "2012-10-02",
"count": 1
},
{
"date": "2012-10-18",
"count": 1
},
{
"date": "2012-10-19",
"count": 1
},
{
"date": "2012-10-24",
"count": 1
},
{
"date": "2012-10-28",
"count": 1
},
{
"date": "2012-10-29",
"count": 1
},
{
"date": "2012-11-06",
"count": 1
},
{
"date": "2012-11-08",
"count": 1
},
{
"date": "2012-11-13",
"count": 1
},
{
"date": "2012-11-29",
"count": 1
},
{
"date": "2012-12-03",
"count": 1
},
{
"date": "2012-12-10",
"count": 1
},
{
"date": "2012-12-11",
"count": 1
},
{
"date": "2012-12-12",
"count": 1
},
{
"date": "2012-12-14",
"count": 1
},
{
"date": "2012-12-22",
"count": 1
},
{
"date": "2012-12-24",
"count": 1
},
{
"date": "2012-12-27",
"count": 1
},
{
"date": "2012-12-28",
"count": 1
},
{
"date": "2013-01-02",
"count": 1
},
{
"date": "2013-01-04",
"count": 1
},
{
"date": "2013-01-25",
"count": 1
},
{
"date": "2013-02-01",
"count": 1
},
{
"date": "2013-02-10",
"count": 1
},
{
"date": "2013-02-17",
"count": 1
},
{
"date": "2013-02-22",
"count": 1
},
{
"date": "2013-02-24",
"count": 1
},
{
"date": "2013-03-04",
"count": 2
},
{
"date": "2013-03-07",
"count": 1
},
{
"date": "2013-03-11",
"count": 1
},
{
"date": "2013-03-21",
"count": 1
},
{
"date": "2013-04-02",
"count": 1
},
{
"date": "2013-04-06",
"count": 1
},
{
"date": "2013-04-15",
"count": 2
},
{
"date": "2013-04-18",
"count": 1
},
{
"date": "2013-04-30",
"count": 2
},
{
"date": "2013-05-01",
"count": 1
},
{
"date": "2013-05-09",
"count": 1
},
{
"date": "2013-05-11",
"count": 1
},
{
"date": "2013-05-16",
"count": 1
},
{
"date": "2013-05-27",
"count": 1
},
{
"date": "2013-05-29",
"count": 1
},
{
"date": "2013-06-01",
"count": 1
},
{
"date": "2013-06-04",
"count": 1
},
{
"date": "2013-06-12",
"count": 1
},
{
"date": "2013-06-19",
"count": 1
},
{
"date": "2013-07-05",
"count": 1
},
{
"date": "2013-07-23",
"count": 1
},
{
"date": "2013-07-25",
"count": 2
},
{
"date": "2013-08-03",
"count": 1
},
{
"date": "2013-08-12",
"count": 1
},
{
"date": "2013-08-21",
"count": 2
},
{
"date": "2013-08-30",
"count": 1
},
{
"date": "2013-09-05",
"count": 1
},
{
"date": "2013-09-10",
"count": 2
},
{
"date": "2013-09-19",
"count": 1
},
{
"date": "2013-09-27",
"count": 1
},
{
"date": "2013-09-28",
"count": 1
},
{
"date": "2013-10-07",
"count": 2
},
{
"date": "2013-10-10",
"count": 1
},
{
"date": "2013-10-26",
"count": 1
},
{
"date": "2013-10-27",
"count": 1
},
{
"date": "2013-11-01",
"count": 1
},
{
"date": "2013-11-05",
"count": 2
},
{
"date": "2013-11-06",
"count": 1
},
{
"date": "2013-11-08",
"count": 1
},
{
"date": "2013-11-11",
"count": 1
},
{
"date": "2013-11-15",
"count": 3
},
{
"date": "2013-11-28",
"count": 1
},
{
"date": "2013-12-09",
"count": 1
},
{
"date": "2013-12-17",
"count": 1
},
{
"date": "2013-12-18",
"count": 1
},
{
"date": "2013-12-20",
"count": 1
},
{
"date": "2014-01-03",
"count": 1
},
{
"date": "2014-01-04",
"count": 1
},
{
"date": "2014-01-12",
"count": 1
},
{
"date": "2014-01-14",
"count": 1
},
{
"date": "2014-01-22",
"count": 1
},
{
"date": "2014-01-29",
"count": 1
},
{
"date": "2014-02-13",
"count": 1
},
{
"date": "2014-02-14",
"count": 1
},
{
"date": "2014-02-19",
"count": 1
},
{
"date": "2014-03-04",
"count": 1
},
{
"date": "2014-03-14",
"count": 1
},
{
"date": "2014-03-15",
"count": 1
},
{
"date": "2014-03-19",
"count": 1
},
{
"date": "2014-04-04",
"count": 1
},
{
"date": "2014-04-11",
"count": 1
},
{
"date": "2014-04-26",
"count": 1
},
{
"date": "2014-05-12",
"count": 1
},
{
"date": "2014-05-13",
"count": 1
},
{
"date": "2014-05-19",
"count": 1
},
{
"date": "2014-05-20",
"count": 1
},
{
"date": "2014-05-21",
"count": 1
},
{
"date": "2014-05-22",
"count": 1
},
{
"date": "2014-05-26",
"count": 1
},
{
"date": "2014-05-27",
"count": 1
},
{
"date": "2014-05-28",
"count": 2
},
{
"date": "2014-05-31",
"count": 2
},
{
"date": "2014-06-04",
"count": 1
},
{
"date": "2014-06-08",
"count": 1
},
{
"date": "2014-06-10",
"count": 2
},
{
"date": "2014-07-22",
"count": 1
},
{
"date": "2014-07-23",
"count": 2
},
{
"date": "2014-08-01",
"count": 1
},
{
"date": "2014-08-02",
"count": 1
},
{
"date": "2014-08-11",
"count": 1
},
{
"date": "2014-08-12",
"count": 1
},
{
"date": "2014-08-15",
"count": 1
},
{
"date": "2014-08-18",
"count": 1
},
{
"date": "2014-08-24",
"count": 1
},
{
"date": "2014-08-26",
"count": 1
},
{
"date": "2014-08-28",
"count": 1
},
{
"date": "2014-08-29",
"count": 1
},
{
"date": "2014-09-16",
"count": 1
},
{
"date": "2014-09-22",
"count": 1
},
{
"date": "2014-10-09",
"count": 1
},
{
"date": "2014-10-30",
"count": 1
},
{
"date": "2014-11-04",
"count": 1
},
{
"date": "2014-11-10",
"count": 2
},
{
"date": "2014-11-11",
"count": 1
},
{
"date": "2014-11-19",
"count": 1
},
{
"date": "2014-11-20",
"count": 1
},
{
"date": "2014-11-21",
"count": 1
},
{
"date": "2014-11-22",
"count": 1
},
{
"date": "2014-11-24",
"count": 1
},
{
"date": "2014-12-05",
"count": 1
},
{
"date": "2014-12-07",
"count": 1
},
{
"date": "2014-12-13",
"count": 1
},
{
"date": "2014-12-18",
"count": 1
},
{
"date": "2014-12-22",
"count": 1
},
{
"date": "2014-12-28",
"count": 1
},
{
"date": "2015-01-07",
"count": 1
},
{
"date": "2015-01-15",
"count": 1
},
{
"date": "2015-01-17",
"count": 1
},
{
"date": "2015-01-23",
"count": 1
},
{
"date": "2015-01-24",
"count": 1
},
{
"date": "2015-01-26",
"count": 1
},
{
"date": "2015-02-02",
"count": 2
},
{
"date": "2015-02-11",
"count": 1
},
{
"date": "2015-02-14",
"count": 1
},
{
"date": "2015-02-20",
"count": 1
},
{
"date": "2015-02-24",
"count": 1
},
{
"date": "2015-03-01",
"count": 1
},
{
"date": "2015-03-02",
"count": 1
},
{
"date": "2015-03-05",
"count": 1
},
{
"date": "2015-03-10",
"count": 2
},
{
"date": "2015-03-14",
"count": 1
},
{
"date": "2015-03-23",
"count": 2
},
{
"date": "2015-03-29",
"count": 1
},
{
"date": "2015-04-07",
"count": 1
},
{
"date": "2015-04-08",
"count": 1
},
{
"date": "2015-04-09",
"count": 1
},
{
"date": "2015-04-10",
"count": 1
},
{
"date": "2015-04-12",
"count": 1
},
{
"date": "2015-04-14",
"count": 1
},
{
"date": "2015-04-21",
"count": 1
},
{
"date": "2015-04-22",
"count": 2
},
{
"date": "2015-04-24",
"count": 2
},
{
"date": "2015-04-26",
"count": 1
},
{
"date": "2015-04-29",
"count": 1
},
{
"date": "2015-05-06",
"count": 1
},
{
"date": "2015-05-19",
"count": 1
},
{
"date": "2015-05-21",
"count": 1
},
{
"date": "2015-05-23",
"count": 1
},
{
"date": "2015-05-26",
"count": 1
},
{
"date": "2015-05-27",
"count": 1
},
{
"date": "2015-06-04",
"count": 1
},
{
"date": "2015-06-11",
"count": 1
},
{
"date": "2015-06-19",
"count": 2
},
{
"date": "2015-06-23",
"count": 1
},
{
"date": "2015-06-26",
"count": 1
},
{
"date": "2015-06-27",
"count": 1
},
{
"date": "2015-06-30",
"count": 1
},
{
"date": "2015-07-14",
"count": 1
},
{
"date": "2015-07-15",
"count": 1
},
{
"date": "2015-07-20",
"count": 1
},
{
"date": "2015-07-21",
"count": 1
},
{
"date": "2015-07-22",
"count": 1
},
{
"date": "2015-07-24",
"count": 1
},
{
"date": "2015-07-25",
"count": 1
},
{
"date": "2015-07-26",
"count": 1
},
{
"date": "2015-07-27",
"count": 1
},
{
"date": "2015-07-28",
"count": 1
},
{
"date": "2015-07-30",
"count": 1
},
{
"date": "2015-08-05",
"count": 1
},
{
"date": "2015-08-13",
"count": 1
},
{
"date": "2015-08-24",
"count": 1
},
{
"date": "2015-09-04",
"count": 1
},
{
"date": "2015-09-17",
"count": 1
},
{
"date": "2015-10-05",
"count": 1
},
{
"date": "2015-10-06",
"count": 1
},
{
"date": "2015-10-15",
"count": 1
},
{
"date": "2015-10-26",
"count": 1
},
{
"date": "2015-10-29",
"count": 1
},
{
"date": "2015-11-08",
"count": 1
},
{
"date": "2015-11-17",
"count": 1
},
{
"date": "2015-11-18",
"count": 2
},
{
"date": "2015-11-19",
"count": 1
},
{
"date": "2015-11-20",
"count": 3
},
{
"date": "2015-11-27",
"count": 1
},
{
"date": "2015-12-11",
"count": 2
},
{
"date": "2015-12-13",
"count": 1
},
{
"date": "2015-12-21",
"count": 1
},
{
"date": "2015-12-28",
"count": 2
},
{
"date": "2015-12-29",
"count": 1
},
{
"date": "2016-01-03",
"count": 1
},
{
"date": "2016-01-04",
"count": 1
},
{
"date": "2016-01-11",
"count": 1
},
{
"date": "2016-01-12",
"count": 1
},
{
"date": "2016-01-14",
"count": 1
},
{
"date": "2016-01-29",
"count": 1
},
{
"date": "2016-02-08",
"count": 1
},
{
"date": "2016-02-10",
"count": 2
},
{
"date": "2016-02-18",
"count": 2
},
{
"date": "2016-02-28",
"count": 1
},
{
"date": "2016-03-02",
"count": 1
},
{
"date": "2016-03-03",
"count": 1
},
{
"date": "2016-03-04",
"count": 1
},
{
"date": "2016-03-18",
"count": 1
},
{
"date": "2016-03-22",
"count": 1
},
{
"date": "2016-03-31",
"count": 1
},
{
"date": "2016-04-01",
"count": 2
},
{
"date": "2016-04-09",
"count": 1
},
{
"date": "2016-04-13",
"count": 1
},
{
"date": "2016-04-14",
"count": 1
},
{
"date": "2016-04-15",
"count": 1
},
{
"date": "2016-04-17",
"count": 1
},
{
"date": "2016-04-18",
"count": 1
},
{
"date": "2016-04-22",
"count": 1
},
{
"date": "2016-04-26",
"count": 1
},
{
"date": "2016-05-01",
"count": 1
},
{
"date": "2016-05-02",
"count": 1
},
{
"date": "2016-05-03",
"count": 2
},
{
"date": "2016-05-04",
"count": 2
},
{
"date": "2016-05-11",
"count": 1
},
{
"date": "2016-05-12",
"count": 1
},
{
"date": "2016-05-18",
"count": 1
},
{
"date": "2016-05-23",
"count": 1
},
{
"date": "2016-05-24",
"count": 1
},
{
"date": "2016-06-01",
"count": 1
},
{
"date": "2016-06-02",
"count": 1
},
{
"date": "2016-06-04",
"count": 1
},
{
"date": "2016-06-07",
"count": 1
},
{
"date": "2016-06-14",
"count": 1
},
{
"date": "2016-06-16",
"count": 1
},
{
"date": "2016-06-20",
"count": 1
},
{
"date": "2016-06-22",
"count": 1
},
{
"date": "2016-06-29",
"count": 1
},
{
"date": "2016-07-04",
"count": 1
},
{
"date": "2016-07-05",
"count": 1
},
{
"date": "2016-07-10",
"count": 1
},
{
"date": "2016-07-13",
"count": 1
},
{
"date": "2016-07-25",
"count": 1
},
{
"date": "2016-07-27",
"count": 1
},
{
"date": "2016-08-03",
"count": 1
},
{
"date": "2016-08-04",
"count": 1
},
{
"date": "2016-08-07",
"count": 1
},
{
"date": "2016-08-15",
"count": 2
},
{
"date": "2016-08-18",
"count": 1
},
{
"date": "2016-08-23",
"count": 1
},
{
"date": "2016-08-25",
"count": 1
},
{
"date": "2016-08-26",
"count": 1
},
{
"date": "2016-08-30",
"count": 1
},
{
"date": "2016-09-09",
"count": 1
},
{
"date": "2016-09-14",
"count": 1
},
{
"date": "2016-09-16",
"count": 1
},
{
"date": "2016-09-19",
"count": 1
},
{
"date": "2016-09-20",
"count": 1
},
{
"date": "2016-09-22",
"count": 2
},
{
"date": "2016-09-25",
"count": 1
},
{
"date": "2016-09-29",
"count": 1
},
{
"date": "2016-10-05",
"count": 1
},
{
"date": "2016-10-11",
"count": 1
},
{
"date": "2016-10-13",
"count": 1
},
{
"date": "2016-10-18",
"count": 1
},
{
"date": "2016-10-19",
"count": 1
},
{
"date": "2016-10-26",
"count": 1
},
{
"date": "2016-11-03",
"count": 1
},
{
"date": "2016-11-11",
"count": 1
},
{
"date": "2016-11-18",
"count": 1
},
{
"date": "2016-11-22",
"count": 2
},
{
"date": "2016-11-25",
"count": 1
},
{
"date": "2016-11-29",
"count": 2
},
{
"date": "2016-12-01",
"count": 1
},
{
"date": "2016-12-08",
"count": 1
},
{
"date": "2016-12-10",
"count": 2
},
{
"date": "2016-12-13",
"count": 1
},
{
"date": "2016-12-16",
"count": 1
},
{
"date": "2016-12-19",
"count": 1
},
{
"date": "2016-12-20",
"count": 1
},
{
"date": "2016-12-21",
"count": 2
},
{
"date": "2016-12-22",
"count": 1
},
{
"date": "2016-12-23",
"count": 2
},
{
"date": "2016-12-24",
"count": 1
},
{
"date": "2017-01-04",
"count": 1
},
{
"date": "2017-01-09",
"count": 2
},
{
"date": "2017-01-11",
"count": 1
},
{
"date": "2017-01-12",
"count": 1
},
{
"date": "2017-01-20",
"count": 1
},
{
"date": "2017-01-23",
"count": 1
},
{
"date": "2017-01-26",
"count": 1
},
{
"date": "2017-01-31",
"count": 1
},
{
"date": "2017-02-01",
"count": 1
},
{
"date": "2017-02-02",
"count": 1
},
{
"date": "2017-02-08",
"count": 2
},
{
"date": "2017-02-13",
"count": 1
},
{
"date": "2017-02-15",
"count": 1
},
{
"date": "2017-02-21",
"count": 1
},
{
"date": "2017-02-28",
"count": 1
},
{
"date": "2017-03-01",
"count": 2
},
{
"date": "2017-03-03",
"count": 1
},
{
"date": "2017-03-06",
"count": 1
},
{
"date": "2017-03-08",
"count": 1
},
{
"date": "2017-03-11",
"count": 1
},
{
"date": "2017-03-15",
"count": 1
},
{
"date": "2017-03-23",
"count": 1
},
{
"date": "2017-03-24",
"count": 1
},
{
"date": "2017-03-29",
"count": 2
},
{
"date": "2017-04-05",
"count": 1
},
{
"date": "2017-04-15",
"count": 1
},
{
"date": "2017-04-18",
"count": 1
},
{
"date": "2017-04-20",
"count": 1
},
{
"date": "2017-04-21",
"count": 1
},
{
"date": "2017-04-23",
"count": 1
},
{
"date": "2017-04-24",
"count": 1
},
{
"date": "2017-04-25",
"count": 1
},
{
"date": "2017-04-26",
"count": 1
},
{
"date": "2017-05-02",
"count": 1
},
{
"date": "2017-05-03",
"count": 2
},
{
"date": "2017-05-05",
"count": 1
},
{
"date": "2017-05-09",
"count": 1
},
{
"date": "2017-05-12",
"count": 1
},
{
"date": "2017-05-18",
"count": 1
},
{
"date": "2017-05-24",
"count": 1
},
{
"date": "2017-05-28",
"count": 1
},
{
"date": "2017-05-30",
"count": 1
},
{
"date": "2017-06-07",
"count": 1
},
{
"date": "2017-06-21",
"count": 1
},
{
"date": "2017-06-23",
"count": 1
},
{
"date": "2017-07-02",
"count": 1
},
{
"date": "2017-07-03",
"count": 1
},
{
"date": "2017-07-04",
"count": 1
},
{
"date": "2017-07-07",
"count": 1
},
{
"date": "2017-07-15",
"count": 1
},
{
"date": "2017-07-17",
"count": 1
},
{
"date": "2017-07-21",
"count": 1
},
{
"date": "2017-07-25",
"count": 2
},
{
"date": "2017-07-26",
"count": 1
},
{
"date": "2017-07-27",
"count": 1
},
{
"date": "2017-07-30",
"count": 1
},
{
"date": "2017-08-02",
"count": 1
},
{
"date": "2017-08-08",
"count": 1
},
{
"date": "2017-08-09",
"count": 1
},
{
"date": "2017-08-11",
"count": 1
},
{
"date": "2017-08-14",
"count": 1
},
{
"date": "2017-08-16",
"count": 1
},
{
"date": "2017-08-18",
"count": 1
},
{
"date": "2017-08-22",
"count": 1
},
{
"date": "2017-08-25",
"count": 1
},
{
"date": "2017-08-28",
"count": 1
},
{
"date": "2017-08-29",
"count": 1
},
{
"date": "2017-08-30",
"count": 2
},
{
"date": "2017-09-02",
"count": 1
},
{
"date": "2017-09-05",
"count": 1
},
{
"date": "2017-09-11",
"count": 1
},
{
"date": "2017-09-12",
"count": 1
},
{
"date": "2017-09-19",
"count": 1
},
{
"date": "2017-09-20",
"count": 1
},
{
"date": "2017-09-22",
"count": 1
},
{
"date": "2017-09-26",
"count": 1
},
{
"date": "2017-09-27",
"count": 1
},
{
"date": "2017-10-01",
"count": 1
},
{
"date": "2017-10-02",
"count": 1
},
{
"date": "2017-10-03",
"count": 1
},
{
"date": "2017-10-08",
"count": 1
},
{
"date": "2017-10-10",
"count": 1
},
{
"date": "2017-10-13",
"count": 1
},
{
"date": "2017-10-17",
"count": 1
},
{
"date": "2017-10-19",
"count": 1
},
{
"date": "2017-10-25",
"count": 1
},
{
"date": "2017-11-01",
"count": 2
},
{
"date": "2017-11-08",
"count": 1
},
{
"date": "2017-11-09",
"count": 2
},
{
"date": "2017-11-10",
"count": 1
},
{
"date": "2017-11-21",
"count": 1
},
{
"date": "2017-11-22",
"count": 1
},
{
"date": "2017-11-27",
"count": 1
},
{
"date": "2017-11-30",
"count": 1
},
{
"date": "2017-12-05",
"count": 1
},
{
"date": "2017-12-11",
"count": 1
},
{
"date": "2017-12-13",
"count": 2
},
{
"date": "2017-12-15",
"count": 1
},
{
"date": "2017-12-20",
"count": 1
},
{
"date": "2017-12-23",
"count": 1
},
{
"date": "2018-01-02",
"count": 1
},
{
"date": "2018-01-03",
"count": 1
},
{
"date": "2018-01-04",
"count": 2
},
{
"date": "2018-01-11",
"count": 2
},
{
"date": "2018-01-12",
"count": 1
},
{
"date": "2018-01-16",
"count": 1
},
{
"date": "2018-01-17",
"count": 1
},
{
"date": "2018-01-20",
"count": 1
},
{
"date": "2018-01-24",
"count": 1
},
{
"date": "2018-01-25",
"count": 1
},
{
"date": "2018-01-29",
"count": 3
},
{
"date": "2018-01-31",
"count": 2
},
{
"date": "2018-02-01",
"count": 1
},
{
"date": "2018-02-05",
"count": 1
},
{
"date": "2018-02-08",
"count": 1
},
{
"date": "2018-02-12",
"count": 2
},
{
"date": "2018-02-16",
"count": 1
},
{
"date": "2018-02-18",
"count": 1
},
{
"date": "2018-02-21",
"count": 1
},
{
"date": "2018-02-22",
"count": 1
},
{
"date": "2018-03-05",
"count": 1
},
{
"date": "2018-03-07",
"count": 1
},
{
"date": "2018-03-09",
"count": 1
},
{
"date": "2018-03-11",
"count": 1
},
{
"date": "2018-03-15",
"count": 1
},
{
"date": "2018-03-18",
"count": 1
},
{
"date": "2018-03-20",
"count": 1
},
{
"date": "2018-03-27",
"count": 1
},
{
"date": "2018-03-28",
"count": 1
},
{
"date": "2018-03-29",
"count": 3
},
{
"date": "2018-03-31",
"count": 1
},
{
"date": "2018-04-01",
"count": 2
},
{
"date": "2018-04-08",
"count": 1
},
{
"date": "2018-04-10",
"count": 1
},
{
"date": "2018-04-12",
"count": 2
},
{
"date": "2018-04-18",
"count": 1
},
{
"date": "2018-04-19",
"count": 1
},
{
"date": "2018-04-20",
"count": 1
},
{
"date": "2018-04-23",
"count": 1
},
{
"date": "2018-04-24",
"count": 1
},
{
"date": "2018-04-26",
"count": 1
},
{
"date": "2018-04-27",
"count": 1
},
{
"date": "2018-04-29",
"count": 1
},
{
"date": "2018-05-02",
"count": 1
},
{
"date": "2018-05-03",
"count": 1
},
{
"date": "2018-05-04",
"count": 1
},
{
"date": "2018-05-09",
"count": 2
},
{
"date": "2018-05-10",
"count": 1
},
{
"date": "2018-05-15",
"count": 1
},
{
"date": "2018-05-16",
"count": 2
},
{
"date": "2018-05-17",
"count": 2
},
{
"date": "2018-05-18",
"count": 1
},
{
"date": "2018-05-19",
"count": 1
},
{
"date": "2018-05-20",
"count": 1
},
{
"date": "2018-05-24",
"count": 1
},
{
"date": "2018-05-25",
"count": 2
},
{
"date": "2018-05-30",
"count": 3
},
{
"date": "2018-06-04",
"count": 1
},
{
"date": "2018-06-08",
"count": 2
},
{
"date": "2018-06-12",
"count": 1
},
{
"date": "2018-06-15",
"count": 1
},
{
"date": "2018-06-18",
"count": 2
},
{
"date": "2018-06-19",
"count": 1
},
{
"date": "2018-06-20",
"count": 3
},
{
"date": "2018-06-22",
"count": 1
},
{
"date": "2018-07-03",
"count": 2
},
{
"date": "2018-07-04",
"count": 1
},
{
"date": "2018-07-06",
"count": 1
},
{
"date": "2018-07-10",
"count": 1
},
{
"date": "2018-07-19",
"count": 1
},
{
"date": "2018-07-20",
"count": 1
},
{
"date": "2018-07-31",
"count": 1
},
{
"date": "2018-08-08",
"count": 1
},
{
"date": "2018-08-21",
"count": 1
},
{
"date": "2018-08-22",
"count": 2
},
{
"date": "2018-08-24",
"count": 2
},
{
"date": "2018-08-25",
"count": 1
},
{
"date": "2018-08-30",
"count": 1
},
{
"date": "2018-09-10",
"count": 1
},
{
"date": "2018-09-11",
"count": 1
},
{
"date": "2018-09-13",
"count": 1
},
{
"date": "2018-09-21",
"count": 1
},
{
"date": "2018-10-03",
"count": 2
},
{
"date": "2018-10-05",
"count": 1
},
{
"date": "2018-10-12",
"count": 1
},
{
"date": "2018-10-23",
"count": 2
},
{
"date": "2018-10-26",
"count": 1
},
{
"date": "2018-10-27",
"count": 1
},
{
"date": "2018-10-29",
"count": 1
},
{
"date": "2018-11-05",
"count": 1
},
{
"date": "2018-11-09",
"count": 1
},
{
"date": "2018-11-13",
"count": 1
},
{
"date": "2018-11-15",
"count": 2
},
{
"date": "2018-11-25",
"count": 1
},
{
"date": "2018-11-26",
"count": 1
},
{
"date": "2018-11-29",
"count": 1
},
{
"date": "2018-11-30",
"count": 2
},
{
"date": "2018-12-03",
"count": 1
},
{
"date": "2018-12-10",
"count": 1
},
{
"date": "2018-12-23",
"count": 1
},
{
"date": "2019-01-08",
"count": 1
},
{
"date": "2019-01-15",
"count": 1
},
{
"date": "2019-01-17",
"count": 1
},
{
"date": "2019-01-21",
"count": 1
},
{
"date": "2019-01-24",
"count": 1
},
{
"date": "2019-01-30",
"count": 1
},
{
"date": "2019-02-01",
"count": 1
},
{
"date": "2019-02-12",
"count": 1
},
{
"date": "2019-02-13",
"count": 1
},
{
"date": "2019-02-14",
"count": 1
},
{
"date": "2019-02-18",
"count": 1
},
{
"date": "2019-02-19",
"count": 2
},
{
"date": "2019-02-23",
"count": 1
},
{
"date": "2019-02-25",
"count": 1
},
{
"date": "2019-03-10",
"count": 2
},
{
"date": "2019-03-14",
"count": 2
},
{
"date": "2019-03-17",
"count": 1
},
{
"date": "2019-04-01",
"count": 1
},
{
"date": "2019-04-08",
"count": 1
},
{
"date": "2019-04-11",
"count": 2
},
{
"date": "2019-04-17",
"count": 2
},
{
"date": "2019-04-18",
"count": 1
},
{
"date": "2019-04-20",
"count": 1
},
{
"date": "2019-04-21",
"count": 1
},
{
"date": "2019-04-23",
"count": 2
},
{
"date": "2019-04-26",
"count": 1
},
{
"date": "2019-05-02",
"count": 3
},
{
"date": "2019-05-08",
"count": 1
},
{
"date": "2019-05-10",
"count": 1
},
{
"date": "2019-05-13",
"count": 1
},
{
"date": "2019-05-14",
"count": 1
},
{
"date": "2019-05-20",
"count": 1
},
{
"date": "2019-05-26",
"count": 1
},
{
"date": "2019-05-30",
"count": 2
},
{
"date": "2019-06-02",
"count": 1
},
{
"date": "2019-06-03",
"count": 1
},
{
"date": "2019-06-10",
"count": 1
},
{
"date": "2019-06-13",
"count": 2
},
{
"date": "2019-06-18",
"count": 1
},
{
"date": "2019-06-19",
"count": 2
},
{
"date": "2019-06-24",
"count": 1
},
{
"date": "2019-06-26",
"count": 2
},
{
"date": "2019-06-27",
"count": 1
},
{
"date": "2019-07-02",
"count": 1
},
{
"date": "2019-07-07",
"count": 1
},
{
"date": "2019-07-08",
"count": 1
},
{
"date": "2019-07-09",
"count": 1
},
{
"date": "2019-07-10",
"count": 1
},
{
"date": "2019-07-14",
"count": 1
},
{
"date": "2019-07-15",
"count": 1
},
{
"date": "2019-07-16",
"count": 1
},
{
"date": "2019-07-17",
"count": 1
},
{
"date": "2019-07-19",
"count": 2
},
{
"date": "2019-07-24",
"count": 1
},
{
"date": "2019-07-25",
"count": 1
},
{
"date": "2019-07-29",
"count": 1
},
{
"date": "2019-07-30",
"count": 1
},
{
"date": "2019-08-03",
"count": 1
},
{
"date": "2019-08-06",
"count": 1
},
{
"date": "2019-08-11",
"count": 2
},
{
"date": "2019-08-13",
"count": 1
},
{
"date": "2019-08-15",
"count": 2
},
{
"date": "2019-08-28",
"count": 1
},
{
"date": "2019-09-02",
"count": 1
},
{
"date": "2019-09-05",
"count": 1
},
{
"date": "2019-09-06",
"count": 1
},
{
"date": "2019-09-10",
"count": 1
},
{
"date": "2019-09-14",
"count": 1
},
{
"date": "2019-09-23",
"count": 1
},
{
"date": "2019-09-30",
"count": 2
},
{
"date": "2019-10-07",
"count": 1
},
{
"date": "2019-10-10",
"count": 1
},
{
"date": "2019-10-12",
"count": 1
},
{
"date": "2019-10-14",
"count": 1
},
{
"date": "2019-10-24",
"count": 1
},
{
"date": "2019-10-25",
"count": 1
},
{
"date": "2019-10-29",
"count": 1
},
{
"date": "2019-11-12",
"count": 2
},
{
"date": "2019-11-20",
"count": 2
},
{
"date": "2019-11-21",
"count": 3
},
{
"date": "2019-11-25",
"count": 1
},
{
"date": "2019-12-10",
"count": 1
},
{
"date": "2019-12-19",
"count": 1
},
{
"date": "2019-12-21",
"count": 1
},
{
"date": "2019-12-25",
"count": 1
},
{
"date": "2020-01-06",
"count": 1
},
{
"date": "2020-01-09",
"count": 1
},
{
"date": "2020-01-10",
"count": 1
},
{
"date": "2020-01-27",
"count": 1
},
{
"date": "2020-01-31",
"count": 1
},
{
"date": "2020-02-04",
"count": 1
},
{
"date": "2020-02-06",
"count": 1
},
{
"date": "2020-02-11",
"count": 1
},
{
"date": "2020-02-12",
"count": 1
},
{
"date": "2020-02-13",
"count": 1
},
{
"date": "2020-02-19",
"count": 1
},
{
"date": "2020-02-28",
"count": 1
},
{
"date": "2020-03-07",
"count": 1
},
{
"date": "2020-03-12",
"count": 2
},
{
"date": "2020-03-13",
"count": 1
},
{
"date": "2020-03-20",
"count": 1
},
{
"date": "2020-03-27",
"count": 1
},
{
"date": "2020-04-01",
"count": 1
},
{
"date": "2020-04-03",
"count": 1
},
{
"date": "2020-04-04",
"count": 2
},
{
"date": "2020-04-16",
"count": 1
},
{
"date": "2020-04-18",
"count": 1
},
{
"date": "2020-04-21",
"count": 1
},
{
"date": "2020-04-22",
"count": 1
},
{
"date": "2020-04-23",
"count": 2
},
{
"date": "2020-04-24",
"count": 1
},
{
"date": "2020-04-25",
"count": 1
},
{
"date": "2020-05-02",
"count": 1
},
{
"date": "2020-05-05",
"count": 1
},
{
"date": "2020-05-12",
"count": 2
},
{
"date": "2020-05-13",
"count": 1
},
{
"date": "2020-05-14",
"count": 1
},
{
"date": "2020-05-23",
"count": 1
},
{
"date": "2020-05-24",
"count": 1
},
{
"date": "2020-06-03",
"count": 1
},
{
"date": "2020-06-09",
"count": 1
},
{
"date": "2020-06-21",
"count": 1
},
{
"date": "2020-07-09",
"count": 1
},
{
"date": "2020-07-14",
"count": 1
},
{
"date": "2020-07-28",
"count": 1
},
{
"date": "2020-07-31",
"count": 1
},
{
"date": "2020-08-02",
"count": 1
},
{
"date": "2020-08-04",
"count": 1
},
{
"date": "2020-08-12",
"count": 1
},
{
"date": "2020-08-20",
"count": 1
},
{
"date": "2020-08-25",
"count": 1
},
{
"date": "2020-09-06",
"count": 1
},
{
"date": "2020-09-13",
"count": 1
},
{
"date": "2020-09-16",
"count": 1
},
{
"date": "2020-09-22",
"count": 1
},
{
"date": "2020-09-23",
"count": 1
},
{
"date": "2020-09-28",
"count": 1
},
{
"date": "2020-10-09",
"count": 1
},
{
"date": "2020-10-13",
"count": 1
},
{
"date": "2020-10-15",
"count": 1
},
{
"date": "2020-10-20",
"count": 1
},
{
"date": "2020-10-21",
"count": 1
},
{
"date": "2020-10-27",
"count": 1
},
{
"date": "2020-10-28",
"count": 1
},
{
"date": "2020-10-30",
"count": 1
},
{
"date": "2020-11-03",
"count": 1
},
{
"date": "2020-11-12",
"count": 1
},
{
"date": "2020-11-27",
"count": 1
},
{
"date": "2020-12-04",
"count": 1
},
{
"date": "2020-12-08",
"count": 1
},
{
"date": "2020-12-15",
"count": 1
},
{
"date": "2020-12-22",
"count": 1
},
{
"date": "2020-12-29",
"count": 1
},
{
"date": "2020-12-30",
"count": 1
},
{
"date": "2021-01-08",
"count": 1
},
{
"date": "2021-01-11",
"count": 1
},
{
"date": "2021-01-22",
"count": 1
},
{
"date": "2021-01-24",
"count": 1
},
{
"date": "2021-01-29",
"count": 1
},
{
"date": "2021-02-10",
"count": 1
},
{
"date": "2021-02-23",
"count": 1
},
{
"date": "2021-03-24",
"count": 1
},
{
"date": "2021-03-31",
"count": 1
},
{
"date": "2021-04-03",
"count": 1
},
{
"date": "2021-04-04",
"count": 1
},
{
"date": "2021-04-05",
"count": 1
},
{
"date": "2021-04-13",
"count": 1
},
{
"date": "2021-04-14",
"count": 1
},
{
"date": "2021-04-15",
"count": 3
},
{
"date": "2021-04-16",
"count": 1
},
{
"date": "2021-04-20",
"count": 1
},
{
"date": "2021-04-22",
"count": 2
},
{
"date": "2021-05-04",
"count": 1
},
{
"date": "2021-05-05",
"count": 1
},
{
"date": "2021-05-10",
"count": 1
},
{
"date": "2021-05-13",
"count": 1
},
{
"date": "2021-05-17",
"count": 2
},
{
"date": "2021-05-20",
"count": 2
},
{
"date": "2021-05-27",
"count": 1
},
{
"date": "2021-07-01",
"count": 1
},
{
"date": "2021-07-07",
"count": 1
},
{
"date": "2021-07-08",
"count": 1
},
{
"date": "2021-07-14",
"count": 2
},
{
"date": "2021-07-16",
"count": 1
},
{
"date": "2021-07-18",
"count": 1
},
{
"date": "2021-07-19",
"count": 1
},
{
"date": "2021-07-20",
"count": 1
},
{
"date": "2021-07-28",
"count": 1
},
{
"date": "2021-07-29",
"count": 1
},
{
"date": "2021-08-16",
"count": 1
},
{
"date": "2021-08-19",
"count": 2
},
{
"date": "2021-09-20",
"count": 1
},
{
"date": "2021-09-22",
"count": 1
},
{
"date": "2021-10-04",
"count": 1
},
{
"date": "2021-10-11",
"count": 1
},
{
"date": "2021-10-13",
"count": 2
},
{
"date": "2021-10-25",
"count": 1
},
{
"date": "2021-11-04",
"count": 1
},
{
"date": "2021-11-13",
"count": 1
},
{
"date": "2021-11-17",
"count": 1
},
{
"date": "2021-11-20",
"count": 1
},
{
"date": "2021-12-10",
"count": 1
},
{
"date": "2021-12-13",
"count": 1
},
{
"date": "2021-12-16",
"count": 1
},
{
"date": "2021-12-20",
"count": 1
},
{
"date": "2021-12-22",
"count": 1
},
{
"date": "2022-01-05",
"count": 1
},
{
"date": "2022-01-20",
"count": 2
},
{
"date": "2022-01-25",
"count": 1
},
{
"date": "2022-02-23",
"count": 2
},
{
"date": "2022-02-28",
"count": 1
},
{
"date": "2022-03-03",
"count": 1
},
{
"date": "2022-03-04",
"count": 1
},
{
"date": "2022-03-08",
"count": 1
},
{
"date": "2022-03-16",
"count": 2
},
{
"date": "2022-03-17",
"count": 1
},
{
"date": "2022-03-21",
"count": 4
},
{
"date": "2022-03-22",
"count": 1
},
{
"date": "2022-03-23",
"count": 1
},
{
"date": "2022-03-31",
"count": 1
},
{
"date": "2022-04-04",
"count": 1
},
{
"date": "2022-04-15",
"count": 1
},
{
"date": "2022-04-19",
"count": 1
},
{
"date": "2022-04-28",
"count": 1
},
{
"date": "2022-05-02",
"count": 1
},
{
"date": "2022-05-09",
"count": 1
},
{
"date": "2022-05-17",
"count": 2
},
{
"date": "2022-05-19",
"count": 1
},
{
"date": "2022-05-20",
"count": 2
},
{
"date": "2022-05-31",
"count": 1
},
{
"date": "2022-06-09",
"count": 1
},
{
"date": "2022-06-12",
"count": 1
},
{
"date": "2022-06-14",
"count": 1
},
{
"date": "2022-06-16",
"count": 1
},
{
"date": "2022-07-01",
"count": 1
},
{
"date": "2022-07-19",
"count": 1
},
{
"date": "2022-07-26",
"count": 1
},
{
"date": "2022-08-05",
"count": 1
},
{
"date": "2022-08-11",
"count": 1
},
{
"date": "2022-08-12",
"count": 1
},
{
"date": "2022-09-09",
"count": 1
},
{
"date": "2022-09-14",
"count": 1
},
{
"date": "2022-10-05",
"count": 1
},
{
"date": "2022-10-17",
"count": 1
},
{
"date": "2022-10-20",
"count": 2
},
{
"date": "2022-10-27",
"count": 1
},
{
"date": "2022-10-30",
"count": 1
},
{
"date": "2022-10-31",
"count": 1
},
{
"date": "2022-11-01",
"count": 1
},
{
"date": "2022-11-12",
"count": 1
},
{
"date": "2022-12-01",
"count": 1
},
{
"date": "2022-12-02",
"count": 1
},
{
"date": "2022-12-26",
"count": 1
},
{
"date": "2022-12-31",
"count": 1
},
{
"date": "2023-01-06",
"count": 1
},
{
"date": "2023-01-12",
"count": 2
},
{
"date": "2023-01-18",
"count": 1
},
{
"date": "2023-02-02",
"count": 1
},
{
"date": "2023-02-06",
"count": 1
},
{
"date": "2023-02-14",
"count": 1
},
{
"date": "2023-02-16",
"count": 1
},
{
"date": "2023-02-18",
"count": 1
},
{
"date": "2023-03-09",
"count": 1
},
{
"date": "2023-03-23",
"count": 1
},
{
"date": "2023-03-24",
"count": 1
},
{
"date": "2023-04-05",
"count": 1
},
{
"date": "2023-04-06",
"count": 1
},
{
"date": "2023-04-24",
"count": 1
},
{
"date": "2023-05-02",
"count": 1
},
{
"date": "2023-05-04",
"count": 1
},
{
"date": "2023-05-17",
"count": 1
},
{
"date": "2023-06-04",
"count": 1
},
{
"date": "2023-06-08",
"count": 1
},
{
"date": "2023-07-03",
"count": 1
},
{
"date": "2023-07-27",
"count": 1
},
{
"date": "2023-08-03",
"count": 1
},
{
"date": "2023-08-09",
"count": 1
},
{
"date": "2023-08-15",
"count": 1
},
{
"date": "2023-08-16",
"count": 1
},
{
"date": "2023-08-17",
"count": 1
},
{
"date": "2023-09-04",
"count": 1
},
{
"date": "2023-09-26",
"count": 1
},
{
"date": "2023-09-27",
"count": 1
},
{
"date": "2023-10-06",
"count": 1
},
{
"date": "2023-10-18",
"count": 1
},
{
"date": "2023-10-28",
"count": 1
},
{
"date": "2023-10-30",
"count": 1
},
{
"date": "2023-11-08",
"count": 1
},
{
"date": "2023-11-10",
"count": 1
},
{
"date": "2023-11-15",
"count": 1
},
{
"date": "2023-12-16",
"count": 1
},
{
"date": "2023-12-22",
"count": 1
},
{
"date": "2023-12-27",
"count": 1
},
{
"date": "2024-01-05",
"count": 1
},
{
"date": "2024-01-25",
"count": 1
},
{
"date": "2024-02-16",
"count": 1
},
{
"date": "2024-03-27",
"count": 1
},
{
"date": "2024-04-05",
"count": 2
},
{
"date": "2024-07-23",
"count": 1
},
{
"date": "2024-07-25",
"count": 1
},
{
"date": "2024-09-05",
"count": 1
},
{
"date": "2024-09-10",
"count": 1
},
{
"date": "2024-10-21",
"count": 1
},
{
"date": "2024-11-06",
"count": 1
},
{
"date": "2024-11-10",
"count": 1
},
{
"date": "2024-12-12",
"count": 1
},
{
"date": "2024-12-16",
"count": 1
},
{
"date": "2025-01-17",
"count": 1
},
{
"date": "2025-03-15",
"count": 1
},
{
"date": "2025-03-19",
"count": 1
},
{
"date": "2025-03-20",
"count": 1
},
{
"date": "2025-04-15",
"count": 1
},
{
"date": "2025-05-14",
"count": 1
},
{
"date": "2025-06-26",
"count": 1
},
{
"date": "2025-07-05",
"count": 1
},
{
"date": "2025-08-14",
"count": 1
},
{
"date": "2025-08-27",
"count": 1
},
{
"date": "2025-09-05",
"count": 1
},
{
"date": "2025-09-17",
"count": 1
},
{
"date": "2025-10-03",
"count": 1
},
{
"date": "2025-11-07",
"count": 1
},
{
"date": "2025-11-21",
"count": 1
},
{
"date": "2025-11-30",
"count": 1
},
{
"date": "2025-12-14",
"count": 1
},
{
"date": "2026-01-23",
"count": 1
},
{
"date": "2026-01-26",
"count": 1
},
{
"date": "2026-02-23",
"count": 1
},
{
"date": "2026-04-22",
"count": 1
},
{
"date": "2026-05-07",
"count": 1
},
{
"date": "2026-05-31",
"count": 1
},
{
"date": "2026-07-19",
"count": 3
}
],
"complete": false,
"collected": 1000,
"total_forks": 1075
},
"star_history": {
"days": [
{
"date": "2020-07-24",
"count": 1
},
{
"date": "2020-07-27",
"count": 2
},
{
"date": "2020-07-28",
"count": 1
},
{
"date": "2020-08-02",
"count": 1
},
{
"date": "2020-08-03",
"count": 1
},
{
"date": "2020-08-04",
"count": 1
},
{
"date": "2020-08-10",
"count": 1
},
{
"date": "2020-08-11",
"count": 1
},
{
"date": "2020-08-13",
"count": 1
},
{
"date": "2020-08-14",
"count": 1
},
{
"date": "2020-08-16",
"count": 2
},
{
"date": "2020-08-17",
"count": 1
},
{
"date": "2020-08-18",
"count": 4
},
{
"date": "2020-08-19",
"count": 1
},
{
"date": "2020-08-20",
"count": 5
},
{
"date": "2020-08-21",
"count": 1
},
{
"date": "2020-08-22",
"count": 1
},
{
"date": "2020-08-23",
"count": 1
},
{
"date": "2020-08-24",
"count": 2
},
{
"date": "2020-08-25",
"count": 1
},
{
"date": "2020-08-27",
"count": 2
},
{
"date": "2020-08-30",
"count": 2
},
{
"date": "2020-08-31",
"count": 2
},
{
"date": "2020-09-01",
"count": 1
},
{
"date": "2020-09-07",
"count": 1
},
{
"date": "2020-09-09",
"count": 1
},
{
"date": "2020-09-13",
"count": 2
},
{
"date": "2020-09-16",
"count": 2
},
{
"date": "2020-09-18",
"count": 1
},
{
"date": "2020-09-19",
"count": 1
},
{
"date": "2020-09-23",
"count": 1
},
{
"date": "2020-09-26",
"count": 1
},
{
"date": "2020-09-28",
"count": 1
},
{
"date": "2020-09-29",
"count": 1
},
{
"date": "2020-09-30",
"count": 1
},
{
"date": "2020-10-01",
"count": 1
},
{
"date": "2020-10-06",
"count": 1
},
{
"date": "2020-10-07",
"count": 1
},
{
"date": "2020-10-09",
"count": 1
},
{
"date": "2020-10-10",
"count": 3
},
{
"date": "2020-10-14",
"count": 1
},
{
"date": "2020-10-16",
"count": 2
},
{
"date": "2020-10-17",
"count": 2
},
{
"date": "2020-10-18",
"count": 1
},
{
"date": "2020-10-19",
"count": 1
},
{
"date": "2020-10-21",
"count": 2
},
{
"date": "2020-10-27",
"count": 1
},
{
"date": "2020-10-30",
"count": 2
},
{
"date": "2020-11-02",
"count": 3
},
{
"date": "2020-11-03",
"count": 2
},
{
"date": "2020-11-06",
"count": 1
},
{
"date": "2020-11-07",
"count": 1
},
{
"date": "2020-11-11",
"count": 2
},
{
"date": "2020-11-16",
"count": 1
},
{
"date": "2020-11-18",
"count": 1
},
{
"date": "2020-11-19",
"count": 1
},
{
"date": "2020-11-24",
"count": 2
},
{
"date": "2020-11-25",
"count": 1
},
{
"date": "2020-11-26",
"count": 2
},
{
"date": "2020-11-27",
"count": 2
},
{
"date": "2020-12-04",
"count": 2
},
{
"date": "2020-12-05",
"count": 1
},
{
"date": "2020-12-06",
"count": 1
},
{
"date": "2020-12-09",
"count": 2
},
{
"date": "2020-12-10",
"count": 2
},
{
"date": "2020-12-11",
"count": 1
},
{
"date": "2020-12-13",
"count": 1
},
{
"date": "2020-12-16",
"count": 1
},
{
"date": "2020-12-19",
"count": 1
},
{
"date": "2020-12-21",
"count": 5
},
{
"date": "2020-12-24",
"count": 1
},
{
"date": "2020-12-27",
"count": 1
},
{
"date": "2020-12-28",
"count": 1
},
{
"date": "2020-12-29",
"count": 1
},
{
"date": "2020-12-30",
"count": 1
},
{
"date": "2021-01-02",
"count": 1
},
{
"date": "2021-01-05",
"count": 1
},
{
"date": "2021-01-07",
"count": 1
},
{
"date": "2021-01-11",
"count": 1
},
{
"date": "2021-01-14",
"count": 1
},
{
"date": "2021-01-18",
"count": 1
},
{
"date": "2021-01-20",
"count": 1
},
{
"date": "2021-01-24",
"count": 1
},
{
"date": "2021-01-27",
"count": 1
},
{
"date": "2021-01-28",
"count": 1
},
{
"date": "2021-02-01",
"count": 1
},
{
"date": "2021-02-04",
"count": 1
},
{
"date": "2021-02-08",
"count": 1
},
{
"date": "2021-02-09",
"count": 1
},
{
"date": "2021-02-10",
"count": 1
},
{
"date": "2021-02-11",
"count": 1
},
{
"date": "2021-02-18",
"count": 1
},
{
"date": "2021-02-20",
"count": 1
},
{
"date": "2021-02-23",
"count": 1
},
{
"date": "2021-02-26",
"count": 1
},
{
"date": "2021-03-01",
"count": 2
},
{
"date": "2021-03-02",
"count": 3
},
{
"date": "2021-03-04",
"count": 1
},
{
"date": "2021-03-07",
"count": 1
},
{
"date": "2021-03-09",
"count": 1
},
{
"date": "2021-03-11",
"count": 4
},
{
"date": "2021-03-14",
"count": 1
},
{
"date": "2021-03-15",
"count": 1
},
{
"date": "2021-03-16",
"count": 2
},
{
"date": "2021-03-24",
"count": 1
},
{
"date": "2021-03-26",
"count": 1
},
{
"date": "2021-03-27",
"count": 1
},
{
"date": "2021-03-28",
"count": 2
},
{
"date": "2021-03-29",
"count": 1
},
{
"date": "2021-03-30",
"count": 1
},
{
"date": "2021-03-31",
"count": 1
},
{
"date": "2021-04-01",
"count": 1
},
{
"date": "2021-04-03",
"count": 1
},
{
"date": "2021-04-05",
"count": 2
},
{
"date": "2021-04-07",
"count": 1
},
{
"date": "2021-04-08",
"count": 4
},
{
"date": "2021-04-09",
"count": 2
},
{
"date": "2021-04-12",
"count": 2
},
{
"date": "2021-04-16",
"count": 1
},
{
"date": "2021-04-19",
"count": 2
},
{
"date": "2021-04-21",
"count": 1
},
{
"date": "2021-04-22",
"count": 1
},
{
"date": "2021-04-23",
"count": 1
},
{
"date": "2021-04-25",
"count": 1
},
{
"date": "2021-04-26",
"count": 2
},
{
"date": "2021-05-05",
"count": 1
},
{
"date": "2021-05-07",
"count": 1
},
{
"date": "2021-05-09",
"count": 2
},
{
"date": "2021-05-10",
"count": 1
},
{
"date": "2021-05-11",
"count": 1
},
{
"date": "2021-05-15",
"count": 1
},
{
"date": "2021-05-17",
"count": 1
},
{
"date": "2021-05-18",
"count": 2
},
{
"date": "2021-05-24",
"count": 2
},
{
"date": "2021-05-25",
"count": 1
},
{
"date": "2021-05-26",
"count": 1
},
{
"date": "2021-05-27",
"count": 2
},
{
"date": "2021-05-28",
"count": 1
},
{
"date": "2021-05-30",
"count": 1
},
{
"date": "2021-05-31",
"count": 1
},
{
"date": "2021-06-02",
"count": 2
},
{
"date": "2021-06-05",
"count": 1
},
{
"date": "2021-06-06",
"count": 1
},
{
"date": "2021-06-08",
"count": 4
},
{
"date": "2021-06-16",
"count": 1
},
{
"date": "2021-06-20",
"count": 1
},
{
"date": "2021-06-21",
"count": 1
},
{
"date": "2021-06-27",
"count": 2
},
{
"date": "2021-06-28",
"count": 2
},
{
"date": "2021-06-29",
"count": 2
},
{
"date": "2021-06-30",
"count": 1
},
{
"date": "2021-07-02",
"count": 3
},
{
"date": "2021-07-05",
"count": 3
},
{
"date": "2021-07-06",
"count": 2
},
{
"date": "2021-07-07",
"count": 2
},
{
"date": "2021-07-08",
"count": 1
},
{
"date": "2021-07-09",
"count": 1
},
{
"date": "2021-07-13",
"count": 1
},
{
"date": "2021-07-15",
"count": 1
},
{
"date": "2021-07-16",
"count": 2
},
{
"date": "2021-07-20",
"count": 2
},
{
"date": "2021-07-22",
"count": 1
},
{
"date": "2021-07-25",
"count": 1
},
{
"date": "2021-07-27",
"count": 1
},
{
"date": "2021-07-28",
"count": 1
},
{
"date": "2021-08-01",
"count": 2
},
{
"date": "2021-08-02",
"count": 1
},
{
"date": "2021-08-05",
"count": 1
},
{
"date": "2021-08-07",
"count": 1
},
{
"date": "2021-08-09",
"count": 1
},
{
"date": "2021-08-10",
"count": 1
},
{
"date": "2021-08-16",
"count": 2
},
{
"date": "2021-08-23",
"count": 1
},
{
"date": "2021-08-24",
"count": 2
},
{
"date": "2021-08-25",
"count": 1
},
{
"date": "2021-08-26",
"count": 1
},
{
"date": "2021-08-30",
"count": 1
},
{
"date": "2021-09-02",
"count": 2
},
{
"date": "2021-09-03",
"count": 1
},
{
"date": "2021-09-04",
"count": 2
},
{
"date": "2021-09-05",
"count": 2
},
{
"date": "2021-09-06",
"count": 1
},
{
"date": "2021-09-07",
"count": 1
},
{
"date": "2021-09-08",
"count": 1
},
{
"date": "2021-09-11",
"count": 1
},
{
"date": "2021-09-13",
"count": 1
},
{
"date": "2021-09-15",
"count": 2
},
{
"date": "2021-09-17",
"count": 3
},
{
"date": "2021-09-19",
"count": 1
},
{
"date": "2021-09-25",
"count": 2
},
{
"date": "2021-10-02",
"count": 1
},
{
"date": "2021-10-03",
"count": 1
},
{
"date": "2021-10-06",
"count": 1
},
{
"date": "2021-10-08",
"count": 2
},
{
"date": "2021-10-13",
"count": 1
},
{
"date": "2021-10-14",
"count": 2
},
{
"date": "2021-10-16",
"count": 2
},
{
"date": "2021-10-19",
"count": 2
},
{
"date": "2021-10-21",
"count": 1
},
{
"date": "2021-10-27",
"count": 2
},
{
"date": "2021-10-28",
"count": 1
},
{
"date": "2021-10-30",
"count": 1
},
{
"date": "2021-10-31",
"count": 1
},
{
"date": "2021-11-07",
"count": 1
},
{
"date": "2021-11-13",
"count": 1
},
{
"date": "2021-11-15",
"count": 1
},
{
"date": "2021-11-16",
"count": 1
},
{
"date": "2021-11-17",
"count": 1
},
{
"date": "2021-11-20",
"count": 1
},
{
"date": "2021-11-21",
"count": 1
},
{
"date": "2021-11-22",
"count": 2
},
{
"date": "2021-11-23",
"count": 1
},
{
"date": "2021-11-24",
"count": 1
},
{
"date": "2021-11-26",
"count": 1
},
{
"date": "2021-11-29",
"count": 1
},
{
"date": "2021-11-30",
"count": 1
},
{
"date": "2021-12-01",
"count": 1
},
{
"date": "2021-12-03",
"count": 1
},
{
"date": "2021-12-05",
"count": 1
},
{
"date": "2021-12-07",
"count": 1
},
{
"date": "2021-12-11",
"count": 1
},
{
"date": "2021-12-13",
"count": 2
},
{
"date": "2021-12-16",
"count": 1
},
{
"date": "2021-12-18",
"count": 1
},
{
"date": "2021-12-19",
"count": 1
},
{
"date": "2021-12-21",
"count": 1
},
{
"date": "2021-12-23",
"count": 3
},
{
"date": "2021-12-25",
"count": 1
},
{
"date": "2021-12-26",
"count": 1
},
{
"date": "2022-01-02",
"count": 1
},
{
"date": "2022-01-03",
"count": 1
},
{
"date": "2022-01-05",
"count": 1
},
{
"date": "2022-01-07",
"count": 1
},
{
"date": "2022-01-08",
"count": 3
},
{
"date": "2022-01-10",
"count": 3
},
{
"date": "2022-01-11",
"count": 3
},
{
"date": "2022-01-14",
"count": 3
},
{
"date": "2022-01-18",
"count": 1
},
{
"date": "2022-01-20",
"count": 1
},
{
"date": "2022-01-22",
"count": 1
},
{
"date": "2022-01-23",
"count": 1
},
{
"date": "2022-01-25",
"count": 1
},
{
"date": "2022-01-29",
"count": 1
},
{
"date": "2022-01-30",
"count": 1
},
{
"date": "2022-01-31",
"count": 1
},
{
"date": "2022-02-01",
"count": 1
},
{
"date": "2022-02-04",
"count": 1
},
{
"date": "2022-02-08",
"count": 1
},
{
"date": "2022-02-10",
"count": 1
},
{
"date": "2022-02-13",
"count": 1
},
{
"date": "2022-02-14",
"count": 1
},
{
"date": "2022-02-16",
"count": 1
},
{
"date": "2022-02-17",
"count": 1
},
{
"date": "2022-02-21",
"count": 4
},
{
"date": "2022-02-23",
"count": 2
},
{
"date": "2022-03-01",
"count": 1
},
{
"date": "2022-03-02",
"count": 1
},
{
"date": "2022-03-09",
"count": 1
},
{
"date": "2022-03-11",
"count": 1
},
{
"date": "2022-03-12",
"count": 1
},
{
"date": "2022-03-13",
"count": 2
},
{
"date": "2022-03-15",
"count": 2
},
{
"date": "2022-03-16",
"count": 3
},
{
"date": "2022-03-18",
"count": 1
},
{
"date": "2022-03-21",
"count": 2
},
{
"date": "2022-03-23",
"count": 1
},
{
"date": "2022-03-24",
"count": 2
},
{
"date": "2022-03-25",
"count": 2
},
{
"date": "2022-03-27",
"count": 1
},
{
"date": "2022-03-28",
"count": 1
},
{
"date": "2022-03-30",
"count": 1
},
{
"date": "2022-04-02",
"count": 1
},
{
"date": "2022-04-07",
"count": 1
},
{
"date": "2022-04-09",
"count": 1
},
{
"date": "2022-04-12",
"count": 1
},
{
"date": "2022-04-13",
"count": 1
},
{
"date": "2022-04-14",
"count": 1
},
{
"date": "2022-04-15",
"count": 1
},
{
"date": "2022-04-16",
"count": 1
},
{
"date": "2022-04-17",
"count": 1
},
{
"date": "2022-04-20",
"count": 1
},
{
"date": "2022-04-21",
"count": 1
},
{
"date": "2022-04-25",
"count": 1
},
{
"date": "2022-04-28",
"count": 1
},
{
"date": "2022-04-29",
"count": 1
},
{
"date": "2022-05-01",
"count": 1
},
{
"date": "2022-05-03",
"count": 1
},
{
"date": "2022-05-04",
"count": 1
},
{
"date": "2022-05-05",
"count": 2
},
{
"date": "2022-05-06",
"count": 1
},
{
"date": "2022-05-07",
"count": 2
},
{
"date": "2022-05-12",
"count": 2
},
{
"date": "2022-05-16",
"count": 1
},
{
"date": "2022-05-27",
"count": 1
},
{
"date": "2022-05-29",
"count": 1
},
{
"date": "2022-06-02",
"count": 1
},
{
"date": "2022-06-03",
"count": 1
},
{
"date": "2022-06-06",
"count": 1
},
{
"date": "2022-06-10",
"count": 1
},
{
"date": "2022-06-14",
"count": 1
},
{
"date": "2022-06-16",
"count": 1
},
{
"date": "2022-06-22",
"count": 1
},
{
"date": "2022-06-23",
"count": 1
},
{
"date": "2022-06-25",
"count": 1
},
{
"date": "2022-06-30",
"count": 1
},
{
"date": "2022-07-01",
"count": 1
},
{
"date": "2022-07-04",
"count": 1
},
{
"date": "2022-07-05",
"count": 1
},
{
"date": "2022-07-07",
"count": 2
},
{
"date": "2022-07-08",
"count": 2
},
{
"date": "2022-07-09",
"count": 1
},
{
"date": "2022-07-10",
"count": 1
},
{
"date": "2022-07-13",
"count": 1
},
{
"date": "2022-07-16",
"count": 1
},
{
"date": "2022-07-21",
"count": 1
},
{
"date": "2022-07-22",
"count": 2
},
{
"date": "2022-07-28",
"count": 2
},
{
"date": "2022-07-29",
"count": 2
},
{
"date": "2022-07-30",
"count": 1
},
{
"date": "2022-08-01",
"count": 1
},
{
"date": "2022-08-05",
"count": 2
},
{
"date": "2022-08-08",
"count": 1
},
{
"date": "2022-08-09",
"count": 2
},
{
"date": "2022-08-10",
"count": 1
},
{
"date": "2022-08-17",
"count": 2
},
{
"date": "2022-08-18",
"count": 1
},
{
"date": "2022-08-20",
"count": 1
},
{
"date": "2022-08-23",
"count": 2
},
{
"date": "2022-08-24",
"count": 1
},
{
"date": "2022-08-25",
"count": 1
},
{
"date": "2022-08-28",
"count": 1
},
{
"date": "2022-08-29",
"count": 3
},
{
"date": "2022-08-31",
"count": 1
},
{
"date": "2022-09-01",
"count": 1
},
{
"date": "2022-09-07",
"count": 1
},
{
"date": "2022-09-13",
"count": 2
},
{
"date": "2022-09-15",
"count": 2
},
{
"date": "2022-09-18",
"count": 1
},
{
"date": "2022-09-22",
"count": 2
},
{
"date": "2022-09-28",
"count": 1
},
{
"date": "2022-10-04",
"count": 1
},
{
"date": "2022-10-05",
"count": 1
},
{
"date": "2022-10-10",
"count": 1
},
{
"date": "2022-10-13",
"count": 1
},
{
"date": "2022-10-14",
"count": 2
},
{
"date": "2022-10-16",
"count": 1
},
{
"date": "2022-10-18",
"count": 2
},
{
"date": "2022-10-23",
"count": 1
},
{
"date": "2022-10-24",
"count": 1
},
{
"date": "2022-10-25",
"count": 1
},
{
"date": "2022-10-26",
"count": 1
},
{
"date": "2022-11-03",
"count": 1
},
{
"date": "2022-11-04",
"count": 1
},
{
"date": "2022-11-06",
"count": 3
},
{
"date": "2022-11-07",
"count": 1
},
{
"date": "2022-11-08",
"count": 1
},
{
"date": "2022-11-09",
"count": 1
},
{
"date": "2022-11-10",
"count": 3
},
{
"date": "2022-11-13",
"count": 2
},
{
"date": "2022-11-15",
"count": 2
},
{
"date": "2022-11-16",
"count": 1
},
{
"date": "2022-11-17",
"count": 1
},
{
"date": "2022-11-18",
"count": 2
},
{
"date": "2022-11-20",
"count": 1
},
{
"date": "2022-11-24",
"count": 1
},
{
"date": "2022-11-25",
"count": 2
},
{
"date": "2022-11-30",
"count": 1
},
{
"date": "2022-12-01",
"count": 1
},
{
"date": "2022-12-07",
"count": 1
},
{
"date": "2022-12-08",
"count": 1
},
{
"date": "2022-12-09",
"count": 1
},
{
"date": "2022-12-10",
"count": 1
},
{
"date": "2022-12-12",
"count": 1
},
{
"date": "2022-12-14",
"count": 1
},
{
"date": "2022-12-15",
"count": 1
},
{
"date": "2022-12-16",
"count": 1
},
{
"date": "2022-12-17",
"count": 1
},
{
"date": "2022-12-18",
"count": 1
},
{
"date": "2022-12-23",
"count": 1
},
{
"date": "2022-12-31",
"count": 1
},
{
"date": "2023-01-01",
"count": 2
},
{
"date": "2023-01-02",
"count": 1
},
{
"date": "2023-01-03",
"count": 1
},
{
"date": "2023-01-06",
"count": 1
},
{
"date": "2023-01-08",
"count": 1
},
{
"date": "2023-01-13",
"count": 1
},
{
"date": "2023-01-20",
"count": 1
},
{
"date": "2023-01-22",
"count": 1
},
{
"date": "2023-01-28",
"count": 1
},
{
"date": "2023-01-31",
"count": 2
},
{
"date": "2023-02-01",
"count": 1
},
{
"date": "2023-02-02",
"count": 4
},
{
"date": "2023-02-03",
"count": 1
},
{
"date": "2023-02-10",
"count": 1
},
{
"date": "2023-02-11",
"count": 1
},
{
"date": "2023-02-13",
"count": 2
},
{
"date": "2023-02-14",
"count": 1
},
{
"date": "2023-02-17",
"count": 2
},
{
"date": "2023-02-18",
"count": 2
},
{
"date": "2023-02-22",
"count": 3
},
{
"date": "2023-02-23",
"count": 1
},
{
"date": "2023-02-28",
"count": 1
},
{
"date": "2023-03-01",
"count": 2
},
{
"date": "2023-03-03",
"count": 1
},
{
"date": "2023-03-06",
"count": 1
},
{
"date": "2023-03-07",
"count": 2
},
{
"date": "2023-03-08",
"count": 1
},
{
"date": "2023-03-10",
"count": 2
},
{
"date": "2023-03-12",
"count": 1
},
{
"date": "2023-03-13",
"count": 1
},
{
"date": "2023-03-15",
"count": 1
},
{
"date": "2023-03-20",
"count": 1
},
{
"date": "2023-03-21",
"count": 1
},
{
"date": "2023-03-28",
"count": 1
},
{
"date": "2023-03-30",
"count": 1
},
{
"date": "2023-04-01",
"count": 1
},
{
"date": "2023-04-02",
"count": 1
},
{
"date": "2023-04-06",
"count": 1
},
{
"date": "2023-04-07",
"count": 1
},
{
"date": "2023-04-11",
"count": 1
},
{
"date": "2023-04-12",
"count": 2
},
{
"date": "2023-04-13",
"count": 1
},
{
"date": "2023-04-19",
"count": 1
},
{
"date": "2023-05-06",
"count": 1
},
{
"date": "2023-05-07",
"count": 1
},
{
"date": "2023-05-09",
"count": 1
},
{
"date": "2023-05-10",
"count": 1
},
{
"date": "2023-05-13",
"count": 1
},
{
"date": "2023-05-21",
"count": 1
},
{
"date": "2023-05-22",
"count": 1
},
{
"date": "2023-05-23",
"count": 2
},
{
"date": "2023-05-25",
"count": 1
},
{
"date": "2023-05-26",
"count": 3
},
{
"date": "2023-06-01",
"count": 2
},
{
"date": "2023-06-04",
"count": 1
},
{
"date": "2023-06-06",
"count": 1
},
{
"date": "2023-06-07",
"count": 3
},
{
"date": "2023-06-09",
"count": 1
},
{
"date": "2023-06-11",
"count": 2
},
{
"date": "2023-06-12",
"count": 1
},
{
"date": "2023-06-16",
"count": 1
},
{
"date": "2023-06-17",
"count": 1
},
{
"date": "2023-06-18",
"count": 1
},
{
"date": "2023-06-19",
"count": 1
},
{
"date": "2023-06-21",
"count": 1
},
{
"date": "2023-06-27",
"count": 1
},
{
"date": "2023-06-29",
"count": 1
},
{
"date": "2023-07-02",
"count": 2
},
{
"date": "2023-07-03",
"count": 1
},
{
"date": "2023-07-05",
"count": 1
},
{
"date": "2023-07-06",
"count": 1
},
{
"date": "2023-07-08",
"count": 1
},
{
"date": "2023-07-09",
"count": 1
},
{
"date": "2023-07-10",
"count": 3
},
{
"date": "2023-07-11",
"count": 1
},
{
"date": "2023-07-14",
"count": 1
},
{
"date": "2023-07-15",
"count": 1
},
{
"date": "2023-07-16",
"count": 1
},
{
"date": "2023-07-18",
"count": 1
},
{
"date": "2023-07-19",
"count": 1
},
{
"date": "2023-07-20",
"count": 1
},
{
"date": "2023-07-25",
"count": 1
},
{
"date": "2023-07-29",
"count": 1
},
{
"date": "2023-07-31",
"count": 2
},
{
"date": "2023-08-04",
"count": 1
},
{
"date": "2023-08-05",
"count": 1
},
{
"date": "2023-08-13",
"count": 1
},
{
"date": "2023-08-15",
"count": 1
},
{
"date": "2023-08-16",
"count": 1
},
{
"date": "2023-08-21",
"count": 2
},
{
"date": "2023-08-23",
"count": 1
},
{
"date": "2023-08-25",
"count": 1
},
{
"date": "2023-08-29",
"count": 1
},
{
"date": "2023-08-30",
"count": 1
},
{
"date": "2023-09-04",
"count": 2
},
{
"date": "2023-09-06",
"count": 1
},
{
"date": "2023-09-07",
"count": 1
},
{
"date": "2023-09-14",
"count": 1
},
{
"date": "2023-09-15",
"count": 1
},
{
"date": "2023-09-16",
"count": 1
},
{
"date": "2023-09-19",
"count": 1
},
{
"date": "2023-09-20",
"count": 1
},
{
"date": "2023-09-21",
"count": 1
},
{
"date": "2023-09-23",
"count": 1
},
{
"date": "2023-09-24",
"count": 1
},
{
"date": "2023-09-25",
"count": 1
},
{
"date": "2023-09-26",
"count": 1
},
{
"date": "2023-09-27",
"count": 1
},
{
"date": "2023-09-28",
"count": 1
},
{
"date": "2023-09-29",
"count": 1
},
{
"date": "2023-10-02",
"count": 1
},
{
"date": "2023-10-03",
"count": 1
},
{
"date": "2023-10-05",
"count": 1
},
{
"date": "2023-10-08",
"count": 1
},
{
"date": "2023-10-12",
"count": 1
},
{
"date": "2023-10-13",
"count": 1
},
{
"date": "2023-10-14",
"count": 1
},
{
"date": "2023-10-16",
"count": 1
},
{
"date": "2023-10-18",
"count": 2
},
{
"date": "2023-10-20",
"count": 2
},
{
"date": "2023-10-21",
"count": 1
},
{
"date": "2023-10-23",
"count": 1
},
{
"date": "2023-10-24",
"count": 3
},
{
"date": "2023-10-28",
"count": 1
},
{
"date": "2023-10-29",
"count": 1
},
{
"date": "2023-11-06",
"count": 1
},
{
"date": "2023-11-08",
"count": 1
},
{
"date": "2023-11-09",
"count": 1
},
{
"date": "2023-11-15",
"count": 1
},
{
"date": "2023-11-17",
"count": 1
},
{
"date": "2023-11-21",
"count": 1
},
{
"date": "2023-11-23",
"count": 1
},
{
"date": "2023-11-26",
"count": 1
},
{
"date": "2023-11-30",
"count": 1
},
{
"date": "2023-12-03",
"count": 1
},
{
"date": "2023-12-04",
"count": 1
},
{
"date": "2023-12-05",
"count": 1
},
{
"date": "2023-12-09",
"count": 1
},
{
"date": "2023-12-10",
"count": 1
},
{
"date": "2023-12-12",
"count": 1
},
{
"date": "2023-12-18",
"count": 1
},
{
"date": "2023-12-21",
"count": 1
},
{
"date": "2023-12-22",
"count": 1
},
{
"date": "2023-12-23",
"count": 1
},
{
"date": "2023-12-27",
"count": 1
},
{
"date": "2023-12-28",
"count": 1
},
{
"date": "2023-12-29",
"count": 1
},
{
"date": "2024-01-02",
"count": 2
},
{
"date": "2024-01-08",
"count": 1
},
{
"date": "2024-01-17",
"count": 1
},
{
"date": "2024-01-19",
"count": 2
},
{
"date": "2024-01-23",
"count": 1
},
{
"date": "2024-01-27",
"count": 1
},
{
"date": "2024-01-30",
"count": 2
},
{
"date": "2024-01-31",
"count": 1
},
{
"date": "2024-02-11",
"count": 2
},
{
"date": "2024-02-14",
"count": 1
},
{
"date": "2024-02-18",
"count": 1
},
{
"date": "2024-02-24",
"count": 1
},
{
"date": "2024-02-27",
"count": 1
},
{
"date": "2024-02-28",
"count": 1
},
{
"date": "2024-03-01",
"count": 1
},
{
"date": "2024-03-02",
"count": 1
},
{
"date": "2024-03-04",
"count": 1
},
{
"date": "2024-03-06",
"count": 1
},
{
"date": "2024-03-07",
"count": 2
},
{
"date": "2024-03-11",
"count": 1
},
{
"date": "2024-03-13",
"count": 1
},
{
"date": "2024-03-14",
"count": 1
},
{
"date": "2024-03-27",
"count": 1
},
{
"date": "2024-03-31",
"count": 1
},
{
"date": "2024-04-02",
"count": 1
},
{
"date": "2024-04-05",
"count": 2
},
{
"date": "2024-04-06",
"count": 1
},
{
"date": "2024-04-07",
"count": 2
},
{
"date": "2024-04-08",
"count": 1
},
{
"date": "2024-04-10",
"count": 1
},
{
"date": "2024-04-11",
"count": 1
},
{
"date": "2024-04-18",
"count": 1
},
{
"date": "2024-04-20",
"count": 1
},
{
"date": "2024-04-23",
"count": 3
},
{
"date": "2024-04-24",
"count": 1
},
{
"date": "2024-04-30",
"count": 1
},
{
"date": "2024-05-03",
"count": 3
},
{
"date": "2024-05-07",
"count": 1
},
{
"date": "2024-05-08",
"count": 1
},
{
"date": "2024-05-13",
"count": 1
},
{
"date": "2024-05-15",
"count": 2
},
{
"date": "2024-05-16",
"count": 1
},
{
"date": "2024-05-18",
"count": 1
},
{
"date": "2024-05-21",
"count": 1
},
{
"date": "2024-05-22",
"count": 1
},
{
"date": "2024-05-24",
"count": 1
},
{
"date": "2024-05-30",
"count": 2
},
{
"date": "2024-06-01",
"count": 3
},
{
"date": "2024-06-03",
"count": 1
},
{
"date": "2024-06-10",
"count": 1
},
{
"date": "2024-06-12",
"count": 1
},
{
"date": "2024-06-14",
"count": 2
},
{
"date": "2024-06-24",
"count": 1
},
{
"date": "2024-06-27",
"count": 2
},
{
"date": "2024-07-03",
"count": 1
},
{
"date": "2024-07-04",
"count": 3
},
{
"date": "2024-07-06",
"count": 1
},
{
"date": "2024-07-08",
"count": 1
},
{
"date": "2024-07-10",
"count": 1
},
{
"date": "2024-07-11",
"count": 1
},
{
"date": "2024-07-20",
"count": 1
},
{
"date": "2024-07-21",
"count": 1
},
{
"date": "2024-07-26",
"count": 1
},
{
"date": "2024-07-31",
"count": 1
},
{
"date": "2024-08-05",
"count": 1
},
{
"date": "2024-08-07",
"count": 1
},
{
"date": "2024-08-11",
"count": 1
},
{
"date": "2024-08-14",
"count": 1
},
{
"date": "2024-08-19",
"count": 1
},
{
"date": "2024-08-20",
"count": 1
},
{
"date": "2024-08-22",
"count": 1
},
{
"date": "2024-08-25",
"count": 1
},
{
"date": "2024-09-02",
"count": 1
},
{
"date": "2024-09-03",
"count": 1
},
{
"date": "2024-09-04",
"count": 1
},
{
"date": "2024-09-05",
"count": 24
},
{
"date": "2024-09-06",
"count": 3
},
{
"date": "2024-09-07",
"count": 1
},
{
"date": "2024-09-09",
"count": 1
},
{
"date": "2024-09-10",
"count": 1
},
{
"date": "2024-09-15",
"count": 1
},
{
"date": "2024-09-19",
"count": 2
},
{
"date": "2024-09-21",
"count": 2
},
{
"date": "2024-09-26",
"count": 1
},
{
"date": "2024-10-02",
"count": 2
},
{
"date": "2024-10-04",
"count": 1
},
{
"date": "2024-10-07",
"count": 1
},
{
"date": "2024-10-10",
"count": 1
},
{
"date": "2024-10-15",
"count": 2
},
{
"date": "2024-10-29",
"count": 2
},
{
"date": "2024-10-30",
"count": 2
},
{
"date": "2024-11-02",
"count": 1
},
{
"date": "2024-11-06",
"count": 1
},
{
"date": "2024-11-07",
"count": 1
},
{
"date": "2024-11-11",
"count": 1
},
{
"date": "2024-11-14",
"count": 1
},
{
"date": "2024-11-19",
"count": 1
},
{
"date": "2024-11-20",
"count": 1
},
{
"date": "2024-11-28",
"count": 1
},
{
"date": "2024-12-02",
"count": 2
},
{
"date": "2024-12-06",
"count": 1
},
{
"date": "2024-12-11",
"count": 1
},
{
"date": "2024-12-12",
"count": 2
},
{
"date": "2024-12-14",
"count": 1
},
{
"date": "2024-12-18",
"count": 1
},
{
"date": "2024-12-19",
"count": 1
},
{
"date": "2024-12-28",
"count": 2
},
{
"date": "2024-12-29",
"count": 1
},
{
"date": "2024-12-30",
"count": 1
},
{
"date": "2025-01-03",
"count": 1
},
{
"date": "2025-01-04",
"count": 1
},
{
"date": "2025-01-07",
"count": 1
},
{
"date": "2025-01-14",
"count": 1
},
{
"date": "2025-01-17",
"count": 1
},
{
"date": "2025-01-18",
"count": 1
},
{
"date": "2025-01-31",
"count": 1
},
{
"date": "2025-02-08",
"count": 1
},
{
"date": "2025-02-10",
"count": 1
},
{
"date": "2025-02-15",
"count": 1
},
{
"date": "2025-02-16",
"count": 2
},
{
"date": "2025-02-20",
"count": 1
},
{
"date": "2025-02-22",
"count": 1
},
{
"date": "2025-02-24",
"count": 1
},
{
"date": "2025-02-28",
"count": 1
},
{
"date": "2025-03-03",
"count": 1
},
{
"date": "2025-03-04",
"count": 1
},
{
"date": "2025-03-10",
"count": 1
},
{
"date": "2025-03-13",
"count": 2
},
{
"date": "2025-03-15",
"count": 1
},
{
"date": "2025-03-17",
"count": 1
},
{
"date": "2025-03-23",
"count": 1
},
{
"date": "2025-04-03",
"count": 1
},
{
"date": "2025-04-08",
"count": 1
},
{
"date": "2025-04-09",
"count": 1
},
{
"date": "2025-04-18",
"count": 1
},
{
"date": "2025-04-19",
"count": 1
},
{
"date": "2025-04-21",
"count": 1
},
{
"date": "2025-04-29",
"count": 2
},
{
"date": "2025-05-07",
"count": 1
},
{
"date": "2025-05-08",
"count": 1
},
{
"date": "2025-05-09",
"count": 1
},
{
"date": "2025-05-10",
"count": 1
},
{
"date": "2025-05-14",
"count": 1
},
{
"date": "2025-05-16",
"count": 1
},
{
"date": "2025-06-15",
"count": 1
},
{
"date": "2025-06-29",
"count": 2
},
{
"date": "2025-07-02",
"count": 1
},
{
"date": "2025-07-03",
"count": 1
},
{
"date": "2025-07-08",
"count": 1
},
{
"date": "2025-07-14",
"count": 1
},
{
"date": "2025-07-17",
"count": 1
},
{
"date": "2025-07-18",
"count": 1
},
{
"date": "2025-07-19",
"count": 1
},
{
"date": "2025-07-23",
"count": 2
},
{
"date": "2025-07-24",
"count": 1
},
{
"date": "2025-07-27",
"count": 1
},
{
"date": "2025-07-28",
"count": 2
},
{
"date": "2025-08-03",
"count": 1
},
{
"date": "2025-08-05",
"count": 1
},
{
"date": "2025-08-11",
"count": 1
},
{
"date": "2025-08-15",
"count": 1
},
{
"date": "2025-08-18",
"count": 1
},
{
"date": "2025-08-23",
"count": 1
},
{
"date": "2025-08-26",
"count": 1
},
{
"date": "2025-08-27",
"count": 2
},
{
"date": "2025-08-28",
"count": 1
},
{
"date": "2025-08-30",
"count": 1
},
{
"date": "2025-09-03",
"count": 1
},
{
"date": "2025-09-04",
"count": 1
},
{
"date": "2025-09-08",
"count": 1
},
{
"date": "2025-09-12",
"count": 2
},
{
"date": "2025-09-13",
"count": 1
},
{
"date": "2025-09-16",
"count": 1
},
{
"date": "2025-09-18",
"count": 1
},
{
"date": "2025-09-19",
"count": 1
},
{
"date": "2025-09-23",
"count": 1
},
{
"date": "2025-09-24",
"count": 1
},
{
"date": "2025-10-02",
"count": 4
},
{
"date": "2025-10-03",
"count": 2
},
{
"date": "2025-10-05",
"count": 1
},
{
"date": "2025-10-06",
"count": 2
},
{
"date": "2025-10-08",
"count": 2
},
{
"date": "2025-10-10",
"count": 1
},
{
"date": "2025-10-19",
"count": 1
},
{
"date": "2025-10-21",
"count": 1
},
{
"date": "2025-10-23",
"count": 1
},
{
"date": "2025-10-28",
"count": 1
},
{
"date": "2025-11-03",
"count": 1
},
{
"date": "2025-11-05",
"count": 1
},
{
"date": "2025-11-07",
"count": 1
},
{
"date": "2025-11-12",
"count": 1
},
{
"date": "2025-11-18",
"count": 2
},
{
"date": "2025-11-19",
"count": 3
},
{
"date": "2025-11-27",
"count": 1
},
{
"date": "2025-12-01",
"count": 1
},
{
"date": "2025-12-04",
"count": 1
},
{
"date": "2025-12-17",
"count": 1
},
{
"date": "2025-12-22",
"count": 1
},
{
"date": "2025-12-28",
"count": 1
},
{
"date": "2025-12-30",
"count": 1
},
{
"date": "2026-01-01",
"count": 1
},
{
"date": "2026-01-02",
"count": 1
},
{
"date": "2026-01-09",
"count": 1
},
{
"date": "2026-01-14",
"count": 1
},
{
"date": "2026-01-24",
"count": 1
},
{
"date": "2026-02-15",
"count": 1
},
{
"date": "2026-02-20",
"count": 1
},
{
"date": "2026-02-22",
"count": 1
},
{
"date": "2026-02-26",
"count": 1
},
{
"date": "2026-02-28",
"count": 1
},
{
"date": "2026-03-05",
"count": 1
},
{
"date": "2026-03-08",
"count": 1
},
{
"date": "2026-03-09",
"count": 1
},
{
"date": "2026-03-10",
"count": 1
},
{
"date": "2026-03-16",
"count": 1
},
{
"date": "2026-03-19",
"count": 1
},
{
"date": "2026-03-21",
"count": 1
},
{
"date": "2026-03-22",
"count": 1
},
{
"date": "2026-03-24",
"count": 1
},
{
"date": "2026-04-06",
"count": 1
},
{
"date": "2026-04-10",
"count": 1
},
{
"date": "2026-04-17",
"count": 1
},
{
"date": "2026-04-21",
"count": 1
},
{
"date": "2026-04-24",
"count": 1
},
{
"date": "2026-04-25",
"count": 1
},
{
"date": "2026-04-27",
"count": 1
},
{
"date": "2026-05-02",
"count": 1
},
{
"date": "2026-05-08",
"count": 1
},
{
"date": "2026-05-10",
"count": 1
},
{
"date": "2026-05-19",
"count": 1
},
{
"date": "2026-06-01",
"count": 1
},
{
"date": "2026-06-10",
"count": 1
},
{
"date": "2026-06-11",
"count": 1
},
{
"date": "2026-06-21",
"count": 1
},
{
"date": "2026-06-24",
"count": 1
},
{
"date": "2026-07-09",
"count": 1
},
{
"date": "2026-07-12",
"count": 1
}
],
"complete": false,
"collected": 1000,
"total_stars": 5087
},
"open_issues_and_prs": 0
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [],
"has_llms_txt": false,
"has_dockerfile": false,
"has_mcp_signal": false,
"bootstrap_files": [],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [],
"toolchain_manifests": [],
"largest_source_bytes": 311412,
"source_files_sampled": 625,
"oversized_source_files": 17,
"agent_instruction_files": [],
"agent_instruction_max_bytes": null
},
"dependencies": {
"manifests": [],
"advisories": {
"error": "No resolved dependencies carried a version and a supported ecosystem",
"scope": "repository_graph",
"source": null,
"findings": [],
"collected": false,
"malicious": [],
"truncated": false,
"by_severity": {},
"advisory_count": 0,
"affected_count": 0,
"assessed_count": 0,
"malicious_count": 0,
"assessed_package": null,
"unassessed_count": 7,
"direct_affected_count": 0
},
"ecosystems": [],
"dependencies": [],
"all_dependencies": {
"error": null,
"source": "github-sbom",
"packages": [
{
"name": "activemodel",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "bigdecimal",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "minitest",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "minitest-global_expectations",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "minitest-hooks",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "nokogiri",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "tzinfo",
"direct": false,
"version": null,
"ecosystem": "rubygems"
}
],
"collected": true,
"truncated": false,
"total_count": 7,
"direct_count": 0,
"indirect_count": 7
}
},
"maintainership": {
"issues": {
"open_prs": 0,
"merged_prs": 472,
"open_issues": 0,
"closed_ratio": 1,
"closed_issues": 1227,
"closed_unmerged_prs": 295
},
"bus_factor": 1,
"bot_contributors": 0,
"top_contributors": [
{
"type": "User",
"login": "jeremyevans",
"commits": 6963,
"avatar_url": "https://avatars.githubusercontent.com/u/3846?v=4"
},
{
"type": "User",
"login": "noteflakes",
"commits": 633,
"avatar_url": "https://avatars.githubusercontent.com/u/291?v=4"
},
{
"type": "User",
"login": "janko",
"commits": 36,
"avatar_url": "https://avatars.githubusercontent.com/u/795488?v=4"
},
{
"type": "User",
"login": "wayneeseguin",
"commits": 36,
"avatar_url": "https://avatars.githubusercontent.com/u/18?v=4"
},
{
"type": "User",
"login": "chanks",
"commits": 34,
"avatar_url": "https://avatars.githubusercontent.com/u/300058?v=4"
},
{
"type": "User",
"login": "tmm1",
"commits": 30,
"avatar_url": "https://avatars.githubusercontent.com/u/2567?v=4"
},
{
"type": "User",
"login": "lancecarlson",
"commits": 29,
"avatar_url": "https://avatars.githubusercontent.com/u/107?v=4"
},
{
"type": "User",
"login": "celsworth",
"commits": 27,
"avatar_url": "https://avatars.githubusercontent.com/u/2658891?v=4"
},
{
"type": "User",
"login": "wishdev",
"commits": 21,
"avatar_url": "https://avatars.githubusercontent.com/u/1860?v=4"
},
{
"type": "User",
"login": "roylez",
"commits": 15,
"avatar_url": "https://avatars.githubusercontent.com/u/62289?v=4"
}
],
"contributors_sampled": 100,
"top_contributor_share": 0.85
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"ci.yml"
],
"has_docs_dir": true,
"linter_configs": [],
"has_editorconfig": false,
"has_linter_config": false,
"has_precommit_config": false
},
"security_signals": {
"lockfiles": [],
"scorecard": {
"checks": [
{
"name": "Binary-Artifacts",
"score": 10,
"reason": "no binaries found in the repo",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
},
{
"name": "Branch-Protection",
"score": null,
"reason": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
},
{
"name": "CI-Tests",
"score": 8,
"reason": "4 out of 5 merged PRs checked by a CI test -- score normalized to 8",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
},
{
"name": "CII-Best-Practices",
"score": 0,
"reason": "no effort to earn an OpenSSF best practices badge detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
},
{
"name": "Code-Review",
"score": 1,
"reason": "Found 5/29 approved changesets -- score normalized to 1",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 10,
"reason": "project has 48 contributing companies or organizations",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
},
{
"name": "Dangerous-Workflow",
"score": 10,
"reason": "no dangerous workflow patterns detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
},
{
"name": "Dependency-Update-Tool",
"score": 0,
"reason": "no update tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
},
{
"name": "Fuzzing",
"score": 0,
"reason": "project is not fuzzed",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
},
{
"name": "License",
"score": 10,
"reason": "license file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
},
{
"name": "Maintained",
"score": 10,
"reason": "25 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 10",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
},
{
"name": "Packaging",
"score": null,
"reason": "packaging workflow not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
},
{
"name": "Pinned-Dependencies",
"score": 0,
"reason": "dependency not pinned by hash detected -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
},
{
"name": "SAST",
"score": 0,
"reason": "SAST tool is not run on all commits -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
},
{
"name": "Security-Policy",
"score": 0,
"reason": "security policy file not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
},
{
"name": "Signed-Releases",
"score": null,
"reason": "no releases found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
},
{
"name": "Token-Permissions",
"score": 10,
"reason": "GitHub workflow tokens follow principle of least privilege",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
},
{
"name": "Vulnerabilities",
"score": 10,
"reason": "0 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "bdb03b6d7f3076c9c0c4880975afb6d159a2e717",
"ran_at": "2026-07-21T23:26:33Z",
"aggregate_score": 5.6,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": false,
"has_dependabot_config": false
},
"contribution_flow": {
"collected": true,
"ci_last_run_at": "2026-07-19T17:02:53Z",
"oldest_open_prs": [],
"last_merged_pr_at": "2026-07-08T21:02:58Z",
"ci_last_conclusion": "SUCCESS",
"oldest_open_issues": []
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/jeremyevans/sequel",
"host": "github.com",
"name": "sequel",
"owner": "jeremyevans"
},
"metrics": {
"overall": {
"key": "overall",
"band": "good",
"name": "Overall health",
"note": null,
"notes": [],
"value": 75,
"inputs": {
"security": 56,
"vitality": 90,
"community": 88,
"governance": 67,
"engineering": 70
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "excellent",
"name": "Vitality",
"value": 90,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "excellent",
"name": "Development activity",
"note": null,
"notes": [],
"value": 92,
"inputs": {
"commits_last_year": 164,
"human_commit_share": 1,
"days_since_last_push": 2,
"active_weeks_last_year": 41
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 2 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "push_recency",
"params": {
"days": 2
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "41/52 weeks with commits",
"points": 28.4,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 41
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "164 commits in the last year",
"points": 18,
"status": "met",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 164
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "25 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 10",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "excellent",
"name": "Release discipline",
"note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"openssf_scorecard_signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 88,
"inputs": {
"releases_count": 100,
"latest_release_tag": "5.106.0",
"releases_from_tags": true,
"days_since_latest_release": 20,
"mean_days_between_releases": 30.3
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "100 version tags (no GitHub releases)",
"points": 16.2,
"status": "partial",
"details": [
{
"code": "version_tags_no_releases",
"params": {
"count": 100
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 20 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 20
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~30.3 days",
"points": 27,
"status": "met",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 30.3
}
}
],
"max_points": 27
},
{
"key": "openssf_scorecard_signed_releases",
"name": "OpenSSF Scorecard: Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 10
}
]
},
{
"key": "abandonment",
"band": "excellent",
"name": "Abandonment",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"cap": null,
"state": "maintained",
"guards": [],
"signals": [],
"red_flag": false,
"multiplier_pct": 100,
"declared_reason": null,
"unverified_reason": null,
"unanswered_open_prs": null,
"unanswered_open_issues": null,
"days_since_last_merged_pr": null,
"days_since_last_human_commit": 2,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "last human commit 2 days ago",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_maintained",
"params": {
"days": 2
}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "excellent",
"name": "Community & Adoption",
"value": 88,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "excellent",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 96,
"inputs": {
"forks": 1075,
"stars": 5087,
"watchers": 106,
"growth_state": "organic",
"growth_factor_pct": 100
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "5,087 stars",
"points": 60,
"status": "met",
"details": [
{
"code": "stars",
"params": {
"count": 5087
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "1,075 forks",
"points": 25,
"status": "met",
"details": [
{
"code": "forks",
"params": {
"count": 1075
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "106 watchers",
"points": 11.2,
"status": "partial",
"details": [
{
"code": "watchers",
"params": {
"count": 106
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "good",
"name": "Community health",
"note": null,
"notes": [],
"value": 70,
"inputs": {
"has_readme": true,
"has_license": true,
"has_contributing": true,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 22.5,
"status": "met",
"details": [],
"max_points": 22.5
},
{
"key": "license",
"name": "License",
"detail": "recognized license (MIT)",
"points": 22.5,
"status": "met",
"details": [
{
"code": "license_standard",
"params": {}
},
{
"code": "license_spdx",
"params": {
"spdx": "MIT"
}
}
],
"max_points": 22.5
},
{
"key": "contributing_guide",
"name": "CONTRIBUTING guide",
"detail": null,
"points": 18,
"status": "met",
"details": [],
"max_points": 18
},
{
"key": "code_of_conduct",
"name": "Code of conduct",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 13.5
},
{
"key": "issue_template",
"name": "Issue template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.2
},
{
"key": "pr_template",
"name": "PR template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.3
}
]
},
{
"key": "ecosystem_adoption",
"band": "excellent",
"name": "Ecosystem adoption (downloads)",
"note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"registry_dependents"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 100,
"inputs": {
"packages": [
"sequel"
],
"dependents": null,
"ecosystems": "rubygems",
"total_downloads": 72208559,
"monthly_downloads": null
},
"components": [
{
"key": "total_downloads",
"name": "Total downloads",
"detail": "72,208,559 downloads all-time across rubygems",
"points": 80,
"status": "met",
"details": [
{
"code": "downloads_total",
"params": {
"count": 72208559,
"ecosystems": "rubygems"
}
}
],
"max_points": 80
},
{
"key": "registry_dependents",
"name": "Registry dependents",
"detail": "not reported by this ecosystem",
"points": 0,
"status": "excluded",
"details": [
{
"code": "not_reported_by_this_ecosystem",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
},
{
"key": "governance",
"band": "moderate",
"name": "Sustainability & Governance",
"value": 67,
"weight": 0.24,
"metrics": [
{
"key": "maintainer_resilience",
"band": "at_risk",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 36,
"inputs": {
"bus_factor": 1,
"contributors_sampled": 100,
"top_contributor_share": 0.85
},
"components": [
{
"key": "bus_factor",
"name": "Bus factor",
"detail": "1 contributor(s) cover half of all commits",
"points": 9,
"status": "partial",
"details": [
{
"code": "bus_factor",
"params": {
"count": 1
}
}
],
"max_points": 54
},
{
"key": "commit_distribution",
"name": "Commit distribution",
"detail": "top contributor authored 85% of commits",
"points": 3.4,
"status": "partial",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 85
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "100 contributors",
"points": 13.5,
"status": "met",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 100
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 48 contributing companies or organizations",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "good",
"name": "Issue & PR responsiveness",
"note": null,
"notes": [],
"value": 72,
"inputs": {
"merged_prs": 472,
"open_issues": 0,
"closed_issues": 1227,
"issue_closed_ratio": 1,
"closed_unmerged_prs": 295
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "100% of issues closed",
"points": 46.8,
"status": "met",
"details": [
{
"code": "issues_closed_share",
"params": {
"share": 100
}
}
],
"max_points": 46.75
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "472/767 decided PRs merged",
"points": 23.5,
"status": "partial",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 472,
"decided": 767
}
}
],
"max_points": 38.25
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 5/29 approved changesets -- score normalized to 1",
"points": 1.5,
"status": "partial",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "good",
"name": "Ownership & stewardship",
"note": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"verified_domain"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 73,
"inputs": {
"followers": 1742,
"owner_type": "User",
"is_verified": null,
"owner_login": "jeremyevans",
"public_repos": 239,
"account_age_days": 6691
},
"components": [
{
"key": "ownership_backing",
"name": "Ownership backing",
"detail": "personal (user) account",
"points": 10,
"status": "partial",
"details": [
{
"code": "owner_personal",
"params": {}
}
],
"max_points": 30
},
{
"key": "verified_domain",
"name": "Verified domain",
"detail": "not applicable to user accounts",
"points": 0,
"status": "excluded",
"details": [
{
"code": "not_applicable_to_user_accounts",
"params": {}
}
],
"max_points": 20
},
{
"key": "owner_reach",
"name": "Owner reach",
"detail": "1,742 followers of jeremyevans",
"points": 23.3,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 1742,
"login": "jeremyevans"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "239 public repos, account ~18 yr old",
"points": 25,
"status": "met",
"details": [
{
"code": "public_repos",
"params": {
"count": 239
}
},
{
"code": "account_age_years",
"params": {
"years": 18
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "excellent",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"packages": [
"sequel"
],
"ecosystems": "rubygems",
"any_deprecated": false,
"min_days_since_publish": 20
},
"components": [
{
"key": "published_resolvable",
"name": "Published & resolvable",
"detail": "1 package(s) on rubygems",
"points": 25,
"status": "met",
"details": [
{
"code": "packages_published",
"params": {
"count": 1,
"ecosystems": "rubygems"
}
}
],
"max_points": 25
},
{
"key": "publish_recency",
"name": "Publish recency",
"detail": "latest publish 20 days ago",
"points": 35,
"status": "met",
"details": [
{
"code": "publish_recency",
"params": {
"days": 20
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "307 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 307
}
}
],
"max_points": 20
},
{
"key": "not_deprecated",
"name": "Not deprecated",
"detail": "active, not deprecated or yanked",
"points": 20,
"status": "met",
"details": [
{
"code": "package_not_deprecated",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
},
{
"key": "engineering",
"band": "good",
"name": "Engineering Quality",
"value": 70,
"weight": 0.2,
"metrics": [
{
"key": "engineering_practices",
"band": "moderate",
"name": "Engineering practices",
"note": null,
"notes": [],
"value": 64,
"inputs": {
"has_ci": true,
"has_tests": true,
"has_editorconfig": false,
"has_linter_config": false,
"has_precommit_config": false
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": "1 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 1
}
}
],
"max_points": 24
},
{
"key": "tests_present",
"name": "Tests present",
"detail": null,
"points": 24,
"status": "met",
"details": [],
"max_points": 24
},
{
"key": "linter_config",
"name": "Linter config",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 16
},
{
"key": "pre_commit_hooks",
"name": "Pre-commit hooks",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 9.6
},
{
"key": "editorconfig",
"name": ".editorconfig",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.4
},
{
"key": "openssf_scorecard_ci_tests",
"name": "OpenSSF Scorecard: CI-Tests",
"detail": "4 out of 5 merged PRs checked by a CI test -- score normalized to 8",
"points": 16,
"status": "partial",
"details": [],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "good",
"name": "Documentation",
"note": null,
"notes": [],
"value": 80,
"inputs": {
"topics": [],
"has_wiki": false,
"homepage": "http://sequel.jeremyevans.net",
"has_readme": true,
"has_docs_dir": true,
"has_description": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 30,
"status": "met",
"details": [],
"max_points": 30
},
{
"key": "documentation_directory",
"name": "Documentation directory",
"detail": null,
"points": 25,
"status": "met",
"details": [],
"max_points": 25
},
{
"key": "documentation_homepage_site",
"name": "Documentation / homepage site",
"detail": "http://sequel.jeremyevans.net",
"points": 15,
"status": "met",
"details": [],
"max_points": 15
},
{
"key": "repository_description",
"name": "Repository description",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "topics",
"name": "Topics",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
},
{
"key": "wiki",
"name": "Wiki",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
}
],
"description": "Are baseline engineering and documentation practices in place?"
},
{
"key": "security",
"band": "moderate",
"name": "Security",
"value": 56,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "moderate",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): Branch-Protection, Packaging, Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"branch_protection",
"packaging",
"signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 56,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 15,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 3,
"scorecard_aggregate": 5.6
},
"components": [
{
"key": "binary_artifacts",
"name": "Binary-Artifacts",
"detail": "no binaries found in the repo",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "branch_protection",
"name": "Branch-Protection",
"detail": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "4 out of 5 merged PRs checked by a CI test -- score normalized to 8",
"points": 2,
"status": "partial",
"details": [],
"max_points": 2.5
},
{
"key": "cii_best_practices",
"name": "CII-Best-Practices",
"detail": "no effort to earn an OpenSSF best practices badge detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "code_review",
"name": "Code-Review",
"detail": "Found 5/29 approved changesets -- score normalized to 1",
"points": 0.8,
"status": "partial",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 48 contributing companies or organizations",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "dangerous_workflow",
"name": "Dangerous-Workflow",
"detail": "no dangerous workflow patterns detected",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "dependency_update_tool",
"name": "Dependency-Update-Tool",
"detail": "no update tool detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "fuzzing",
"name": "Fuzzing",
"detail": "project is not fuzzed",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "license",
"name": "License",
"detail": "license file detected",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "maintained",
"name": "Maintained",
"detail": "25 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 10",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "packaging",
"name": "Packaging",
"detail": "packaging workflow not detected",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 5
},
{
"key": "pinned_dependencies",
"name": "Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "sast",
"name": "SAST",
"detail": "SAST tool is not run on all commits -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "security_policy",
"name": "Security-Policy",
"detail": "security policy file not detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "signed_releases",
"name": "Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "token_permissions",
"name": "Token-Permissions",
"detail": "GitHub workflow tokens follow principle of least privilege",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "vulnerabilities",
"name": "Vulnerabilities",
"detail": "0 existing vulnerabilities detected",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
}
]
},
{
"key": "high_risk_jurisdiction_exposure",
"band": "excellent",
"name": "High-Risk Jurisdiction Exposure",
"note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
"notes": [
{
"code": "jurisdiction_evidence_limits",
"params": {}
}
],
"value": 100,
"inputs": {
"meaning": "self-published location evidence; not nationality or citizenship",
"red_flag": false,
"exposures": [],
"policy_countries": [
"Russia",
"Iran",
"North Korea"
],
"review_only_matches": 0,
"assessed_self_published_locations": 21
},
"components": [
{
"key": "policy_exposure_multiplier",
"name": "Policy exposure multiplier",
"detail": "no confirmed policy-scope location match",
"points": 100,
"status": "met",
"details": [
{
"code": "jurisdiction_no_match",
"params": {}
}
],
"max_points": 100
}
]
}
],
"description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
},
{
"key": "ai_readiness",
"band": "at_risk",
"name": "AI Readiness",
"value": 32,
"weight": 0,
"metrics": [
{
"key": "ai_agent_context",
"band": "at_risk",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 33,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 0.62,
"agent_instruction_files": [],
"agent_instruction_max_bytes": null
},
"components": [
{
"key": "agent_instructions",
"name": "Agent instructions",
"detail": "no CLAUDE.md / AGENTS.md / editor rules",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_agent_instructions",
"params": {}
}
],
"max_points": 45
},
{
"key": "machine_readable_docs_llms_txt",
"name": "Machine-readable docs (llms.txt)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
},
{
"key": "legible_commit_history",
"name": "Legible commit history",
"detail": "62 of 100 human commits state their intent (structured subject or explanatory body)",
"points": 33.1,
"status": "partial",
"details": [
{
"code": "legible_history",
"params": {
"legible": 62,
"sampled": 100
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "critical",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 22,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [],
"has_dockerfile": false,
"typed_language": false,
"bootstrap_files": [],
"has_devcontainer": false,
"has_linter_config": false,
"typecheck_configs": [],
"agent_commit_share": 0,
"toolchain_manifests": [],
"dependency_bot_commit_share": 0
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 18
},
{
"key": "automated_tests",
"name": "Automated tests",
"detail": null,
"points": 22,
"status": "met",
"details": [],
"max_points": 22
},
{
"key": "lint_format_config",
"name": "Lint / format config",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 11
},
{
"key": "reproducible_environment",
"name": "Reproducible environment",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
},
{
"key": "demonstrated_agent_practice",
"name": "Demonstrated agent practice",
"detail": "no agent-authored commits among the last 100",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_agent_authored_commits",
"params": {
"sampled": 100
}
}
],
"max_points": 10
},
{
"key": "automated_maintenance",
"name": "Automated maintenance",
"detail": "no automated dependency updates observed",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_dependency_automation",
"params": {}
}
],
"max_points": 8
},
{
"key": "openssf_scorecard_pinned_dependencies",
"name": "OpenSSF Scorecard: Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "ai_code_legibility",
"band": "moderate",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 54,
"inputs": {
"primary_language": "Ruby",
"largest_source_bytes": 311412,
"source_files_sampled": 625,
"oversized_source_files": 17
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "Ruby without a type-check config",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_typecheck_config_language",
"params": {
"language": "Ruby"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "17/625 source files over 60KB",
"points": 53.5,
"status": "partial",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 625,
"oversized": 17
}
}
],
"max_points": 55
}
]
}
],
"description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
}
],
"metrics_version": "1.13.0"
},
"warnings": [
"No resolved dependencies carried a version and a supported ecosystem"
],
"report_type": "repository",
"generated_at": "2026-07-21T23:26:51.678699Z",
"schema_version": "0.26.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/j/jeremyevans/sequel.svg",
"full_name": "jeremyevans/sequel",
"license_state": "standard",
"license_spdx": "MIT"
}