原始 JSON 报告 机器可读
{
"data": {
"repo": {
"topics": [],
"is_fork": false,
"size_kb": 1773,
"has_wiki": false,
"homepage": null,
"languages": {
"Go": 1363731,
"Shell": 5133
},
"pushed_at": "2026-07-23T04:08:27Z",
"created_at": "2026-06-20T15:24:05Z",
"owner_type": "User",
"updated_at": "2026-07-23T04:03:45Z",
"description": "Fast keyword search over your Claude Code sessions — single static Go binary, SQLite FTS5, no LLM, no API key.",
"is_archived": false,
"is_disabled": false,
"license_spdx": "MIT",
"default_branch": "main",
"license_spdx_raw": "MIT",
"primary_language": "Go",
"significant_languages": [
"Go"
]
},
"owner": {
"blog": null,
"name": "Remotely Human",
"type": "User",
"login": "MoonCaves",
"company": null,
"location": "Austin, TX",
"followers": 1,
"avatar_url": "https://avatars.githubusercontent.com/u/144150401?v=4",
"created_at": "2023-09-05T15:38:25Z",
"is_verified": null,
"public_repos": 16,
"account_age_days": 1054
},
"license": {
"state": "standard",
"spdx_id": "MIT",
"raw_spdx": "MIT",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "v0.7.1",
"kind": "patch",
"published_at": "2026-07-20T17:27:23Z"
},
{
"tag": "v0.7.0",
"kind": "minor",
"published_at": "2026-07-20T12:34:14Z"
},
{
"tag": "v0.6.1",
"kind": "patch",
"published_at": "2026-07-20T11:59:17Z"
},
{
"tag": "v0.6.0",
"kind": "minor",
"published_at": "2026-07-20T09:45:25Z"
},
{
"tag": "v0.5.0",
"kind": "minor",
"published_at": "2026-07-19T11:28:26Z"
},
{
"tag": "v0.4.0",
"kind": "minor",
"published_at": "2026-07-18T09:04:43Z"
},
{
"tag": "v0.3.0",
"kind": "minor",
"published_at": "2026-07-18T06:56:22Z"
},
{
"tag": "v0.2.0",
"kind": "minor",
"published_at": "2026-07-17T15:11:11Z"
}
],
"recent_commits": [
{
"oid": "bb4d23497e5595d174969d1bc1be33e67d7db1bd",
"body": "setup: keep session tagging on the current closeout",
"is_bot": false,
"headline": "Merge pull request #1 from MoonCaves/codex/rawclaw-closeout-hook-copy",
"author_name": "Remotely Human",
"author_login": "MoonCaves",
"committed_at": "2026-07-23T04:03:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "03451f3a38f40c38bfed4fcf12c92f29ecd54071",
"body": null,
"is_bot": false,
"headline": "setup: teach background self-tagging at closeout",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-23T04:01:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "74f4d48fd41e2ed9c78c1cdbf3b46aafb5e539a6",
"body": null,
"is_bot": false,
"headline": "setup: stop assigning old-session tags at startup",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-23T04:01:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "90dbbc9287fa92160c84664f6fface92df27375b",
"body": "…0.7.1)\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs: add the 'Choosing a remote' guidance to the README too (rides v…",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-20T17:57:26Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "817ae66d030ed483eb69900116cc36fab3b6e77a",
"body": "…ud; second-machine + --name)\n\nHelp text only, no behavior change. README left lean (a blind Haiku test showed the\nexisting README already gets an agent to a working bare-SSH archive).",
"is_bot": false,
"headline": "docs: archive init --help steers you to a remote (private/mesh vs clo…",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-20T17:24:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3926fe1c0831ffcc913e98997d7971df14d8f4d8",
"body": "… seam (privacy via private remote; any at-rest crypto stays optional + self-contained)",
"is_bot": false,
"headline": "docs: fix AGENTS.md design-link path + sharpen the at-rest-encryption…",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-20T13:42:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "036e31b6269b6d47561b15911782309aa9ee5616",
"body": "…iants)",
"is_bot": false,
"headline": "docs: add AGENTS.md — agent handbook (north star, core-vs-seam, invar…",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-20T13:40:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cdab2a5a4f56aa38e3b95c65f23d90d8088db3ee",
"body": "…d on init\n\nsetup prints one non-blocking line pointing at 'rawclaw archive init\n<your-private-repo>' after wiring hooks — discoverable without provisioning\n(wiring vs provisioning: setup points, archive init performs). init expands a\nshorthand to a full SSH remote (user/repo, bare user -> rawclaw-t\n[…]\nssRepoURL (MIT), SSH-default. Tests cover ordering, full-URL\npassthrough (zero behavior change), and degenerate-input fallthrough.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "setup+archive: surface the archive on setup; accept a remote shorthan…",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-20T12:31:38Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "fd52fe567e72dca606a87b8cd3835f0df2a3994b",
"body": "Pre-existing baseline findings that failed CI on every push: errcheck on a\ndeferred os.Remove in archive/config.go (wrap in a closure that discards the\nreturn), and staticcheck QF1003 on an if/else-if over the same byte in setup.go\nstripJSON5 (convert to a tagged switch). Behavior unchanged.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "lint: clear the two standing golangci-lint findings (green CI)",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-20T12:09:15Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "ff9fe89022ac5d4b560ff7a7fbae4ad6ea8df3c7",
"body": "…h + command -v fallback)\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "changelog: 0.6.1 — setup hooks fire regardless of PATH (baked abs pat…",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-20T11:57:12Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "370df5b5f75f06e26d22969fd931adac6179c0e0",
"body": "The three generated hook scripts gated on a bare `command -v rawclaw`, which\nsilently no-ops on any machine whose SessionStart/SessionEnd hook PATH lacks the\nbinary's dir (e.g. ~/.local/bin off a non-login PATH): setup reports success,\nthe hook never fires, the agent never learns rawclaw exists. Res\n[…]\npgraded), and silent-no-op\nonly when neither resolves. Body calls use $RAWCLAW; user-facing help text keeps\nthe bare command name.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "setup: bake absolute rawclaw path into hooks with command -v fallback",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-20T11:32:18Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "5c20c8382242b274d9510f45cf38708605370c96",
"body": "…nvelope",
"is_bot": false,
"headline": "changelog: 0.6.0 — cross-machine tag/verdict sync + Codex hook JSON e…",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-20T09:43:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d6def5331f6ce69f23308a0de99bf8d87ebea296",
"body": "The regression asserted only the first banner line was present in\nadditionalContext; a truncated envelope past line 1 would slip past. Check\nseveral distinctive lines spanning the banner (mirrors the Claude banner test).\nNot byte-equality — the repo's convention rejects duplicating the banner const.",
"is_bot": false,
"headline": "test: strengthen Codex prime hook-JSON check to multi-line banner",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-20T09:27:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b76b805eab00b87484562359e767dcba2fc65910",
"body": "Codex's hook-output parser rejects hook stdout starting with '[' or '{' unless it\nis valid hook-JSON, so the plain '[rawclaw]...' banner was silently dropped on\nCodex SessionStart. The Codex setup target now installs a variant prime script\nthat wraps the same banner as a SessionStart hook-JSON object\n(hookSpecificOutput/additionalContext) via python3, gated on python3 so its\nabsence degrades to a silent no-op. Claude Code keeps the plain-text banner.",
"is_bot": false,
"headline": "setup: deliver the Codex SessionStart discovery banner as hook-JSON",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-20T09:14:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "db800e16878fdcfc5f0b4fc0a8e01cf2f00045db",
"body": "Topic tags and routine verdicts are non-derivable agent labor, so they ride the\ntranscript archive rather than staying local-only. Each machine exports its tags\nto per-machine files beside its transcripts; push/pull syncs them; ingest\nresolves the cross-machine union — the unique real segment set wi\n[…]\ng beats a routine verdict at read time. Schema v2 adds origin_machine and a\nsession_verdict sidecar via a kill-safe in-place migration. Cross-machine tag\nconflicts surface in `rawclaw archive status`.",
"is_bot": false,
"headline": "archive: sync per-machine tag & verdict layer across machines",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-20T08:57:02Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "9930369ab7e569d44b45aae36fd7f90d2d401522",
"body": "SessionEnd fires for ephemeral sessions too (no message ever landed, no\ntranscript written) — ~28/hour of unresolvable ids flooded the queue on a\nbusy machine. The hook now queues only when the transcript_path Claude Code\npasses exists on disk. Live-measured: 455 queue entries in 16h, none of the\nsampled no-file ids resolvable anywhere in the projects tree.",
"is_bot": false,
"headline": "setup: gate the tagging queue on transcript existence",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-20T03:39:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c62f0a90e5cf7fb0d4c4cce75a8fdc286571b4ab",
"body": null,
"is_bot": false,
"headline": "changelog: stamp 0.5.0 — 2026-07-19",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T11:26:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "df40d37b00d54d3234ec9b57c0b674e2f9345260",
"body": "…pics section + SessionEnd queue wired by setup, drained by the SessionStart banner",
"is_bot": false,
"headline": "Merge branch 'tag/autotag-queue': automatic topic tagging — README to…",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T11:25:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ea84e69dcf88fe8ec3a1ac43e69dd5ad229ee3bb",
"body": "A second Claude Code hook (tagqueue.sh, SessionEnd) queues each finished\nsession for topic tagging via the new tag-queue verb; the SessionStart\nbanner lists the queue so the next session's agent tags what's pending\n(tag-prep -> tag-write; tag-write dequeues). rawclaw still calls no model.\nCodex keeps SessionStart only (its SessionEnd surface is unverified).\nEject removes both scripts and both entries.",
"is_bot": false,
"headline": "setup: automatic topic tagging — SessionEnd queue + SessionStart drain",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T11:25:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6c7fa187e4dea6f850c705e8ecc515db7b92b150",
"body": null,
"is_bot": false,
"headline": "README: topic tags section — where the conversation pivoted",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T11:17:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bee954d87bbcded2b7e9430aded947c0e56ac2c0",
"body": "…ry commit-creating git child (rebase paths now sync on identity-less machines), transfer-op classification preserved under -c pinning, and read/outline/tag accept the ref= token exactly as search prints it",
"is_bot": false,
"headline": "Merge branch 'archive/verify-fixes': pinned committer identity on eve…",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T09:45:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9814a47bceca1ff0b7ed85729cef8add4c7b669d",
"body": "Review nit: the helper shapes argv for call sites in push.go and pull.go and\nis what transferOp's -c handling exists for — gitrun.go is its natural home.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "archive: house withCommitIdentity in gitrun.go, the git-seam file",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T09:39:03Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "9eba140a1fd0c77a8c2f063fb37ce68797bd4312",
"body": "transferOp returned at the first non-dash arg, so the \"-c user.name=...\"\npairs withCommitIdentity now prepends made it misread the -c VALUE as the\nverb — demoting pull --rebase to a wall-clock-capped local op, which would\nkill a legitimately slow large transfer at the 10-minute cap. Skip -c and its\nvalue when locating the verb.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "archive: keep identity-pinned pull classified as a transfer op",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T09:35:48Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "32b088e8bc79a10e8a0040c893cf21e5bf3b33f4",
"body": "Search/topics output prints every hit as `read ref=<session8>:<uuid8>`, but\n`rawclaw read ref=...` failed (\"session \\\"ref=...\\\" not found\") — the parser\nsplit the pasted token verbatim. resolveRef now drops a leading ref=, and the\nsession-taking verbs (outline, tag via LocateSession) normalize a pasted\nread-ref to its session half. Round-trip test locks the exact printed form.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "agentproto: accept the ref= token exactly as search prints it",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T09:33:45Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "25ae949614f6895e83ae1416c8ea6c09dbdd2545",
"body": "commit() already pins user.name/user.email so sync works on machines with no\ngit identity configured — but both pull --rebase invocations (the concurrent-\npush retry in pushWithRetry, and Pull's own refresh) re-create replayed local\ncommits, and unpinned they die exit-128 \"Committer identity unknown\n[…]\nests run real git under an identity-less env (useConfigOnly global,\nsystem config silenced, ident env vars cleared) and drive both rebase paths.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "archive: pin synthetic committer identity on pull --rebase",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T09:33:45Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "b9f0e59fb3743c283b62f470ca1397c9d16e7ec1",
"body": "…lds (stranded-work guard, legacy adoption with checkout proof), fresh-ctx recovery aborts, replica delete propagation, honest archive-status wording",
"is_bot": false,
"headline": "Merge branch 'archive/recovery-hardening': evidence-gated clone rebui…",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T08:45:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "52e882aa4eff4d0aa18fbca2c363eaa1d4ed16d3",
"body": "…ca ingest, init stranded guard, comment truth\n\n- CRITICAL from bug-hunt (repro'd): a clone killed mid-checkout has a\n resolvable HEAD but no index; adoption would let the next push's add -A\n commit a tree dropping every other machine's dir from the archive tip —\n and replica reconciliation would\n[…]\n everywhere it participates, container CONTRACT reflects\n retain-vs-prune, status/pull help wording matches the rendered output,\n staleAt lives with its only consumer, deterministic stamp assertion.",
"is_bot": false,
"headline": "review fixes: checkout-completion proof for adoption, quiescent repli…",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T08:43:58Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "bf3ccb1513d2a1e513aeda9bd48fb59a511336b9",
"body": "… on sync",
"is_bot": false,
"headline": "status: comment — sentinel absence means unverified, adoption happens…",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T08:43:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4e4d0aa66794660ea70e35d8c607be0edb52af31",
"body": "…delete propagation",
"is_bot": false,
"headline": "docs: honest archive-status wording, evidence-gated rebuild, replica …",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T08:43:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e938277f2348bd396b255821eed7b20bd695ac23",
"body": "…ard, fresh-ctx recovery, replica delete propagation, honest status wording\n\n- ensureClone never wipes on sentinel absence alone: a structurally complete\n pre-sentinel clone is adopted (sentinel stamped); any rebuild first proves\n the clone holds no commits the remote lacks (rev-list guard), and a\n[…]\nst \"last new content\"; the overdue warning is reserved for this\n machine's own sync stamps, and a verified-up-to-date push now advances the\n stamp so an idle-but-healthy machine never reads as dead.",
"is_bot": false,
"headline": "archive: recovery hardening — legacy-clone adoption, stranded-work gu…",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T08:43:22Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "a3814a1470b9a1b646b3ab2ec508e57454441ec4",
"body": "…ce-aware delete confirm + --yes --files gate, loose-jsonl folder guard, stall-bounded archive transfers, timer install/eject hardening\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Merge branch 'archive/confirm-gate': ratified safety fixes — provenan…",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T08:04:28Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "76f3f330cc063d4653b123e2b2e02bda4a2199f9",
"body": "- GIT_SSH_COMMAND is only set when it wouldn't silently outrank a transport\n the user configured elsewhere: an env GIT_SSH_COMMAND gets the keepalives\n appended (user options stay authoritative), but legacy GIT_SSH or\n core.sshCommand users keep their transport untouched.\n- non-transfer git child\n[…]\nlags\n and stop at '--' (cobra never dispatches a subcommand there), so a search\n like '--dir archive pull' can no longer disable its watchdog.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "bug-hunt fixes: transport respect, local-op bound, stricter verb scan",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T08:04:06Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "ba0935c7b2894784b6ea67c6c766b9e4a1dc2d58",
"body": "…r, stall-comment notes\n\n- launchd reinstall: a failed bootstrap restores (and best-effort re-registers)\n the prior plist instead of deleting it — a reinstall can't leave no timer.\n- eject ownership: the plist/units must carry rawclaw's own content marker\n before eject disables or deletes a same-n\n[…]\n install and eject can't strand the units.\n- delete --yes one-line help now points at --files; gitrun comment notes the\n OpenSSH -o assumption.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "review follow-ups: timer install/eject hardening, --yes help qualifie…",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T07:53:56Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "4d2446449fccbe6d60b35fe476c500b7ccbc752a",
"body": "- delete: the confirmation names what dies — a delete reaching live sessions\n (original transcript files still on disk) prompts and receipts with the\n removes-the-originals wording; retained-only keeps the rawclaw's-copy shape.\n Non-interactive: --yes alone covers retained-only deletes; removing \n[…]\nted)\n for SSH. Explicit --timeout / RAWCLAW_TIMEOUT still cap hard.\n- scopes.All: marked as THE runtime-discovery site for future source tools.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "delete confirm gate, folder guard, stall-bounded archive transfers",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T07:40:52Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "55dddef6a524e1ea5f9182808e63277f574ad219",
"body": "… delete, --all in folder shapes, empty-query coaching, abort exit code, one time seam, delete provenance",
"is_bot": false,
"headline": "Merge branch 'archive/ux-conformance': ratified UX fixes — positional…",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T06:45:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "db568f5258804aeae7d037116d9adb79338ed3fd",
"body": "…usals\n\n- rawclaw --json \"\" emits a JSON envelope (error + hint) like every\n sibling shape instead of a bare text line.\n- Retained matches dedupe by session id across index dbs: an id retained\n in two dbs (renamed project dir, both purged) is one session — its own\n full id no longer trips the amb\n[…]\nlists the full colliding ids (plan rows truncate\n to 8 chars, identical under a prefix collision); a positional id\n excluded by filter flags says so instead of claiming the session does\n not exist.",
"is_bot": false,
"headline": "bug-hunt fixes: --json empty query, retained dedupe by id, richer ref…",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T06:43:44Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "0ff4a737e9c315fdef2eef8e1b72f40da3200683",
"body": "…sts and help wording\n\n- TestPrintResults and TestPrintDebugSearch gain parseable-ISO fixtures\n so the timefmt-seam calls at those two sites are test-guarded.\n- delete --help: 'the index row via tombstone' (the row prunes on the\n next index pass, not at delete time).\n- mergeNames iterates without a throwaway slice; two tests assert their\n captured output instead of blank-discarding it.",
"is_bot": false,
"headline": "review follow-ups: pin seam at PrintResults/PrintDebugSearch, tidy te…",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T06:37:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3a5f7ad85ca028abcb5a19df3e4c08a92bd2993b",
"body": null,
"is_bot": false,
"headline": "changelog: unreleased entries for the UX conformance pass",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T06:32:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f51bbea7bbc7f49693e204828dab7cf4e902075b",
"body": null,
"is_bot": false,
"headline": "gofmt: sort timefmt import, drop stray blank line",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T06:31:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fc0ac19a9f3302b0b1d60a05d0c0c09d4c210cdf",
"body": "… non-null JSON\n\n- Bare browse: --this-project wins over --all (the precedence --stats\n already applies) — pinned by test.\n- Delete: a session matching both the live walk and a stale retained row\n (file purged then restored, not yet reconciled) counts once — the\n positional ambiguity guard no longer makes it undeletable, and the id\n tombstones exactly once.\n- browse --all --json emits sessions: [] rather than null when empty.",
"is_bot": false,
"headline": "browse/delete refinements: --this-project precedence, same-id dedupe,…",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T06:31:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9547ee8041b83c3522a94e3b2fd846f89d3e4d03",
"body": "- rawclaw delete <session8|full-id> deletes that one session: same\n dry-run-first plan, same y/N prompt (--yes works), same tombstone and\n receipts. Sub-8-char prefixes must match exactly; an ambiguous prefix\n refuses (nothing deleted, exit 1); an unknown id is a clear error,\n exit 1; a foreign \n[…]\n rawclaw's copy for live sessions; for\n retained-only deletes, rawclaw's copy alone with source-tool files\n explicitly untouched. Matching sentences in delete --help and the\n README delete section.",
"is_bot": false,
"headline": "delete: positional session form, abort exit 1, provenance note",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T06:24:39Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "5236d0355a19d3e3abc352aebc4c789e850973ad",
"body": "- Bare browse under --all merges recent sessions across every project\n (same scope enumeration search uses), newest-first, capped at --limit;\n --json emits a scope-tagged shape with per-row project. view.Browse\n splits into BrowseDB so pre-resolved (Codex/retained) scopes browse too.\n- --stats --\n[…]\n history of its own).\n- The no-history hint now names both escapes: --list and --all.\n- rawclaw \"\" (or all-whitespace) prints a distinct empty-query coaching\n line instead of the no-matches coaching.",
"is_bot": false,
"headline": "browse/stats honor --all; empty query gets its own coaching line",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T06:16:19Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "a21daa042da8400de6b386d995c838864a88215a",
"body": "Policy in one package: agent-parsed surfaces (search results, outline\nheader, live list + stream, --json) render marked UTC (RFC3339 Z /\nHH:MM:SSZ); human surfaces (archive status) render local time with the\nzone abbreviation. Migrated sites: live session clock + activity stamps,\nlive serve list, archive status stamps, autosync log lines, outline\nheader (was unmarked local), search-result timestamps (normalized from\nstored ISO). Behavior tests pin the policy per surface.",
"is_bot": false,
"headline": "timefmt: single seam for user-facing time rendering",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T06:13:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1de67983579f23543b34b624f3bbef24792a90a4",
"body": "…ionale inline",
"is_bot": false,
"headline": "Merge branch 'archive/fingerprint-sweep': comments and docs state rat…",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T05:39:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f16d2d545c7d7aaf50e79a4c22fd00d20384c687",
"body": "… notes\n\nComments and design docs carried shorthand references to internal\nplanning notes (issue numbers, spec-section letters, sibling-tool\nnames) that mean nothing to a reader of this repo. Reword each site\nto say the actual rationale in place; test fixtures that only needed\n\"some other tool's hook\" now use a neutral placeholder name. Also\nrefresh the setup target comments that still described the Codex\ntarget as unimplemented. No behavior change.",
"is_bot": false,
"headline": "docs/comments: state rationale inline instead of referencing internal…",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T05:38:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8d845150e9769ac1ca20c530e7124106ab2724f3",
"body": "…— watchdog-bound scope probes, lightweight foreign resume lookup, Windows-hermetic tests",
"is_bot": false,
"headline": "Merge branch 'archive/ship-review-fixes': whole-feature review fixes …",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T05:02:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0fa154ba247c63ff9c10a76f9f3b38ba7472e4ae",
"body": "…nly resume lookup, portable tests\n\n- archive scope enumeration takes the caller's context, so the per-machine\n staleness git probes die with the CLI watchdog like every other git child;\n the cli builds all-projects scopes under the run context (agentproto's\n nil-scope fallback documents its deli\n[…]\nental and\n returns loudly instead of routing into the rebuild path\n- README: GitHub's 100 MB per-file limit near the private-repo warning;\n RAWCLAW_ARCHIVE=off kill switch beside the autosync switch",
"is_bot": false,
"headline": "archive/cli: ship-review hardening — ctx-bounded scope probes, read-o…",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T05:02:02Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "8c405c1e5c86e60507b74f65797060c77f8508c8",
"body": "…ion, archive status, kill-safe push recovery",
"is_bot": false,
"headline": "Merge branch 'archive/05-delete-status-killsafe': own-delete propagat…",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T03:27:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "aa6500878dc0fe7746ef616d1499e8b8947af3aa",
"body": "…de tombstones, orphan interleave\n\nFindings from the pre-merge review passes, applied:\n\n- ensureClone rebuilds only on POSITIVE torn/wedged evidence (sentinel-less\n .git, or a detached/unreadable HEAD file after recovery). A transient\n remote-probe or HEAD-probe failure (unreadable config, exec er\n[…]\nn excludes already-tombstoned ids (no re-listing and\n duplicate tombstoning on repeat deletes) and the archive-db namespace\n is one shared constant (index.ArchiveDBPrefix) instead of three literals.",
"is_bot": false,
"headline": "archive/cli/index: review hardening — evidence-gated rebuild, copy-si…",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T03:27:05Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "13f926a5b5657ce94eb05eaa0daf748af1f075c1",
"body": "…gelog",
"is_bot": false,
"headline": "docs: archive status, delete propagation, kill-safety — README + chan…",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T03:15:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fdf290f02270e406bdaa1e48a95d62009a16c145",
"body": "…recovered\n\nA push killed at any point must leave a clone the next verb fully recovers.\nThree recovery layers in ensureClone, all prior-art shapes:\n\n- Torn clone: git clone sets up .git and the origin remote early, so a\n clone killed mid-creation passed the old is-a-repo probe forever. A\n complete\n[…]\n, and steady state is a clean no-op.\nWedge states that cannot be built by killing deterministically (mid-clone,\nmid-rebase with and without recoverable internals, aged locks) are\nconstructed directly.",
"is_bot": false,
"headline": "archive: kill-safe push — torn clones rebuilt, stale operation state …",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T03:15:16Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "6a00f8ee79efbc6fc4ad472664c5cb07f7ec5292",
"body": "rawclaw archive status reports the remote, the local clone (and whether it\nis usable), this machine's last successful push/pull (stamp-file mtimes,\npush stamp new, written at push success), and one line per machine dir with\nits last commit time. Staleness reuses the same probe and 24h window the\nsea\n[…]\nagree on what stale means. Status is offline by design: recorded\nstate only, no fetch; a missing clone is a reported state, not an error.\n\nThe push verb's output now also reports propagated deletions.",
"is_bot": false,
"headline": "archive: status verb — offline freshness report",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T03:15:16Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "b3ed52fe9a05227633b936540f17b3a6f40c80b6",
"body": "An own session removed by the delete verb (file gone + tombstone recorded)\nis removed from the clone after the copy pass on the next push, so an\nexplicit delete is never resurrected by the archive. Claude sessions are\naddressed by file stem, codex rollouts by their session_meta id via the\ncodex adap\n[…]\nfilter\nthat reaches another machine's archived scopes names the machine, and when\nnothing local matches the delete is refused with a pointer at the origin\nmachine instead of silently deleting nothing.",
"is_bot": false,
"headline": "archive: explicit deletes propagate on push; foreign dirs stay read-only",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T03:14:51Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "fa988a6bbb361a528e64b90c54220454efe9f3d3",
"body": "Foreign machines' archive-scope dbs (the archive- namespace) are read-only\nreplicas; a retained row surfacing from one would let the delete path\ntombstone another machine's session. Skip them with the same filename\npredicate the orphan-db scan already uses.",
"is_bot": false,
"headline": "index: retained-session scan never enters archive replica dbs",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T03:14:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "95d9db254265fb25817ae23b4d8af68779dabe22",
"body": "…autosync, hourly timer, single-writer lock\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Merge branch 'archive/03-autosync-timer': freshness — sync-on-invoke …",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T03:12:14Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "9844b768ba11482af117f6cdc77e794a8c36de6b",
"body": "…escaping\n\nFindings from the pre-merge review pass, applied:\n- cli TestMain sets the autosync kill switch package-wide, so a test that\n drives a successful search through the real command tree can never exec\n the TEST BINARY as a detached sync child against a real archive config.\n- The sync child \n[…]\nound sync.\n- Style: timer tool exec is ctx-bounded like the git seam; seam renames\n (selfExe, autosyncLogLine); wrapped log-open errors; gofmt.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "archive/cli: review hardening — test-spawn guard, orphan-git margin, …",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T03:11:05Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "bd5fa0b495479e924fd54a3219e0662012448944",
"body": "…ject)\n\nOrdinary usage now quietly keeps the archive current: after a successful\nsearch/read/outline prints its results, the CLI fires a DETACHED\nself-invocation (hidden `archive autosync`: push + throttled pull) —\nsetsid on POSIX / detached console on Windows, stdout+stderr appended to\narchive/auto\n[…]\nt=true) — never\nwired silently; --eject removes exactly the registration and rawclaw's\nown files, tolerating already-gone, touching no siblings.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "archive/cli: sync-on-invoke autosync + hourly timer (enable-timer/--e…",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T03:11:05Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "745a4f40361f8ae01adf17da802b23d7a9bf885a",
"body": "Two local processes pushing (or a pull rebasing while a push stages) raced\nover the same clone and its .git/rawclaw-tmp staging dir. A flock on a\nstate-dir lockfile (beside the clone, never inside the deletable clone)\nnow serializes every clone mutation: a second syncer waits briefly, then\nno-ops wi\n[…]\nit, so waiting out a\nholder that just pulled costs zero git. gofrs/flock (cross-platform,\nincl. Windows) rather than a hand-rolled syscall pair.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "archive: machine-wide single-writer sync lock",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T03:11:05Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "efd99ac587f280cd95eae88cd402aa744dacebb9",
"body": "…the default display posture — tool calls stripped, --include-tools opts in",
"is_bot": false,
"headline": "Merge branch 'archive/live-display-align': live session peeks follow …",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T03:09:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "570c9f94c21da9bb35e54d7c8ee6081541f1255b",
"body": "…ture\n\nReview follow-ups. A turn that is nothing but tool calls strips to\nempty under the new default, and rendering it as a blank timestamped\nline made a tool-heavy tail read as a dead session — skip empty turns\n(the posture read already takes) and say how many were hidden, naming\nthe opt-in. Terser --include-tools help matching the family voice.\nREADME + the unreleased changelog entry stop claiming the human render\nis raw bytes: raw is what --json carries.",
"is_bot": false,
"headline": "live: skip tool-only turns in the default render; docs follow the pos…",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T03:06:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "213a127228b870376a83343e3660b83ff866094b",
"body": "… opts in\n\nThe live session render hardcoded tools-on, diverging from the default\ndisplay posture of every other surface (read, outline, search snippets):\nconversation only, with --include-tools as the explicit opt-in.\n\nAlign it: the serve half strips tool runs from the human render unless\n--include\n[…]\ninst\na remote that predates the flag; a remote failing on the unknown flag\nis classified as the existing too-old story (run rawclaw upgrade).\nThe flag on a list is a loud usage error, matching --tail.",
"is_bot": false,
"headline": "live: strip tool calls from session peeks by default, --include-tools…",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T02:57:57Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "0065b1986d0a89a73fb056c15425d58f787fe1dd",
"body": "…fer, watchdog child reaping, atomic config write",
"is_bot": false,
"headline": "Merge branch 'archive/hardening-pass-1': hardening — bounded list buf…",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T02:48:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "83813a89c056a1bd4546e5a11df5e77ff6c3678a",
"body": "…le tests\n\n- runGit: context cancellation now delivers SIGTERM (git removes its lock\n files on the way out - verified: SIGKILL strands .git/index.lock, SIGTERM\n does not), with WaitDelay as the hard-kill backstop. Without this, a\n deadline firing mid-git-mutation could wedge the managed clone.\n- \n[…]\n.\n- comment accuracy: the run-context kill covers direct children, not whole\n process trees; the grace waits for the kill to land, not to reap.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "review pass: git lock-safe cancellation, scratch-file hygiene, portab…",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T02:47:15Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "309d68180462769ad7ec336b1c758bcbef3247bf",
"body": "The config landed via a direct truncate-and-write, so a process killed\nmid-write could leave a torn archive-config.json - rejected by Load on every\nlater run until the file is removed by hand. The bytes now land in a scratch\nfile beside the config and rename swaps it in: same-directory rename is\nato\n[…]\n interrupted write leaves either the old config or the new one.\nA stray scratch file from a kill in the window is overwritten by the next\nwrite.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "archive: write the config atomically",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T02:46:56Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "39c0d03101abddbe4fb81ea5e3f599c59b9fca48",
"body": "List buffered the remote's entire stdout before parsing, so a broken or\nhostile remote streaming unbounded output could exhaust local memory. The\nlist now lands in a capped buffer (8 MiB - orders of magnitude above any\nreal session list); the write that would exceed the cap is refused, which\nstops t\n[…]\n reports a clear over-limit story instead of a\nmisclassified transport error. Session peeks already stream through\nunbuffered and are untouched.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "live: bound the buffered session-list response",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T02:46:56Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "5e867d3cf2d8c999845fa65a77d638879397ebfe",
"body": "The watchdog's exit(124) terminated the rawclaw process but left any child\nstarted for the run (the ssh a live peek dials) running as an orphan - with\nthe remote serving process alive behind it whenever the remote produced no\nfurther output to trip a pipe error. startWatchdog now returns the run's\nc\n[…]\nxt kills the child - with a short grace before\nexit(124) for the kill to land. A helper-process test proves a child cannot\noutlive the deadline.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "cli: watchdog deadline reaps child processes before exit",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T02:46:56Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "0292c3cba975cb0c01656b974152f6382e345a96",
"body": "…e transcript archive\n\narchive pull (throttled variant included) + foreign machine dirs enumerated\nas searchable scopes with origin_machine stamped from each dir's manifest;\nread/outline/resume handle foreign sessions; stale dirs reported through the\nexisting stale-fallback posture.",
"is_bot": false,
"headline": "Merge branch 'archive/02-foreign-scopes': cross-machine search via th…",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T02:25:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c219e75513d32284e1436dd8052ca105c34a982e",
"body": "…covered\n\nA peer machine that re-registers under a new name leaves its old dir in the\narchive forever (nothing prunes); both dirs claim one machine id and identical\nsession files, which double-listed every pre-rename session under an id no\nprefix could disambiguate — dirs now dedupe by manifest mach\n[…]\ncal stamp and corrupt provenance). A clone\nleft mid-rebase by a kill is aborted by the next verb that touches it, and\nin-process rebase aborts run on a fresh context so a canceled ctx can't skip\nthem.",
"is_bot": false,
"headline": "archive: bug-hunt fixes — renamed-peer dirs deduped, wedged rebase re…",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T02:23:50Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "eb52da1c9e3eb088ac929dfa7f9c0151ca773a5b",
"body": "Pinned LC_ALL=C on the git runner so output classification survives non-English\nlocales; Pull's report is now two honest states (remote consulted vs throttled\nskip — an empty remote reads as verified-fresh) with named returns; foreign\ntree listing uses os.ReadDir instead of Glob so a metachar in a p\n[…]\nopes; unreadable clone listing warns before\ndegrading; --json honored on the foreign-resume multi-match branch; dirStale\ntakes a ctx; test cleanup via defer; WithOrigin naming for the ingest variants.",
"is_bot": false,
"headline": "archive/cli/index: review fixes",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T02:23:50Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "cd7d5bf229ae92257790992c030a850b416e4c11",
"body": "`rawclaw archive pull` refreshes the clone (explicit always pulls;\n--throttle honors the stamp window for background callers; unconfigured is a\nclean no-op). --resume falls back to the archive replicas when nothing local\nmatches and degrades with the owning machine's name plus the command to run\nthere. README + changelog cover cross-machine search.",
"is_bot": false,
"headline": "cli: archive pull verb + foreign-session resume degrade; docs",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T02:23:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "67b7a0a2f575ee8391692f08c736a2e67d211a05",
"body": "Foreign sessions surface in plain search under their machine label, read and\noutline resolve foreign refs, local sessions never duplicate, and a stale\nforeign dir is reported through the stale-fallback posture with results still\nserved. Shared fixture in archive/archivetest.",
"is_bot": false,
"headline": "agentproto: cross-machine search/read/outline exercised end-to-end",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T02:23:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3928ab3e97bd7961c8b1dd06678344e945e893e0",
"body": "…lve stale\n\nAll() unions the archive's foreign machine scopes (source filter applies\nper-scope); Resolve maps a Stale replica to IndexStale so the existing\nstale-fallback posture reports it while still serving results; the Claude\norphan-db scan skips archive-namespaced dbs (their live source is the clone,\nnot a purged project).",
"is_bot": false,
"headline": "scopes: splice archive replicas into enumeration; stale replicas reso…",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T02:23:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1956f2d64c3f1d665f42ebc361a5bc6528745493",
"body": "Pull refreshes the clone (re-clones a deleted one) with a stamp-file throttle\n(mtime + 5-min window; throttle=false always pulls; empty remote is a clean\nno-op; failed rebases aborted). Scopes enumerates FOREIGN machine dirs only —\nown dir and any dir whose manifest claims our machine id are exclude\n[…]\nit is older than 24h is\nflagged stale (enumerated and served, reported through the scope status).\nview.Scope carries Origin/OriginName/Stale; the Codex adapter gains\nDiscoverRoot for replicated trees.",
"is_bot": false,
"headline": "archive: pull verb + foreign machine dirs as searchable scopes",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T02:23:50Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "a8c7102622e3ff964f4a924c27c600bf3bf8f23d",
"body": "EnsureIndexedTree generalizes EnsureIndexed (explicit db path + origin);\nEnsureIndexedContainers gains an origin param. Empty origin keeps the\nlocal-machine stamp byte-identical. This is the provenance seam a replicated\ntranscript tree indexes through so its rows carry the tree owner's identity.",
"is_bot": false,
"headline": "index: injectable origin_machine on both ingest paths",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T02:23:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bf31a5206dd95c23624cae1a2e6e72cb5d71ad3c",
"body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Merge branch 'archive/04-live-peek': rawclaw live — direct-SSH live peek",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T02:15:07Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "0a748fd355e0ff73b4c339cebec0464998530273",
"body": "…lenient ssh-map config\n\nBug-hunt + review findings: a flag-shaped session prefix now crosses the pipe\nas a positional (literal --); the remote serve run gets --timeout 0 (the local\nwatchdog + ssh already bound it, and the remote's own 30s default would kill a\nlong render with advice no local flag c\n[…]\n bare name; empty prefix rejected;\nambiguous listing capped; cross-mode flags rejected loudly; loopback test pins\nhost-key state to a temp file.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "live: review hardening — prefix behind --, remote watchdog disarmed, …",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T02:14:14Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "e6da115097b9325f76776ddf4839516ffa3f1dcb",
"body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "live: CLI verb + docs — rawclaw live <machine> [session-prefix]",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T01:57:36Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "5a153b63adcefd9bba9688c8e30dc303b7ae6466",
"body": "…ailure stories\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "live: client half — ssh dial, list render, session stream, distinct f…",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T01:53:38Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "6edba5252f01654be677e5fe8a7b0bdab6429c94",
"body": "… files\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "live: serving half — list + render local sessions from the transcript…",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T01:51:17Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "2e3e6934b02ec6ed7128cf7ea5592127d963bc38",
"body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "archive: ssh destination map in config (live-peek name resolution)",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T01:48:13Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "d72c03f859bf4edff89407b57b1a05a922712476",
"body": "… (archive init + push)\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Merge branch 'archive/01-init-push-tracer': transcript archive tracer…",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T01:35:10Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "802999ff9d584024cdd5232fc83b07a386e2d6c9",
"body": "…temps, remote drift refused\n\nThree real failure shapes closed:\n- A commit whose push failed (network down, kill mid-push) was stranded\n forever on a machine that stopped producing new transcripts: the\n nothing-staged path now checks whether HEAD is ahead of the remote-tracking\n branch and pushes\n[…]\nclone); the copy loop\nhonors context cancellation between files; the quick-check comment states the\nhead+tail fingerprint's blind spot honestly.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "archive: bug-hunt fixes — stranded commits recovered, kill-safe copy …",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T01:35:04Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "ce0f4a9115ea58beac0fd4abb76e936461783939",
"body": "… named subtests\n\nThe machine name flows into `git add/status -- <name>` as a pathspec, so an\nexplicit --name carrying glob characters ('ma*') could stage other machines'\ndirs: names are now restricted to [A-Za-z0-9._-] (dots may not lead). The\nunreadable-config error keeps its cause chain (%w); cop\n[…]\nto create the (private) repo on the host first; the archive\nverb's help text disambiguates the session-file form from the init/push\nsubcommands.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "archive: review fixes — pathspec-safe names, chain-preserving errors,…",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T01:26:16Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "64b190c5a8d043e063a8cb667cb71b07b1b53c04",
"body": "The README carries the same the-remote-must-be-PRIVATE statement archive init\nprints (the warning is the mechanism; no host-side visibility detection).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs: archive tracer — README section + changelog entry",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T01:19:42Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "b6c13ad3118d059d0dbe6e7d149a1ebc07ae7bcf",
"body": "New internal/archive module: one git repository shared by all of a user's\nmachines, one top-level dir per machine (<machine>/<source>/...), the durable\nhome for raw transcript bytes. Load() resolves config (env + config file) and\nreturns nil when unconfigured — feature off costs one nil-check. PushL\n[…]\nession-file form still routes to the parent).\nInit prints the private-repo privacy warning; unconfigured push is a clean\nno-op pointing at init.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "archive: init + push tracer — transcripts land in a git remote",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-19T01:19:34Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "27766670d5e83cc3e9af1d30fcb0537104ae0036",
"body": "Closes the two gaps reported earlier: semantic's churn/prune fixtures drop\ntheir last raw DELETEs, and the vec meta stamp value is asserted where\nthe schema lives.",
"is_bot": false,
"headline": "storetest: add DeleteMessage helper; pin vec_schema_version stamp",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-18T14:50:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a6ceb21931e6eb83632be8c977dd2e7f2f3b0eff",
"body": "…re surface",
"is_bot": false,
"headline": "Merge branch 'refactor/migrate-semantic-cli': semantic + cli onto sto…",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-18T14:48:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f07212dc5fefec60ef07597d74c8c210887173b0",
"body": "codexResumeHits' sessions query moves to store.SessionsByPrefix\n(top-level only, limit 3); cli's private openRW is retired for\nstore.ConnectRW (D2's approved 10s superset) in the reindex vector pass\nand tag-write; loadSessionMessages moves to store.SessionMessages and\ntagMsg is replaced by store.SessionMessage. Tag test fixtures move to\nstoretest.NewDB/InsertSession/InsertMessage.",
"is_bot": false,
"headline": "cli: adopt store connections + typed reads",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-18T14:46:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7e78cad833b8f960fe97248515bc2703997ef5b1",
"body": "VecIndex's five SQL sites move to store.AllMessages/VecAll/VecPrune/\nVecRefreshMsgID/VecUpsert; VecKNN's scan moves to store.VecAll (fully\ndrained before the per-candidate store.MessageMeta existence checks, so\nthe single-conn D3 invariant holds). semantic's EnsureVecSchema/\nHasVectors/VecSchemaVers\n[…]\ne\nto storetest.NewDB/InsertSession/InsertMessage/SetSessionField; the\nthree DELETE FROM messages fixture mutations stay raw pending a\nstoretest message-delete helper (D8 forbids adding one from here).",
"is_bot": false,
"headline": "semantic: route chunk_vec SQL through store",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-18T14:46:42Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "ed7770e8e9823c72f845ea9e8a9fe3a75c499853",
"body": "…eads",
"is_bot": false,
"headline": "Merge branch 'refactor/migrate-retrieve': retrieve onto store typed r…",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-18T14:42:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e68c7ae5adf0578c22aac4f3e53cf557506198ce",
"body": "…ed reads",
"is_bot": false,
"headline": "Merge branch 'refactor/migrate-agentproto': agentproto onto store typ…",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-18T14:42:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fa386a1555df278a2a065c5dd4909a965c6d3642",
"body": null,
"is_bot": false,
"headline": "Merge branch 'refactor/migrate-view': view onto store typed reads",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-18T14:42:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "26145ce90a6a69659b77e03e7fc6d69cc9e203ae",
"body": "Migrate every inline SQL site onto the store read surface:\nresolveUUID -> store.ResolveMessageUUID (limit 2, git-style 0/1/2\nsemantics kept), locateSession -> store.SessionsByPrefix (per-scope\nlimit 2, cross-scope aggregation and ErrAmbiguousSession /\nErrSessionNotFound unchanged), sessionMeta -> st\n[…]\nExist / store.MessageUUID.\n\nDrop the dead thisScope helper (the pre-existing unused lint finding)\nand the now-unneeded context/os/paths imports. Zero raw table-name SQL\nremains in internal/agentproto.",
"is_bot": false,
"headline": "agentproto: swap raw SQL for store typed reads",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-18T14:41:37Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "05428772de0065b5f67ec3fdcda8ecfc27db396e",
"body": "searchScored -> store.SearchHits, MatchAnchors -> store.SearchAnchors\n(SearchParams mapped onto store.Filter/Sort; OR-expansion, coverage\nre-rank, and snippet/scoring logic stay retrieve-side), LineageRoot's\nparent walk -> store.ParentOf (64-hop guard kept). Private openRO\nretired for store.ConnectRO — adds busy_timeout(5000), the D2-approved\ndelta. Test fixtures move onto storetest.NewDB/InsertSession/\nInsertMessage; retrieve now carries zero raw SQL.",
"is_bot": false,
"headline": "retrieve: swap FTS SQL for store typed reads",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-18T14:41:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3ff161aa61ab9dd12d87057c880f7e67e988aa9b",
"body": "BuildAnchoredView's four window/bookend queries move to store.MessagesBefore/\nMessagesAfter/BookendMessages, Browse's sessions query to store.BrowseSessions\n(which drains before returning, preserving the single-conn drain-then-preview\ninvariant), and sessionPreview to store.FirstUserMessages. readMs\n[…]\n. Test fixtures migrate from a\nhand-rolled messages table to storetest's production schema (D7), pinning\nfixture rowids against the seedMsg ids.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "view: swap raw SQL for store typed reads",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-18T14:40:18Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "90fa5b5f177adfb65340bd95ade687846b050764",
"body": "…oretest fixtures",
"is_bot": false,
"headline": "Merge branch 'refactor/store-reads': typed read surface on store + st…",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-18T14:34:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a6e7ffb69407866568a4dcf3a378d3c6d6a0c871",
"body": "Add internal/store/storetest (D7): NewDB builds a production-schema db\nvia store.ConnectRW + store.Rebuild (base schema + FTS + version\nstamp), InsertSession / InsertMessage (uuid included) insert fixture\nrows, and SetSessionField mutates the allowlisted durable-retention\ncolumns (missing_since / or\n[…]\nontent filters, empty results, and\nthe missing-table degrade paths (TopicRowsExist, HasVectors, VecAll).\nPlus the repo-standard goleak TestMain.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "storetest: interface-built fixtures",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-18T14:33:21Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "2e70c3b8ecc3cf3f45471de5213126e6557a51ac",
"body": "Move the topic query surface (TopicSegment/TopicHit,\nUpsertTopicSegment, TopicsForSession, MatchTopics, TopicForMessage)\nand the corpus counters (CorpusStats, CountSessions,\nCountTopLevelSessions, GetCorpusStats) from internal/index into\ninternal/store (D6) — pure code motion, SQL and degrade semant\n[…]\nts stay in index for now: they drive the moved\nsurface through index's EnsureIndexed/EnsureSchema orchestration,\nwhose fixtures are future work.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "store: absorb topic + stats query surface from index",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-18T14:33:11Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "c45728829affb82bea353e8aa4a148c253eee37c",
"body": "Add the store read/write seam so consumer packages can drop their\nraw SQL: sessions (BrowseSessions, SessionsByPrefix,\nSessionMeta, ParentOf), messages (MessagesBefore/After,\nBookendMessages with optional bound, FirstUserMessages,\nSessionMessages, AllMessages, ResolveMessageUUID, MessageUUID,\nMessag\n[…]\ns -> 10s, the superset of index's old 5s and cli.openRW's 10s. Both\nopeners now document the single-conn drain-before-next-query\ninvariant (D3).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "store: typed read surface for sessions/messages/fts/vectors",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-18T14:33:00Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "8a578ba98b1cee1784e6a2ffff95c3ffb7f3d708",
"body": "…ion/provenance",
"is_bot": false,
"headline": "Merge branch 'refactor/store-carveout': split index into store/retent…",
"author_name": "MoonCaves",
"author_login": "MoonCaves",
"committed_at": "2026-07-18T14:17:07Z",
"body_truncated": false,
"is_coding_agent": false
}
],
"releases_count": 8,
"commits_last_year": 167,
"latest_release_at": "2026-07-20T17:27:23Z",
"latest_release_tag": "v0.7.1",
"releases_from_tags": false,
"days_since_last_push": 3,
"active_weeks_last_year": 5,
"days_since_latest_release": 5,
"mean_days_between_releases": 0.4
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": true,
"health_percentage": 57,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"ecosystem": {
"packages": [
{
"name": "github.com/MoonCaves/rawclaw",
"exists": true,
"license": null,
"keywords": [],
"ecosystem": "go",
"matches_repo": true,
"registry_url": "https://pkg.go.dev/github.com/MoonCaves/rawclaw",
"is_deprecated": false,
"latest_version": "v0.7.1",
"repository_url": "https://github.com/MoonCaves/rawclaw",
"versions_count": 8,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": null,
"monthly_downloads": null,
"first_published_at": null,
"latest_published_at": "2026-07-20T17:24:49Z",
"latest_version_yanked": null,
"days_since_latest_publish": 5
}
]
},
"popularity": {
"forks": 0,
"stars": 0,
"watchers": 0,
"fork_history": {
"days": [],
"complete": true,
"collected": 0,
"total_forks": 0
},
"star_history": {
"days": [],
"complete": true,
"collected": 0,
"total_stars": 0,
"collected_at": null
},
"open_issues_and_prs": 0
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [],
"has_llms_txt": false,
"has_dockerfile": false,
"has_mcp_signal": false,
"bootstrap_files": [],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [],
"toolchain_manifests": [
"go.mod"
],
"largest_source_bytes": 50003,
"source_files_sampled": 177,
"oversized_source_files": 0,
"agent_instruction_files": [
"AGENTS.md"
],
"agent_instruction_max_bytes": 4790
},
"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/gofrs/flock",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.13.0"
},
{
"name": "github.com/spf13/cobra",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.10.2"
},
{
"name": "github.com/spf13/pflag",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.0.9"
},
{
"name": "go.uber.org/goleak",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.3.0"
},
{
"name": "golang.org/x/sys",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.41.0"
},
{
"name": "modernc.org/sqlite",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.45.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": 1,
"open_issues": 0,
"closed_ratio": null,
"closed_issues": 0,
"closed_unmerged_prs": 0
},
"bus_factor": 1,
"bot_contributors": 0,
"top_contributors": [
{
"type": "User",
"login": "MoonCaves",
"commits": 167,
"avatar_url": "https://avatars.githubusercontent.com/u/144150401?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/28 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": 10,
"reason": "packaging workflow detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
},
{
"name": "Pinned-Dependencies",
"score": 0,
"reason": "dependency not pinned by hash detected -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
},
{
"name": "SAST",
"score": 0,
"reason": "SAST tool is not run on all commits -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
},
{
"name": "Security-Policy",
"score": 0,
"reason": "security policy file not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
},
{
"name": "Signed-Releases",
"score": 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": 9,
"reason": "1 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "bb4d23497e5595d174969d1bc1be33e67d7db1bd",
"ran_at": "2026-07-26T05:19:51Z",
"aggregate_score": 3.3,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": false,
"has_dependabot_config": false
},
"contribution_flow": {
"collected": true,
"ci_last_run_at": "2026-07-23T04:04:22Z",
"oldest_open_prs": [],
"last_merged_pr_at": "2026-07-23T04:03:41Z",
"ci_last_conclusion": "SUCCESS",
"oldest_open_issues": []
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/MoonCaves/rawclaw",
"host": "github.com",
"name": "rawclaw",
"owner": "MoonCaves"
},
"metrics": {
"overall": {
"key": "overall",
"band": "moderate",
"name": "Overall health",
"note": null,
"notes": [],
"value": 54,
"inputs": {
"security": 33,
"vitality": 71,
"community": 33,
"governance": 50,
"engineering": 76
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "good",
"name": "Vitality",
"value": 71,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "moderate",
"name": "Development activity",
"note": null,
"notes": [],
"value": 58,
"inputs": {
"commits_last_year": 167,
"human_commit_share": 1,
"days_since_last_push": 3,
"active_weeks_last_year": 5
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 3 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "push_recency",
"params": {
"days": 3
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "5/52 weeks with commits",
"points": 3.5,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 5
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "167 commits in the last year",
"points": 18,
"status": "met",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 167
}
}
],
"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": 8,
"latest_release_tag": "v0.7.1",
"releases_from_tags": false,
"days_since_latest_release": 5,
"mean_days_between_releases": 0.4
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "8 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 8
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 5 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 5
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~0.4 days",
"points": 27,
"status": "met",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 0.4
}
}
],
"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": 0,
"watchers": 0,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "0 stars",
"points": 0,
"status": "missed",
"details": [
{
"code": "stars",
"params": {
"count": 0
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "0 forks",
"points": 0,
"status": "missed",
"details": [
{
"code": "forks",
"params": {
"count": 0
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "0 watchers",
"points": 0,
"status": "missed",
"details": [
{
"code": "watchers",
"params": {
"count": 0
}
}
],
"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 (MIT)",
"points": 22.5,
"status": "met",
"details": [
{
"code": "license_standard",
"params": {}
},
{
"code": "license_spdx",
"params": {
"spdx": "MIT"
}
}
],
"max_points": 22.5
},
{
"key": "contributing_guide",
"name": "CONTRIBUTING guide",
"detail": null,
"points": 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": 50,
"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": 1,
"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": "1/1 decided PRs merged",
"points": 38.2,
"status": "met",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 1,
"decided": 1
}
}
],
"max_points": 38.25
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 0/28 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": 34,
"inputs": {
"followers": 1,
"owner_type": "User",
"is_verified": null,
"owner_login": "MoonCaves",
"public_repos": 16,
"account_age_days": 1054
},
"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": "1 followers of MoonCaves",
"points": 2.2,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 1,
"login": "MoonCaves"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "16 public repos, account ~2 yr old",
"points": 14.7,
"status": "partial",
"details": [
{
"code": "public_repos",
"params": {
"count": 16
}
},
{
"code": "account_age_years",
"params": {
"years": 2
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "excellent",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"packages": [
"github.com/MoonCaves/rawclaw"
],
"ecosystems": "go",
"any_deprecated": false,
"min_days_since_publish": 5
},
"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 5 days ago",
"points": 35,
"status": "met",
"details": [
{
"code": "publish_recency",
"params": {
"days": 5
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "8 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 8
}
}
],
"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": 33,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "at_risk",
"name": "Security posture",
"note": null,
"notes": [],
"value": 33,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 18,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 0,
"scorecard_aggregate": 3.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/28 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 detected",
"points": 5,
"status": "met",
"details": [],
"max_points": 5
},
{
"key": "pinned_dependencies",
"name": "Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "sast",
"name": "SAST",
"detail": "SAST tool is not run on all commits -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "security_policy",
"name": "Security-Policy",
"detail": "security policy file not detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "signed_releases",
"name": "Signed-Releases",
"detail": "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": "1 existing vulnerabilities detected",
"points": 6.8,
"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": 84,
"weight": 0,
"metrics": [
{
"key": "ai_agent_context",
"band": "excellent",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 85,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 0.87,
"agent_instruction_files": [
"AGENTS.md"
],
"agent_instruction_max_bytes": 4790
},
"components": [
{
"key": "agent_instructions",
"name": "Agent instructions",
"detail": "AGENTS.md",
"points": 45,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "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": "87 of 100 human commits state their intent (structured subject or explanatory body)",
"points": 40,
"status": "met",
"details": [
{
"code": "legible_history",
"params": {
"legible": 87,
"sampled": 100
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "good",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 77,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [
"go.sum"
],
"has_dockerfile": false,
"typed_language": true,
"bootstrap_files": [],
"has_devcontainer": false,
"has_linter_config": true,
"typecheck_configs": [],
"agent_commit_share": 0.36,
"toolchain_manifests": [
"go.mod"
],
"dependency_bot_commit_share": 0
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": "go.mod (toolchain convention, no task runner)",
"points": 12.6,
"status": "partial",
"details": [
{
"code": "toolchain_convention",
"params": {
"files": "go.mod"
}
}
],
"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": "36 of the last 100 commits agent-authored or agent-credited",
"points": 10,
"status": "met",
"details": [
{
"code": "agent_authored_commits",
"params": {
"count": 36,
"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": 50003,
"source_files_sampled": 177,
"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/177 source files over 60KB",
"points": 55,
"status": "met",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 177,
"oversized": 0
}
}
],
"max_points": 55
}
]
}
],
"description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
}
],
"metrics_version": "1.13.0"
},
"warnings": [
"GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
],
"report_type": "repository",
"generated_at": "2026-07-26T05:19:57.643156Z",
"schema_version": "0.27.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/m/MoonCaves/rawclaw.svg",
"full_name": "MoonCaves/rawclaw",
"license_state": "standard",
"license_spdx": "MIT"
}