Raw JSON report machine-readable
{
"data": {
"repo": {
"topics": [],
"is_fork": false,
"size_kb": 7840,
"has_wiki": true,
"homepage": null,
"languages": {
"C": 2362515,
"Go": 2686510,
"C++": 10431,
"CSS": 53495,
"HTML": 1073,
"Shell": 7616,
"Python": 47372,
"Makefile": 19239,
"Solidity": 1463,
"JavaScript": 23947,
"TypeScript": 305153
},
"pushed_at": "2026-07-23T13:45:30Z",
"created_at": "2026-04-22T10:41:28Z",
"owner_type": "User",
"updated_at": "2026-07-20T08:07:41Z",
"description": null,
"is_archived": false,
"is_disabled": false,
"license_spdx": "AGPL-3.0",
"default_branch": "main",
"license_spdx_raw": "AGPL-3.0",
"primary_language": "Go",
"significant_languages": [
"Go",
"C"
]
},
"owner": {
"blog": null,
"name": "mhha(WM)",
"type": "User",
"login": "0xmhha",
"company": null,
"location": "Seoul, Korea",
"followers": 3,
"avatar_url": "https://avatars.githubusercontent.com/u/82016792?v=4",
"created_at": "2021-04-06T05:47:21Z",
"is_verified": null,
"public_repos": 81,
"account_age_days": 1935
},
"license": {
"state": "standard",
"spdx_id": "AGPL-3.0",
"raw_spdx": "AGPL-3.0",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "v0.1.0",
"kind": "minor",
"published_at": "2026-07-18T17:04:47Z"
}
],
"recent_commits": [
{
"oid": "ddb2bff04ce4f22f1851d5e885f555e7ff3b1bcc",
"body": "Remove stale facts and align with the tree (code + git are ground truth):\n\n- Languages: add Protobuf (four parsers); clarify Go uses go/packages,\n TS/Solidity use tree-sitter.\n- Schema: 33 node kinds -> 37 node + 43 edge kinds across six axes; link SCHEMA.\n- MCP surface noted as 10 tools; increment\n[…]\nproduction\n surfaces (build/serve/mcp/eval-retrieval/audit) and split supporting\n commands (benchmark/validate/export-*/watch).\n- Documentation: add VISION (start here) and DOC-MAP (index) pointers.",
"is_bot": false,
"headline": "docs: refresh README to match current code (#66)",
"author_name": "mhha(WM)",
"author_login": "0xmhha",
"committed_at": "2026-07-18T16:58:15Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "81d6ff091614cd18f27b5b0198a899aa042807f4",
"body": "Bumps [actions/setup-go](https://github.com/actions/setup-go) from 6 to 7.\n- [Release notes](https://github.com/actions/setup-go/releases)\n- [Commits](https://github.com/actions/setup-go/compare/v6...v7)\n\n---\nupdated-dependencies:\n- dependency-name: actions/setup-go\n dependency-version: '7'\n depen\n[…]\nirect:production\n update-type: version-update:semver-major\n...\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)(deps): bump actions/setup-go from 6 to 7 (#61)",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-07-18T16:30:11Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "dd7f44a1dcd1792f38063e3c192e156955496aff",
"body": "Bumps [actions/setup-node](https://github.com/actions/setup-node) from 6 to 7.\n- [Release notes](https://github.com/actions/setup-node/releases)\n- [Commits](https://github.com/actions/setup-node/compare/v6...v7)\n\n---\nupdated-dependencies:\n- dependency-name: actions/setup-node\n dependency-version: '\n[…]\nirect:production\n update-type: version-update:semver-major\n...\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)(deps): bump actions/setup-node from 6 to 7 (#60)",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-07-18T16:30:07Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "d1c53146906adb213033cd89aae0c774b89365fe",
"body": "Bumps the npm-deps group in /web/viewer-next with 2 updates: [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) and [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint).\n\n\nUpdates `\n[…]\ne: version-update:semver-minor\n dependency-group: npm-deps\n...\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(deps)(deps-dev): bump the npm-deps group (#63)",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-07-18T16:30:04Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "9f4ba674c2d2751727c5927b1f74a4c89abfb1d9",
"body": "Bumps the go-deps group with 1 update: [modernc.org/sqlite](https://gitlab.com/cznic/sqlite).\n\n\nUpdates `modernc.org/sqlite` from 1.53.0 to 1.54.0\n- [Changelog](https://gitlab.com/cznic/sqlite/blob/master/CHANGELOG.md)\n- [Commits](https://gitlab.com/cznic/sqlite/compare/v1.53.0...v1.54.0)\n\n---\nupdat\n[…]\npe: version-update:semver-minor\n dependency-group: go-deps\n...\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(deps)(deps): bump modernc.org/sqlite in the go-deps group (#62)",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-07-18T16:30:01Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "afd9a8448abd9a3cb6cb85c426451a011cf0b955",
"body": "Verify every \"current state\" claim against the tree and correct the drift\nthat accumulated since May. Ground truth = code + git.\n\nArchive completed status/spec docs (git mv to docs/archive/, with a banner\nnoting why each is superseded):\n- PROJECT-OVERVIEW, PROJECT-BLUEPRINT-ALIGNMENT: durable vision\n[…]\n1-W3 as landed.\n\nCarry the only genuinely unimplemented design items into CONTINUITY: W4\nmessage-queue pub/sub and concurrency Stage 2 (SSA). Update DOC-MAP index and\nre-point all links to moved docs.",
"is_bot": false,
"headline": "docs: consolidate docs/ against code + git (3-tier discipline) (#65)",
"author_name": "mhha(WM)",
"author_login": "0xmhha",
"committed_at": "2026-07-18T16:00:33Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "c9858ea218ca8229f82dfc0eb9a275cd696f3269",
"body": "…ole live status (#59)\n\nThe reindex/graph_digest coordination and the ckg_node_id retirement are closed\nand there are no open CKG code items, so their Tier 3 docs are disposable. Move\nfour to docs/archive/ with completion notes (supersede, don't delete):\ncoordination-response-ckg-2026-06-29, coordin\n[…]\nrred, D1-D3 other-session) and fix its stale next-action queue. Update\nDOC-MAP (Tier 3 now = CONTINUITY only) and repoint the ADR-0002 path references\nto the archived location. No broken links remain.",
"is_bot": false,
"headline": "docs: archive completed coordination/status docs; CONTINUITY is the s…",
"author_name": "mhha(WM)",
"author_login": "0xmhha",
"committed_at": "2026-07-15T11:19:49Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "8266bb42c37f644eb5cf30b2544f90b4db143eb3",
"body": "B2 landed in #57: eval/ckv-mirror (12/12) + eval/stablenet-keyword (8/8). Update\nthe 2026-07-15 snapshot — no open CKG code items remain; only optional (C1) and\nother-session (D1-D3) items are left.",
"is_bot": false,
"headline": "docs: mark B2 (ckg-NEW-5 keyword-retrieval eval) complete (#58)",
"author_name": "mhha(WM)",
"author_login": "0xmhha",
"committed_at": "2026-07-15T10:17:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "39d5434f7c2efdfd797a930f648a201c896ff1fb",
"body": "…et corpus (ckg-NEW-5) (#57)\n\n* eval: add CKV fixture mirror (ckg-NEW-5 Stage B, stage 1)\n\nAdd an LLM-free keyword-retrieval eval that mirrors CKV's fixtures on the ckg\nside so the two engines can be cross-referenced on one query set over one corpus.\nCKV scores natural-language intents (semantic) ag\n[…]\nd) over WBFT/gov/systemcontracts domain symbols — the AND\nprobes exercise the precision surface on a real corpus (a token pair narrows\n183k nodes to an exact cluster). Baseline: 8/8 pass, R=P=F1=1.00.",
"is_bot": false,
"headline": "eval: keyword-retrieval measurement — CKV fixture mirror + go-stablen…",
"author_name": "mhha(WM)",
"author_login": "0xmhha",
"committed_at": "2026-07-15T08:57:03Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "6037561fe89251458727d349a26b98128d738ca3",
"body": "Reconcile the status doc against code+git. The 07-11 snapshot listed B1\n(Korean/CJK graceful-degradation test) and B3 (internal/mcp -> pkg/mcphandlers\nT-14b shim) as open, but both had already landed before it (75aeb60, 85f6705)\n— verified and marked done. Reflect #55 (scripts/index-project.sh MAIN_\n[…]\nld recipe superseding the static\nfilter. The only real open CKG item is B1, the Stage B eval-harness extension\n(ckv-fixture mirror + LLM measurement), which is an optional eval surface, not\na blocker.",
"is_bot": false,
"headline": "docs: refresh remaining-work snapshot to 2026-07-15 (#56)",
"author_name": "mhha(WM)",
"author_login": "0xmhha",
"committed_at": "2026-07-15T05:56:45Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "bf59fdb2eff55cc7a25a8379da88bf9716b705a5",
"body": "…G (#55)\n\nAdd an optional binary-scoping mode to scripts/index-project.sh so the graph\ncan be restricted to exactly what a given binary compiles, instead of the whole\n`go build ./...` set.\n\n- MAIN_PKG (e.g. ./cmd/gstable): generate a --files-from include list from\n `go list -deps <MAIN_PKG>` (in-mo\n[…]\nop\n test mocks under systemcontracts/**/test/**.\n\nThe filter is deterministic per commit. Note that --files-from restricts the\nparsers only; the temporal pass still records history for deleted files.",
"is_bot": false,
"headline": "feat(index-project): scope graph to binary-reachable code via MAIN_PK…",
"author_name": "mhha(WM)",
"author_login": "0xmhha",
"committed_at": "2026-07-11T13:03:49Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "71a8dcd9376eb3c7405f4d4e3ed91405df7ca5f7",
"body": "A small wrapper around `ckg build` that pins the choices that were\npreviously re-derived by hand each run — languages, test inclusion, cache\npolicy, and output path — so the same source always yields the same graph\n(no AI in the loop). Follows the staged composition in ADR-0002: the\nproduction build set first, test files as an overlay that never overrides\nproduction resolution. Prints a manifest summary afterward so a build that\nsilently dropped a language or test files is visible immediately.",
"is_bot": false,
"headline": "build: add scripts/index-project.sh for reproducible graph builds",
"author_name": "0xmhha",
"author_login": "0xmhha",
"committed_at": "2026-07-11T11:43:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "202e37b0e552ee7ff67c2116bea17182ae33d1ae",
"body": "Reconcile the status docs against code + git after the #53 landing and\ntoday's CI/dependency work:\n\n- CAPABILITY-AUDIT: the awaits (W-B) and overrides (W-C) edges are no\n longer unemitted \"slots\" — both are produced in a real build (verified:\n a graph of async TS / a Sol override yields those edge\n[…]\nfresh the queue and the\n header date, and point at the new snapshot.\n- coordination-reindex: add a current-status column showing Q1/Q2/Q6 done.\n- DOC-MAP: track the snapshot rename.\n\nNo code changes.",
"is_bot": false,
"headline": "docs: refresh remaining-work snapshot and correct stale status",
"author_name": "0xmhha",
"author_login": "0xmhha",
"committed_at": "2026-07-11T11:40:24Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "eb6a9da8cdcce0e507cd73b7778e83174fd34717",
"body": "…er-next (#48)\n\n* chore(deps)(deps-dev): bump eslint in /web/viewer-next\n\nBumps [eslint](https://github.com/eslint/eslint) from 9.39.4 to 10.7.0.\n- [Release notes](https://github.com/eslint/eslint/releases)\n- [Commits](https://github.com/eslint/eslint/compare/v9.39.4...v10.7.0)\n\n---\nupdated-dependen\n[…]\n as before.\n\n---------\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: 0xmhha <mhha@wemade.com>",
"is_bot": true,
"headline": "chore(deps)(deps-dev): bump eslint from 9.39.4 to 10.7.0 in /web/view…",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-07-11T11:18:26Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "a45b79e3d884a0a17b18f5a17620aab1b553c53f",
"body": "…ext (#49)\n\n* chore(deps)(deps): bump next from 15.5.18 to 16.2.10 in /web/viewer-next\n\nBumps [next](https://github.com/vercel/next.js) from 15.5.18 to 16.2.10.\n- [Release notes](https://github.com/vercel/next.js/releases)\n- [Commits](https://github.com/vercel/next.js/compare/v15.5.18...v16.2.10)\n\n-\n[…]\no include).\n\n---------\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: 0xmhha <mhha@wemade.com>",
"is_bot": true,
"headline": "chore(deps)(deps): bump next from 15.5.18 to 16.2.10 in /web/viewer-n…",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-07-11T11:04:47Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "48eb371dcd6dcd8ff4418420ed3d80ab195fd8c5",
"body": "…updates (#52)\n\nBumps the npm-deps group with 5 updates in the /web/viewer-next directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [three](https://github.com/mrdoob/three.js) | `0.185.0` | `0.185.1` |\n| [@types/three](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/three) |\n[…]\nned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: mhha(WM) <82016792+0xmhha@users.noreply.github.com>",
"is_bot": true,
"headline": "chore(deps)(deps): bump the npm-deps group across 1 directory with 5 …",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-07-11T10:38:01Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "d93f25775670cfdefedf804f587976a0eb99c527",
"body": "Bumps the go-deps group with 2 updates: [github.com/mark3labs/mcp-go](https://github.com/mark3labs/mcp-go) and [golang.org/x/tools](https://github.com/golang/tools).\n\n\nUpdates `github.com/mark3labs/mcp-go` from 0.55.1 to 0.56.0\n- [Release notes](https://github.com/mark3labs/mcp-go/releases)\n- [Commi\n[…]\nned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: mhha(WM) <82016792+0xmhha@users.noreply.github.com>",
"is_bot": true,
"headline": "chore(deps)(deps): bump the go-deps group with 2 updates (#51)",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-07-11T10:26:53Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "1a4a78fd66c6de4e69dd9edbd26d965ec8ac77e9",
"body": "…out (#54)\n\nTwo independent CI failures on the `ci` workflow:\n\n- audit: govulncheck flagged GO-2026-5856 (crypto/tls), present in\n go1.25.11 and fixed in go1.25.12. Bump the pinned setup-go version\n (5 call sites) and the go.mod toolchain to go1.25.12 so both CI and\n local `make audit` compile ag\n[…]\npec still matched only /^(LANG|COMMUNITY)$/ and\n timed out. Widen the locator regex to include TYPE.\n\nVerified locally: `make audit` reports no vulnerabilities;\ndiag-7-complaints spec passes (11/11).",
"is_bot": false,
"headline": "fix(ci): resolve govulncheck GO-2026-5856 and smoke color-toggle time…",
"author_name": "mhha(WM)",
"author_login": "0xmhha",
"committed_at": "2026-07-11T09:56:38Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "b0488a8fc509d38a3be34c6d637be95534dfb148",
"body": "… consolidation (#53)\n\n* docs: add ckg_node_id retirement pointer (canonical_id consolidation)\n\nPointer to the cross-repo master plan (code-knowledge-system/docs/retire-ckg-node-id.md). CKG has no code change: nodes.id stays as the internal PK; the retired ckg_node_id was an external name used only \n[…]\ncanonical_id consolidation is a ckv+cks change, both in\nprogress in dedicated sessions. ckg portion stays closed (no code change,\nnodes.id kept) and this branch can PR independently of those sessions.",
"is_bot": false,
"headline": "feat: graph_digest pin anchor + atomic cold rebuild; canonical_id/doc…",
"author_name": "mhha(WM)",
"author_login": "0xmhha",
"committed_at": "2026-07-10T08:32:22Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "45eefb04ec038cdc520ad6071c4f7bd710223554",
"body": "`make build` previously forced the Next.js viewer build (npm install +\nstatic export) on every iteration even when only Go code changed. Split\nthe targets so the common path is fast:\n\n- build: Go binary only (embedded viewer stays the tracked stub)\n- build-full: viewer + embed + stub restore (the ol\n[…]\nI (README quickstart, viewer README,\ndev-loop docs) now point at build-full.\n\nAlso fix a stale CLAUDE.md rule: commits carry no Co-Authored-By\ntrailer, matching git history and docs/CODE-STRUCTURE.md.",
"is_bot": false,
"headline": "build: make `build` Go-only; move viewer embed to `build-full` (#50)",
"author_name": "mhha(WM)",
"author_login": "0xmhha",
"committed_at": "2026-07-05T01:37:08Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "f4b5be89f7df43f9a1739c03716efaf63ada985b",
"body": "…, legend audit\n\nLayout as the question you ask (force = what clusters / flow = what\ncalls what):\n- Promote dagMode to a global FORCE/FLOW toggle (TopBar, persisted,\n 'm'-key untouched); flow builds a filtered dataset so hidden edge\n types (contains/defines) cannot distort DAG level assignment\n- C\n[…]\nte as the canvas\n (typeColorCss) so legend and render cannot drift; caption notes 2D\n shapes vs 3D primitives; default size 220 → 240x420 (versioned key)\n- Fix duplicate React keys for reused shapes",
"is_bot": false,
"headline": "feat(viewer-next): flow (DAG) layout mode, brighter community palette…",
"author_name": "mhha(WM)",
"author_login": "0xmhha",
"committed_at": "2026-07-03T08:06:04Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "c2b2714bb3bc0fc39be28780652b06d9fcbe01a8",
"body": "…-stack overflow",
"is_bot": false,
"headline": "fix(viewer-next): append large edge batches with a loop to avoid call…",
"author_name": "mhha(WM)",
"author_login": "0xmhha",
"committed_at": "2026-07-03T05:46:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4c121afbf73e64bccd8244abcf97e27f76d045a2",
"body": "Projector-style live feedback: every keystroke substring-matches the\nloaded nodes client-side (no fetch, no view change) and tints matches\nwarm red on the canvas; debounced backend results union in when they\nland. Highlight is a shared-material swap in 3D and a fill override in\n2D (explicit refresh covers the idle 2D engine), clearing back to\npalette colors the moment the query empties.",
"is_bot": false,
"headline": "feat(viewer-next): as-you-type search highlight on the canvas",
"author_name": "mhha(WM)",
"author_login": "0xmhha",
"committed_at": "2026-07-02T12:05:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f1b2368693c466adbe3f446cb09d20bdcd6c4d6d",
"body": "…lity\n\nPerformance (parity with raw 3d-force-graph):\n- Share cached Lambert materials keyed by (color, opacity) instead of a\n fresh PBR MeshStandardMaterial per node; appearance changes swap cache\n entries, never mutate shared materials\n- Keep graphData identity stable: full dataset feeds the sim \n[…]\nthem toward black; colors never change with selection state\n- Auto zoomToFit frames the remaining subgraph on search-pick/list-pick\n\nFixes:\n- Ripple no longer resets usage-scaled nodes to uniform size",
"is_bot": false,
"headline": "feat(viewer-next): perf overhaul, type-based styling, focus-as-visibi…",
"author_name": "mhha(WM)",
"author_login": "0xmhha",
"committed_at": "2026-07-02T10:41:39Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "2c871a6f01581b599e7282e65f799ecf82fa2c5f",
"body": "* docs: republish canonical graph as the filtered pr-77-2 build\n\nThe published canonical graph was the whole-tree /tmp build (--lang=auto, sha\n16ee6fb7, go/sol/ts/proto). It is superseded by the binary-scope build:\nanalysis-test-3 @ 0bf2f4d1b with --files-from stablenet-files-with-tests.json\n(go+sol\n[…]\n2026-06-19-symbol-identity.md. Refresh CONTINUITY.md to the current\nstate (schema 1.23, ADR-0001..0003, canonical corpus filters) and update DOC-MAP\n+ the ADR path references to the archived location.",
"is_bot": false,
"headline": "docs: archive completed symbol-identity status docs (#46)",
"author_name": "mhha(WM)",
"author_login": "0xmhha",
"committed_at": "2026-06-30T11:12:49Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "3ada0adada04349715a056bf3278e2bb18c06bc0",
"body": "Quick start only showed a bare 'ckg build --src --out'. Add a 'Building a graph'\nsection covering --lang, --at-commit (reproducible commit-pinned builds via git\nworktree), and --files-from filtering with the two ready-made stablenet filters\n(tests excluded vs included). Note build determinism (ADR-0002) and mark the\nPostgreSQL mentions deprecated (ADR-0003).",
"is_bot": false,
"headline": "docs(readme): add a graph-build usage section (#45)",
"author_name": "mhha(WM)",
"author_login": "0xmhha",
"committed_at": "2026-06-30T05:22:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7f13fa83073dc0fb0b8a54d808abc0eeb0f0d348",
"body": "stablenet-files.json excludes tests (**/*_test.go) for a clean retrieval-eval\ncorpus. Knowledge-data builds want the binary-scope dirs WITH their _test.go for\nthe few-shot value of test code. Add stablenet-files-with-tests.json (dir/*.go\nglobs, no test exclude) and document when to use each in the README.",
"is_bot": false,
"headline": "eval: add test-including stablenet --files-from filter (#44)",
"author_name": "mhha(WM)",
"author_login": "0xmhha",
"committed_at": "2026-06-30T05:06:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9034f8f479d4bf906e4f204195355adb1c637599",
"body": "…res (ADR-0003) (#43)\n\n* docs: record CKG decisions on coding-agent D-1..D-5 and convergence follow-ups\n\nDecide the CKG-owned coordination items: D-1 agree to pin the reindex commit to\n0bf2f4d1b (exists in both go-stablenet and test/pr-77; graph is deterministic so\none build covers all three parties\n[…]\nuplicate caveat stays covered by the buildpipe\nunit test and the >=1.19 population gate by ckv's hasPopulatedCanonical; the ckv\nhalf (a chunk inherits the identical id) remains the ckv session's work.",
"is_bot": false,
"headline": "feat: deterministic Go package ownership (ADR-0002) + deprecate Postg…",
"author_name": "mhha(WM)",
"author_login": "0xmhha",
"committed_at": "2026-06-29T12:40:09Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "90f4c0392781bf844f53263568963f8701f6bfc6",
"body": "Answer CKV's 2026-06-29 coordination prompt from the CKG side: join key =\ncanonical_id (no separate B7 normalization; ckv inherits ADR-0001 verbatim).\nCorrect the population gate — values fill only at cache SchemaVersion >= 1.19,\nnot the SQL-column-appearance 1.16, so a column-existence probe is ins\n[…]\nBM25 ownership (pkg/bm25 + FTS + evidence) and that intra-function\ncontrol-flow is available for flow-corpus. Register the response in DOC-MAP and\nnote the agreement in symbol-identity-remaining-work.",
"is_bot": false,
"headline": "docs: add CKG response to CKV canonical_id coordination",
"author_name": "mhha(WM)",
"author_login": "0xmhha",
"committed_at": "2026-06-29T07:58:15Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "ef45975bf1b48b7d69a18b1885f22326be66e91e",
"body": "SCHEMA.md declared itself the single source of truth yet stated schema\nversion 1.21, which diverged from cache.go (now 1.22 after PR #31 added\nthe simple_name suffix-lookup column). Fix the authoritative version line,\nrecord the 1.21 to 1.22 bump in the history, and update the two stale\n'current schema' claims in the symbol-identity handoff. History lines that\nrecord what B2/B3/B4 did (1.20 to 1.21) are left intact.",
"is_bot": false,
"headline": "docs: correct stale schema version to 1.22",
"author_name": "mhha(WM)",
"author_login": "0xmhha",
"committed_at": "2026-06-29T07:34:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9941e65d9e5a7ad9d33518da49d345c52370e6d4",
"body": "…pdates (#42)\n\nBumps the go-deps group with 3 updates in the / directory: [github.com/mark3labs/mcp-go](https://github.com/mark3labs/mcp-go), [golang.org/x/tools](https://github.com/golang/tools) and [modernc.org/sqlite](https://gitlab.com/cznic/sqlite).\n\n\nUpdates `github.com/mark3labs/mcp-go` from \n[…]\npe: version-update:semver-minor\n dependency-group: go-deps\n...\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(deps)(deps): bump the go-deps group across 1 directory with 3 u…",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-06-26T06:29:37Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "6e9c6175c4ed4c1055c5b8a313a6fd10df812153",
"body": "Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 25.6.0 to 26.0.1.\n- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)\n- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)\n\n---\nupdated-depe\n[…]\nrect:development\n update-type: version-update:semver-major\n...\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(deps)(deps-dev): bump @types/node in /web/viewer-next (#38)",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-06-26T06:23:56Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "c78c121d52f55adcddff988dd39890c3f46a36a5",
"body": "Bumps [actions/checkout](https://github.com/actions/checkout) from 6 to 7.\n- [Release notes](https://github.com/actions/checkout/releases)\n- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/actions/checkout/compare/v6...v7)\n\n---\nupdated-dependenc\n[…]\nirect:production\n update-type: version-update:semver-major\n...\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)(deps): bump actions/checkout from 6 to 7 (#33)",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-06-26T06:23:52Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "ac33b1c77057e7d43cdeffb43959387daa8ae15c",
"body": "…r (#41)\n\nThe §11.3 H3 boundary (filtering AMBIGUOUS Hunk/Commit nodes) was opt-in: only\nRegisterAll wrapped the reader via NewLLMSafeReader, so any caller mounting an\nindividual Register* with a raw reader silently leaked unreachable-history\nnodes.\n\nAdd an idempotent safeReader helper and wrap the \n[…]\nry holds no matter how tools are mounted and callers can no longer\nforget it. RegisterAll drops its now-redundant explicit wrap. Signatures are\nunchanged (still store.Reader), so this is non-breaking.",
"is_bot": false,
"headline": "refactor(mcphandlers): enforce the H3 safety boundary in every handle…",
"author_name": "mhha(WM)",
"author_login": "0xmhha",
"committed_at": "2026-06-26T06:15:35Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "473bf1dd7bf8ab2e82f4b35bbc6fc6d65ee20367",
"body": "…(#40)\n\nR06 was relaxed to its documented recall-first target (precision_min 0.5), so\nservice.New — a legitimate OR match for \"vault\" (its signature is FTS-indexed)\n— now surfaces. Recall stays 1.0, but the aggregate precision drops 0.9286 ->\n0.8966, which the eval-gate flagged as drift beyond the 0.02 tolerance against\na stale baseline. Update the committed baseline to the intended metrics so the\ngate passes.",
"is_bot": false,
"headline": "fix(eval): refresh retrieval baseline after the R06 precision change …",
"author_name": "mhha(WM)",
"author_login": "0xmhha",
"committed_at": "2026-06-26T06:15:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1bdaff26e0d70398cea34fee2efe7026e2228a87",
"body": "parseConcurrent spawned one goroutine per file up front, each then parking on\nthe semaphore — hundreds of thousands of parked goroutines on a large repo,\nwasting scheduler memory. Acquire the worker slot in the parent loop before\nspawning, so the number of live goroutines is bounded by `workers`. Th\n[…]\nts before the loop and drains concurrently, since the loop\nblocks on the semaphore and would otherwise deadlock once the result channel\nfilled. Verified with -race and a full cold build via make eval.",
"is_bot": false,
"headline": "perf(buildpipe): bound parser goroutines to the worker count (#32)",
"author_name": "mhha(WM)",
"author_login": "0xmhha",
"committed_at": "2026-06-25T12:28:48Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "8ac9dbcb042f55102af3e970f4678d6037666f65",
"body": "Reverse-dependency resolution and FindSymbol matched a short name against a\nfully-qualified name with `qualified_name LIKE ('%.' || target)`. The leading\nwildcard cannot use idx_nodes_qname, so every probe scanned the nodes table —\ncostly on the reverse-deps join during incremental builds.\n\nAdd a si\n[…]\nme is filled at write time, so the SchemaVersion bump (1.21 -> 1.22)\nforces a cold rebuild to populate it graph-wide; pre-1.22 graphs must be\nrebuilt before read-only opens (serve/mcp) can query them.",
"is_bot": false,
"headline": "perf(persist): index suffix lookups via a simple_name column (#31)",
"author_name": "mhha(WM)",
"author_login": "0xmhha",
"committed_at": "2026-06-25T12:02:33Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "ba36f8609615b9952e818f6453a59c9d14e6f9a5",
"body": "… (#30)\n\nR06 documents OR mode as recall-first with an intentionally loose precision\ntarget (0.5), but scoring.precision_min was 1.0 — a contradiction baked in\nwhen the fixture was authored. service.New is a legitimate OR match for\n\"vault\" (`func New() *Vault`, signature is FTS-indexed), so it surfaces with\nfull recall but trips the strict precision check, failing the eval gate.\nSet precision_min to the documented 0.5; make eval is green (14/14).",
"is_bot": false,
"headline": "test(eval): fix R06 precision gate to match its recall-first contract…",
"author_name": "mhha(WM)",
"author_login": "0xmhha",
"committed_at": "2026-06-25T11:21:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2d2f952a58dd2e32539513511067d490df1a876e",
"body": "…updates (#10)\n\nBumps the npm-deps group with 6 updates in the /web/viewer-next directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [three](https://github.com/mrdoob/three.js) | `0.169.0` | `0.185.0` |\n| [zustand](https://github.com/pmndrs/zustand) | `5.0.12` | `5.0.14` |\n| [@playwright/test](\n[…]\ne: version-update:semver-patch\n dependency-group: npm-deps\n...\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(deps)(deps): bump the npm-deps group across 1 directory with 6 …",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-06-25T11:11:15Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "f30c84645f228a5488aea9f43992cca28cd30eed",
"body": "Bumps [actions/setup-go](https://github.com/actions/setup-go) from 5 to 6.\n- [Release notes](https://github.com/actions/setup-go/releases)\n- [Commits](https://github.com/actions/setup-go/compare/v5...v6)\n\n---\nupdated-dependencies:\n- dependency-name: actions/setup-go\n dependency-version: '6'\n depen\n[…]\nirect:production\n update-type: version-update:semver-major\n...\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)(deps): bump actions/setup-go from 5 to 6 (#3)",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-06-25T11:11:10Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "800caf9185863cfebee6e3deb9a373a3c1aa87d2",
"body": "Bumps [actions/setup-node](https://github.com/actions/setup-node) from 4 to 6.\n- [Release notes](https://github.com/actions/setup-node/releases)\n- [Commits](https://github.com/actions/setup-node/compare/v4...v6)\n\n---\nupdated-dependencies:\n- dependency-name: actions/setup-node\n dependency-version: '\n[…]\nirect:production\n update-type: version-update:semver-major\n...\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)(deps): bump actions/setup-node from 4 to 6 (#2)",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-06-25T11:06:44Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "77d96ba37be29e9b0247365fe7f988020463fe55",
"body": "Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 6.\n- [Release notes](https://github.com/actions/checkout/releases)\n- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/actions/checkout/compare/v4...v6)\n\n---\nupdated-dependenc\n[…]\nirect:production\n update-type: version-update:semver-major\n...\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)(deps): bump actions/checkout from 4 to 6 (#1)",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-06-25T11:06:39Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "0c5bed04c1ccaed282d27d350046e0a259405d99",
"body": "Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.19.39 to 25.6.0.\n- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)\n- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)\n\n---\nupdated-de\n[…]\nrect:development\n update-type: version-update:semver-major\n...\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(deps)(deps-dev): bump @types/node in /web/viewer-next (#6)",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-06-25T11:06:16Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "87fed5d9bd7b0f820fe236a8e159a7003c363d1b",
"body": "…pdates (#14)\n\nBumps the go-deps group with 4 updates in the / directory: [github.com/jackc/pgx/v5](https://github.com/jackc/pgx), [github.com/mark3labs/mcp-go](https://github.com/mark3labs/mcp-go), [golang.org/x/tools](https://github.com/golang/tools) and [modernc.org/sqlite](https://gitlab.com/czn\n[…]\npe: version-update:semver-minor\n dependency-group: go-deps\n...\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(deps)(deps): bump the go-deps group across 1 directory with 4 u…",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-06-25T11:06:12Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "08db57d9a65b3672e8e1058fdbff31e3dfcb61b9",
"body": "… (#29)\n\nCompute queried NeighborhoodByQname once per (seed, edge group) — six store\ntraversals per seed. Fetch the union reverse-neighborhood once per seed and\nreplay a per-group BFS over the returned subgraph in memory to split nodes into\nbuckets. The union neighborhood is a superset of every grou\n[…]\nket nodes, mixed-path exclusion, seed exclusion, depth clamp,\nmissing-citation warnings, not-found, and file-seed mode. They pass against\nboth the old and new implementations, pinning the equivalence.",
"is_bot": false,
"headline": "perf(impact): one reverse traversal per seed, split buckets in memory…",
"author_name": "mhha(WM)",
"author_login": "0xmhha",
"committed_at": "2026-06-25T10:29:39Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "94ca250d9a2726cf80af378a6e66ff0b949bbd69",
"body": "…#28)\n\nExport read every node via DistinctFilePaths x NodesByFilePath per hardcoded\nlanguage — an N+1 over every file that also dropped nodes in languages outside\nthe set (e.g. proto). Use the AllNodes/AllEdges single-scan readers instead.\nAdd busy_timeout(5000) so a contended connection waits rather than failing with\nSQLITE_BUSY, and synchronous=NORMAL under WAL for a safe write speedup on the\nrebuildable graph.",
"is_bot": false,
"headline": "perf(persist): single-scan node/edge export and tune SQLite pragmas (…",
"author_name": "mhha(WM)",
"author_login": "0xmhha",
"committed_at": "2026-06-25T09:14:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "13e80d6c49f7b0f7c1e51e1f65c01b24b310bba6",
"body": "… (#27)\n\nThree paths reported a partial graph as success. The build skips files that\nfail to parse, so the CLI now appends the dropped-file count to the success\nline and a new --fail-on-parse-errors flag turns it into a non-zero exit for\nCI. A Solidity detector whose tree-sitter query fails to compi\n[…]\n go/ast, so new\nqueries are covered automatically) and fails loudly on a grammar mismatch.\nGetManifest ignored rows.Err(), so a truncated read returned a partial\nmanifest as success; it now checks it.",
"is_bot": false,
"headline": "feat(build): surface incomplete builds instead of silently succeeding…",
"author_name": "mhha(WM)",
"author_login": "0xmhha",
"committed_at": "2026-06-25T06:45:24Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "e74ce15610e34063565abdb81b4b71e79b9ac318",
"body": "…y effort\n\nA Tier 3 resume doc (HANDOFF-2026-06-19-symbol-identity.md) capturing the full\nckg/ckv/cks state: what canonical_id work is merged, the 4-entry code+chainbench\nverification, remaining optional follow-ups (6 review anchors, ckv invariants\nbranch, Postgres C1), how to resume on a new machine, and the gotchas learned\n(squash-rebase, ckg-graph-as-oracle, committed-block validator order, file-scoped\ninventory-check). Registered in DOC-MAP.",
"is_bot": false,
"headline": "docs: add self-contained cross-machine handoff for the symbol-identit…",
"author_name": "mhha(WM)",
"author_login": "0xmhha",
"committed_at": "2026-06-19T12:45:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bb0c4bcb38850d7edad9858618c390b8ff83bf9f",
"body": "…fixed file-aware)\n\nThe ~10 \"def anchor resolves to N definitions\" were mostly the --graph check\nignoring the anchor's file (cks PR #23 makes it file-aware). Genuine residue:\n7 in-file ambiguities (bare symbol matching a type + fields, e.g. EpochInfo) +\n~12 does-not-resolve warnings (pointer-receiver form, descriptive symbols, a\ndoc-file anchor) — small data follow-ups needing judgment.",
"is_bot": false,
"headline": "docs: A1-3b def-uniqueness errors were mostly check false positives (…",
"author_name": "mhha(WM)",
"author_login": "0xmhha",
"committed_at": "2026-06-19T10:19:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b51da5338f4e92f5c717f081ad11b22abdd119fb",
"body": "…nchors as follow-up\n\ncks anchor migration (branch feat/anchor-kind-migration): 4 deep-inside anchors\nclassified as kind: loc; 125 def (kind absent), 64 file-only. Surfaced two data\nfollow-ups needing human judgment — ~10+ def anchors with ambiguous short\nsymbols (qualify them), and 17 review anchors (descriptive-symbol -> reason +\nloc, pointer-receiver forms). cks-inventory-check --graph reports both.",
"is_bot": false,
"headline": "docs: record A1-3b loc-classification done; def-uniqueness + review a…",
"author_name": "mhha(WM)",
"author_login": "0xmhha",
"committed_at": "2026-06-19T09:08:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1ab59602cf4954376947a85aaf16edb1dd437fca",
"body": "…face bridge) (#26)\n\n* feat(parse): canonical_id only for package-level vars + drop proto double-prefix (B2/B4)\n\nTwo symbol-identity refinements shrinking the residual canonical_id\nnon-uniqueness found in the item-5 reindex validation:\n\n- B2: emitValueSpec now sets canonical_id only for package-leve\n[…]\ne, line-independent canonical id; only genuine intra-file collisions pay\nthe line-dependence cost. Folded into the 1.21 cache bump (B2/B4/B3 ship\ntogether). Test: TestLineQualifyDuplicateCanonicalIDs.",
"is_bot": false,
"headline": "feat: canonical_id quality refinements B2/B3/B4 (+ find_callers inter…",
"author_name": "mhha(WM)",
"author_login": "0xmhha",
"committed_at": "2026-06-19T08:44:51Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "4d20aee75f8c89065598e97e556027ef058ea6d8",
"body": "…gration left\n\nThe cks anchor kind:def|loc schema, struct, cks-anchor-refresh (never repoints\nloc), cks-inventory-check (--graph def-uniqueness), and domainexport per-kind\nrendering are committed on feat/canonical-id-resolution. Remaining: the 146+\ngo-stablenet anchor data migration (A1-3b), deferred as concurrency-sensitive.",
"is_bot": false,
"headline": "docs: A1-3 tooling done (cks anchor kind def|loc); only A1-3b data mi…",
"author_name": "mhha(WM)",
"author_login": "0xmhha",
"committed_at": "2026-06-19T08:01:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2f29b4fe2e450f1a4d7351aefadd6fdb8ef65b5d",
"body": "…ning\n\nUpdate the symbol-identity tracker: ckv canonical_id alignment (Phase 2) and\nthe cks canonical-id resolution + MCP-doc fix (Phase 3 core) are committed on\ntheir branches; the cks anchor kind:def|loc schema + skills + 146-anchor\nmigration (A1-3) is the remaining slice.",
"is_bot": false,
"headline": "docs: record Phase 2 (ckv) done + Phase 3 (cks) core done; A1-3 remai…",
"author_name": "mhha(WM)",
"author_login": "0xmhha",
"committed_at": "2026-06-19T07:40:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6c0f77533e9852027816ef2a8e35b36ea24fd1cd",
"body": "…ement B1) (#25)\n\nThe blank identifier `_` is not an addressable symbol — many `var _ = ...`,\n`_ \"import\"`, and struct padding fields would otherwise share a non-unique\n`<pkg>._` canonical id, the largest source of canonical_id collisions found in\nthe item-5 reindex validation.\n\n- goCanonicalID retu\n[…]\nild).\n- test: TestCanonicalID_BlankIdentifierSkipped (blank var + padding field get\n none; the real field still does).\n- docs: add a prioritized \"Next\" queue (B1 done; A1/A2 next) and SCHEMA.md 1.20.",
"is_bot": false,
"headline": "feat(parse/golang): skip canonical_id for blank identifier `_` (refin…",
"author_name": "mhha(WM)",
"author_login": "0xmhha",
"committed_at": "2026-06-19T05:57:52Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "b69c3106b01d8855197380e1418fef91d3e5d2b8",
"body": "…m 5 validation\n\n- Makefile: add LANG ?= go to eval-build-dbs (default unchanged); LANG=auto\n indexes Solidity/proto too, e.g. to validate cross-language canonical_id.\n- docs/symbol-identity-remaining-work.md: mark items 5-6 done and record the\n go-stablenet reindex validation (251,236 nodes): cro\n[…]\nly (28 Size methods -> 28 distinct ids), Solidity overloads\n separated by param-type signature, residual ~4% non-uniqueness explained\n (minified JS, blank _, same-named locals, init/test-stub dups).",
"is_bot": false,
"headline": "chore(eval): LANG var for multi-lang eval builds + record Phase 1 ite…",
"author_name": "mhha(WM)",
"author_login": "0xmhha",
"committed_at": "2026-06-19T05:38:05Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "ba67ae4048f819fe0485c901c51c4b0a3ac52f2d",
"body": "…ct resolution (#24)\n\n* feat(parse/persist): canonical_id for all Go node kinds + FindByCanonicalID (Phase 1)\n\nsymbol-identity Phase 1 (ADR-0001), continuing on top of PR #23 (schema 1.18).\n\n- parse/golang: a shared setLastCanonicalID helper now populates nodes.canonical_id\n for types/structs/inter\n[…]\ndocs: SCHEMA.md + symbol-identity-remaining-work.md mark item 2 done.\n\nPhase 1 remaining: item 5 (go-stablenet reindex, now unblocked) and item 7\n(Postgres canonical_id parity, deferred — status quo).",
"is_bot": false,
"headline": "feat: symbol-identity Phase 1 — canonical_id across all parsers + exa…",
"author_name": "mhha(WM)",
"author_login": "0xmhha",
"committed_at": "2026-06-17T09:59:47Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "56306ed575032e33382b9a24bbeed1f59be34dd3",
"body": "…all/field/temporal graph (#23)\n\n* fix(mcphandlers): resolve bare seed names in graph-traversal tools\n\nfind_callers/find_callees/get_subgraph hardcoded exact=true, so a bare\nshort name (e.g. \"isJustified\") returned an empty result with no signal —\ninconsistent with find_symbol's exact/suffix toggle.\n[…]\no an embedding-type qname with no node, so they are skipped\nrather than mis-attributed.\n\nWired into cold + incremental builds and LoadAndResolve. New edges -> bump\ncache.go SchemaVersion 1.17 -> 1.18.",
"is_bot": false,
"headline": "ckg: agent-facing retrieval accuracy — seed resolution, signatures, c…",
"author_name": "mhha(WM)",
"author_login": "0xmhha",
"committed_at": "2026-06-15T20:50:47Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "61b9c9e76825e4492375d9a90b83dfe8e5e8d23e",
"body": "… archive stale)\n\nApply the doc-organize discipline across docs/, with code+git as ground truth.\n\n- Single source of truth for volatile facts: SCHEMA.md now states schema 1.15,\n 37 node / 43 edge types (synced with pkg/types/enums.go) plus the 1.10->1.15\n history. PROJECT-OVERVIEW, ARCHITECTURE, A\n[…]\n.\n- Refresh living docs: CONTINUITY snapshot to PR #17-#22, drop obsolete\n uncommitted-work sections; DOC-MAP reflects the moves + ADR links.\n\nNo broken links; every active doc is indexed in DOC-MAP.",
"is_bot": false,
"headline": "docs: consolidate docs under 3-tier governance (single-source counts,…",
"author_name": "mhha(WM)",
"author_login": "0xmhha",
"committed_at": "2026-06-15T08:17:54Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "358f227a5d69fe7cda45894153341e3c283be672",
"body": "…R) (#22)\n\nIntroduce a documentation discipline so design evolution stops eroding the\nproject's purpose and stops forcing repeated \"which design is right?\" reviews.\n\n- CLAUDE.md: full working agreement — build/test/lint (Makefile), code\n structure, non-obvious conventions (public pkg/ boundary, the\n[…]\nanize.md: slash command for plan-first doc consolidation.\n- .claude/hooks/doc-guard.py + settings.json: guard hooks — confirm before\n editing Tier 1 VISION.md, remind to register new docs in DOC-MAP.",
"is_bot": false,
"headline": "docs: establish 3-tier doc governance (CLAUDE.md, VISION, DOC-MAP, AD…",
"author_name": "mhha(WM)",
"author_login": "0xmhha",
"committed_at": "2026-06-15T07:26:05Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "1a9698c5fd632182a89ea89cc808423a58fc1384",
"body": "* test(eval/stablenet): add ckg func-verify harness, ground truth, and plan\n\nAdd the deterministic (LLM-free) CKG functional verification scaffolding:\nverify.py validates keyword->code definitions and change history against\non-disk go-stablenet source and git -L history; ground-truth-A.json is the\no\n[…]\n the remaining work across\nckg, ckv, and cks, so the effort can be picked up cleanly later. Points at the\ndesign contract in code-knowledge-system and notes the concurrent-session and\nreindex caveats.",
"is_bot": false,
"headline": "Feat/canonical symbol (#21)",
"author_name": "mhha(WM)",
"author_login": "0xmhha",
"committed_at": "2026-06-12T08:50:57Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "af2bda81546e2ce3af8180b0858bb012e8d84a59",
"body": "…plan (#20)\n\nAdd deterministic (LLM-free) CKG functional-verification scaffolding: verify.py validates keyword->code definitions and change history against on-disk go-stablenet source and git -L history; ground-truth-A.json is the oracle dataset; PLAN.md documents the methodology. Per-session reports/results stay untracked via .gitignore.",
"is_bot": false,
"headline": "test(eval/stablenet): add ckg func-verify harness, ground truth, and …",
"author_name": "mhha(WM)",
"author_login": "0xmhha",
"committed_at": "2026-06-12T08:40:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c8c8393cd79696ecc774db21432b52b345f58b0e",
"body": "…flag (#19)\n\nThe G6 temporal pass capped per-file commit history at a hard-coded 10\n(temporalDepthDefault), which drives Commit/Hunk node counts and\nchanged_in/blame edge volume. Options.TemporalDepth was documented but never\nwired — emitDerivedPasses called emitTemporalEdges with a literal 0.\n\nThre\n[…]\nld and incremental build paths (both route through\nemitDerivedPasses). Verified end-to-end: default -> max_per_file=10,\n--temporal-depth=5 -> max_per_file=5. Existing temporal / pr_history tests pass.",
"is_bot": false,
"headline": "feat(build): expose temporal per-file commit cap as --temporal-depth …",
"author_name": "mhha(WM)",
"author_login": "0xmhha",
"committed_at": "2026-06-10T07:50:04Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "7ef33e29bb273c17c7c4fca62a7842ca335ab354",
"body": "…e tracking (#18)\n\nThe previous attribution compared a node's current [StartLine,EndLine] against\neach PR commit's historical hunk range. When code moves between the commit and\nHEAD those ranges diverge, so a definition could miss PRs that genuinely changed\nit and pick up PRs now sitting at the old \n[…]\nrue accuracy is higher, since the funcname\noracle itself has false positives the line-range form avoids. Build cost\n+~2.9min (parallel); incremental builds amortise. Existing TestScanPRHistory_*\npass.",
"is_bot": false,
"headline": "feat(pr_history): attribute definition-node PR history via git -L lin…",
"author_name": "mhha(WM)",
"author_login": "0xmhha",
"committed_at": "2026-06-10T06:37:25Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "a3260e60aa5426950bdbae2f120ef8f12a8b60a1",
"body": "…isions (#17)\n\nCall-site capture recorded only the bare callee name (exprName -> Sel.Name), so\nPass 2 resolved targets by bare-name suffix match with last-write-wins: a method\ncall like valSet.Size() could bind to an unrelated pathdb.Database.Size in another\npackage, and valSet.F() to crypto/blake2b\n[…]\nnly builds). Interface/func-value/\nclosure dispatch paths are unchanged. Add a two-package same-named-method fixture\nand a resolver test asserting the call binds to the receiver's type, not the decoy.",
"is_bot": false,
"headline": "fix(parse/golang): qualify static call targets to stop bare-name coll…",
"author_name": "mhha(WM)",
"author_login": "0xmhha",
"committed_at": "2026-06-09T07:37:35Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "aa97e71d9d63ae91e2083544d52ab9b23d47c695",
"body": "…(#16)\n\nOutput of cks-domain-sync after the P0 #8 promotion session\n(code-knowledge-system PR for context). This is the first ckg policy\nview for the go-stablenet project — there was no prior file at this\npath; the directory was created as part of this commit.\n\n36 per-entry policies, one per verifie\n[…]\ndited: 'cks-domain-sync\n-entries <project> -ckg-out policies/stablenet/policy.yaml' is the\nonly producer. Edit the upstream cks domain entries instead — the\nnext sync overwrites any direct edits here.",
"is_bot": false,
"headline": "feat(policy): add stablenet policy emitted from cks domain-knowledge …",
"author_name": "mhha(WM)",
"author_login": "0xmhha",
"committed_at": "2026-06-07T18:02:29Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "cc66f5df0bdbdf46a391513cf63c8a7a18bd75cc",
"body": "…rd (#15)\n\nAdd two opt-in tests under the external package store_test to catch\ncross-module regressions that internal/persist's own tests cannot see:\n\nTestSearchFTS_ScoreContract — runs a real SearchFTS against an opt-in\ngraph (CKG_GSN_GRAPH env var) and asserts every hit's Score lies in\n[0, 1], des\n[…]\n--policy-file, so a developer machine without a\npolicy-aware build doesn't see a false failure.\n\nBoth tests skip when CKG_GSN_GRAPH is unset, matching the opt-in\ndiscipline of gsn_query_smoke_test.go.",
"is_bot": false,
"headline": "test(pkg/store): pin SearchFTS Score contract + go-stablenet M2.d gua…",
"author_name": "mhha(WM)",
"author_login": "0xmhha",
"committed_at": "2026-06-07T16:43:43Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "721e8876a5f25b2765e2c4eae093e508339b99a0",
"body": "The audit job picked up two stdlib vulnerabilities published 2026-06-03:\nGO-2026-5039 (net/textproto — arbitrary inputs in errors) and\nGO-2026-5037 (crypto/x509 — inefficient candidate hostname parsing).\nBoth are found in go1.25.10 and fixed in go1.25.11.\n\nsetup-go with `go-version: '1.25'` resolves\n[…]\naudit gate.\n\nBump cost is one line per release; the alternative ('1.25.x' or\n'>=1.25.11') accepts the same race against future patches without\nmaking the resolved version visible in the workflow file.",
"is_bot": false,
"headline": "ci: pin go-version to 1.25.11 for new stdlib vulnerability fixes",
"author_name": "mhha",
"author_login": "0xmhha",
"committed_at": "2026-06-03T03:48:54Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "63808688b98a72b15be2ff6fadbd7116d6175dd5",
"body": "Smoke job was failing because four spec files lagged behind viewer-next\nUI changes accumulated between 2026-05-29 and 2026-06-02. After the\nport alignment in a649e91, the underlying spec/UI drift surfaced. This\ncommit pins the suite back to green.\n\n* tests/_lib.js — new helper. seedFirstTimeSeen see\n[…]\nentry noting the viewer spec ↔\nUI drift pattern so future UI changes flag the spec dependency.\n\n14/14 specs pass locally against `ckg serve --graph=/tmp/ckg-smoke\n--port=8787` over testdata/synthetic.",
"is_bot": false,
"headline": "ci(viewer): refresh playwright specs after viewer UI shifts",
"author_name": "mhha",
"author_login": "0xmhha",
"committed_at": "2026-06-03T03:37:46Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "a649e91ca794ad29a541e3b899ec6fa9bddaca10",
"body": "The smoke job started the viewer server on port 8080 while the Playwright\nconfig used baseURL http://127.0.0.1:8787, so every spec failed with\nERR_CONNECTION_REFUSED. The Playwright config carries a comment that says\n\"CI mirrors this without modification\", so the workflow is the side that\nmust change. Switching --port to 8787 makes both sides agree.",
"is_bot": false,
"headline": "ci: align smoke serve port with playwright baseURL (8080 -> 8787)",
"author_name": "mhha",
"author_login": "0xmhha",
"committed_at": "2026-06-02T11:38:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5f6ca237ff1d72dca8a497bc0ad8588bd0bb05b3",
"body": "docs/archive/ moves (9 files):\n- PERF-BASELINE-2026-05-10.md (one-shot baseline snapshot)\n- SESSION-HANDOFF-{2026-05-08,2026-05-10}.md (frozen session records)\n- NEXT-CANDIDATES-2026-05-10.md (superseded after P0/P1/P2/P3 land)\n- ckg5-depth-sweep.json + ckg5-depth-sweep-report-2026-05-20.md (one-sho\n[…]\nlosing note documents the archive move itself.\n\nTwo files intentionally left untracked in docs/ root: CODE-AUDIT-2026-05-29.md\nand STAGE-B-EVAL-RESULTS-2026-05-29.md — both gitignored per repo policy.",
"is_bot": false,
"headline": "docs: archive 9 outdated reports + refresh REMAINING-WORK post-PR#12",
"author_name": "mhha",
"author_login": "0xmhha",
"committed_at": "2026-06-02T11:16:16Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "3163e4eafe6b8a8b25aac9b7483083873dbe0c67",
"body": "…green)\n\nRepo lint was already red on main before the R1' merge (pre-existing debt).\nThis makes it green:\n- errcheck: explicit-ignore (_ = / _, _ =) or defer-wrapper for intentionally\n unchecked Close/Rollback/Flush/Fprintf/RemoveAll across src+tests (pgx/httptest\n void Close left bare).\n- ineffas\n[…]\n' inits (both branches reassign).\n- staticcheck QF1001: apply De Morgan in trimFTSToken + proto lexer (logic-equivalent).\nNo behavior change: go build/vet/test all green (31 ok / 0 FAIL), gofmt clean.",
"is_bot": false,
"headline": "chore(lint): resolve all errcheck/ineffassign/staticcheck issues (CI …",
"author_name": "mhha",
"author_login": "0xmhha",
"committed_at": "2026-06-02T08:26:32Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "ae3d1597719911ebf28f3ec2a1cc4fcc62beddb0",
"body": "… (#12)\n\n* feat(concurrency): add pkg/concurrency.Analyze for G7/S1\n\nNew pkg/concurrency package backing the cks.context.concurrency_impact\ntool (R1' contract C1/S1). Analyze returns the concurrency blast radius\nof a symbol over the 5 contract edge types (spawns, sends_to, recvs_from,\nacquires_lock,\n[…]\nerified NodePolicy=1 SecurityPattern=1).\nG5(dispatch_kind)/G6(channel pair) confirmed already covered by existing\nuses_type_test/concurrency_test. Remaining: 00 §7 dev-only MCP build tag (spec-level).",
"is_bot": false,
"headline": "R1' ckg: concurrency_impact (G7) + LLM excision + go-stablenet smokes…",
"author_name": "mhha(WM)",
"author_login": "0xmhha",
"committed_at": "2026-06-02T07:40:42Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "61e5678beb87e66b8ed03293b2a2c310615bab74",
"body": "Two hygiene fixes that were leaking the maintainer's home path\n(/Users/wm-it-22-00661/...) through GitHub.\n\ngo.mod:\n- The 'replace github.com/0xmhha/cli-wrapper => /Users/.../cli-wrapper'\n directive forced every clone to look for cli-wrapper at one\n specific absolute path. On any other machine the\n[…]\nntentionally left untouched —\n they're frozen session records and rewriting them would muddy\n the historical context they document.\n\nTests: full suite passes against cli-wrapper v0.4.6 (29 modules).",
"is_bot": false,
"headline": "chore: remove machine-local replace + scrub PII from active docs",
"author_name": "mhha",
"author_login": "0xmhha",
"committed_at": "2026-06-01T03:15:07Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "42ce3c73e553b3d7e5423405464ea43af191f53d",
"body": "Single-document landing for a fresh session on a different machine.\nTwo halves:\n\n§1 work context — current branch state, full P0/P1/P2/P3 progress\n table (all 11 items done in this session, with commit SHAs),\n deferred items (W-B / W-C / Stage B re-measurement) with their\n design-doc pointers, us\n[…]\na cleanup /\n rebuild recipe for partial failures.\n\nReferences table at the end maps blueprint / design / Makefile /\npackage locations so the next session knows where to read before\ntouching anything.",
"is_bot": false,
"headline": "docs: cross-machine handoff covering session state + eval DB rebuild",
"author_name": "mhha",
"author_login": "0xmhha",
"committed_at": "2026-05-29T07:13:54Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "a5c8cb078fedc57b504f1760e906e75565ecedad",
"body": "Adds the missing realtime piece from the blueprint: an operator can\nnow leave 'ckg watch' running in one terminal and 'ckg serve --graph='\nin another, and the viewer reflects source changes within the\ndebounce window without manual rebuilds.\n\nWhy a separate command instead of 'serve --watch':\n- serv\n[…]\nodules stays out).\n- TestAddWatchedDirs: walks a synthetic tree and confirms\n node_modules + .git subtrees never reach the watcher.\n- cli_test.go subcommand-count assertion bumped to include 'watch'.",
"is_bot": false,
"headline": "feat(cli): ckg watch — incremental rebuild on FS events (P3 #11)",
"author_name": "mhha",
"author_login": "0xmhha",
"committed_at": "2026-05-29T07:05:43Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "49a439cb616c665bfabab984d2561108e40bd135",
"body": "W-A Stage B (cross-function lock propagation) shipped 2026-05-11 with\na known gap: named-function goroutine calls like `go gh.touchAsync()`\nemitted only a `spawns` edge from the parent function to the\nGoroutine node — no `calls` edge to the target. The propagator's DFS\nwalks calls/invokes edges, so \n[…]\nite passes (no double-emit, no\n regression on the anonymous goroutine path).\n\nThe GoroutineBody fixture's header is updated from \"the gap is\nknown and reproducible\" to \"the P2 #8 fix lands the edge\".",
"is_bot": false,
"headline": "feat(go-parser): emit calls edge for `go x.method()` (P2 #8 W-A)",
"author_name": "mhha",
"author_login": "0xmhha",
"committed_at": "2026-05-29T06:59:07Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "8c5ce8e3a40a50a7caa27f97509204652db78d0d",
"body": "γ baseline runs were repeatedly invoking the same (name, args) tool\ncall across turns — the LLM would lose context of an earlier result\nand re-issue the query. Each repeat cost both wall-clock time (a\nfull store.Search / store.NeighborhoodByQname round trip) and\nprompt tokens (the full result re-app\n[…]\n\n- TestGammaPromptLoop_CacheHitsAcrossTurns: distinct args still\n execute; only repeats hit the cache.\n- TestCanonicalCallArgs (5 cases): whitespace, key-order, malformed\n fallback, distinct values.",
"is_bot": false,
"headline": "feat(eval): γ tool-call cache + cached marker (P2 #6)",
"author_name": "mhha",
"author_login": "0xmhha",
"committed_at": "2026-05-29T06:48:27Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "aadf06c1c79e2a83eb2ebac71fc7493a1c9f4a6f",
"body": "P0 #3 widened the candidate pool (30 -> 100) but kept the expand\nstage at a fixed 1 hop. Some queries — caller-of-caller, type-of-\nfield-type — have their relevant context two edges out, and the\nranker can't surface what the expander never visits. P2 #7 adds an\nopt-in second hop so those queries can\n[…]\n (default 1).\n\nTests:\n- pkg/smartctx options snapshot covers the new defaults + the\n HopDepth=5 -> 3 clamp path.\n- pkg/mcphandlers + internal/eval pass unchanged (HopDepth=1 is the\n silent default).",
"is_bot": false,
"headline": "feat(smartctx): 2-hop BFS expand opt-in (P2 #7)",
"author_name": "mhha",
"author_login": "0xmhha",
"committed_at": "2026-05-29T06:42:08Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "2df7962e303a1c77b68798c550366a954b0b90cf",
"body": "Wires the LLM-free half of the eval surface into PR CI so retrieval /\nvalidate / benchmark / bench-mcp regressions land as failed checks\ninstead of as silent baseline drift. Implements docs/PROJECT-BLUEPRINT-\nALIGNMENT.md §4.2 P3 #9.\n\ncmd/eval-gate (new):\n- Parses eval/baseline/{retrieval,validate}.\n[…]\neal regression (precision/f1/failed-count) = labelled failures.\n- Within-tolerance jitter (0.01 drop) = pass.\n- Validate issue rise = flagged.\n- IssueCount aggregates across multi-validator envelopes.",
"is_bot": false,
"headline": "ci: add eval regression gate (P3 #9)",
"author_name": "mhha",
"author_login": "0xmhha",
"committed_at": "2026-05-29T06:36:58Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "fa36b7afb9ec53117620799f3a7a4cbf27a19ed9",
"body": "Touches 15 files with mechanical correctness/idiom improvements only —\nno behaviour change.\n\ngofmt drift (4 files): build.go alignment, security.go doc bullet\nformatting, cache.go comment indent, security_test.go subtest table\nformatting. The doc reformat in security.go also reworded the\nResolve doc\n[…]\norm, identical semantics.\n\nFull test suite passes (29 modules). go build is clean. Some\nmodernize hints in solidity/resolve.go and tests deferred — they\nneed broader review than this mechanical sweep.",
"is_bot": false,
"headline": "chore: gofmt + staticcheck + Go 1.23+ modernization sweep",
"author_name": "mhha",
"author_login": "0xmhha",
"committed_at": "2026-05-29T06:32:18Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "5b47dc1be748d44c0f52f95374035a573b6c5d9c",
"body": "… loader (P1 #5, schema 1.15)\n\nAdds the second non-source-derived axis to the CKG graph — security\nrisk pattern annotations loaded from an operator-supplied YAML.\nSibling to P1 #4 policy metadata; where policy answers 'why does\nthis code exist?', security answers 'what could go wrong with this\ncode?\n[…]\nend-to-end smoke runs Run() against the\n resolve fixture + a synthetic security yaml and verifies\n NodeSecurityPattern + EdgeHasSecurityPattern land in graph.db\n with Dst pointing at security:<id>.",
"is_bot": false,
"headline": "feat(security): NodeSecurityPattern + EdgeHasSecurityPattern via YAML…",
"author_name": "mhha",
"author_login": "0xmhha",
"committed_at": "2026-05-29T06:17:18Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "e72fa67039dbcc6ee023c0e4ffcf7ae589ea3837",
"body": "…ema 1.14)\n\nAdds the first non-source-derived rows to the CKG graph — governance\nand protocol policy metadata loaded from an operator-supplied YAML.\nImplements docs/PROJECT-BLUEPRINT-ALIGNMENT.md §4.2 P1 #4: 'which\npolicy governs this code?' now resolves to a single edge-type query\ninstead of a code\n[…]\ne: end-to-end smoke runs Run() against the\n resolve fixture + a synthetic policy yaml and verifies policy\n nodes + governed_by edges land in graph.db with the expected\n Dst pointing at policy:<id>.",
"is_bot": false,
"headline": "feat(policy): NodePolicy + EdgeGovernedBy via YAML loader (P1 #4, sch…",
"author_name": "mhha",
"author_login": "0xmhha",
"committed_at": "2026-05-29T06:07:14Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "9d3d8420af37b92febda058ca51dee97cfd5092d",
"body": "Stage B 2026-05-29 measured δ score at 0.335 — 76% of β's 0.441. The\ndominant recall bottleneck was the hard-coded 30-candidate cap on\nthe initial FTS search: the BM25/PageRank/Usage re-ranker can't\nsurface a relevant node that never made the candidate set.\n\nPromote the pipeline width knobs from pri\n[…]\nagainst silent drift since these numbers are load-bearing\nfor the δ baseline measurement.\n\nCallers can still pass smaller values for tight, low-latency\nresponses — withDefaults only fills zero fields.",
"is_bot": false,
"headline": "feat(smartctx): widen candidate pool 30 -> 100 for P0 #3 accuracy",
"author_name": "mhha",
"author_login": "0xmhha",
"committed_at": "2026-05-29T05:46:33Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "b9961b44613b876e1d32415e55f01c4d83853964",
"body": "get_context_for_task previously returned just the BM25/score/pack\nslice of the graph. A coding-agent that wanted recent change history\nor reverse-dep impact had to make two more tool calls — round-trips\nthat the blueprint explicitly calls out as the bottleneck (see\ndocs/PROJECT-BLUEPRINT-ALIGNMENT.m\n[…]\ns / prs_per_node /\ninclude_impact / impact_depth as tool parameters. Added focused\ntests covering the flag-off (no key), flag-on with synthetic PR\ninjection (PRsPerNode cap), and impact-flag plumbing.",
"is_bot": false,
"headline": "feat(smartctx): 1-shot retrieval folds PR breadcrumbs + impact (P0 #2)",
"author_name": "mhha",
"author_login": "0xmhha",
"committed_at": "2026-05-29T05:42:11Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "ce20b0990e8761e827b4084cb79ce3068eb0f15d",
"body": "PRRef.Summary previously held only the first non-empty body line —\nwhich dropped the bulk of the rationale that CKV's semantic search\ndepends on. Replace firstNonEmptyLine with bodyExcerpt:\n\n- Keep the multi-line description verbatim.\n- Strip canonical git trailers (Signed-off-by:, Co-authored-by:,\n\n[…]\nract. Added focused\nTestBodyExcerpt (8 cases) + TestBodyExcerpt_LineBoundaryCap;\nupdated TestScanPRHistory_BasicOverlap fixture expectation.\n\nImplements docs/PROJECT-BLUEPRINT-ALIGNMENT.md §4.2 P0 #1.",
"is_bot": false,
"headline": "feat(pr-breadcrumb): capture full commit body as 'why' history (P0 #1)",
"author_name": "mhha",
"author_login": "0xmhha",
"committed_at": "2026-05-29T05:35:13Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "d45c8506389e78910d4fbd036cdb8f2fd07cf647",
"body": "Reduce sqlite.go from 1700 LOC to 63 LOC by splitting receiver methods\nacross files by axis:\n- sqlite.go — lifecycle (Open/OpenReadOnly/Close + struct)\n- sqlite_migrate.go — schema migration + ensure-column helpers\n- sqlite_writer.go — Insert*/Delete* + RebuildFTS + writer types\n- sqlite_rea\n[…]\nll methods stay on *sqliteStore in the persist package,\nso the public API is unchanged. No behavior change — existing test suite\n(persist + cmd/ckg + buildpipe + eval + server + mcp) passes unchanged.",
"is_bot": false,
"headline": "refactor(persist): split sqlite.go into per-axis modules",
"author_name": "mhha",
"author_login": "0xmhha",
"committed_at": "2026-05-29T05:29:11Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "0e9562aedd563661a3d57b394b5b1f9c1b8b1951",
"body": "BuildContext was a 174-line monolith mixing all 6 retrieval stages\n(search, expand, score, diversify, pack, cite) plus subgraph\nserialization in a single function. The mixed concerns made it hard\nto:\n - test individual stages in isolation\n - tune knobs (candidate count, summary cap) without grep\n \n[…]\n and tunable\nin isolation.\n\nResult:\n- BuildContext cyclomatic complexity: 28 → 5\n- All eval + mcphandlers tests pass (no behavior change)\n- δ baseline improvement work can now target individual stages",
"is_bot": false,
"headline": "refactor(smartctx): split BuildContext into named pipeline stages",
"author_name": "mhha",
"author_login": "0xmhha",
"committed_at": "2026-05-29T05:11:03Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "05bf0cd26c032a8caae52c9254c8b14992152cc4",
"body": "extractSymbols had grown to 156 lines (function body + comments) with\nseven inline filters accumulated across cycles 1-9. Each filter's\nrationale was wedged into the function body, hiding the pipeline shape.\n\nRefactor:\n- Extract separator predicate to isSymbolSeparator\n- Extract token-trim charset t\n[…]\nummary; per-step history points to eval-trajectory.md\n\nResult:\n- extractSymbols cyclomatic complexity: 31 → 7\n- All eval tests pass (no behavior change)\n- Each filter is now unit-testable in isolation",
"is_bot": false,
"headline": "refactor(eval): split extractSymbols filter pipeline into named stages",
"author_name": "mhha",
"author_login": "0xmhha",
"committed_at": "2026-05-29T04:58:23Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "636267423982148fa823289b95af7cd53c4d65a1",
"body": "PROJECT-BLUEPRINT-ALIGNMENT.md captures the user-provided E2E\nscenario (Jira → plugin → CKS → CKV/CKG → coding-agent → eval) and\nmaps CKG's role within it. Includes gap analysis (Tier A/B/C/D)\nagainst current capabilities and a recommended phase plan\n(clean-up → P0 features → domain meta → semantics + ops).\n\n.gitignore: per-session code audit reports (docs/CODE-AUDIT-*.md)\nare one-shot snapshots like stage-b results and should not be tracked.",
"is_bot": false,
"headline": "docs: project blueprint alignment + audit gitignore",
"author_name": "mhha",
"author_login": "0xmhha",
"committed_at": "2026-05-29T04:08:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0aff8a56f80f0ab8463626f0ff7426ab4fb0e6aa",
"body": "- Remove unused suggestedQuestions V1 (V2 supersedes at cmd/ckg/report.go:216)\n- Remove unused test helpers, vars, consts, and a wrapper function\n- Convert struct literal to type conversion in cluster/persist_adapter\n- Drop unused append result in contract_cast_test\n- Drop redundant nil check before\n[…]\n) in runner_test\n- Fix error string punctuation in llm_cli (ST1005)\n- Drop unused os/path/filepath imports in unreachable_test\n\nVerified: staticcheck 11 → 0, go vet clean, gofmt clean, all tests pass.",
"is_bot": false,
"headline": "chore: clean up staticcheck findings (11 fixes)",
"author_name": "mhha",
"author_login": "0xmhha",
"committed_at": "2026-05-29T04:08:07Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "511f94c1326b35b6e40b55fd4eb5c7418eb3fdb1",
"body": "Stage B evaluation has shipped: δ achieves 76% of β's score with\njust 5% of the prompt bytes — CKG's core value proposition is\nquantitatively validated.\n\n- Update REMAINING-WORK.md with Stage B snapshot and Tier 1/2/3\n reorganization (session wrap-up, γ/δ improvement, infra)\n- Ignore docs/STAGE-B-EVAL-RESULTS-*.md — per-session reports are\n machine/backend/corpus-specific and should not be tracked",
"is_bot": false,
"headline": "docs: refresh REMAINING-WORK with Stage B results, ignore eval reports",
"author_name": "mhha",
"author_login": "0xmhha",
"committed_at": "2026-05-29T03:19:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "22e2118212e1ed8c3395b552f9c2fa4a47659b6d",
"body": "The pinned v0.2.1 leaked cliwrap-agent subprocesses across eval\nruns (no termination on Manager close). Local replace points at\nthe v0.4.6 working tree which fixes the leak and tunes the agent\noutbox capacity.",
"is_bot": false,
"headline": "build: replace cli-wrapper with local checkout (v0.4.6)",
"author_name": "mhha",
"author_login": "0xmhha",
"committed_at": "2026-05-29T03:19:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "499323de740ca63620469ed1c335171537076a40",
"body": "Five fixes addressing γ failures in stage-b (11/30 incomplete, 27% halu):\n\n1. Tool results capped (top-20 nodes + top-30 edges) and reduced to\n {qname, type, file, line, sig[120]} briefs instead of full Node JSON.\n Prevents multi-turn prompt explosion that triggered context limits.\n\n2. Empty res\n[…]\nrunner.runOne prefers out.UserPromptBytes when CompleteWithTools\n reports it; other baselines keep their pre-tool measurement.\n\nTests pass; γ should now complete more tasks with lower hallucination.",
"is_bot": false,
"headline": "fix(eval): γ V3 — bounded tool results + honest H1 measurement",
"author_name": "mhha",
"author_login": "0xmhha",
"committed_at": "2026-05-28T11:37:44Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "cd4f5b10337e4442d56a5ea51d3f5f6a39d76ba0",
"body": "V1 used Anthropic's native tool_use protocol → only APIClient\nsupported it. V2 implements multi-turn tool-use entirely on top of\nplain text completions:\n\n- LLM is instructed via system prompt to emit XML blocks:\n <tool_call name=\"...\">{\"arg\": \"value\"}</tool_call>\n- runGammaPromptLoop parses these\n[…]\nClient now share runGammaPromptLoop.\nErrToolsUnsupported removed — every backend supports γ.\n\nTests: parseToolCalls (4 cases) + mockLLM-driven multi-turn loop\n(single-turn, multi-turn, max-turns-hit).",
"is_bot": false,
"headline": "refactor(eval): γ to prompt-based pseudo-tool-use (V2)",
"author_name": "mhha",
"author_login": "0xmhha",
"committed_at": "2026-05-28T07:21:06Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "9f72b656f16d4d35caac239276f2b39aa2e5d042",
"body": "γ V1 (replaces V0 placeholder):\n- gamma_loop.go: real multi-turn Anthropic tool_use protocol\n- 5 retrieval tools (find_symbol/find_callers/find_callees/get_subgraph\n /search_text) dispatch in-process against pkgstore.Reader\n- Accumulates input/output tokens + tool_calls across all turns\n- gammaMaxT\n[…]\non: Score, Halu rate, Cite precision, Latency,\n Tool calls per baseline\n- Existing token detail preserved under Token detail section\n- Citation precision aggregates the T-03 validator's per-row score",
"is_bot": false,
"headline": "feat(eval): γ multi-turn tool-use loop + report enrichment",
"author_name": "mhha",
"author_login": "0xmhha",
"committed_at": "2026-05-28T07:13:04Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "ff37232691a9647fbd75d0a2fa817dd457034267",
"body": "α (alphaFileDump): resolves task.Expected.Symbols (or .MustUseSymbols)\nto file paths via FindSymbol, emits each file's full content (no\ntruncation). Rubric tasks without symbol hints fall back to FTS search\non the description. Matches user intent \"정답 코드가 포함된 파일의\n전체 내용\" instead of random 5-file dump.\n[…]\nmp.\nDistinct from δ: β is raw subgraph dump without re-ranking or budget\npacking — the \"graph 통째 dump\" upper bound.\n\nTests: 4 cases covering symbol-driven α, rubric fallback,\ntask-aware β, no-match β.",
"is_bot": false,
"headline": "feat(eval): task-aware α + β baselines",
"author_name": "mhha",
"author_login": "0xmhha",
"committed_at": "2026-05-28T07:06:07Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "45d31dfcf2b5687b039c5fbad32440a8dff16bb1",
"body": null,
"is_bot": false,
"headline": "fix: broaden FTS5 query rewriter separator set",
"author_name": "mhha",
"author_login": "0xmhha",
"committed_at": "2026-05-27T13:04:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cafad78c8d8629ed1a5e45c1e9874f2538c3638c",
"body": "\"refresh-on-gasTip-change\" was passed as a single token to FTS5,\nwhere the hyphen is interpreted as NOT operator and \"on\" as a\ncolumn reference → \"no such column: on\" error. Adding '-' to\nthe FieldsFunc separator set splits it into individual tokens.",
"is_bot": false,
"headline": "fix: split on hyphen in FTS5 query rewriter",
"author_name": "mhha",
"author_login": "0xmhha",
"committed_at": "2026-05-27T11:37:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dedeb4dc2dd881002bebd925effccdb70a3015b5",
"body": "3-char tokens (the, all, get, How) caused FTS5 to misinterpret them\nas column filters when placed next to OR operators in rewritten\nqueries. Raising the minimum from 3 to 4 eliminates the class of\nerrors (\"no such column: on/the/all\") without meaningful recall\nloss — 3-char English words are almost always stop-words.",
"is_bot": false,
"headline": "fix: raise FTS5 stop-word minimum to 4 chars",
"author_name": "mhha",
"author_login": "0xmhha",
"committed_at": "2026-05-27T11:10:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7d989d17cfc1c451df94b3a4c32af7b26e8d0189",
"body": "Bug 1: ckg eval overwrites results.csv on each run, losing prior\nbaseline results. Fix: readCSV loads existing results, mergeResults\ndeduplicates by (task_id, baseline, run_idx), new results replace\nold for the same key. Enables incremental baseline runs.\n\nBug 2: rewriteFTSQuery passes \"on\", \"or\", \"\n[…]\nators/column references →\n\"no such column: on\" error. Fix: isFTS5Reserved filter drops these\nbefore OR-joining. Unblocks smartContext δ baseline on task\ndescriptions containing natural-language prose.",
"is_bot": false,
"headline": "fix: FTS5 reserved-word filter + eval CSV merge mode",
"author_name": "mhha",
"author_login": "0xmhha",
"committed_at": "2026-05-27T10:28:59Z",
"body_truncated": true,
"is_coding_agent": false
}
],
"releases_count": 1,
"commits_last_year": 645,
"latest_release_at": "2026-07-18T17:04:47Z",
"latest_release_tag": "v0.1.0",
"releases_from_tags": false,
"days_since_last_push": 1,
"active_weeks_last_year": 14,
"days_since_latest_release": 6,
"mean_days_between_releases": null
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": false,
"has_contributing": false,
"health_percentage": 28,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"ecosystem": {
"packages": [
{
"name": "github.com/0xmhha/code-knowledge-graph",
"exists": true,
"license": null,
"keywords": [],
"ecosystem": "go",
"matches_repo": true,
"registry_url": "https://pkg.go.dev/github.com/0xmhha/code-knowledge-graph",
"is_deprecated": false,
"latest_version": "v0.1.0",
"repository_url": "https://github.com/0xmhha/code-knowledge-graph",
"versions_count": 1,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": null,
"monthly_downloads": null,
"first_published_at": null,
"latest_published_at": "2026-07-18T16:58:15Z",
"latest_version_yanked": null,
"days_since_latest_publish": 6
}
]
},
"popularity": {
"forks": 0,
"stars": 1,
"watchers": 0,
"fork_history": {
"days": [],
"complete": true,
"collected": 0,
"total_forks": 0
},
"star_history": null,
"open_issues_and_prs": 4
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [
"sample"
],
"has_llms_txt": false,
"has_dockerfile": false,
"has_mcp_signal": false,
"bootstrap_files": [
"Makefile"
],
"api_schema_files": [
"internal/parse/golang/testdata/distributed/grpc.proto",
"internal/parse/proto/testdata/edge_cases/edge.proto",
"internal/parse/proto/testdata/multi_service/orders.proto",
"internal/parse/proto/testdata/nested_messages/nested.proto",
"internal/parse/proto/testdata/simple/echo.proto"
],
"has_devcontainer": false,
"typecheck_configs": [
"testdata/synthetic/ts-frontend/tsconfig.json",
"web/viewer-next/tsconfig.json"
],
"toolchain_manifests": [
"eval/ckv-mirror/corpus/go.mod",
"go.mod",
"internal/buildpipe/testdata/lock_propagation/go.mod",
"internal/buildpipe/testdata/multilang_v6_markers/backend/go.mod",
"internal/parse/golang/testdata/concurrency/go.mod",
"internal/parse/golang/testdata/context_paths/go.mod",
"internal/parse/golang/testdata/distributed/go.mod",
"internal/parse/golang/testdata/implements/go.mod",
"internal/parse/golang/testdata/implements_xpkg/go.mod",
"internal/parse/golang/testdata/resolve/go.mod",
"internal/parse/golang/testdata/uses_type/go.mod",
"testdata/synthetic/go-backend/go.mod"
],
"largest_source_bytes": 2354491,
"source_files_sampled": 549,
"oversized_source_files": 4,
"agent_instruction_files": [
"CLAUDE.md"
],
"agent_instruction_max_bytes": 6526
},
"dependencies": {
"manifests": [
"go.mod"
],
"advisories": {
"error": null,
"scope": null,
"source": null,
"findings": [],
"collected": false,
"malicious": [],
"truncated": false,
"by_severity": {},
"advisory_count": 0,
"affected_count": 0,
"assessed_count": 0,
"malicious_count": 0,
"assessed_package": null,
"unassessed_count": 0,
"direct_affected_count": 0
},
"ecosystems": [
"go"
],
"dependencies": [
{
"name": "github.com/fsnotify/fsnotify",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.10.1"
},
{
"name": "github.com/jackc/pgx/v5",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v5.10.0"
},
{
"name": "github.com/mark3labs/mcp-go",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.56.0"
},
{
"name": "github.com/spf13/cobra",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.10.2"
},
{
"name": "github.com/tree-sitter/go-tree-sitter",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.25.0"
},
{
"name": "github.com/tree-sitter/tree-sitter-javascript",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.25.0"
},
{
"name": "github.com/tree-sitter/tree-sitter-typescript",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.23.2"
},
{
"name": "golang.org/x/tools",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.48.0"
},
{
"name": "gopkg.in/yaml.v3",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v3.0.1"
},
{
"name": "modernc.org/sqlite",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.54.0"
}
],
"all_dependencies": {
"error": "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
"source": null,
"packages": [],
"collected": false,
"truncated": false,
"total_count": null,
"direct_count": null,
"indirect_count": null
}
},
"maintainership": {
"issues": {
"open_prs": 4,
"merged_prs": 52,
"open_issues": 0,
"closed_ratio": null,
"closed_issues": 0,
"closed_unmerged_prs": 14
},
"bus_factor": 1,
"bot_contributors": 1,
"top_contributors": [
{
"type": "User",
"login": "0xmhha",
"commits": 628,
"avatar_url": "https://avatars.githubusercontent.com/u/82016792?v=4"
}
],
"contributors_sampled": 1,
"top_contributor_share": 1
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"ci.yml"
],
"has_docs_dir": true,
"linter_configs": [
"eslint.config.mjs"
],
"has_editorconfig": false,
"has_linter_config": true,
"has_precommit_config": false
},
"security_signals": {
"lockfiles": [
"go.sum",
"package-lock.json"
],
"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": 3,
"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": 9,
"reason": "20 out of 22 merged PRs checked by a CI test -- score normalized to 9",
"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/22 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": 10,
"reason": "license file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
},
{
"name": "Maintained",
"score": 10,
"reason": "30 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": 2,
"reason": "dependency not pinned by hash detected -- score normalized to 2",
"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": 0,
"reason": "13 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "ddb2bff04ce4f22f1851d5e885f555e7ff3b1bcc",
"ran_at": "2026-07-24T19:43:19Z",
"aggregate_score": 4.6,
"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-23T13:45:35Z",
"oldest_open_prs": [
{
"number": 67,
"created_at": "2026-07-23T13:43:54Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 68,
"created_at": "2026-07-23T13:44:49Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 69,
"created_at": "2026-07-23T13:45:06Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 70,
"created_at": "2026-07-23T13:45:31Z",
"last_comment_at": null,
"last_comment_author": null
}
],
"last_merged_pr_at": "2026-07-18T16:58:16Z",
"ci_last_conclusion": "SUCCESS",
"oldest_open_issues": []
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/0xmhha/code-knowledge-graph",
"host": "github.com",
"name": "code-knowledge-graph",
"owner": "0xmhha"
},
"metrics": {
"overall": {
"key": "overall",
"band": "moderate",
"name": "Overall health",
"note": null,
"notes": [],
"value": 56,
"inputs": {
"security": 46,
"vitality": 78,
"community": 24,
"governance": 49,
"engineering": 75
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "good",
"name": "Vitality",
"value": 78,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "good",
"name": "Development activity",
"note": null,
"notes": [],
"value": 74,
"inputs": {
"commits_last_year": 645,
"human_commit_share": 0.83,
"days_since_last_push": 1,
"active_weeks_last_year": 14
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 1 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "push_recency",
"params": {
"days": 1
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "14/52 weeks with commits",
"points": 9.7,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 14
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "645 commits in the last year",
"points": 18,
"status": "met",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 645
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "30 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": 1,
"latest_release_tag": "v0.1.0",
"releases_from_tags": false,
"days_since_latest_release": 6,
"mean_days_between_releases": null
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "1 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 1
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 6 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 6
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "cadence unknown (single release)",
"points": 12.6,
"status": "partial",
"details": [
{
"code": "release_cadence_unknown",
"params": {}
}
],
"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": "unverified",
"guards": [],
"signals": [],
"red_flag": false,
"multiplier_pct": 100,
"declared_reason": null,
"unverified_reason": "repository_too_young",
"unanswered_open_prs": null,
"unanswered_open_issues": null,
"days_since_last_merged_pr": null,
"days_since_last_human_commit": null,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "maintenance record not established from the collected data",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_unverified",
"params": {}
}
],
"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": 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": "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 (AGPL-3.0)",
"points": 22.5,
"status": "met",
"details": [
{
"code": "license_standard",
"params": {}
},
{
"code": "license_spdx",
"params": {
"spdx": "AGPL-3.0"
}
}
],
"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": "at_risk",
"name": "Sustainability & Governance",
"value": 49,
"weight": 0.24,
"metrics": [
{
"key": "maintainer_resilience",
"band": "critical",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 20,
"inputs": {
"bus_factor": 1,
"contributors_sampled": 1,
"top_contributor_share": 1
},
"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,
"status": "missed",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 100
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "1 contributors",
"points": 1.4,
"status": "partial",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 1
}
}
],
"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": "Excluded from scoring (no data or not applicable): Issue resolution. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"issue_resolution"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 57,
"inputs": {
"merged_prs": 52,
"open_issues": 0,
"closed_issues": 0,
"issue_closed_ratio": null,
"closed_unmerged_prs": 14
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "no issues or no data",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_issues_or_data",
"params": {}
}
],
"max_points": 46.75
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "52/66 decided PRs merged",
"points": 30.1,
"status": "partial",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 52,
"decided": 66
}
}
],
"max_points": 38.25
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 0/22 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "at_risk",
"name": "Ownership & stewardship",
"note": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"verified_domain"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 47,
"inputs": {
"followers": 3,
"owner_type": "User",
"is_verified": null,
"owner_login": "0xmhha",
"public_repos": 81,
"account_age_days": 1935
},
"components": [
{
"key": "ownership_backing",
"name": "Ownership backing",
"detail": "personal (user) account",
"points": 10,
"status": "partial",
"details": [
{
"code": "owner_personal",
"params": {}
}
],
"max_points": 30
},
{
"key": "verified_domain",
"name": "Verified domain",
"detail": "not applicable to user accounts",
"points": 0,
"status": "excluded",
"details": [
{
"code": "not_applicable_to_user_accounts",
"params": {}
}
],
"max_points": 20
},
{
"key": "owner_reach",
"name": "Owner reach",
"detail": "3 followers of 0xmhha",
"points": 4.3,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 3,
"login": "0xmhha"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "81 public repos, account ~5 yr old",
"points": 23.6,
"status": "partial",
"details": [
{
"code": "public_repos",
"params": {
"count": 81
}
},
{
"code": "account_age_years",
"params": {
"years": 5
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "good",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 84,
"inputs": {
"packages": [
"github.com/0xmhha/code-knowledge-graph"
],
"ecosystems": "go",
"any_deprecated": false,
"min_days_since_publish": 6
},
"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 6 days ago",
"points": 35,
"status": "met",
"details": [
{
"code": "publish_recency",
"params": {
"days": 6
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "1 published versions",
"points": 4,
"status": "partial",
"details": [
{
"code": "published_versions",
"params": {
"count": 1
}
}
],
"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": 75,
"weight": 0.2,
"metrics": [
{
"key": "engineering_practices",
"band": "good",
"name": "Engineering practices",
"note": null,
"notes": [],
"value": 82,
"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": "eslint.config.mjs",
"points": 16,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "eslint.config.mjs"
}
}
],
"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": "20 out of 22 merged PRs checked by a CI test -- score normalized to 9",
"points": 18,
"status": "partial",
"details": [],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "moderate",
"name": "Documentation",
"note": null,
"notes": [],
"value": 65,
"inputs": {
"topics": [],
"has_wiki": true,
"homepage": null,
"has_readme": true,
"has_docs_dir": true,
"has_description": false
},
"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": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
},
{
"key": "repository_description",
"name": "Repository description",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
},
{
"key": "topics",
"name": "Topics",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
},
{
"key": "wiki",
"name": "Wiki",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
}
],
"description": "Are baseline engineering and documentation practices in place?"
},
{
"key": "security",
"band": "at_risk",
"name": "Security",
"value": 46,
"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": 46,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 16,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 2,
"scorecard_aggregate": 4.6
},
"components": [
{
"key": "binary_artifacts",
"name": "Binary-Artifacts",
"detail": "no binaries found in the repo",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "branch_protection",
"name": "Branch-Protection",
"detail": "branch protection is not maximal on development and all release branches",
"points": 2.2,
"status": "partial",
"details": [],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "20 out of 22 merged PRs checked by a CI test -- score normalized to 9",
"points": 2.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 0/22 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 detected",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "maintained",
"name": "Maintained",
"detail": "30 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 2",
"points": 1,
"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": "13 existing vulnerabilities detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
}
]
},
{
"key": "high_risk_jurisdiction_exposure",
"band": "excellent",
"name": "High-Risk Jurisdiction Exposure",
"note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
"notes": [
{
"code": "jurisdiction_evidence_limits",
"params": {}
}
],
"value": 100,
"inputs": {
"meaning": "self-published location evidence; not nationality or citizenship",
"red_flag": false,
"exposures": [],
"policy_countries": [
"Russia",
"Iran",
"North Korea"
],
"review_only_matches": 0,
"assessed_self_published_locations": 3
},
"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": "excellent",
"name": "AI Readiness",
"value": 85,
"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": [
"CLAUDE.md"
],
"agent_instruction_max_bytes": 6526
},
"components": [
{
"key": "agent_instructions",
"name": "Agent instructions",
"detail": "CLAUDE.md",
"points": 45,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "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": "83 of 83 human commits state their intent (structured subject or explanatory body)",
"points": 40,
"status": "met",
"details": [
{
"code": "legible_history",
"params": {
"legible": 83,
"sampled": 83
}
}
],
"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",
"package-lock.json"
],
"has_dockerfile": false,
"typed_language": true,
"bootstrap_files": [
"Makefile"
],
"has_devcontainer": false,
"has_linter_config": true,
"typecheck_configs": [
"testdata/synthetic/ts-frontend/tsconfig.json",
"web/viewer-next/tsconfig.json"
],
"agent_commit_share": 0,
"toolchain_manifests": [
"eval/ckv-mirror/corpus/go.mod",
"go.mod",
"internal/buildpipe/testdata/lock_propagation/go.mod",
"internal/buildpipe/testdata/multilang_v6_markers/backend/go.mod",
"internal/parse/golang/testdata/concurrency/go.mod",
"internal/parse/golang/testdata/context_paths/go.mod",
"internal/parse/golang/testdata/distributed/go.mod",
"internal/parse/golang/testdata/implements/go.mod",
"internal/parse/golang/testdata/implements_xpkg/go.mod",
"internal/parse/golang/testdata/resolve/go.mod",
"internal/parse/golang/testdata/uses_type/go.mod",
"testdata/synthetic/go-backend/go.mod"
],
"dependency_bot_commit_share": 0.17
},
"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": "eslint.config.mjs",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "eslint.config.mjs"
}
}
],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": "testdata/synthetic/ts-frontend/tsconfig.json, web/viewer-next/tsconfig.json",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "testdata/synthetic/ts-frontend/tsconfig.json, web/viewer-next/tsconfig.json"
}
}
],
"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": "no agent-authored commits among the last 100",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_agent_authored_commits",
"params": {
"sampled": 100
}
}
],
"max_points": 10
},
{
"key": "automated_maintenance",
"name": "Automated maintenance",
"detail": "17 of the last 100 commits are automated dependency updates",
"points": 8,
"status": "met",
"details": [
{
"code": "dependency_bot_commits",
"params": {
"count": 17,
"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 2",
"points": 2,
"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": 2354491,
"source_files_sampled": 549,
"oversized_source_files": 4
},
"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": "4/549 source files over 60KB",
"points": 54.6,
"status": "partial",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 549,
"oversized": 4
}
}
],
"max_points": 55
}
]
},
{
"key": "ai_interfaces",
"band": "good",
"name": "Machine-readable interfaces",
"note": null,
"notes": [],
"value": 80,
"inputs": {
"example_dirs": [
"sample"
],
"has_mcp_signal": false,
"api_schema_files": [
"internal/parse/golang/testdata/distributed/grpc.proto",
"internal/parse/proto/testdata/edge_cases/edge.proto",
"internal/parse/proto/testdata/multi_service/orders.proto",
"internal/parse/proto/testdata/nested_messages/nested.proto",
"internal/parse/proto/testdata/simple/echo.proto"
]
},
"components": [
{
"key": "api_schema_openapi_graphql_proto",
"name": "API schema (OpenAPI/GraphQL/proto)",
"detail": "internal/parse/golang/testdata/distributed/grpc.proto, internal/parse/proto/testdata/edge_cases/edge.proto, internal/parse/proto/testdata/multi_service/orders.proto, internal/parse/proto/testdata/nested_messages/nested.proto, internal/parse/proto/testdata/simple/echo.proto",
"points": 40,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "internal/parse/golang/testdata/distributed/grpc.proto, internal/parse/proto/testdata/edge_cases/edge.proto, internal/parse/proto/testdata/multi_service/orders.proto, internal/parse/proto/testdata/nested_messages/nested.proto, internal/parse/proto/testdata/simple/echo.proto"
}
}
],
"max_points": 40
},
{
"key": "mcp_server",
"name": "MCP server",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 20
},
{
"key": "runnable_examples",
"name": "Runnable examples",
"detail": "sample",
"points": 40,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "sample"
}
}
],
"max_points": 40
}
]
}
],
"description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
}
],
"metrics_version": "1.13.0"
},
"warnings": [
"Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
"GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
],
"report_type": "repository",
"generated_at": "2026-07-24T19:43:32.711452Z",
"schema_version": "0.27.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/0/0xmhha/code-knowledge-graph.svg",
"full_name": "0xmhha/code-knowledge-graph",
"license_state": "standard",
"license_spdx": "AGPL-3.0"
}