JSON-Rohbericht maschinenlesbar
{
"data": {
"repo": {
"topics": [
"cloud",
"infrastructure",
"kubernetes",
"team-platform"
],
"is_fork": false,
"size_kb": 9231,
"has_wiki": false,
"homepage": "https://cloud.nicklasfrahm.dev/",
"languages": {
"Go": 64972,
"HCL": 27477,
"Shell": 2726,
"Python": 5181,
"Makefile": 3416,
"Go Template": 10334
},
"pushed_at": "2026-07-25T23:28:28Z",
"created_at": "2025-02-08T23:53:48Z",
"owner_type": "Organization",
"updated_at": "2026-07-25T23:28:00Z",
"description": "This repository contains the infrastructure configuration of my homelab and network.",
"is_archived": false,
"is_disabled": false,
"license_spdx": null,
"default_branch": "main",
"license_spdx_raw": null,
"primary_language": "Go",
"significant_languages": [
"Go",
"HCL"
]
},
"owner": {
"blog": "https://nicklasfrahm.dev",
"name": "nicklasfrahm.dev",
"type": "Organization",
"login": "nicklasfrahm-dev",
"company": null,
"location": "Denmark",
"followers": 0,
"avatar_url": "https://avatars.githubusercontent.com/u/105248296?v=4",
"created_at": "2022-05-09T21:36:38Z",
"is_verified": null,
"public_repos": 7,
"account_age_days": 1538
},
"license": {
"state": "absent",
"spdx_id": null,
"raw_spdx": null,
"file_present": false,
"scorecard_found": false,
"profile_has_license": false
},
"activity": {
"releases": [
{
"tag": "v0.93.0",
"kind": "minor",
"published_at": "2026-07-25T23:28:28Z"
},
{
"tag": "v0.92.0",
"kind": "minor",
"published_at": "2026-07-25T22:52:51Z"
},
{
"tag": "v0.91.2",
"kind": "patch",
"published_at": "2026-07-25T22:45:40Z"
},
{
"tag": "v0.91.1",
"kind": "patch",
"published_at": "2026-07-25T20:07:35Z"
},
{
"tag": "v0.91.0",
"kind": "minor",
"published_at": "2026-07-25T19:53:24Z"
},
{
"tag": "v0.90.0",
"kind": "minor",
"published_at": "2026-07-25T18:00:00Z"
},
{
"tag": "v0.89.2",
"kind": "patch",
"published_at": "2026-06-22T22:22:42Z"
},
{
"tag": "v0.89.1",
"kind": "patch",
"published_at": "2026-06-22T22:07:07Z"
},
{
"tag": "v0.89.0",
"kind": "minor",
"published_at": "2026-06-22T21:55:01Z"
},
{
"tag": "v0.88.0",
"kind": "minor",
"published_at": "2026-06-22T21:14:23Z"
},
{
"tag": "v0.87.1",
"kind": "patch",
"published_at": "2026-06-22T21:05:53Z"
},
{
"tag": "v0.87.0",
"kind": "minor",
"published_at": "2026-06-22T21:00:43Z"
},
{
"tag": "v0.86.0",
"kind": "minor",
"published_at": "2026-06-22T20:55:16Z"
},
{
"tag": "v0.85.0",
"kind": "minor",
"published_at": "2026-06-22T20:45:42Z"
},
{
"tag": "v0.84.2",
"kind": "patch",
"published_at": "2026-06-22T19:55:14Z"
},
{
"tag": "v0.84.1",
"kind": "patch",
"published_at": "2026-06-22T19:52:15Z"
},
{
"tag": "v0.84.0",
"kind": "minor",
"published_at": "2026-06-22T19:39:51Z"
},
{
"tag": "v0.83.0",
"kind": "minor",
"published_at": "2026-06-22T18:47:10Z"
},
{
"tag": "v0.82.0",
"kind": "minor",
"published_at": "2026-06-22T18:24:15Z"
},
{
"tag": "v0.81.0",
"kind": "minor",
"published_at": "2026-06-18T22:22:56Z"
},
{
"tag": "v0.80.2",
"kind": "patch",
"published_at": "2026-06-18T22:16:52Z"
},
{
"tag": "v0.80.1",
"kind": "patch",
"published_at": "2026-06-18T21:48:32Z"
},
{
"tag": "v0.80.0",
"kind": "minor",
"published_at": "2026-06-18T21:41:43Z"
},
{
"tag": "v0.79.0",
"kind": "minor",
"published_at": "2026-06-18T21:01:31Z"
},
{
"tag": "v0.78.1",
"kind": "patch",
"published_at": "2026-06-17T19:40:45Z"
},
{
"tag": "v0.78.0",
"kind": "minor",
"published_at": "2026-06-17T19:37:21Z"
},
{
"tag": "v0.77.1",
"kind": "patch",
"published_at": "2026-06-13T22:00:42Z"
},
{
"tag": "v0.77.0",
"kind": "minor",
"published_at": "2026-06-11T19:12:49Z"
},
{
"tag": "v0.76.0",
"kind": "minor",
"published_at": "2026-06-11T18:41:57Z"
},
{
"tag": "v0.75.0",
"kind": "minor",
"published_at": "2026-06-07T20:21:10Z"
},
{
"tag": "v0.74.1",
"kind": "patch",
"published_at": "2026-06-07T18:40:00Z"
},
{
"tag": "v0.74.0",
"kind": "minor",
"published_at": "2026-06-07T17:33:07Z"
},
{
"tag": "v0.73.0",
"kind": "minor",
"published_at": "2026-06-04T19:53:35Z"
},
{
"tag": "v0.72.1",
"kind": "patch",
"published_at": "2026-06-04T19:48:56Z"
},
{
"tag": "v0.72.0",
"kind": "minor",
"published_at": "2026-06-04T19:30:35Z"
},
{
"tag": "v0.71.3",
"kind": "patch",
"published_at": "2026-06-04T19:12:58Z"
},
{
"tag": "v0.71.2",
"kind": "patch",
"published_at": "2026-06-03T22:19:01Z"
},
{
"tag": "v0.71.1",
"kind": "patch",
"published_at": "2026-06-03T22:16:06Z"
},
{
"tag": "v0.71.0",
"kind": "minor",
"published_at": "2026-06-03T21:36:46Z"
},
{
"tag": "v0.70.1",
"kind": "patch",
"published_at": "2026-06-03T21:24:47Z"
},
{
"tag": "v0.70.0",
"kind": "minor",
"published_at": "2026-06-03T21:04:20Z"
},
{
"tag": "v0.69.2",
"kind": "patch",
"published_at": "2026-05-19T22:27:01Z"
},
{
"tag": "v0.69.1",
"kind": "patch",
"published_at": "2026-05-16T16:43:38Z"
},
{
"tag": "v0.69.0",
"kind": "minor",
"published_at": "2026-05-16T15:22:52Z"
},
{
"tag": "v0.68.6",
"kind": "patch",
"published_at": "2026-05-16T13:16:50Z"
},
{
"tag": "v0.68.5",
"kind": "patch",
"published_at": "2026-05-16T13:11:43Z"
},
{
"tag": "v0.68.4",
"kind": "patch",
"published_at": "2026-05-15T23:59:55Z"
},
{
"tag": "v0.68.3",
"kind": "patch",
"published_at": "2026-05-15T23:55:40Z"
},
{
"tag": "v0.68.2",
"kind": "patch",
"published_at": "2026-05-15T23:39:05Z"
},
{
"tag": "v0.68.1",
"kind": "patch",
"published_at": "2026-05-15T22:56:21Z"
},
{
"tag": "v0.68.0",
"kind": "minor",
"published_at": "2026-05-15T22:35:41Z"
},
{
"tag": "v0.67.6",
"kind": "patch",
"published_at": "2026-05-15T22:18:30Z"
},
{
"tag": "v0.67.5",
"kind": "patch",
"published_at": "2026-05-15T22:04:44Z"
},
{
"tag": "v0.67.4",
"kind": "patch",
"published_at": "2026-05-15T21:59:12Z"
},
{
"tag": "v0.67.3",
"kind": "patch",
"published_at": "2026-05-15T21:49:23Z"
},
{
"tag": "v0.67.2",
"kind": "patch",
"published_at": "2026-05-15T21:33:33Z"
},
{
"tag": "v0.67.1",
"kind": "patch",
"published_at": "2026-05-15T21:27:00Z"
},
{
"tag": "v0.67.0",
"kind": "minor",
"published_at": "2026-05-15T21:09:40Z"
},
{
"tag": "v0.66.4",
"kind": "patch",
"published_at": "2026-05-15T20:40:53Z"
},
{
"tag": "v0.66.3",
"kind": "patch",
"published_at": "2026-05-15T20:28:31Z"
},
{
"tag": "v0.66.2",
"kind": "patch",
"published_at": "2026-05-15T20:21:46Z"
},
{
"tag": "v0.66.1",
"kind": "patch",
"published_at": "2026-05-15T20:09:43Z"
},
{
"tag": "v0.66.0",
"kind": "minor",
"published_at": "2026-05-15T20:04:00Z"
},
{
"tag": "v0.65.6",
"kind": "patch",
"published_at": "2026-05-14T14:31:37Z"
},
{
"tag": "v0.65.5",
"kind": "patch",
"published_at": "2026-05-14T11:04:49Z"
},
{
"tag": "v0.65.4",
"kind": "patch",
"published_at": "2026-05-14T10:55:54Z"
},
{
"tag": "v0.65.3",
"kind": "patch",
"published_at": "2026-05-13T23:12:46Z"
},
{
"tag": "v0.65.2",
"kind": "patch",
"published_at": "2026-05-13T23:06:07Z"
},
{
"tag": "v0.65.1",
"kind": "patch",
"published_at": "2026-05-13T23:00:54Z"
},
{
"tag": "v0.65.0",
"kind": "minor",
"published_at": "2026-05-13T22:56:41Z"
},
{
"tag": "v0.64.0",
"kind": "minor",
"published_at": "2026-05-13T22:44:55Z"
},
{
"tag": "v0.63.0",
"kind": "minor",
"published_at": "2026-05-13T21:49:18Z"
},
{
"tag": "v0.62.0",
"kind": "minor",
"published_at": "2026-05-02T19:12:18Z"
},
{
"tag": "v0.61.0",
"kind": "minor",
"published_at": "2026-04-28T20:22:16Z"
},
{
"tag": "v0.60.0",
"kind": "minor",
"published_at": "2026-04-26T20:48:51Z"
},
{
"tag": "v0.59.0",
"kind": "minor",
"published_at": "2026-04-25T14:24:27Z"
},
{
"tag": "v0.58.0",
"kind": "minor",
"published_at": "2026-04-19T21:02:22Z"
},
{
"tag": "v0.57.1",
"kind": "patch",
"published_at": "2026-04-18T18:35:47Z"
},
{
"tag": "v0.57.0",
"kind": "minor",
"published_at": "2026-04-18T18:23:13Z"
},
{
"tag": "v0.56.0",
"kind": "minor",
"published_at": "2026-04-14T06:26:41Z"
},
{
"tag": "v0.55.4",
"kind": "patch",
"published_at": "2026-04-13T21:05:44Z"
},
{
"tag": "v0.55.3",
"kind": "patch",
"published_at": "2026-04-13T21:04:56Z"
},
{
"tag": "v0.55.2",
"kind": "patch",
"published_at": "2026-04-13T20:59:37Z"
},
{
"tag": "v0.55.1",
"kind": "patch",
"published_at": "2026-04-13T20:56:24Z"
},
{
"tag": "v0.55.0",
"kind": "minor",
"published_at": "2026-04-13T20:47:43Z"
},
{
"tag": "v0.54.0",
"kind": "minor",
"published_at": "2026-04-12T21:24:55Z"
},
{
"tag": "v0.53.0",
"kind": "minor",
"published_at": "2026-04-12T18:20:56Z"
},
{
"tag": "v0.52.0",
"kind": "minor",
"published_at": "2026-04-11T09:26:26Z"
},
{
"tag": "v0.51.1",
"kind": "patch",
"published_at": "2026-03-23T23:54:02Z"
},
{
"tag": "v0.51.0",
"kind": "minor",
"published_at": "2026-03-23T23:52:21Z"
},
{
"tag": "v0.50.1",
"kind": "patch",
"published_at": "2025-12-17T22:19:22Z"
},
{
"tag": "v0.50.0",
"kind": "minor",
"published_at": "2025-12-17T22:14:33Z"
},
{
"tag": "v0.49.0",
"kind": "minor",
"published_at": "2025-12-17T22:00:27Z"
},
{
"tag": "v0.48.5",
"kind": "patch",
"published_at": "2025-12-14T20:19:28Z"
},
{
"tag": "v0.48.4",
"kind": "patch",
"published_at": "2025-12-14T20:16:14Z"
},
{
"tag": "v0.48.3",
"kind": "patch",
"published_at": "2025-12-14T20:01:02Z"
},
{
"tag": "v0.48.2",
"kind": "patch",
"published_at": "2025-12-14T19:54:33Z"
},
{
"tag": "v0.48.1",
"kind": "patch",
"published_at": "2025-12-14T19:34:50Z"
},
{
"tag": "v0.48.0",
"kind": "minor",
"published_at": "2025-12-14T19:06:57Z"
},
{
"tag": "v0.47.9",
"kind": "patch",
"published_at": "2025-12-14T18:38:48Z"
}
],
"recent_commits": [
{
"oid": "4584e5c58ad2703d9a076c02cd41a5fa25223cc8",
"body": null,
"is_bot": false,
"headline": "feat(ci): create GitHub deployments for tracked environments (#369)",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-07-25T23:27:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b16489e84bf73512168a72cf808d9fe93c3e30a6",
"body": null,
"is_bot": false,
"headline": "feat(llm): upgrade vllm to v0.26.0 (#368)",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-07-25T22:52:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7ddd10bbc9216a6651699a2525e1661b4f9f1d85",
"body": "…tion (#367)",
"is_bot": false,
"headline": "fix(config): scope Cloud Run service accounts by environment and loca…",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-07-25T22:45:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4d38fc43c7374b474e77b7622cf8893b60f3c4da",
"body": null,
"is_bot": false,
"headline": "fix(config): give each Cloud Run service its own runtime identity (#366)",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-07-25T20:07:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7b3a24a05d60c3a7d9549cf6b741adc27cb8a9b9",
"body": null,
"is_bot": false,
"headline": "feat(ci): add Cloud Run service module and OpenTofu pipeline (#361)",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-07-25T19:52:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f4c633a00739c878b8d4b88e0bbbf148852eaf94",
"body": null,
"is_bot": false,
"headline": "fix(ci): remove npm cache from release workflow (#365)",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-07-25T17:59:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b271a02f2bfa47e820f1a874c8c8232acc037e2d",
"body": null,
"is_bot": false,
"headline": "fix(ci): pin actions to SHA and repair blocked release workflow (#364)",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-07-25T17:52:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a52970aac670c9be5f71fe411acb22d7d982af4c",
"body": "Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(config): replace speedtest-exporter image (#363)",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-07-25T17:34:14Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "7b33ab157604f203e9232883303915be072fbad2",
"body": null,
"is_bot": false,
"headline": "fix(llm): add request timeout to httproute (#362)",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-07-21T23:02:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a15ae9bd4a331e342681cd5ab7ee479d487d9a7f",
"body": "Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(charts): rename kaether dex client to kontinuum (#360)",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-07-19T15:42:49Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "49fdd45ec32ad96b3608855673d109198c216a8d",
"body": "… values (#359)\n\nCo-authored-by: Claude Sonnet 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(charts): add kaether static client and move dex config to service…",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-07-19T15:13:43Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "886925312bb7fb77b017416571c15c7c0123056e",
"body": null,
"is_bot": false,
"headline": "fix(charts): support instance-level overrides in argocd-apps (#357)",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-07-07T20:16:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ef910843764d2a597b3382a3b419e56b2dc26f44",
"body": "… in the gomodules group across 1 directory (#344)\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "fix(deps): bump github.com/guptarohit/asciigraph from 0.9.0 to 0.10.0…",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-07-07T20:12:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4d004518cbcae58f905b838717c64698e28b545b",
"body": "…the actions group (#353)\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "chore(ci): bump golangci/golangci-lint-action from 9.2.1 to 9.3.0 in …",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-07-07T20:07:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "27a12d482d0f424d311db2de2e7cd6ed1e0b45ff",
"body": "…#356)",
"is_bot": false,
"headline": "fix(config): use nested chart.name/chart.tag structure across cph02 (…",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-07-07T20:00:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "26ef721f1a4b14484a3e76c4278b95e6ea25fd16",
"body": "…system (#355)",
"is_bot": false,
"headline": "fix(config): use nested chart.name/chart.tag structure in monitoring-…",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-07-07T19:55:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "710bb7879050cd5daa4104494b6e67756a223e32",
"body": "…-apps (#354)",
"is_bot": false,
"headline": "feat(charts): support nested chart.name/chart.tag overrides in argocd…",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-07-07T19:19:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5bcd1016dcf83df3cbc36e1949c76164996d87da",
"body": null,
"is_bot": false,
"headline": "fix(config): bump speedtest exporter to v1.1.2 (#352)",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-07-03T22:07:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1da7f758e66ab41d35dc7918eee368bae30d3141",
"body": "…data in Loki (#351)",
"is_bot": false,
"headline": "fix(charts): explicitly enable log level detection as structured meta…",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-07-03T21:57:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f9cc73f088100bb9abf63cafd72725c4a2b18c3e",
"body": "…nfigurable (#350)",
"is_bot": false,
"headline": "fix(charts): gate HPA on autoscaling.enabled and make probe timing co…",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-07-03T21:34:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6c6f8fddabffd5bdc6524c3d5d3fc0c765c91351",
"body": "…points (#349)",
"is_bot": false,
"headline": "fix(config): bump speedtest exporter to v1.1.1 and use new health end…",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-07-03T21:17:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cd3db5bb2260571a48d67629d42bee51cedf048c",
"body": "…edtest-exporter (#348)",
"is_bot": false,
"headline": "fix(config): switch speedtest exporter to nicklasfrahm/prometheus-spe…",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-07-02T21:55:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "87dd6097a1e13fd953129b5f16e0b25bafe4e647",
"body": "Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(config): double speedtest-exporter scrape timeout to 120s (#347)",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-07-02T17:11:31Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "4b6cb833f480965a22e875a02904e99d64548fa0",
"body": "Signed-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "fix(deps): bump golang.org/x/net from 0.49.0 to 0.55.0 (#346)",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-07-02T16:52:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "00b080eb269a098fbbabc33e1598dc3d556055cf",
"body": "…roup (#345)\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "chore(ci): bump actions/setup-go from 6.4.0 to 6.5.0 in the actions g…",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-07-02T16:49:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4d1b9c44f80fc82b9a987fae6b1118fb68843878",
"body": "… (#343)",
"is_bot": false,
"headline": "fix(charts): correct OTEL gateway JWKS path and alloy-operator memory…",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-06-22T22:22:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "68f4fd4f6373f89f1ea8ccbc80f52121c36e648a",
"body": null,
"is_bot": false,
"headline": "fix(config): raise monitoring-system to privileged PodSecurity (#342)",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-06-22T22:06:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8beb9d889682bc98077e0169638d712fa0f12624",
"body": "…overy in service chart (#341)",
"is_bot": false,
"headline": "feat(charts): add monitoring-client chart and enable metrics autodisc…",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-06-22T21:54:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "34ab0ba1d922d1538e44d27c5b2a2a7212259fc1",
"body": "…sion (#338)",
"is_bot": false,
"headline": "feat(charts): add multitenancy_enabled and bump monitoring-server ver…",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-06-22T21:13:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "933bb443976dfd26337492eb596add0a0c09d421",
"body": "…#337)",
"is_bot": false,
"headline": "fix(config): move speedtest_exporter to monitoring-system namespace (…",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-06-22T21:05:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "273abd6678b8dd92bcc125d9115e4afd7068af8f",
"body": null,
"is_bot": false,
"headline": "feat(charts): wire Mimir into Grafana as a datasource (#336)",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-06-22T21:00:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c8c7b67b4e0a3b08c1efe05cea1ce778b6b81079",
"body": null,
"is_bot": false,
"headline": "feat(charts): add speedtest_exporter deployment config (#335)",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-06-22T20:54:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e0499b6d91115298bb3badae06443478f1721692",
"body": null,
"is_bot": false,
"headline": "feat(charts): add Mimir to the monitoring-server chart (#334)",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-06-22T20:45:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "34ecb8383d20ea781c55151bf3be4a6f5089aa13",
"body": null,
"is_bot": false,
"headline": "fix(config): drop the one-time Jaeger deleteDatasources directive (#330)",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-06-22T19:54:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "453c98ec1e95d281165eb6abd906fd39cce585d2",
"body": null,
"is_bot": false,
"headline": "fix(config): remove stale Jaeger datasource from grafana on cph02 (#329)",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-06-22T19:51:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fc9941cd74e4699f8d29050e405b28c4acb1a62d",
"body": "…im (#328)",
"is_bot": false,
"headline": "feat(charts): provision Loki bucket via a chart-owned ObjectBucketCla…",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-06-22T19:39:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "62e579ee233959987c03eab3b06f8e4dc3733e65",
"body": "…datasource (#316)",
"is_bot": false,
"headline": "feat(charts): add monitoring-server chart with Loki and wire Grafana …",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-06-22T18:46:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1bbaa46e144e50af9722fe9b9942198237385d4f",
"body": "Signed-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "chore(ci): bump actions/checkout from 6 to 7 in the actions group (#326)",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-06-22T18:29:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e3335f5d8ff43b983bec19bfe162ae59c422e2a5",
"body": "Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(charts): nest GPU profiles per model in llm chart (#327)",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-06-22T18:23:35Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "21219bfe88d5358286f230cffc16140aa9e43503",
"body": "Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(charts): enable JSON log output for tempo (#325)",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-06-18T22:22:21Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "03f62b6a46a4bb6a7d32f48cf80f0166d26c65b8",
"body": "…es (#324)\n\nCo-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(charts): enable tempo metrics-generator for TraceQL metrics queri…",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-06-18T22:16:20Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "c53376f491612a32aebe3c4e04669d96b1a6cd5b",
"body": "Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(charts): bump grafana cph02 deploy tag to match chart version (#322)",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-06-18T21:48:00Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "6b572abb74fc7231048a45ce2088138ddabe92ee",
"body": "Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(charts): replace jaeger tracing chart with tempo (#321)",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-06-18T21:41:12Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "999b1a955a784002603f6f7641f99605a084829a",
"body": null,
"is_bot": false,
"headline": "feat(charts): add jaeger tracing chart and deploy to cph02 (#320)",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-06-18T21:00:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c41158ce04056d8983cb6590a5ed5c03b1a15a75",
"body": "Signed-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "fix(deps): bump the gomodules group with 3 updates (#318)",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-06-17T19:40:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "138f41a056abdab49c472f73ad3147f4bee15d78",
"body": "…#317)",
"is_bot": false,
"headline": "feat(llm): tune gemma4 vLLM args and add request queue backpressure (…",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-06-17T19:36:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dc5716970abced326de260c0c1a22a87c8b6a6d4",
"body": "…king (#315)",
"is_bot": false,
"headline": "fix(llm): increase max-model-len for gemma4 and improve vLLM benchmar…",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-06-13T22:00:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cc53a98828372b69a03833ae308e30679bb4ea2c",
"body": "Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(llm): add qwen36-27b profile and remove cph02 deployment (#314)",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-06-11T19:12:16Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "8da772b1b7644f43a1aa9d6a7a4b1a862b70a2b4",
"body": "…(#313)",
"is_bot": false,
"headline": "feat(charts): bump oidc-discovery-proxy to 1.2.2 and deploy to cph02 …",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-06-11T18:41:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8fb6a5bff17b44024433ab97ad3c4c7258843594",
"body": "Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(charts): bump oidc-discovery-proxy to 1.2.1 (#312)",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-06-07T20:20:36Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "3ea24f32d81544df2e6f306f2d101ba22a390a46",
"body": "…nt (#311)",
"is_bot": false,
"headline": "fix(charts): decouple gateway LB advertisement from proxy pod placeme…",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-06-07T18:39:26Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "da481ca0511ff190269e5191b9412cbb81942ff2",
"body": "…#310)",
"is_bot": false,
"headline": "feat(llm): add per-credential ServiceAccount and token provisioning (…",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-06-07T17:32:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f202302cc287e5e57003e987a8d46db8039402d1",
"body": "Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(llm): bump vllm to v0.22.0 and deploy to cph02 (#308)",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-06-04T19:52:57Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "c395e1cdf14ae51651172fa785074a603be2f666",
"body": "Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(config): remove axon appset (#307)",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-06-04T19:48:18Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "5defd896a6e4bf6bf11e0ac88fb2df1708077714",
"body": "Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(llm): add GitOps deployment config for cph02 (#305)",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-06-04T19:29:59Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "83fc12dd849a587baa1e67b24240c3f5d403b7ad",
"body": "…ddress (#304)\n\nCo-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(charts): replace /28 pool with explicit CIDRs excluding network a…",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-06-04T19:12:23Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "8884cf3a19f0b8360ca3bd48b4f884b5f6803970",
"body": "… (#260)\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "fix(deps): bump the gomodules group across 1 directory with 4 updates…",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-06-03T22:18:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "de63c1670e7325d5e15c94fe95e7ebbbebadd8a9",
"body": "Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(charts): skip network and broadcast addresses in IP pool (#303)",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-06-03T22:15:30Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "8df138a187f502be94107833c3dbeb448ca90fd4",
"body": "…the actions group (#298)\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "chore(ci): bump golangci/golangci-lint-action from 9.2.0 to 9.2.1 in …",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-06-03T21:39:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "86fec247f6bbfc2f8a043282317927bf69d8a0de",
"body": "Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(llm): add JWT security policy and authentication README (#300)",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-06-03T21:36:09Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "a89eb95e1326dd7d4ab98d6da7786f390702c10e",
"body": "…gs (#299)\n\nCo-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(charts): remove gateway-crds-helm to resolve duplicate CRD warnin…",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-06-03T21:24:06Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "54388e893aecd7d482e861147d34d8486b52edb3",
"body": "Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(charts): add envoy-gateway umbrella chart (#296)",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-06-03T21:03:35Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "01d444dc40a08d5cbc06b4ef010bd9de5777ccba",
"body": "…y (#297)\n\nCo-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(charts): prevent OIDC redirect loop on Ceph Dashboard token expir…",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-05-19T22:26:25Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "eb1370b03965c8d29627440114f852d1e737e6f6",
"body": "Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(docs): document Ceph cluster config and Dashboard SSO (#295)",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-05-16T16:43:01Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "13f294a3e93b4d5b93390bf9ebaa69c7a9b4b658",
"body": "…er (#294)\n\nCo-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(charts): integrate Ceph Dashboard SSO proxy into rook-ceph-clust…",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-05-16T15:22:20Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "3c68708a9f8bb5d1f21fdbed3eca58f12ec423d1",
"body": "Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(config): disable oauth2-proxy for Ceph Dashboard on prd-cph02 (#293)",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-05-16T13:16:16Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "d4ea3ae9bb67d5d4c5f9c1162e5e9e40788fa6a5",
"body": "Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(charts): fix Ceph Dashboard SSO oauth2-proxy alpha config (#291)",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-05-16T13:11:05Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "54d275c6d933c99c2aecf073c5c0bafd8992f70d",
"body": "…ha config mode (#290)",
"is_bot": false,
"headline": "fix(charts): remove invalid oauth2-proxy CLI flags unsupported in alp…",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-05-15T23:59:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2c2dae4e853ecc32bc31e964028a866786dc603f",
"body": "…aders (#289)",
"is_bot": false,
"headline": "fix(charts): fix Ceph Dashboard SSO identity propagation via proxy he…",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-05-15T23:55:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7c9d0478faf5b22bbc50d332c69ac49aac2a6f70",
"body": "…ard OAuth2 SSO (#288)",
"is_bot": false,
"headline": "fix(charts): inject id_token and configure roles_path for Ceph Dashbo…",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-05-15T23:38:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "69804684d2d97467bffc0c03a349e00cf02675f8",
"body": null,
"is_bot": false,
"headline": "fix(charts): improve Ceph Dashboard SSO setup job robustness (#287)",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-05-15T22:55:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3eccb0eae65ff254ac4b1a569bbf7106bcbf5a59",
"body": "…ashboard (#286)",
"is_bot": false,
"headline": "feat(charts): add telemetry and SSO setup job log retention to Ceph D…",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-05-15T22:35:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d4ef13b6a6351d7b21d9738c3887cd1f2dae595d",
"body": "Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(charts): fix oauth2-proxy HTTPRoute port from 4180 to 80 (#285)",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-05-15T22:17:56Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "3a762912027383df53c0f51e9336a5fa49b10b44",
"body": "Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(config): increase mgr-sidecar memory limit to 128Mi (#284)",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-05-15T22:04:13Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "cb08d4da73e4e49bbcb073088cdfe9e6c836eb66",
"body": "Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(charts): fix oauth2-proxy alpha config schema (#283)",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-05-15T21:58:22Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "3c3aaa1664db80ea69bfe5551b5f3fcbb635a718",
"body": "Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(charts): move code-challenge-method back to extraArgs (#282)",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-05-15T21:48:51Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "c292e11945b7cb6ca5c7e374864099c3847d24bb",
"body": "… v1.19.5 (#281)\n\nCo-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(charts): fix oauth2-proxy alpha config schema and upgrade Rook to…",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-05-15T21:32:55Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "b8c8896619618c03969ca314a1c9dbfc01838677",
"body": "Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(charts): move oauth2-proxy provider config to alpha config (#280)",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-05-15T21:26:29Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "91e7f35b4907ffcbc22ce2526728c31e7b9924c0",
"body": "Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(charts): upgrade Ceph to v20.2.1 with OAuth2 SSO (#279)",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-05-15T21:09:02Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "3ff6efd45f93adfb52e6198400e796793603c6ee",
"body": "Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(charts): fix oauth2-proxy config for ceph dashboard OIDC (#277)",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-05-15T20:40:20Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "8cd6e31cc7cc11cffc9c758a2fd9369f4acdae78",
"body": "Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(config): bump argocd to 1.0.4 and rook-ceph-cluster to 0.3.2 (#276)",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-05-15T20:28:00Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "c88c8a0dc00ca6578170e33cb95b46751d055f54",
"body": "…ssions (#275)\n\nCo-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(charts): expand ArgoCD RBAC platform role with all explicit permi…",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-05-15T20:21:15Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "5e96826619789a6d43b3c349d0d8537a56ce393e",
"body": "…#274)\n\nCo-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(config): enable oauth2-proxy for rook-ceph-cluster on prd-cph02 (…",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-05-15T20:09:09Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "06af669ca58d3758d234e74074f1f5531079570c",
"body": "Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(charts): add oauth2-proxy OIDC/PKCE auth for Ceph Dashboard (#271)",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-05-15T20:03:26Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "74a58af476d9b8940f1e43fb222f789f35dcd6de",
"body": "Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(charts): add skatd OIDC client to Dex (#273)",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-05-14T14:31:00Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "e8e705da948d728e3762485446b8e48b3b8d61ae",
"body": "Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(charts): add groups_attribute_path to Grafana OAuth config (#270)",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-05-14T11:04:14Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "dbc262dec11d2bb5cbc3b7ab0a3e2dfb694a1dab",
"body": "… prd-cph02 (#269)\n\nCo-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(charts): tune PG counts and remove unused Grafana persistence for…",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-05-14T10:55:14Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "e57550ec9b15c28d6162f1c7bcce3e8bd943744a",
"body": "…class (#268)\n\nCo-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(charts): correct Grafana database wiring and persistence storage …",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-05-13T23:12:08Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "536202f8017e1c0d676f2ed4ee1312a3811c36fc",
"body": "…on (#267)\n\nCo-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(charts): correct Grafana database secret name and env var injecti…",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-05-13T23:05:35Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "15c67eb4689914939d906e7081b68dbea6a4e4c1",
"body": "… suffix (#266)\n\nCo-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(charts): correct CNPG secret and service name to include -cluster…",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-05-13T23:00:21Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "bc3984d60247f44b38259a691d652b2afc29601d",
"body": "Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(charts): scale Grafana to 2 replicas and fix CNPG config (#265)",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-05-13T22:56:02Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "0c3f09f9fd5665698ee6eab6a8f0b0fa97fbabb2",
"body": "Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(charts): add cnpg-cluster and grafana umbrella charts (#264)",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-05-13T22:44:26Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "41ee17f345a777690058b4cd6bd1e62f78e4ce99",
"body": "Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(charts): add CloudNativePG operator umbrella chart (#263)",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-05-13T21:48:41Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "6911ba972c1872acf052e277897f0d7bb4527d3c",
"body": "Co-authored-by: Nicklas Frahm <nicklas.frahm@gmail.com>\nCo-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(llm): update vLLM version and gemma4-26b profile configs (#258)",
"author_name": "Nicklas Frahm",
"author_login": "nfm-corti",
"committed_at": "2026-05-02T19:11:44Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "c627b9f42ce5b97aeabdf706e66f8c7236d83a58",
"body": "Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(llm): add gemma4-31b and qwen25-coder-32b profiles (#257)",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-04-28T20:21:34Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "8ffd62075d5114e3206fa08c5b9547a08741e104",
"body": null,
"is_bot": false,
"headline": "feat(config): update model configurations and gpu profiles (#255)",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-04-26T20:48:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4d454d1d560b8ca751e4c2151b607f96897d27bb",
"body": "Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(vllm-bench): add token throughput benchmark CLI (#254)",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-04-25T14:23:53Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "e49c8d1da53d29207361846cfd1c04b73d204bc4",
"body": "Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(tools): create improved CLI for cluster mgmt (#252)",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-04-19T21:01:49Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "1fcbf2f22dad7f994d885878c0cb9aed3f29093f",
"body": "Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(ci): skip image build for services without a Containerfile (#250)",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-04-18T18:35:19Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "545436e634395ad1e6659232b760ec75c5d458c8",
"body": "Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(ci): port monorepo CI/CD plumbing from moos (#249)",
"author_name": "Nicklas Frahm",
"author_login": "nicklasfrahm",
"committed_at": "2026-04-18T18:22:40Z",
"body_truncated": false,
"is_coding_agent": true
}
],
"releases_count": 100,
"commits_last_year": 243,
"latest_release_at": "2026-07-25T23:28:28Z",
"latest_release_tag": "v0.93.0",
"releases_from_tags": false,
"days_since_last_push": 0,
"active_weeks_last_year": 28,
"days_since_latest_release": 0,
"mean_days_between_releases": 3.7
},
"community": {
"has_readme": true,
"has_license": false,
"has_description": true,
"has_contributing": false,
"health_percentage": 25,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"ecosystem": {
"packages": [
{
"name": "github.com/nicklasfrahm-dev/platform",
"exists": true,
"license": null,
"keywords": [],
"ecosystem": "go",
"matches_repo": true,
"registry_url": "https://pkg.go.dev/github.com/nicklasfrahm-dev/platform",
"is_deprecated": false,
"latest_version": "v0.93.0",
"repository_url": "https://github.com/nicklasfrahm-dev/platform",
"versions_count": 252,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": null,
"monthly_downloads": null,
"first_published_at": null,
"latest_published_at": "2026-07-25T23:27:56Z",
"latest_version_yanked": null,
"days_since_latest_publish": 0
}
]
},
"popularity": {
"forks": 0,
"stars": 1,
"watchers": 0,
"fork_history": {
"days": [],
"complete": true,
"collected": 0,
"total_forks": 0
},
"star_history": null,
"open_issues_and_prs": 7
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [],
"has_llms_txt": false,
"has_dockerfile": false,
"has_mcp_signal": false,
"bootstrap_files": [
"Makefile"
],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [],
"toolchain_manifests": [
"go.mod"
],
"largest_source_bytes": 6895,
"source_files_sampled": 26,
"oversized_source_files": 0,
"agent_instruction_files": [
"AGENTS.md",
"CLAUDE.md"
],
"agent_instruction_max_bytes": 4298
},
"dependencies": {
"manifests": [
"go.mod"
],
"advisories": {
"error": null,
"scope": "repository_graph",
"source": "osv",
"findings": [
{
"name": "golang.org/x/net",
"direct": false,
"version": "v0.55.0",
"severity": "unknown",
"ecosystem": "go",
"cvss_score": null,
"advisory_ids": [
"GO-2026-5942"
],
"fixed_version": "0.56.0",
"advisory_count": 1,
"oldest_advisory_days": 11
},
{
"name": "golang.org/x/text",
"direct": false,
"version": "v0.37.0",
"severity": "unknown",
"ecosystem": "go",
"cvss_score": null,
"advisory_ids": [
"GO-2026-5970"
],
"fixed_version": "0.39.0",
"advisory_count": 1,
"oldest_advisory_days": 11
}
],
"collected": true,
"malicious": [],
"truncated": false,
"by_severity": {
"unknown": 2
},
"advisory_count": 2,
"affected_count": 2,
"assessed_count": 45,
"malicious_count": 0,
"assessed_package": null,
"unassessed_count": 0,
"direct_affected_count": 0
},
"ecosystems": [
"go"
],
"dependencies": [
{
"name": "github.com/guptarohit/asciigraph",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.10.0"
},
{
"name": "github.com/nicklasfrahm-dev/appkit",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.2.2"
},
{
"name": "github.com/spf13/cobra",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.10.2"
},
{
"name": "go.uber.org/zap",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.28.0"
},
{
"name": "gopkg.in/yaml.v3",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v3.0.1"
},
{
"name": "k8s.io/api",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.36.2"
},
{
"name": "k8s.io/apimachinery",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.36.2"
},
{
"name": "k8s.io/client-go",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.36.2"
}
],
"all_dependencies": {
"error": null,
"source": "github-sbom",
"packages": [
{
"name": "github.com/guptarohit/asciigraph",
"direct": true,
"version": "v0.10.0",
"ecosystem": "go"
},
{
"name": "github.com/nicklasfrahm-dev/appkit",
"direct": true,
"version": "v0.2.2",
"ecosystem": "go"
},
{
"name": "github.com/spf13/cobra",
"direct": true,
"version": "v1.10.2",
"ecosystem": "go"
},
{
"name": "go.uber.org/zap",
"direct": true,
"version": "v1.28.0",
"ecosystem": "go"
},
{
"name": "gopkg.in/yaml.v3",
"direct": true,
"version": "v3.0.1",
"ecosystem": "go"
},
{
"name": "k8s.io/api",
"direct": true,
"version": "v0.36.2",
"ecosystem": "go"
},
{
"name": "k8s.io/apimachinery",
"direct": true,
"version": "v0.36.2",
"ecosystem": "go"
},
{
"name": "k8s.io/client-go",
"direct": true,
"version": "v0.36.2",
"ecosystem": "go"
},
{
"name": "github.com/davecgh/go-spew",
"direct": false,
"version": "v1.1.2-0.20180830191138-d8f796af33cc",
"ecosystem": "go"
},
{
"name": "github.com/emicklei/go-restful/v3",
"direct": false,
"version": "v3.13.0",
"ecosystem": "go"
},
{
"name": "github.com/fxamacker/cbor/v2",
"direct": false,
"version": "v2.9.0",
"ecosystem": "go"
},
{
"name": "github.com/go-logr/logr",
"direct": false,
"version": "v1.4.3",
"ecosystem": "go"
},
{
"name": "github.com/go-openapi/jsonpointer",
"direct": false,
"version": "v0.21.0",
"ecosystem": "go"
},
{
"name": "github.com/go-openapi/jsonreference",
"direct": false,
"version": "v0.20.2",
"ecosystem": "go"
},
{
"name": "github.com/go-openapi/swag",
"direct": false,
"version": "v0.23.0",
"ecosystem": "go"
},
{
"name": "github.com/google/gnostic-models",
"direct": false,
"version": "v0.7.0",
"ecosystem": "go"
},
{
"name": "github.com/google/uuid",
"direct": false,
"version": "v1.6.0",
"ecosystem": "go"
},
{
"name": "github.com/inconshreveable/mousetrap",
"direct": false,
"version": "v1.1.0",
"ecosystem": "go"
},
{
"name": "github.com/josharian/intern",
"direct": false,
"version": "v1.0.0",
"ecosystem": "go"
},
{
"name": "github.com/json-iterator/go",
"direct": false,
"version": "v1.1.12",
"ecosystem": "go"
},
{
"name": "github.com/mailru/easyjson",
"direct": false,
"version": "v0.7.7",
"ecosystem": "go"
},
{
"name": "github.com/modern-go/concurrent",
"direct": false,
"version": "v0.0.0-20180306012644-bacd9c7ef1dd",
"ecosystem": "go"
},
{
"name": "github.com/modern-go/reflect2",
"direct": false,
"version": "v1.0.3-0.20250322232337-35a7c28c31ee",
"ecosystem": "go"
},
{
"name": "github.com/munnerz/goautoneg",
"direct": false,
"version": "v0.0.0-20191010083416-a7dc8b61c822",
"ecosystem": "go"
},
{
"name": "github.com/spf13/pflag",
"direct": false,
"version": "v1.0.9",
"ecosystem": "go"
},
{
"name": "github.com/x448/float16",
"direct": false,
"version": "v0.8.4",
"ecosystem": "go"
},
{
"name": "go.uber.org/multierr",
"direct": false,
"version": "v1.11.0",
"ecosystem": "go"
},
{
"name": "go.yaml.in/yaml/v2",
"direct": false,
"version": "v2.4.3",
"ecosystem": "go"
},
{
"name": "go.yaml.in/yaml/v3",
"direct": false,
"version": "v3.0.4",
"ecosystem": "go"
},
{
"name": "golang.org/x/net",
"direct": false,
"version": "v0.55.0",
"ecosystem": "go"
},
{
"name": "golang.org/x/oauth2",
"direct": false,
"version": "v0.34.0",
"ecosystem": "go"
},
{
"name": "golang.org/x/sys",
"direct": false,
"version": "v0.45.0",
"ecosystem": "go"
},
{
"name": "golang.org/x/term",
"direct": false,
"version": "v0.43.0",
"ecosystem": "go"
},
{
"name": "golang.org/x/text",
"direct": false,
"version": "v0.37.0",
"ecosystem": "go"
},
{
"name": "golang.org/x/time",
"direct": false,
"version": "v0.14.0",
"ecosystem": "go"
},
{
"name": "google.golang.org/protobuf",
"direct": false,
"version": "v1.36.12-0.20260120151049-f2248ac996af",
"ecosystem": "go"
},
{
"name": "gopkg.in/evanphx/json-patch.v4",
"direct": false,
"version": "v4.13.0",
"ecosystem": "go"
},
{
"name": "gopkg.in/inf.v0",
"direct": false,
"version": "v0.9.1",
"ecosystem": "go"
},
{
"name": "k8s.io/klog/v2",
"direct": false,
"version": "v2.140.0",
"ecosystem": "go"
},
{
"name": "k8s.io/kube-openapi",
"direct": false,
"version": "v0.0.0-20260317180543-43fb72c5454a",
"ecosystem": "go"
},
{
"name": "k8s.io/utils",
"direct": false,
"version": "v0.0.0-20260210185600-b8788abfbbc2",
"ecosystem": "go"
},
{
"name": "sigs.k8s.io/json",
"direct": false,
"version": "v0.0.0-20250730193827-2d320260d730",
"ecosystem": "go"
},
{
"name": "sigs.k8s.io/randfill",
"direct": false,
"version": "v1.0.0",
"ecosystem": "go"
},
{
"name": "sigs.k8s.io/structured-merge-diff/v6",
"direct": false,
"version": "v6.3.2",
"ecosystem": "go"
},
{
"name": "sigs.k8s.io/yaml",
"direct": false,
"version": "v1.6.0",
"ecosystem": "go"
}
],
"collected": true,
"truncated": false,
"total_count": 45,
"direct_count": 8,
"indirect_count": 37
}
},
"maintainership": {
"issues": {
"open_prs": 3,
"merged_prs": 310,
"open_issues": 4,
"closed_ratio": 0.6,
"closed_issues": 6,
"closed_unmerged_prs": 46
},
"bus_factor": 1,
"bot_contributors": 2,
"top_contributors": [
{
"type": "User",
"login": "nicklasfrahm",
"commits": 281,
"avatar_url": "https://avatars.githubusercontent.com/u/20382326?v=4"
},
{
"type": "User",
"login": "nfm-corti",
"commits": 1,
"avatar_url": "https://avatars.githubusercontent.com/u/201595295?v=4"
}
],
"contributors_sampled": 2,
"top_contributor_share": 0.996
},
"quality_signals": {
"has_ci": true,
"has_tests": false,
"ci_workflows": [
"ci.yaml",
"deploy.yaml",
"helm.yaml",
"opentofu.yaml",
"release.yaml"
],
"has_docs_dir": true,
"linter_configs": [
".golangci.yml"
],
"has_editorconfig": true,
"has_linter_config": true,
"has_precommit_config": false
},
"security_signals": {
"lockfiles": [
"go.sum"
],
"scorecard": {
"checks": [
{
"name": "Binary-Artifacts",
"score": 10,
"reason": "no binaries found in the repo",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
},
{
"name": "Branch-Protection",
"score": 4,
"reason": "branch protection is not maximal on development and all release branches",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
},
{
"name": "CI-Tests",
"score": 10,
"reason": "30 out of 30 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": 0,
"reason": "Found 0/26 approved changesets -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 10,
"reason": "project has 3 contributing companies or organizations -- score normalized to 10",
"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": 10,
"reason": "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": 0,
"reason": "license file not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
},
{
"name": "Maintained",
"score": 10,
"reason": "30 commit(s) and 8 issue activity found in the last 90 days -- score normalized to 10",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
},
{
"name": "Packaging",
"score": 10,
"reason": "packaging workflow detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
},
{
"name": "Pinned-Dependencies",
"score": 9,
"reason": "dependency not pinned by hash detected -- score normalized to 9",
"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": 8,
"reason": "2 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "4584e5c58ad2703d9a076c02cd41a5fa25223cc8",
"ran_at": "2026-07-26T05:06:25Z",
"aggregate_score": 5.7,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": false,
"has_dependabot_config": true
},
"contribution_flow": {
"collected": true,
"ci_last_run_at": "2026-07-25T23:28:37Z",
"oldest_open_prs": [
{
"number": 256,
"created_at": "2026-04-26T20:49:23Z",
"last_comment_at": "2026-04-26T21:08:47Z",
"last_comment_author": "github-actions"
},
{
"number": 261,
"created_at": "2026-05-11T19:48:08Z",
"last_comment_at": "2026-05-11T20:24:08Z",
"last_comment_author": "github-actions"
},
{
"number": 272,
"created_at": "2026-05-14T14:25:45Z",
"last_comment_at": "2026-05-14T14:34:46Z",
"last_comment_author": "github-actions"
}
],
"last_merged_pr_at": "2026-07-25T23:27:56Z",
"ci_last_conclusion": "FAILURE",
"oldest_open_issues": [
{
"number": 301,
"created_at": "2026-06-03T21:32:46Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 319,
"created_at": "2026-06-14T20:55:25Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 339,
"created_at": "2026-06-22T21:22:07Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 340,
"created_at": "2026-06-22T21:48:17Z",
"last_comment_at": null,
"last_comment_author": null
}
]
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/nicklasfrahm-dev/platform",
"host": "github.com",
"name": "platform",
"owner": "nicklasfrahm-dev"
},
"metrics": {
"overall": {
"key": "overall",
"band": "moderate",
"name": "Overall health",
"note": null,
"notes": [],
"value": 60,
"inputs": {
"security": 66,
"vitality": 90,
"community": 12,
"governance": 53,
"engineering": 76
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "excellent",
"name": "Vitality",
"value": 90,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "good",
"name": "Development activity",
"note": null,
"notes": [],
"value": 83,
"inputs": {
"commits_last_year": 243,
"human_commit_share": 0.92,
"days_since_last_push": 0,
"active_weeks_last_year": 28
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 0 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "push_recency",
"params": {
"days": 0
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "28/52 weeks with commits",
"points": 19.4,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 28
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "243 commits in the last year",
"points": 18,
"status": "met",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 243
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "30 commit(s) and 8 issue activity found in the last 90 days -- score normalized to 10",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "excellent",
"name": "Release discipline",
"note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"openssf_scorecard_signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 100,
"inputs": {
"releases_count": 100,
"latest_release_tag": "v0.93.0",
"releases_from_tags": false,
"days_since_latest_release": 0,
"mean_days_between_releases": 3.7
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "100 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 100
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 0 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 0
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~3.7 days",
"points": 27,
"status": "met",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 3.7
}
}
],
"max_points": 27
},
{
"key": "openssf_scorecard_signed_releases",
"name": "OpenSSF Scorecard: Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 10
}
]
},
{
"key": "abandonment",
"band": "excellent",
"name": "Abandonment",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"cap": null,
"state": "maintained",
"guards": [],
"signals": [],
"red_flag": false,
"multiplier_pct": 100,
"declared_reason": null,
"unverified_reason": null,
"unanswered_open_prs": null,
"unanswered_open_issues": null,
"days_since_last_merged_pr": null,
"days_since_last_human_commit": 0,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "last human commit 0 days ago",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_maintained",
"params": {
"days": 0
}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "critical",
"name": "Community & Adoption",
"value": 12,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "critical",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 1,
"inputs": {
"forks": 0,
"stars": 1,
"watchers": 0,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "1 stars",
"points": 0,
"status": "missed",
"details": [
{
"code": "stars",
"params": {
"count": 1
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "0 forks",
"points": 0,
"status": "missed",
"details": [
{
"code": "forks",
"params": {
"count": 0
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "0 watchers",
"points": 0,
"status": "missed",
"details": [
{
"code": "watchers",
"params": {
"count": 0
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "critical",
"name": "Community health",
"note": null,
"notes": [],
"value": 25,
"inputs": {
"has_readme": true,
"has_license": false,
"has_contributing": false,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 22.5,
"status": "met",
"details": [],
"max_points": 22.5
},
{
"key": "license",
"name": "License",
"detail": "no license file detected",
"points": 0,
"status": "missed",
"details": [
{
"code": "license_absent",
"params": {}
}
],
"max_points": 22.5
},
{
"key": "contributing_guide",
"name": "CONTRIBUTING guide",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 18
},
{
"key": "code_of_conduct",
"name": "Code of conduct",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 13.5
},
{
"key": "issue_template",
"name": "Issue template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.2
},
{
"key": "pr_template",
"name": "PR template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.3
}
]
}
],
"description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
},
{
"key": "governance",
"band": "moderate",
"name": "Sustainability & Governance",
"value": 53,
"weight": 0.24,
"metrics": [
{
"key": "maintainer_resilience",
"band": "critical",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 22,
"inputs": {
"bus_factor": 1,
"contributors_sampled": 2,
"top_contributor_share": 0.996
},
"components": [
{
"key": "bus_factor",
"name": "Bus factor",
"detail": "1 contributor(s) cover half of all commits",
"points": 9,
"status": "partial",
"details": [
{
"code": "bus_factor",
"params": {
"count": 1
}
}
],
"max_points": 54
},
{
"key": "commit_distribution",
"name": "Commit distribution",
"detail": "top contributor authored 100% of commits",
"points": 0.1,
"status": "partial",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 100
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "2 contributors",
"points": 2.7,
"status": "partial",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 2
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 3 contributing companies or organizations -- score normalized to 10",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "moderate",
"name": "Issue & PR responsiveness",
"note": null,
"notes": [],
"value": 61,
"inputs": {
"merged_prs": 310,
"open_issues": 4,
"closed_issues": 6,
"issue_closed_ratio": 0.6,
"closed_unmerged_prs": 46
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "60% of issues closed",
"points": 28.1,
"status": "partial",
"details": [
{
"code": "issues_closed_share",
"params": {
"share": 60
}
}
],
"max_points": 46.75
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "310/356 decided PRs merged",
"points": 33.3,
"status": "partial",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 310,
"decided": 356
}
}
],
"max_points": 38.25
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 0/26 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "at_risk",
"name": "Ownership & stewardship",
"note": null,
"notes": [],
"value": 45,
"inputs": {
"followers": 0,
"owner_type": "Organization",
"is_verified": null,
"owner_login": "nicklasfrahm-dev",
"public_repos": 7,
"account_age_days": 1538
},
"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": "0 followers of nicklasfrahm-dev",
"points": 0,
"status": "missed",
"details": [
{
"code": "owner_followers",
"params": {
"count": 0,
"login": "nicklasfrahm-dev"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "7 public repos, account ~4 yr old",
"points": 15,
"status": "partial",
"details": [
{
"code": "public_repos",
"params": {
"count": 7
}
},
{
"code": "account_age_years",
"params": {
"years": 4
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "excellent",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"packages": [
"github.com/nicklasfrahm-dev/platform"
],
"ecosystems": "go",
"any_deprecated": false,
"min_days_since_publish": 0
},
"components": [
{
"key": "published_resolvable",
"name": "Published & resolvable",
"detail": "1 package(s) on go",
"points": 25,
"status": "met",
"details": [
{
"code": "packages_published",
"params": {
"count": 1,
"ecosystems": "go"
}
}
],
"max_points": 25
},
{
"key": "publish_recency",
"name": "Publish recency",
"detail": "latest publish 0 days ago",
"points": 35,
"status": "met",
"details": [
{
"code": "publish_recency",
"params": {
"days": 0
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "252 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 252
}
}
],
"max_points": 20
},
{
"key": "not_deprecated",
"name": "Not deprecated",
"detail": "active, not deprecated or yanked",
"points": 20,
"status": "met",
"details": [
{
"code": "package_not_deprecated",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
},
{
"key": "engineering",
"band": "good",
"name": "Engineering Quality",
"value": 76,
"weight": 0.2,
"metrics": [
{
"key": "engineering_practices",
"band": "moderate",
"name": "Engineering practices",
"note": null,
"notes": [],
"value": 66,
"inputs": {
"has_ci": true,
"has_tests": false,
"has_editorconfig": true,
"has_linter_config": true,
"has_precommit_config": false
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": "5 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 5
}
}
],
"max_points": 24
},
{
"key": "tests_present",
"name": "Tests present",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 24
},
{
"key": "linter_config",
"name": "Linter config",
"detail": ".golangci.yml",
"points": 16,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".golangci.yml"
}
}
],
"max_points": 16
},
{
"key": "pre_commit_hooks",
"name": "Pre-commit hooks",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 9.6
},
{
"key": "editorconfig",
"name": ".editorconfig",
"detail": null,
"points": 6.4,
"status": "met",
"details": [],
"max_points": 6.4
},
{
"key": "openssf_scorecard_ci_tests",
"name": "OpenSSF Scorecard: CI-Tests",
"detail": "30 out of 30 merged PRs checked by a CI test -- score normalized to 10",
"points": 20,
"status": "met",
"details": [],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "excellent",
"name": "Documentation",
"note": null,
"notes": [],
"value": 90,
"inputs": {
"topics": [
"cloud",
"infrastructure",
"kubernetes",
"team-platform"
],
"has_wiki": false,
"homepage": "https://cloud.nicklasfrahm.dev/",
"has_readme": true,
"has_docs_dir": true,
"has_description": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 30,
"status": "met",
"details": [],
"max_points": 30
},
{
"key": "documentation_directory",
"name": "Documentation directory",
"detail": null,
"points": 25,
"status": "met",
"details": [],
"max_points": 25
},
{
"key": "documentation_homepage_site",
"name": "Documentation / homepage site",
"detail": "https://cloud.nicklasfrahm.dev/",
"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": "4 topics",
"points": 10,
"status": "met",
"details": [
{
"code": "topics_count",
"params": {
"count": 4
}
}
],
"max_points": 10
},
{
"key": "wiki",
"name": "Wiki",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
}
],
"description": "Are baseline engineering and documentation practices in place?"
},
{
"key": "security",
"band": "moderate",
"name": "Security",
"value": 66,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "moderate",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 57,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 17,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 1,
"scorecard_aggregate": 5.7
},
"components": [
{
"key": "binary_artifacts",
"name": "Binary-Artifacts",
"detail": "no binaries found in the repo",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "branch_protection",
"name": "Branch-Protection",
"detail": "branch protection is not maximal on development and all release branches",
"points": 3,
"status": "partial",
"details": [],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "30 out of 30 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 0/26 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 3 contributing companies or organizations -- score normalized to 10",
"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": "update tool detected",
"points": 7.5,
"status": "met",
"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 not detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "maintained",
"name": "Maintained",
"detail": "30 commit(s) and 8 issue activity found in the last 90 days -- score normalized to 10",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "packaging",
"name": "Packaging",
"detail": "packaging workflow detected",
"points": 5,
"status": "met",
"details": [],
"max_points": 5
},
{
"key": "pinned_dependencies",
"name": "Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 9",
"points": 4.5,
"status": "partial",
"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": "2 existing vulnerabilities detected",
"points": 6,
"status": "partial",
"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 45 resolved dependencies against OSV. 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": 45
}
},
{
"code": "advisories_repo_graph_caveat",
"params": {}
},
{
"code": "advisories_reachability",
"params": {}
}
],
"value": 100,
"inputs": {
"source": "osv",
"advisories": 2,
"affected_packages": 2,
"assessed_packages": 45,
"unassessed_packages": 0,
"affected_by_severity": "unknown 2",
"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": 45,
"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": 5
},
"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": "good",
"name": "AI Readiness",
"value": 84,
"weight": 0,
"metrics": [
{
"key": "ai_agent_context",
"band": "excellent",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 85,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 1,
"agent_instruction_files": [
"AGENTS.md",
"CLAUDE.md"
],
"agent_instruction_max_bytes": 4298
},
"components": [
{
"key": "agent_instructions",
"name": "Agent instructions",
"detail": "AGENTS.md, CLAUDE.md",
"points": 45,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "AGENTS.md, CLAUDE.md"
}
}
],
"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": "92 of 92 human commits state their intent (structured subject or explanatory body)",
"points": 40,
"status": "met",
"details": [
{
"code": "legible_history",
"params": {
"legible": 92,
"sampled": 92
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "good",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 77,
"inputs": {
"has_nix": false,
"has_tests": false,
"lockfiles": [
"go.sum"
],
"has_dockerfile": false,
"typed_language": true,
"bootstrap_files": [
"Makefile"
],
"has_devcontainer": false,
"has_linter_config": true,
"typecheck_configs": [],
"agent_commit_share": 0.51,
"toolchain_manifests": [
"go.mod"
],
"dependency_bot_commit_share": 0.08
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": "Makefile",
"points": 18,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "Makefile"
}
}
],
"max_points": 18
},
{
"key": "automated_tests",
"name": "Automated tests",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 22
},
{
"key": "lint_format_config",
"name": "Lint / format config",
"detail": ".golangci.yml",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".golangci.yml"
}
}
],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": "Go (statically typed)",
"points": 11,
"status": "met",
"details": [
{
"code": "statically_typed_language",
"params": {
"language": "Go"
}
}
],
"max_points": 11
},
{
"key": "reproducible_environment",
"name": "Reproducible environment",
"detail": "lockfile",
"points": 10,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "lockfile"
}
}
],
"max_points": 10
},
{
"key": "demonstrated_agent_practice",
"name": "Demonstrated agent practice",
"detail": "51 of the last 100 commits agent-authored or agent-credited",
"points": 10,
"status": "met",
"details": [
{
"code": "agent_authored_commits",
"params": {
"count": 51,
"sampled": 100
}
}
],
"max_points": 10
},
{
"key": "automated_maintenance",
"name": "Automated maintenance",
"detail": "8 of the last 100 commits are automated dependency updates",
"points": 8,
"status": "met",
"details": [
{
"code": "dependency_bot_commits",
"params": {
"count": 8,
"sampled": 100
}
}
],
"max_points": 8
},
{
"key": "openssf_scorecard_pinned_dependencies",
"name": "OpenSSF Scorecard: Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 9",
"points": 9,
"status": "partial",
"details": [],
"max_points": 10
}
]
},
{
"key": "ai_code_legibility",
"band": "excellent",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"primary_language": "Go",
"largest_source_bytes": 6895,
"source_files_sampled": 26,
"oversized_source_files": 0
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "Go (statically typed)",
"points": 45,
"status": "met",
"details": [
{
"code": "statically_typed_language",
"params": {
"language": "Go"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "0/26 source files over 60KB",
"points": 55,
"status": "met",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 26,
"oversized": 0
}
}
],
"max_points": 55
}
]
}
],
"description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
}
],
"metrics_version": "1.13.0"
},
"warnings": [
"Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token"
],
"report_type": "repository",
"generated_at": "2026-07-26T05:06:41.423296Z",
"schema_version": "0.27.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/n/nicklasfrahm-dev/platform.svg",
"full_name": "nicklasfrahm-dev/platform",
"license_state": "absent",
"license_spdx": null
}