Informe JSON sin procesar legible por máquina
{
"data": {
"repo": {
"topics": [
"android",
"mobile",
"mobile-app",
"mobile-development",
"architecture",
"architectural-patterns",
"mvc",
"mvvm",
"mvp",
"viper"
],
"is_fork": false,
"size_kb": 11420,
"has_wiki": true,
"homepage": "https://eng.uber.com/tag/ribs/",
"languages": {
"Java": 342654,
"Shell": 1474,
"Kotlin": 503355,
"JavaScript": 14648
},
"pushed_at": "2026-07-15T22:14:43Z",
"created_at": "2017-10-03T18:18:50Z",
"owner_type": "Organization",
"updated_at": "2026-07-21T11:14:55Z",
"description": "Uber's cross-platform mobile architecture framework - Android Repository",
"is_archived": false,
"is_disabled": false,
"license_spdx": "Apache-2.0",
"default_branch": "main",
"license_spdx_raw": "Apache-2.0",
"primary_language": "Kotlin",
"significant_languages": [
"Kotlin",
"Java"
]
},
"owner": {
"blog": "http://www.uber.com",
"name": "Uber Open Source",
"type": "Organization",
"login": "uber",
"company": null,
"location": "70+ countries and counting.",
"followers": 3949,
"avatar_url": "https://avatars.githubusercontent.com/u/538264?v=4",
"created_at": "2010-12-27T20:25:41Z",
"is_verified": null,
"public_repos": 174,
"account_age_days": 5684
},
"license": {
"state": "standard",
"spdx_id": "Apache-2.0",
"raw_spdx": "Apache-2.0",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "v0.16.6",
"kind": "patch",
"published_at": "2026-07-16T14:32:24Z"
},
{
"tag": "v0.16.5",
"kind": "patch",
"published_at": "2025-09-17T05:53:43Z"
},
{
"tag": "v0.16.4",
"kind": "patch",
"published_at": "2025-09-16T07:50:31Z"
},
{
"tag": "v0.16.3",
"kind": "patch",
"published_at": "2024-07-19T19:29:13Z"
},
{
"tag": "v0.16.2",
"kind": "patch",
"published_at": "2023-12-05T13:08:22Z"
},
{
"tag": "v0.16.1",
"kind": "patch",
"published_at": "2023-11-09T17:36:58Z"
},
{
"tag": "v0.16.0",
"kind": "minor",
"published_at": "2023-10-17T21:29:01Z"
},
{
"tag": "v0.15.4",
"kind": "patch",
"published_at": "2023-09-21T19:36:49Z"
},
{
"tag": "v0.15.3",
"kind": "patch",
"published_at": "2023-08-28T12:33:52Z"
},
{
"tag": "v0.15.2",
"kind": "patch",
"published_at": "2023-08-08T04:56:07Z"
},
{
"tag": "v0.15.1",
"kind": "patch",
"published_at": "2023-07-18T17:16:02Z"
},
{
"tag": "v0.15.0",
"kind": "minor",
"published_at": "2023-06-23T22:13:30Z"
},
{
"tag": "v0.14.2",
"kind": "patch",
"published_at": "2023-05-12T23:09:07Z"
},
{
"tag": "v0.14.1",
"kind": "patch",
"published_at": "2023-05-05T00:16:35Z"
},
{
"tag": "v0.14.0",
"kind": "minor",
"published_at": "2023-05-01T23:16:08Z"
},
{
"tag": "v0.13.3",
"kind": "patch",
"published_at": "2023-03-23T20:45:20Z"
},
{
"tag": "v0.13.2",
"kind": "patch",
"published_at": "2022-10-28T22:21:31Z"
},
{
"tag": "v0.13.1",
"kind": "patch",
"published_at": "2022-10-21T22:12:55Z"
},
{
"tag": "v0.13.0",
"kind": "minor",
"published_at": "2022-04-24T22:35:24Z"
},
{
"tag": "v0.12.0",
"kind": "minor",
"published_at": "2022-04-24T22:52:27Z"
},
{
"tag": "v0.10.0",
"kind": "minor",
"published_at": "2021-03-17T22:32:58Z"
},
{
"tag": "v0.9.2",
"kind": "patch",
"published_at": "2018-02-12T18:19:25Z"
},
{
"tag": "v0.9.1",
"kind": "patch",
"published_at": "2017-11-06T12:37:31Z"
},
{
"tag": "v0.9.0",
"kind": "minor",
"published_at": "2017-11-03T23:03:41Z"
}
],
"recent_commits": [
{
"oid": "e3aff84f660ac1232ffe7868fcbd51621eda277d",
"body": null,
"is_bot": false,
"headline": "Prepare next development version",
"author_name": "Patrick Steiger",
"author_login": "psteiger",
"committed_at": "2026-07-15T22:14:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "22ad3edaec87083d22979886b52f1ada5c488f68",
"body": null,
"is_bot": false,
"headline": "Prepare for release 0.16.6",
"author_name": "Patrick Steiger",
"author_login": "psteiger",
"committed_at": "2026-07-15T22:12:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "41468756b0f530ed6c28feabbb080b80a5eebb74",
"body": "… (#662)\n\nExtracts the root-attach block from onCreate into a new `protected open\nattachContent(rootViewGroup, savedInstanceState)` method with the current\nbehavior as its default. Subclasses can override it to host an alternative\nroot (e.g. a Compose host) while still receiving RibActivity's lifecy\n[…]\n(interactor access throws), lifecycle CREATE still fires,\nonBackPressed falls through to super, and onSaveInstanceState no longer\ncrashes.\n\nCo-authored-by: Dipanshu Agrawal <dipanshu.agrawal@uber.com>",
"is_bot": false,
"headline": "Add overridable attachContent() to allow non-RIB roots in RibActivity…",
"author_name": "dipanshu281",
"author_login": "dipanshu281",
"committed_at": "2026-07-15T21:42:01Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "47811fce6da7d500ad03d062846b66d4313d4278",
"body": null,
"is_bot": false,
"headline": "lint fixes",
"author_name": "George Polak",
"author_login": "gpolak",
"committed_at": "2026-06-02T23:08:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6d8347aa9d86b2f26b609b30abdbb5e14f58a8e5",
"body": null,
"is_bot": false,
"headline": "demo",
"author_name": "George Polak",
"author_login": "gpolak",
"committed_at": "2026-06-02T23:08:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f08e54ecde89030cc6f3963725e00a3457876601",
"body": null,
"is_bot": false,
"headline": "Prepare next development version",
"author_name": "psteiger@gmail.com",
"author_login": "psteiger",
"committed_at": "2025-09-17T05:50:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e8999851b72dd0f0c9180ef8062263671e23b002",
"body": null,
"is_bot": false,
"headline": "Prepare for release 0.16.5",
"author_name": "psteiger@gmail.com",
"author_login": "psteiger",
"committed_at": "2025-09-17T05:46:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "efbdfe57341419026bd99365d81f7bf1072ad4ab",
"body": "…tateFlow over SharedFlow).",
"is_bot": false,
"headline": "Restore source compatibility with the Interactor lifecycle changes (S…",
"author_name": "psteiger@gmail.com",
"author_login": "psteiger",
"committed_at": "2025-09-17T05:41:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b18a990cfcfcbc338014e3d2319a629cae3f58fc",
"body": null,
"is_bot": false,
"headline": "Add mavenCentral publishing. OSSRH was sunset.",
"author_name": "psteiger@gmail.com",
"author_login": "psteiger",
"committed_at": "2025-09-17T05:41:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0fc9e2c9ef4f1d7a621fc9dfacc7b30a317f4b32",
"body": null,
"is_bot": false,
"headline": "Don't publish rib-intellij-plugin/native/intellij-broadcast-rib",
"author_name": "psteiger@gmail.com",
"author_login": "psteiger",
"committed_at": "2025-09-17T05:41:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "438eace43012ac71389f30788bf8b48c7a064be9",
"body": "…tateFlow over SharedFlow).",
"is_bot": false,
"headline": "Restore source compatibility with the Interactor lifecycle changes (S…",
"author_name": "psteiger@gmail.com",
"author_login": "psteiger",
"committed_at": "2025-09-17T05:41:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "50392581de9b7181924ca965d2bd0c91571afcb5",
"body": null,
"is_bot": false,
"headline": "Prepare next development version",
"author_name": "psteiger@gmail.com",
"author_login": "psteiger",
"committed_at": "2025-09-16T01:41:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1a898711907d3fee83c139f5cfd2bc88f6a857f3",
"body": null,
"is_bot": false,
"headline": "Prepare for release 0.16.4",
"author_name": "psteiger@gmail.com",
"author_login": "psteiger",
"committed_at": "2025-09-16T01:41:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dfe24965869521dec37d6d1871f86599a255d7fb",
"body": "…it before scope is active, or after scope is inactive.",
"is_bot": false,
"headline": "Change ScopeProvider.coroutineScope throwing behavior when accessing …",
"author_name": "Patrick Steiger",
"author_login": "psteiger",
"committed_at": "2025-09-16T01:02:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d20a0151d1def1d0267ade96bc298f240d333e73",
"body": null,
"is_bot": false,
"headline": "Add tests for RibEvents buffer size configuration",
"author_name": "psteiger",
"author_login": "psteiger",
"committed_at": "2025-09-15T22:43:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "51094ed25999d1b53c57933bdb638ea391837007",
"body": null,
"is_bot": false,
"headline": "Add `RibEvents.setExtraBufferCapacity` API.",
"author_name": "psteiger@gmail.com",
"author_login": "psteiger",
"committed_at": "2025-09-15T22:06:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cc89d1b5345af242e5eff0861164a19d1c4ceaf6",
"body": null,
"is_bot": false,
"headline": "Remove most Kapt usage. Only usage left is in rib-compiler-test.",
"author_name": "Patrick Steiger",
"author_login": "psteiger",
"committed_at": "2025-09-15T22:06:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f0baf83212d70f740f1bcf2aea883de4ee4f1bf5",
"body": "…ibs.",
"is_bot": false,
"headline": "Fix Explicit API mode warnings; make explicit API strict on Android l…",
"author_name": "psteiger@gmail.com",
"author_login": "psteiger",
"committed_at": "2025-09-15T22:06:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c23cfc60fc9cee600a4aad2dff496376f0dc95f3",
"body": null,
"is_bot": false,
"headline": "Use JDK 17 to build, but keep Java 1.8 source/target compat.",
"author_name": "Patrick Steiger",
"author_login": "psteiger",
"committed_at": "2025-09-15T22:06:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "df17b9702907cac33ec42a28e0b9f3c93a8a0fbc",
"body": "Motif has been migrated to KSP due to:\n```\nerror: Unable to read Kotlin metadata due to unsupported metadata kind: null.\n```",
"is_bot": false,
"headline": "Bump Kotlin, Compose, Coroutines, and multiple other dependencies.",
"author_name": "Patrick Steiger",
"author_login": "psteiger",
"committed_at": "2025-09-15T22:06:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ea55369c336fd8b7874a59fc2382a5f580082a19",
"body": null,
"is_bot": false,
"headline": "Bump IntelliJ plugin to Intellij Platform 2.9.0",
"author_name": "Patrick Steiger",
"author_login": "psteiger",
"committed_at": "2025-09-15T22:06:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b97a132df4878578ca510e2cf4b4ada0590a9fdb",
"body": "`targetSdk` is only relevant for Android applications, not libraries. Thus, it's only relevant for demo apps / tutorials.\n\ncompileSdk 33 -> 36\ntargetSdk 28 -> 35",
"is_bot": false,
"headline": "Bump compileSdk and targetSdk.",
"author_name": "Patrick Steiger",
"author_login": "psteiger",
"committed_at": "2025-09-15T22:06:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d93069dde2995ea9a7c3410e1c36a252ebe0e300",
"body": "- Gradle IntelliJ plugin had to be bumped as well.\n- Only generate BuildConfig in modules that require it.\n\nAGP 7.4.2 -> 8.13.0\nIntelliJ Plugin 1.15.0 -> 1.17.4\nGradle 8.1.1-all -> 8.14.3-bin",
"is_bot": false,
"headline": "Bump AGP 7.4.2 -> 8.13.0",
"author_name": "Patrick Steiger",
"author_login": "psteiger",
"committed_at": "2025-09-15T22:06:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bbcc105ec0a81d14ae8e4b7d840393d02cd0f578",
"body": null,
"is_bot": false,
"headline": "Bump LeakCanary",
"author_name": "psteiger@gmail.com",
"author_login": "psteiger",
"committed_at": "2025-09-15T22:06:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "312fa66a3df93c1a63f852a29b780d39d5fec9d9",
"body": null,
"is_bot": false,
"headline": "Use plugin alias in conventions included build.",
"author_name": "Patrick Steiger",
"author_login": "psteiger",
"committed_at": "2025-09-15T22:06:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c04fe33683ea96f702866c778d6c9cafffcf14f0",
"body": "- Move remaining Groovy files to .kts.\n- Rename convention plugins.\n- Move away from camelCase in Version Catalog plugins.",
"is_bot": false,
"headline": "Gradle code hygiene without binary implications:",
"author_name": "Patrick Steiger",
"author_login": "psteiger",
"committed_at": "2025-09-15T22:06:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ab5dffe5182b520a74acbc1f58b0d4cf020ab8cc",
"body": null,
"is_bot": false,
"headline": "Remove AutoValue dependency (in tutorial) by using Kotlin data class",
"author_name": "Patrick Steiger",
"author_login": "psteiger",
"committed_at": "2025-09-15T22:06:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "01b47c86d08a0901f03d2c3cc4e19552d0f85e3b",
"body": null,
"is_bot": false,
"headline": "Remove redundant parenthesis from @Composable types.",
"author_name": "psteiger@gmail.com",
"author_login": "psteiger",
"committed_at": "2025-09-15T22:06:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "11359221fc12dbce38b6033e5d17ed381aff74ad",
"body": null,
"is_bot": false,
"headline": "Remove deprecated 'toLowerCase()' and 'capitalize()'",
"author_name": "psteiger@gmail.com",
"author_login": "psteiger",
"committed_at": "2025-09-15T22:06:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bd6858b970e375f9d8243373b2df47b96bf7add2",
"body": "Java 8 is really old and unsupported on macOS ARM64.\n\nThis commit bumps remaining Java 8 usages to Java 11. Source/target compatibility is still Java 8.",
"is_bot": false,
"headline": "Remove Java 8 for building the project.",
"author_name": "Patrick Steiger",
"author_login": "psteiger",
"committed_at": "2025-09-11T15:53:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "134394c4bfa87c3263a0ca86f5b558d966cb87c7",
"body": "… the ANR stacktraces and reduce ANRs",
"is_bot": false,
"headline": "For Interactor, replace the shared flow with the stateflow to improve…",
"author_name": "Rubin Yoo",
"author_login": "rysh88",
"committed_at": "2025-08-13T22:05:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4a9bbbc9f4433b6bd83ebf7de876105d7f9fed35",
"body": "fix url typo for ribs-ios",
"is_bot": false,
"headline": "Merge pull request #647 from uber/ribs-ios-link-fix",
"author_name": "Ty Smith",
"author_login": "tyvsmith",
"committed_at": "2024-11-21T20:02:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "609e7dcd6c6d579e27a885781c5ba667aee58eb6",
"body": null,
"is_bot": false,
"headline": "fix url typo for ribs-ios",
"author_name": "Ty Smith",
"author_login": "tyvsmith",
"committed_at": "2024-11-01T21:15:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6af95eefb2d9552b44437409ed11361ba3f20dc5",
"body": "Remove ios to prep for separate repos",
"is_bot": false,
"headline": "Merge pull request #646 from uber/remove-ios",
"author_name": "Ty Smith",
"author_login": "tyvsmith",
"committed_at": "2024-11-01T21:10:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fdac93cc765f590a7dc2d9a69c5e80b3e0581743",
"body": null,
"is_bot": false,
"headline": "Fixing gh actions root dir reference",
"author_name": "tys",
"author_login": "tyvsmith",
"committed_at": "2024-10-31T22:23:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ee6f53a451051a6c65c1ee2aa548b98492add70e",
"body": null,
"is_bot": false,
"headline": "Remove ios to prep for separate repos",
"author_name": "tys",
"author_login": "tyvsmith",
"committed_at": "2024-10-31T20:58:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "08b95b6d0ee16c1b5e02a769d8b40f0310add73a",
"body": "This commit changes dispatching logic to a much simpler one that does not require usage of intrinsics.\n\nIn order to synchronously get an instance of `bindJob`, we start the `unbindJob` coroutine undispatched (`bindJob` is a child of `unbindJob`, so we need an instance of `unbindJob` to create an instance of `bindJob`).\n\nAfter saving `bindJob`, we properly dispatch in a cancellable way by simply `launch`ing a new coroutine.",
"is_bot": false,
"headline": "Remove intrinsics usage in `RibCoroutineWorker`",
"author_name": "Patrick Steiger",
"author_login": "psteiger",
"committed_at": "2024-10-14T09:34:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d2711d8e690cd6ede2f92a465cbc9d4135a30c96",
"body": null,
"is_bot": false,
"headline": "Prepare next development version",
"author_name": "psteiger",
"author_login": "psteiger",
"committed_at": "2024-07-19T19:26:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a7e92325978a3a34ef3b36e92090c06abab81462",
"body": null,
"is_bot": false,
"headline": "Prepare for release 0.16.3",
"author_name": "psteiger",
"author_login": "psteiger",
"committed_at": "2024-07-19T19:20:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "df056a0ab53fe5902b4a8333aa70a32f196fcfc8",
"body": "…ker.asWorker()` is unbound.",
"is_bot": false,
"headline": "Add test asserting Rx subscription is disposed after `RibCoroutineWor…",
"author_name": "Patrick Steiger",
"author_login": "psteiger",
"committed_at": "2024-07-08T21:26:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5aafed43f9889c7992f5c2f02bef1c44892ae6dc",
"body": "…uffer_size\n\nIncrease buffer capacity for mutableRouterEvents flow within RibEvents",
"is_bot": false,
"headline": "Merge pull request #635 from RahulDMello/feature/increase_rib_event_b…",
"author_name": "Ty Smith",
"author_login": "tyvsmith",
"committed_at": "2024-07-03T02:08:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a7b33ad4ee4f605e8680f795e1621a2cb55ab075",
"body": null,
"is_bot": false,
"headline": "Revert the version bump",
"author_name": "Rahul DMello",
"author_login": "RahulDMello",
"committed_at": "2024-06-24T23:07:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "19d6e1e658f76c5f582abfd209ab4381d5ba20fe",
"body": "…sIncrease buffer capacity for mutableRouterEvents flow within RibEvents",
"is_bot": false,
"headline": "Increase buffer capacity for mutableRouterEvents flow within RibEvent…",
"author_name": "Rahul DMello",
"author_login": "RahulDMello",
"committed_at": "2024-06-22T03:53:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ff465544216b5dff727abae6bbd16d961f4345ee",
"body": "Support classes that are both `Worker` and `RibCoroutineWorker` in co…",
"is_bot": false,
"headline": "Merge pull request #629 from psteiger/rrw-converters-fix",
"author_name": "Fran Aguilera",
"author_login": "FranAguilera",
"committed_at": "2024-04-15T22:11:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4cec42fcb825987bca0b1ba7daa3d7214108b2c5",
"body": "…ugin-memory-leak\n\nFix Flipper Ribtree Plugin memory leak",
"is_bot": false,
"headline": "Merge pull request #630 from mamykin-andrey/issues-499-fix-flipper-pl…",
"author_name": "Ty Smith",
"author_login": "tyvsmith",
"committed_at": "2024-03-20T23:54:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "11096f68c8356df72e7d915d2b30238c90855090",
"body": null,
"is_bot": false,
"headline": "Store RouterInfo instead of Router for FlipperPayload",
"author_name": "Andrey Mamykin",
"author_login": "mamykin-andrey",
"committed_at": "2023-12-13T17:59:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3ca704ab57be6a01f1ed30b99a16248438527588",
"body": "…nverters.\n\n`Worker.asRibCoroutineWorker` and `RibCoroutineWorker.asWorker` converters now return the instance unchanged if the class already implements the target interface.\n\nThis is important for correctness. For example:\n\n```\nclass DualWorker : Worker, RibCoroutineWorker {\n fun onStart(lifecycle\n[…]\ntart(scope: CoroutineScope) {\n doY()\n }\n}\n```\n\nBinding this `worker.asWorker()` should call `doX()`, not `doY()`, and binding this `worker.asRibCoroutineWorker()` should call `doY()`, not `doX()`.",
"is_bot": false,
"headline": "Support classes that are both `Worker` and `RibCoroutineWorker` in co…",
"author_name": "Patrick Steiger",
"author_login": "psteiger",
"committed_at": "2023-12-05T17:01:40Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "9b5cff6e97b2495b8a7f3e15b544a3ecc1b0359d",
"body": null,
"is_bot": false,
"headline": "Prepare next development version",
"author_name": "Patrick Steiger",
"author_login": "psteiger",
"committed_at": "2023-11-29T02:58:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "83f9c1c6f8b1768ba3f2dbf5d9b1835de0a28442",
"body": null,
"is_bot": false,
"headline": "Prepare for release 0.16.2",
"author_name": "Patrick Steiger",
"author_login": "psteiger",
"committed_at": "2023-11-29T02:58:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "43db2962e68345d597a73133fcc9595be2c5e4bc",
"body": "…e completion.\n\nThis fixes Rx subscriptions using `autoDispose(CoroutineScope)` immediately terminating.\n\nIn order to properly support `autoDispose(CoroutineScope)` subscriptions, we must keep the `CoroutineScope` received in `onStart` alive as long as the `WorkerScopeProvider` lifecycle.\n\n`autoDispose` does *not* create a children coroutine: instead it installs a completion handler. Hence, outer scope will not have children to wait for completion and will terminate immediately.",
"is_bot": false,
"headline": "[RibCoroutineWorker] In `asWorker()`, keep scope alive until lifecycl…",
"author_name": "Patrick Steiger",
"author_login": "psteiger",
"committed_at": "2023-11-21T20:26:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cbd11f7927a7d7ded1ef921867d98d58ba19ea24",
"body": "We don't need `crossinline` for `testBody`. Usage of cross-inline makes suspend functions non-callable in the test body, which forbids patterns like:\n```\ntest(worker) {\n sharedFlow.emit(someValue)\n // assert worker processed it\n}\n```",
"is_bot": false,
"headline": "Make suspend functions callable inside `test(worker) { }`",
"author_name": "Patrick Steiger",
"author_login": "psteiger",
"committed_at": "2023-11-09T19:54:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "68470983604d55f01075b337384ae109f898c215",
"body": null,
"is_bot": false,
"headline": "Prepare next development version",
"author_name": "James Barr",
"author_login": "jbarr21",
"committed_at": "2023-11-04T19:53:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c9b4c012ef7280f15e52813fd8765989ae6d5b49",
"body": null,
"is_bot": false,
"headline": "Prepare for release 0.16.1",
"author_name": "James Barr",
"author_login": "jbarr21",
"committed_at": "2023-11-04T19:49:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "14d1822cff5ac0c24f887b46df391bf9af1dfa5a",
"body": null,
"is_bot": false,
"headline": "Prepare next development version",
"author_name": "Patrick Steiger",
"author_login": "psteiger",
"committed_at": "2023-11-04T02:43:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dfb2dc51769e260cc4ac3b5c8c2c3423e5e146a5",
"body": null,
"is_bot": false,
"headline": "Prepare for release 0.16.0",
"author_name": "Patrick Steiger",
"author_login": "psteiger",
"committed_at": "2023-11-04T02:43:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "69903fd0d8752a2adca700f0c99ef2217b3a9674",
"body": "* Rename internal method to avoid duplicate JVM signature\r\n* Use core-annotated method approach instead of renaming",
"is_bot": false,
"headline": "Refactor internal methods to avoid duplicate JVM signature (#621)",
"author_name": "James Barr",
"author_login": "jbarr21",
"committed_at": "2023-10-31T18:42:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "73a59588319ae23d2a771df0aebc6710bc21bac3",
"body": "This helper utility is meant to be used in tests inside `runTest { }` blocks\nand should facilitate `RibCoroutineWorker` testing by automatically binding\nand unbinding the worker in the scope of the lambda.\n\n```\n@Test fun test() = runTest {\n test(worker) {\n // Worker is bound. Make assertions\n }\n // Worker is unbound.\n}\n```",
"is_bot": false,
"headline": "Introduce `TestScope.test(RibCoroutineWorker)` test helper utility.",
"author_name": "Patrick Steiger",
"author_login": "psteiger",
"committed_at": "2023-10-06T18:10:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "adc3b0df53c4fa73f7daca432e427fdefe732ab6",
"body": "For accessing internal declarations from other modules (e.g. access `rib-base` internals from `rib-test`), we are currently suppressing compiler errors with `@file:Suppress(\"invisible_reference\", \"invisible_member\")`\n\nA better approach is to:\n1. Create an `internal` opt-in annotation.\n2. Make the \"a\n[…]\ntricter, since consumers now cannot just suppress `\"invisible_reference\"` and `\"invisible_member\"` to directly access the friend-module API. Plus, we get rid of the hacky suppressions in our codebase.",
"is_bot": false,
"headline": "Get rid of suppressions for \"invisible_reference\" and \"invisible_member\"",
"author_name": "Patrick Steiger",
"author_login": "psteiger",
"committed_at": "2023-09-22T00:20:42Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "0043217d358ff628a8377546b5cb67289382abe5",
"body": null,
"is_bot": false,
"headline": "Prepare next development version",
"author_name": "James Barr",
"author_login": "jbarr21",
"committed_at": "2023-09-20T17:36:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bd3b063d234239c4b4dc68fc44b15959ce2a7395",
"body": null,
"is_bot": false,
"headline": "Prepare for release 0.15.4",
"author_name": "James Barr",
"author_login": "jbarr21",
"committed_at": "2023-09-20T17:33:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "891865cfd3e2db2806c58effa5be6b3568006929",
"body": "* Revert JVM version to 1.8\r\n* Add tools jar",
"is_bot": false,
"headline": "Revert JVM version to 1.8 (#616)",
"author_name": "James Barr",
"author_login": "jbarr21",
"committed_at": "2023-09-20T17:30:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "00753bba2eae3fe630776fedb4648375b4558e11",
"body": null,
"is_bot": false,
"headline": "Set view tree owners in parent class (#615)",
"author_name": "James Barr",
"author_login": "jbarr21",
"committed_at": "2023-09-12T01:24:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1b2927b79f2b2d2f0aa404c1f6e078ff28a6ee1e",
"body": "IntelliJ plugin 0.1.5",
"is_bot": false,
"headline": "Merge pull request #613 from idanakav/plugin-0.1.5",
"author_name": "idanakav",
"author_login": "idanakav",
"committed_at": "2023-08-31T02:11:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5896b25af14ed63288aabf2fc76fc7a196d451dc",
"body": null,
"is_bot": false,
"headline": "Prepare for IntelliJ plugin 0.1.5 release",
"author_name": "idanakav",
"author_login": "idanakav",
"committed_at": "2023-08-30T04:33:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9a7c0be9ad26db4fbd114603dd8711c7c20b849d",
"body": "- Bump gradle IntelliJ plugin\n- Build against 23.2\n- Refactor deprecated methods which are scheduled for removal",
"is_bot": false,
"headline": "Update intellij dependencies",
"author_name": "idanakav",
"author_login": "idanakav",
"committed_at": "2023-08-30T04:33:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5d5e2cd4c3d4f55ce81786dc48dd1fe10b08efec",
"body": null,
"is_bot": false,
"headline": "Remove redundant invoke later call",
"author_name": "idanakav",
"author_login": "idanakav",
"committed_at": "2023-08-30T04:32:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "be134db532b406a70fec5ea49c462232e90c4fa4",
"body": null,
"is_bot": false,
"headline": "Prepare next development version",
"author_name": "tys",
"author_login": "tyvsmith",
"committed_at": "2023-08-28T12:28:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "374af8ac318193659764dda6350e963b80579bc9",
"body": null,
"is_bot": false,
"headline": "Prepare for release 0.15.3",
"author_name": "tys",
"author_login": "tyvsmith",
"committed_at": "2023-08-28T12:22:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "85cf3b3c8a7f35e8332d52591e711c2704d87ea8",
"body": null,
"is_bot": false,
"headline": "Bump kotlinx.coroutines.test to 1.7.3",
"author_name": "Patrick Steiger",
"author_login": "psteiger",
"committed_at": "2023-08-23T02:42:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f88e1fe1c6eb79d3870ac716f9ad5371ebe6dea8",
"body": "Update coroutines 1.7.3",
"is_bot": false,
"headline": "Merge pull request #609 from uber/tys/coroutines-1.7",
"author_name": "Ty Smith",
"author_login": "tyvsmith",
"committed_at": "2023-08-23T00:59:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "31f4984632225fde30ad6b702faeeab9bc783aef",
"body": "…iver.\n\n`RibCoroutineWorker` is already a functional interface; the purpose of this builder is to allow consumers\nto create a `RibCoroutineWorker` with `CoroutineScope` in receiver position. E.g.\n\n- Functional interface:\n```\nRibCoroutineWorker { scope ->\n scope.launch { ... }\n}\n```\n\n- This factory method:\n```\nRibCoroutineWorker {\n launch { ... }\n}\n```",
"is_bot": false,
"headline": "Add `RibCoroutineWorker` factory method with `CoroutineScope` as rece…",
"author_name": "Patrick Steiger",
"author_login": "psteiger",
"committed_at": "2023-08-22T23:13:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fa39761edbee49bceb09e06fa98098e0f1990975",
"body": null,
"is_bot": false,
"headline": "Spotless",
"author_name": "tys",
"author_login": "tyvsmith",
"committed_at": "2023-08-22T22:07:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a6e2109c2913152378bcb1d32fe452ccd0c1264f",
"body": null,
"is_bot": false,
"headline": "addressing feedback",
"author_name": "tys",
"author_login": "tyvsmith",
"committed_at": "2023-08-22T22:06:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "25b8aaf2766179a2d2125ee56d9696ae100ad798",
"body": null,
"is_bot": false,
"headline": "Setting worker dispatcher in test rule",
"author_name": "tys",
"author_login": "tyvsmith",
"committed_at": "2023-08-22T21:33:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "24e3ae7871f74a701a977918f647acf8bd2da463",
"body": null,
"is_bot": false,
"headline": "Fix spotless",
"author_name": "tys",
"author_login": "tyvsmith",
"committed_at": "2023-08-22T21:10:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "09a08e634dd0d6b179ded16b23592f2eec832542",
"body": null,
"is_bot": false,
"headline": "Fixing test and removing ignore",
"author_name": "tys",
"author_login": "tyvsmith",
"committed_at": "2023-08-22T21:10:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c0bf8a8113d897973828d3f8bf5237cb63b9c4be",
"body": null,
"is_bot": false,
"headline": "Update coroutines 1.7.3",
"author_name": "tys",
"author_login": "tyvsmith",
"committed_at": "2023-08-22T21:03:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1f8839ba9add5ce3442e303d7b9bb13c914bd69c",
"body": "…_to_default\n\nChange default CoroutineContext from empty to default for the RibCoroutineWorker<>Worker conversion",
"is_bot": false,
"headline": "Merge pull request #608 from FranAguilera/change_as_worker_dispatcher…",
"author_name": "Fran Aguilera",
"author_login": "FranAguilera",
"committed_at": "2023-08-10T18:52:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e6f98bd6025acd76e8de71e77f3ef27b25b49cfa",
"body": "Add RibCoroutineWorker.bind that receives multiple workers",
"is_bot": false,
"headline": "Merge pull request #607 from FranAguilera/rib_coroutine_bind",
"author_name": "Fran Aguilera",
"author_login": "FranAguilera",
"committed_at": "2023-08-10T18:52:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6ff90ff9a26557c659c3d17424ec19866eefff0e",
"body": "…ibCoroutineWorker.kt\n\nCo-authored-by: Patrick Steiger <psteiger@gmail.com>",
"is_bot": false,
"headline": "Update android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/R…",
"author_name": "Fran Aguilera",
"author_login": "FranAguilera",
"committed_at": "2023-08-10T17:39:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "94fffa83e96598ba1abebb5dc7bc28ac932a5ae9",
"body": "…conversion",
"is_bot": false,
"headline": "Change dispatcher from empty to default for the Worker<>RibCoroutine …",
"author_name": "Francisco Aguilera",
"author_login": "FranAguilera",
"committed_at": "2023-08-10T17:20:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d719af07def6a74d8edb18d265b06eb2a795ead4",
"body": null,
"is_bot": false,
"headline": "Add RibCoroutineWorker.bind receiving multiple workers",
"author_name": "Francisco Aguilera",
"author_login": "FranAguilera",
"committed_at": "2023-08-10T16:48:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "484a476c995d4516524e78c4ce6daf6d550a95b1",
"body": null,
"is_bot": false,
"headline": "Prepare next development version",
"author_name": "James Barr",
"author_login": "jbarr21",
"committed_at": "2023-08-07T22:14:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0ea5c5c7153d81f026500e41f6fadf4e35830287",
"body": null,
"is_bot": false,
"headline": "Prepare for release 0.15.2",
"author_name": "James Barr",
"author_login": "jbarr21",
"committed_at": "2023-08-07T22:09:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9f6a21520a9c22dd5f9df8927b13c43ada7832ca",
"body": "* Set view tree owners in RibActivity#onCreate\r\n* Cleanup duplicate setting of view tree owners\r\n* Add more assertions",
"is_bot": false,
"headline": "Set view tree owners (#606)",
"author_name": "James Barr",
"author_login": "jbarr21",
"committed_at": "2023-08-07T22:05:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0d87f610e9fd7fe4c3abc661593e0c30be1332d3",
"body": "`List` is not really needed and we restrict the API unnecessarily: all we need is an `Iterable`.\n\nFor keeping binary compatibility, we also keep the overloads taking in a `List`.",
"is_bot": false,
"headline": "Add `WorkerBinder.bind` overloads that take in an `Iterable`.",
"author_name": "Patrick Steiger",
"author_login": "psteiger",
"committed_at": "2023-07-26T00:58:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2de8f9090d52d8f453d7104197e6a2c7fb5493a3",
"body": null,
"is_bot": false,
"headline": "Prepare next development version",
"author_name": "James Barr",
"author_login": "jbarr21",
"committed_at": "2023-07-18T00:08:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5835f8e5b37865cd83d5baaef4e92aad94022b8a",
"body": null,
"is_bot": false,
"headline": "Prepare for release 0.15.1",
"author_name": "James Barr",
"author_login": "jbarr21",
"committed_at": "2023-07-18T00:04:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "36d2c1364755afa210521266f7f680074e3c39aa",
"body": "…=all`\n\nDocs state that:\n\n> If you used the @JvmDefault annotation before, you can safely remove it and use one of the new modes. If you already used -Xjvm-default=enable, which generated only the default method implementations, you can now replace it with -Xjvm-default=all.",
"is_bot": false,
"headline": "Migrate from deprecated @JvmDefault to compiler option `-Xjvm-default…",
"author_name": "Patrick Steiger",
"author_login": "psteiger",
"committed_at": "2023-07-17T20:30:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d945defd6bd34c17bd7c81357ef1180224035084",
"body": null,
"is_bot": false,
"headline": "Remove unused ids",
"author_name": "James Barr",
"author_login": "jbarr21",
"committed_at": "2023-07-11T18:00:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c7b7555eb5848c4556a10a5321bb3e8c2ef918db",
"body": null,
"is_bot": false,
"headline": "Prepare next development version",
"author_name": "tys",
"author_login": "tyvsmith",
"committed_at": "2023-06-23T22:12:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "50277319b0a9c078512c158b18c73f4d74fea586",
"body": null,
"is_bot": false,
"headline": "Prepare for release 0.15.0",
"author_name": "tys",
"author_login": "tyvsmith",
"committed_at": "2023-06-23T22:06:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c1cf74c28060464d50327bc2fd676df9c5f1a74b",
"body": "Expose ribActionEvents stream",
"is_bot": false,
"headline": "Merge pull request #599 from FranAguilera/add_rib_monitoring",
"author_name": "Ty Smith",
"author_login": "tyvsmith",
"committed_at": "2023-06-23T21:52:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "59014ba3936506b70b415b78e41d543a42af5cd6",
"body": null,
"is_bot": false,
"headline": "Remove disableRibActionEmissions and use internal setter",
"author_name": "Francisco Aguilera",
"author_login": "FranAguilera",
"committed_at": "2023-06-23T15:38:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f6ca5517118ff76a6e0169729fc0304027391d7d",
"body": "Deprecate WorkerUnbinder",
"is_bot": false,
"headline": "Merge pull request #601 from FranAguilera/continue_worker_deprecation",
"author_name": "Fran Aguilera",
"author_login": "FranAguilera",
"committed_at": "2023-06-23T03:54:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ee3aff2ebdaacebe2f150884e0671ac9409ea822",
"body": null,
"is_bot": false,
"headline": "Open areRibActionEmissionsAllowed get visibility",
"author_name": "Francisco Aguilera",
"author_login": "FranAguilera",
"committed_at": "2023-06-22T22:53:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1df34c7ad68c7428b331d424f11bea6e6a72840f",
"body": null,
"is_bot": false,
"headline": "Deprecate WorkerUnbinder",
"author_name": "Francisco Aguilera",
"author_login": "FranAguilera",
"committed_at": "2023-06-22T21:48:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3e7983ac5b0a96739db47c23b064e504184707e6",
"body": null,
"is_bot": false,
"headline": "Rename RibEventEmitter to RibActionEmitter",
"author_name": "Francisco Aguilera",
"author_login": "FranAguilera",
"committed_at": "2023-06-22T19:10:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2a5db8e9d740a930fc2cb6ebe1dcc84949c93815",
"body": null,
"is_bot": false,
"headline": "Remove unnecessary comments for test method",
"author_name": "Francisco Aguilera",
"author_login": "FranAguilera",
"committed_at": "2023-06-22T18:54:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "82019845eab41e19861071e80008f6e9872bac26",
"body": null,
"is_bot": false,
"headline": "PR feedback: Rename RibComponent and add switch method for RibEvents",
"author_name": "Francisco Aguilera",
"author_login": "FranAguilera",
"committed_at": "2023-06-22T17:24:00Z",
"body_truncated": false,
"is_coding_agent": false
}
],
"releases_count": 24,
"commits_last_year": 30,
"latest_release_at": "2026-07-16T14:32:24Z",
"latest_release_tag": "v0.16.6",
"releases_from_tags": false,
"days_since_last_push": 5,
"active_weeks_last_year": 6,
"days_since_latest_release": 5,
"mean_days_between_releases": 119.3
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": true,
"health_percentage": 75,
"has_issue_template": false,
"has_code_of_conduct": true,
"has_pull_request_template": true
},
"ecosystem": {
"packages": []
},
"popularity": {
"forks": 914,
"stars": 7930,
"watchers": 194,
"fork_history": {
"days": [
{
"date": "2017-11-04",
"count": 3
},
{
"date": "2017-11-05",
"count": 3
},
{
"date": "2017-11-06",
"count": 15
},
{
"date": "2017-11-07",
"count": 13
},
{
"date": "2017-11-08",
"count": 8
},
{
"date": "2017-11-09",
"count": 5
},
{
"date": "2017-11-10",
"count": 2
},
{
"date": "2017-11-11",
"count": 1
},
{
"date": "2017-11-12",
"count": 1
},
{
"date": "2017-11-13",
"count": 8
},
{
"date": "2017-11-14",
"count": 3
},
{
"date": "2017-11-15",
"count": 1
},
{
"date": "2017-11-16",
"count": 1
},
{
"date": "2017-11-17",
"count": 2
},
{
"date": "2017-11-18",
"count": 1
},
{
"date": "2017-11-20",
"count": 2
},
{
"date": "2017-11-21",
"count": 1
},
{
"date": "2017-11-22",
"count": 1
},
{
"date": "2017-11-24",
"count": 1
},
{
"date": "2017-11-28",
"count": 4
},
{
"date": "2017-11-30",
"count": 1
},
{
"date": "2017-12-01",
"count": 1
},
{
"date": "2017-12-02",
"count": 2
},
{
"date": "2017-12-03",
"count": 1
},
{
"date": "2017-12-04",
"count": 1
},
{
"date": "2017-12-05",
"count": 1
},
{
"date": "2017-12-06",
"count": 1
},
{
"date": "2017-12-09",
"count": 1
},
{
"date": "2017-12-13",
"count": 1
},
{
"date": "2017-12-14",
"count": 2
},
{
"date": "2017-12-16",
"count": 3
},
{
"date": "2017-12-17",
"count": 1
},
{
"date": "2017-12-18",
"count": 1
},
{
"date": "2017-12-19",
"count": 4
},
{
"date": "2017-12-20",
"count": 1
},
{
"date": "2017-12-21",
"count": 1
},
{
"date": "2017-12-25",
"count": 1
},
{
"date": "2017-12-26",
"count": 1
},
{
"date": "2017-12-27",
"count": 1
},
{
"date": "2017-12-31",
"count": 1
},
{
"date": "2018-01-01",
"count": 1
},
{
"date": "2018-01-06",
"count": 2
},
{
"date": "2018-01-07",
"count": 1
},
{
"date": "2018-01-08",
"count": 2
},
{
"date": "2018-01-12",
"count": 1
},
{
"date": "2018-01-17",
"count": 2
},
{
"date": "2018-01-20",
"count": 1
},
{
"date": "2018-01-22",
"count": 2
},
{
"date": "2018-01-23",
"count": 2
},
{
"date": "2018-01-24",
"count": 1
},
{
"date": "2018-01-25",
"count": 1
},
{
"date": "2018-01-30",
"count": 1
},
{
"date": "2018-02-02",
"count": 1
},
{
"date": "2018-02-05",
"count": 2
},
{
"date": "2018-02-09",
"count": 1
},
{
"date": "2018-02-10",
"count": 1
},
{
"date": "2018-02-14",
"count": 3
},
{
"date": "2018-02-15",
"count": 2
},
{
"date": "2018-02-16",
"count": 1
},
{
"date": "2018-02-19",
"count": 2
},
{
"date": "2018-02-23",
"count": 3
},
{
"date": "2018-02-24",
"count": 10
},
{
"date": "2018-02-25",
"count": 3
},
{
"date": "2018-02-26",
"count": 3
},
{
"date": "2018-02-27",
"count": 7
},
{
"date": "2018-02-28",
"count": 2
},
{
"date": "2018-03-01",
"count": 3
},
{
"date": "2018-03-02",
"count": 2
},
{
"date": "2018-03-03",
"count": 1
},
{
"date": "2018-03-06",
"count": 1
},
{
"date": "2018-03-09",
"count": 1
},
{
"date": "2018-03-10",
"count": 1
},
{
"date": "2018-03-12",
"count": 1
},
{
"date": "2018-03-13",
"count": 1
},
{
"date": "2018-03-16",
"count": 2
},
{
"date": "2018-03-17",
"count": 1
},
{
"date": "2018-03-20",
"count": 2
},
{
"date": "2018-03-21",
"count": 1
},
{
"date": "2018-03-22",
"count": 3
},
{
"date": "2018-03-24",
"count": 1
},
{
"date": "2018-03-26",
"count": 3
},
{
"date": "2018-03-30",
"count": 2
},
{
"date": "2018-04-02",
"count": 1
},
{
"date": "2018-04-09",
"count": 1
},
{
"date": "2018-04-10",
"count": 2
},
{
"date": "2018-04-11",
"count": 2
},
{
"date": "2018-04-12",
"count": 1
},
{
"date": "2018-04-13",
"count": 1
},
{
"date": "2018-04-18",
"count": 1
},
{
"date": "2018-04-21",
"count": 2
},
{
"date": "2018-04-22",
"count": 1
},
{
"date": "2018-04-24",
"count": 1
},
{
"date": "2018-04-25",
"count": 1
},
{
"date": "2018-04-27",
"count": 1
},
{
"date": "2018-05-01",
"count": 1
},
{
"date": "2018-05-02",
"count": 1
},
{
"date": "2018-05-06",
"count": 1
},
{
"date": "2018-05-07",
"count": 1
},
{
"date": "2018-05-08",
"count": 1
},
{
"date": "2018-05-15",
"count": 1
},
{
"date": "2018-05-16",
"count": 1
},
{
"date": "2018-05-17",
"count": 1
},
{
"date": "2018-05-23",
"count": 1
},
{
"date": "2018-05-24",
"count": 1
},
{
"date": "2018-05-30",
"count": 1
},
{
"date": "2018-05-31",
"count": 2
},
{
"date": "2018-06-01",
"count": 1
},
{
"date": "2018-06-13",
"count": 1
},
{
"date": "2018-06-15",
"count": 1
},
{
"date": "2018-06-19",
"count": 2
},
{
"date": "2018-06-21",
"count": 1
},
{
"date": "2018-06-24",
"count": 1
},
{
"date": "2018-06-25",
"count": 1
},
{
"date": "2018-06-26",
"count": 1
},
{
"date": "2018-06-28",
"count": 1
},
{
"date": "2018-06-30",
"count": 1
},
{
"date": "2018-07-01",
"count": 1
},
{
"date": "2018-07-02",
"count": 1
},
{
"date": "2018-07-08",
"count": 1
},
{
"date": "2018-07-09",
"count": 1
},
{
"date": "2018-07-10",
"count": 2
},
{
"date": "2018-07-17",
"count": 1
},
{
"date": "2018-07-18",
"count": 1
},
{
"date": "2018-07-20",
"count": 2
},
{
"date": "2018-07-25",
"count": 1
},
{
"date": "2018-07-31",
"count": 2
},
{
"date": "2018-08-02",
"count": 1
},
{
"date": "2018-08-05",
"count": 2
},
{
"date": "2018-08-09",
"count": 1
},
{
"date": "2018-08-12",
"count": 1
},
{
"date": "2018-08-13",
"count": 2
},
{
"date": "2018-08-15",
"count": 1
},
{
"date": "2018-08-16",
"count": 3
},
{
"date": "2018-08-20",
"count": 1
},
{
"date": "2018-08-22",
"count": 1
},
{
"date": "2018-08-28",
"count": 1
},
{
"date": "2018-08-30",
"count": 2
},
{
"date": "2018-09-07",
"count": 1
},
{
"date": "2018-09-10",
"count": 2
},
{
"date": "2018-09-16",
"count": 1
},
{
"date": "2018-09-26",
"count": 2
},
{
"date": "2018-09-27",
"count": 1
},
{
"date": "2018-09-29",
"count": 1
},
{
"date": "2018-10-03",
"count": 1
},
{
"date": "2018-10-06",
"count": 1
},
{
"date": "2018-10-08",
"count": 1
},
{
"date": "2018-10-11",
"count": 1
},
{
"date": "2018-10-12",
"count": 4
},
{
"date": "2018-10-13",
"count": 1
},
{
"date": "2018-10-15",
"count": 2
},
{
"date": "2018-10-16",
"count": 1
},
{
"date": "2018-10-19",
"count": 1
},
{
"date": "2018-10-20",
"count": 2
},
{
"date": "2018-10-22",
"count": 1
},
{
"date": "2018-10-23",
"count": 1
},
{
"date": "2018-10-25",
"count": 2
},
{
"date": "2018-10-31",
"count": 1
},
{
"date": "2018-11-02",
"count": 1
},
{
"date": "2018-11-04",
"count": 1
},
{
"date": "2018-11-05",
"count": 1
},
{
"date": "2018-11-07",
"count": 2
},
{
"date": "2018-11-13",
"count": 2
},
{
"date": "2018-11-14",
"count": 1
},
{
"date": "2018-11-16",
"count": 1
},
{
"date": "2018-11-19",
"count": 1
},
{
"date": "2018-11-21",
"count": 1
},
{
"date": "2018-11-22",
"count": 1
},
{
"date": "2018-11-23",
"count": 1
},
{
"date": "2018-11-26",
"count": 1
},
{
"date": "2018-11-27",
"count": 1
},
{
"date": "2018-11-29",
"count": 1
},
{
"date": "2018-12-03",
"count": 1
},
{
"date": "2018-12-04",
"count": 1
},
{
"date": "2018-12-05",
"count": 2
},
{
"date": "2018-12-08",
"count": 2
},
{
"date": "2018-12-11",
"count": 1
},
{
"date": "2018-12-21",
"count": 1
},
{
"date": "2018-12-25",
"count": 1
},
{
"date": "2018-12-27",
"count": 1
},
{
"date": "2018-12-30",
"count": 1
},
{
"date": "2019-01-01",
"count": 1
},
{
"date": "2019-01-10",
"count": 1
},
{
"date": "2019-01-14",
"count": 1
},
{
"date": "2019-01-16",
"count": 2
},
{
"date": "2019-01-17",
"count": 1
},
{
"date": "2019-01-18",
"count": 1
},
{
"date": "2019-01-28",
"count": 1
},
{
"date": "2019-01-30",
"count": 1
},
{
"date": "2019-01-31",
"count": 1
},
{
"date": "2019-02-01",
"count": 1
},
{
"date": "2019-02-02",
"count": 1
},
{
"date": "2019-02-04",
"count": 3
},
{
"date": "2019-02-07",
"count": 2
},
{
"date": "2019-02-11",
"count": 1
},
{
"date": "2019-02-12",
"count": 2
},
{
"date": "2019-02-13",
"count": 1
},
{
"date": "2019-02-14",
"count": 1
},
{
"date": "2019-02-16",
"count": 1
},
{
"date": "2019-02-17",
"count": 1
},
{
"date": "2019-02-19",
"count": 3
},
{
"date": "2019-02-20",
"count": 1
},
{
"date": "2019-02-21",
"count": 1
},
{
"date": "2019-02-23",
"count": 1
},
{
"date": "2019-02-24",
"count": 1
},
{
"date": "2019-02-25",
"count": 2
},
{
"date": "2019-02-27",
"count": 1
},
{
"date": "2019-03-01",
"count": 1
},
{
"date": "2019-03-02",
"count": 1
},
{
"date": "2019-03-04",
"count": 1
},
{
"date": "2019-03-05",
"count": 1
},
{
"date": "2019-03-08",
"count": 2
},
{
"date": "2019-03-18",
"count": 1
},
{
"date": "2019-03-23",
"count": 1
},
{
"date": "2019-03-24",
"count": 1
},
{
"date": "2019-03-25",
"count": 1
},
{
"date": "2019-03-29",
"count": 1
},
{
"date": "2019-03-30",
"count": 1
},
{
"date": "2019-03-31",
"count": 1
},
{
"date": "2019-04-01",
"count": 1
},
{
"date": "2019-04-02",
"count": 1
},
{
"date": "2019-04-07",
"count": 1
},
{
"date": "2019-04-10",
"count": 1
},
{
"date": "2019-04-11",
"count": 1
},
{
"date": "2019-04-12",
"count": 2
},
{
"date": "2019-04-14",
"count": 1
},
{
"date": "2019-04-16",
"count": 1
},
{
"date": "2019-04-18",
"count": 2
},
{
"date": "2019-04-20",
"count": 1
},
{
"date": "2019-04-22",
"count": 1
},
{
"date": "2019-04-25",
"count": 2
},
{
"date": "2019-04-26",
"count": 1
},
{
"date": "2019-04-27",
"count": 1
},
{
"date": "2019-04-29",
"count": 1
},
{
"date": "2019-05-05",
"count": 2
},
{
"date": "2019-05-06",
"count": 1
},
{
"date": "2019-05-13",
"count": 2
},
{
"date": "2019-05-15",
"count": 1
},
{
"date": "2019-05-16",
"count": 1
},
{
"date": "2019-05-17",
"count": 1
},
{
"date": "2019-05-22",
"count": 1
},
{
"date": "2019-05-23",
"count": 2
},
{
"date": "2019-05-24",
"count": 1
},
{
"date": "2019-05-25",
"count": 1
},
{
"date": "2019-05-29",
"count": 2
},
{
"date": "2019-05-30",
"count": 2
},
{
"date": "2019-05-31",
"count": 1
},
{
"date": "2019-06-02",
"count": 1
},
{
"date": "2019-06-03",
"count": 1
},
{
"date": "2019-06-06",
"count": 1
},
{
"date": "2019-06-10",
"count": 1
},
{
"date": "2019-06-14",
"count": 3
},
{
"date": "2019-06-18",
"count": 2
},
{
"date": "2019-06-19",
"count": 1
},
{
"date": "2019-06-20",
"count": 1
},
{
"date": "2019-06-21",
"count": 1
},
{
"date": "2019-06-24",
"count": 1
},
{
"date": "2019-07-11",
"count": 1
},
{
"date": "2019-07-12",
"count": 1
},
{
"date": "2019-07-19",
"count": 1
},
{
"date": "2019-07-22",
"count": 1
},
{
"date": "2019-07-26",
"count": 1
},
{
"date": "2019-08-03",
"count": 1
},
{
"date": "2019-08-04",
"count": 1
},
{
"date": "2019-08-06",
"count": 1
},
{
"date": "2019-08-08",
"count": 1
},
{
"date": "2019-08-15",
"count": 1
},
{
"date": "2019-08-21",
"count": 1
},
{
"date": "2019-08-24",
"count": 1
},
{
"date": "2019-08-27",
"count": 1
},
{
"date": "2019-08-28",
"count": 4
},
{
"date": "2019-09-01",
"count": 1
},
{
"date": "2019-09-03",
"count": 1
},
{
"date": "2019-09-05",
"count": 1
},
{
"date": "2019-09-06",
"count": 1
},
{
"date": "2019-09-09",
"count": 1
},
{
"date": "2019-09-13",
"count": 1
},
{
"date": "2019-09-14",
"count": 1
},
{
"date": "2019-09-15",
"count": 1
},
{
"date": "2019-09-18",
"count": 3
},
{
"date": "2019-09-20",
"count": 1
},
{
"date": "2019-09-23",
"count": 1
},
{
"date": "2019-09-24",
"count": 1
},
{
"date": "2019-09-26",
"count": 1
},
{
"date": "2019-09-30",
"count": 1
},
{
"date": "2019-10-04",
"count": 1
},
{
"date": "2019-10-06",
"count": 1
},
{
"date": "2019-10-07",
"count": 2
},
{
"date": "2019-10-10",
"count": 1
},
{
"date": "2019-10-11",
"count": 1
},
{
"date": "2019-10-14",
"count": 1
},
{
"date": "2019-10-16",
"count": 1
},
{
"date": "2019-10-23",
"count": 1
},
{
"date": "2019-10-25",
"count": 1
},
{
"date": "2019-10-26",
"count": 1
},
{
"date": "2019-10-31",
"count": 1
},
{
"date": "2019-11-02",
"count": 1
},
{
"date": "2019-11-03",
"count": 1
},
{
"date": "2019-11-05",
"count": 1
},
{
"date": "2019-11-06",
"count": 1
},
{
"date": "2019-11-08",
"count": 1
},
{
"date": "2019-11-13",
"count": 2
},
{
"date": "2019-11-14",
"count": 1
},
{
"date": "2019-11-15",
"count": 1
},
{
"date": "2019-11-17",
"count": 1
},
{
"date": "2019-11-18",
"count": 1
},
{
"date": "2019-11-20",
"count": 1
},
{
"date": "2019-11-21",
"count": 1
},
{
"date": "2019-12-02",
"count": 1
},
{
"date": "2019-12-03",
"count": 1
},
{
"date": "2019-12-12",
"count": 1
},
{
"date": "2019-12-14",
"count": 1
},
{
"date": "2019-12-22",
"count": 1
},
{
"date": "2019-12-23",
"count": 1
},
{
"date": "2019-12-27",
"count": 1
},
{
"date": "2019-12-30",
"count": 1
},
{
"date": "2020-01-07",
"count": 1
},
{
"date": "2020-01-08",
"count": 1
},
{
"date": "2020-01-10",
"count": 1
},
{
"date": "2020-01-13",
"count": 1
},
{
"date": "2020-01-19",
"count": 1
},
{
"date": "2020-01-21",
"count": 2
},
{
"date": "2020-01-28",
"count": 1
},
{
"date": "2020-01-30",
"count": 1
},
{
"date": "2020-02-07",
"count": 1
},
{
"date": "2020-02-08",
"count": 1
},
{
"date": "2020-02-09",
"count": 1
},
{
"date": "2020-02-10",
"count": 1
},
{
"date": "2020-02-12",
"count": 1
},
{
"date": "2020-02-14",
"count": 1
},
{
"date": "2020-02-16",
"count": 2
},
{
"date": "2020-02-18",
"count": 3
},
{
"date": "2020-02-25",
"count": 1
},
{
"date": "2020-02-28",
"count": 3
},
{
"date": "2020-03-06",
"count": 1
},
{
"date": "2020-03-08",
"count": 1
},
{
"date": "2020-03-09",
"count": 1
},
{
"date": "2020-03-12",
"count": 1
},
{
"date": "2020-03-13",
"count": 1
},
{
"date": "2020-03-18",
"count": 1
},
{
"date": "2020-03-19",
"count": 1
},
{
"date": "2020-03-21",
"count": 3
},
{
"date": "2020-03-23",
"count": 1
},
{
"date": "2020-03-25",
"count": 2
},
{
"date": "2020-04-04",
"count": 2
},
{
"date": "2020-04-11",
"count": 1
},
{
"date": "2020-04-13",
"count": 2
},
{
"date": "2020-04-17",
"count": 1
},
{
"date": "2020-04-25",
"count": 1
},
{
"date": "2020-04-27",
"count": 1
},
{
"date": "2020-04-30",
"count": 2
},
{
"date": "2020-05-01",
"count": 1
},
{
"date": "2020-05-06",
"count": 1
},
{
"date": "2020-05-14",
"count": 1
},
{
"date": "2020-05-19",
"count": 2
},
{
"date": "2020-05-22",
"count": 1
},
{
"date": "2020-05-23",
"count": 2
},
{
"date": "2020-05-26",
"count": 1
},
{
"date": "2020-05-29",
"count": 3
},
{
"date": "2020-05-31",
"count": 1
},
{
"date": "2020-06-04",
"count": 1
},
{
"date": "2020-06-09",
"count": 1
},
{
"date": "2020-06-17",
"count": 2
},
{
"date": "2020-06-19",
"count": 1
},
{
"date": "2020-06-22",
"count": 2
},
{
"date": "2020-07-02",
"count": 1
},
{
"date": "2020-07-06",
"count": 1
},
{
"date": "2020-07-08",
"count": 1
},
{
"date": "2020-07-10",
"count": 1
},
{
"date": "2020-07-17",
"count": 3
},
{
"date": "2020-07-19",
"count": 1
},
{
"date": "2020-07-22",
"count": 1
},
{
"date": "2020-07-25",
"count": 1
},
{
"date": "2020-07-27",
"count": 1
},
{
"date": "2020-07-28",
"count": 1
},
{
"date": "2020-07-29",
"count": 2
},
{
"date": "2020-07-30",
"count": 1
},
{
"date": "2020-07-31",
"count": 1
},
{
"date": "2020-08-04",
"count": 1
},
{
"date": "2020-08-06",
"count": 1
},
{
"date": "2020-08-08",
"count": 1
},
{
"date": "2020-08-11",
"count": 1
},
{
"date": "2020-08-16",
"count": 1
},
{
"date": "2020-08-19",
"count": 1
},
{
"date": "2020-08-24",
"count": 1
},
{
"date": "2020-09-04",
"count": 1
},
{
"date": "2020-09-05",
"count": 1
},
{
"date": "2020-09-15",
"count": 1
},
{
"date": "2020-09-17",
"count": 2
},
{
"date": "2020-09-20",
"count": 1
},
{
"date": "2020-09-25",
"count": 1
},
{
"date": "2020-09-26",
"count": 1
},
{
"date": "2020-09-28",
"count": 1
},
{
"date": "2020-10-01",
"count": 1
},
{
"date": "2020-10-02",
"count": 1
},
{
"date": "2020-10-06",
"count": 1
},
{
"date": "2020-10-07",
"count": 1
},
{
"date": "2020-10-08",
"count": 1
},
{
"date": "2020-10-09",
"count": 1
},
{
"date": "2020-10-14",
"count": 1
},
{
"date": "2020-10-15",
"count": 1
},
{
"date": "2020-10-16",
"count": 1
},
{
"date": "2020-10-22",
"count": 1
},
{
"date": "2020-10-28",
"count": 1
},
{
"date": "2020-11-07",
"count": 1
},
{
"date": "2020-11-10",
"count": 1
},
{
"date": "2020-11-19",
"count": 1
},
{
"date": "2020-11-20",
"count": 1
},
{
"date": "2020-11-30",
"count": 1
},
{
"date": "2020-12-03",
"count": 1
},
{
"date": "2020-12-06",
"count": 1
},
{
"date": "2020-12-15",
"count": 1
},
{
"date": "2020-12-18",
"count": 1
},
{
"date": "2020-12-21",
"count": 1
},
{
"date": "2020-12-28",
"count": 1
},
{
"date": "2020-12-29",
"count": 1
},
{
"date": "2021-01-05",
"count": 2
},
{
"date": "2021-01-07",
"count": 1
},
{
"date": "2021-01-08",
"count": 1
},
{
"date": "2021-01-12",
"count": 1
},
{
"date": "2021-01-15",
"count": 1
},
{
"date": "2021-01-16",
"count": 1
},
{
"date": "2021-01-17",
"count": 1
},
{
"date": "2021-01-26",
"count": 1
},
{
"date": "2021-01-29",
"count": 1
},
{
"date": "2021-02-02",
"count": 1
},
{
"date": "2021-02-03",
"count": 1
},
{
"date": "2021-02-05",
"count": 1
},
{
"date": "2021-02-10",
"count": 2
},
{
"date": "2021-02-11",
"count": 2
},
{
"date": "2021-02-16",
"count": 1
},
{
"date": "2021-03-10",
"count": 2
},
{
"date": "2021-03-24",
"count": 2
},
{
"date": "2021-04-02",
"count": 1
},
{
"date": "2021-04-06",
"count": 1
},
{
"date": "2021-04-14",
"count": 1
},
{
"date": "2021-04-16",
"count": 1
},
{
"date": "2021-04-22",
"count": 1
},
{
"date": "2021-04-26",
"count": 1
},
{
"date": "2021-04-27",
"count": 1
},
{
"date": "2021-04-29",
"count": 1
},
{
"date": "2021-05-03",
"count": 1
},
{
"date": "2021-05-04",
"count": 1
},
{
"date": "2021-05-05",
"count": 3
},
{
"date": "2021-05-06",
"count": 1
},
{
"date": "2021-05-07",
"count": 1
},
{
"date": "2021-05-08",
"count": 1
},
{
"date": "2021-05-09",
"count": 2
},
{
"date": "2021-05-10",
"count": 1
},
{
"date": "2021-05-13",
"count": 2
},
{
"date": "2021-05-23",
"count": 1
},
{
"date": "2021-05-26",
"count": 1
},
{
"date": "2021-05-27",
"count": 1
},
{
"date": "2021-05-29",
"count": 1
},
{
"date": "2021-06-06",
"count": 1
},
{
"date": "2021-06-12",
"count": 2
},
{
"date": "2021-06-14",
"count": 1
},
{
"date": "2021-06-18",
"count": 1
},
{
"date": "2021-06-25",
"count": 1
},
{
"date": "2021-06-29",
"count": 1
},
{
"date": "2021-07-02",
"count": 1
},
{
"date": "2021-07-06",
"count": 1
},
{
"date": "2021-07-09",
"count": 1
},
{
"date": "2021-07-13",
"count": 1
},
{
"date": "2021-07-16",
"count": 1
},
{
"date": "2021-07-21",
"count": 1
},
{
"date": "2021-07-23",
"count": 1
},
{
"date": "2021-07-25",
"count": 1
},
{
"date": "2021-07-29",
"count": 1
},
{
"date": "2021-08-02",
"count": 1
},
{
"date": "2021-08-04",
"count": 1
},
{
"date": "2021-08-06",
"count": 1
},
{
"date": "2021-08-09",
"count": 2
},
{
"date": "2021-08-12",
"count": 1
},
{
"date": "2021-08-13",
"count": 2
},
{
"date": "2021-08-14",
"count": 1
},
{
"date": "2021-08-19",
"count": 1
},
{
"date": "2021-08-24",
"count": 1
},
{
"date": "2021-08-26",
"count": 1
},
{
"date": "2021-08-29",
"count": 1
},
{
"date": "2021-09-03",
"count": 1
},
{
"date": "2021-09-09",
"count": 1
},
{
"date": "2021-09-13",
"count": 1
},
{
"date": "2021-09-16",
"count": 2
},
{
"date": "2021-09-17",
"count": 1
},
{
"date": "2021-09-19",
"count": 1
},
{
"date": "2021-09-26",
"count": 1
},
{
"date": "2021-09-27",
"count": 1
},
{
"date": "2021-10-02",
"count": 1
},
{
"date": "2021-10-04",
"count": 1
},
{
"date": "2021-10-08",
"count": 1
},
{
"date": "2021-10-12",
"count": 1
},
{
"date": "2021-10-19",
"count": 1
},
{
"date": "2021-10-21",
"count": 1
},
{
"date": "2021-10-23",
"count": 1
},
{
"date": "2021-10-24",
"count": 1
},
{
"date": "2021-10-27",
"count": 1
},
{
"date": "2021-10-28",
"count": 1
},
{
"date": "2021-11-02",
"count": 1
},
{
"date": "2021-11-11",
"count": 1
},
{
"date": "2021-11-27",
"count": 1
},
{
"date": "2021-12-08",
"count": 2
},
{
"date": "2021-12-17",
"count": 1
},
{
"date": "2021-12-23",
"count": 1
},
{
"date": "2021-12-26",
"count": 1
},
{
"date": "2021-12-31",
"count": 1
},
{
"date": "2022-01-02",
"count": 1
},
{
"date": "2022-01-03",
"count": 1
},
{
"date": "2022-01-07",
"count": 1
},
{
"date": "2022-01-10",
"count": 1
},
{
"date": "2022-01-11",
"count": 3
},
{
"date": "2022-01-12",
"count": 2
},
{
"date": "2022-01-16",
"count": 2
},
{
"date": "2022-01-20",
"count": 1
},
{
"date": "2022-01-27",
"count": 3
},
{
"date": "2022-01-30",
"count": 1
},
{
"date": "2022-02-06",
"count": 1
},
{
"date": "2022-02-09",
"count": 1
},
{
"date": "2022-02-10",
"count": 1
},
{
"date": "2022-02-13",
"count": 1
},
{
"date": "2022-02-14",
"count": 1
},
{
"date": "2022-02-17",
"count": 1
},
{
"date": "2022-02-23",
"count": 1
},
{
"date": "2022-02-27",
"count": 1
},
{
"date": "2022-03-15",
"count": 1
},
{
"date": "2022-03-22",
"count": 2
},
{
"date": "2022-03-23",
"count": 2
},
{
"date": "2022-03-29",
"count": 2
},
{
"date": "2022-03-31",
"count": 1
},
{
"date": "2022-04-14",
"count": 1
},
{
"date": "2022-04-21",
"count": 1
},
{
"date": "2022-05-02",
"count": 1
},
{
"date": "2022-05-07",
"count": 1
},
{
"date": "2022-05-11",
"count": 1
},
{
"date": "2022-05-20",
"count": 2
},
{
"date": "2022-05-22",
"count": 1
},
{
"date": "2022-05-25",
"count": 1
},
{
"date": "2022-05-26",
"count": 1
},
{
"date": "2022-05-27",
"count": 2
},
{
"date": "2022-05-28",
"count": 1
},
{
"date": "2022-06-21",
"count": 2
},
{
"date": "2022-06-22",
"count": 3
},
{
"date": "2022-06-23",
"count": 1
},
{
"date": "2022-07-02",
"count": 1
},
{
"date": "2022-07-06",
"count": 1
},
{
"date": "2022-07-07",
"count": 2
},
{
"date": "2022-07-19",
"count": 1
},
{
"date": "2022-07-20",
"count": 1
},
{
"date": "2022-07-21",
"count": 1
},
{
"date": "2022-08-01",
"count": 1
},
{
"date": "2022-08-03",
"count": 1
},
{
"date": "2022-08-12",
"count": 2
},
{
"date": "2022-08-30",
"count": 1
},
{
"date": "2022-09-10",
"count": 1
},
{
"date": "2022-09-23",
"count": 2
},
{
"date": "2022-09-24",
"count": 1
},
{
"date": "2022-09-26",
"count": 1
},
{
"date": "2022-09-29",
"count": 1
},
{
"date": "2022-10-10",
"count": 1
},
{
"date": "2022-10-12",
"count": 1
},
{
"date": "2022-10-27",
"count": 1
},
{
"date": "2022-11-02",
"count": 1
},
{
"date": "2022-11-05",
"count": 1
},
{
"date": "2022-11-21",
"count": 1
},
{
"date": "2022-12-01",
"count": 1
},
{
"date": "2022-12-13",
"count": 1
},
{
"date": "2022-12-15",
"count": 1
},
{
"date": "2022-12-19",
"count": 1
},
{
"date": "2022-12-21",
"count": 1
},
{
"date": "2023-01-02",
"count": 1
},
{
"date": "2023-01-15",
"count": 1
},
{
"date": "2023-01-17",
"count": 1
},
{
"date": "2023-01-19",
"count": 1
},
{
"date": "2023-01-22",
"count": 1
},
{
"date": "2023-01-25",
"count": 1
},
{
"date": "2023-02-03",
"count": 1
},
{
"date": "2023-02-16",
"count": 1
},
{
"date": "2023-02-17",
"count": 1
},
{
"date": "2023-02-20",
"count": 1
},
{
"date": "2023-02-21",
"count": 1
},
{
"date": "2023-02-24",
"count": 1
},
{
"date": "2023-03-01",
"count": 1
},
{
"date": "2023-03-03",
"count": 1
},
{
"date": "2023-03-29",
"count": 1
},
{
"date": "2023-04-04",
"count": 1
},
{
"date": "2023-04-06",
"count": 2
},
{
"date": "2023-04-15",
"count": 1
},
{
"date": "2023-04-16",
"count": 1
},
{
"date": "2023-04-23",
"count": 1
},
{
"date": "2023-04-24",
"count": 1
},
{
"date": "2023-04-28",
"count": 1
},
{
"date": "2023-05-04",
"count": 1
},
{
"date": "2023-05-09",
"count": 1
},
{
"date": "2023-05-11",
"count": 2
},
{
"date": "2023-05-12",
"count": 1
},
{
"date": "2023-05-21",
"count": 1
},
{
"date": "2023-06-11",
"count": 1
},
{
"date": "2023-06-14",
"count": 1
},
{
"date": "2023-06-16",
"count": 1
},
{
"date": "2023-06-18",
"count": 2
},
{
"date": "2023-06-28",
"count": 1
},
{
"date": "2023-07-17",
"count": 1
},
{
"date": "2023-07-23",
"count": 1
},
{
"date": "2023-07-25",
"count": 1
},
{
"date": "2023-08-04",
"count": 1
},
{
"date": "2023-08-18",
"count": 1
},
{
"date": "2023-08-19",
"count": 1
},
{
"date": "2023-08-31",
"count": 1
},
{
"date": "2023-09-03",
"count": 1
},
{
"date": "2023-09-05",
"count": 1
},
{
"date": "2023-09-06",
"count": 1
},
{
"date": "2023-09-07",
"count": 1
},
{
"date": "2023-10-02",
"count": 1
},
{
"date": "2023-10-16",
"count": 1
},
{
"date": "2023-11-06",
"count": 1
},
{
"date": "2023-11-18",
"count": 1
},
{
"date": "2023-11-19",
"count": 1
},
{
"date": "2023-11-23",
"count": 1
},
{
"date": "2023-11-26",
"count": 1
},
{
"date": "2023-11-27",
"count": 1
},
{
"date": "2023-11-29",
"count": 1
},
{
"date": "2023-12-02",
"count": 1
},
{
"date": "2023-12-04",
"count": 1
},
{
"date": "2023-12-07",
"count": 1
},
{
"date": "2023-12-09",
"count": 1
},
{
"date": "2023-12-13",
"count": 1
},
{
"date": "2023-12-27",
"count": 1
},
{
"date": "2024-01-02",
"count": 1
},
{
"date": "2024-01-04",
"count": 3
},
{
"date": "2024-01-24",
"count": 1
},
{
"date": "2024-01-27",
"count": 1
},
{
"date": "2024-02-11",
"count": 2
},
{
"date": "2024-02-20",
"count": 1
},
{
"date": "2024-02-28",
"count": 1
},
{
"date": "2024-03-27",
"count": 1
},
{
"date": "2024-03-28",
"count": 1
},
{
"date": "2024-04-24",
"count": 1
},
{
"date": "2024-04-26",
"count": 1
},
{
"date": "2024-05-11",
"count": 1
},
{
"date": "2024-05-22",
"count": 1
},
{
"date": "2024-06-22",
"count": 1
},
{
"date": "2024-07-30",
"count": 1
},
{
"date": "2024-08-01",
"count": 1
},
{
"date": "2024-08-10",
"count": 1
},
{
"date": "2024-08-20",
"count": 1
},
{
"date": "2024-09-12",
"count": 1
},
{
"date": "2024-09-18",
"count": 2
},
{
"date": "2024-09-20",
"count": 1
},
{
"date": "2024-09-22",
"count": 1
},
{
"date": "2024-09-26",
"count": 2
},
{
"date": "2024-10-10",
"count": 1
},
{
"date": "2024-11-01",
"count": 1
},
{
"date": "2024-11-02",
"count": 1
},
{
"date": "2024-11-15",
"count": 1
},
{
"date": "2024-12-27",
"count": 1
},
{
"date": "2025-01-15",
"count": 1
},
{
"date": "2025-01-27",
"count": 1
},
{
"date": "2025-02-01",
"count": 1
},
{
"date": "2025-02-15",
"count": 1
},
{
"date": "2025-02-26",
"count": 1
},
{
"date": "2025-03-10",
"count": 1
},
{
"date": "2025-04-15",
"count": 1
},
{
"date": "2025-04-21",
"count": 1
},
{
"date": "2025-06-05",
"count": 1
},
{
"date": "2025-06-18",
"count": 1
},
{
"date": "2025-06-28",
"count": 1
},
{
"date": "2025-08-11",
"count": 1
},
{
"date": "2025-08-28",
"count": 2
},
{
"date": "2025-09-05",
"count": 1
},
{
"date": "2025-10-14",
"count": 1
},
{
"date": "2025-12-27",
"count": 1
},
{
"date": "2026-02-07",
"count": 1
},
{
"date": "2026-02-28",
"count": 1
},
{
"date": "2026-03-17",
"count": 1
},
{
"date": "2026-03-20",
"count": 1
},
{
"date": "2026-05-02",
"count": 1
},
{
"date": "2026-05-11",
"count": 1
},
{
"date": "2026-05-22",
"count": 1
},
{
"date": "2026-06-10",
"count": 1
},
{
"date": "2026-07-13",
"count": 1
},
{
"date": "2026-07-14",
"count": 1
},
{
"date": "2026-07-17",
"count": 2
}
],
"complete": true,
"collected": 901,
"total_forks": 914
},
"star_history": {
"days": [
{
"date": "2022-11-01",
"count": 4
},
{
"date": "2022-11-02",
"count": 3
},
{
"date": "2022-11-03",
"count": 7
},
{
"date": "2022-11-04",
"count": 1
},
{
"date": "2022-11-05",
"count": 4
},
{
"date": "2022-11-06",
"count": 2
},
{
"date": "2022-11-07",
"count": 1
},
{
"date": "2022-11-08",
"count": 2
},
{
"date": "2022-11-09",
"count": 5
},
{
"date": "2022-11-10",
"count": 5
},
{
"date": "2022-11-11",
"count": 6
},
{
"date": "2022-11-14",
"count": 1
},
{
"date": "2022-11-15",
"count": 1
},
{
"date": "2022-11-16",
"count": 2
},
{
"date": "2022-11-17",
"count": 1
},
{
"date": "2022-11-18",
"count": 1
},
{
"date": "2022-11-19",
"count": 3
},
{
"date": "2022-11-20",
"count": 2
},
{
"date": "2022-11-21",
"count": 1
},
{
"date": "2022-11-24",
"count": 1
},
{
"date": "2022-11-25",
"count": 1
},
{
"date": "2022-11-27",
"count": 2
},
{
"date": "2022-11-28",
"count": 3
},
{
"date": "2022-11-29",
"count": 1
},
{
"date": "2022-11-30",
"count": 2
},
{
"date": "2022-12-01",
"count": 2
},
{
"date": "2022-12-03",
"count": 1
},
{
"date": "2022-12-04",
"count": 1
},
{
"date": "2022-12-05",
"count": 1
},
{
"date": "2022-12-06",
"count": 2
},
{
"date": "2022-12-07",
"count": 2
},
{
"date": "2022-12-12",
"count": 1
},
{
"date": "2022-12-13",
"count": 3
},
{
"date": "2022-12-14",
"count": 1
},
{
"date": "2022-12-15",
"count": 1
},
{
"date": "2022-12-16",
"count": 2
},
{
"date": "2022-12-19",
"count": 4
},
{
"date": "2022-12-21",
"count": 1
},
{
"date": "2022-12-24",
"count": 2
},
{
"date": "2022-12-26",
"count": 1
},
{
"date": "2022-12-27",
"count": 3
},
{
"date": "2022-12-29",
"count": 3
},
{
"date": "2022-12-30",
"count": 1
},
{
"date": "2023-01-02",
"count": 1
},
{
"date": "2023-01-03",
"count": 2
},
{
"date": "2023-01-04",
"count": 2
},
{
"date": "2023-01-06",
"count": 2
},
{
"date": "2023-01-08",
"count": 3
},
{
"date": "2023-01-10",
"count": 1
},
{
"date": "2023-01-13",
"count": 1
},
{
"date": "2023-01-14",
"count": 1
},
{
"date": "2023-01-15",
"count": 1
},
{
"date": "2023-01-16",
"count": 1
},
{
"date": "2023-01-17",
"count": 2
},
{
"date": "2023-01-18",
"count": 1
},
{
"date": "2023-01-19",
"count": 1
},
{
"date": "2023-01-20",
"count": 2
},
{
"date": "2023-01-21",
"count": 2
},
{
"date": "2023-01-23",
"count": 1
},
{
"date": "2023-01-24",
"count": 2
},
{
"date": "2023-01-26",
"count": 3
},
{
"date": "2023-01-27",
"count": 1
},
{
"date": "2023-01-28",
"count": 1
},
{
"date": "2023-01-30",
"count": 1
},
{
"date": "2023-01-31",
"count": 1
},
{
"date": "2023-02-01",
"count": 2
},
{
"date": "2023-02-02",
"count": 1
},
{
"date": "2023-02-04",
"count": 2
},
{
"date": "2023-02-05",
"count": 1
},
{
"date": "2023-02-07",
"count": 1
},
{
"date": "2023-02-08",
"count": 3
},
{
"date": "2023-02-10",
"count": 1
},
{
"date": "2023-02-12",
"count": 2
},
{
"date": "2023-02-13",
"count": 2
},
{
"date": "2023-02-14",
"count": 1
},
{
"date": "2023-02-15",
"count": 1
},
{
"date": "2023-02-16",
"count": 2
},
{
"date": "2023-02-17",
"count": 5
},
{
"date": "2023-02-18",
"count": 2
},
{
"date": "2023-02-19",
"count": 1
},
{
"date": "2023-02-20",
"count": 2
},
{
"date": "2023-02-21",
"count": 4
},
{
"date": "2023-02-22",
"count": 2
},
{
"date": "2023-02-23",
"count": 2
},
{
"date": "2023-02-24",
"count": 2
},
{
"date": "2023-02-26",
"count": 1
},
{
"date": "2023-02-27",
"count": 3
},
{
"date": "2023-03-01",
"count": 2
},
{
"date": "2023-03-02",
"count": 1
},
{
"date": "2023-03-03",
"count": 2
},
{
"date": "2023-03-04",
"count": 2
},
{
"date": "2023-03-08",
"count": 2
},
{
"date": "2023-03-09",
"count": 2
},
{
"date": "2023-03-10",
"count": 1
},
{
"date": "2023-03-11",
"count": 2
},
{
"date": "2023-03-12",
"count": 2
},
{
"date": "2023-03-13",
"count": 2
},
{
"date": "2023-03-14",
"count": 1
},
{
"date": "2023-03-18",
"count": 1
},
{
"date": "2023-03-19",
"count": 2
},
{
"date": "2023-03-20",
"count": 2
},
{
"date": "2023-03-21",
"count": 1
},
{
"date": "2023-03-22",
"count": 1
},
{
"date": "2023-03-23",
"count": 2
},
{
"date": "2023-03-25",
"count": 1
},
{
"date": "2023-03-28",
"count": 1
},
{
"date": "2023-03-29",
"count": 3
},
{
"date": "2023-03-30",
"count": 2
},
{
"date": "2023-04-01",
"count": 1
},
{
"date": "2023-04-04",
"count": 1
},
{
"date": "2023-04-09",
"count": 2
},
{
"date": "2023-04-10",
"count": 1
},
{
"date": "2023-04-12",
"count": 5
},
{
"date": "2023-04-15",
"count": 1
},
{
"date": "2023-04-17",
"count": 1
},
{
"date": "2023-04-18",
"count": 1
},
{
"date": "2023-04-19",
"count": 2
},
{
"date": "2023-04-21",
"count": 2
},
{
"date": "2023-04-22",
"count": 2
},
{
"date": "2023-04-23",
"count": 1
},
{
"date": "2023-04-24",
"count": 2
},
{
"date": "2023-04-25",
"count": 2
},
{
"date": "2023-04-26",
"count": 5
},
{
"date": "2023-04-27",
"count": 2
},
{
"date": "2023-04-28",
"count": 1
},
{
"date": "2023-04-29",
"count": 2
},
{
"date": "2023-04-30",
"count": 1
},
{
"date": "2023-05-02",
"count": 2
},
{
"date": "2023-05-03",
"count": 1
},
{
"date": "2023-05-04",
"count": 2
},
{
"date": "2023-05-05",
"count": 3
},
{
"date": "2023-05-06",
"count": 1
},
{
"date": "2023-05-07",
"count": 1
},
{
"date": "2023-05-08",
"count": 2
},
{
"date": "2023-05-09",
"count": 1
},
{
"date": "2023-05-10",
"count": 1
},
{
"date": "2023-05-11",
"count": 1
},
{
"date": "2023-05-12",
"count": 4
},
{
"date": "2023-05-13",
"count": 1
},
{
"date": "2023-05-14",
"count": 1
},
{
"date": "2023-05-15",
"count": 1
},
{
"date": "2023-05-16",
"count": 1
},
{
"date": "2023-05-17",
"count": 2
},
{
"date": "2023-05-19",
"count": 2
},
{
"date": "2023-05-20",
"count": 1
},
{
"date": "2023-05-21",
"count": 1
},
{
"date": "2023-05-22",
"count": 1
},
{
"date": "2023-05-24",
"count": 1
},
{
"date": "2023-05-26",
"count": 1
},
{
"date": "2023-05-30",
"count": 2
},
{
"date": "2023-06-02",
"count": 1
},
{
"date": "2023-06-03",
"count": 1
},
{
"date": "2023-06-04",
"count": 2
},
{
"date": "2023-06-05",
"count": 1
},
{
"date": "2023-06-06",
"count": 1
},
{
"date": "2023-06-07",
"count": 1
},
{
"date": "2023-06-08",
"count": 1
},
{
"date": "2023-06-09",
"count": 2
},
{
"date": "2023-06-11",
"count": 1
},
{
"date": "2023-06-12",
"count": 4
},
{
"date": "2023-06-13",
"count": 4
},
{
"date": "2023-06-14",
"count": 3
},
{
"date": "2023-06-15",
"count": 1
},
{
"date": "2023-06-16",
"count": 3
},
{
"date": "2023-06-17",
"count": 2
},
{
"date": "2023-06-18",
"count": 1
},
{
"date": "2023-06-19",
"count": 2
},
{
"date": "2023-06-22",
"count": 1
},
{
"date": "2023-06-27",
"count": 1
},
{
"date": "2023-06-28",
"count": 1
},
{
"date": "2023-06-30",
"count": 1
},
{
"date": "2023-07-01",
"count": 1
},
{
"date": "2023-07-03",
"count": 4
},
{
"date": "2023-07-04",
"count": 1
},
{
"date": "2023-07-06",
"count": 6
},
{
"date": "2023-07-10",
"count": 1
},
{
"date": "2023-07-11",
"count": 1
},
{
"date": "2023-07-13",
"count": 1
},
{
"date": "2023-07-14",
"count": 1
},
{
"date": "2023-07-15",
"count": 1
},
{
"date": "2023-07-18",
"count": 1
},
{
"date": "2023-07-19",
"count": 1
},
{
"date": "2023-07-20",
"count": 1
},
{
"date": "2023-07-21",
"count": 1
},
{
"date": "2023-07-23",
"count": 1
},
{
"date": "2023-07-24",
"count": 2
},
{
"date": "2023-07-25",
"count": 1
},
{
"date": "2023-07-26",
"count": 1
},
{
"date": "2023-07-27",
"count": 1
},
{
"date": "2023-07-28",
"count": 3
},
{
"date": "2023-07-29",
"count": 1
},
{
"date": "2023-07-30",
"count": 2
},
{
"date": "2023-08-02",
"count": 1
},
{
"date": "2023-08-05",
"count": 3
},
{
"date": "2023-08-06",
"count": 1
},
{
"date": "2023-08-07",
"count": 1
},
{
"date": "2023-08-08",
"count": 2
},
{
"date": "2023-08-09",
"count": 2
},
{
"date": "2023-08-11",
"count": 2
},
{
"date": "2023-08-12",
"count": 1
},
{
"date": "2023-08-13",
"count": 2
},
{
"date": "2023-08-14",
"count": 1
},
{
"date": "2023-08-15",
"count": 2
},
{
"date": "2023-08-16",
"count": 1
},
{
"date": "2023-08-17",
"count": 1
},
{
"date": "2023-08-22",
"count": 1
},
{
"date": "2023-08-23",
"count": 3
},
{
"date": "2023-08-24",
"count": 3
},
{
"date": "2023-08-25",
"count": 2
},
{
"date": "2023-08-26",
"count": 1
},
{
"date": "2023-08-28",
"count": 2
},
{
"date": "2023-08-29",
"count": 1
},
{
"date": "2023-08-30",
"count": 1
},
{
"date": "2023-08-31",
"count": 2
},
{
"date": "2023-09-02",
"count": 1
},
{
"date": "2023-09-06",
"count": 2
},
{
"date": "2023-09-07",
"count": 1
},
{
"date": "2023-09-09",
"count": 4
},
{
"date": "2023-09-10",
"count": 1
},
{
"date": "2023-09-11",
"count": 1
},
{
"date": "2023-09-13",
"count": 9
},
{
"date": "2023-09-14",
"count": 4
},
{
"date": "2023-09-15",
"count": 3
},
{
"date": "2023-09-16",
"count": 2
},
{
"date": "2023-09-18",
"count": 1
},
{
"date": "2023-09-19",
"count": 2
},
{
"date": "2023-09-20",
"count": 1
},
{
"date": "2023-09-21",
"count": 2
},
{
"date": "2023-09-22",
"count": 1
},
{
"date": "2023-09-24",
"count": 1
},
{
"date": "2023-09-26",
"count": 1
},
{
"date": "2023-09-27",
"count": 1
},
{
"date": "2023-10-01",
"count": 1
},
{
"date": "2023-10-02",
"count": 1
},
{
"date": "2023-10-03",
"count": 1
},
{
"date": "2023-10-05",
"count": 2
},
{
"date": "2023-10-06",
"count": 1
},
{
"date": "2023-10-07",
"count": 1
},
{
"date": "2023-10-08",
"count": 1
},
{
"date": "2023-10-10",
"count": 2
},
{
"date": "2023-10-11",
"count": 2
},
{
"date": "2023-10-12",
"count": 1
},
{
"date": "2023-10-13",
"count": 4
},
{
"date": "2023-10-15",
"count": 3
},
{
"date": "2023-10-16",
"count": 3
},
{
"date": "2023-10-17",
"count": 4
},
{
"date": "2023-10-19",
"count": 2
},
{
"date": "2023-10-21",
"count": 2
},
{
"date": "2023-10-23",
"count": 2
},
{
"date": "2023-10-24",
"count": 1
},
{
"date": "2023-10-26",
"count": 3
},
{
"date": "2023-10-28",
"count": 1
},
{
"date": "2023-10-30",
"count": 3
},
{
"date": "2023-11-01",
"count": 2
},
{
"date": "2023-11-02",
"count": 3
},
{
"date": "2023-11-03",
"count": 1
},
{
"date": "2023-11-04",
"count": 1
},
{
"date": "2023-11-05",
"count": 2
},
{
"date": "2023-11-06",
"count": 2
},
{
"date": "2023-11-09",
"count": 2
},
{
"date": "2023-11-14",
"count": 1
},
{
"date": "2023-11-15",
"count": 1
},
{
"date": "2023-11-17",
"count": 2
},
{
"date": "2023-11-18",
"count": 1
},
{
"date": "2023-11-19",
"count": 1
},
{
"date": "2023-11-21",
"count": 1
},
{
"date": "2023-11-22",
"count": 3
},
{
"date": "2023-11-23",
"count": 1
},
{
"date": "2023-11-26",
"count": 2
},
{
"date": "2023-11-27",
"count": 1
},
{
"date": "2023-11-29",
"count": 3
},
{
"date": "2023-11-30",
"count": 1
},
{
"date": "2023-12-05",
"count": 1
},
{
"date": "2023-12-06",
"count": 1
},
{
"date": "2023-12-08",
"count": 1
},
{
"date": "2023-12-11",
"count": 1
},
{
"date": "2023-12-15",
"count": 2
},
{
"date": "2023-12-16",
"count": 1
},
{
"date": "2023-12-19",
"count": 2
},
{
"date": "2023-12-26",
"count": 1
},
{
"date": "2023-12-27",
"count": 1
},
{
"date": "2023-12-28",
"count": 1
},
{
"date": "2023-12-29",
"count": 2
},
{
"date": "2023-12-31",
"count": 2
},
{
"date": "2024-01-01",
"count": 2
},
{
"date": "2024-01-02",
"count": 2
},
{
"date": "2024-01-03",
"count": 2
},
{
"date": "2024-01-06",
"count": 2
},
{
"date": "2024-01-07",
"count": 1
},
{
"date": "2024-01-09",
"count": 1
},
{
"date": "2024-01-10",
"count": 1
},
{
"date": "2024-01-11",
"count": 3
},
{
"date": "2024-01-12",
"count": 1
},
{
"date": "2024-01-13",
"count": 1
},
{
"date": "2024-01-14",
"count": 3
},
{
"date": "2024-01-16",
"count": 1
},
{
"date": "2024-01-17",
"count": 1
},
{
"date": "2024-01-21",
"count": 2
},
{
"date": "2024-01-22",
"count": 1
},
{
"date": "2024-01-23",
"count": 1
},
{
"date": "2024-01-24",
"count": 1
},
{
"date": "2024-01-26",
"count": 1
},
{
"date": "2024-01-27",
"count": 1
},
{
"date": "2024-01-29",
"count": 1
},
{
"date": "2024-01-30",
"count": 3
},
{
"date": "2024-01-31",
"count": 1
},
{
"date": "2024-02-03",
"count": 2
},
{
"date": "2024-02-05",
"count": 1
},
{
"date": "2024-02-06",
"count": 1
},
{
"date": "2024-02-09",
"count": 2
},
{
"date": "2024-02-11",
"count": 1
},
{
"date": "2024-02-12",
"count": 2
},
{
"date": "2024-02-14",
"count": 1
},
{
"date": "2024-02-19",
"count": 1
},
{
"date": "2024-02-20",
"count": 2
},
{
"date": "2024-02-21",
"count": 2
},
{
"date": "2024-02-24",
"count": 1
},
{
"date": "2024-02-26",
"count": 1
},
{
"date": "2024-03-01",
"count": 1
},
{
"date": "2024-03-04",
"count": 2
},
{
"date": "2024-03-06",
"count": 3
},
{
"date": "2024-03-07",
"count": 1
},
{
"date": "2024-03-08",
"count": 2
},
{
"date": "2024-03-11",
"count": 1
},
{
"date": "2024-03-12",
"count": 1
},
{
"date": "2024-03-14",
"count": 1
},
{
"date": "2024-03-18",
"count": 1
},
{
"date": "2024-03-19",
"count": 1
},
{
"date": "2024-03-21",
"count": 1
},
{
"date": "2024-03-22",
"count": 2
},
{
"date": "2024-03-23",
"count": 1
},
{
"date": "2024-03-26",
"count": 1
},
{
"date": "2024-03-27",
"count": 3
},
{
"date": "2024-03-28",
"count": 2
},
{
"date": "2024-03-29",
"count": 2
},
{
"date": "2024-03-31",
"count": 1
},
{
"date": "2024-04-03",
"count": 1
},
{
"date": "2024-04-04",
"count": 2
},
{
"date": "2024-04-06",
"count": 1
},
{
"date": "2024-04-07",
"count": 1
},
{
"date": "2024-04-10",
"count": 1
},
{
"date": "2024-04-12",
"count": 2
},
{
"date": "2024-04-13",
"count": 1
},
{
"date": "2024-04-14",
"count": 1
},
{
"date": "2024-04-15",
"count": 1
},
{
"date": "2024-04-17",
"count": 1
},
{
"date": "2024-04-18",
"count": 1
},
{
"date": "2024-04-19",
"count": 1
},
{
"date": "2024-04-21",
"count": 1
},
{
"date": "2024-04-24",
"count": 1
},
{
"date": "2024-04-25",
"count": 2
},
{
"date": "2024-04-26",
"count": 3
},
{
"date": "2024-04-27",
"count": 1
},
{
"date": "2024-05-01",
"count": 2
},
{
"date": "2024-05-02",
"count": 1
},
{
"date": "2024-05-06",
"count": 1
},
{
"date": "2024-05-08",
"count": 1
},
{
"date": "2024-05-10",
"count": 1
},
{
"date": "2024-05-12",
"count": 1
},
{
"date": "2024-05-13",
"count": 2
},
{
"date": "2024-05-15",
"count": 1
},
{
"date": "2024-05-16",
"count": 1
},
{
"date": "2024-05-17",
"count": 1
},
{
"date": "2024-05-18",
"count": 2
},
{
"date": "2024-05-20",
"count": 3
},
{
"date": "2024-05-21",
"count": 1
},
{
"date": "2024-05-23",
"count": 3
},
{
"date": "2024-05-24",
"count": 1
},
{
"date": "2024-05-26",
"count": 1
},
{
"date": "2024-05-27",
"count": 1
},
{
"date": "2024-05-29",
"count": 1
},
{
"date": "2024-05-31",
"count": 1
},
{
"date": "2024-06-03",
"count": 2
},
{
"date": "2024-06-04",
"count": 1
},
{
"date": "2024-06-05",
"count": 1
},
{
"date": "2024-06-07",
"count": 3
},
{
"date": "2024-06-08",
"count": 1
},
{
"date": "2024-06-10",
"count": 1
},
{
"date": "2024-06-12",
"count": 2
},
{
"date": "2024-06-13",
"count": 1
},
{
"date": "2024-06-18",
"count": 2
},
{
"date": "2024-06-19",
"count": 2
},
{
"date": "2024-06-21",
"count": 1
},
{
"date": "2024-06-24",
"count": 2
},
{
"date": "2024-06-26",
"count": 1
},
{
"date": "2024-06-29",
"count": 1
},
{
"date": "2024-06-30",
"count": 1
},
{
"date": "2024-07-04",
"count": 2
},
{
"date": "2024-07-05",
"count": 2
},
{
"date": "2024-07-06",
"count": 1
},
{
"date": "2024-07-09",
"count": 2
},
{
"date": "2024-07-10",
"count": 1
},
{
"date": "2024-07-12",
"count": 2
},
{
"date": "2024-07-14",
"count": 1
},
{
"date": "2024-07-15",
"count": 2
},
{
"date": "2024-07-16",
"count": 1
},
{
"date": "2024-07-17",
"count": 1
},
{
"date": "2024-07-19",
"count": 1
},
{
"date": "2024-07-21",
"count": 2
},
{
"date": "2024-07-23",
"count": 1
},
{
"date": "2024-07-25",
"count": 1
},
{
"date": "2024-07-28",
"count": 1
},
{
"date": "2024-07-29",
"count": 1
},
{
"date": "2024-07-30",
"count": 2
},
{
"date": "2024-08-03",
"count": 1
},
{
"date": "2024-08-04",
"count": 1
},
{
"date": "2024-08-09",
"count": 1
},
{
"date": "2024-08-11",
"count": 1
},
{
"date": "2024-08-14",
"count": 1
},
{
"date": "2024-08-19",
"count": 2
},
{
"date": "2024-08-20",
"count": 1
},
{
"date": "2024-08-22",
"count": 1
},
{
"date": "2024-08-23",
"count": 1
},
{
"date": "2024-08-29",
"count": 1
},
{
"date": "2024-08-30",
"count": 1
},
{
"date": "2024-09-01",
"count": 1
},
{
"date": "2024-09-02",
"count": 3
},
{
"date": "2024-09-06",
"count": 1
},
{
"date": "2024-09-07",
"count": 1
},
{
"date": "2024-09-09",
"count": 1
},
{
"date": "2024-09-10",
"count": 1
},
{
"date": "2024-09-11",
"count": 1
},
{
"date": "2024-09-13",
"count": 1
},
{
"date": "2024-09-17",
"count": 4
},
{
"date": "2024-09-18",
"count": 2
},
{
"date": "2024-09-22",
"count": 1
},
{
"date": "2024-09-23",
"count": 1
},
{
"date": "2024-09-24",
"count": 1
},
{
"date": "2024-09-26",
"count": 1
},
{
"date": "2024-10-01",
"count": 1
},
{
"date": "2024-10-02",
"count": 1
},
{
"date": "2024-10-06",
"count": 1
},
{
"date": "2024-10-09",
"count": 1
},
{
"date": "2024-10-10",
"count": 1
},
{
"date": "2024-10-12",
"count": 1
},
{
"date": "2024-10-14",
"count": 2
},
{
"date": "2024-10-16",
"count": 2
},
{
"date": "2024-10-17",
"count": 1
},
{
"date": "2024-10-18",
"count": 2
},
{
"date": "2024-10-22",
"count": 5
},
{
"date": "2024-10-25",
"count": 2
},
{
"date": "2024-10-27",
"count": 1
},
{
"date": "2024-10-29",
"count": 2
},
{
"date": "2024-11-01",
"count": 1
},
{
"date": "2024-11-02",
"count": 1
},
{
"date": "2024-11-05",
"count": 1
},
{
"date": "2024-11-10",
"count": 1
},
{
"date": "2024-11-11",
"count": 1
},
{
"date": "2024-11-12",
"count": 3
},
{
"date": "2024-11-13",
"count": 1
},
{
"date": "2024-11-19",
"count": 2
},
{
"date": "2024-11-21",
"count": 1
},
{
"date": "2024-11-23",
"count": 2
},
{
"date": "2024-12-02",
"count": 1
},
{
"date": "2024-12-05",
"count": 1
},
{
"date": "2024-12-13",
"count": 1
},
{
"date": "2024-12-16",
"count": 2
},
{
"date": "2024-12-17",
"count": 2
},
{
"date": "2024-12-19",
"count": 2
},
{
"date": "2024-12-24",
"count": 1
},
{
"date": "2024-12-25",
"count": 1
},
{
"date": "2024-12-30",
"count": 1
},
{
"date": "2025-01-02",
"count": 1
},
{
"date": "2025-01-07",
"count": 1
},
{
"date": "2025-01-09",
"count": 1
},
{
"date": "2025-01-13",
"count": 1
},
{
"date": "2025-01-19",
"count": 1
},
{
"date": "2025-01-21",
"count": 1
},
{
"date": "2025-01-23",
"count": 1
},
{
"date": "2025-01-24",
"count": 1
},
{
"date": "2025-01-29",
"count": 1
},
{
"date": "2025-01-30",
"count": 1
},
{
"date": "2025-02-01",
"count": 1
},
{
"date": "2025-02-02",
"count": 1
},
{
"date": "2025-02-04",
"count": 1
},
{
"date": "2025-02-05",
"count": 1
},
{
"date": "2025-02-11",
"count": 1
},
{
"date": "2025-02-14",
"count": 2
},
{
"date": "2025-02-18",
"count": 1
},
{
"date": "2025-02-21",
"count": 1
},
{
"date": "2025-02-23",
"count": 2
},
{
"date": "2025-02-25",
"count": 1
},
{
"date": "2025-02-27",
"count": 1
},
{
"date": "2025-03-02",
"count": 1
},
{
"date": "2025-03-04",
"count": 1
},
{
"date": "2025-03-10",
"count": 1
},
{
"date": "2025-03-13",
"count": 2
},
{
"date": "2025-03-14",
"count": 1
},
{
"date": "2025-03-18",
"count": 2
},
{
"date": "2025-03-21",
"count": 1
},
{
"date": "2025-03-24",
"count": 1
},
{
"date": "2025-03-29",
"count": 1
},
{
"date": "2025-03-31",
"count": 1
},
{
"date": "2025-04-01",
"count": 2
},
{
"date": "2025-04-04",
"count": 1
},
{
"date": "2025-04-06",
"count": 1
},
{
"date": "2025-04-08",
"count": 1
},
{
"date": "2025-04-12",
"count": 1
},
{
"date": "2025-04-16",
"count": 1
},
{
"date": "2025-04-21",
"count": 1
},
{
"date": "2025-05-06",
"count": 1
},
{
"date": "2025-05-07",
"count": 2
},
{
"date": "2025-05-09",
"count": 1
},
{
"date": "2025-05-10",
"count": 1
},
{
"date": "2025-05-14",
"count": 1
},
{
"date": "2025-05-23",
"count": 1
},
{
"date": "2025-05-24",
"count": 1
},
{
"date": "2025-05-25",
"count": 4
},
{
"date": "2025-05-26",
"count": 2
},
{
"date": "2025-05-27",
"count": 1
},
{
"date": "2025-05-28",
"count": 2
},
{
"date": "2025-05-30",
"count": 2
},
{
"date": "2025-05-31",
"count": 1
},
{
"date": "2025-06-02",
"count": 1
},
{
"date": "2025-06-06",
"count": 1
},
{
"date": "2025-06-10",
"count": 2
},
{
"date": "2025-06-12",
"count": 1
},
{
"date": "2025-06-13",
"count": 1
},
{
"date": "2025-06-17",
"count": 2
},
{
"date": "2025-06-19",
"count": 1
},
{
"date": "2025-06-21",
"count": 2
},
{
"date": "2025-06-23",
"count": 1
},
{
"date": "2025-06-25",
"count": 1
},
{
"date": "2025-06-28",
"count": 2
},
{
"date": "2025-06-29",
"count": 1
},
{
"date": "2025-06-30",
"count": 2
},
{
"date": "2025-07-08",
"count": 1
},
{
"date": "2025-07-10",
"count": 1
},
{
"date": "2025-07-11",
"count": 1
},
{
"date": "2025-07-12",
"count": 1
},
{
"date": "2025-07-19",
"count": 2
},
{
"date": "2025-07-22",
"count": 1
},
{
"date": "2025-07-23",
"count": 1
},
{
"date": "2025-07-29",
"count": 1
},
{
"date": "2025-08-03",
"count": 1
},
{
"date": "2025-08-05",
"count": 1
},
{
"date": "2025-08-06",
"count": 3
},
{
"date": "2025-08-11",
"count": 5
},
{
"date": "2025-08-12",
"count": 2
},
{
"date": "2025-08-13",
"count": 2
},
{
"date": "2025-08-14",
"count": 2
},
{
"date": "2025-08-16",
"count": 1
},
{
"date": "2025-08-17",
"count": 1
},
{
"date": "2025-08-18",
"count": 1
},
{
"date": "2025-08-22",
"count": 1
},
{
"date": "2025-08-23",
"count": 1
},
{
"date": "2025-08-24",
"count": 1
},
{
"date": "2025-08-25",
"count": 1
},
{
"date": "2025-08-26",
"count": 1
},
{
"date": "2025-08-27",
"count": 1
},
{
"date": "2025-08-28",
"count": 2
},
{
"date": "2025-09-03",
"count": 1
},
{
"date": "2025-09-04",
"count": 3
},
{
"date": "2025-09-11",
"count": 1
},
{
"date": "2025-09-12",
"count": 1
},
{
"date": "2025-09-16",
"count": 1
},
{
"date": "2025-09-21",
"count": 1
},
{
"date": "2025-09-22",
"count": 1
},
{
"date": "2025-09-24",
"count": 2
},
{
"date": "2025-09-28",
"count": 1
},
{
"date": "2025-09-29",
"count": 2
},
{
"date": "2025-09-30",
"count": 1
},
{
"date": "2025-10-01",
"count": 1
},
{
"date": "2025-10-04",
"count": 1
},
{
"date": "2025-10-06",
"count": 1
},
{
"date": "2025-10-09",
"count": 1
},
{
"date": "2025-10-13",
"count": 2
},
{
"date": "2025-10-15",
"count": 1
},
{
"date": "2025-10-16",
"count": 2
},
{
"date": "2025-10-18",
"count": 1
},
{
"date": "2025-10-21",
"count": 1
},
{
"date": "2025-10-22",
"count": 1
},
{
"date": "2025-10-23",
"count": 2
},
{
"date": "2025-10-25",
"count": 1
},
{
"date": "2025-10-26",
"count": 1
},
{
"date": "2025-10-31",
"count": 1
},
{
"date": "2025-11-02",
"count": 1
},
{
"date": "2025-11-04",
"count": 1
},
{
"date": "2025-11-09",
"count": 1
},
{
"date": "2025-11-11",
"count": 1
},
{
"date": "2025-11-13",
"count": 1
},
{
"date": "2025-11-14",
"count": 2
},
{
"date": "2025-11-15",
"count": 1
},
{
"date": "2025-11-18",
"count": 1
},
{
"date": "2025-11-21",
"count": 1
},
{
"date": "2025-12-01",
"count": 1
},
{
"date": "2025-12-03",
"count": 1
},
{
"date": "2025-12-07",
"count": 1
},
{
"date": "2025-12-09",
"count": 1
},
{
"date": "2025-12-12",
"count": 1
},
{
"date": "2025-12-13",
"count": 1
},
{
"date": "2025-12-14",
"count": 1
},
{
"date": "2025-12-20",
"count": 2
},
{
"date": "2025-12-25",
"count": 1
},
{
"date": "2025-12-26",
"count": 1
},
{
"date": "2025-12-27",
"count": 2
},
{
"date": "2026-01-01",
"count": 1
},
{
"date": "2026-01-02",
"count": 1
},
{
"date": "2026-01-07",
"count": 1
},
{
"date": "2026-01-08",
"count": 1
},
{
"date": "2026-01-09",
"count": 1
},
{
"date": "2026-01-14",
"count": 1
},
{
"date": "2026-01-20",
"count": 1
},
{
"date": "2026-01-25",
"count": 1
},
{
"date": "2026-01-26",
"count": 1
},
{
"date": "2026-01-27",
"count": 1
},
{
"date": "2026-02-02",
"count": 1
},
{
"date": "2026-02-03",
"count": 1
},
{
"date": "2026-02-04",
"count": 2
},
{
"date": "2026-02-09",
"count": 2
},
{
"date": "2026-02-10",
"count": 1
},
{
"date": "2026-02-12",
"count": 1
},
{
"date": "2026-02-13",
"count": 1
},
{
"date": "2026-02-14",
"count": 1
},
{
"date": "2026-02-15",
"count": 1
},
{
"date": "2026-02-17",
"count": 2
},
{
"date": "2026-02-18",
"count": 1
},
{
"date": "2026-02-23",
"count": 1
},
{
"date": "2026-02-26",
"count": 1
},
{
"date": "2026-02-28",
"count": 1
},
{
"date": "2026-03-02",
"count": 1
},
{
"date": "2026-03-03",
"count": 1
},
{
"date": "2026-03-04",
"count": 1
},
{
"date": "2026-03-05",
"count": 1
},
{
"date": "2026-03-07",
"count": 1
},
{
"date": "2026-03-09",
"count": 1
},
{
"date": "2026-03-14",
"count": 1
},
{
"date": "2026-03-22",
"count": 1
},
{
"date": "2026-03-24",
"count": 1
},
{
"date": "2026-03-25",
"count": 2
},
{
"date": "2026-03-26",
"count": 1
},
{
"date": "2026-03-31",
"count": 1
},
{
"date": "2026-04-11",
"count": 1
},
{
"date": "2026-04-13",
"count": 1
},
{
"date": "2026-04-17",
"count": 1
},
{
"date": "2026-04-25",
"count": 1
},
{
"date": "2026-04-28",
"count": 1
},
{
"date": "2026-05-04",
"count": 1
},
{
"date": "2026-05-08",
"count": 1
},
{
"date": "2026-05-10",
"count": 1
},
{
"date": "2026-05-13",
"count": 1
},
{
"date": "2026-05-17",
"count": 1
},
{
"date": "2026-05-20",
"count": 1
},
{
"date": "2026-05-31",
"count": 1
},
{
"date": "2026-06-04",
"count": 1
},
{
"date": "2026-06-05",
"count": 1
},
{
"date": "2026-06-12",
"count": 1
},
{
"date": "2026-06-15",
"count": 1
},
{
"date": "2026-06-17",
"count": 1
},
{
"date": "2026-06-19",
"count": 1
},
{
"date": "2026-06-22",
"count": 2
},
{
"date": "2026-06-25",
"count": 1
},
{
"date": "2026-06-30",
"count": 1
},
{
"date": "2026-07-02",
"count": 1
},
{
"date": "2026-07-04",
"count": 1
},
{
"date": "2026-07-05",
"count": 2
},
{
"date": "2026-07-06",
"count": 1
},
{
"date": "2026-07-12",
"count": 1
},
{
"date": "2026-07-13",
"count": 1
},
{
"date": "2026-07-14",
"count": 1
},
{
"date": "2026-07-18",
"count": 1
},
{
"date": "2026-07-21",
"count": 1
}
],
"complete": false,
"collected": 1000,
"total_stars": 7930
},
"open_issues_and_prs": 118
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [
"demos"
],
"has_llms_txt": false,
"has_dockerfile": false,
"has_mcp_signal": false,
"bootstrap_files": [],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [],
"toolchain_manifests": [
"build.gradle.kts",
"conventions/build.gradle.kts",
"demos/compose/build.gradle.kts",
"demos/flipper/build.gradle.kts",
"demos/intellij/build.gradle.kts",
"demos/memory-leaks/build.gradle.kts",
"demos/rib-workers/build.gradle.kts",
"demos/stack-nav/build.gradle.kts",
"libraries/rib-android-compose/build.gradle.kts",
"libraries/rib-android-core/build.gradle.kts",
"libraries/rib-android/build.gradle.kts",
"libraries/rib-base/build.gradle.kts",
"libraries/rib-compiler-app/build.gradle.kts",
"libraries/rib-compiler-test/build.gradle.kts",
"libraries/rib-coroutines-test/build.gradle.kts",
"libraries/rib-coroutines/build.gradle.kts",
"libraries/rib-debug-utils/build.gradle.kts",
"libraries/rib-router-navigator/build.gradle.kts",
"libraries/rib-screen-stack-base/build.gradle.kts",
"libraries/rib-test/build.gradle.kts",
"libraries/rib-workflow-test/build.gradle.kts",
"libraries/rib-workflow/build.gradle.kts",
"tooling/rib-flipper-plugin/build.gradle.kts",
"tooling/rib-intellij-plugin/build.gradle.kts",
"tooling/rib-intellij-plugin/native/intellij-broadcast-rib/build.gradle.kts",
"tooling/utils/intellij-broadcast-core/build.gradle.kts",
"tutorials/tutorial1/build.gradle.kts",
"tutorials/tutorial2/build.gradle.kts",
"tutorials/tutorial3-completed/build.gradle.kts",
"tutorials/tutorial3/build.gradle.kts",
"tutorials/tutorial4/build.gradle.kts"
],
"largest_source_bytes": 27895,
"source_files_sampled": 482,
"oversized_source_files": 0,
"agent_instruction_files": [],
"agent_instruction_max_bytes": null
},
"dependencies": {
"manifests": [
"build.gradle.kts",
"conventions/build.gradle.kts"
],
"advisories": {
"error": null,
"scope": "repository_graph",
"source": "osv",
"findings": [],
"collected": true,
"truncated": false,
"by_severity": {},
"advisory_count": 0,
"affected_count": 0,
"assessed_count": 4,
"assessed_package": null,
"unassessed_count": 1,
"direct_affected_count": 0
},
"ecosystems": [
"maven"
],
"dependencies": [],
"all_dependencies": {
"error": null,
"source": "github-sbom",
"packages": [
{
"name": "@types/react",
"direct": false,
"version": "latest",
"ecosystem": "npm"
},
{
"name": "@types/react-dom",
"direct": false,
"version": "latest",
"ecosystem": "npm"
},
{
"name": "d3",
"direct": false,
"version": "^5.9.7",
"ecosystem": "npm"
},
{
"name": "flipper",
"direct": false,
"version": "latest",
"ecosystem": "npm"
},
{
"name": "flipper-pkg",
"direct": false,
"version": "latest",
"ecosystem": "npm"
}
],
"collected": true,
"truncated": false,
"total_count": 5,
"direct_count": 0,
"indirect_count": 5
}
},
"maintainership": {
"issues": {
"open_prs": 20,
"merged_prs": 244,
"open_issues": 98,
"closed_ratio": 0.705,
"closed_issues": 234,
"closed_unmerged_prs": 59
},
"bus_factor": 3,
"bot_contributors": 0,
"top_contributors": [
{
"type": "User",
"login": "jbarr21",
"commits": 109,
"avatar_url": "https://avatars.githubusercontent.com/u/3178606?v=4"
},
{
"type": "User",
"login": "tyvsmith",
"commits": 96,
"avatar_url": "https://avatars.githubusercontent.com/u/309657?v=4"
},
{
"type": "User",
"login": "AttwellBrian",
"commits": 92,
"avatar_url": "https://avatars.githubusercontent.com/u/549900?v=4"
},
{
"type": "User",
"login": "psteiger",
"commits": 66,
"avatar_url": "https://avatars.githubusercontent.com/u/124331?v=4"
},
{
"type": "User",
"login": "FranAguilera",
"commits": 44,
"avatar_url": "https://avatars.githubusercontent.com/u/4230063?v=4"
},
{
"type": "User",
"login": "artman",
"commits": 22,
"avatar_url": "https://avatars.githubusercontent.com/u/263457?v=4"
},
{
"type": "User",
"login": "neakor",
"commits": 17,
"avatar_url": "https://avatars.githubusercontent.com/u/1827517?v=4"
},
{
"type": "User",
"login": "idanakav",
"commits": 15,
"avatar_url": "https://avatars.githubusercontent.com/u/1896841?v=4"
},
{
"type": "User",
"login": "gergelyorosz",
"commits": 14,
"avatar_url": "https://avatars.githubusercontent.com/u/1094502?v=4"
},
{
"type": "User",
"login": "kovpas",
"commits": 11,
"avatar_url": "https://avatars.githubusercontent.com/u/1967999?v=4"
}
],
"contributors_sampled": 65,
"top_contributor_share": 0.184
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"android.yml"
],
"has_docs_dir": false,
"linter_configs": [],
"has_editorconfig": false,
"has_linter_config": false,
"has_precommit_config": false
},
"security_signals": {
"lockfiles": [],
"scorecard": {
"checks": [
{
"name": "Binary-Artifacts",
"score": 8,
"reason": "binaries present in source code",
"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": 10,
"reason": "7 out of 7 merged PRs checked by a CI test -- score normalized to 10",
"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": 5,
"reason": "Found 7/13 approved changesets -- score normalized to 5",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 10,
"reason": "project has 10 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": 4,
"reason": "5 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 4",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
},
{
"name": "Packaging",
"score": 10,
"reason": "packaging workflow detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
},
{
"name": "Pinned-Dependencies",
"score": 0,
"reason": "dependency not pinned by hash detected -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
},
{
"name": "SAST",
"score": 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": 0,
"reason": "detected GitHub workflow tokens with excessive permissions",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
},
{
"name": "Vulnerabilities",
"score": 10,
"reason": "0 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "e3aff84f660ac1232ffe7868fcbd51621eda277d",
"ran_at": "2026-07-21T19:37:28Z",
"aggregate_score": 4.8,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": false,
"has_dependabot_config": false
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/uber/RIBs",
"host": "github.com",
"name": "RIBs",
"owner": "uber"
},
"metrics": {
"overall": {
"key": "overall",
"band": "good",
"name": "Overall health",
"note": null,
"notes": [],
"value": 75,
"inputs": {
"security": 58,
"vitality": 72,
"community": 95,
"governance": 76,
"engineering": 71
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "good",
"name": "Vitality",
"value": 72,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "moderate",
"name": "Development activity",
"note": null,
"notes": [],
"value": 58,
"inputs": {
"commits_last_year": 30,
"human_commit_share": 1,
"days_since_last_push": 5,
"active_weeks_last_year": 6
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 5 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "push_recency",
"params": {
"days": 5
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "6/52 weeks with commits",
"points": 4.2,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 6
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "30 commits in the last year",
"points": 13.4,
"status": "partial",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 30
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "5 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 4",
"points": 4,
"status": "partial",
"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": 92,
"inputs": {
"releases_count": 24,
"latest_release_tag": "v0.16.6",
"releases_from_tags": false,
"days_since_latest_release": 5,
"mean_days_between_releases": 119.3
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "24 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 24
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 5 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 5
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~119.3 days",
"points": 19.8,
"status": "partial",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 119.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": 6,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "last human commit 6 days ago",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_maintained",
"params": {
"days": 6
}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "excellent",
"name": "Community & Adoption",
"value": 95,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "excellent",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 97,
"inputs": {
"forks": 914,
"stars": 7930,
"watchers": 194,
"growth_state": "organic",
"growth_factor_pct": 100
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "7,930 stars",
"points": 60,
"status": "met",
"details": [
{
"code": "stars",
"params": {
"count": 7930
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "914 forks",
"points": 24.7,
"status": "partial",
"details": [
{
"code": "forks",
"params": {
"count": 914
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "194 watchers",
"points": 12.7,
"status": "partial",
"details": [
{
"code": "watchers",
"params": {
"count": 194
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "excellent",
"name": "Community health",
"note": null,
"notes": [],
"value": 92,
"inputs": {
"has_readme": true,
"has_license": true,
"has_contributing": true,
"has_issue_template": false,
"has_code_of_conduct": true,
"has_pull_request_template": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 22.5,
"status": "met",
"details": [],
"max_points": 22.5
},
{
"key": "license",
"name": "License",
"detail": "recognized license (Apache-2.0)",
"points": 22.5,
"status": "met",
"details": [
{
"code": "license_standard",
"params": {}
},
{
"code": "license_spdx",
"params": {
"spdx": "Apache-2.0"
}
}
],
"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": 13.5,
"status": "met",
"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": 6.3,
"status": "met",
"details": [],
"max_points": 6.3
}
]
}
],
"description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
},
{
"key": "governance",
"band": "good",
"name": "Sustainability & Governance",
"value": 76,
"weight": 0.24,
"metrics": [
{
"key": "maintainer_resilience",
"band": "good",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 78,
"inputs": {
"bus_factor": 3,
"contributors_sampled": 65,
"top_contributor_share": 0.184
},
"components": [
{
"key": "bus_factor",
"name": "Bus factor",
"detail": "3 contributor(s) cover half of all commits",
"points": 36,
"status": "partial",
"details": [
{
"code": "bus_factor",
"params": {
"count": 3
}
}
],
"max_points": 54
},
{
"key": "commit_distribution",
"name": "Commit distribution",
"detail": "top contributor authored 18% of commits",
"points": 18.4,
"status": "partial",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 18
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "65 contributors",
"points": 13.5,
"status": "met",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 65
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 10 contributing companies or organizations",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "good",
"name": "Issue & PR responsiveness",
"note": null,
"notes": [],
"value": 71,
"inputs": {
"merged_prs": 244,
"open_issues": 98,
"closed_issues": 234,
"issue_closed_ratio": 0.705,
"closed_unmerged_prs": 59
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "70% of issues closed",
"points": 33,
"status": "partial",
"details": [
{
"code": "issues_closed_share",
"params": {
"share": 70
}
}
],
"max_points": 46.75
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "244/303 decided PRs merged",
"points": 30.8,
"status": "partial",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 244,
"decided": 303
}
}
],
"max_points": 38.25
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 7/13 approved changesets -- score normalized to 5",
"points": 7.5,
"status": "partial",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "good",
"name": "Ownership & stewardship",
"note": null,
"notes": [],
"value": 80,
"inputs": {
"followers": 3949,
"owner_type": "Organization",
"is_verified": null,
"owner_login": "uber",
"public_repos": 174,
"account_age_days": 5684
},
"components": [
{
"key": "ownership_backing",
"name": "Ownership backing",
"detail": "organization-owned",
"points": 30,
"status": "met",
"details": [
{
"code": "owner_organization",
"params": {}
}
],
"max_points": 30
},
{
"key": "verified_domain",
"name": "Verified domain",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 20
},
{
"key": "owner_reach",
"name": "Owner reach",
"detail": "3,949 followers of uber",
"points": 25,
"status": "met",
"details": [
{
"code": "owner_followers",
"params": {
"count": 3949,
"login": "uber"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "174 public repos, account ~15 yr old",
"points": 25,
"status": "met",
"details": [
{
"code": "public_repos",
"params": {
"count": 174
}
},
{
"code": "account_age_years",
"params": {
"years": 15
}
}
],
"max_points": 25
}
]
}
],
"description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
},
{
"key": "engineering",
"band": "good",
"name": "Engineering Quality",
"value": 71,
"weight": 0.2,
"metrics": [
{
"key": "engineering_practices",
"band": "moderate",
"name": "Engineering practices",
"note": null,
"notes": [],
"value": 68,
"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": "7 out of 7 merged PRs checked by a CI test -- score normalized to 10",
"points": 20,
"status": "met",
"details": [],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "good",
"name": "Documentation",
"note": null,
"notes": [],
"value": 75,
"inputs": {
"topics": [
"android",
"mobile",
"mobile-app",
"mobile-development",
"architecture",
"architectural-patterns",
"mvc",
"mvvm",
"mvp",
"viper"
],
"has_wiki": true,
"homepage": "https://eng.uber.com/tag/ribs/",
"has_readme": true,
"has_docs_dir": false,
"has_description": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 30,
"status": "met",
"details": [],
"max_points": 30
},
{
"key": "documentation_directory",
"name": "Documentation directory",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 25
},
{
"key": "documentation_homepage_site",
"name": "Documentation / homepage site",
"detail": "https://eng.uber.com/tag/ribs/",
"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": "10 topics",
"points": 10,
"status": "met",
"details": [
{
"code": "topics_count",
"params": {
"count": 10
}
}
],
"max_points": 10
},
{
"key": "wiki",
"name": "Wiki",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
}
],
"description": "Are baseline engineering and documentation practices in place?"
},
{
"key": "security",
"band": "moderate",
"name": "Security",
"value": 58,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "at_risk",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): Branch-Protection, Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"branch_protection",
"signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 48,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 16,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 2,
"scorecard_aggregate": 4.8
},
"components": [
{
"key": "binary_artifacts",
"name": "Binary-Artifacts",
"detail": "binaries present in source code",
"points": 6,
"status": "partial",
"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": "7 out of 7 merged PRs checked by a CI test -- score normalized to 10",
"points": 2.5,
"status": "met",
"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 7/13 approved changesets -- score normalized to 5",
"points": 3.8,
"status": "partial",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 10 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": "5 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 4",
"points": 3,
"status": "partial",
"details": [],
"max_points": 7.5
},
{
"key": "packaging",
"name": "Packaging",
"detail": "packaging workflow detected",
"points": 5,
"status": "met",
"details": [],
"max_points": 5
},
{
"key": "pinned_dependencies",
"name": "Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "sast",
"name": "SAST",
"detail": "SAST tool is not run on all commits -- score normalized to 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": "detected GitHub workflow tokens with excessive permissions",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "vulnerabilities",
"name": "Vulnerabilities",
"detail": "0 existing vulnerabilities detected",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
}
]
},
{
"key": "dependency_advisories",
"band": "excellent",
"name": "Dependency advisories",
"note": "Excluded from scoring (no data or not applicable): Indirect dependencies free of known advisories, No advisories left outstanding. Remaining weights renormalized. Matched 4 resolved dependencies against OSV; 1 could not be assessed (no resolved version, an unsupported ecosystem, or beyond the reported package list). This repository publishes no package the index resolves, so the repository dependency graph was assessed instead. That graph mixes development and test pins with shipped dependencies, so only the declared runtime dependencies are scored; transitive findings are reported as context and excluded from the score. Reachability is not analyzed.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"indirect_dependencies_free_of_known_advisories",
"no_advisories_left_outstanding"
]
}
},
{
"code": "weights_renormalized",
"params": {}
},
{
"code": "advisories_scope_repository",
"params": {
"assessed": 4
}
},
{
"code": "advisories_unassessed",
"params": {
"count": 1
}
},
{
"code": "advisories_repo_graph_caveat",
"params": {}
},
{
"code": "advisories_reachability",
"params": {}
}
],
"value": 100,
"inputs": {
"source": "osv",
"advisories": 0,
"affected_packages": 0,
"assessed_packages": 4,
"unassessed_packages": 1,
"affected_by_severity": "none",
"direct_affected_packages": 0
},
"components": [
{
"key": "direct_dependencies_free_of_known_advisories",
"name": "Direct dependencies free of known advisories",
"detail": "no direct dependency carries a known advisory",
"points": 35,
"status": "met",
"details": [
{
"code": "no_direct_advisories",
"params": {}
}
],
"max_points": 35
},
{
"key": "indirect_dependencies_free_of_known_advisories",
"name": "Indirect dependencies free of known advisories",
"detail": "transitive set not separable from development and test dependencies in this scope",
"points": 0,
"status": "excluded",
"details": [
{
"code": "advisories_scope_not_separable",
"params": {}
}
],
"max_points": 25
},
{
"key": "no_advisories_left_outstanding",
"name": "No advisories left outstanding",
"detail": "no advisory carries a publication date",
"points": 0,
"status": "excluded",
"details": [
{
"code": "advisories_no_publication_date",
"params": {}
}
],
"max_points": 40
}
]
},
{
"key": "malicious_dependencies",
"band": "excellent",
"name": "Malicious dependencies",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"source": "osv",
"meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
"packages": [],
"red_flag": false,
"assessed_packages": 4,
"malicious_packages": 0,
"direct_malicious_packages": 0,
"withdrawn_malicious_packages": 0,
"installable_malicious_packages": 0
},
"components": [
{
"key": "no_dependency_reported_as_a_malicious_package",
"name": "No dependency reported as a malicious package",
"detail": "no dependency is reported as a malicious package",
"points": 100,
"status": "met",
"details": [
{
"code": "no_malicious_dependencies",
"params": {}
}
],
"max_points": 100
}
]
},
{
"key": "high_risk_jurisdiction_exposure",
"band": "excellent",
"name": "High-Risk Jurisdiction Exposure",
"note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
"notes": [
{
"code": "jurisdiction_evidence_limits",
"params": {}
}
],
"value": 100,
"inputs": {
"meaning": "self-published location evidence; not nationality or citizenship",
"red_flag": false,
"exposures": [],
"policy_countries": [
"Russia",
"Iran",
"North Korea"
],
"review_only_matches": 0,
"assessed_self_published_locations": 9
},
"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": 44,
"weight": 0,
"metrics": [
{
"key": "ai_agent_context",
"band": "critical",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 16,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 0.31,
"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": "31 of 100 human commits state their intent (structured subject or explanatory body)",
"points": 16.5,
"status": "partial",
"details": [
{
"code": "legible_history",
"params": {
"legible": 31,
"sampled": 100
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "at_risk",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 46,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [],
"has_dockerfile": false,
"typed_language": true,
"bootstrap_files": [],
"has_devcontainer": false,
"has_linter_config": false,
"typecheck_configs": [],
"agent_commit_share": 0,
"toolchain_manifests": [
"build.gradle.kts",
"conventions/build.gradle.kts",
"demos/compose/build.gradle.kts",
"demos/flipper/build.gradle.kts",
"demos/intellij/build.gradle.kts",
"demos/memory-leaks/build.gradle.kts",
"demos/rib-workers/build.gradle.kts",
"demos/stack-nav/build.gradle.kts",
"libraries/rib-android-compose/build.gradle.kts",
"libraries/rib-android-core/build.gradle.kts",
"libraries/rib-android/build.gradle.kts",
"libraries/rib-base/build.gradle.kts",
"libraries/rib-compiler-app/build.gradle.kts",
"libraries/rib-compiler-test/build.gradle.kts",
"libraries/rib-coroutines-test/build.gradle.kts",
"libraries/rib-coroutines/build.gradle.kts",
"libraries/rib-debug-utils/build.gradle.kts",
"libraries/rib-router-navigator/build.gradle.kts",
"libraries/rib-screen-stack-base/build.gradle.kts",
"libraries/rib-test/build.gradle.kts",
"libraries/rib-workflow-test/build.gradle.kts",
"libraries/rib-workflow/build.gradle.kts",
"tooling/rib-flipper-plugin/build.gradle.kts",
"tooling/rib-intellij-plugin/build.gradle.kts",
"tooling/rib-intellij-plugin/native/intellij-broadcast-rib/build.gradle.kts",
"tooling/utils/intellij-broadcast-core/build.gradle.kts",
"tutorials/tutorial1/build.gradle.kts",
"tutorials/tutorial2/build.gradle.kts",
"tutorials/tutorial3-completed/build.gradle.kts",
"tutorials/tutorial3/build.gradle.kts",
"tutorials/tutorial4/build.gradle.kts"
],
"dependency_bot_commit_share": 0
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": "build.gradle.kts, conventions/build.gradle.kts, demos/compose/build.gradle.kts (toolchain convention, no task runner)",
"points": 12.6,
"status": "partial",
"details": [
{
"code": "toolchain_convention",
"params": {
"files": "build.gradle.kts, conventions/build.gradle.kts, demos/compose/build.gradle.kts"
}
}
],
"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": "Kotlin (statically typed)",
"points": 11,
"status": "met",
"details": [
{
"code": "statically_typed_language",
"params": {
"language": "Kotlin"
}
}
],
"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": "excellent",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"primary_language": "Kotlin",
"largest_source_bytes": 27895,
"source_files_sampled": 482,
"oversized_source_files": 0
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "Kotlin (statically typed)",
"points": 45,
"status": "met",
"details": [
{
"code": "statically_typed_language",
"params": {
"language": "Kotlin"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "0/482 source files over 60KB",
"points": 55,
"status": "met",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 482,
"oversized": 0
}
}
],
"max_points": 55
}
]
},
{
"key": "ai_interfaces",
"band": "at_risk",
"name": "Machine-readable interfaces",
"note": null,
"notes": [],
"value": 40,
"inputs": {
"example_dirs": [
"demos"
],
"has_mcp_signal": false,
"api_schema_files": []
},
"components": [
{
"key": "api_schema_openapi_graphql_proto",
"name": "API schema (OpenAPI/GraphQL/proto)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 40
},
{
"key": "mcp_server",
"name": "MCP server",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 20
},
{
"key": "runnable_examples",
"name": "Runnable examples",
"detail": "demos",
"points": 40,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "demos"
}
}
],
"max_points": 40
}
]
}
],
"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": [],
"report_type": "repository",
"generated_at": "2026-07-21T19:37:59.916272Z",
"schema_version": "0.23.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/u/uber/RIBs.svg",
"full_name": "uber/RIBs",
"license_state": "standard",
"license_spdx": "Apache-2.0"
}