JSON-Rohbericht maschinenlesbar
{
"data": {
"repo": {
"topics": [
"automation",
"network",
"network-automation",
"sdk",
"sdk-go"
],
"is_fork": false,
"size_kb": 191,
"has_wiki": true,
"homepage": "https://netorca.io/",
"languages": {
"Go": 295025,
"Makefile": 384
},
"pushed_at": "2026-07-28T10:46:22Z",
"created_at": "2025-04-11T11:34:02Z",
"owner_type": "Organization",
"updated_at": "2026-07-28T10:46:09Z",
"description": "Netorca Golang SDK is a lightweight library, enabling easy integration with your deployed Netorca instance for seamless service interactions.",
"is_archived": false,
"is_disabled": false,
"license_spdx": "MIT",
"default_branch": "main",
"license_spdx_raw": "MIT",
"primary_language": "Go",
"significant_languages": [
"Go"
]
},
"owner": {
"blog": null,
"name": null,
"type": "Organization",
"login": "netautomate",
"company": null,
"location": null,
"followers": 0,
"avatar_url": "https://avatars.githubusercontent.com/u/100794191?v=4",
"created_at": "2022-03-02T17:36:17Z",
"is_verified": null,
"public_repos": 8,
"account_age_days": 1609
},
"license": {
"state": "standard",
"spdx_id": "MIT",
"raw_spdx": "MIT",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "v0.1.3",
"kind": "patch",
"published_at": "2026-07-27T09:27:15Z"
},
{
"tag": "v0.1.2",
"kind": "patch",
"published_at": "2026-07-20T11:43:26Z"
},
{
"tag": "v0.1.1",
"kind": "patch",
"published_at": "2026-07-20T08:56:25Z"
},
{
"tag": "v0.1.0",
"kind": "minor",
"published_at": "2025-04-15T09:43:53Z"
}
],
"recent_commits": [
{
"oid": "2ede73592b72bf300b7533cdf39d11cfee6b0450",
"body": "fix: page through deployed item history instead of scanning one page",
"is_bot": false,
"headline": "Merge pull request #12 from netautomate/fix/deployed-item-pagination",
"author_name": "Wojtek Wierzchowski",
"author_login": "wierzcho",
"committed_at": "2026-07-28T10:45:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "68242ae6e87feeef339c4fd68a535d37a9803000",
"body": "FindDeployedItemForServiceItem asked for ordering=-version and took the max over\na single page, with a comment claiming the scan did not depend on the ordering\nbeing honoured. It did. A service item with more history than one page - 32\nversions against a page size of 20 has been seen on the sandbox \n[…]\n history with the highest version deliberately on the\nsecond page and unordered, which the old single-page scan would have missed.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix: page through deployed item history instead of scanning one page",
"author_name": "Wojtek Wierzchowski",
"author_login": "wierzcho",
"committed_at": "2026-07-27T09:34:15Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "6ded85f08ebe00a86ca1730fffbc6b2f338bea1a",
"body": "feat: close the read gaps blocking Terraform parity",
"is_bot": false,
"headline": "Merge pull request #11 from netautomate/feat/read-parity",
"author_name": "Wojtek Wierzchowski",
"author_login": "wierzcho",
"committed_at": "2026-07-27T09:14:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7ed0bffbf3258467c164d3f046cd90101555b84c",
"body": "The Terraform provider could not match the Ansible collection's query surface\nbecause several filters the platform accepts had no field on the request structs.\nEverything here was verified against the backend filtersets first: they extend\nLimitedFilterSet, which answers 400 \"Filter param not found.\"\n[…]\nnts.\n\ndecodeHistoryList is extracted into request.go and shared by the two history\ncalls, which were otherwise genuine duplicates.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat: close the read gaps blocking Terraform parity",
"author_name": "Wojtek Wierzchowski",
"author_login": "wierzcho",
"committed_at": "2026-07-20T13:19:24Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "9606f97b8282116d69c0df40467f9ae18e4421f6",
"body": "feat: complete the Pack API surface for v0.1.2",
"is_bot": false,
"headline": "Merge pull request #10 from netautomate/feat/pack-write-and-ai-resources",
"author_name": "Wojtek Wierzchowski",
"author_login": "wierzcho",
"committed_at": "2026-07-20T11:13:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8afcfd7260dea610d89a100f26bcc82952813624",
"body": "The two live test files depended on helpers in pkg/client/pack_integration_test.go,\nwhich this repo excludes from git via .git/info/exclude and has therefore never\ncommitted. They compiled locally and nowhere else: a fresh clone failed\n`go vet -tags=integration ./...` with \"undefined: liveClient\", a\n[…]\nateChangeInstanceOptionalFields covers the deployed_item omitempty fix.\n- The pack profile tests cover the configure-route change.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "test: drop the live integration suite from the branch",
"author_name": "Wojtek Wierzchowski",
"author_login": "wierzcho",
"committed_at": "2026-07-20T11:12:26Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "92fdc94cb5610ce3c25910077295f80989a75974",
"body": "Extends the live suite from 29 to all 50 exported client methods, and fixes the\nbug that doing so uncovered.\n\n**A state transition could not omit the deployed item.** UpdateChangeInstanceRequest\ntagged DeployedItem as `json:\"deployed_item\"` with no omitempty. json.RawMessage\nis a []byte, and a nil o\n[…]\n the instance left as found - declaration withdrawn, profile\ntunables restored, processors unchanged, no changes of ours dangling.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix: omit null deployed_item on a transition; cover every method live",
"author_name": "Wojtek Wierzchowski",
"author_login": "wierzcho",
"committed_at": "2026-07-20T10:48:32Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "7d2d3b2d5be7aa18300808f075f6dfcaf8479281",
"body": "…ve tests\n\nAdds a live integration suite covering everything v0.1.2 introduced, and a\nscripts/smoke.sh wrapper that loads .env and runs it:\n\n ./scripts/smoke.sh # read-only, safe against a shared instance\n ./scripts/smoke.sh --write # also the create/update/delete cycles\n\nRunning\n[…]\n LLM run.\n\nVerified against https://api.sandbox.netorca.io: 60 checks pass across the seven\nlive test groups, read-only and write.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix: route pack profile writes through the configure endpoint, add li…",
"author_name": "Wojtek Wierzchowski",
"author_login": "wierzcho",
"committed_at": "2026-07-20T10:11:34Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "58a04bd46fd2509c78989f1114e788054ee8f0bb",
"body": "Three classes of finding from the CI linter (v1.64.5):\n\n- funlen on seven table-driven test functions. Added //nolint:funlen with a\n reason, matching the convention pack_test.go already established - splitting\n them would separate the subtests from the fixtures they share.\n- lll on one line in pac\n[…]\ninter is built with Go 1.24 and cannot parse a Go\n1.26 stdlib, so a local run fails on typecheck before reaching any real finding.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "style: satisfy golangci-lint",
"author_name": "Wojtek Wierzchowski",
"author_login": "wierzcho",
"committed_at": "2026-07-20T10:00:07Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "4b92ed51c864607c24bcb95755812c947db60862",
"body": "Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs: document the pack write path, the new resources and typed errors",
"author_name": "Wojtek Wierzchowski",
"author_login": "wierzcho",
"committed_at": "2026-07-20T09:45:14Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "a8ea4d84df0e86a3ad2ccba1ed29acc38b901bb9",
"body": "Completes the set of endpoints an end-to-end Pack workflow needs. Before this,\nthe SDK could watch a pipeline but not set one up: there was no way to pick a\nmodel, configure the processors that do the rendering, or switch Pack on.\n\n- `ai_processors` (external/{pov}/ai_processors/) - full CRUD plus c\n[…]\noat64: the model declares them nullable, and collapsing an\nuncosted model onto 0 would report zero spend rather than missing data.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat: add AI processors, pack profiles, LLM models and deployed items",
"author_name": "Wojtek Wierzchowski",
"author_login": "wierzcho",
"committed_at": "2026-07-20T09:44:12Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "6a3e5a455be6e7b645380f059ffe6d511ab73669",
"body": "v0.1.1 covered the pack read loop: three stage getters and a retrigger, all\nhardcoded to the serviceowner POV and the service_item scope. That is enough to\nwatch a pipeline but not to drive one, so neither the provision stage nor the\nexecutor loop was reachable.\n\nAdds the write half:\n\n- `pack/pipeli\n[…]\npeline.Cost` is a json.Number: the API renders LLM spend as a decimal\nstring, and parsing it eagerly into a float would lose that.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat: add pack pipelines, stage triggers and pack data push",
"author_name": "Wojtek Wierzchowski",
"author_login": "wierzcho",
"committed_at": "2026-07-20T09:34:17Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "0e396d1b72e343cbbbfbc07894d6ae906acaf50f",
"body": "Every method built its own request by hand, which duplicated ~40 lines five\ntimes over and let three real bugs sit in the copies:\n\n- `http.Client{Timeout: c.RequestTimeout * time.Second}` multiplied a Duration\n by a Duration. At the 15s and 30s values this repo actually uses it overflowed\n int64 i\n[…]\nvited.\n\n`NewClient` now appends the version idempotently, so passing a base URL that\nalready ends in /v1 no longer yields /v1/v1/.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "refactor: add a shared request layer, typed errors and context support",
"author_name": "Wojtek Wierzchowski",
"author_login": "wierzcho",
"committed_at": "2026-07-20T09:34:03Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "44a777f84c1325ddee79198124a0d5aac477c088",
"body": "feat: add AI pack loop support",
"is_bot": false,
"headline": "Merge pull request #9 from netautomate/754-go-sdk-updates",
"author_name": "Wojtek Wierzchowski",
"author_login": "wierzcho",
"committed_at": "2026-07-09T13:55:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cd42ee2eaa416ebfd79dc44c52b6f407e59df678",
"body": null,
"is_bot": false,
"headline": "feat: add AI pack loop support",
"author_name": "Wojtek Wierzchowski",
"author_login": "wierzcho",
"committed_at": "2026-07-09T12:53:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cec8875c28924a2e76cddba81e37df7d85a1218d",
"body": null,
"is_bot": false,
"headline": "chore: update README.md",
"author_name": "Lukasz Jaworowski",
"author_login": "jawjawjaw",
"committed_at": "2025-04-14T16:50:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1e57c6328f586c52ac3112b97e723fb996500d87",
"body": null,
"is_bot": false,
"headline": "feat: add change instance updates (#5) (#8)",
"author_name": "Lukasz Jaworowski",
"author_login": "jawjawjaw",
"committed_at": "2025-04-14T16:28:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dda46cbe15aae5bf9288317773958166fe1238c5",
"body": "* feat: add change instances (#4)",
"is_bot": false,
"headline": "feat: add change instances (#4)",
"author_name": "Lukasz Jaworowski",
"author_login": "jawjawjaw",
"committed_at": "2025-04-14T08:48:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "868738b4d67fd01f5a51dd28215a35f12852a114",
"body": "feat: add service items (#3)",
"is_bot": false,
"headline": "feat: add service items (#3)",
"author_name": "Lukasz Jaworowski",
"author_login": "jawjawjaw",
"committed_at": "2025-04-11T14:06:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "14a9afa2fed2898aa211489c65edee135d904594",
"body": null,
"is_bot": false,
"headline": "fix: fix lint errs",
"author_name": "Lukasz Jaworowski",
"author_login": "jawjawjaw",
"committed_at": "2025-04-11T13:51:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cb5c8f9271aced1bd9fd7d6defbba7d88f86bfd8",
"body": null,
"is_bot": false,
"headline": "chore: use cache",
"author_name": "Lukasz Jaworowski",
"author_login": "jawjawjaw",
"committed_at": "2025-04-11T13:47:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "22de68ee35a42584d0c4c8f0ec786e5dee0f5845",
"body": null,
"is_bot": false,
"headline": "feat: add service items (#3)",
"author_name": "Lukasz Jaworowski",
"author_login": "jawjawjaw",
"committed_at": "2025-04-11T13:37:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b2af96bf4913e9959569eb619d730bac8324c317",
"body": "Project init",
"is_bot": false,
"headline": "Merge pull request #1 from netautomate/chore/project-init",
"author_name": "Lukasz Jaworowski",
"author_login": "jawjawjaw",
"committed_at": "2025-04-11T12:20:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9835a2c50b3a333a5139831b81298ec923e4bcde",
"body": "chore: add issue types",
"is_bot": false,
"headline": "Merge pull request #2 from netautomate/chore/add-templates",
"author_name": "Lukasz Jaworowski",
"author_login": "jawjawjaw",
"committed_at": "2025-04-11T12:03:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "671e8c312e7140b34c69c1fe964732988313df7a",
"body": null,
"is_bot": false,
"headline": "chore: add issue types",
"author_name": "Lukasz Jaworowski",
"author_login": "jawjawjaw",
"committed_at": "2025-04-11T12:03:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "51bdd079682661d33b5a1165c9b8b87595dbe21d",
"body": null,
"is_bot": false,
"headline": "feat: add config",
"author_name": "Lukasz Jaworowski",
"author_login": "jawjawjaw",
"committed_at": "2025-04-11T11:58:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1f271dfe679668af59aef0f1240d753b3768a27f",
"body": null,
"is_bot": false,
"headline": "Initial commit",
"author_name": "Lukasz Jaworowski",
"author_login": "jawjawjaw",
"committed_at": "2025-04-11T11:34:03Z",
"body_truncated": false,
"is_coding_agent": false
}
],
"releases_count": 4,
"commits_last_year": 14,
"latest_release_at": "2026-07-27T09:27:15Z",
"latest_release_tag": "v0.1.3",
"releases_from_tags": false,
"days_since_last_push": 0,
"active_weeks_last_year": 3,
"days_since_latest_release": 1,
"mean_days_between_releases": 156
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": false,
"health_percentage": 62,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"ecosystem": {
"packages": [
{
"name": "github.com/netautomate/netorca-go",
"exists": true,
"license": null,
"keywords": [],
"ecosystem": "go",
"matches_repo": true,
"registry_url": "https://pkg.go.dev/github.com/netautomate/netorca-go",
"is_deprecated": false,
"latest_version": "v0.1.4",
"repository_url": "https://github.com/netautomate/netorca-go",
"versions_count": 5,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": null,
"monthly_downloads": null,
"first_published_at": null,
"latest_published_at": "2026-07-28T10:45:35Z",
"latest_version_yanked": null,
"days_since_latest_publish": 0
}
]
},
"popularity": {
"forks": 0,
"stars": 0,
"watchers": 2,
"fork_history": {
"days": [],
"complete": true,
"collected": 0,
"total_forks": 0
},
"star_history": {
"days": [],
"complete": true,
"collected": 0,
"total_stars": 0,
"collected_at": null
},
"open_issues_and_prs": 0
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [],
"has_llms_txt": false,
"has_dockerfile": false,
"has_mcp_signal": false,
"bootstrap_files": [
"Makefile"
],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [],
"toolchain_manifests": [
"go.mod"
],
"largest_source_bytes": 37517,
"source_files_sampled": 24,
"oversized_source_files": 0,
"agent_instruction_files": [],
"agent_instruction_max_bytes": null
},
"dependencies": {
"manifests": [
"go.mod"
],
"advisories": {
"error": null,
"scope": "repository_graph",
"source": "osv",
"findings": [],
"collected": true,
"malicious": [],
"truncated": false,
"by_severity": {},
"advisory_count": 0,
"affected_count": 0,
"assessed_count": 6,
"malicious_count": 0,
"assessed_package": null,
"unassessed_count": 0,
"direct_affected_count": 0
},
"ecosystems": [
"go"
],
"dependencies": [
{
"name": "github.com/jarcoal/httpmock",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.4.0"
},
{
"name": "github.com/joho/godotenv",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.5.1"
},
{
"name": "github.com/stretchr/testify",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.10.0"
}
],
"all_dependencies": {
"error": null,
"source": "github-sbom",
"packages": [
{
"name": "github.com/jarcoal/httpmock",
"direct": true,
"version": "1.4.0",
"ecosystem": "go"
},
{
"name": "github.com/joho/godotenv",
"direct": true,
"version": "1.5.1",
"ecosystem": "go"
},
{
"name": "github.com/stretchr/testify",
"direct": true,
"version": "1.10.0",
"ecosystem": "go"
},
{
"name": "github.com/davecgh/go-spew",
"direct": false,
"version": "1.1.1",
"ecosystem": "go"
},
{
"name": "github.com/pmezard/go-difflib",
"direct": false,
"version": "1.0.0",
"ecosystem": "go"
},
{
"name": "gopkg.in/yaml.v3",
"direct": false,
"version": "3.0.1",
"ecosystem": "go"
}
],
"collected": true,
"truncated": false,
"total_count": 6,
"direct_count": 3,
"indirect_count": 3
}
},
"maintainership": {
"issues": {
"open_prs": 0,
"merged_prs": 9,
"open_issues": 0,
"closed_ratio": 1,
"closed_issues": 3,
"closed_unmerged_prs": 0
},
"bus_factor": 1,
"bot_contributors": 0,
"top_contributors": [
{
"type": "User",
"login": "wierzcho",
"commits": 15,
"avatar_url": "https://avatars.githubusercontent.com/u/11755451?v=4"
},
{
"type": "User",
"login": "jawjawjaw",
"commits": 12,
"avatar_url": "https://avatars.githubusercontent.com/u/19557209?v=4"
}
],
"contributors_sampled": 2,
"top_contributor_share": 0.556
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"ci.yml"
],
"has_docs_dir": false,
"linter_configs": [
".golangci.yml"
],
"has_editorconfig": false,
"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": 0,
"reason": "branch protection not enabled on development/release branches",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
},
{
"name": "CI-Tests",
"score": 5,
"reason": "4 out of 8 merged PRs checked by a CI test -- score normalized to 5",
"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 1/11 approved changesets -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 0,
"reason": "project has 0 contributing companies or organizations -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
},
{
"name": "Dangerous-Workflow",
"score": 10,
"reason": "no dangerous workflow patterns detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
},
{
"name": "Dependency-Update-Tool",
"score": 0,
"reason": "no update tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
},
{
"name": "Fuzzing",
"score": 0,
"reason": "project is not fuzzed",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
},
{
"name": "License",
"score": 10,
"reason": "license file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
},
{
"name": "Maintained",
"score": 10,
"reason": "15 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
},
{
"name": "Packaging",
"score": null,
"reason": "packaging workflow not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
},
{
"name": "Pinned-Dependencies",
"score": 0,
"reason": "dependency not pinned by hash detected -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
},
{
"name": "SAST",
"score": 0,
"reason": "SAST tool is not run on all commits -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
},
{
"name": "Security-Policy",
"score": 0,
"reason": "security policy file not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
},
{
"name": "Signed-Releases",
"score": null,
"reason": "no releases found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
},
{
"name": "Token-Permissions",
"score": 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": "2ede73592b72bf300b7533cdf39d11cfee6b0450",
"ran_at": "2026-07-28T18:11:23Z",
"aggregate_score": 3.9,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": false,
"has_dependabot_config": false
},
"contribution_flow": {
"collected": true,
"ci_last_run_at": "2026-07-28T10:46:14Z",
"oldest_open_prs": [],
"last_merged_pr_at": "2026-07-28T10:45:35Z",
"ci_last_conclusion": "SUCCESS",
"oldest_open_issues": []
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/netautomate/netorca-go",
"host": "github.com",
"name": "netorca-go",
"owner": "netautomate"
},
"metrics": {
"overall": {
"key": "overall",
"band": "moderate",
"name": "Overall health",
"note": null,
"notes": [],
"value": 57,
"inputs": {
"security": 51,
"vitality": 69,
"community": 24,
"governance": 59,
"engineering": 74
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "moderate",
"name": "Vitality",
"value": 69,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "moderate",
"name": "Development activity",
"note": null,
"notes": [],
"value": 59,
"inputs": {
"commits_last_year": 14,
"human_commit_share": 1,
"days_since_last_push": 0,
"active_weeks_last_year": 3
},
"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": "3/52 weeks with commits",
"points": 2.1,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 3
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "14 commits in the last year",
"points": 10.6,
"status": "partial",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 14
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "15 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "good",
"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": 84,
"inputs": {
"releases_count": 4,
"latest_release_tag": "v0.1.3",
"releases_from_tags": false,
"days_since_latest_release": 1,
"mean_days_between_releases": 156
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "4 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 4
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 1 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 1
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~156 days",
"points": 12.6,
"status": "partial",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 156
}
}
],
"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": 24,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "critical",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 1,
"inputs": {
"forks": 0,
"stars": 0,
"watchers": 2,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "0 stars",
"points": 0,
"status": "missed",
"details": [
{
"code": "stars",
"params": {
"count": 0
}
}
],
"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": "2 watchers",
"points": 0,
"status": "missed",
"details": [
{
"code": "watchers",
"params": {
"count": 2
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "moderate",
"name": "Community health",
"note": null,
"notes": [],
"value": 50,
"inputs": {
"has_readme": true,
"has_license": true,
"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": "recognized license (MIT)",
"points": 22.5,
"status": "met",
"details": [
{
"code": "license_standard",
"params": {}
},
{
"code": "license_spdx",
"params": {
"spdx": "MIT"
}
}
],
"max_points": 22.5
},
{
"key": "contributing_guide",
"name": "CONTRIBUTING guide",
"detail": null,
"points": 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": 59,
"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.556
},
"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 56% of commits",
"points": 10,
"status": "partial",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 56
}
}
],
"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 0 contributing companies or organizations -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "excellent",
"name": "Issue & PR responsiveness",
"note": null,
"notes": [],
"value": 85,
"inputs": {
"merged_prs": 9,
"open_issues": 0,
"closed_issues": 3,
"issue_closed_ratio": 1,
"closed_unmerged_prs": 0
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "100% of issues closed",
"points": 46.8,
"status": "met",
"details": [
{
"code": "issues_closed_share",
"params": {
"share": 100
}
}
],
"max_points": 46.75
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "9/9 decided PRs merged",
"points": 38.2,
"status": "met",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 9,
"decided": 9
}
}
],
"max_points": 38.25
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 1/11 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": 46,
"inputs": {
"followers": 0,
"owner_type": "Organization",
"is_verified": null,
"owner_login": "netautomate",
"public_repos": 8,
"account_age_days": 1609
},
"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 netautomate",
"points": 0,
"status": "missed",
"details": [
{
"code": "owner_followers",
"params": {
"count": 0,
"login": "netautomate"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "8 public repos, account ~4 yr old",
"points": 15.8,
"status": "partial",
"details": [
{
"code": "public_repos",
"params": {
"count": 8
}
},
{
"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/netautomate/netorca-go"
],
"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": "5 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 5
}
}
],
"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": 74,
"weight": 0.2,
"metrics": [
{
"key": "engineering_practices",
"band": "good",
"name": "Engineering practices",
"note": null,
"notes": [],
"value": 74,
"inputs": {
"has_ci": true,
"has_tests": true,
"has_editorconfig": false,
"has_linter_config": true,
"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": ".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": 0,
"status": "missed",
"details": [],
"max_points": 6.4
},
{
"key": "openssf_scorecard_ci_tests",
"name": "OpenSSF Scorecard: CI-Tests",
"detail": "4 out of 8 merged PRs checked by a CI test -- score normalized to 5",
"points": 10,
"status": "partial",
"details": [],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "good",
"name": "Documentation",
"note": null,
"notes": [],
"value": 75,
"inputs": {
"topics": [
"automation",
"network",
"network-automation",
"sdk",
"sdk-go"
],
"has_wiki": true,
"homepage": "https://netorca.io/",
"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://netorca.io/",
"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": "5 topics",
"points": 10,
"status": "met",
"details": [
{
"code": "topics_count",
"params": {
"count": 5
}
}
],
"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": 51,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "at_risk",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): Packaging, Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"packaging",
"signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 39,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 16,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 2,
"scorecard_aggregate": 3.9
},
"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 not enabled on development/release branches",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "4 out of 8 merged PRs checked by a CI test -- score normalized to 5",
"points": 1.2,
"status": "partial",
"details": [],
"max_points": 2.5
},
{
"key": "cii_best_practices",
"name": "CII-Best-Practices",
"detail": "no effort to earn an OpenSSF best practices badge detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "code_review",
"name": "Code-Review",
"detail": "Found 1/11 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 0 contributing companies or organizations -- score normalized to 0",
"points": 0,
"status": "missed",
"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": "15 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "packaging",
"name": "Packaging",
"detail": "packaging workflow not detected",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 5
},
{
"key": "pinned_dependencies",
"name": "Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "sast",
"name": "SAST",
"detail": "SAST tool is not run on all commits -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "security_policy",
"name": "Security-Policy",
"detail": "security policy file not detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "signed_releases",
"name": "Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "token_permissions",
"name": "Token-Permissions",
"detail": "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 6 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": 6
}
},
{
"code": "advisories_repo_graph_caveat",
"params": {}
},
{
"code": "advisories_reachability",
"params": {}
}
],
"value": 100,
"inputs": {
"source": "osv",
"advisories": 0,
"affected_packages": 0,
"assessed_packages": 6,
"unassessed_packages": 0,
"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": 6,
"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
}
]
}
],
"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": 70,
"weight": 0,
"metrics": [
{
"key": "ai_agent_context",
"band": "at_risk",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 40,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 0.963,
"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": "26 of 27 human commits state their intent (structured subject or explanatory body)",
"points": 40,
"status": "met",
"details": [
{
"code": "legible_history",
"params": {
"legible": 26,
"sampled": 27
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "good",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 82,
"inputs": {
"has_nix": false,
"has_tests": true,
"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.37,
"toolchain_manifests": [
"go.mod"
],
"dependency_bot_commit_share": 0
},
"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": 22,
"status": "met",
"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": "10 of the last 27 commits agent-authored or agent-credited",
"points": 10,
"status": "met",
"details": [
{
"code": "agent_authored_commits",
"params": {
"count": 10,
"sampled": 27
}
}
],
"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": "Go",
"largest_source_bytes": 37517,
"source_files_sampled": 24,
"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/24 source files over 60KB",
"points": 55,
"status": "met",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 24,
"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": [],
"report_type": "repository",
"generated_at": "2026-07-28T18:11:38.013906Z",
"schema_version": "0.27.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/n/netautomate/netorca-go.svg",
"full_name": "netautomate/netorca-go",
"license_state": "standard",
"license_spdx": "MIT"
}