Raw JSON report machine-readable
{
"data": {
"repo": {
"topics": [],
"is_fork": false,
"size_kb": 9954,
"has_wiki": false,
"homepage": null,
"languages": {
"Go": 1502174,
"Shell": 6010,
"Makefile": 3945
},
"pushed_at": "2026-07-08T13:12:36Z",
"created_at": "2026-05-23T08:20:45Z",
"owner_type": "User",
"updated_at": "2026-07-01T13:55:58Z",
"description": "Go 原生 CLI 编码 Agent",
"is_archived": false,
"is_disabled": false,
"license_spdx": "Apache-2.0",
"default_branch": "main",
"license_spdx_raw": "Apache-2.0",
"primary_language": "Go",
"significant_languages": [
"Go"
]
},
"owner": {
"blog": null,
"name": "清元子",
"type": "User",
"login": "wzhejunqiu",
"company": null,
"location": "Suzhou, China",
"followers": 37,
"avatar_url": "https://avatars.githubusercontent.com/u/6554707?v=4",
"created_at": "2014-01-31T15:11:22Z",
"is_verified": null,
"public_repos": 93,
"account_age_days": 4555
},
"license": {
"state": "standard",
"spdx_id": "Apache-2.0",
"raw_spdx": "Apache-2.0",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "v0.1.5",
"kind": "patch",
"published_at": "2026-07-01T14:08:02Z"
},
{
"tag": "v0.1.4",
"kind": "patch",
"published_at": "2026-06-29T16:26:33Z"
},
{
"tag": "v0.1.3",
"kind": "patch",
"published_at": "2026-06-20T15:10:44Z"
},
{
"tag": "v0.1.2",
"kind": "patch",
"published_at": "2026-06-20T10:32:40Z"
},
{
"tag": "v0.1.1",
"kind": "patch",
"published_at": "2026-06-19T11:30:42Z"
},
{
"tag": "v0.1.0",
"kind": "minor",
"published_at": "2026-06-12T15:49:12Z"
}
],
"recent_commits": [
{
"oid": "faf77cdf45eabcc68f2f9d90ec4b19b3341b4617",
"body": "v0.1.5: web_fetch permission policy, interactive allowlist, and OpenTelemetry tracing",
"is_bot": false,
"headline": "Merge pull request #2 from wzhejunqiu/v0.1.5",
"author_name": "清元子",
"author_login": "wzhejunqiu",
"committed_at": "2026-07-01T13:55:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9c8c6fdd0873bef917e999619c6a52502f47c0bf",
"body": "Add SSRF-aware skips in permission web tests when example.com is blocked by DNS in the environment.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "docs(v0.1.5): cut release and mark acceptance docs as implemented",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-07-01T13:31:02Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "bf77310edacedb78299a37aab58a62221d024765",
"body": "appendUniqueAllowlist compares normalized hostnames directly instead of\nhostAllowed, which wrongly treated unresolvable .test entries as absent.\nUse example.net in SSRF-dependent tests. Isolate HOME in trace/logging\nintegration tests to prevent cross-test pollution.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "fix(permission): correct allowlist dedup and web_fetch test hosts",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-07-01T13:14:19Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "b98ccab18dff88e87e8c3872289342f52d213754",
"body": "Add optional OTel spans (run_turn, llm.chat, tool.*, subagent.*) and\ntraceCore/logctx so logging.L() auto-injects trace_id/span_id; support\nlog and otlp exporters via YAML/CLI, default off.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "feat(trace): implement OpenTelemetry tracing with log correlation",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-30T16:13:16Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "7e8fa7d685d29ed565371fc6e5a4f3358cf964e0",
"body": "Document FR-8 OTel log correlation with traceCore/logctx global injection,\nCLI and YAML config entry points, span boundaries, and AC-8 acceptance criteria.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "docs(v0.1.5): add OpenTelemetry trace/span logging design",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-30T14:33:41Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "452cd7995a0994ff2e0b1a504c616d16e44730e0",
"body": "Wire web_fetch into Engine.Check, document the allowlist breaking change,\nand add tests for AllowAlways persistence, redirect hops, TUI keys, and\nspawn web permission field copying.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "fix(web): close v0.1.5 review gaps for Check, tests, and changelog",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-30T14:02:29Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "69ea8253e9b0ed839f1ffb347009341884801d9e",
"body": "…odes\n\nMode-aware web_fetch policy lets readonly/ask use allowlist presets with\nper-host prompts while auto relies on SSRF rules only; introduce\npermissionmode package and TUI approval overlay.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "feat(web): add interactive web_fetch allowlist and typed permission m…",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-30T13:49:44Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "d6894253b650cacb80d27c758e99e48cc89bc2b4",
"body": "Define v0.1.5 scope to move web_fetch host policy into permission,\nwith three-choice prompts and project-level allowlist persistence.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "docs(v0.1.5): add web allowlist permission requirements",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-30T12:36:06Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "e1b8e3a56cf2080c9f34d1d150d10d379211e5f7",
"body": "Tamper self-heal unlinks ~/.ds-code/bin/rg; parallel grep tests failed with\n\"no such file\" when sharing the same install path on CI.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "fix(rgbin): isolate test HOME to avoid racing grep package tests",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-29T15:42:52Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "be706e12090f8b303ac97e49f04b3cf0bc1554c1",
"body": "grep and rgbin tests run packages in parallel; overwriting an executing rg\nbinary failed with \"text file busy\" in CI.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "fix(rgbin): unlink rg before replace to avoid ETXTBSY on Linux",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-29T15:37:59Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "71abee1404d9cc062f7f67e80521f2d9a5eefe15",
"body": "Use version.Name via {{.AppName}} in prompt.md, clarify snake_case\nexample wording, and mark system prompt as finalized in v0.1.4 docs.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "feat(prompt): inject AppName into system prompt template",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-29T15:36:42Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "35eeeab4945f87386a520d7e8e65bb5abbad4661",
"body": "Finalize CHANGELOG 0.1.4 with deferred prompt scope, add Makefile\nripgrep fetch deps for local vet/lint/verify-release, and sync v0.1.4\nacceptance and contributing docs for the release.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "chore(release): prepare v0.1.4 changelog and docs",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-29T15:26:42Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "00063e96f8818abd17194b190df2d3bb860539dc",
"body": "Normalize amd64/arm64 aliases and map linux x86_64 to musl / aarch64 to gnu\nper upstream release layout; simplify musl docker builds to rely on uname.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "fix(ci): align ripgrep fetch with 15.1.0 release assets",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-29T15:22:34Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "1911ee348fe1f19a340cdea8a3267352ff2e84e6",
"body": "CI runners lack system rg; keep the charm v2 guard in check-commit instead.\nAlso use example.com in web_fetch tests so allowlist DNS checks pass on CI.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "fix(ci): move verify-charm-v2 to pre-commit hook",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-29T15:09:25Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "5df0d8c3334868915daa960f3b1ecf4b8a1109eb",
"body": "ripgrep 15.1.0 no longer publishes x86_64-unknown-linux-gnu; CI fetch returned 404.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "fix(ci): use musl ripgrep tarball for linux x86_64",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-29T15:03:07Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "9c4a3e835133c6b1a46a5ffe19db26ac7eb7c26f",
"body": "rg.tar.gz is gitignored but required by go:embed in rgbin; CI was failing at go vet without it.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "fix(ci): fetch bundled ripgrep before vet, test, and release builds",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-29T14:56:18Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "5b5f37b2b1c0a6267e7756546e5cd35594ff57de",
"body": "Co-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "docs(config): document web.allowlist host matching rules in example.yaml",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-29T14:49:30Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "86bc57d3d79b4f1cb912441b64c5123c8d985aad",
"body": "…tidy\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "chore(deps): promote html-to-markdown to direct require after go mod …",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-29T14:34:03Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "f577d3adddaa70103d696c203d063193ed722f1d",
"body": "Extend web_fetch with fetch→Markdown→flash analysis, LRU cache, and redirect\nhandling; unify API user_id via datadir.Identifier() and centralize product\nconstants in internal/version.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "feat(web_fetch): add analyze pipeline and install-scoped LLM user_id",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-29T14:33:00Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "d8007024eabe83df2054ab23290d455758f6ef11",
"body": "Drop the shallow directory listing tool and route exploration to glob.\nUpdate bash/spawn prompts and v0.1.4 docs; keep TUI display for legacy sessions.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "feat(tool): remove list_dir; file exploration via glob only",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-29T12:40:22Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "89cc9ff690d88250d6722e532e24fcd8c13ae0ed",
"body": "Make the full config template self-documenting with per-key comments, fix tools.task → tools.agent, and add missing keys.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "docs(config): annotate example.yaml with field meanings and impacts",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-25T16:11:18Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "7028c8f6856a45a1ebdf8ad34cd6df66a3ab1399",
"body": "Restrict L1 context snip to context-too-long recovery only, wire background\nagent completion callbacks, and refresh agent prompts plus runtime env.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "feat(tui): sticky chat scroll and auto-resume background notifications",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-25T16:08:21Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "1bc15b602dcb40d55ea1185451213c5e0a47f098",
"body": "Rewrite the agent tool description via usage.prompt, expose only general-purpose\nand Explore to the model, remove LLM model/isolation params, and replace sync\npromote with sync_timeout (default 2h) plus parent-session model resolution.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "feat(agent): add FR-0 Chinese prompts and narrow LLM spawn surface",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-25T14:04:29Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "6bdc2f567991378be416872f2497a2112a7cc403",
"body": "Rewrite write_file description via usage.prompt and enforce read_file\nbefore overwriting existing files, matching apply_patch readgate behavior.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "feat(write_file): add FR-0 prompts and read-before-write guard",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-25T12:34:40Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "eb9cafbd57e24684cd04c8d45fe652b8ce3763f0",
"body": "Migrate glob to bundled ripgrep 15.1.0 (--files), share rg execution\nhelpers via rgutil, align output with grep (Found N files), add FR-0\nusage.prompt, and expose respect_gitignore/include_hidden config keys.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "feat(glob): replace globmatch with ripgrep --files backend",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-24T14:02:33Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "8da09a6f0b3ab3f6876a722059388de17b6d44bc",
"body": "Skip full SHA256 on each grep when ~/.ds-code/bin/rg size and mtime are\nunchanged; re-verify and self-heal when metadata changes or hash mismatches.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "perf(grep): cache bundled rg validation across calls",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-23T16:00:22Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "d6f069d41cc0167267e3a40da8ee90dfbe7654c3",
"body": "Migrate grep to bundled/system/path ripgrep, Claude-aligned schema and\noutput formats, FR-0 usage.prompt with Chinese schema text, and v0.1.4\ndocs (FR-6). Build/test depend on fetch-ripgrep; rgbin embeds tar.gz only.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "feat(grep): replace pure-Go search with ripgrep 15.1.0 backend",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-23T15:50:57Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "23e0a9b68f86086049a3d92548fbe1d6a72796c7",
"body": "Co-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "chore(read_file): align usage.prompt rule heading with apply_patch style",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-22T15:21:14Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "ea57efcb77fba89190a8de295575e565236b95be",
"body": "Migrate apply_patch to usage.prompt + RenderDesc, and enforce that\nupdate/delete paths must be read_file'd in an earlier sub-round while\nforbidding read+patch on the same file in one assistant tool batch.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "feat(apply_patch): add FR-0 prompts and read-before-edit guard",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-22T15:18:42Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "d5532f0bc65912739a730a201a1efe140d918829",
"body": "Rename read_file prompt.md to usage.prompt and align v0.1.4 FR-0 docs\nwith the same filename convention as bash.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "refactor(tools): standardize builtin Description on usage.prompt",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-22T13:38:10Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "a28e4c6faab7ac8adcbbee463f2b4fbd918f7116",
"body": "Rewrite read_file Description via prompt.md + RenderDesc(), update Schema\nand permission/display wiring, sync tool docs and v0.1.4 prompt ledger.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "feat(read_file): migrate prompt to FR-0 and rename path to filepath",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-22T13:24:48Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "1de5a2a653599d51fc58758f00687dd185b2340f",
"body": "Document the evolution path for a desktop ds-code client, including streaming\nIPC design, TypeScript frontend choices, and optional HTML output mode.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "docs: add desktop app feasibility study for Go + Wails + TypeScript",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-22T12:55:30Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "11bca3e680000713d08957b7ed059deeecae2b3f",
"body": "Add sync/background execution, timeout, args parsing, and output formatting tests to raise shell package coverage from 71% to 94%.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "test(shell): expand builtin shell tool test coverage",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-21T10:54:58Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "7899c810bba2eea1342609217c6e5626b773a1a2",
"body": "Remove redundant ErrCommandRequiredSync; sync and background paths share\none empty-command error. Tighten timeout_ms schema description.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "chore(bash): dedupe ErrCommandRequired and shorten SchemaTimeoutMs",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-21T10:50:30Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "9b66bcdada074ee2ec64e0263e369db448d191b4",
"body": "Co-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "chore(bash): shorten SchemaShellCommand schema text",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-21T10:47:10Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "895fe375e93829ec67bf12936edf309160cb40a3",
"body": "Replace fire-and-forget job polling with OS-background jobs that block\nuntil complete while allowing concurrent bash calls in one turn. Add\ntimeout_ms (sync and background), TUI running countdown, and keep partial\nstdout/stderr when waits time out or are cancelled.\n\nBreaking: background→run_in_backg\n[…]\nemove job_id, list_jobs, and cancel\nfrom the LLM schema. Update shelljobs manager, orchestration, docs, and\nmove filecandidate into its own subpackage.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "feat(v0.1.4): rework bash with timeout_ms and blocking run_in_background",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-21T10:46:44Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "dff9b00f1531e0524a4c6544bd13ca78721f80e3",
"body": "Co-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "feat(v0.1.4): rewrite builtin tool prompts and rename shell tool to bash",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-20T16:37:16Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "69ba9e1da211996660bc3821c3a493f86e57e6cf",
"body": "…sh rename\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "docs(v0.1.4): add planning docs for tool prompts rewrite and shell→ba…",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-20T16:37:05Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "eb043d56855d400dff20bd5f25fce4940f00c1ec",
"body": null,
"is_bot": false,
"headline": "docs(v0.1.3): mark release as published in acceptance and README",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-20T15:15:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5e4be64e8bfc5f5b9a3bb7ccab7ebd316a9d7efc",
"body": "v0.1.3: Bubble Tea v2 migration, virtual chat list, and release prep",
"is_bot": false,
"headline": "Merge pull request #1 from wzhejunqiu/v0.1.3",
"author_name": "清元子",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-20T14:59:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "27bddb5967a2628120eab6e514cee74e41d8825c",
"body": "Add the remaining §6.2 suggested tests, update ACCEPTANCE checkboxes,\nexpand CHANGELOG with Fixed entries and perf note, and refresh v0.1.3 docs.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "test(v0.1.3): close acceptance test gaps and expand release notes",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-20T14:55:02Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "165c2e4dbfb9b61f711c2f73ef0d707c4d1dc9ac",
"body": "Add verify-charm-v2 to CI, passthrough safe_model fallback View metadata,\nand tests for worktree @ expand, virtual list, and v2 TUI behaviors.\nSync v0.1.3 acceptance docs to implemented status.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "test(v0.1.3): close acceptance gaps with CI guard and coverage",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-20T14:40:03Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "bc027ba9dfce78317e8a73e92500132909cc341a",
"body": "Tab in slash completion now applies the cursor item like Enter, instead of always selecting the first entry.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "fix(v0.1.3): confirm highlighted slash command on Tab",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-20T14:25:22Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "b2fbf96bd0fb01c14c344dddb919313e17acd527",
"body": "Invalidate stale resume list fetches when the picker closes, resync completion\nafter SessionResumed, and reserve overlay rows in Layout so command lists stay\nvisible above the footer even with long transcripts.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "fix(v0.1.3): restore slash completion after /resume session restore",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-20T14:15:09Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "7c06bfbf9e9e23ba2b727768a5a4f78356f61fdd",
"body": "…ild for TUI chat\n\nAvoid materializing the full styled transcript by rendering only the visible viewport window and incrementally updating plain lines from the first dirty block.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "perf(v0.1.3): on-demand styled rendering and incremental catalog rebu…",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-20T13:59:07Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "6ecedddd39a2bca4d1c7fdc6894e2c3ecba1305c",
"body": "Move the interactive stack to charm.land v2, replace HP viewport sync with\nLineCatalog windowed rendering and chatScrollY, and complete deferred items\n(AtExpander in subagents, IsSensitiveAbs cleanup, selection/clipboard updates).\nFix /resume and startup history load to scroll to the latest messages.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "feat(v0.1.3): migrate TUI to Bubble Tea v2 and virtual chat list",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-20T13:48:22Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "ac58382b85cdb9b4b2e0876eef456198573ab783",
"body": "Close gaps found against v0.1.2 code: toolVP HP removal, PromptCh dual\nchannel, virtual-list YOffset/resize, safeModel View passthrough, and tests.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "docs(v0.1.3): fifth-round audit for Bubble Tea v2 migration",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-20T12:58:29Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "46a692bfc4366003f56bea5b719d3513d32bfd4a",
"body": "Capture requirements, design, acceptance, and a three-round audit for\nthe charm.land v2 upgrade, HP removal chain, and deferred v0.1.2 items.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "docs(v0.1.3): add Bubble Tea v2 migration planning docs",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-20T12:20:35Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "59c896af649eee5c73b1bfa8125137d599a19f8f",
"body": "Point install curl examples at releases/latest/download so download\nlinks stay stable across version bumps without editing README.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "docs: use latest release URLs in README",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-20T10:22:20Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "9b29e15dad5ff314accb14f5e016101097b2a486",
"body": "Finalize v0.1.2 release notes (smooth scroll, TUI fixes), sync AC-8.4\nwith selDragging-only HP behavior, and check off CI gates in ACCEPTANCE.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "docs(v0.1.2): complete CHANGELOG and acceptance for release",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-20T10:13:50Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "aadbc299f05d2286385831a1d702afb755558fc0",
"body": "Only disable viewport high-performance scrolling while dragging selection so retained highlights no longer block mouse wheel scrolling.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "fix(v0.1.2): keep wheel scroll working after copy-on-select",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-20T10:04:51Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "d27e5bc2d27da21480010a046566e174386cc6ac",
"body": "Buffer split xterm mouse escape sequences before they reach textinput so wheel scrolling no longer fills the prompt with garbage in iTerm2.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "fix(v0.1.2): reassemble leaked SGR mouse wheel input in iTerm2",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-20T09:57:55Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "1bf07067be0bd2d30952e55e11bdd899baaae1bb",
"body": "…nment\n\nEnable HighPerformanceRendering with Sync on resume, history load, and wheel\nscroll so the chat viewport renders immediately; strip @ expansion blocks in\nContentForDisplay to keep resumed user prompts unchanged; align spill-read\ndocs with FR-4.15 and add missing acceptance tests.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "fix(v0.1.2): HP viewport sync, @ ref TUI display, and acceptance alig…",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-19T19:25:39Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "6630c20cb5e56fca9f12c72ac8c78dc2539319d0",
"body": "…history\n\nImplement proportional/adaptive pending drain for chat/tool viewports with HP rendering, and strip task-notification XML from persisted user messages before TUI display.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "feat(v0.1.2): TUI smooth wheel scroll and hide task notifications in …",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-19T18:58:11Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "c8c4744b8c73e60fb40209bf79ef2cdf2fa9727e",
"body": "Expand read_file to allow any regular file under the project data directory\n(mcp-result, agents, sessions.db) instead of session-bound .txt only; add\nSavedResultHint to MCP and subagent spill returns.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "feat(v0.1.2): unify project data read and SavedResultHint for spills",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-19T18:15:38Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "d7c23e1b0328b9179227d624cd49d4fb09d7a444",
"body": "Long-running tasks were hitting the previous 25/8 sub-round limits too often.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "chore(agent): raise default max_turns to 500 for main and sub agents",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-19T16:56:00Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "3ff8e8072d8268cbccc01c46af1012cc7e40fa9d",
"body": "@dir/ now injects a sorted file path list instead of preloading file\nbodies, and user prompts keep @path anchors in the original sentence so\nreferences stay semantically linked to expanded blocks.\n\nAlso fix pre-commit package resolution for Go 1.26 go list -find behavior.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "fix(context): align @dir/ with Claude Code listing semantics",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-19T16:54:58Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "20a82f7e88229cad3b54dc25de4ac53284ab724f",
"body": "补全 MCP spill、权限、搜索、TUI 选区等验收单测;修复子代理 FilterToolRegistry/RebindRegistryPerm 丢失 MCP 元数据导致不写 spill 的问题;补充 DESIGN §10.3 Engine 路径 API 文档。\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "test(v0.1.2): add acceptance coverage and fix child MCP spill registry",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-19T16:10:08Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "61b75351df8e3fc8e5e397e331972fd037484373",
"body": "Unify path checks on permission.Engine, spill MCP results for read_file,\ndrop gitignore-based enumeration in favor of searchskip, and add in-app\nselection with clipboard fallback for the interactive TUI.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "feat(v0.1.2): path policy, MCP spill, search visibility, and TUI copy",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-19T15:43:23Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "044d72fcce309906ed767a3c8df0990bd9f27dee",
"body": "Align MCP tool registry with AGENTS.md bare names, skip conflicts without\nblocking startup, and surface skips plus sensitive-log warnings in the TUI\nheader. Fix IsWriteTool to only apply to registered MCP tools after builtin\nconflicts. Reorganize baseline docs under docs/v0.1.0/ and add v0.1.1 specs.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "feat(v0.1.1): MCP bare names, TUI header notices, and docs reorg",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-19T10:33:10Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "fd07871c5d2781e99e658d48094dd7609690a3c4",
"body": "Redirect tests that touch ~/.ds-code/projects to a temporary HOME via\ntestutil.IsolatedHome so projectId directories are cleaned up automatically.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "test: isolate HOME to prevent leaking project data dirs",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-13T06:23:01Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "21f5da91317fdc9af792206a1f025959b57b5722",
"body": "Rewrite release workflow to checkout github.sha, run CI gate, build\nartifacts, and create the GitHub Release/tag from workflow_dispatch\nversion input. Add workflow_call to ci.yml for reuse.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "fix(release): dispatch-driven release with version input as tag",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-12T15:43:23Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "1cdcc5dd1feff5bc987a996340daeeb197f9742e",
"body": "Run govulncheck in check-commit/check-push so hooks match CI; upgrade\ngo.mod to fix stdlib vuln failures on go1.26.3. Document Windows install via WSL2.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "chore(ci): add vuln to git hooks and bump Go to 1.26.4",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-12T15:28:24Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "addcba245f1aa7a8a7b918726e4a9b86700169b8",
"body": "Add user-facing README, CHANGELOG, CONTRIBUTING, and SECURITY docs;\ndedupe release artifacts to six platforms and auto-fill Release notes\nfrom CHANGELOG. Introduce pre-commit/pre-push checks, default dev\nversion, spawn prompt localization, lint fix, and repo-wide gofmt.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "chore(release): prepare v0.1.0 docs, hooks, and release pipeline",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-06-12T15:10:20Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "b9d1a6292e18038d12161ae4e883be5f6c190bd8",
"body": "Raise tools.read_file.max_lines from 500 to 2000 so omitting limit reads\nthrough end of file (capped). Align truncation hints, schema, tests, and docs.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "feat(read_file): default to full-file read with max_lines 2000",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-05-30T16:56:43Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "aee579701992016ff3e97382910eca0c91b8a1bc",
"body": "Document tool_search/defer loading, agent spawn entry, and align per-tool\ndocs with current registration; add tools.defer_* to CONFIG.md v1.3.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "docs: refresh builtin tool design docs and CONFIG defer keys",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-05-30T16:35:35Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "5d48601c4aa77964001092e736722ab2616fd434",
"body": "Add cover/cover-html Makefile targets for local test coverage reports,\nand gitignore coverage.out and coverage.html so they are not committed.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "build: add make cover targets and ignore coverage artifacts",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-05-30T16:29:50Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "db6295901d1ed72fc518ba309950416a0f20e1da",
"body": "Unify config/session RunMode via internal/runmode, introduce PermissionMode\nand tool.Name constants, and reorganize spawn into agentdef/builtin packages.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "refactor: typed enums and spawn agentdef/builtin split",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-05-30T16:13:50Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "24251a518047641af161c20ae3b313219b393b96",
"body": "Preserve ephemeral summary prompt across compact/snip retries, degrade\ngracefully when the summary LLM fails, and document HookStop transition\nsemantics. Fix TUI markdown fence parsing for inline backticks, add CI\nmusl smoke build with version ldflags, and restrict release publishing\nto release events.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "fix(agent): harden MaxTurns soft landing and code review follow-ups",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-05-30T15:02:31Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "d7af9cf707bd9c7a0ba41f0d4e693d4daef36c73",
"body": "Coalesce chat viewport syncs to 33ms, reuse stable markdown and chat\nblock renders during streaming, and fix cache staleness on subagent nav\nand block resize while keeping the header in the scrollable viewport.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "perf(tui): add incremental render caches for streaming output",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-05-30T02:18:57Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "6b00610581bca98c39ffa87815fdd927dff5c5cf",
"body": "Use a refcounted shared holder so parent turns clear InActiveTurn for\ncontexts passed to background agents, and summarize progress instead of\nreturning a hard error when sub-round limits are reached.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "fix(agent): correct ActiveTurn lifecycle and MaxTurns soft landing",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-05-30T01:02:19Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "bb91ba4f6488d185a35853c0ec4ef9f8f4133413",
"body": "Replace the 2s statusTick loop with OnUsageUpdate events per LLM\nsub-round so idle sessions stop rebuilding API context repeatedly.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "fix(tui): refresh status bar on token usage instead of polling",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-05-29T17:46:17Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "cfc18401fd568a22a0894a4e3f730114e6f77dab",
"body": "Build and upload tar.gz assets on GitHub Release publish or manual workflow_dispatch with a tag input; CI keeps test/lint/vuln only.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "ci: move multi-platform builds to release workflow",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-05-29T17:14:21Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "226008c7c9281ef4aecbc3f2db55791fec7031b8",
"body": "Set CGO_LDFLAGS to -static -static-libgcc -static-libstdc++ for musl builds and verify on bare Alpine without runtime C++ libs.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "fix(ci): statically link musl binaries with libstdc++/libgcc",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-05-29T17:07:15Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "39ddefe55382863c23564d06d81de9f269c13957",
"body": "Musl binaries link libstdc++/libgcc dynamically; the bare golang:alpine verify container lacks those shared libraries.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "fix(ci): install libstdc++ runtime for musl verify step",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-05-29T17:03:51Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "91aad3b326a88d1c18711a2a40d0a0891d9a0a2c",
"body": "Alpine has no bash; use POSIX /bin/sh shebang and invoke explicitly in the musl Docker build step.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "fix(ci): run fetch-tokenizers-lib with sh on Alpine musl builds",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-05-29T16:56:52Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "cdbaaa7f888e612c597edf8c1318ba48e5ef706a",
"body": "Ubuntu musl-gcc still pulled glibc libstdc++/libgcc when linking tokenizers; use golang:alpine Docker for musl matrix jobs instead.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "fix(ci): build musl targets in Alpine to avoid glibc linker mix",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-05-29T16:50:29Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "8e6dedb281ca40a53860aff8c679b02c3615fdd9",
"body": "Upload cross-compiled ds-code binaries for Linux (glibc/musl) and macOS after tests pass, with fetch-tokenizers-lib supporting explicit arch overrides.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "ci: add multi-platform build artifacts to CI workflow",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-05-29T16:43:09Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "87cf1791b67268aff1e89aaaf5ab702081dfa287",
"body": "Unify spawn output inline/spill with tools.agent.summary_max_chars, restore\nsubagent isolation tests, tighten context-too-long 413 matching, and fold\nsubagent package into spawn with fork tool messages, XML notifications, and\nForSubagent fallback routing.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "refactor(spawn): consolidate subagent delivery and fix review findings",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-05-29T16:23:21Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "5d46c217ebc83affdea52f7ca3e3d6732d34c444",
"body": "Avoid canceling the child context before finishSync on the sync path;\nhand off cancel to waitPromoted only when the run is promoted to background.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "fix(spawn): defer runCtx cancel until runSync returns",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-05-25T15:35:26Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "ca3678c6821ba9660509bdbfc26e87bcef9a2971",
"body": "Co-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "fix(spawn): resolve golangci-lint issues in spawn and runner tests",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-05-25T15:29:48Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "a8eb00574f56b7d0d2f15a003796fae5c40c3212",
"body": "After git worktree add, apply cone sparse-checkout and symlink common\nlarge directories from the parent repo. Wire options through spawn\nservice and add configurable defaults.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "feat(worktree): sparse-checkout and symlink large dependency dirs",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-05-25T14:57:08Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "1c1af7acc7a9f3a7fbda126835661c80d5342aaa",
"body": "Inject ephemeral meta and verification reminders in PrepareRequest.\nSplit system prompt into static (base + sorted tools JSON) and dynamic\nsections, and log static_hash for cache debugging. Enable parallel\nread-only tool calls by default and set llm.subagent.max_turns default.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "feat(context): meta reminders, static/dynamic system, parallel tools",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-05-25T14:57:02Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "db9bcb533cae4a873dd220cf823fe1968b65599d",
"body": "Fix fork child double-wrapped directive by passing raw prompt to\nBuildForkMessages. Split network retries from output recovery with a\ndedicated counter and tighter transient error matching. Centralize\nsubagent max turns via resolveSubagentMaxTurns.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "fix(agent): fork directive, recovery, and subagent max_turns",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-05-25T14:56:55Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "4069b227d1bf1920d77dc6e7a0b806e3b3e5443e",
"body": "Add session hooks, /remember, spawn skill/memory injection and git\nworktree isolation, tiered subagent notifications, context collapse,\ndeferred tool registration, shell classifier via permission engine,\nand active-turn notification priority.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "feat(agent): hooks, spawn worktree/memory, and context collapse",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-05-25T14:28:44Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "4005ee891077d2897e74105b9fceb5a779b9c7d1",
"body": "Introduce agent/spawn for foreground/background execution, fork/resume,\nrecovery hooks, and the Agent builtin tool; remove legacy task tool and\nsubagent runner. Update context, session schema, TUI, and tooling.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "feat(agent): replace task tool with spawn-based subagent system",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-05-24T13:10:19Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "8eaba27d8e4cb8db09aa03175d5fe82f99aa1286",
"body": "Rename module and imports from github.com/hejunqiu/ds-code to\ngithub.com/wzhejunqiu/ds-code to match origin. Also ignore\ninternal/agent/docs/ in .gitignore.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "chore: align Go module path with GitHub remote",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-05-24T02:52:10Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "cd80581573c2bf6388f627d42113aba6c861226d",
"body": "Correct relative paths in builtin tool markdown. Update read_file\ndescription to recommend offset/limit for known ranges, especially on large files.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "docs(builtin): fix tool doc links; read_file desc urges partial reads",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-05-23T17:48:10Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "66a5cca593baaf30aaed0b00c74c1f3ea936c86b",
"body": "…Pattern test\n\nUnify glob/list_dir fallback limit via builtin.DefaultMaxResults.\nAssert CollectGlobPattern keeps match order and leaves sorting to callers.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "refactor(builtin): share DefaultMaxResults and strengthen CollectGlob…",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-05-23T17:32:06Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "67c1ede9095ef084796a6ff26c079c4e1fae2691",
"body": "…x 100\n\nExtract FileCandidate/CollectGlobPattern so glob and grep agree on\nworkspace-relative paths and filtering. Glob results are sorted by\nmod time before truncation; default max_results drops to 100.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "refactor(glob,grep): share file candidates, sort by mtime, default ma…",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-05-23T17:28:42Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "1e9b7c2b9c2f8247a155b08c0e4f2290316a9b4e",
"body": "Use path-specific truncation suffix for files_with_matches, propagate\ncontext.Canceled after search instead of returning partial results.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "fix(grep): correct files_with_matches truncation text and honor cancel",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-05-23T17:16:32Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "6121d2f4ee089aa6346984dd563bab2c07467d0a",
"body": "Reduce token use for exploration by returning paths unless content is\nrequested; align TUI suffixes with mode and harden candidate paths via\nsymlink resolution.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "feat(grep): add output_mode and default to files_with_matches",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-05-23T17:09:51Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "29bf31b302f902e99d9b42e1635ea43fca035c90",
"body": "Extract glob matching and text-file detection for reuse; grep supports path globs, mtime-ordered results, and parallel search while skipping binaries.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "feat(tool): improve grep/glob with binary filter and shared globmatch",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-05-23T16:44:07Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "ab166b43465433908109f4404466d9426d560f0f",
"body": "Move ~/.ds-code path logic into internal/datadir to break logging’s\ndependency on config and fix gopls missing-metadata import errors.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "refactor(datadir): extract path helpers so logging avoids config import",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-05-23T15:40:38Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "d4fc38f272f9dfa9656fa1a56f25072bf57fce4c",
"body": "…strap\n\nDecouple async session title generation from turn cancellation, wait for titles in -p mode, centralize billing setup via BootstrapConfig, and align unknown-model price snapshots with flash fallback rates.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "fix(session,billing): detach title gen context and unify billing boot…",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-05-23T15:31:17Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "a29e192d809f70fba1977f6e6a20cf503eb05acc",
"body": "…d async title generation\n\nPersist per-message price snapshots and estimated costs, split subagent model/thinking settings from the main agent, and generate session titles via a background subagent run (schema v4).\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "feat(billing,session): add CNY cost tracking, subagent LLM config, an…",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-05-23T15:21:53Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "23367fdbf57ea28567820f4a6713c54dd697c120",
"body": "Treat a non-nil empty ResumeSessions slice as loaded so cursor-blink\nUpdateCompletion does not re-fetch and toggle Loading vs no matches.\nDocument resume overlay semantics and add regression tests.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "fix(tui): stop /resume filter overlay flickering on empty matches",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-05-23T13:09:28Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "7d66145ed3502498b0af3f7db7ccea6c0be7a84b",
"body": "External client_test package called client.NewClient without importing\nthe client package, breaking CI integration builds.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "fix(lsp): import client package in integration tests",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-05-23T12:49:31Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "48ddcc1891ec2c6c683f3beac6a7efc7164cb354",
"body": "Replace chat.Block strings.Builder with string, pass textinput and\nlipgloss Style by pointer, and fix resume double-enter test flow.\nEnable go vet copylocks in CI/Makefile/golangci and document TUI\nnon-copyable types; iterate chat blocks by index in tool line sync.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "fix(tui): avoid illegal copies that crash under -race",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-05-23T12:41:55Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "533efa11dd9201f1c17da4403b61510c16cb25d3",
"body": "Keep third_party/tokenizers in the repo so clones have the expected path before running fetch-tokenizers-lib.sh; binaries remain gitignored.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "chore(third_party): track tokenizers directory placeholder",
"author_name": "hejunqiu",
"author_login": "wzhejunqiu",
"committed_at": "2026-05-23T12:20:57Z",
"body_truncated": false,
"is_coding_agent": true
}
],
"releases_count": 6,
"commits_last_year": 154,
"latest_release_at": "2026-07-01T14:08:02Z",
"latest_release_tag": "v0.1.5",
"releases_from_tags": false,
"days_since_last_push": 14,
"active_weeks_last_year": 7,
"days_since_latest_release": 21,
"mean_days_between_releases": 3.8
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": true,
"health_percentage": 71,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"ecosystem": {
"packages": [
{
"name": "github.com/wzhejunqiu/ds-code",
"exists": true,
"license": null,
"keywords": [],
"ecosystem": "go",
"matches_repo": true,
"registry_url": "https://pkg.go.dev/github.com/wzhejunqiu/ds-code",
"is_deprecated": false,
"latest_version": "v0.1.5",
"repository_url": "https://github.com/wzhejunqiu/ds-code",
"versions_count": 6,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": null,
"monthly_downloads": null,
"first_published_at": null,
"latest_published_at": "2026-07-01T13:55:40Z",
"latest_version_yanked": null,
"days_since_latest_publish": 21
}
]
},
"popularity": {
"forks": 0,
"stars": 2,
"watchers": 2,
"fork_history": {
"days": [],
"complete": true,
"collected": 0,
"total_forks": 0
},
"star_history": null,
"open_issues_and_prs": 0
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [],
"has_llms_txt": false,
"has_dockerfile": false,
"has_mcp_signal": true,
"bootstrap_files": [
"Makefile"
],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [],
"toolchain_manifests": [
"go.mod"
],
"largest_source_bytes": 16598,
"source_files_sampled": 629,
"oversized_source_files": 0,
"agent_instruction_files": [
".cursorrules",
"AGENTS.md",
"CLAUDE.md",
"internal/tool/builtin/agent/agent.md",
"internal/tuitest/fixtures/default/AGENTS.md"
],
"agent_instruction_max_bytes": 4596
},
"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": "charm.land/bubbles/v2",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v2.1.0"
},
{
"name": "charm.land/bubbletea/v2",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v2.0.7"
},
{
"name": "charm.land/glamour/v2",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v2.0.1"
},
{
"name": "charm.land/lipgloss/v2",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v2.0.4"
},
{
"name": "github.com/JohannesKaufmann/html-to-markdown/v2",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v2.5.2"
},
{
"name": "github.com/charmbracelet/colorprofile",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.4.3"
},
{
"name": "github.com/charmbracelet/x/ansi",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.11.7"
},
{
"name": "github.com/daulet/tokenizers",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.27.0"
},
{
"name": "github.com/gabriel-vasile/mimetype",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.4.13"
},
{
"name": "github.com/google/uuid",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.6.0"
},
{
"name": "github.com/mark3labs/mcp-go",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.54.0"
},
{
"name": "github.com/oklog/ulid/v2",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v2.1.1"
},
{
"name": "github.com/spf13/cobra",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.9.1"
},
{
"name": "github.com/spf13/viper",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.20.1"
},
{
"name": "go.opentelemetry.io/otel",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.43.0"
},
{
"name": "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.43.0"
},
{
"name": "go.opentelemetry.io/otel/sdk",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.43.0"
},
{
"name": "go.opentelemetry.io/otel/trace",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.43.0"
},
{
"name": "go.uber.org/zap",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.28.0"
},
{
"name": "golang.org/x/sys",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.45.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.37.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": 0,
"merged_prs": 2,
"open_issues": 0,
"closed_ratio": null,
"closed_issues": 0,
"closed_unmerged_prs": 0
},
"bus_factor": 1,
"bot_contributors": 0,
"top_contributors": [
{
"type": "User",
"login": "wzhejunqiu",
"commits": 154,
"avatar_url": "https://avatars.githubusercontent.com/u/6554707?v=4"
}
],
"contributors_sampled": 1,
"top_contributor_share": 1
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"ci.yml",
"release.yml"
],
"has_docs_dir": true,
"linter_configs": [
".golangci.yml"
],
"has_editorconfig": false,
"has_linter_config": true,
"has_precommit_config": false
},
"security_signals": {
"lockfiles": [
"go.sum"
],
"scorecard": {
"checks": [
{
"name": "Binary-Artifacts",
"score": 10,
"reason": "no binaries found in the repo",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
},
{
"name": "Branch-Protection",
"score": 0,
"reason": "branch protection not enabled on development/release branches",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
},
{
"name": "CI-Tests",
"score": 10,
"reason": "1 out of 1 merged PRs checked by a CI test -- score normalized to 10",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
},
{
"name": "CII-Best-Practices",
"score": 0,
"reason": "no effort to earn an OpenSSF best practices badge detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
},
{
"name": "Code-Review",
"score": 0,
"reason": "Found 0/23 approved changesets -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 0,
"reason": "project has 0 contributing companies or organizations -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
},
{
"name": "Dangerous-Workflow",
"score": 10,
"reason": "no dangerous workflow patterns detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
},
{
"name": "Dependency-Update-Tool",
"score": 0,
"reason": "no update tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
},
{
"name": "Fuzzing",
"score": 0,
"reason": "project is not fuzzed",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
},
{
"name": "License",
"score": 10,
"reason": "license file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
},
{
"name": "Maintained",
"score": 0,
"reason": "project was created within the last 90 days. Please review its contents carefully",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
},
{
"name": "Packaging",
"score": null,
"reason": "packaging workflow not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
},
{
"name": "Pinned-Dependencies",
"score": 0,
"reason": "dependency not pinned by hash detected -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
},
{
"name": "SAST",
"score": 0,
"reason": "SAST tool is not run on all commits -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
},
{
"name": "Security-Policy",
"score": 4,
"reason": "security policy file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
},
{
"name": "Signed-Releases",
"score": 0,
"reason": "Project has not signed or included provenance with any releases.",
"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": 7,
"reason": "3 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "faf77cdf45eabcc68f2f9d90ec4b19b3341b4617",
"ran_at": "2026-07-22T19:12:28Z",
"aggregate_score": 3,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": true,
"has_dependabot_config": false
},
"contribution_flow": {
"collected": true,
"ci_last_run_at": "2026-07-01T14:08:05Z",
"oldest_open_prs": [],
"last_merged_pr_at": "2026-07-01T13:55:40Z",
"ci_last_conclusion": "SUCCESS",
"oldest_open_issues": []
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/wzhejunqiu/ds-code",
"host": "github.com",
"name": "ds-code",
"owner": "wzhejunqiu"
},
"metrics": {
"overall": {
"key": "overall",
"band": "moderate",
"name": "Overall health",
"note": null,
"notes": [],
"value": 54,
"inputs": {
"security": 30,
"vitality": 67,
"community": 33,
"governance": 56,
"engineering": 76
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "moderate",
"name": "Vitality",
"value": 67,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "moderate",
"name": "Development activity",
"note": null,
"notes": [],
"value": 52,
"inputs": {
"commits_last_year": 154,
"human_commit_share": 1,
"days_since_last_push": 14,
"active_weeks_last_year": 7
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 14 days ago",
"points": 28.8,
"status": "partial",
"details": [
{
"code": "push_recency",
"params": {
"days": 14
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "7/52 weeks with commits",
"points": 4.8,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 7
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "154 commits in the last year",
"points": 18,
"status": "met",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 154
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "project was created within the last 90 days. Please review its contents carefully",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "excellent",
"name": "Release discipline",
"note": null,
"notes": [],
"value": 90,
"inputs": {
"releases_count": 6,
"latest_release_tag": "v0.1.5",
"releases_from_tags": false,
"days_since_latest_release": 21,
"mean_days_between_releases": 3.8
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "6 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 6
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 21 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 21
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~3.8 days",
"points": 27,
"status": "met",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 3.8
}
}
],
"max_points": 27
},
{
"key": "openssf_scorecard_signed_releases",
"name": "OpenSSF Scorecard: Signed-Releases",
"detail": "Project has not signed or included provenance with any releases.",
"points": 0,
"status": "missed",
"details": [],
"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": "at_risk",
"name": "Community & Adoption",
"value": 33,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "critical",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 1,
"inputs": {
"forks": 0,
"stars": 2,
"watchers": 2,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "2 stars",
"points": 0,
"status": "missed",
"details": [
{
"code": "stars",
"params": {
"count": 2
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "0 forks",
"points": 0,
"status": "missed",
"details": [
{
"code": "forks",
"params": {
"count": 0
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "2 watchers",
"points": 0,
"status": "missed",
"details": [
{
"code": "watchers",
"params": {
"count": 2
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "good",
"name": "Community health",
"note": null,
"notes": [],
"value": 70,
"inputs": {
"has_readme": true,
"has_license": true,
"has_contributing": true,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 22.5,
"status": "met",
"details": [],
"max_points": 22.5
},
{
"key": "license",
"name": "License",
"detail": "recognized license (Apache-2.0)",
"points": 22.5,
"status": "met",
"details": [
{
"code": "license_standard",
"params": {}
},
{
"code": "license_spdx",
"params": {
"spdx": "Apache-2.0"
}
}
],
"max_points": 22.5
},
{
"key": "contributing_guide",
"name": "CONTRIBUTING guide",
"detail": null,
"points": 18,
"status": "met",
"details": [],
"max_points": 18
},
{
"key": "code_of_conduct",
"name": "Code of conduct",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 13.5
},
{
"key": "issue_template",
"name": "Issue template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.2
},
{
"key": "pr_template",
"name": "PR template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.3
}
]
}
],
"description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
},
{
"key": "governance",
"band": "moderate",
"name": "Sustainability & Governance",
"value": 56,
"weight": 0.24,
"metrics": [
{
"key": "maintainer_resilience",
"band": "critical",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 10,
"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 0 contributing companies or organizations -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "good",
"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": 72,
"inputs": {
"merged_prs": 2,
"open_issues": 0,
"closed_issues": 0,
"issue_closed_ratio": null,
"closed_unmerged_prs": 0
},
"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": "2/2 decided PRs merged",
"points": 38.2,
"status": "met",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 2,
"decided": 2
}
}
],
"max_points": 38.25
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 0/23 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "moderate",
"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": 58,
"inputs": {
"followers": 37,
"owner_type": "User",
"is_verified": null,
"owner_login": "wzhejunqiu",
"public_repos": 93,
"account_age_days": 4555
},
"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": "37 followers of wzhejunqiu",
"points": 11.4,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 37,
"login": "wzhejunqiu"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "93 public repos, account ~12 yr old",
"points": 25,
"status": "met",
"details": [
{
"code": "public_repos",
"params": {
"count": 93
}
},
{
"code": "account_age_years",
"params": {
"years": 12
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "excellent",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"packages": [
"github.com/wzhejunqiu/ds-code"
],
"ecosystems": "go",
"any_deprecated": false,
"min_days_since_publish": 21
},
"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 21 days ago",
"points": 35,
"status": "met",
"details": [
{
"code": "publish_recency",
"params": {
"days": 21
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "6 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 6
}
}
],
"max_points": 20
},
{
"key": "not_deprecated",
"name": "Not deprecated",
"detail": "active, not deprecated or yanked",
"points": 20,
"status": "met",
"details": [
{
"code": "package_not_deprecated",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
},
{
"key": "engineering",
"band": "good",
"name": "Engineering Quality",
"value": 76,
"weight": 0.2,
"metrics": [
{
"key": "engineering_practices",
"band": "good",
"name": "Engineering practices",
"note": null,
"notes": [],
"value": 84,
"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": "2 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 2
}
}
],
"max_points": 24
},
{
"key": "tests_present",
"name": "Tests present",
"detail": null,
"points": 24,
"status": "met",
"details": [],
"max_points": 24
},
{
"key": "linter_config",
"name": "Linter config",
"detail": ".golangci.yml",
"points": 16,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".golangci.yml"
}
}
],
"max_points": 16
},
{
"key": "pre_commit_hooks",
"name": "Pre-commit hooks",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 9.6
},
{
"key": "editorconfig",
"name": ".editorconfig",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.4
},
{
"key": "openssf_scorecard_ci_tests",
"name": "OpenSSF Scorecard: CI-Tests",
"detail": "1 out of 1 merged PRs checked by a CI test -- score normalized to 10",
"points": 20,
"status": "met",
"details": [],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "moderate",
"name": "Documentation",
"note": null,
"notes": [],
"value": 65,
"inputs": {
"topics": [],
"has_wiki": false,
"homepage": null,
"has_readme": true,
"has_docs_dir": true,
"has_description": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 30,
"status": "met",
"details": [],
"max_points": 30
},
{
"key": "documentation_directory",
"name": "Documentation directory",
"detail": null,
"points": 25,
"status": "met",
"details": [],
"max_points": 25
},
{
"key": "documentation_homepage_site",
"name": "Documentation / homepage site",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
},
{
"key": "repository_description",
"name": "Repository description",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "topics",
"name": "Topics",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
},
{
"key": "wiki",
"name": "Wiki",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
}
],
"description": "Are baseline engineering and documentation practices in place?"
},
{
"key": "security",
"band": "at_risk",
"name": "Security",
"value": 30,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "at_risk",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): Packaging. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"packaging"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 30,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 17,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 1,
"scorecard_aggregate": 3
},
"components": [
{
"key": "binary_artifacts",
"name": "Binary-Artifacts",
"detail": "no binaries found in the repo",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "branch_protection",
"name": "Branch-Protection",
"detail": "branch protection not enabled on development/release branches",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "1 out of 1 merged PRs checked by a CI test -- score normalized to 10",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "cii_best_practices",
"name": "CII-Best-Practices",
"detail": "no effort to earn an OpenSSF best practices badge detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "code_review",
"name": "Code-Review",
"detail": "Found 0/23 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 0 contributing companies or organizations -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "dangerous_workflow",
"name": "Dangerous-Workflow",
"detail": "no dangerous workflow patterns detected",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "dependency_update_tool",
"name": "Dependency-Update-Tool",
"detail": "no update tool detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "fuzzing",
"name": "Fuzzing",
"detail": "project is not fuzzed",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "license",
"name": "License",
"detail": "license file detected",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "maintained",
"name": "Maintained",
"detail": "project was created within the last 90 days. Please review its contents carefully",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "packaging",
"name": "Packaging",
"detail": "packaging workflow not detected",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 5
},
{
"key": "pinned_dependencies",
"name": "Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "sast",
"name": "SAST",
"detail": "SAST tool is not run on all commits -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "security_policy",
"name": "Security-Policy",
"detail": "security policy file detected",
"points": 2,
"status": "partial",
"details": [],
"max_points": 5
},
{
"key": "signed_releases",
"name": "Signed-Releases",
"detail": "Project has not signed or included provenance with any releases.",
"points": 0,
"status": "missed",
"details": [],
"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": "3 existing vulnerabilities detected",
"points": 5.2,
"status": "partial",
"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": 2
},
"components": [
{
"key": "policy_exposure_multiplier",
"name": "Policy exposure multiplier",
"detail": "no confirmed policy-scope location match",
"points": 100,
"status": "met",
"details": [
{
"code": "jurisdiction_no_match",
"params": {}
}
],
"max_points": 100
}
]
}
],
"description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
},
{
"key": "ai_readiness",
"band": "good",
"name": "AI Readiness",
"value": 76,
"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": [
".cursorrules",
"AGENTS.md",
"CLAUDE.md",
"internal/tool/builtin/agent/agent.md",
"internal/tuitest/fixtures/default/AGENTS.md"
],
"agent_instruction_max_bytes": 4596
},
"components": [
{
"key": "agent_instructions",
"name": "Agent instructions",
"detail": ".cursorrules, AGENTS.md, CLAUDE.md, internal/tool/builtin/agent/agent.md, internal/tuitest/fixtures/default/AGENTS.md",
"points": 45,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".cursorrules, AGENTS.md, CLAUDE.md, internal/tool/builtin/agent/agent.md, internal/tuitest/fixtures/default/AGENTS.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": "100 of 100 human commits state their intent (structured subject or explanatory body)",
"points": 40,
"status": "met",
"details": [
{
"code": "legible_history",
"params": {
"legible": 100,
"sampled": 100
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "good",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 82,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [
"go.sum"
],
"has_dockerfile": false,
"typed_language": true,
"bootstrap_files": [
"Makefile"
],
"has_devcontainer": false,
"has_linter_config": true,
"typecheck_configs": [],
"agent_commit_share": 0.97,
"toolchain_manifests": [
"go.mod"
],
"dependency_bot_commit_share": 0
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": "Makefile",
"points": 18,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "Makefile"
}
}
],
"max_points": 18
},
{
"key": "automated_tests",
"name": "Automated tests",
"detail": null,
"points": 22,
"status": "met",
"details": [],
"max_points": 22
},
{
"key": "lint_format_config",
"name": "Lint / format config",
"detail": ".golangci.yml",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".golangci.yml"
}
}
],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": "Go (statically typed)",
"points": 11,
"status": "met",
"details": [
{
"code": "statically_typed_language",
"params": {
"language": "Go"
}
}
],
"max_points": 11
},
{
"key": "reproducible_environment",
"name": "Reproducible environment",
"detail": "lockfile",
"points": 10,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "lockfile"
}
}
],
"max_points": 10
},
{
"key": "demonstrated_agent_practice",
"name": "Demonstrated agent practice",
"detail": "97 of the last 100 commits agent-authored or agent-credited",
"points": 10,
"status": "met",
"details": [
{
"code": "agent_authored_commits",
"params": {
"count": 97,
"sampled": 100
}
}
],
"max_points": 10
},
{
"key": "automated_maintenance",
"name": "Automated maintenance",
"detail": "no automated dependency updates observed",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_dependency_automation",
"params": {}
}
],
"max_points": 8
},
{
"key": "openssf_scorecard_pinned_dependencies",
"name": "OpenSSF Scorecard: Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "ai_code_legibility",
"band": "excellent",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"primary_language": "Go",
"largest_source_bytes": 16598,
"source_files_sampled": 629,
"oversized_source_files": 0
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "Go (statically typed)",
"points": 45,
"status": "met",
"details": [
{
"code": "statically_typed_language",
"params": {
"language": "Go"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "0/629 source files over 60KB",
"points": 55,
"status": "met",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 629,
"oversized": 0
}
}
],
"max_points": 55
}
]
},
{
"key": "ai_interfaces",
"band": "critical",
"name": "Machine-readable interfaces",
"note": null,
"notes": [],
"value": 20,
"inputs": {
"example_dirs": [],
"has_mcp_signal": true,
"api_schema_files": []
},
"components": [
{
"key": "api_schema_openapi_graphql_proto",
"name": "API schema (OpenAPI/GraphQL/proto)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 40
},
{
"key": "mcp_server",
"name": "MCP server",
"detail": null,
"points": 20,
"status": "met",
"details": [],
"max_points": 20
},
{
"key": "runnable_examples",
"name": "Runnable examples",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"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-22T19:12:37.277082Z",
"schema_version": "0.26.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/w/wzhejunqiu/ds-code.svg",
"full_name": "wzhejunqiu/ds-code",
"license_state": "standard",
"license_spdx": "Apache-2.0"
}