Звіт у форматі JSON машиночитний
{
"data": {
"repo": {
"topics": [],
"is_fork": false,
"size_kb": 5500,
"has_wiki": true,
"homepage": null,
"languages": {
"CSS": 3119,
"MDX": 118,
"Python": 2914630,
"TypeScript": 9271
},
"pushed_at": "2026-07-30T18:16:06Z",
"created_at": "2026-07-03T01:43:48Z",
"owner_type": "Organization",
"updated_at": "2026-07-30T18:05:25Z",
"description": "Dream-briefing for AI coding agents: a cognitive checkpoint at session end, a 'while you were away' briefing at session start.",
"is_archived": false,
"is_disabled": false,
"license_spdx": "Apache-2.0",
"default_branch": "main",
"license_spdx_raw": "Apache-2.0",
"primary_language": "Python",
"significant_languages": [
"Python"
]
},
"owner": {
"blog": null,
"name": "DailyNerdOrg",
"type": "Organization",
"login": "Daily-Nerd",
"company": null,
"location": null,
"followers": 2,
"avatar_url": "https://avatars.githubusercontent.com/u/118483536?v=4",
"created_at": "2022-11-17T20:44:21Z",
"is_verified": null,
"public_repos": 12,
"account_age_days": 1350
},
"license": {
"state": "standard",
"spdx_id": "Apache-2.0",
"raw_spdx": "Apache-2.0",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "v0.22.0",
"kind": "minor",
"published_at": "2026-07-30T18:16:06Z"
},
{
"tag": "v0.21.0",
"kind": "minor",
"published_at": "2026-07-29T03:26:14Z"
},
{
"tag": "v0.20.0",
"kind": "minor",
"published_at": "2026-07-23T14:18:53Z"
},
{
"tag": "v0.19.0",
"kind": "minor",
"published_at": "2026-07-21T18:40:31Z"
},
{
"tag": "v0.18.0",
"kind": "minor",
"published_at": "2026-07-18T09:44:39Z"
},
{
"tag": "v0.17.0",
"kind": "minor",
"published_at": "2026-07-16T06:10:57Z"
},
{
"tag": "v0.16.1",
"kind": "patch",
"published_at": "2026-07-14T06:39:43Z"
},
{
"tag": "v0.16.0",
"kind": "minor",
"published_at": "2026-07-13T18:53:12Z"
},
{
"tag": "v0.15.0",
"kind": "minor",
"published_at": "2026-07-11T22:18:43Z"
},
{
"tag": "v0.14.0",
"kind": "minor",
"published_at": "2026-07-11T04:14:42Z"
},
{
"tag": "v0.13.0",
"kind": "minor",
"published_at": "2026-07-10T03:46:35Z"
},
{
"tag": "v0.12.3",
"kind": "patch",
"published_at": "2026-07-09T17:52:27Z"
},
{
"tag": "v0.12.2",
"kind": "patch",
"published_at": "2026-07-09T17:43:15Z"
},
{
"tag": "v0.12.1",
"kind": "patch",
"published_at": "2026-07-09T08:46:20Z"
},
{
"tag": "v0.12.0",
"kind": "minor",
"published_at": "2026-07-08T23:39:34Z"
},
{
"tag": "v0.11.1",
"kind": "patch",
"published_at": "2026-07-08T03:26:04Z"
},
{
"tag": "v0.11.0",
"kind": "minor",
"published_at": "2026-07-08T01:10:42Z"
},
{
"tag": "v0.10.0",
"kind": "minor",
"published_at": "2026-07-07T23:42:53Z"
},
{
"tag": "v0.9.0",
"kind": "minor",
"published_at": "2026-07-07T02:08:47Z"
},
{
"tag": "v0.8.2",
"kind": "patch",
"published_at": "2026-07-07T01:27:25Z"
},
{
"tag": "v0.8.1",
"kind": "patch",
"published_at": "2026-07-06T20:22:09Z"
},
{
"tag": "v0.8.0",
"kind": "minor",
"published_at": "2026-07-04T08:44:06Z"
},
{
"tag": "v0.7.0",
"kind": "minor",
"published_at": "2026-07-04T07:05:47Z"
},
{
"tag": "v0.6.0",
"kind": "minor",
"published_at": "2026-07-04T00:27:43Z"
},
{
"tag": "v0.5.0",
"kind": "minor",
"published_at": "2026-07-03T23:52:14Z"
},
{
"tag": "v0.4.0",
"kind": "minor",
"published_at": "2026-07-03T22:09:41Z"
},
{
"tag": "v0.3.3",
"kind": "patch",
"published_at": "2026-07-03T05:52:06Z"
},
{
"tag": "v0.3.2",
"kind": "patch",
"published_at": "2026-07-03T04:24:02Z"
},
{
"tag": "v0.3.1",
"kind": "patch",
"published_at": "2026-07-03T03:14:18Z"
},
{
"tag": "v0.3.0",
"kind": "minor",
"published_at": "2026-07-03T02:58:34Z"
}
],
"recent_commits": [
{
"oid": "6ed5e2f930e300da7542d936d6f3fe9ebecf64ac",
"body": ":robot: I have created a release *beep* *boop*\n---\n\n\n##\n[0.22.0](https://github.com/Daily-Nerd/daimon/compare/v0.21.0...v0.22.0)\n(2026-07-30)\n\n\n### Features\n\n* **briefing:** render the corroboration badge — separate axis, never a\ntrust class ([#268](https://github.com/Daily-Nerd/daimon/issues/268)\ns\n[…]\noogleapis/release-please#release-please).\n\nCo-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>\nCo-authored-by: Kibukx <72950620+Kibukx@users.noreply.github.com>",
"is_bot": true,
"headline": "chore(main): release 0.22.0 (#394)",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-30T18:15:54Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "cb5c02562f881ea4bd0fe4e282b7e693a1868a1a",
"body": "…rally sealed (#268 slice 5) (#446)\n\nCloses #268\n\nFinal slice. The corroboration axis (S0 #441, S1 #442, S2 #443, S3 #444,\nS4 #445) is now fenced and documented.\n\n## Summary\n- **Fence 1 — echo (the issue comment's mandated E2E)**: transcript\ncarrying a prior item in BOTH injection shapes, extraction\n[…]\nduction changes — tests and docs only\n- [x] Scars honored: 0016 (pinned clocks), 0024 (bilingual links), 0026,\n0027, 0028 (ranking fence designed below the trust lid so the ceiling\ncan't mask a boost)",
"is_bot": false,
"headline": "test(corroboration): fences + docs — the axis is complete and structu…",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-30T18:03:42Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "05e30bb499d369876f4b72642530d0df9e6960a2",
"body": "… a trust class (#268 slice 4) (#445)\n\nRefs #268\n\n## Summary\n- `[≈ corroborated ×N]` renders at N ≥ 2 total independent sightings\n(origin of record + **effective** origins — demotion-zeroed origins\nnever count), after `[carried]`/foreign annotations, before the quote.\n- Separate axis: `_mark()` unto\n[…]\n; mypy 63 = baseline (normalized error-set diff empty)\n- [x] Zero uncovered added lines (programmatic diff∩missing = ∅, all 5\nsource files)\n- [x] No scoring/recall change (S5 fences that structurally)",
"is_bot": false,
"headline": "feat(briefing): render the corroboration badge — separate axis, never…",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-30T17:27:25Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "51657f2d86a25d3c86b790993a099970a987e124",
"body": "… counts (#268 slice 3) (#444)\n\nRefs #268\n\n## Summary\n- `capture.run` threads the S2 `observed` sink into a new\n`_emit_corroborations` — both doors inherit via the converged pipeline\n(capture-parity green).\n- Rows via `store.append_event` only (admit_row redaction + write-audit\ncompliance; KNOWN_BYP\n[…]\nprogrammatically,\ndiff∩missing = ∅)\n- [x] write-audit guard green with KNOWN_BYPASSES zero-diff;\ncapture-parity green\n- [x] No plaintext of forgotten values anywhere in events.jsonl\n(asserted on disk)",
"is_bot": false,
"headline": "feat(capture): corroboration events — namespaced ledger rows, derived…",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-30T16:51:42Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "2cd699430cec817853ed194bd48ea7638674169c",
"body": "…re (#268 slice 2) (#443)\n\nRefs #268\n\n## Summary\n- `carry.merge()` gains an optional `observed` sink: pairs passing ALL\nindependence guards are recorded as corroboration candidates —\n`(item_id, origin_session, origin_author)`.\n- Guards G1–G6 from the ratified design: bound origin, different origin\n(\n[…]\ncture guards green\n\n## Notes\n- Exact-text branch searches `native`, not `native_texts` (the latter\naccumulates carried texts mid-call — matching against a carried sibling\nwould be self-corroboration).",
"is_bot": false,
"headline": "feat(carry): corroboration predicate — origin-proven independence, pu…",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-30T16:08:08Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "ba7202aac3edb51aa19e0ef817c9b75ae652f7cc",
"body": "Refs #268\n\n## Summary\n- New pure `policy.bind_origin(checkpoint)`: stamps\n`origin_session`/`origin_author` on every item at admission, setdefault\nsemantics on the `id`/`first_seen` rail — the first writer survives\narbitrarily many carry hops, which single-hop `carried_from` cannot\nanswer (and answer\n[…]\nstance(block, dict)` tolerance\n(drop_forgotten's shape) rather than the `or {}` idiom — the latter\nraises on torn/legacy string sections; siblings carry that latent nit,\ndeliberately not touched here.",
"is_bot": false,
"headline": "feat(policy): bind item origin at write time (#268 slice 1) (#442)",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-30T15:49:18Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "4710e1725dae7030d0ad0ca5b88ac303ea618344",
"body": "…jected text as witness (#441)",
"is_bot": false,
"headline": "fix(serializer): quote verification no longer accepts daimon's own in…",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-30T15:23:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "20bc9a474c7cca93e189a7d895af1ed28d449e25",
"body": "…rity-tested path (#437)\n\nCloses #432\n\n## What\n\nExtracts the shared capture pipeline — serialize →\ncreated/transcript_hash stamps → carry.merge (+resolved fold) →\nbind_links → supersede-candidate emission (with the #425\nforgotten-filter) → write_checkpoint → #376 rejection ledger — into one\nfunction\n[…]\narity test is the +1). The #436 write-audit ratchet guard passes\n— hook-path writes still route through\n`write_checkpoint`/`append_event`/`append_verification`, so every write\ncarries its admit frame.",
"is_bot": false,
"headline": "chore(capture): converge hook and CLI capture pipelines behind one pa…",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-30T06:34:44Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "cdebba9294ce87188608ff4eea3f655ac909ded6",
"body": "…must carry an admit frame, with a bypass ratchet (#436)\n\nCloses #431\n\n## What\n\nThe write-side structural guard (gateway design, slice 2 — the read\nside's twin of test_scoring.py's trust-ceiling guard), in three parts:\n\n1. **`build_parser()` extracted from `cli.main`** — pure refactor, the\nsubparser\n[…]\nerived\ndata rebuilt from checkpoints that themselves pass the seam), git\nsubprocess writes (child process; the Python-side sidecar writes ARE\naudited), and the builtin-open flock sidecar (no content).",
"is_bot": false,
"headline": "test(policy): write-side architecture guard — every command's writes …",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-30T06:19:39Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "59271b6070ce0bf850a78c17498b3f1e0717065a",
"body": "…d copies in historical sessions cannot survive rebuild (#435)\n\nCloses #427\n\n## What\n\nMakes the recall index's rebuild-time forgotten scrub **value-keyed** in\naddition to id-keyed. `_apply_event_resolutions` now collects each\nbucket's `forgotten:` tombstone refs, derives the bucket's forgotten\nconte\n[…]\nen_value_through_carry` no\nlonger unlinks prev remnants before the rebuild — the recall assertion\nnow runs against the untouched on-disk history.\n- Full suite from plugin/: **2214 passed, 2 skipped**.",
"is_bot": false,
"headline": "fix(recall): resolve forgotten tombstones by content key so sibling-i…",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-30T05:58:54Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "733c2fc97e889b9b4be9dcc383ff5dd9925b090b",
"body": "…030 (#434)\n\nCloses #433\n\n## What\n\nPromotes five reviewed scar candidates to active scars 0026–0030 (all\nlandmines) and completes the frontmatter of the one candidate\ndeliberately held back.\n\n- `0026` bare `uv sync` strips dev+pretty extras — suite fails looking\nlike code regressions\n- `0027` `write\n[…]\nles.\n\n## Tests\n\n`scar lint`: 31 files, 0 errors, 0 orphans, 0 partial-rot, 0 unreachable\nevidence. Content-only change under `.scars/` — no runtime code touched;\nscar lint CI job is the relevant gate.",
"is_bot": false,
"headline": "chore(scars): promote five reviewed candidates to active scars 0026-0…",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-30T05:42:20Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "947ddacaa62906eabd88b647a4c04633a389ff39",
"body": "… and trust now apply on read (#430)\n\nCloses #423\n\n## What\n\nAn inbound gate at read/index time: `policy.admit_foreign` — the pure\ntwin of `admit_checkpoint` — runs wherever a teammate's synced\ncheckpoint enters local surfaces, wired into both `store.read_team` and\n`recall._scan_sources`. In-memory o\n[…]\ns/team.md` — scope section now states the allowlist gates\nreads too; new \"The inbound gate\" subsection; corrected the\n`DAIMON_TEAM` env-table line (\"gates writes only; reads are always on\"\nwas wrong).",
"is_bot": false,
"headline": "feat(teamsync): gate inbound team content — scope, redaction, forget,…",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-30T05:26:23Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "7f730804e1f1bcf4aa9c865ce511b9ccdee7ec89",
"body": "…pre-redaction window (#429)\n\nCloses #422\n\n## What\n\n`daimon forget` now purges the serializer chunk cache\n(`<checkpoint_dir>/.chunk-cache/`) wholesale after the successful\ntombstone+rewrite — default-on, never fatal. The command reports\nhonestly either way: `purged N cached chunk extraction(s)` on s\n[…]\nremoved, and the output carries `cache purge failed: <reason>`. Failed\nbefore (`purge_chunk_cache` did not exist).\n- Full suite from `plugin/` after `uv sync --all-extras`: **2186 passed,\n2 skipped**.",
"is_bot": false,
"headline": "fix(forget): purge the serializer chunk cache so deletion covers the …",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-30T05:09:11Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "a17b644c10bf6a457d7c6c48a6bfeadc8aa92e5a",
"body": "…gate writes on the kill switch (#428)\n\nCloses #421\n\n## What\n\n- New `plugin/daimon_briefing/policy.py`: a pure, I/O-free module (same\ninvariant carry.py documents) owning the ordered checkpoint admission\npipeline as `admit_checkpoint(checkpoint, forgotten_keys)` — redact\n(#104), then the value-keyed\n[…]\npen(`/`.write_*`/env access in\npolicy.py.\n\nFull suite: `uv run pytest` from `plugin/` — 2182 passed, 2 skipped\n(2174 pre-existing tests unchanged and green; redaction/forget behavior\ntests untouched).",
"is_bot": false,
"headline": "feat(policy): extract admission pipeline into pure policy module and …",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-30T04:52:07Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "e8f104da1a322e70c23cf6393332d91d36a67173",
"body": "…a forgotten value (#426)\n\nCloses #420\n\n## What\n\nAdds `plugin/tests/test_carry_forget_adversarial.py` — two tests pinning\nthe write-boundary forget gate against carry resurrection. Test-only; no\nproduction changes.\n\n- `test_ungated_prev_cannot_resurrect_forgotten_value_through_carry`:\nbuilds the adv\n[…]\ny rewrite never touches) would keep the\nvalue searchable. The test removes the prev remnants before the rebuild\nassertion — after the raw-disk assertions — and documents this in\n`_drop_prev_remnants`.",
"is_bot": false,
"headline": "test(carry): adversarial forget test — ungated prev cannot resurrect …",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-30T04:41:37Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "f60f2d9e2dcaa5fc75065d649d7f150d011b6818",
"body": "…ger (#425)\n\nCloses #419\n\n## What\n\n`_emit_supersede_candidates` now filters bound (old_id, new_id,\nold_text) pairs against `store.forgotten_content_keys()` before\nemitting: a pair whose `old_text` canonicalizes (via\n`normalize.content_key`, the same keying `_drop_forgotten` uses) into\nthe forgotten \n[…]\nts.\n- `test_candidate_emission_emits_nothing_when_forgotten_keys_read_fails`\n— fail-safe: a raising ledger read emits zero events.\n\nFull suite: `uv run pytest` from `plugin/` — 2171 passed, 2 skipped.",
"is_bot": false,
"headline": "fix(cli): supersede-candidate emission skips values in the forget led…",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-30T04:30:18Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "d3556e12db08e37da7d880a377e0cf9e462ec66c",
"body": "…ibling ids cannot survive (#424)\n\nCloses #418\n\n## What\n\n- `_cmd_forget` now appends the `forgotten:<content_key>` tombstone\nBEFORE rewriting the checkpoint, so `store._drop_forgotten` sees the new\nkey during that same write and scrubs every sibling.\n- The splice itself is now value-keyed: items are\n[…]\nmal_output` — exit 0,\nnormal success line, `forgotten:<content_key>` tombstone on the ledger,\nno forgotten text in `events.jsonl`.\n\nFull suite: `uv run pytest` from `plugin/` — 2171 passed, 2 skipped.",
"is_bot": false,
"headline": "fix(forget): append tombstone before rewrite and remove by value so s…",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-30T04:27:41Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "91ce3b0ed13daf0bc728ab1ce39d33405c0917f5",
"body": "…417)\n\nCloses #416\n\n## What\n\n- Add extraction **rule 21** to `SERIALIZE_SYS`: when the transcript\nstates a date, time, or interval relevant to an item, PREFER a\ncontiguous quote span that keeps that temporal detail over an\nequally-valid span that drops it. The span must still obey rule 17\n(real, con\n[…]\ne-chunk-cache`): a `PROMPT_VERSION`\nbump alone does not rotate the #48 chunk cache — its historical comment\nsays it does, but the cache key has been `EXTRACTION_VERSION` since\n#367. `scar lint` clean.",
"is_bot": false,
"headline": "feat(serializer): prefer quote spans that preserve temporal detail (#…",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-30T02:45:18Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "23a5411b7fd412a259b844336427ec7ce6768f27",
"body": "…brief (#415)\n\nCloses #405\n\n## What\n\nAdds a forbidden-hit dimension to the LongMemEval harness — asserting\nthat particular material must **not** surface, complementing recall\n(which only asserts the right material does).\n\n- Cases gain an optional `forbidden_hits: list[str]`\n(`dataset.forbidden_of`).\n[…]\n **not** run any real benchmark pass — the standing benchmark\ndirective blocks publishing numbers against the live serializer; this\nships the mechanism and its unit tests only.\n\n<!-- PR Type: test -->",
"is_bot": false,
"headline": "test(benchmark): add forbidden-hit dimension scored on the assembled …",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-30T01:51:10Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "b5ca90c7c88b0e39fafb841c7c547519ed9c9d8b",
"body": "…mpliance result (#414)\n\nCloses #407\n\n## What\n\nCommits the full 10-step deletion-durability protocol as one executable,\ndeterministic test (`plugin/tests/test_deletion_durability_protocol.py`)\nand\npublishes the compliance result in the lifecycle docs (en + es).\n\nThe protocol walks a forgotten value \n[…]\n checkpoint\nargument\nin place (drop/redact/id-stamp), so reading the `serialize()` output\nafter\nwriting yields the gated version — snapshot before writing.\n\n<!-- type:test label added after create -->",
"is_bot": false,
"headline": "test(store): commit the deletion-durability protocol + publish the co…",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-30T01:51:06Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "4f02e2efc250b1929b38e48bd2e71008dc731102",
"body": "… can never promote belief (#413)\n\nCloses #408\n\n## What\n\nMakes trust class (`verbatim` / `inferred`) a **ceiling** on authority,\nnot just a display label.\n\n- `scoring.TRUST_CEILING` — a monotone table mapping trust class to the\nmaximum `effective_weight` any process may assign, plus\n`trust_ceiling()\n[…]\nds a scar candidate documenting that the ceiling only clips\nfresh/high-importance items (the `min()` clamp is a no-op below the lid)\n— a trap for future ceiling tests and anyone retuning `TYPE_RULES`.",
"is_bot": false,
"headline": "feat(scoring): trust class as an authority ceiling — recall frequency…",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-30T01:51:03Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "5e0f6b2826041e13d6f353222573bf102572e2e7",
"body": "…ms are rejected, not admitted (#410)\n\nCloses #409\n\n## What\n\nA corruption regression corpus\n(`plugin/tests/test_corruption_corpus.py`) that\ndrives four fixture variants through the real serializer/store\nvalidation gates\nand asserts the malformed three are **rejected**, not silently admitted\n— the\nfa\n[…]\nrun ruff check` + `uv run mypy` on the new file — clean\n- Zero model quota (fixtures only; no LLM seam beyond the existing\nfake-chat factory)\n\n<!-- PR type: New feature? No — tests only. type:test -->",
"is_bot": false,
"headline": "test(serializer): corruption regression corpus — assert malformed ite…",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-30T00:14:35Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "0870dd698d79b16850e6c8674f345f2c9c43a9ca",
"body": "…#411)\n\nCloses #401\n\n## What\n\n`ground_outcomes` matched completed-outcome assertions with an\nEnglish-only verb lexicon, so a Spanish session — a language the project\nsupports end to end (bilingual docs, es briefings) — never matched, and\nits verbatim outcome claims were never grounded. A Spanish \"lo\n[…]\ntly\nstates the per-language boundary of the gate — it lives only in source\ncomments. Stamping the `grounded: null` semantics in the README/docs is\na separate docs-only change and is left as follow-up.",
"is_bot": false,
"headline": "feat(serializer): ground Spanish outcome claims (bilingual lexicon) (…",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-30T00:14:31Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "9daf310eabab2b6eeefffbe31a64e9fb080ee81a",
"body": "…capture gate, hit accounting (#412)\n\nCloses #403\nCloses #400\nCloses #402\nCloses #404\n\n## What\n\nA four-issue TDD arc that makes `daimon forget` a value-keyed guarantee:\na\nforgotten claim stays gone across a later re-extraction of the same\nsentence —\ngone at the source (the checkpoint on disk), not m\n[…]\nlean. `mypy` introduces no new errors in touched code.\n- A scar candidate fences the deliberate tension in #404 (the hit ledger\n re-persists a bounded, redacted snapshot of the value forget removed).",
"is_bot": false,
"headline": "feat(store): value-keyed forget tombstone arc — canonicalization, re-…",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-30T00:14:28Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "ecb7fafefa817f0726f46b221ddd4c7f4400a30a",
"body": "… dependency-version claim classes (#399)\n\nCloses #397\n\n## What\n\nExtends `worldcheck` from one claim class to four. Alongside slice 1's\nPR/issue-state probes, a carried item can now be spot-checked as:\n\n- **`file-exists`** — a repo-relative source path plus assertion\nvocabulary (\"the fix lives in `s\n[…]\nrobe raising mid-run is a skip, never a raise, and\nthe briefing still renders.\n\nAll `gh` probes hit a fake `gh` script on disk and the new probes touch\nonly `tmp_path` trees — zero network throughout.",
"is_bot": false,
"headline": "feat(worldcheck): extend spot-check to file-exists, branch-state, and…",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-29T19:45:16Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "522a217bba088fa4f65324b0b79ad90b50e6df5b",
"body": "Closes #392\n\n## PR Type\n- [x] Documentation only\n\n## Summary\n- Three live-reading contradictions in the historical pitch doc fixed:\nhost list (Gemini out, MCP surface in), hermes-first audience framing\ndropped, and the \"It depends on them\" line that contradicted the doc's\nown D-009 banner and the ze\n[…]\nP-DREAM-BRIEFING.md`,\n`hosts/`) verified to exist\n\n## Checklist\n- [x] Linked an approved issue (#392)\n- [x] Exactly one `type:*` label\n- [x] Conventional commit format\n- [x] No Co-Authored-By trailers",
"is_bot": false,
"headline": "docs(pitch): align PITCH.md with shipped reality (#393)",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-29T04:06:26Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "673251b2b1d5f9c0a77d8dcffa0da96d1c559054",
"body": "Closes #390\n\n## PR Type\n- [x] Bug fix (test flake)\n\n## Summary\n- `test_status_tool_matches_cli_payload` read the live clock twice (MCP\ntool call, then `cli.status_payload`); crossing a whole-second boundary\ndiverged the rendered checkpoint age (`0s` vs `1s`) and failed CI at\nrandom — bit the v0.21.0\n[…]\nn suite — 2037 passed, 2 skipped\n\n## Checklist\n- [x] Linked an approved issue (#390, status:approved)\n- [x] Exactly one `type:*` label\n- [x] Conventional commit format\n- [x] No Co-Authored-By trailers",
"is_bot": false,
"headline": "test(mcp): freeze the clock in the status-tool parity test (#391)",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-29T03:37:53Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "6a10011934449fec3bbfdd5f11804a363143aa3c",
"body": ":robot: I have created a release *beep* *boop*\n---\n\n\n##\n[0.21.0](https://github.com/Daily-Nerd/daimon/compare/v0.20.0...v0.21.0)\n(2026-07-29)\n\n\n### Features\n\n* **cli:** configure --init — guided wizard for env and team setup\n([#386](https://github.com/Daily-Nerd/daimon/issues/386))\n([11d26d4](https:\n[…]\nogleapis/release-please). See\n[documentation](https://github.com/googleapis/release-please#release-please).\n\nCo-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "chore(main): release 0.21.0 (#372)",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-29T03:26:02Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "b92308f6c339921f015688b53d0d809764bdb00d",
"body": "…ellm (#389)\n\nCloses #383\n\n## Summary\n\n- Preflight no longer hard-fails an explicit `litellm` backend with\nmissing credentials when a rescue exists: with `DAIMON_LLM_FALLBACK`\nenabled (the default) and a command backend resolving, the serialize\nproceeds — `_chat_litellm` raises its named `ChatError`\n[…]\nument: on installs with a\nresolvable command backend, the no-key class should disappear from the\nerror table and windowed `rescued` counts should rise. Worth a read\nafter a week of the rolling window.",
"is_bot": false,
"headline": "fix(llm): preflight no longer kills the no-key rescue on explicit lit…",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-29T02:55:24Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "b388191104d071c031cfc2e1ebcf7a9e325c77d8",
"body": "Closes #387\n\n## Summary\n\n- The per-sidecar `daimon-team.toml` allowlist becomes the **router**,\nnot just the gate: `_dual_write_team` writes the checkpoint into every\nsidecar clone whose toml grants the project membership, and to the local\nmirror only when none does. The multi-team topology from the\n[…]\nl suite green: 2033 passed, 2 skipped\n- [x] The exact repro filed on #387 rerun against the fix: checkpoint\nroutes to the granting sidecar\n- [x] Local patch coverage before push: all new lines covered",
"is_bot": false,
"headline": "feat(team): scope-routed dual-write across multiple remotes (#388)",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-29T02:19:41Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "11d26d45df9aeda59f065011698ff87ed2e3450b",
"body": "…386)\n\nCloses #368\n\n## Summary\n\n- `daimon configure --init`: the guided wizard the two highest-friction\nonboarding moments never had — backend Q&A → serialize-timeout question\n→ immediate backend-test offer (default **yes**: a wizard that skips its\nown verification teaches nothing) → optional team w\n[…]\n# Contributor Checklist\n\n- [x] Linked an approved issue\n- [x] Added exactly one `type:*` label\n- [x] Conventional commit format\n- [x] No `Co-Authored-By` trailers\n- [x] Docs updated (configuration.md)",
"is_bot": false,
"headline": "feat(cli): configure --init — guided wizard for env and team setup (#…",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-29T01:53:24Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "42e1a8a311dc1723680acf63f07dab767b1a6e5c",
"body": "… candidate (#385)\n\nRefs #276\n\n## Summary\n\n- Adds the qualification filter #276 proposed: the harvest now refuses\nto write a candidate that doesn't meet its scar type's structural\nobligations. Running tally before this change: **4 harvested candidates,\n0 promotable** — every gate below is derived fr\n[…]\nntional commit format\n- [x] No `Co-Authored-By` trailers\n- [x] Docs: configuration.md's harvest section (merged in #384) already\ndescribes candidates as human-review-gated; filter details are internal",
"is_bot": false,
"headline": "feat(scars): qualification filter for the harvest — obligations or no…",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-29T01:40:02Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "7261fd8640c7c1477245effb85edaddb239b0c60",
"body": "Closes #280\n\n## Summary\n\n- README gains a **Scar harvest (opt-in)** feature bullet beside the\nreceipts one — the harvest now has the same front-door discovery the\nreceipts integration has had all along.\n- `docs/configuration.md` gains a dedicated **Scar harvest** section\nmirroring the Receipts secti\n[…]\n es) has no scar-harvest page; the\nreceipts feature has `concepts/receipts.md`. Full parity would add a\nbilingual concepts page — separate issue if wanted, since it doubles the\nscope with translation.",
"is_bot": false,
"headline": "docs(scars): give scar harvest the receipts-grade discovery path (#384)",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-29T01:23:57Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "292bd734d078cb752dac4bc65edc4ef0c1de4692",
"body": "Closes #342\n\n## Summary\n\n- Hung-serialize detection now keys on **liveness, not wall-clock** (the\nissue's preferred option 1): the serialize child touches a per-session\nheartbeat file at entry and during every chunk, perspective pass, and\nmerge group; \"hung\" means no heartbeat for the `DAIMON_HUNG_A\n[…]\n- [x] Linked an approved issue\n- [x] Added exactly one `type:*` label\n- [x] Conventional commit format\n- [x] No `Co-Authored-By` trailers\n- [x] Docs unchanged (env var semantics extended, not renamed)",
"is_bot": false,
"headline": "feat(hooks): heartbeat liveness for hung-serialize detection (#382)",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-29T01:13:15Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "5c22f7215e0d16a14f226809e574c786ab036efc",
"body": "…nts (#381)\n\nCloses #369\n\n## Summary\n\n- `pin_imperatives`: a deterministic pass in the serialize gauntlet that\nscans user-authored transcript text for hard-imperative constraint\nsentences (must / must not / never / don't / always / forbidden) and\nforce-pins any the model skipped as verbatim `strong_\n[…]\nsue\n- [x] Added exactly one `type:*` label\n- [x] Conventional commit format\n- [x] No `Co-Authored-By` trailers\n- [x] Docs unchanged (serializer-internal; briefing rendering of\n`pinned` is future work)",
"is_bot": false,
"headline": "feat(serializer): deterministic auto-pin for hard-imperative constrai…",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-29T00:32:24Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "115e88ff044c6150929ad00e0d4a8e8175f4ae07",
"body": "…t text (#380)\n\nCloses #367\n\n## Summary\n\n- Chunk-cache key no longer rotates on prompt *text*: `PROMPT_VERSION`\nand `sys_hash` leave the key, replaced by an explicit\n`EXTRACTION_VERSION` (bumped only when extraction semantics actually\nchange) and a lane label (perspective name) for #360 escalation p\n[…]\ntor Checklist\n\n- [x] Linked an approved issue\n- [x] Added exactly one `type:*` label\n- [x] Conventional commit format\n- [x] No `Co-Authored-By` trailers\n- [x] Docs unchanged (internal cache mechanics)",
"is_bot": false,
"headline": "chore(serializer): key chunk cache on extraction semantics, not promp…",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-28T23:39:35Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "0a5f7e200b0377395a049cd1ecf6f177a7f0fe5b",
"body": "Refs #364\n\n## Summary\n\n- `daimon stats` now surfaces a rolling 14-day capture window:\nserialized / errors / rescued counts plus an error-rate percentage over\ncapture attempts — the \"is capture healthy NOW\" number #364 asks for,\nreadable on any install.\n- Adds the 10% reopen gate from #364: when the \n[…]\ncklist\n\n- [x] Linked an approved issue\n- [x] Added exactly one `type:*` label\n- [x] Conventional commit format\n- [x] No `Co-Authored-By` trailers\n- [x] Docs unchanged (stats output is self-describing)",
"is_bot": false,
"headline": "chore(stats): rolling-window capture rate with 10% reopen gate (#379)",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-28T23:28:19Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "8a08744e8a732e07c1f579b4222b644785bd3277",
"body": "…(#378)\n\nPromotes the `append-event-any-kind-resolves-the-item` candidate to\nactive scar **0025**, severity critical, confidence 1.0.\n\nNo issue link: `pr-validation.yml` exempts scars-only PRs from the\nissue-first gate, since the human sign-off happens at `scar promote` and\nis recorded in `authors`.\n[…]\n-rot, 0\nunreachable-evidence. The pattern anchor is escape-free per scar 0019\n(escapes in anchors are never processed) and was verified to fire on\n`append_event(..., kind=...)` calls before authoring.",
"is_bot": false,
"headline": "docs(scars): promote the append_event kind landmine to active (0025) …",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-28T22:13:55Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "69ff4d80c95291a7e8bb5ff14fd10a6aad2abb3c",
"body": "Closes #376\n\n## What\n\nA rejection ledger: every downgrade the checkers make is recorded as a\ndurable event, and `daimon stats` reports the totals.\n\n- `store.append_verification()` / `store.verification_counts()` writing\nto a new per-project `verification.jsonl`\n- `serializer.verification_rejections(\n[…]\nately not in scope\n\nThe issue also listed worldcheck contradictions and user-rejected\nsupersede candidates. Both fire outside the capture path and are better\nas a follow-up than as extra surface here.",
"is_bot": false,
"headline": "feat(stats): rejection ledger for verification downgrades (#377)",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-28T21:09:25Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "023b36c616d0b96c572dee89c36044b5abbf7fce",
"body": "…act (#375)\n\nCloses #374\n\n## What\n\nTracks `benchmark/results/interim-317-baseline-first54.json`, the frozen\nbaseline lane for the #317 scene-traces A/B: the first 54 scored\nquestions of the sample-150 seed-0 run, sitting next to the\nalready-tracked `longmemeval-s-baseline.json`.\n\nTwo defects fixed b\n[…]\nlename now all\nagree at 54.\n- Numbers are an interim partial run and are not quotable as results;\nthe `note` field records that inline so a future reader cannot mistake\nit for a completed measurement.",
"is_bot": false,
"headline": "chore(bench): commit the frozen #317 baseline lane as a tracked artif…",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-28T08:16:38Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "35062e8f07552fd5417ada5f6c9c638b78aa98cb",
"body": "Promotes the `docusaurus-i18n-md-links-break-across-locales` candidate\n(authored 2026-07-18) to active scar **0024**, and drops an unrelated\nauto-harvest candidate that was untracked.\n\nNo issue link: `pr-validation.yml` exempts scars-only PRs from the\nissue-first gate, because the human sign-off hap\n[…]\nt thinking about the locale build.\n\n## Tests\n\n`scar lint` clean: 25 files, 0 with errors, 0 orphans, 0 partial-rot, 0\nunreachable-evidence. The `scar lint` CI job covers this. No runtime\ncode touched.",
"is_bot": false,
"headline": "docs(scars): promote the i18n .md-link landmine to active (0024) (#373)",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-28T08:00:38Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "d4da62bc581fb859a2ff4cdd8f31619b744d7560",
"body": "…en + es) (#371)\n\nCloses #370\n\n## What\n\nAdds the first concept-genre post to the site blog, in English and\nSpanish under the shared slug `verbatim-vs-inferred`. The Spanish\nversion is a native rewrite rather than a translation, matching the\napproach used for the existing posts.\n\nThe post covers, in \n[…]\nts. Blog tags are inline; no `tags.yml` exists, so\nthis warns rather than fails.\n\nPermalinks `/blog/verbatim-vs-inferred` and\n`/es/blog/verbatim-vs-inferred` to be verified 200 after the Pages\ndeploy.",
"is_bot": false,
"headline": "docs(site): concept blog post on verbatim vs inferred trust classes (…",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-28T07:23:22Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "413f849f82afac7cd078da60ecb9ecb51f90c9ea",
"body": ":robot: I have created a release *beep* *boop*\n---\n\n\n##\n[0.20.0](https://github.com/Daily-Nerd/daimon/compare/v0.19.0...v0.20.0)\n(2026-07-22)\n\n\n### Features\n\n* **briefing:** deterministic external-state spot-check for carried\nclaims ([#366](https://github.com/Daily-Nerd/daimon/issues/366))\n([75b05b8\n[…]\nogleapis/release-please). See\n[documentation](https://github.com/googleapis/release-please#release-please).\n\nCo-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "chore(main): release 0.20.0 (#354)",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-23T14:18:35Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "75b05b8cd2e9f8717ea1dc5e13d926bd1885897f",
"body": "…laims (#366)\n\nCloses #365\n\n## What\n\nAt briefing render, carried items whose text makes a checkable\nPR/issue-state claim (\"PR #60 awaiting review\", \"issue #171 closed\",\nbare \"#60 merged\") are spot-checked against reality via read-only `gh`\nprobes. Confirmed-current items render untouched. Contradict\n[…]\nm\nfuture briefs; rejecting via `daimon reverify` keeps it live. The\nrendered note/status vocabulary is bounded to open/closed/merged at the\nstamp site — `gh` output is trusted for truth, not for text.",
"is_bot": false,
"headline": "feat(briefing): deterministic external-state spot-check for carried c…",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-22T06:24:23Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "d9c325116dcf6109fb3b39475a16ace6aadf5303",
"body": "… failed serializes (#363)\n\nCloses #360\n\n## What\n\nPerspective-diverse extraction as the opt-in escalation tier for heal's\nre-serialize. With `DAIMON_HEAL_ESCALATION=1`, `daimon heal` runs stage\n1 as one extraction pass per perspective (`decisions-and-outcomes`,\n`open-loops-and-questions`, `artifacts\n[…]\nr so chronology rules (merge rules 4/9, and the briefing's\ntail-keeping decision cap, scar #6) still see session order. All\nverification stays in the deterministic gates, which this PR does not\ntouch.",
"is_bot": false,
"headline": "feat(heal): perspective-diverse extraction as the escalation tier for…",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-22T03:37:16Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "268134bd956d77241b6ea0ececb4371e9bec4c04",
"body": "…s at capture time (#362)\n\nCloses #359\n\n## What\n\nCapture-time grounding for outcome claims, composing directly with\n#358's message-id binding:\n\n- **transcript.py** now surfaces Claude Code JSONL rows whose only\npayload is `tool_result` blocks — previously dropped as noise — as\n`{\"role\": \"tool\", \"con\n[…]\nwn slice; `carry.py`'s verbatim-freeze path replaces a\ntwin's quote+ids but leaves the twin's own `grounded` verdict in place —\nworth aligning when `grounded` becomes render-visible. #360 not touched.",
"is_bot": false,
"headline": "feat(serializer): ground success claims in tool results and exit code…",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-22T03:13:28Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "ef90d615fa0e16e3049e0907f300f8ffe87e8e91",
"body": "…pture time (#361)\n\nCloses #358\n\n## What\n\nSlice 1 of message-id binding: verbatim items now carry the transcript\nmessage id(s) their quote came from, captured at serialization time,\nvalidated at the parse boundary, and used by verification with the\nwhole-transcript scan as fallback.\n\n- **Capture**: \n[…]\nself changes\nwhen markers are present (the key's primary input). Marker numbering is\npositional over the full message list, so #48's prefix-chunk reuse on\ngrown transcripts keeps citing valid markers.",
"is_bot": false,
"headline": "feat(serializer): bind verbatim items to transcript message ids at ca…",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-22T02:30:54Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "1fbea61a841fe385d51e94239e71c8cb518f1a64",
"body": "Closes #355\n\n## What\n\nBumps every GitHub Action in `.github/workflows/` to its latest major,\nverified against each repo's releases as of today:\n\n| Action | Before | After | Notes |\n|---|---|---|---|\n| `actions/checkout` | v4 | v7 | |\n| `actions/setup-node` | v4 | v7 | |\n| `actions/upload-artifact` |\n[…]\nloy-pages` v4→v5 | node24 only, no input changes. |\n\nAll runners are `ubuntu-latest` (GitHub-hosted), so the\nnode24/runner-minimum-version requirements across these majors are\nautomatically satisfied.",
"is_bot": false,
"headline": "chore(ci): bump action majors across workflows (#357)",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-22T01:15:49Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "9ffc400ce2a8260896c59e2962e3382527c60ce7",
"body": "…to CLI commands (#356)\n\nCloses #351\n\n## What\n\nThe agent skill (both densities in `skill_content.py`) now teaches the\nMCP tool surface shipped in 0.19.0:\n\n- FULL gains an `## MCP tool surface` section: `daimon_brief` /\n`daimon_recall` / `daimon_projects` / `daimon_status` are the same\noperations as \n[…]\ns). Existing budget guards re-verified the\nconstraints: compact ≤ 2,000 chars, full ≤ 150 lines, MUST rule last,\npinned literals intact.\n- `ruff check` clean; mypy adds no new errors in touched files.",
"is_bot": false,
"headline": "feat(skill): teach the MCP tool surface as a first-class alternative …",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-22T00:44:29Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "a32819b5d7e2496fe19c6691b1495e79907d5ce8",
"body": "Closes #352\n\n## What\n\n- Adds the 0.19.0 release post to the site blog in English and Spanish\n(shared slug `daimon-0-19`, so the permalink is `/blog/daimon-0-19` and\n`/es/blog/daimon-0-19`).\n- Covers the release headliners already public in the changelog: the\ndocs site itself, the read-only MCP serve\n[…]\nes,\nprivate paths, or unpublishable benchmark numbers).\n- Frontmatter mirrors the existing `2026-07-18-daimon-has-a-home.md`\npair (same authors key, tags, truncate marker, shared slug across\nlocales).",
"is_bot": false,
"headline": "docs(site): blog release post for 0.19.0 (en + es) (#353)",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-21T23:56:07Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "a687e29c7ca4694cb6a3b20d166677b1ba414717",
"body": ":robot: I have created a release *beep* *boop*\n---\n\n\n##\n[0.19.0](https://github.com/Daily-Nerd/daimon/compare/v0.18.0...v0.19.0)\n(2026-07-21)\n\n\n### Features\n\n* **cli:** daimon forget — item removal with a tombstone event\n([#322](https://github.com/Daily-Nerd/daimon/issues/322))\n([3fa223c](https://gi\n[…]\nogleapis/release-please). See\n[documentation](https://github.com/googleapis/release-please#release-please).\n\nCo-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "chore(main): release 0.19.0 (#323)",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-21T18:40:18Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "947cfd9da8d67167c41ab3a5245eae124d38e8ed",
"body": "…(#350)\n\nCloses #349\n\n## PR Type\n\n- [x] Bug fix\n\n## Summary\n\n- The stale-hook warning (`sessions captured but no hook briefings\nlogged — re-run daimon hooks install`) counted spawns from every host,\nbut only the Claude Code SessionStart hook ever logs `brief:auto`. A\nmachine served exclusively by ho\n[…]\n approved issue\n- [x] Added exactly one `type:*` label\n- [x] Shellcheck N/A\n- [x] Docs unchanged (behavioral fix to a false warning)\n- [x] Conventional commit format\n- [x] No `Co-Authored-By` trailers",
"is_bot": false,
"headline": "fix(stats): scope the stale-hook warning to auto-brief-capable hosts …",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-21T05:40:03Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "0e5db263d1328f6a145cb5c7efa2e3db1cfaad06",
"body": "… 1) (#348)\n\nRefs #48\n\n## PR Type\n\n- [x] New feature\n\n## Summary\n\n- Slice 1 of #48: content-addressed chunk-extraction cache, generalizing\nthe #314 partials store it replaces. Key = chunk text + backend + model\n+ temperature + PROMPT_VERSION + a hash of the actual serialize system\nprompt (an un-vers\n[…]\n [x] Shellcheck N/A\n- [x] Docs: env vars documented in config docstrings; site reference can\npick up the knobs in the next docs pass\n- [x] Conventional commit format\n- [x] No `Co-Authored-By` trailers",
"is_bot": false,
"headline": "feat(serializer): content-addressed chunk-extraction cache (#48 slice…",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-21T05:02:45Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "1159f46727b92268c1f2b3df5481da5ad9c9c6da",
"body": "Closes #261\n\n## PR Type\n\n- [x] New feature\n\n## Summary\n\n- `daimon mcp serve`: opt-in, read-only MCP server over stdio — pure\nstdlib JSON-RPC 2.0 (initialize / ping / tools/list / tools/call), no\nnew dependency, no `[mcp]` extra. Four tools: `daimon_recall`,\n`daimon_brief`, `daimon_projects`, `daimon\n[…]\nissue\n- [x] Added exactly one `type:*` label\n- [x] Shellcheck N/A (no shell scripts touched)\n- [x] Docs updated (new reference page)\n- [x] Conventional commit format\n- [x] No `Co-Authored-By` trailers",
"is_bot": false,
"headline": "feat(mcp): opt-in read-only MCP server over stdio (#347)",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-21T03:39:58Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "fe89f797eca0de9e94a963186aced0539751e3aa",
"body": "Closes #341\n\n## PR Type\n\n- [x] Bug fix\n\n## Summary\n\n- The command fallback now gets its own guaranteed deadline budget on\nentry (`max(remaining, DAIMON_FALLBACK_MIN_SECONDS)`, default\n`DAIMON_TIMEOUT`) — previously it inherited whatever the primary left\nafter retrying the failing gateway, which was \n[…]\ns touched)\n- [x] Docs unchanged (env var documented in config docstring; site\nreference page can pick it up with the next docs pass)\n- [x] Conventional commit format\n- [x] No `Co-Authored-By` trailers",
"is_bot": false,
"headline": "fix(llm): give the command fallback its own deadline budget (#346)",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-21T03:12:15Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "88740fa944c6790efe37e538338717a9a85f165b",
"body": "…naugural post (#338)",
"is_bot": false,
"headline": "feat(site): blog — canonical home for announcements, with bilingual i…",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-18T22:19:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "40268bbf8d1ab192d65f073faaf2ff02a71d3b71",
"body": "…(#340)",
"is_bot": false,
"headline": "fix(site): Spanish landing page — wire translate() into custom index …",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-18T22:04:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f0ba938d8b9d97f653db0c39554c255ddca6312f",
"body": "…lated (#336)\n\nCloses #335\n\n## What\n\nTranslates the nine pages that still fell back to English in the es\nlocale: the site overview (`index`), all five host pages, the\nconfiguration reference, the backends matrix, and team memory. The es\nlocale now has zero fallback pages — clicking through the Spani\n[…]\nide.\n\n## Tests\n\n- Local `npm run build`: en + es both compile with **zero warnings**\n(previous es builds carried a broken-anchor warning; now clean).\n- CI docs build + broken-link check gates this PR.",
"is_bot": false,
"headline": "docs(site): complete Spanish coverage — all remaining doc pages trans…",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-18T21:37:45Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "0285665bbbfb0b1c444fbd0161cfdf656caed432",
"body": "Closes #326\n\n> **Final stage of #326** — closing is correct this time. All prior\nstages merged: README slim (#327), quickstart (#328), concepts (#329),\ncuration (#332), prose pass (#333, open in parallel — independent\nfiles).\n\n## What\n\n- Translates the five pages #326 scoped for the Spanish first pa\n[…]\nusaurus\npreserves accents in slugs); links to not-yet-translated pages resolve\nthrough the default-locale fallback.\n- The CI docs build compiles both locales and runs the broken-link check\non this PR.",
"is_bot": false,
"headline": "docs(site): Spanish first pass — quickstart and concepts pages (#334)",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-18T21:28:19Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "f545271345f0b36c9286adddab419652cb6b3dec",
"body": "…ferences (#333)\n\nRefs #326\n\n> Intermediate stage of #326 — does not close it on merge. Remaining\nafter this: Spanish first pass (quickstart + concepts).\n\n## What\n\nProse pass over the four host pages — the only retained pages that still\nread repo-internal (team, configuration, and backends-tested sc\n[…]\n_HARVEST` config row\nexcepted — real variable name).\n- The new quickstart anchor link (`quickstart.md#2-connect-an-llm`)\nmatches the actual heading; docs build + broken-link check gates this PR\nin CI.",
"is_bot": false,
"headline": "docs(site): prose pass on host pages — user tone, no repo-internal re…",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-18T21:11:45Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "5c2241914da7dda72d4ff779584bdacc22fd16c0",
"body": "Refs #326\n\n> First live use of the `Refs` keyword from #331 — this is an\nintermediate stage of #326 and should NOT close it on merge.\n\n## What\n\nCuration verdicts for the three pages #326 flagged as reading\nrepo-internal:\n\n- **`reference/validation.md` — removed.** Historical go/no-go gate\ndefinition\n[…]\ndates were prose words, not links).\n- Both repo originals verified present: `docs/VALIDATION.md`,\n`docs/ARCHITECTURE.md`.\n- Site build + broken-link check runs in CI (docs.yml gates `website/**`\nPRs).",
"is_bot": false,
"headline": "docs(site): curation — return internal-history pages to the repo (#332)",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-18T21:01:49Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "68885b9b35ce3a36865681547f899100629900cd",
"body": "…n merge (#331)\n\nCloses #330\n\n## What\n\n- Adds `refs` to the accepted issue-link keywords in both validation\nsteps (issue-reference check and approved-label lookup) in\n`pr-validation.yml`.\n- Updates the PR template comment with the convention: `Refs #N` for a\nstage of a multi-PR issue, `Closes #N` fo\n[…]\nath live.\n- Note: the validation run on THIS PR uses the workflow from main\n(pull_request event), so the green check here proves no regression; the\nnew keyword takes effect for PRs opened after merge.",
"is_bot": false,
"headline": "ci(pr-validation): accept Refs #N so staged issues don't auto-close o…",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-18T20:55:09Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "7fc22c88a46814fa79f1b62415d12b2a9ce77bda",
"body": "…ecycle (#329)\n\nCloses #326\n\n> **Staged issue** — concepts stage of #326. Remaining: content\ncuration, prose pass, Spanish. Reopen #326 after merge (the `Closes`\nkeyword is required by PR validation).\n\n## What\n\nFour new pages under **Concepts**:\n\n- **Trust classes** — verbatim / inferred / untagged \n[…]\nted precisely on the page.\n- Cross-page links and the `configuration.md#receipts` anchor checked\nagainst actual headings.\n- Site build + broken-link check runs in CI (docs.yml gates `website/**`\nPRs).",
"is_bot": false,
"headline": "docs(site): concepts pages — trust classes, carry, receipts, item lif…",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-18T20:50:29Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "4787e3a5be93a7a1b7ec7d7d037284ce91f2fa6d",
"body": "Closes #326\n\n> **Staged issue** — quickstart stage of #326. Remaining: content\ncuration, concepts pages, prose pass, Spanish. Reopen #326 after merge\n(the `Closes` keyword is required by PR validation).\n\n## What\n\n- Adds `getting-started/quickstart.md`: install → connect an LLM\n(`daimon configure` + \n[…]\nlative link targets exist in `website/docs/`\n(configuration, hosts/index, reference/backends-tested, team/team).\n- Site build + broken-link check runs in CI (docs.yml gates PRs touching\n`website/**`).",
"is_bot": false,
"headline": "docs(site): quickstart — install to first briefing in one page (#328)",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-18T20:36:25Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "3d87d4d7820e8a0a74eb156d52e73507b7e1e0e3",
"body": "Closes #326\n\n> **Staged issue** — this is the README-slim opener of #326; the\nremaining stages (curation, quickstart, concepts, prose pass, Spanish)\nare still pending. Reopen #326 after merge.\n\n## What\n\n- Slims the README from 184 to 105 lines: pitch, briefing example, demo,\nminimal install, and a p\n[…]\nrep-verified to exist on the site or in\ndocs/ before cutting; the one gap found (general upgrade instructions,\npreviously only in the Codex host page) was kept as a one-line note in\nthe install block.",
"is_bot": false,
"headline": "docs(readme): slim README to pitch, install, and docs-site links (#327)",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-18T20:21:54Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "df6b8d25fb0c50efbfe7d08ef2f272ebf595c9e1",
"body": "…325)\n\nCloses #324\n\n## What\n\n- `website/`: Docusaurus (classic, TypeScript), branded and configured\nfor `daily-nerd.github.io/daimon`, locales `en` + `es` (Spanish navbar\nswitcher live; translations land incrementally).\n- `docs/` migrated verbatim into sidebar categories: Getting Started /\nHosts / C\n[…]\npage that does not\nexist yet.\n\n## Tests\n\n`npm run build` clean in both locales with `onBrokenLinks` enforcing;\nlocal dev server verified rendering. No Python surface touched — pytest\nsuite unaffected.",
"is_bot": false,
"headline": "feat(docs): Docusaurus documentation site with GitHub Pages deploy (#…",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-18T19:41:09Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "3fa223c9a1bb81e0d78220acb9ff2ff3c8418f21",
"body": null,
"is_bot": false,
"headline": "feat(cli): daimon forget — item removal with a tombstone event (#322)",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-18T18:02:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1d299eb64ca5a071e7f2b35b00be7f965f4954b5",
"body": null,
"is_bot": true,
"headline": "chore(main): release 0.18.0 (#309)",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-18T09:44:26Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7e2fbd405934822d272999b685055b52d862aa21",
"body": "…he lanes (#320)",
"is_bot": false,
"headline": "fix(bench): key and pin the scene-traces flag so runs never share cac…",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-17T07:35:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e85b181fd991c402af13833c77d7fd3746c32f27",
"body": "…318)",
"is_bot": false,
"headline": "feat(serializer): opt-in per-item scene traces, indexed for recall (#…",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-17T06:28:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6e184332359f19ba0e48866d1827e667e1aab314",
"body": "…k partials across heals (#316)",
"is_bot": false,
"headline": "fix(serializer): scale the deadline to the wave plan and persist chun…",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-17T01:24:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d756bfb994cbc62b4c418be99be8bb5dfec1f95f",
"body": "…es cannot pin a bad response through heal (#315)",
"is_bot": false,
"headline": "fix(serializer): add a per-run nonce to retry markers so gateway cach…",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-17T00:13:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "38cfb937150992c8426a1711f346e6e25276bac7",
"body": null,
"is_bot": false,
"headline": "fix(llm): extract fenced JSON from anywhere in a model response (#313)",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-17T00:11:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a7f020fb630ed81a53dd8174ec0f56aa6317992c",
"body": null,
"is_bot": false,
"headline": "test(cli): freeze the clock in brief byte-identity tests (#310)",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-16T07:16:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a16c0f4c3ff4ac107d4c5a8ac7b28865b2a2e47f",
"body": "…old (#308)\n\nCloses #300\n\n## What\n\nCollapses **adjacent-identical result lines** in `_stats_capture`'s fold\nover `serialize.log`, so one serialize counts once.\n\nDiagnosis is on the issue: **cosmetic, not double spend.** One\nserialize, two log lines.\n\n- Doubled pairs carry exactly **one** `LLM usage \n[…]\nonsecutive serializes across six days.\n\nThis PR fixes the read side, which is the part that is still wrong today\nregardless of which writer produced the doubles.\n\n<!-- PR type: Bug fix -> type:fix -->",
"is_bot": false,
"headline": "fix(stats): collapse adjacent-duplicate result lines in the capture f…",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-16T06:52:04Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "e067f148154ff7c1ec44226b37e64327d99bf41c",
"body": ":robot: I have created a release *beep* *boop*\n---\n\n\n##\n[0.17.0](https://github.com/Daily-Nerd/daimon/compare/v0.16.1...v0.17.0)\n(2026-07-16)\n\n\n### Features\n\n* **cli:** add resolve --dry-run — look before the write\n([#306](https://github.com/Daily-Nerd/daimon/issues/306))\n([4318911](https://github.c\n[…]\nogleapis/release-please). See\n[documentation](https://github.com/googleapis/release-please#release-please).\n\nCo-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "chore(main): release 0.17.0 (#291)",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-16T06:10:46Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "43189112caa4cef395a5fd1fb9d8c0df015ce878",
"body": "## Summary\n\n`daimon resolve` was a blind write: the first thing a fuzzy query did\nwas mutate the ledger. The existing ambiguity guard refused ties, but a\nconfident match on the *wrong* item passed through untouched and\nsilently suppressed a live memory. This adds `--dry-run` so an agent can\nlook bef\n[…]\nwould resolve <id>: ...`, exit 0; ambiguous and\nno-match outputs diffed byte-identical with/without `--dry-run`; `daimon\nstats --json` shows `resolve:dry-run` counted apart from `resolve`\n\nCloses #304",
"is_bot": false,
"headline": "feat(cli): add resolve --dry-run — look before the write (#306)",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-16T04:52:56Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "e21633c4794fd296667bac5bc0d45460a3d92b59",
"body": "## What\n\nTwo instrument gaps from #303, in `plugin/daimon_briefing/cli.py`:\n\n1. **`resolve` now has a usage counter.** `_note_usage(\"resolve\")` fires\non success — the one verb the #257/#258 skill work exists to move was\nthe one verb with no counter at all.\n\n2. **The two match-outcome refusals record\n[…]\nrecall` counts unchanged, `resolve` absent when never called\n\nFull suite: `1725 passed, 2 skipped` (main was `1719 passed, 2 skipped`;\n+6 new tests, zero regressions). `ruff check` clean.\n\nCloses #303",
"is_bot": false,
"headline": "fix(stats): instrument resolve and tag recall by bench origin (#305)",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-16T04:14:59Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "157451925a3f64c5c8576c9d3a34f8b3ec770649",
"body": "…iled (#301)\n\nCloses #299\n\n## Summary\n\n- `sweep_orphans` treated a repeatedly-**failed** serialize identically\nto a **never-attempted** one, since a failed serialize writes no\ncheckpoint — so it was re-spawned at full LLM cost on every SessionStart\nfor up to 14 days (the only existing bound).\n- Adds\n[…]\nproved`)\n- [x] Exactly one `type:*` label to be added (`type:fix`)\n- [x] No shell scripts modified — shellcheck N/A\n- [x] Conventional commit format\n- [x] No `Co-Authored-By` / AI-attribution trailers",
"is_bot": false,
"headline": "fix(hooks): skip sweep_orphans candidates the ledger already shows fa…",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-16T02:53:57Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "c2e3d36c2bd85e2f462dbad7b4710770dd06e515",
"body": "…alls (#302)\n\n## Summary\n\n`urlopen`'s `timeout=` bounds a single blocking socket read, not the\nwhole call. A response that keeps delivering bytes never trips it, so a\nsingle LLM call could run arbitrarily long past the computed `deadline`\nand still be reported as success — observed in the field at 7\n[…]\nunder-deadline behavior is untouched and still passes.\n\n`cd plugin && uv run pytest` — 1714 passed, 2 skipped (baseline was 1711\npassed, 2 skipped; the 3 new tests account for the delta).\n\nCloses #298",
"is_bot": false,
"headline": "fix(llm): enforce the total deadline mid-response, not just between c…",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-16T02:53:25Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "d649371f960f0ff05b58ab354b9e9177c5a75a9a",
"body": "## Summary\n\nThe #185 identical-bytes guard (`store.transcript_unchanged`) skipped a\nre-serialize whenever transcript bytes matched the stored\n`transcript_hash`, but never checked the checkpoint's `format_version`\nagainst the current `serializer.PROMPT_VERSION`. After a\n`PROMPT_VERSION` bump, the tra\n[…]\nhe fix; full suite passes (1691 passed, 2\nskipped)\n- [x] Confirmed all pre-existing #185 guard tests pass unchanged\n(same-version-implicit checkpoints still skip)\n- [x] `ruff check` clean\n\nCloses #293",
"is_bot": false,
"headline": "fix(store): make transcript_unchanged version-aware (#296)",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-16T01:40:36Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "e4bc89db7c121bea35f6285a1fc9f8dcd3871e53",
"body": "## What\n\nThe format-drift check compared `format_version` for inequality only, so\ntwo very different events rendered the identical sentence:\n\n- checkpoint **older** than the running code — routine drift after a\nversion bump (#93). Expected, clears on re-serialize.\n- checkpoint **newer** than the run\n[…]\nx] Implemented `schema.compare_format_versions` + updated both call\nsites; tests now GREEN\n- [x] Full suite: `cd plugin && uv run pytest` — 1694 passed, 2 skipped\n- [x] `ruff check` clean\n\nCloses #294",
"is_bot": false,
"headline": "fix(status): give the format-drift warning a direction sense (#297)",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-16T01:33:55Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "2ca8237bf201729a54a45b2dcd32ad457ea58505",
"body": "…ry (#295)\n\n## Summary\n\nA checkpoint's `format_version`, `created`, and `author` are facts the\ncode asserts about where a checkpoint came from — but nothing stopped\nthe extraction model from emitting these keys in its own output.\n`store.write_checkpoint` stamps them with `setdefault`, which means a\n\n[…]\nrwrite_existing_stamp`,\n`test_write_does_not_overwrite_existing_author`) pass unchanged — this\nfix never touches `store.py`.\n\nFull suite: 1698 passed, 2 skipped (pre-existing, unrelated).\n\nCloses #292",
"is_bot": false,
"headline": "fix(serializer): strip code-owned provenance keys at the parse bounda…",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-16T01:29:40Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "e4e7a1eb407612a08b5cb1e7a69c4a2a35c6cf32",
"body": "…14) (#290)\n\n## Problem\n\nField report from a real session (#287): the briefing carried an\nupstream fix with the exact code quote intact — but NOT the upstream\nrepo's name. The decision item amounted to \"file issue #5 upstream\", and\n\"issue #5\" without a repo is half a pointer: if daimon had been the \n[…]\n).\n\n## Tests\n\n- `test_serialize_prompt_has_external_artifact_identifier_rule` (RED\nfirst)\n- `test_prompt_version_is_d014` (version-history comment extended)\n- Full suite green, ruff clean\n\nCloses #287",
"is_bot": false,
"headline": "feat(serializer): capture external-artifact identifiers verbatim (D-0…",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-14T22:16:30Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "b9afc5b40a0a399597d2518215f3e4eb9c2f8db4",
"body": "…em, newest checkpoint wins (#289)\n\n## Problem\n\nA carried item lives in every checkpoint that carries it, so\n`recall.search` returned it once per checkpoint. Field report from a\nreal session: the same item echoed from checkpoints 15 minutes and 17\nhours old, padding the result list and pushing disti\n[…]\nstinct_items_sharing_words`\n- `test_search_dedupe_preserves_distinct_authors`\n- `test_search_dedupe_backfills_to_limit` (overfetch prevents\nunder-filled results)\n- Full suite: 1682 passed\n\nCloses #288",
"is_bot": false,
"headline": "fix(recall): dedupe results by item content — one hit per distinct it…",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-14T22:16:18Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "a908db5d640176468c87548adbf34aaa304295ec",
"body": ":robot: I have created a release *beep* *boop*\n---\n\n\n##\n[0.16.1](https://github.com/Daily-Nerd/daimon/compare/v0.16.0...v0.16.1)\n(2026-07-14)\n\n\n### Bug Fixes\n\n* **config:** raise default DAIMON_TIMEOUT 120 -> 420 to fit real\nserialize calls\n([#285](https://github.com/Daily-Nerd/daimon/issues/285)\n[…]\nogleapis/release-please). See\n[documentation](https://github.com/googleapis/release-please#release-please).\n\nCo-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "chore(main): release 0.16.1 (#282)",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-14T06:39:29Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "c31cdf5a1580c2f8fdbe2ffe2d3d1f068afc48eb",
"body": "…re-serializing (#286)\n\n## Problem\n\n`docs/demo/README.md`'s recovery step for the known-flaky supersession\nflag (\"rerun session 2 with `DAIMON_LLM_NO_CACHE=1`\") is dead-ended by\nthe identical-bytes guard: the rerun is skipped with `transcript\nunchanged since checkpoint (hash match)`. The env var bus\n[…]\nneration,\ncorrectly id-bound.)\n\nRecipe verified end-to-end on a fresh install: delete + no-cache rerun\nproduces a fresh generation, and the ⚠ flag fired with correct `daimon\nresolve` ids.\n\nCloses #283",
"is_bot": false,
"headline": "docs(demo): fix the flag-rerun recipe — delete the checkpoint before …",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-14T06:37:36Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "14a689cac24f4ab65086a2d2d6ea19467dbef9db",
"body": "…alize calls (#285)\n\n## Problem\n\nThe default `DAIMON_TIMEOUT=120` kills real serialize calls on the\nrecommended zero-config `claude` backend. Fresh-install smoke on the two\nsmall `docs/demo/` transcripts measured 74s/94s/73s **with one kill at\n>120s**; long-lived installs measure avg 256s / max 1732\n[…]\n (TDD: watched it fail at 120, pass at 420);\nexplicit-override path unchanged\n\nVerified: full suite 1677 passed, ruff clean. The >120s kill reproduced\non a fresh isolated install pre-fix.\n\nCloses #284",
"is_bot": false,
"headline": "fix(config): raise default DAIMON_TIMEOUT 120 -> 420 to fit real seri…",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-14T06:37:20Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "c255c76d09685c10e817bec1642fc1d2bb49e762",
"body": "…ite (#281)\n\n## Problem\n\n`DAIMON_TEAM=1` is machine-global and checkpoint routing had no\nmembership check: with exactly one sidecar clone present,\n`_dual_write_team` routed **every project on the machine** into it. A\nshared team remote paired with personal projects published personal\nsession memorie\n[…]\nd against a real bare remote + two working repos:\nmember checkpoint landed in the clone under `projects/org/alpha/`,\nforeign checkpoint stayed in `local/`, status rendered the scope line.\n\nCloses #279",
"is_bot": false,
"headline": "fix(team): default-closed per-remote scope gate on checkpoint dual-wr…",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-14T04:52:19Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "c69c3a373e6141855ba9f0f723225033effaf4c4",
"body": "## Problem\n\nThe LongMemEval-S harness (#267) serializes each question's haystack\nwith cross-session carry hardcoded off (`carry: \"off\"` in the config\nstamp). Carry — folding prior unresolved items forward into later\ncheckpoints — is a real product feature, and we cannot say whether it\nhelps or hurts\n[…]\n carry preserves\nthe origin session.\n- Full suite: `uv run --extra dev --extra pretty python -m pytest tests/\n-q` → 1657 passed, 2 skipped.\n- `ruff` and `mypy` clean on the changed files.\n\nCloses #274",
"is_bot": false,
"headline": "test(bench): carry-on configuration as a separate retrieval axis (#278)",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-14T00:51:23Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "c1474c31efa90a2251b990d0369373788c03e948",
"body": "…(#277)\n\n## Problem\n\nRunning the plugin test suite left ~9 orphaned `daimon-windsurf-hooks.py\n--finalize <session> <transcript>` processes behind, each sleeping the\nproduction 600s quiet period while pointing at a deleted pytest tmp\ntranscript. Every serialize-capable post event in the windsurf hook\n[…]\null plugin suite: `uv run --extra dev --extra pretty python -m pytest\n-q` — 1647 passed, 2 skipped\n- `ps -eo pid,etime,command | rg finalize` after the full run — zero\nlingering processes\n\nCloses #275",
"is_bot": false,
"headline": "test: stop windsurf hook tests leaking detached --finalize processes …",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-14T00:40:37Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "e8a0f83ca7ec008207abd398719fd157bb0bbda1",
"body": null,
"is_bot": false,
"headline": "chore: add logos directory for local brand exploration",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-13T19:00:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "06cc118dbdd63dd501ee2520300acb1f36491bfe",
"body": ":robot: I have created a release *beep* *boop*\n---\n\n\n##\n[0.16.0](https://github.com/Daily-Nerd/daimon/compare/v0.15.0...v0.16.0)\n(2026-07-13)\n\n\n### Features\n\n* **hooks:** daimon hooks status — detect stale installed hook copies\n([#271](https://github.com/Daily-Nerd/daimon/issues/271))\n([917b731](htt\n[…]\nogleapis/release-please). See\n[documentation](https://github.com/googleapis/release-please#release-please).\n\nCo-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "chore(main): release 0.16.0 (#249)",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-13T18:53:00Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "56cf748d241971cb31acdb2d04b9f4243b51a799",
"body": null,
"is_bot": false,
"headline": "test(bench): LongMemEval-S retrieval benchmark harness (#272)",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-13T01:15:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "917b731d0ec8e526d57d22aa3dee0762c0cb86b9",
"body": "… (#271)",
"is_bot": false,
"headline": "feat(hooks): daimon hooks status — detect stale installed hook copies…",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-13T01:06:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "889d1ee0e77947fc5b699cd6448c5bf51c15d1d0",
"body": "… written (#270)",
"is_bot": false,
"headline": "feat(status): silent-capture alarm — sessions observed vs checkpoints…",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-12T23:18:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2b57c2a8fba2df63906040eac5a429b2cdf3e521",
"body": "…#263)\n\n## Summary\n\nCodex appeared in `daimon skill list` but not `daimon hooks list`, so a\nreleased install had no supported way to install the Codex\n`SessionStart`/`Stop` lifecycle hooks — the only installer lived in the\nsource checkout (`hook/codex-hooks.py`). This packages the Codex\nintegration \n[…]\n\n- Hook mirror drift check (`sync_hooks.py --check`): in sync.\n- `daimon hooks list` now reports `codex (daimon-codex-session-start.py,\ndaimon-codex-stop.py; events: SessionStart, Stop)`.\n\nCloses #262",
"is_bot": false,
"headline": "fix(hooks): package Codex lifecycle hooks in `daimon hooks install` (…",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-12T02:08:10Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "8a169cb78ca4c9b5bf62799d7458375fb44c0d1b",
"body": "…260)\n\nCloses #259\n\n### What\n\nA project-scoped `recall` that finds nothing now reruns the query\nunscoped (one extra FTS query, same index, zero-match path only) and\nprints **counts by project — never content**:\n\n```\n$ daimon recall gateway\nno matches in this project — 5 match(es) elsewhere:\n -Users\n[…]\nsuite: 1548\npassed. Live end-to-end on a real 14-bucket corpus: a term indexed only\nin another project's bucket now signposts that bucket with its count,\nand the suggested follow-up returns the items.",
"is_bot": false,
"headline": "feat(recall): zero-match scoped search reports where matches exist (#…",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-12T00:21:40Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "8b6da55801d94b05f6a3fb09ffef7fa9e96d00d7",
"body": "…e to close loops (#258)\n\nCloses #257\n\n### What\n\nTwo new sections in the full skill body, mirrored tersely in the compact\nvariant:\n\n- **Searching memory** — the briefing is only the latest checkpoint;\nwhen the user references past work it doesn't answer, run `daimon recall\n<salient terms>` BEFORE an\n[…]\nd.\n\n### Rollout note\n\nSkill content ships inside the package — existing installs need `daimon\nskill install <host>` re-run after the next release upgrade (the\ninstall-time reminder already says this).",
"is_bot": false,
"headline": "feat(skill): teach agents to use memory — recall on reference, resolv…",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-11T23:48:45Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "e63c068fdc619b323953c52d9af1c5ee61ef266f",
"body": "… no drift (#256)\n\nCloses #255\n\n### What\n\n`recall._apply_event_resolutions` no longer re-implements the lifecycle\nliveness rule. Per bucket it now runs\n`store.resolutions(project_dir=<bucket name>)` (the bucket name is the\nslug; slug munging is idempotent, guarded by test since #243) and marks\n`supe\n[…]\nby:<id>` still\ncarries the target id; candidates never mark. All existing recall tests\n(exact `\"resolved\"`/`\"reopened\"` spellings, #247 no-manual-rebuild pair)\npass unchanged. Full suite: 1539 passed.",
"is_bot": false,
"headline": "fix(recall): index liveness fold reuses store.is_resolved — one rule,…",
"author_name": "Kibukx",
"author_login": "Kibukx",
"committed_at": "2026-07-11T23:28:41Z",
"body_truncated": true,
"is_coding_agent": false
}
],
"releases_count": 30,
"commits_last_year": 222,
"latest_release_at": "2026-07-30T18:16:06Z",
"latest_release_tag": "v0.22.0",
"releases_from_tags": false,
"days_since_last_push": 0,
"active_weeks_last_year": 4,
"days_since_latest_release": 0,
"mean_days_between_releases": 2.2
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": true,
"health_percentage": 62,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": true
},
"ecosystem": {
"packages": [
{
"name": "daimon-briefing",
"exists": true,
"license": "Apache-2.0",
"keywords": [
"ai-agents",
"briefing",
"checkpoint",
"claude-code",
"context",
"llm",
"memory",
"provenance",
"session",
"Development Status :: 4 - Beta",
"Environment :: Console",
"Intended Audience :: Developers",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Topic :: Software Development"
],
"ecosystem": "pypi",
"matches_repo": true,
"registry_url": "https://pypi.org/project/daimon-briefing/",
"is_deprecated": false,
"latest_version": "0.22.0",
"repository_url": "https://github.com/Daily-Nerd/daimon",
"versions_count": 30,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": null,
"monthly_downloads": 3865,
"first_published_at": "2026-07-03T02:58:59.413625Z",
"latest_published_at": "2026-07-30T18:16:33.867942Z",
"latest_version_yanked": null,
"days_since_latest_publish": 0
}
]
},
"popularity": {
"forks": 2,
"stars": 10,
"watchers": 0,
"fork_history": {
"days": [
{
"date": "2026-07-11",
"count": 1
},
{
"date": "2026-07-29",
"count": 1
}
],
"complete": true,
"collected": 2,
"total_forks": 2
},
"star_history": null,
"open_issues_and_prs": 16
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [],
"has_llms_txt": false,
"has_dockerfile": false,
"has_mcp_signal": true,
"bootstrap_files": [],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [
"website/tsconfig.json"
],
"toolchain_manifests": [],
"largest_source_bytes": 278574,
"source_files_sampled": 164,
"oversized_source_files": 9,
"agent_instruction_files": [
"docs/hosts/gemini.md",
"website/docs/hosts/gemini.md",
"website/i18n/es/docusaurus-plugin-content-docs/current/hosts/gemini.md"
],
"agent_instruction_max_bytes": 2467
},
"dependencies": {
"manifests": [
"plugin/pyproject.toml",
"website/package.json"
],
"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": [
"npm",
"pypi"
],
"dependencies": [
{
"name": "tomli",
"manifest": "plugin/pyproject.toml",
"ecosystem": "pypi",
"version_constraint": ">=2.0"
},
{
"name": "@docusaurus/core",
"manifest": "website/package.json",
"ecosystem": "npm",
"version_constraint": "3.10.2"
},
{
"name": "@docusaurus/faster",
"manifest": "website/package.json",
"ecosystem": "npm",
"version_constraint": "3.10.2"
},
{
"name": "@docusaurus/preset-classic",
"manifest": "website/package.json",
"ecosystem": "npm",
"version_constraint": "3.10.2"
},
{
"name": "@mdx-js/react",
"manifest": "website/package.json",
"ecosystem": "npm",
"version_constraint": "^3.0.0"
},
{
"name": "clsx",
"manifest": "website/package.json",
"ecosystem": "npm",
"version_constraint": "^2.0.0"
},
{
"name": "prism-react-renderer",
"manifest": "website/package.json",
"ecosystem": "npm",
"version_constraint": "^2.3.0"
},
{
"name": "react",
"manifest": "website/package.json",
"ecosystem": "npm",
"version_constraint": "^19.0.0"
},
{
"name": "react-dom",
"manifest": "website/package.json",
"ecosystem": "npm",
"version_constraint": "^19.0.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": 1,
"merged_prs": 237,
"open_issues": 15,
"closed_ratio": 0.928,
"closed_issues": 192,
"closed_unmerged_prs": 1
},
"bus_factor": 1,
"bot_contributors": 1,
"top_contributors": [
{
"type": "User",
"login": "Kibukx",
"commits": 216,
"avatar_url": "https://avatars.githubusercontent.com/u/72950620?v=4"
}
],
"contributors_sampled": 1,
"top_contributor_share": 1
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"benchmark.yml",
"ci.yml",
"docs.yml",
"pr-validation.yml",
"release.yml"
],
"has_docs_dir": true,
"linter_configs": [],
"has_editorconfig": false,
"has_linter_config": true,
"has_precommit_config": true
},
"security_signals": {
"lockfiles": [
"package-lock.json",
"uv.lock"
],
"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": null,
"reason": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
},
{
"name": "CI-Tests",
"score": 9,
"reason": "29 out of 30 merged PRs checked by a CI test -- score normalized to 9",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
},
{
"name": "CII-Best-Practices",
"score": 0,
"reason": "no effort to earn an OpenSSF best practices badge detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
},
{
"name": "Code-Review",
"score": 0,
"reason": "Found 0/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": 0,
"reason": "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": null,
"reason": "no releases found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
},
{
"name": "Token-Permissions",
"score": 0,
"reason": "detected GitHub workflow tokens with excessive permissions",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
},
{
"name": "Vulnerabilities",
"score": 5,
"reason": "5 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "6ed5e2f930e300da7542d936d6f3fe9ebecf64ac",
"ran_at": "2026-07-30T18:17:50Z",
"aggregate_score": 2.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-30T18:17:12Z",
"oldest_open_prs": [
{
"number": 396,
"created_at": "2026-07-29T05:20:06Z",
"last_comment_at": "2026-07-29T05:21:33Z",
"last_comment_author": "codecov"
}
],
"last_merged_pr_at": "2026-07-30T18:15:54Z",
"ci_last_conclusion": "SUCCESS",
"oldest_open_issues": [
{
"number": 48,
"created_at": "2026-07-04T00:38:09Z",
"last_comment_at": "2026-07-21T05:03:28Z",
"last_comment_author": "Kibukx"
},
{
"number": 106,
"created_at": "2026-07-07T07:44:33Z",
"last_comment_at": "2026-07-21T02:04:16Z",
"last_comment_author": "Kibukx"
},
{
"number": 264,
"created_at": "2026-07-12T02:29:26Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 269,
"created_at": "2026-07-12T21:54:31Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 273,
"created_at": "2026-07-13T00:36:54Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 276,
"created_at": "2026-07-13T21:20:50Z",
"last_comment_at": "2026-07-29T01:34:11Z",
"last_comment_author": "Kibukx"
},
{
"number": 343,
"created_at": "2026-07-20T21:10:55Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 344,
"created_at": "2026-07-20T21:10:56Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 345,
"created_at": "2026-07-20T21:10:58Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 364,
"created_at": "2026-07-22T05:44:11Z",
"last_comment_at": "2026-07-29T02:59:33Z",
"last_comment_author": "Kibukx"
},
{
"number": 395,
"created_at": "2026-07-29T05:19:41Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 398,
"created_at": "2026-07-29T16:15:11Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 406,
"created_at": "2026-07-29T22:42:47Z",
"last_comment_at": "2026-07-30T02:14:37Z",
"last_comment_author": "Kibukx"
},
{
"number": 438,
"created_at": "2026-07-30T07:00:01Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 439,
"created_at": "2026-07-30T07:25:12Z",
"last_comment_at": null,
"last_comment_author": null
}
]
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/Daily-Nerd/daimon",
"host": "github.com",
"name": "daimon",
"owner": "Daily-Nerd"
},
"metrics": {
"overall": {
"key": "overall",
"band": "moderate",
"name": "Overall health",
"note": null,
"notes": [],
"value": 59,
"inputs": {
"security": 23,
"vitality": 74,
"community": 48,
"governance": 56,
"engineering": 85
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "good",
"name": "Vitality",
"value": 74,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "moderate",
"name": "Development activity",
"note": null,
"notes": [],
"value": 57,
"inputs": {
"commits_last_year": 222,
"human_commit_share": 0.92,
"days_since_last_push": 0,
"active_weeks_last_year": 4
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 0 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "push_recency",
"params": {
"days": 0
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "4/52 weeks with commits",
"points": 2.8,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 4
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "222 commits in the last year",
"points": 18,
"status": "met",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 222
}
}
],
"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": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"openssf_scorecard_signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 100,
"inputs": {
"releases_count": 30,
"latest_release_tag": "v0.22.0",
"releases_from_tags": false,
"days_since_latest_release": 0,
"mean_days_between_releases": 2.2
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "30 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 30
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 0 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 0
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~2.2 days",
"points": 27,
"status": "met",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 2.2
}
}
],
"max_points": 27
},
{
"key": "openssf_scorecard_signed_releases",
"name": "OpenSSF Scorecard: Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 10
}
]
},
{
"key": "abandonment",
"band": "excellent",
"name": "Abandonment",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"cap": null,
"state": "unverified",
"guards": [],
"signals": [],
"red_flag": false,
"multiplier_pct": 100,
"declared_reason": null,
"unverified_reason": "repository_too_young",
"unanswered_open_prs": null,
"unanswered_open_issues": null,
"days_since_last_merged_pr": null,
"days_since_last_human_commit": null,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "maintenance record not established from the collected data",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_unverified",
"params": {}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "at_risk",
"name": "Community & Adoption",
"value": 48,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "critical",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 16,
"inputs": {
"forks": 2,
"stars": 10,
"watchers": 0,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "10 stars",
"points": 15.5,
"status": "partial",
"details": [
{
"code": "stars",
"params": {
"count": 10
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "2 forks",
"points": 0,
"status": "missed",
"details": [
{
"code": "forks",
"params": {
"count": 2
}
}
],
"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": 77,
"inputs": {
"has_readme": true,
"has_license": true,
"has_contributing": true,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 22.5,
"status": "met",
"details": [],
"max_points": 22.5
},
{
"key": "license",
"name": "License",
"detail": "recognized license (Apache-2.0)",
"points": 22.5,
"status": "met",
"details": [
{
"code": "license_standard",
"params": {}
},
{
"code": "license_spdx",
"params": {
"spdx": "Apache-2.0"
}
}
],
"max_points": 22.5
},
{
"key": "contributing_guide",
"name": "CONTRIBUTING guide",
"detail": null,
"points": 18,
"status": "met",
"details": [],
"max_points": 18
},
{
"key": "code_of_conduct",
"name": "Code of conduct",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 13.5
},
{
"key": "issue_template",
"name": "Issue template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.2
},
{
"key": "pr_template",
"name": "PR template",
"detail": null,
"points": 6.3,
"status": "met",
"details": [],
"max_points": 6.3
}
]
},
{
"key": "ecosystem_adoption",
"band": "moderate",
"name": "Ecosystem adoption (downloads)",
"note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"registry_dependents"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 60,
"inputs": {
"packages": [
"daimon-briefing"
],
"dependents": null,
"ecosystems": "pypi",
"total_downloads": null,
"monthly_downloads": 3865
},
"components": [
{
"key": "monthly_downloads",
"name": "Monthly downloads",
"detail": "3,865 downloads/month across pypi",
"points": 47.8,
"status": "partial",
"details": [
{
"code": "downloads_monthly",
"params": {
"count": 3865,
"ecosystems": "pypi"
}
}
],
"max_points": 80
},
{
"key": "registry_dependents",
"name": "Registry dependents",
"detail": "not reported by this ecosystem",
"points": 0,
"status": "excluded",
"details": [
{
"code": "not_reported_by_this_ecosystem",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
},
{
"key": "governance",
"band": "moderate",
"name": "Sustainability & Governance",
"value": 56,
"weight": 0.24,
"metrics": [
{
"key": "maintainer_resilience",
"band": "critical",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 10,
"inputs": {
"bus_factor": 1,
"contributors_sampled": 1,
"top_contributor_share": 1
},
"components": [
{
"key": "bus_factor",
"name": "Bus factor",
"detail": "1 contributor(s) cover half of all commits",
"points": 9,
"status": "partial",
"details": [
{
"code": "bus_factor",
"params": {
"count": 1
}
}
],
"max_points": 54
},
{
"key": "commit_distribution",
"name": "Commit distribution",
"detail": "top contributor authored 100% of commits",
"points": 0,
"status": "missed",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 100
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "1 contributors",
"points": 1.4,
"status": "partial",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 1
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 0 contributing companies or organizations -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "good",
"name": "Issue & PR responsiveness",
"note": null,
"notes": [],
"value": 82,
"inputs": {
"merged_prs": 237,
"open_issues": 15,
"closed_issues": 192,
"issue_closed_ratio": 0.928,
"closed_unmerged_prs": 1
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "93% of issues closed",
"points": 43.4,
"status": "partial",
"details": [
{
"code": "issues_closed_share",
"params": {
"share": 93
}
}
],
"max_points": 46.75
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "237/238 decided PRs merged",
"points": 38.1,
"status": "partial",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 237,
"decided": 238
}
}
],
"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": null,
"notes": [],
"value": 49,
"inputs": {
"followers": 2,
"owner_type": "Organization",
"is_verified": null,
"owner_login": "Daily-Nerd",
"public_repos": 12,
"account_age_days": 1350
},
"components": [
{
"key": "ownership_backing",
"name": "Ownership backing",
"detail": "organization-owned",
"points": 30,
"status": "met",
"details": [
{
"code": "owner_organization",
"params": {}
}
],
"max_points": 30
},
{
"key": "verified_domain",
"name": "Verified domain",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 20
},
{
"key": "owner_reach",
"name": "Owner reach",
"detail": "2 followers of Daily-Nerd",
"points": 3.4,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 2,
"login": "Daily-Nerd"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "12 public repos, account ~3 yr old",
"points": 15.5,
"status": "partial",
"details": [
{
"code": "public_repos",
"params": {
"count": 12
}
},
{
"code": "account_age_years",
"params": {
"years": 3
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "excellent",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"packages": [
"daimon-briefing"
],
"ecosystems": "pypi",
"any_deprecated": false,
"min_days_since_publish": 0
},
"components": [
{
"key": "published_resolvable",
"name": "Published & resolvable",
"detail": "1 package(s) on pypi",
"points": 25,
"status": "met",
"details": [
{
"code": "packages_published",
"params": {
"count": 1,
"ecosystems": "pypi"
}
}
],
"max_points": 25
},
{
"key": "publish_recency",
"name": "Publish recency",
"detail": "latest publish 0 days ago",
"points": 35,
"status": "met",
"details": [
{
"code": "publish_recency",
"params": {
"days": 0
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "30 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 30
}
}
],
"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": "excellent",
"name": "Engineering Quality",
"value": 85,
"weight": 0.2,
"metrics": [
{
"key": "engineering_practices",
"band": "excellent",
"name": "Engineering practices",
"note": null,
"notes": [],
"value": 92,
"inputs": {
"has_ci": true,
"has_tests": true,
"has_editorconfig": false,
"has_linter_config": true,
"has_precommit_config": true
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": "5 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 5
}
}
],
"max_points": 24
},
{
"key": "tests_present",
"name": "Tests present",
"detail": null,
"points": 24,
"status": "met",
"details": [],
"max_points": 24
},
{
"key": "linter_config",
"name": "Linter config",
"detail": null,
"points": 16,
"status": "met",
"details": [],
"max_points": 16
},
{
"key": "pre_commit_hooks",
"name": "Pre-commit hooks",
"detail": null,
"points": 9.6,
"status": "met",
"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": "29 out of 30 merged PRs checked by a CI test -- score normalized to 9",
"points": 18,
"status": "partial",
"details": [],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "good",
"name": "Documentation",
"note": null,
"notes": [],
"value": 75,
"inputs": {
"topics": [],
"has_wiki": true,
"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": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
}
],
"description": "Are baseline engineering and documentation practices in place?"
},
{
"key": "security",
"band": "critical",
"name": "Security",
"value": 23,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "critical",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): Branch-Protection, Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"branch_protection",
"signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 23,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 16,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 2,
"scorecard_aggregate": 2.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": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "29 out of 30 merged PRs checked by a CI test -- score normalized to 9",
"points": 2.2,
"status": "partial",
"details": [],
"max_points": 2.5
},
{
"key": "cii_best_practices",
"name": "CII-Best-Practices",
"detail": "no effort to earn an OpenSSF best practices badge detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "code_review",
"name": "Code-Review",
"detail": "Found 0/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": "dangerous workflow patterns detected",
"points": 0,
"status": "missed",
"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": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "token_permissions",
"name": "Token-Permissions",
"detail": "detected GitHub workflow tokens with excessive permissions",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "vulnerabilities",
"name": "Vulnerabilities",
"detail": "5 existing vulnerabilities detected",
"points": 3.8,
"status": "partial",
"details": [],
"max_points": 7.5
}
]
}
],
"description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
},
{
"key": "ai_readiness",
"band": "moderate",
"name": "AI Readiness",
"value": 62,
"weight": 0,
"metrics": [
{
"key": "ai_agent_context",
"band": "excellent",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 85,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 1,
"agent_instruction_files": [
"docs/hosts/gemini.md",
"website/docs/hosts/gemini.md",
"website/i18n/es/docusaurus-plugin-content-docs/current/hosts/gemini.md"
],
"agent_instruction_max_bytes": 2467
},
"components": [
{
"key": "agent_instructions",
"name": "Agent instructions",
"detail": "docs/hosts/gemini.md, website/docs/hosts/gemini.md, website/i18n/es/docusaurus-plugin-content-docs/current/hosts/gemini.md",
"points": 45,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "docs/hosts/gemini.md, website/docs/hosts/gemini.md, website/i18n/es/docusaurus-plugin-content-docs/current/hosts/gemini.md"
}
}
],
"max_points": 45
},
{
"key": "machine_readable_docs_llms_txt",
"name": "Machine-readable docs (llms.txt)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
},
{
"key": "legible_commit_history",
"name": "Legible commit history",
"detail": "92 of 92 human commits state their intent (structured subject or explanatory body)",
"points": 40,
"status": "met",
"details": [
{
"code": "legible_history",
"params": {
"legible": 92,
"sampled": 92
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "moderate",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 54,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [
"package-lock.json",
"uv.lock"
],
"has_dockerfile": false,
"typed_language": false,
"bootstrap_files": [],
"has_devcontainer": false,
"has_linter_config": true,
"typecheck_configs": [
"website/tsconfig.json"
],
"agent_commit_share": 0,
"toolchain_manifests": [],
"dependency_bot_commit_share": 0
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"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": null,
"points": 11,
"status": "met",
"details": [],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": "website/tsconfig.json",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "website/tsconfig.json"
}
}
],
"max_points": 11
},
{
"key": "reproducible_environment",
"name": "Reproducible environment",
"detail": "lockfile",
"points": 10,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "lockfile"
}
}
],
"max_points": 10
},
{
"key": "demonstrated_agent_practice",
"name": "Demonstrated agent practice",
"detail": "no agent-authored commits among the last 100",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_agent_authored_commits",
"params": {
"sampled": 100
}
}
],
"max_points": 10
},
{
"key": "automated_maintenance",
"name": "Automated maintenance",
"detail": "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": "good",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 79,
"inputs": {
"primary_language": "Python",
"largest_source_bytes": 278574,
"source_files_sampled": 164,
"oversized_source_files": 9
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "Python with type-check config (website/tsconfig.json)",
"points": 27,
"status": "partial",
"details": [
{
"code": "typecheck_config_language",
"params": {
"files": "website/tsconfig.json",
"language": "Python"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "9/164 source files over 60KB",
"points": 52,
"status": "partial",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 164,
"oversized": 9
}
}
],
"max_points": 55
}
]
},
{
"key": "ai_interfaces",
"band": "critical",
"name": "Machine-readable interfaces",
"note": null,
"notes": [],
"value": 20,
"inputs": {
"example_dirs": [],
"has_mcp_signal": true,
"api_schema_files": []
},
"components": [
{
"key": "api_schema_openapi_graphql_proto",
"name": "API schema (OpenAPI/GraphQL/proto)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 40
},
{
"key": "mcp_server",
"name": "MCP server",
"detail": null,
"points": 20,
"status": "met",
"details": [],
"max_points": 20
},
{
"key": "runnable_examples",
"name": "Runnable examples",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 40
}
]
}
],
"description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
}
],
"metrics_version": "1.13.0"
},
"warnings": [
"Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
"GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
"deps.dev does not index pypi:daimon-briefing@0.22.0; advisories assessed against the repository dependency graph instead"
],
"report_type": "repository",
"generated_at": "2026-07-30T18:18:10.582944Z",
"schema_version": "0.27.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/d/Daily-Nerd/daimon.svg",
"full_name": "Daily-Nerd/daimon",
"license_state": "standard",
"license_spdx": "Apache-2.0"
}