Public record
Software health reportschema 0.27.0 · metrics 1.13.0 · 2026-07-27 10:29 UTC

gkoreli / backlog-mcp

Your backlog is your agent's memory

TypeScriptMIT★ 5 stars⑂ 2 forkssince Dec 2025View on GitHub ↗

gkoreli/backlog-mcp holds a health index of 60 out of 100, placing it in the Moderate band. It scores highest on Vitality (89/100) and lowest on Community & Adoption (36/100). It was last updated 6 days ago. A single contributor accounts for most of its recent work.

60
overall / 100
Moderate

Software health index

Metrics are grouped into weighted categories on one standardized 1–100 scale. Overall starts as their weighted mean; when public evidence triggers the High-Risk Jurisdiction Policy, the rating is adjusted and receives an At risk ceiling of 49. AI Readiness sits outside the overall score.

60
Excellent85-100Exemplary; meets essentially all checked criteria
Good70-84Healthy; minor gaps
Moderate50-69Acceptable with notable gaps; review recommended
At risk30-49Significant weaknesses; adoption warrants caution
Critical1-29Severe problems (abandoned, single-maintainer, no hygiene)
VitalityCommunity &AdoptionSustainability &GovernanceEngineeringQualitySecurityAI Readiness

Score profile

Each axis is a category. The shape matters more than the average — a healthy subject fills the whole shape, while a spike-and-crater profile means strength in one dimension is masking risk in another.

Ownership

Goga KoreliPersonal account
0 followers5 public repossince Nov 2025

This repository is owned by a personal account. A single-owner project carries more continuity risk than an organization-backed one.

Package ecosystems

Metrics by category

Vitality

Is the project alive — is code being written and are releases shipping?

89Excellent · 22% of overall
How it's scored
36/36Push recency — last push 6 days ago
18/36Commit cadence — 26/52 weeks with commits
18/18Commit volume — 920 commits in the last year
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Inputs used
commits_last_year920
human_commit_share1
days_since_last_push6
active_weeks_last_year26

Release discipline

100Excellent
How it's scored
27/27Ships releases — 92 releases published
36/36Release recency — latest release 6 days ago
27/27Release cadence — a release every ~0.4 days
0/10OpenSSF Scorecard: Signed-Releases — no data
Inputs used
releases_count92
latest_release_tagv0.70.0
releases_from_tagsno
days_since_latest_release6
mean_days_between_releases0.4
Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.

Community & Adoption

Does the project have users, downloads, attention, and a welcoming setup for contributors?

36At risk · 18% of overall
How it's scored
9.8/60Stars — 5 stars
0/25Forks — 2 forks
0/15Watchers — 0 watchers
Inputs used
forks2
stars5
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
How it's scored
22.5/22.5README
22.5/22.5License — recognized license (MIT)
0/18CONTRIBUTING guide
0/13.5Code of conduct
0/7.2Issue template
0/6.3PR template
Inputs used
has_readmeyes
has_licenseyes
has_contributingno
has_issue_templateno
has_code_of_conductno
has_pull_request_templateno
How it's scored
45/80Monthly downloads — 2,363 downloads/month across npm
0/20Registry dependents — not reported by this ecosystem
Inputs used
packagesbacklog-mcp
dependents
ecosystemsnpm
total_downloads
monthly_downloads2,363
Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.

Sustainability & Governance

Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?

49At risk · 24% of overall
How it's scored
9/54Bus factor — 1 contributor(s) cover half of all commits
7.9/22.5Commit distribution — top contributor authored 65% of commits
4.1/13.5Contributor breadth — 3 contributors
3/10OpenSSF Scorecard: Contributors — project has 1 contributing companies or organizations -- score normalized to 3
Inputs used
bus_factor1
contributors_sampled3
top_contributor_share0.647
How it's scored
0/46.8Issue resolution — no issues or no data
35.3/38.3PR acceptance — 109/118 decided PRs merged
0/15OpenSSF Scorecard: Code-Review — Found 0/29 approved changesets -- score normalized to 0
Inputs used
merged_prs109
open_issues0
closed_issues0
issue_closed_ratio
closed_unmerged_prs9
Excluded from scoring (no data or not applicable): Issue resolution. Remaining weights renormalized.
How it's scored
10/30Ownership backing — personal (user) account
0/20Verified domain — not applicable to user accounts
0/25Owner reach — 0 followers of gkoreli
7.1/25Track record — 5 public repos, account ~0 yr old
Inputs used
followers0
owner_typeUser
is_verified
owner_logingkoreli
public_repos5
account_age_days259
Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.
How it's scored
25/25Published & resolvable — 1 package(s) on npm
35/35Publish recency — latest publish 6 days ago
20/20Version history — 91 published versions
20/20Not deprecated — active, not deprecated or yanked
Inputs used
packagesbacklog-mcp
ecosystemsnpm
any_deprecatedno
min_days_since_publish6

Engineering Quality

Are baseline engineering and documentation practices in place?

77Good · 20% of overall
How it's scored
24/24CI workflows — 2 workflow(s)
24/24Tests present
0/16Linter config
0/9.6Pre-commit hooks
0/6.4.editorconfig
20/20OpenSSF Scorecard: CI-Tests — 1 out of 1 merged PRs checked by a CI test -- score normalized to 10
Inputs used
has_ciyes
has_testsyes
has_editorconfigno
has_linter_configno
has_precommit_configno

Documentation

90Excellent
How it's scored
30/30README
25/25Documentation directory
15/15Documentation / homepage site — https://gkoreli.com/one-hundred-pull-requests
10/10Repository description
10/10Topics — 7 topics
0/10Wiki
Inputs used
topicsai, anthropic, claude, llm, mcp, model-context-protocol, task-management
has_wikino
homepagehttps://gkoreli.com/one-hundred-pull-requests
has_readmeyes
has_docs_diryes
has_descriptionyes

Security

Are visible security and supply-chain practices strong, without unresolved high-risk jurisdiction exposure?

43At risk · 16% of overall
How it's scored
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — branch protection not enabled on development/release branches
2.5/2.5CI-Tests — 1 out of 1 merged PRs checked by a CI test -- score normalized to 10
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/29 approved changesets -- score normalized to 0
0.8/2.5Contributors — project has 1 contributing companies or organizations -- score normalized to 3
10/10Dangerous-Workflow — no dangerous workflow patterns detected
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5License — license file detected
7.5/7.5Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
5/5Packaging — packaging workflow detected
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — no data
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0/7.5Vulnerabilities — 121 existing vulnerabilities detected
Inputs used
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate3.7
Excluded from scoring (no data or not applicable): signed_releases. Remaining weights renormalized.
How it's scored
18.5/35Direct dependencies free of known advisories — 1 affected: @hono/node-server 1.19.15 (moderate 5.9)
10.4/25Indirect dependencies free of known advisories — 1 affected: sharp 0.34.5 (high 7.3)
40/40No advisories left outstanding — no advisory has been public longer than 90 days
Inputs used
sourceosv
advisories2
affected_packages2
assessed_packages248
unassessed_packages0
affected_by_severityhigh 1, moderate 1
direct_affected_packages1
Matched the npm:backlog-mcp@0.70.0 runtime dependency closure — what installing the published package pulls in — 248 packages. Reachability is not analyzed.

AI Readiness

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.

72Good · 0% of overall
How it's scored
45/45Agent instructions — .agents/skills/backlog-ui-framework/AGENTS.md, AGENTS.md, CLAUDE.md
0/15Machine-readable docs (llms.txt)
40/40Legible commit history — 100 of 100 human commits state their intent (structured subject or explanatory body)
Inputs used
has_llms_txtno
legible_history_share1
agent_instruction_files.agents/skills/backlog-ui-framework/AGENTS.md, AGENTS.md, CLAUDE.md
agent_instruction_max_bytes33,296
How it's scored
18/18One-command bootstrap — .mise.toml
22/22Automated tests
0/11Lint / format config
11/11Static type checking — packages/memory/tsconfig.json, packages/server/tsconfig.json, packages/shared/tsconfig.json, packages/viewer/tsconfig.json, tsconfig.json
10/10Reproducible environment — lockfile
10/10Demonstrated agent practice — 65 of the last 100 commits agent-authored or agent-credited
0/8Automated maintenance — no automated dependency updates observed
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Inputs used
has_nixno
has_testsyes
lockfilespnpm-lock.yaml
has_dockerfileno
typed_languageyes
bootstrap_files.mise.toml
has_devcontainerno
has_linter_configno
typecheck_configspackages/memory/tsconfig.json, packages/server/tsconfig.json, packages/shared/tsconfig.json, packages/viewer/tsconfig.json, tsconfig.json
agent_commit_share0.65
toolchain_manifests
dependency_bot_commit_share0
How it's scored
45/45Type-checkable code — TypeScript (statically typed)
55/55Manageable file sizes — 0/423 source files over 60KB
Inputs used
primary_languageTypeScript
largest_source_bytes56,219
source_files_sampled423
oversized_source_files0
How it's scored
0/40API schema (OpenAPI/GraphQL/proto)
20/20MCP server
0/40Runnable examples
Inputs used
example_dirs
has_mcp_signalyes
api_schema_files

Key facts

5GitHub stars
3contributors
920commits, last 12 months
6days since last push
92releases
1bus factor
0open issues
npmpackage ecosystems

Data collection 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

More detail

Star and fork history 0 ★ / 2 ⇿
0Stars
2Forks
42Releases

When each star and fork was added, collected from GitHub and bucketed by day. Cumulative growth sits directly above the daily additions it is made of, so the two read against each other: steady organic accretion looks nothing like an abrupt, short-lived burst. Where that difference is measurable, it is reported as growth authenticity.

111222212026-012026-032026-04
Major 0Minor 29Patch 13
OpenSSF Scorecard 3.7 / 10
3.7aggregate

Independent, tool-agnostic security assessment from the open-source OpenSSF Scorecard. Each check rewards a security practice, not a specific vendor's tool. Checks Scorecard could not determine are marked n/a and excluded from the security score (never counted as zero).Scorecard v5.5.0 · 2026-07-27 10:29 UTC

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
10CI-Tests1 out of 1 merged PRs checked by a CI test -- score normalized to 10
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/29 approved changesets -- score normalized to 0
3Contributorsproject has 1 contributing companies or organizations -- score normalized to 3
10Dangerous-Workflowno dangerous workflow patterns detected
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
10Packagingpackaging workflow detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTSAST tool is not run on all commits -- score normalized to 0
0Security-Policysecurity policy file not detected
n/aSigned-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities121 existing vulnerabilities detected
Direct dependencies 30
RegistryPackageVersion constraintManifest
npm@backlog-mcp/sharedworkspace:*packages/memory/package.json
npm@orama/orama^3.1.18packages/memory/package.json
npm@orama/stopwords^3.1.18packages/memory/package.json
npm@huggingface/transformers^3.8.1packages/memory/package.json
npm@hono/node-server^1.14.0packages/server/package.json
npm@huggingface/transformers^3.8.1packages/server/package.json
npm@modelcontextprotocol/sdk^1.25.1packages/server/package.json
npm@orama/orama^3.1.18packages/server/package.json
npm@orama/stopwords^3.1.18packages/server/package.json
npm@parcel/watcher2.5.6packages/server/package.json
npmajv^8.17.1packages/server/package.json
npmarctic^3.0.0packages/server/package.json
npmcommander^14.0.3packages/server/package.json
npmgray-matter^4.0.3packages/server/package.json
npmhono^4.7.0packages/server/package.json
npmmcp-remote^0.1.37packages/server/package.json
npmzod^4.3.5packages/server/package.json
npmzod^4.3.5packages/shared/package.json
npm@backlog-mcp/sharedworkspace:*packages/viewer/package.json
npm@nisli/core^0.54.0packages/viewer/package.json
npm@orama/highlight^0.1.9packages/viewer/package.json
npm@shikijs/engine-javascript^4.2.0packages/viewer/package.json
npm@shikijs/langs^4.2.0packages/viewer/package.json
npm@shikijs/themes^4.2.0packages/viewer/package.json
npmdiff^9.0.0packages/viewer/package.json
npmdompurify^3.3.1packages/viewer/package.json
npmmarked^17.0.1packages/viewer/package.json
npmmarked-shiki^1.2.1packages/viewer/package.json
npmmermaid^11.12.3packages/viewer/package.json
npmshiki^4.2.0packages/viewer/package.json
All dependencies not collected

The resolved dependency set could not be collected for this report: GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Dependency advisories 2

Installing npm:backlog-mcp@0.70.0 pulls in 248 packages, direct and transitive: 2 carry known advisories, of which 1 are direct dependencies.

PackageVersionRelationSeverityAdvisoriesFixed in
sharp0.34.5indirecthigh10.35.0
@hono/node-server1.19.15directmoderate12.0.5

An advisory means the version recorded in the dependency graph falls inside an advisory’s affected range. Reachability is not analysed, and the graph includes development and test pins — a finding may concern tooling rather than shipped software.

Raw JSON report machine-readable
{
  "data": {
    "repo": {
      "topics": [
        "ai",
        "anthropic",
        "claude",
        "llm",
        "mcp",
        "model-context-protocol",
        "task-management"
      ],
      "is_fork": false,
      "size_kb": 7050,
      "has_wiki": false,
      "homepage": "https://gkoreli.com/one-hundred-pull-requests",
      "languages": {
        "CSS": 124411,
        "HTML": 11100,
        "Shell": 243,
        "JavaScript": 116012,
        "TypeScript": 2578380
      },
      "pushed_at": "2026-07-20T19:05:18Z",
      "created_at": "2025-12-20T07:52:54Z",
      "owner_type": "User",
      "updated_at": "2026-07-20T19:05:42Z",
      "description": "Your backlog is your agent's memory",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "main",
      "license_spdx_raw": "MIT",
      "primary_language": "TypeScript",
      "significant_languages": [
        "TypeScript"
      ]
    },
    "owner": {
      "blog": "gkoreli.com",
      "name": "Goga Koreli",
      "type": "User",
      "login": "gkoreli",
      "company": null,
      "location": null,
      "followers": 0,
      "avatar_url": "https://avatars.githubusercontent.com/u/243085293?v=4",
      "created_at": "2025-11-10T08:36:47Z",
      "is_verified": null,
      "public_repos": 5,
      "account_age_days": 259
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v0.70.0",
          "kind": "minor",
          "published_at": "2026-07-20T19:05:19Z"
        },
        {
          "tag": "v0.69.0",
          "kind": "minor",
          "published_at": "2026-07-19T05:54:41Z"
        },
        {
          "tag": "v0.68.0",
          "kind": "minor",
          "published_at": "2026-07-18T16:01:47Z"
        },
        {
          "tag": "v0.67.0",
          "kind": "minor",
          "published_at": "2026-07-18T00:05:07Z"
        },
        {
          "tag": "v0.66.0",
          "kind": "minor",
          "published_at": "2026-07-17T23:40:44Z"
        },
        {
          "tag": "v0.65.0",
          "kind": "minor",
          "published_at": "2026-07-17T23:11:33Z"
        },
        {
          "tag": "v0.64.0",
          "kind": "minor",
          "published_at": "2026-07-17T21:05:58Z"
        },
        {
          "tag": "v0.63.0",
          "kind": "minor",
          "published_at": "2026-07-17T16:59:39Z"
        },
        {
          "tag": "v0.62.0",
          "kind": "minor",
          "published_at": "2026-07-17T04:45:26Z"
        },
        {
          "tag": "v0.61.0",
          "kind": "minor",
          "published_at": "2026-07-16T23:17:25Z"
        },
        {
          "tag": "v0.60.0",
          "kind": "minor",
          "published_at": "2026-07-16T21:08:11Z"
        },
        {
          "tag": "v0.59.0",
          "kind": "minor",
          "published_at": "2026-07-16T18:56:31Z"
        },
        {
          "tag": "v0.58.0",
          "kind": "minor",
          "published_at": "2026-06-19T22:24:18Z"
        },
        {
          "tag": "v0.57.0",
          "kind": "minor",
          "published_at": "2026-06-19T22:13:25Z"
        },
        {
          "tag": "v0.56.0",
          "kind": "minor",
          "published_at": "2026-06-19T21:10:33Z"
        },
        {
          "tag": "v0.55.1",
          "kind": "patch",
          "published_at": "2026-06-19T20:37:56Z"
        },
        {
          "tag": "v0.55.0",
          "kind": "minor",
          "published_at": "2026-06-19T20:33:25Z"
        },
        {
          "tag": "v0.54.1",
          "kind": "patch",
          "published_at": "2026-06-19T19:51:29Z"
        },
        {
          "tag": "v0.53.7",
          "kind": "patch",
          "published_at": "2026-06-18T23:45:34Z"
        },
        {
          "tag": "v0.53.6",
          "kind": "patch",
          "published_at": "2026-06-18T23:41:42Z"
        },
        {
          "tag": "v0.53.5",
          "kind": "patch",
          "published_at": "2026-06-18T23:37:31Z"
        },
        {
          "tag": "v0.53.3",
          "kind": "patch",
          "published_at": "2026-06-18T22:24:11Z"
        },
        {
          "tag": "v0.53.2",
          "kind": "patch",
          "published_at": "2026-06-18T19:42:43Z"
        },
        {
          "tag": "v0.53.1",
          "kind": "patch",
          "published_at": "2026-06-18T16:44:17Z"
        },
        {
          "tag": "v0.53.0",
          "kind": "minor",
          "published_at": "2026-06-17T22:49:29Z"
        },
        {
          "tag": "v0.52.0",
          "kind": "minor",
          "published_at": "2026-06-17T21:12:06Z"
        },
        {
          "tag": "v0.51.1",
          "kind": "patch",
          "published_at": "2026-06-17T04:16:58Z"
        },
        {
          "tag": "v0.51.0",
          "kind": "minor",
          "published_at": "2026-06-16T23:13:31Z"
        },
        {
          "tag": "v0.50.3",
          "kind": "patch",
          "published_at": "2026-06-03T23:42:08Z"
        },
        {
          "tag": "v0.50.2",
          "kind": "patch",
          "published_at": "2026-05-25T07:05:36Z"
        },
        {
          "tag": "v0.50.1",
          "kind": "patch",
          "published_at": "2026-05-25T06:52:15Z"
        },
        {
          "tag": "v0.50.0",
          "kind": "minor",
          "published_at": "2026-05-25T06:40:17Z"
        },
        {
          "tag": "v0.49.2",
          "kind": "patch",
          "published_at": "2026-04-29T21:40:55Z"
        },
        {
          "tag": "v0.49.0",
          "kind": "minor",
          "published_at": "2026-04-29T19:04:28Z"
        },
        {
          "tag": "v0.48.2",
          "kind": "patch",
          "published_at": "2026-04-23T21:21:39Z"
        },
        {
          "tag": "v0.48.1",
          "kind": "patch",
          "published_at": "2026-04-20T20:31:07Z"
        },
        {
          "tag": "v0.47.5",
          "kind": "patch",
          "published_at": "2026-04-14T23:03:46Z"
        },
        {
          "tag": "v0.47.4",
          "kind": "patch",
          "published_at": "2026-04-14T22:43:24Z"
        },
        {
          "tag": "v0.47.3",
          "kind": "patch",
          "published_at": "2026-04-14T21:47:01Z"
        },
        {
          "tag": "v0.47.2",
          "kind": "patch",
          "published_at": "2026-04-14T20:48:50Z"
        },
        {
          "tag": "v0.47.1",
          "kind": "patch",
          "published_at": "2026-03-26T01:31:52Z"
        },
        {
          "tag": "v0.47.0",
          "kind": "minor",
          "published_at": "2026-03-26T01:21:05Z"
        },
        {
          "tag": "v0.46.0",
          "kind": "minor",
          "published_at": "2026-02-24T21:29:34Z"
        },
        {
          "tag": "v0.45.0",
          "kind": "minor",
          "published_at": "2026-02-24T21:14:27Z"
        },
        {
          "tag": "v0.44.0",
          "kind": "minor",
          "published_at": "2026-02-24T20:50:02Z"
        },
        {
          "tag": "v0.43.0",
          "kind": "minor",
          "published_at": "2026-02-24T20:21:05Z"
        },
        {
          "tag": "v0.42.0",
          "kind": "minor",
          "published_at": "2026-02-24T01:56:06Z"
        },
        {
          "tag": "v0.41.0",
          "kind": "minor",
          "published_at": "2026-02-24T01:37:30Z"
        },
        {
          "tag": "v0.40.0",
          "kind": "minor",
          "published_at": "2026-02-21T23:52:30Z"
        },
        {
          "tag": "v0.39.1",
          "kind": "patch",
          "published_at": "2026-02-20T21:45:36Z"
        },
        {
          "tag": "v0.39.0",
          "kind": "minor",
          "published_at": "2026-02-16T22:38:12Z"
        },
        {
          "tag": "v0.37.0",
          "kind": "minor",
          "published_at": "2026-02-16T19:27:55Z"
        },
        {
          "tag": "v0.36.0",
          "kind": "minor",
          "published_at": "2026-02-12T05:15:33Z"
        },
        {
          "tag": "v0.35.0",
          "kind": "minor",
          "published_at": "2026-02-10T00:48:39Z"
        },
        {
          "tag": "v0.34.0",
          "kind": "minor",
          "published_at": "2026-02-09T21:01:19Z"
        },
        {
          "tag": "v0.33.0",
          "kind": "minor",
          "published_at": "2026-02-07T02:38:08Z"
        },
        {
          "tag": "v0.32.0",
          "kind": "minor",
          "published_at": "2026-02-06T18:14:30Z"
        },
        {
          "tag": "v0.31.0",
          "kind": "minor",
          "published_at": "2026-02-05T22:56:59Z"
        },
        {
          "tag": "v0.30.0",
          "kind": "minor",
          "published_at": "2026-02-05T07:00:53Z"
        },
        {
          "tag": "v0.29.1",
          "kind": "patch",
          "published_at": "2026-02-03T06:25:54Z"
        },
        {
          "tag": "v0.29.0",
          "kind": "minor",
          "published_at": "2026-02-03T01:15:19Z"
        },
        {
          "tag": "v0.28.0",
          "kind": "minor",
          "published_at": "2026-01-31T18:34:02Z"
        },
        {
          "tag": "v0.27.2",
          "kind": "patch",
          "published_at": "2026-01-29T01:25:15Z"
        },
        {
          "tag": "v0.27.1",
          "kind": "patch",
          "published_at": "2026-01-28T22:55:02Z"
        },
        {
          "tag": "v0.27.0",
          "kind": "minor",
          "published_at": "2026-01-28T01:44:28Z"
        },
        {
          "tag": "v0.26.1",
          "kind": "patch",
          "published_at": "2026-01-27T20:35:50Z"
        },
        {
          "tag": "v0.26.0",
          "kind": "minor",
          "published_at": "2026-01-27T18:05:55Z"
        },
        {
          "tag": "v0.25.1",
          "kind": "patch",
          "published_at": "2026-01-27T01:07:18Z"
        },
        {
          "tag": "v0.25.0",
          "kind": "minor",
          "published_at": "2026-01-26T23:00:42Z"
        },
        {
          "tag": "v0.24.0",
          "kind": "minor",
          "published_at": "2026-01-26T20:21:30Z"
        },
        {
          "tag": "v0.23.0",
          "kind": "minor",
          "published_at": "2026-01-26T19:59:57Z"
        },
        {
          "tag": "v0.21.2",
          "kind": "patch",
          "published_at": "2026-01-26T18:42:44Z"
        },
        {
          "tag": "v0.21.1",
          "kind": "patch",
          "published_at": "2026-01-26T18:30:54Z"
        },
        {
          "tag": "v0.21.0",
          "kind": "minor",
          "published_at": "2026-01-26T06:41:12Z"
        },
        {
          "tag": "v0.20.0",
          "kind": "minor",
          "published_at": "2026-01-25T04:08:57Z"
        },
        {
          "tag": "v0.19.0",
          "kind": "minor",
          "published_at": "2026-01-24T19:40:42Z"
        },
        {
          "tag": "v0.18.0",
          "kind": "minor",
          "published_at": "2026-01-24T03:16:55Z"
        },
        {
          "tag": "v0.17.0",
          "kind": "minor",
          "published_at": "2026-01-23T03:02:51Z"
        },
        {
          "tag": "v0.16.0",
          "kind": "minor",
          "published_at": "2026-01-22T19:57:39Z"
        },
        {
          "tag": "v0.14.0",
          "kind": "minor",
          "published_at": "2026-01-22T07:58:31Z"
        },
        {
          "tag": "v0.13.0",
          "kind": "minor",
          "published_at": "2026-01-22T06:35:34Z"
        },
        {
          "tag": "v0.12.0",
          "kind": "minor",
          "published_at": "2026-01-21T07:33:24Z"
        },
        {
          "tag": "v0.11.3",
          "kind": "patch",
          "published_at": "2026-01-21T00:48:16Z"
        },
        {
          "tag": "v0.11.2",
          "kind": "patch",
          "published_at": "2026-01-21T00:44:49Z"
        },
        {
          "tag": "v0.11.1",
          "kind": "patch",
          "published_at": "2026-01-21T00:40:58Z"
        },
        {
          "tag": "v0.11.0",
          "kind": "minor",
          "published_at": "2026-01-21T00:40:28Z"
        },
        {
          "tag": "v0.10.0",
          "kind": "minor",
          "published_at": "2026-01-20T04:57:01Z"
        },
        {
          "tag": "v0.9.0",
          "kind": "minor",
          "published_at": "2026-01-20T01:58:47Z"
        },
        {
          "tag": "v0.8.1",
          "kind": "patch",
          "published_at": "2026-01-17T03:47:56Z"
        },
        {
          "tag": "v0.8.0",
          "kind": "minor",
          "published_at": "2026-01-17T03:41:11Z"
        },
        {
          "tag": "v0.7.0",
          "kind": "minor",
          "published_at": "2026-01-17T03:21:14Z"
        },
        {
          "tag": "v0.6.7",
          "kind": "patch",
          "published_at": "2026-01-17T02:03:21Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "135db9d44ad5012d780eafc9b04b867000c35071",
          "body": "Recent-homes switcher (self-declaration on use, server-presented home\nidentity) + docs-native read-model memoization that fixes the large-home\nviewer hang. See CHANGELOG.\n\nAlso track CLAUDE.md (re-exports AGENTS.md for Claude Code).",
          "is_bot": false,
          "headline": "chore: bump versions (server 0.70.0, viewer 0.62.0)",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-20T19:03:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "869d582f6ef32bceff19512613af875c886d4264",
          "body": "The home selector lists global + every recent project from /api/homes\n(most-recent-first), with a two-line entry (label + display_path), a ✓ on the\nactive home, a hover forget (✕) wired to DELETE /api/homes/:root, and an\nempty-state hint. All display strings come from the server presenter; the\nclient no longer derives labels or collapses paths itself.\n\nSee docs/adr/0128.",
          "is_bot": false,
          "headline": "feat(viewer): recent-homes switcher — render server-presented homes",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-20T19:02:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "421ab3ea1fd7f3c1b9ea3fe90914cca83d3ef04a",
          "body": "A project home is remembered the first time an agent works against it (any\ncore op that resolves a project home — CLI in a repo, MCP bridge, or viewer\n?project_root), like `code .` adds a folder to VS Code recents. No directory\nscanning: the switcher reads a use-declared manifest.\n\n- RecentHomesStor\n[…]\n display_path,\n  so the client renders strings verbatim instead of doing path surgery. Home\n  provenance now projects root/documents_dir/label/display_path from the domain\n  model.\n\nSee docs/adr/0128.",
          "is_bot": false,
          "headline": "feat(homes): recent-homes registry — self-declaration on use",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-20T19:02:12Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2248e3f831097c9b3ad1a64d3cc8d0e8b0d14385",
          "body": "…s rescan\n\nDocsNativeFilesystemStorage re-read and re-parsed every markdown file from\ndisk on every read (get/list/counts/iterateEntities/getDocumentById), and\nResourceManager.list() did the same full discoverDocuments() scan. On a\n1,300+ doc home the /operations feed fanned that out per-id, saturat\n[…]\n Memoize ResourceManager.list() the same way, invalidated on the same seams.\n\nMarkdown stays authoritative — the cache is derived state that rebuilds from\ndisk on any invalidation.\n\nSee docs/adr/0127.",
          "is_bot": false,
          "headline": "perf(storage): memoize docs-native read model; kill per-request corpu…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-20T19:01:56Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d58ad769727be6581da25de15b02e319a3873443",
          "body": null,
          "is_bot": false,
          "headline": "docs: normalize engineering record spacing",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-19T16:17:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e58ef4f1b5f06e8a364ea4b47d737358a4dbe3a2",
          "body": null,
          "is_bot": false,
          "headline": "docs: link backlog-mcp transformation story",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-19T16:17:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3aa7557af25d80101030ce4a799e04a8fd44a979",
          "body": "…dings + cross-home) + ratify ADR 0126\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "chore: release 0.69.0 (recall done right: stemming/stop-words + embed…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-19T05:53:20Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "e961bd78d7887fac97e889903aa850cd5b9ea08f",
          "body": "…-force Map scan) + sharpen the scale tripwire\n\nVerified against v3.1.18 source (trees/vector.ts): Orama's vector search is a\nplain Map + brute-force cosine for-loop, no ANN, toJSON dumps every raw vector\n(the ~512MB ceiling / in-memory-rebuild root). This equalizes the sqlite-vec\ncomparison (also b\n[…]\nd to a\ndistinct higher tripwire whose target is LanceDB, not sqlite-vec.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(adr): 0126 — capture Orama's under-the-hood vector search (brute…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-19T05:45:26Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9c7d94a8f3556eacc6c8f244d4945ef9d3bde084",
          "body": "…a-done-right, sqlite-vec as designed fallback\n\nEvidence-based ruling on Goga's \"either Orama works properly or we explore\nalternatives.\" Two adversarially-verified research passes (competitor stacks;\nin-process alternatives) + the just-landed Orama fix. Findings: the \"they use\nDBs\" framing is large\n[…]\n as the pre-scoped fallback with four tripwires. Awaiting\nGoga's ruling.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(adr): 0126 — retrieval substrate ruling (Proposed): stay on Oram…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T23:49:03Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "072f667b21c39cfe137bf295286818761f7f8829",
          "body": "…pose deps) + CHANGELOG\n\nCodifies the invariant behind the tokenizer + embeddings fixes (goga-approved,\n2026-07-18): the core must behave identically for every consumer regardless of\nprocess lifetime, and must compose a dependency's real pipeline rather than\nhand-roll a parallel one. Evidence: the c\n[…]\nd-aid into the real\ntokenizer-compose fix and adds the embeddings entry.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs: NORTH-STAR Invariant 10 + ADR 0125 (consumer-agnostic core; com…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T23:45:14Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "242c62f66f08e09be05a429c229367d685e129b0",
          "body": "embeddingsReady is a per-process flag, only ever warmed by\nensureEmbeddings(). loadFromDisk()'s cached-embeddings fast path sets\nhasEmbeddingsInIndex from the persisted cache and returns without ever\ncalling ensureEmbeddings() (that call is skipped specifically because\nhasEmbeddingsInIndex is alread\n[…]\nthis embeddings backfill both require a\none-time reindex).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "fix(search): cold write paths lazily init embeddings, not a stale flag",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T23:37:16Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c7adcfd1ef52248e96f22ce37d05518471f79105",
          "body": "compoundWordTokenizer was a bare object with a `.tokenize` method, so\nOrama's create() took the \"already-a-Tokenizer\" branch and used it\nverbatim — createTokenizer() (stemmer + stopWords + normalizeToken) was\nnever invoked. No stop-word removal and no English stemming have ever\nbeen active in this i\n[…]\nich incidentally\nshifted an internal chunk's output path).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "fix(search): compose Orama's default tokenizer instead of replacing it",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T23:36:57Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d452b2a32827da6cd7563daea964a7d653152d61",
          "body": "…tative, source-verified at v3.1.18)\n\nCaptures why our custom compoundWordTokenizer silently dropped stop-words AND\nstemming: create.ts branch-3 uses any object with a .tokenize verbatim and\nnever calls createTokenizer(), so no stemmer/stopWords were ever active.\nSpecific deep-link citations (docs.o\n[…]\ndocs↔package inconsistencies. Two independent research passes converged.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(ref): REF-0016 — Orama v3 text-analysis pipeline & BM25 (authori…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T23:05:57Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9a719daf13d0f59911ae544bd26cfbeeaa5b0fc8",
          "body": "…ric-word overlap inflating grade-0 memories (R8)\n\nThe multi-term coordination re-ranker (applyCoordinationBonus) counted raw\nquery-term overlap with no stopword filtering, so a memory sharing only\nfunction words (\"what\", \"before\", \"a\", \"my\") with the query earned the same\ncoordination credit as one\n[…]\n745 → 0.8842, no regressions.\nRegression tests added to scoring.test.ts.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "fix(recall): discount stopwords in the coordination bonus — stop gene…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T20:33:58Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "12c5f9902fa710310a8cf231fed48f102d579a77",
          "body": "…1 R8)\n\nExtends scripts/search-eval.mjs to score recall-queries-v2.jsonl-style\nfixtures where each query names its own production home (\"global\" or\n\"project\") instead of sharing one --project-root corpus. Per-home recall\nqueries now build one real CLI runtime per distinct home via\ncreateCliRuntime (\n[…]\nll@k 1.0000 across 4 human-judged (gate-eligible) queries.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "feat(evaluation): per-home recall scoring in search-eval.mjs (ADR 012…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T20:23:13Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1706e1d106bc8665a87b55791e07d1c071727447",
          "body": "…sessor of record)\n\nCaptures the completed R8 judging (goga, assessor of record, human:goga\n2026-07-18): the graded sheet stays the human record; recall-queries-v2 +\nrecall-qrels-v2 are the machine gate the eval harness scores against, so any\nfuture ranker change is measured against Goga's ground tr\n[…]\ndgments are per-home; the data is correct and the\nharness must catch up.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(evaluation): R8 human qrels — Goga's graded recall judgments (as…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T18:14:06Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "39a85bbb26d53baa624454fdd5bf0d3bb5dba7d5",
          "body": "…ject (TASK-0006)\n\nrecall/search --home all came back \"No memories found\" from within a project\neven though each home queried alone had hits. Two compounding causes: the\nambient project discovered from cwd was excluded from the fan-out (no\n--project-root → selection undefined → global only), and the\n[…]\nand ran full\nvalidation (typecheck, memory/viewer/server suites, build).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "fix(cli): cross-home recall no longer returns empty from inside a pro…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T18:07:23Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b72098e783e4fcb8682e548b3be4b3c3221bcb07",
          "body": "…oposed)\n\nSalvaged from builder:boundary-decay (charter D2, Goga GO 2026-07-18), which\ncommitted this design before running out of credits mid-build. Lands the\nthree-class taxonomy DECISION only — AUTHORITATIVE (docs/committed config),\nDERIVED (index/caches, delete-safe), EVIDENCE (journal/telemetry\n[…]\nentionally dropped and gets written\nwhen the enforcement actually ships.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(adr): 0123 — authoritative/derived/evidence boundary (design, Pr…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T17:53:02Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7ba62f906aa857783c32b53779a5ec0f81d7bfa3",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(changelog): ADR 0122 Slice A under Unreleased",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T17:45:07Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "174f1dd3c29c0534374459fa683f6158c35d373b",
          "body": "…sertion)\n\nMode-independent class in the composition block: every active declarative\nsubstrate's definitionVersion is a positive integer with a complete frozen\nchain; a synthetic v2 fixture with complete history loads clean; the same\nfixture without history yields exactly the missing-version-history\ndiagnostic while the substrate still loads and validates writes.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "feat(suite): schema-evolution structural class (ADR 0122 R5, first as…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T17:44:05Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "ed6fd7f1a4c02a64f9cd97db916b132019f35228",
          "body": "…s (ADR 0122 Slice A)\n\nR1: the meta-schema accepts any positive-integer definitionVersion\n(previously z.literal(1)); the substrate-definition URN is unchanged.\nR2: a declaration at version N > 1 requires frozen history at\nsubstrates/history/<type>@<v>.json for every v in 1..N-1; each missing\nlink is\n[…]\ntions accept\nan optional permitted array, validated but entirely unused.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "feat(substrates): unpin definitionVersion + freeze-on-bump diagnostic…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T17:44:05Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "66e74665120fa89b2041fd4cd960039b35f2af33",
          "body": "…ons)\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs: CHANGELOG unreleased entry + checkpoint memory (legal-next-acti…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T16:33:02Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "20c1a48eb1ab26f840dbb5955e051873ef8b28f6",
          "body": "wakeup(operation=X) now carries focus.next — every transition the\nsubstrate's DECLARED workflow allows from the focal doc's current state,\ntransition names in declaration order, ' · '-joined (compiled-process\n2026-07, the 5% slice). Derived entirely from the existing declaration:\nzero new declaratio\n[…]\nd\n  the 3,072-byte ceiling holds with the ledger unchanged (2,987 bytes)\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "feat(wakeup): legal-next-actions line on the focal briefing",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T16:32:54Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f21688f3d29c51720254055abd1a3c42586c5474",
          "body": "…CLI link setup), by goga",
          "is_bot": false,
          "headline": "memory: MEMO-0009 — Goga's first hand-written project memory (global …",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T16:32:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ee3bf1a955f5555f588e03469a958472b4a21f1f",
          "body": "…, non-goals, phases; evidence: stale 0.62.0, takeover incident, organ fragility)",
          "is_bot": false,
          "headline": "docs: PROMPT 0016 verbatim + ADR 0124 resilient-daemon charter (R1-R7…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T16:27:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "adb2d5f446caa9921aae418ff1dae5dc29df8fca",
          "body": "…reely, truth stays legible, destruction test is the license) + It-IS reframed from 'convenience over files' to 'engine over legible truth' + resilient-daemon ledger row",
          "is_bot": false,
          "headline": "docs: PROMPT 0015 verbatim + NORTH-STAR Invariant 9 (engine absorbs f…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T16:25:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "49bdf86f6ad3b58788ef18005c0f48e57191ba4d",
          "body": "…eal recorded demand, live results attached",
          "is_bot": false,
          "headline": "docs(evaluation): R8 human judging sheet — four recall queries from r…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T16:20:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bc8e8a9d3a35e512781742a9823749211063c63c",
          "body": "… prep)",
          "is_bot": false,
          "headline": "docs: TASK-0006 — cross-home fused recall regression (found during R8…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T16:19:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "46ab8389b0cdeb89885d24ba26ab2a98539e0e7b",
          "body": "…agent-system compiler assessed against all three anchors; PARKED UNTIL PAIN with five unpark tripwires",
          "is_bot": false,
          "headline": "docs: PROMPT 0014 verbatim + compiled-process Part Two — declarative …",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T16:11:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fe71443a5ac5735e3ec93f50fdfa42fb779e12ca",
          "body": "…layers; compile gates never the run-loop; grants seam; E-PROC experiment)",
          "is_bot": false,
          "headline": "docs: PROMPT 0013 verbatim + compiled-process cross-validation (five …",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T16:08:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b82b58b1d5849fd3bc243f6e6c3237962cc64774",
          "body": "…with cross-validation addendum + living PRESSURE-LEDGER",
          "is_bot": false,
          "headline": "docs: PROMPT 0012 verbatim (full document) + pressure-map assessment …",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T16:06:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "47130215264c70ac46fe8db122cf05cccb4d477d",
          "body": null,
          "is_bot": false,
          "headline": "chore: bump versions (server 0.68.0, viewer 0.60.0)",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T16:00:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "daa63b6974fda6129d7aba52ecb2d831863ddcc4",
          "body": "… + uniform MCP 'as' + whitespace normalization + test hygiene (review 0001 HIGH-1/MEDIUM-1/LOW)\n\nImplemented by codex gpt-5.6-sol @ high in sandboxed worktree; committed by granite (sandbox could not write the linked worktree index). Evidence: .codex/logs/fix-identity-request-scope/report.md",
          "is_bot": false,
          "headline": "fix(identity): per-home rung resolution for request-selected runtimes…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T15:59:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d00585932db900e00f816be98f58bda2576a874d",
          "body": "…ed versions, frozen history, instance stamps, read-never-blocks, migrate-as-verb)",
          "is_bot": false,
          "headline": "docs: PROMPT 0011 verbatim + ADR 0122 substrate schema evolution (nam…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T15:58:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2903870ebe8cf13866bfdb1b003b542b1939d015",
          "body": "…-worktree memory-ID collision, lattice-class)",
          "is_bot": false,
          "headline": "docs: TASK-0004 (uncapped contradictions endpoint) + TASK-0005 (cross…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T07:39:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c84f0bac3eba9912851c263ef8e70e975ffb17f4",
          "body": "… two omission channels (MEMO-0006)\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "memory: builder:desk-hardening procedural lesson — bounded folds have…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T07:39:10Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "8dec569f04579c3c637ce9f6724bf664bb20a02b",
          "body": "…candidates leave (review 0001)\n\nThree Desk findings from the independent sol trunk review\n(docs/reviews/0001-sol-trunk-review-2026-07-18.md), fixed without touching\nthe seven-item output law, ranking, or the Desk's read-only posture.\n\nHIGH-2 composition bounds:\n- candidate .jsonl files: stat before\n[…]\npnpm -r test: memory 47, viewer 146, server 1341+2 skipped (was 1330+2).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "fix(desk): bound composition, host-independent determinism, reviewed …",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T07:39:00Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "22db8dc3a50f118e3571ad6a46dd6711e8cfd746",
          "body": "…-integrity finding)",
          "is_bot": false,
          "headline": "docs: TASK-0003 — search-demand packing parity gap (builder:telemetry…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T07:38:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c215e125d9052bdc2ce04c7d25c497352142f6ca",
          "body": "…d state via ALS; memfs rename infidelity (MEMO-0006)\n\nFinal telemetry-integrity commit. DONE: all three review 0001 telemetry\nMEDIUMs fixed with tests (packed-away recall hits, per-request HTTP\nsessions, 8 MiB sink rotation), CHANGELOG Fixed entry, live-verified\nagainst the real built server (two /\n[…]\nn green (memory 47, viewer 146,\nserver 1340+2 skipped), typecheck clean.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "memory: builder:telemetry-integrity procedural lesson — request-scope…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T07:37:37Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "fd37adc2b1568c922f32250c13d33d8573cafb89",
          "body": "…iting review 0001\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(changelog): Unreleased Fixed entry — telemetry integrity fixes c…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T07:36:11Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "de23f4176836a1a382057f3a98b07e7635ce8994",
          "body": "…efore append\n\nReview 0001 MEDIUM: retrieval-telemetry.jsonl grew forever — no\nrotation, retention, or size cap — so a long-lived server under steady\nsearch traffic could fill the disk, and the resulting ENOSPC would\nbreak authoritative writes far beyond telemetry.\n\nappendTelemetryLine (retrieval-te\n[…]\nure, runtime-level wiring past a real 8 MiB\nsink, and the 8 MiB default.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "fix(telemetry): bound the sink — rotate once to <name>.1 past 8 MiB b…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T07:33:52Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5d693ee924322af2a2158af239aa3705611d766c",
          "body": "Review 0001 MEDIUM: the telemetry session UUID was module-global and\nminted once per process, so every request through the stateless HTTP\ntransport — which constructs a fresh server per request — shared one\nsession for the detached server's whole lifetime, letting independent\nclients be falsely corr\n[…]\nover shared runtimes record\ndistinct sessions with unchanged line shape.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "fix(telemetry): stateless HTTP/MCP requests each mint their own session",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T07:29:49Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5e3aeafb106b272b1c66ebe9940696590613d2cc",
          "body": "…val, not the packed response\n\nReview 0001 MEDIUM: recordRecallDemand() partitioned the fused,\ntoken-packed final response per home, so a home whose hit was dropped\nby cross-home packing recorded ids: [] — a fabricated recall miss\ncorrupting the R6 mining trigger and promotion-lane evidence. Ids now\n[…]\nived behavior.\nRanking untouched (0121 R5); event line schema unchanged.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "fix(telemetry): per-home recall ids derive from the home's own retrie…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T07:27:40Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a15c9486788f9057a46f1c36cc126e03592a38ca",
          "body": "…MEDIUM, 1 LOW); HIGH-1 verified by granite",
          "is_bot": false,
          "headline": "docs(reviews): review 0001 — independent sol trunk review (2 HIGH, 6 …",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T07:18:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7608baf872fe0a6e4a853690d6036449c46024cc",
          "body": "…ompositions (MEMO-0005)\n\nFinal W2 commit. DONE: everything — implementation, 33 tests, docs,\nTASK-0001 done, rebase onto origin/main @ 002a13f, full validation green\n(memory 47, viewer 146, server 1330+2 skipped), first-person memory\nwritten at my own checkpoint via the stamped CLI.",
          "is_bot": false,
          "headline": "memory: engineer:lattice-w2 procedural lesson — two-filesystem test c…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T07:16:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f05a2fb5792ae084a26e15a54c4cd4ecb10abd42",
          "body": "…dence (CLI-stamped, MEMO-0004 auto-capture)\n\nDONE: implementation + tests + docs; live verification in this worktree\n(canonical title + exact stub observed, reverted clean); rebased onto\norigin/main @ 002a13f (completion memory renumbered MEMO-0003 → MEMO-0004\nto clear main's MEMO-0003).\nREMAINS: full validation on the rebased tip + first-person memory + final\nreport.",
          "is_bot": false,
          "headline": "docs(lattice-w2): CHANGELOG Unreleased entry; TASK-0001 done with evi…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T07:15:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bc038d3fd244905f87d43d9c6a50763303664c51",
          "body": "…, wire-budget absorption gate\n\nDONE: 33 new tests — git-law-freshness (19: real repo + 3 linked worktrees;\ndiverged/fresh/ahead/worktree-only/missing/ambiguous/cached-read/fail-open/\nsha256; grounding law facts; production-composition E2E at the MCP boundary\nwith byte-exact memfs mirrors), core-wak\n[…]\ns:1,decisions:3,operations:1}, 2962 ≤ 3072 bytes).\nIN PROGRESS: docs (CHANGELOG, TASK-0001) + rebase + memory + report.\nTotals: memory 47, viewer 146, server 1323+2 skipped — baseline +33, only added.",
          "is_bot": false,
          "headline": "test(lattice-w2): real-git probe/grounding/E2E suite, fold exact-text…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T07:15:12Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3309f5e141f595adb16e661cd273ffbe5836e3d6",
          "body": "…fold, wire doctrine\n\nDONE: W2 implementation — git-law-freshness probe (blob-hash detection, one\npinned canonical read, per-process cache), grounding law facts, fold serves\ncanonical vision title + exact one-line divergence stubs (vision.divergence,\nconstraints_divergence), CLI formatter lines, pro\n[…]\n class; at most ONE canonical read per\ncomposition, cached per process; hash comparison never textual diff;\nnon-worktree homes byte-identical (git-family e2e test now doubles as the\nfresh-case proof).",
          "is_bot": false,
          "headline": "feat(lattice-w2): canonical-fresh law disclosure — probe, grounding, …",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T07:15:12Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "002a13f1a3e79401dfbe79be6e55d5eb5601a2c1",
          "body": "… (builder:cli-context finding)",
          "is_bot": false,
          "headline": "docs: TASK-0002 — refs validation must derive from substrate registry…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T07:04:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b0a88d1210ad32a867fe9960119c4fe69175fcbf",
          "body": "…ration fix\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "memory: builder:cli-context procedural lesson from the F3 context-hyd…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T07:02:54Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "722bea5e3c111ebf7efd7644372f573815b99a9b",
          "body": "… 0010 F3)\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(changelog): Unreleased Fixed entry for CLI get --context (report…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T07:00:45Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "b360d9991c2ea780e6cef751d1af9f0218a9066a",
          "body": "…(report 0010 F3)\n\nThe CLI get now takes --context and renders the same relational stubs the\nMCP backlog_get path returns (same core getItems/composeContextStubs call),\nin the CLI's recall-style stub grammar. Both surfaces emit the Tier-1\nexpand event on the context path for entity-id items only; plain gets stay\nbyte-identical. Parity covered in cli-get-context.test.ts.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "feat(cli): get --context — the ADR 0114 neighborhood reaches the CLI …",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T07:00:45Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "4192f1667930c5fe4c8362f6ccac67c53c45fe1b",
          "body": "…eport 0010 F3)\n\nrecordExpand keeps the ADR 0092.9 R-14 strong-usage signal (overlay line +\ncounter bump) but no longer emits Tier-1 telemetry; the new\nrecordContextExpand emits the session/actor-stamped expand event for\nentity-id gets with context:true — granite's ruling: plain gets and\nresource-path gets are reads, not expansions. Ranking untouched.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "fix(telemetry): Tier-1 expand is the neighborhood act, not reading (r…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T07:00:45Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "b645c96a97d9fa53e50e0c4ec64cbb61ad49ec51",
          "body": "…absorption assessment (7 absorbed, T1/T2 chartered frozen-lane, 3 refused, positioning seed)",
          "is_bot": false,
          "headline": "docs: PROMPT 0010 verbatim + REF-0015 (Cerebras KB) + knowledge-base …",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T06:49:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "45ce99b4eea6938fdffff7140e839d0c858653b9",
          "body": "…lane) + TASK-0001 (Lattice W2), report 0010 (findings F1-F4), fix 0116 index/frontmatter drift the session caught",
          "is_bot": false,
          "headline": "docs: dogfood session 01 — first project memories (MEMO-0002 release …",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T02:34:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4dd98c61c10b530584b23c25b7767c039aede08a",
          "body": null,
          "is_bot": false,
          "headline": "chore: bump versions (server 0.67.0, viewer 0.59.0)",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T00:03:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f67338d85ea3fa869b6dd5248fa45a9445099e6f",
          "body": "…try build\n\nWritten via the built CLI (remember --layer procedural), attributed by\nthe ADR 0119.1 worktree stamp — no --as.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "memory: builder:telemetry-t1 procedural lesson from the Tier-1 teleme…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-18T00:02:09Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "b3e402f6a8f741b70c553f216d6a458de6cdbfe2",
          "body": "…probes\n\nTelemetry's actor resolution made the first ambientAgentIdentity() call\nin a vitest worker a REAL git probe, so the process-level rung cache\ncould carry the host repo's actual backlog.agent into tests that prove\nABSENT-identity behavior. The envActor test now seeds absent rungs\nexplicitly (\n[…]\nval-telemetry.jsonl sibling\n— still fully under the ignored state/ area.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "test(server): deterministic identity-ladder seeding around telemetry …",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T23:59:15Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8c7f342eccf01d7bac3ef1d23ec181019e3b6ea1",
          "body": "…ation README instrument note\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs: Tier-1 retrieval telemetry — CHANGELOG Unreleased entry + evalu…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T23:55:03Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "7dc971ae5d3252e5d922a663586018312b3fb248",
          "body": "…n, state-area\n\n16 new tests: session id stable per process + BACKLOG_SESSION override;\nrecall miss (ids: []) first-class with no overlay line; recall/search/\nexpand share one session; throwing sink or identity probe never\nsurfaces; project + global homes land events in <controlDir>/state/\nretrieval\n[…]\n Two\ncoordinator tests: per-home recall miss and per-home search demand.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "test(server): Tier-1 telemetry — session, misses, shared id, fail-ope…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T23:54:26Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "628d2dd8e71aab6569622f3733018eb2d9f01c9e",
          "body": "backlog_search (MCP + CLI) records returned ids through the tracker —\nids only, never query text (Tier 2 is gated separately). The cross-home\ncoordinator records per-home search demand and no longer skips\nzero-contribution homes on recall: a consulted home with no returned ids\nis the per-home recall\n[…]\ne\ndemand signal. Observation only — result shapes and ranking untouched.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "feat(server): search + cross-home telemetry hooks (ADR 0121 R7)",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T23:51:41Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "baf323a52ed71c8d81e16b048982342ae5245322",
          "body": "…ecall misses (ADR 0121 R7)\n\nNew memory/retrieval-telemetry.ts: one UUID session per process\n(BACKLOG_SESSION overrides), append-only {session, ts, event, ids, home,\nactor?} lines into <controlDir>/state/retrieval-telemetry.jsonl — the\nsame uncommitted state area as the usage overlay, never committe\n[…]\nail-open everywhere; overlay lines and retrieval\nresults byte-identical.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "feat(server): Tier-1 retrieval telemetry — session-stamped events + r…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T23:51:37Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1658d7cb9b445eb2fb97889d12c4b53428711292",
          "body": null,
          "is_bot": false,
          "headline": "chore: bump versions (server 0.66.0, viewer 0.58.0)",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T23:39:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "724d4037c7f2ebfbf7358243d73a476c5edaa8b5",
          "body": "Frontmatter only, as directed; rulings text untouched. Note: the\ndirected status wording predates R6 (added on main in 93cf2a3, protocol\nnot code) — R6 is likewise unchanged by this implementation.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(adr): 0119.1 status -> Implemented (builder, 2026-07-17)",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T23:38:13Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "6f23a5e0e556862ec9c36467abb14ce1f4d7b7a5",
          "body": "CHANGELOG gains the Unreleased Added entry (set identity once via\ngit config backlog.agent; the briefing discloses the winning rung).\nREADME Configuration gains the ladder section with the five set-once\ncommands, the R1 worktree-over-env rationale, and the R4 shared-checkout\nanti-pattern. The five C\n[…]\ne.\nSKILL.md mentions neither --as nor BACKLOG_AGENT — nothing to update.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs: teach the attribution ladder (CHANGELOG, README, --as help text)",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T23:38:13Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1c8c068f65da006409d7325536af623041e5ed8a",
          "body": "…act text\n\nReal repo + real linked worktree (git-family pattern), hermetic via\nGIT_CONFIG_GLOBAL/GIT_CONFIG_NOSYSTEM: all six rungs, the R1\nworktree-over-env inversion, the extension-absent gate (a stamp file\nwithout extensions.worktreeConfig never becomes rung 2 — git itself\nrefuses to read it), no\n[…]\nyte-identical\nabsent case, and the intact identity.md presence fallback.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "test(server): attribution-ladder precedence matrix + R2 disclosure ex…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T23:37:51Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1a1ec2567f7202748938c12b0736bd69424bee9a",
          "body": "The briefing's meta line names the winning rung, exactly:\nidentity: <resolved-display-or-raw> (<source>) with source one of --as /\nworktree config / env / checkout config / user config. Display reuses\nthe fail-open read-side attribution index (ADR 0119 R2/R3): declared\nvalues render as the Agent tit\n[…]\nent / identity: present), and the MCP briefing JSON gains\nno key at all.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "feat(server): wakeup meta discloses the identity source (ADR 0119.1 R2)",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T23:37:51Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ca19107d544ce8886618b0677700e2aea4653d89",
          "body": "… (ADR 0119.1)\n\nThe six-rung ladder as one core module: explicit --as/MCP-as ->\ngit worktree config (extensions.worktreeConfig-gated) -> BACKLOG_AGENT\nenv -> git local config -> git global config -> absent. Returns value +\nwinning rung for R2 disclosure. R1: the deliberate worktree stamp beats\nthe i\n[…]\nd git, empty values -> rung absent, output\nbyte-identical to pre-0119.1.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "feat(server): attribution ladder — implicit agent identity resolution…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T23:37:51Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "11cd47465454e23106c0689e3f3b72673254b9f8",
          "body": "…ubstrates), ADR index truth (0119.1/0120/0121 + shipped retags + Historical split), NORTH-STAR roadmap checkboxes, AGENTS.md 4-package truth, evaluation README title; retire docs/framework-adr pointer",
          "is_bot": false,
          "headline": "docs: freshness pass — README front door (Desk, operation=, shipped s…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T23:37:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bb51bf4f99446dfe17d3f01c9f55b1608c4c2d39",
          "body": null,
          "is_bot": false,
          "headline": "fix: carry imperfect legacy docs through migration",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T23:34:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "93cf2a301ee212ebb4df969d78ffe525ef3de4c6",
          "body": "…cope (goga's parallel-agent challenge)",
          "is_bot": false,
          "headline": "docs(adr): 0119.1 R6 — writers get worktrees; one writing actor per s…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T23:19:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "63eaf0f85a0418e3d5eb4e6d463298984b68377f",
          "body": "…tribution ladder)",
          "is_bot": false,
          "headline": "docs: PROMPT 0009 verbatim + ADR 0119.1 implicit identity capture (at…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T23:13:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "aa4b53b2a0a1784fd85c6d454c424a13780e99ae",
          "body": null,
          "is_bot": false,
          "headline": "chore: bump versions (server 0.65.0, viewer 0.57.0)",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T23:09:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "32c7d667caa6b28133c10cd31f80b0dfbf717109",
          "body": null,
          "is_bot": false,
          "headline": "docs(changelog): docs-native ID navigation fix under Unreleased",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T23:09:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "49bbce2e0f7ee1e084c79f120283b6c8380b8b03",
          "body": "…65 assertions, 25 failures\n\nSame-corpus before/after (sha 7c190d02dda3…, 229 documents, main code vs\nthis branch): 459 failures → 25.\n\n- navigation-id: 206 (bm25) + 224 (hybrid) → 0 + 0. Every entity now\n  resolves at rank 1 for BOTH forms of its own ID (space and hyphen).\n- navigation-title + memb\n[…]\nngle hit) in both modes. All\nnon-navigation per-class metrics identical.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(evaluation): structural suite rerun after ID-navigation fix — 24…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T23:07:12Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e695c6b7dc3dce87c6691eed11a4d7a12899d6d4",
          "body": "… zero-universe type-word fail-open\n\nTwo navigation plumbing bugs proved at corpus scale by the structural\ntruth suite (457 failures on main, dominated by navigation-id):\n\n1. The exact-ID fast path only knew built-in prefixes (TASK, EPIC, ...),\n   so docs-native display ids (\"ADR 0116\", \"REF-0004\", \n[…]\nRanking is untouched (ADR 0121 R5): no fusion, scoring, or decay change.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "fix(search): docs-native ID navigation — registry-derived ID intent +…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:59:24Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3f60365f0e954d7e667143006e194a4de92182a6",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(changelog): the Desk under Unreleased",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:51:08Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "8a2b09c3525535716ac5b44543a027d0ae5965b9",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "fix(desk): /desk redirect carries home selection through to the SPA",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:51:08Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a227fab8b55e75be0e72da9c6651bf458cf120c1",
          "body": "Core fold: per-class why-surfaced rules, budget=7 cap, worst-first band\nordering, honest per-class omission, determinism, worktree chip.\nEndpoint: /api/desk composition + provenance, degrade-without-readers,\n/desk chrome redirect. Grounding: frontmatter-over-git recency, lenient\nattention/author rea\n[…]\nrbatim\nrender, chips, copy-only affordances, fail-closed home selection.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "test(desk): fold rules, endpoint, grounding readers, viewer page",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:51:08Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "10bfc6dda97721a268703edae2d80a18362c1b6d",
          "body": "…(V1)\n\nThe Desk (attention-viewer proposal, PROMPT 0007): one deterministic,\ntransport-free core fold (core/desk.ts) composes JUDGE/REVIEW/READ/HEALTH\nfrom store state — ≤7 items total, worst-first across classes via declared\nseverity bands, per-class honest omission, why-surfaced sentence and a\ncop\n[…]\no the SPA),\nread-only, home-scoped, matching the existing design system.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "feat(desk): server desk fold + /api/desk endpoint + viewer Desk page …",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:51:08Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2ae33054b809fe72f19b823079e0e91e4d7b1901",
          "body": "One memory, one home, fused reads: reads always fuse with provenance chips\n(0112 D made default), writes follow a nine-word rubric line (git ownership\nis the only real decision), 'meant for both' becomes usage-driven promotion\nwith provenance (cherry-pick for memories), identity is attribution and a\n[…]\nor art at verification\nlevels; signal-per-token audit: zero added turns.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs: PROMPT 0008 verbatim + memory placement dissolution proposal",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:51:08Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2aa059a7b1787d010dae61e75ee774c9a24a06cc",
          "body": "…n (457 failures, -3)\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs: changelog for rubric pair + wire ceiling; post-merge suite reru…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:45:34Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "3ddc9fc9548193e4f147951f28991d65a87ffb6a",
          "body": "The client owns the hooks (0117/0118.1 law). SessionStart mounts the\nbriefing via the verified additionalContext contract (matcher covers\nstartup|resume|clear|compact, --max-knowledge 0 load-bearing, fail-open).\nSessionEnd/PreCompact cannot deliver text to the model in Claude Code —\nthe remember rub\n[…]\nwhich is what\nPROMPT 0006's first-person-at-checkpoint law wants anyway.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs: Claude Code session-hook recipe for the memory protocol",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:43:22Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8d8f00e61ac4ac4e83b33862559038d58150d075",
          "body": "… ceiling\n\nADR 0118.1 Slice A + memory-flywheel F1:\n- MEMORY_PROTOCOL rides every briefing once, as its final block:\n  recall rubric (session-start, ~55 tokens) + remember rubric\n  (session-end twin: the three capture triggers + PROMPT 0006's\n  first-person law). Non-droppable under the ceiling.\n- H\n[…]\nflood 3,066 B ·\ncold-open 2,173 B · amnesia 1,557/1,596 B — all ≤ 3,072.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "feat(server): the rubric pair — memory protocol in wakeup + hard wire…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:43:22Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e2813d2690fb4239603b4e82222a211e31a97d09",
          "body": "…tions, 460 failures\n\nSame failure classes as the first run at proportional scale (corpus grew\n222→+ docs through today's merges): docs-native ID navigation broken at\ncorpus scale, hybrid taxes exact-ID lookup, intent-parser eats one title.\nDemonstrates the regenerate-per-run drift-proof property live.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(evaluation): structural suite rerun on current main — 2445 asser…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:43:21Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "6031f91e91a14650842e3e5d29019afcac810d24",
          "body": "…ailures\n\nFirst run against the real corpus (222 documents: 143 adr, 5 prompt,\n14 reference entities + 60 resources; corpus 4b00540ce136…, both BM25\nand hybrid modes; byte-identical across two full runs).\n\nWhat holds by construction:\n- wakeup-reconciliation PASSES: 45 eligible decisions, 45 disclose\n[…]\n0096) but\n  shares no title tokens, so ordering is skipped and recorded.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(eval): first structural truth suite run — 2399 assertions, 450 f…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:41:11Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "dd1e6805471ee38af2b9931f3a65e8717afd3dc8",
          "body": "Lenient reads keep whatever YAML yields; ADR 0097 declares\nsupersedes: 0096-cron-entity-type.md as a scalar. A hand-written scalar\nis still a declaration of record — normalize to a one-element list so\nthe supersedes classes see it.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "fix(eval): accept scalar frontmatter supersedes declarations",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:41:11Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "28313199b9c1aa71173eac24a4097750772dace5",
          "body": "…gate\n\nADR 0121 R9, with R4's truthful re-marking:\n\n- JUDGING.md gains the constructively-true assessor tier\n  (constructive:<generator> — truth by construction, no reviewer exists\n  to disagree) alongside human:<name> and llm:<agent-or-model>, plus the\n  note that the assessor role is adjudication,\n[…]\nllm: tier (24 queries, 235 qrels), preserving the\n  append-only history.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "fix(eval): R9 honesty repairs — assessor tiers replace the substring …",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:41:11Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "17d43bb5279d83d6052959f6c694a69327bec59d",
          "body": "One generator walks the real project corpus at run time and emits\njudge-free, constructively-true assertions, regenerated every run:\n\n- navigation-title / membership-title: every document's title as a query;\n  the document is the sole grade-3 target by construction (top-10 nav\n  window, top-20 membe\n[…]\n by\nconstruction: no timestamps, no timings, stable ordering everywhere.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "feat(eval): structural truth suite generator (ADR 0121 R2)",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:41:11Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "37b460c284a27a7d06f445c4156b4073ff7e57df",
          "body": "Unquoted, YAML treats \" #7)\" as a comment start and truncates the value;\nquoting preserves \"awaiting zombie-sweep ruling (report 0009 #7)\" exactly\nfor YAML-aware readers. Verified with js-yaml.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(adr): quote the attention frontmatter values for YAML cleanliness",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:38:07Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "912a405c573aa9ddf6bdc6bacbf0b8c5938be927",
          "body": "…re note\n\n- Report 0009 (the judgment-queue probe) enters the tree with an appended\n  \"Reconciliation applied\" section: 12 flipped with evidence, 3 recorded\n  dispositions, 5 BUG ledgers, 4 NORTH-STAR rows, 7 zombies annotated,\n  and the genuinely-open remainder listed.\n- Report 0005 (owner's briefi\n[…]\nows 3/7/8/9 recorded as still open. The historical\n  table is untouched.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(reports): probe 0009 reconciliation ledger + briefing 0005 closu…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:38:07Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "30f1b154987327d68fa25eb4af9744537ba8e756",
          "body": "Context tools (0114, shipped 0.59.0), storage layout and docs home (0112\nfamily, 0.60.0-0.61.0), and ADR modeling (0113 Phases A-C) drifted: the\nwork shipped while the table still said open. Each row now carries its\nrelease evidence. The NAME row and the history/truth (0107 vs 0112) row\nare preserved as genuinely open - only table rows edited.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(north-star): mark the four shipped Open-decisions rows resolved",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:38:07Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "7c33b95fc4883b0fc7de3217ee6ea08b04542df2",
          "body": "BUG-0001/0002/0004/0005 -> Fixed (0.64.0) with rerun citations (reports\n0006/0007/0008, CHANGELOG 0.64.0). BUG-0003 stays Open with an in-flight\nnote (retrieval defect batch) - it is still a known issue in 0.64.0.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(reports): reconcile EXP-1 BUG ledgers with the 0.64.0 reruns",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:38:07Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "b4509b5db7df0628b989f66802a6e4be5665b825",
          "body": "Seven pre-uplift ADRs (0009, 0018, 0021, 0037, 0083, 0084, 0097.1) whose\nreport-0003 citations are partial (phase-only, quarantine-posture, or\nGARDEN-classified) get a machine-findable attention line instead of a\nmanufactured disposition. Statuses untouched; the ruling stays human.\nNotably 0083: ADR\n[…]\nplemented; cross-encoder proposal remains conditional\" - not superseded.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(adr): annotate zombies awaiting the sweep ruling (report 0009 #7)",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:38:07Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a3e18ff7c13ae36d1029df848fc6f191486492dc",
          "body": "….7, 0101)\n\n- 0036 pruning system: Superseded per report 0003 D10 (0092.x memory\n  architecture; decay reborn as 0092.12 ripeness; docs-native pivot 0112).\n- 0013.7 hosting Open Tension: resolved by ADR 0104's explicit text\n  (\"resolved in favor of neither: local is primary\"), per D14.\n- 0101 Phase \n[…]\n  engineering record documents the ID short-circuit), per 0003 appendix.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(adr): record dispositions report 0003 already proved (0036, 0013…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:38:07Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "176d18fd6dcfb7a613f9c9d4cd37bcc41b218cf8",
          "body": "…0.64.0)\n\nThe charter shipped in 0.64.0 and all three acceptance reruns ran\n2026-07-17; the status line now records the measured numbers, including\nthe honest aime shortfall (3.0/5 vs the 4/5 bar - the declared zero-setup\nboundary), per reports 0006/0007/0008 and the CHANGELOG.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(proposals): wakeup-first-impression — implemented and measured (…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:38:07Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "919971093fc4ee008484462f2dd9db370071bcc8",
          "body": "Eleven ADRs whose work shipped (CHANGELOG 0.59.0-0.62.0, 2026-07-16, plus\nthe 0092.x engineering records) but whose ledgers still said Proposed:\n0092.3, 0106, 0106.5, 0112, 0112.1-0112.4, 0113, 0114, 0115. Each new\nstatus carries its release/record citation inline. Records reality only -\nno dispositions manufactured (report 0009, drift item #3).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(adr): reconcile executed-but-Proposed statuses with ship evidence",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:38:07Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "8d72374dfc496668203f8302984256887f114bab",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(changelog): remove conflict artifact from 0119-A rebase resolution",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:35:18Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f3cb6353c9afd2ecf971b142d1123d5706477dba",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "docs(changelog): record ADR 0119 Slice A under Unreleased",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:34:46Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a16d92f9b1fa64a944cf365a064a91f4b0d3a128",
          "body": "…ce rendering\n\nThe R8 fixture declares the agent substrate as a project declaration and\nproves: compile + claim of the real nine-agent fleet roster, search via\nthe declared projection, attribution round-trip (write as AGENT-0001 /\naime:beryl / MCP as-field -> journal actor + \"by <title>\" rendering),\n[…]\no the new\nwithAgentIdentity export stays live under the stubbed runners.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VYipkzAmWVocZxWZKY4pBw",
          "is_bot": false,
          "headline": "test(server): nine-agent fixture (0119 R8) + --as wiring and provenan…",
          "author_name": "Goga Koreli",
          "author_login": "gkoreli",
          "committed_at": "2026-07-17T22:34:27Z",
          "body_truncated": true,
          "is_coding_agent": true
        }
      ],
      "releases_count": 92,
      "commits_last_year": 920,
      "latest_release_at": "2026-07-20T19:05:19Z",
      "latest_release_tag": "v0.70.0",
      "releases_from_tags": false,
      "days_since_last_push": 6,
      "active_weeks_last_year": 26,
      "days_since_latest_release": 6,
      "mean_days_between_releases": 0.4
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 42,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "backlog-mcp",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "mcp",
            "model-context-protocol",
            "claude",
            "anthropic",
            "ai",
            "llm",
            "agent-memory",
            "memory",
            "context-engineering",
            "substrates",
            "progressive-disclosure",
            "local-first",
            "markdown",
            "backlog",
            "task-management",
            "claude-code"
          ],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/backlog-mcp",
          "is_deprecated": false,
          "latest_version": "0.70.0",
          "repository_url": "https://github.com/gkoreli/backlog-mcp",
          "versions_count": 91,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 2363,
          "first_published_at": "2025-12-27T07:10:15.214000Z",
          "latest_published_at": "2026-07-20T19:05:26.448000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 6
        }
      ]
    },
    "popularity": {
      "forks": 2,
      "stars": 5,
      "watchers": 0,
      "fork_history": {
        "days": [
          {
            "date": "2026-01-23",
            "count": 1
          },
          {
            "date": "2026-04-15",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 2,
        "total_forks": 2
      },
      "star_history": null,
      "open_issues_and_prs": 0
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": true,
      "bootstrap_files": [
        ".mise.toml"
      ],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [
        "packages/memory/tsconfig.json",
        "packages/server/tsconfig.json",
        "packages/shared/tsconfig.json",
        "packages/viewer/tsconfig.json",
        "tsconfig.json"
      ],
      "toolchain_manifests": [],
      "largest_source_bytes": 56219,
      "source_files_sampled": 423,
      "oversized_source_files": 0,
      "agent_instruction_files": [
        ".agents/skills/backlog-ui-framework/AGENTS.md",
        "AGENTS.md",
        "CLAUDE.md"
      ],
      "agent_instruction_max_bytes": 33296
    },
    "dependencies": {
      "manifests": [
        "package.json"
      ],
      "advisories": {
        "error": null,
        "scope": "published_package",
        "source": "osv",
        "findings": [
          {
            "name": "sharp",
            "direct": false,
            "version": "0.34.5",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.3,
            "advisory_ids": [
              "GHSA-f88m-g3jw-g9cj"
            ],
            "fixed_version": "0.35.0",
            "advisory_count": 1,
            "oldest_advisory_days": 5
          },
          {
            "name": "@hono/node-server",
            "direct": true,
            "version": "1.19.15",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.9,
            "advisory_ids": [
              "GHSA-frvp-7c67-39w9"
            ],
            "fixed_version": "2.0.5",
            "advisory_count": 1,
            "oldest_advisory_days": 5
          }
        ],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {
          "high": 1,
          "moderate": 1
        },
        "advisory_count": 2,
        "affected_count": 2,
        "assessed_count": 248,
        "malicious_count": 0,
        "assessed_package": "npm:backlog-mcp@0.70.0",
        "unassessed_count": 0,
        "direct_affected_count": 1
      },
      "ecosystems": [
        "npm"
      ],
      "dependencies": [
        {
          "name": "@backlog-mcp/shared",
          "manifest": "packages/memory/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@orama/orama",
          "manifest": "packages/memory/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.1.18"
        },
        {
          "name": "@orama/stopwords",
          "manifest": "packages/memory/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.1.18"
        },
        {
          "name": "@huggingface/transformers",
          "manifest": "packages/memory/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.8.1"
        },
        {
          "name": "@hono/node-server",
          "manifest": "packages/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.14.0"
        },
        {
          "name": "@huggingface/transformers",
          "manifest": "packages/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.8.1"
        },
        {
          "name": "@modelcontextprotocol/sdk",
          "manifest": "packages/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.25.1"
        },
        {
          "name": "@orama/orama",
          "manifest": "packages/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.1.18"
        },
        {
          "name": "@orama/stopwords",
          "manifest": "packages/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.1.18"
        },
        {
          "name": "@parcel/watcher",
          "manifest": "packages/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "2.5.6"
        },
        {
          "name": "ajv",
          "manifest": "packages/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^8.17.1"
        },
        {
          "name": "arctic",
          "manifest": "packages/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.0.0"
        },
        {
          "name": "commander",
          "manifest": "packages/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^14.0.3"
        },
        {
          "name": "gray-matter",
          "manifest": "packages/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.0.3"
        },
        {
          "name": "hono",
          "manifest": "packages/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.7.0"
        },
        {
          "name": "mcp-remote",
          "manifest": "packages/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.1.37"
        },
        {
          "name": "zod",
          "manifest": "packages/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.3.5"
        },
        {
          "name": "zod",
          "manifest": "packages/shared/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.3.5"
        },
        {
          "name": "@backlog-mcp/shared",
          "manifest": "packages/viewer/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@nisli/core",
          "manifest": "packages/viewer/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.54.0"
        },
        {
          "name": "@orama/highlight",
          "manifest": "packages/viewer/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.1.9"
        },
        {
          "name": "@shikijs/engine-javascript",
          "manifest": "packages/viewer/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.2.0"
        },
        {
          "name": "@shikijs/langs",
          "manifest": "packages/viewer/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.2.0"
        },
        {
          "name": "@shikijs/themes",
          "manifest": "packages/viewer/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.2.0"
        },
        {
          "name": "diff",
          "manifest": "packages/viewer/package.json",
          "ecosystem": "npm",
          "version_constraint": "^9.0.0"
        },
        {
          "name": "dompurify",
          "manifest": "packages/viewer/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.3.1"
        },
        {
          "name": "marked",
          "manifest": "packages/viewer/package.json",
          "ecosystem": "npm",
          "version_constraint": "^17.0.1"
        },
        {
          "name": "marked-shiki",
          "manifest": "packages/viewer/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.2.1"
        },
        {
          "name": "mermaid",
          "manifest": "packages/viewer/package.json",
          "ecosystem": "npm",
          "version_constraint": "^11.12.3"
        },
        {
          "name": "shiki",
          "manifest": "packages/viewer/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.2.0"
        }
      ],
      "all_dependencies": {
        "error": "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
        "source": null,
        "packages": [],
        "collected": false,
        "truncated": false,
        "total_count": null,
        "direct_count": null,
        "indirect_count": null
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 0,
        "merged_prs": 109,
        "open_issues": 0,
        "closed_ratio": null,
        "closed_issues": 0,
        "closed_unmerged_prs": 9
      },
      "bus_factor": 1,
      "bot_contributors": 0,
      "top_contributors": [
        {
          "type": "User",
          "login": "gkoreli",
          "commits": 595,
          "avatar_url": "https://avatars.githubusercontent.com/u/243085293?v=4"
        },
        {
          "type": "User",
          "login": "gogakoreli",
          "commits": 266,
          "avatar_url": "https://avatars.githubusercontent.com/u/12997449?v=4"
        },
        {
          "type": "User",
          "login": "claude",
          "commits": 59,
          "avatar_url": "https://avatars.githubusercontent.com/u/81847?v=4"
        }
      ],
      "contributors_sampled": 3,
      "top_contributor_share": 0.647
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "auto-tag.yml",
        "ci.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [],
      "has_editorconfig": false,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "pnpm-lock.yaml"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 0,
            "reason": "branch protection not enabled on development/release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 10,
            "reason": "1 out of 1 merged PRs checked by a CI test -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 0,
            "reason": "Found 0/29 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 3,
            "reason": "project has 1 contributing companies or organizations -- score normalized to 3",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 0,
            "reason": "no update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": 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": 0,
            "reason": "121 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "135db9d44ad5012d780eafc9b04b867000c35071",
        "ran_at": "2026-07-27T10:29:36Z",
        "aggregate_score": 3.7,
        "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-20T19:05:30Z",
      "oldest_open_prs": [],
      "last_merged_pr_at": "2026-07-19T16:17:51Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/gkoreli/backlog-mcp",
    "host": "github.com",
    "name": "backlog-mcp",
    "owner": "gkoreli"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 60,
      "inputs": {
        "security": 43,
        "vitality": 89,
        "community": 36,
        "governance": 49,
        "engineering": 77
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "excellent",
        "name": "Vitality",
        "value": 89,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "good",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 82,
            "inputs": {
              "commits_last_year": 920,
              "human_commit_share": 1,
              "days_since_last_push": 6,
              "active_weeks_last_year": 26
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 6 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 6
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "26/52 weeks with commits",
                "points": 18,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 26
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "920 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 920
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "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": 92,
              "latest_release_tag": "v0.70.0",
              "releases_from_tags": false,
              "days_since_latest_release": 6,
              "mean_days_between_releases": 0.4
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "92 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 92
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 6 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 6
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~0.4 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 0.4
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "maintained",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": null,
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": 6,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 6 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 6
                    }
                  }
                ],
                "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": 36,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "critical",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 10,
            "inputs": {
              "forks": 2,
              "stars": 5,
              "watchers": 0,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "5 stars",
                "points": 9.8,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 5
                    }
                  }
                ],
                "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": "moderate",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 50,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (MIT)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "MIT"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          },
          {
            "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": 56,
            "inputs": {
              "packages": [
                "backlog-mcp"
              ],
              "dependents": null,
              "ecosystems": "npm",
              "total_downloads": null,
              "monthly_downloads": 2363
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "2,363 downloads/month across npm",
                "points": 45,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 2363,
                      "ecosystems": "npm"
                    }
                  }
                ],
                "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": "at_risk",
        "name": "Sustainability & Governance",
        "value": 49,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 24,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 3,
              "top_contributor_share": 0.647
            },
            "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 65% of commits",
                "points": 7.9,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 65
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "3 contributors",
                "points": 4.1,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 3
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 1 contributing companies or organizations -- score normalized to 3",
                "points": 3,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "moderate",
            "name": "Issue & PR responsiveness",
            "note": "Excluded from scoring (no data or not applicable): Issue resolution. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "issue_resolution"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 66,
            "inputs": {
              "merged_prs": 109,
              "open_issues": 0,
              "closed_issues": 0,
              "issue_closed_ratio": null,
              "closed_unmerged_prs": 9
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "no issues or no data",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_issues_or_data",
                    "params": {}
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "109/118 decided PRs merged",
                "points": 35.3,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 109,
                      "decided": 118
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/29 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "critical",
            "name": "Ownership & stewardship",
            "note": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "verified_domain"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 21,
            "inputs": {
              "followers": 0,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "gkoreli",
              "public_repos": 5,
              "account_age_days": 259
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "personal (user) account",
                "points": 10,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_personal",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": "not applicable to user accounts",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_applicable_to_user_accounts",
                    "params": {}
                  }
                ],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "0 followers of gkoreli",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 0,
                      "login": "gkoreli"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "5 public repos, account ~0 yr old",
                "points": 7.1,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 5
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 0
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "backlog-mcp"
              ],
              "ecosystems": "npm",
              "any_deprecated": false,
              "min_days_since_publish": 6
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "1 package(s) on npm",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 1,
                      "ecosystems": "npm"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 6 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 6
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "91 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 91
                    }
                  }
                ],
                "max_points": 20
              },
              {
                "key": "not_deprecated",
                "name": "Not deprecated",
                "detail": "active, not deprecated or yanked",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "package_not_deprecated",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "good",
        "name": "Engineering Quality",
        "value": 77,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "moderate",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 68,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "2 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "1 out of 1 merged PRs checked by a CI test -- score normalized to 10",
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "excellent",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "topics": [
                "ai",
                "anthropic",
                "claude",
                "llm",
                "mcp",
                "model-context-protocol",
                "task-management"
              ],
              "has_wiki": false,
              "homepage": "https://gkoreli.com/one-hundred-pull-requests",
              "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": "https://gkoreli.com/one-hundred-pull-requests",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": "7 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 7
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "at_risk",
        "name": "Security",
        "value": 43,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 37,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 17,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 1,
              "scorecard_aggregate": 3.7
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection not enabled on development/release branches",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "1 out of 1 merged PRs checked by a CI test -- score normalized to 10",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 0/29 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 1 contributing companies or organizations -- score normalized to 3",
                "points": 0.8,
                "status": "partial",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "no update tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow 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": "121 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "moderate",
            "name": "Dependency advisories",
            "note": "Matched the npm:backlog-mcp@0.70.0 runtime dependency closure — what installing the published package pulls in — 248 packages. Reachability is not analyzed.",
            "notes": [
              {
                "code": "advisories_scope_published",
                "params": {
                  "package": "npm:backlog-mcp@0.70.0",
                  "assessed": 248
                }
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 69,
            "inputs": {
              "source": "osv",
              "advisories": 2,
              "affected_packages": 2,
              "assessed_packages": 248,
              "unassessed_packages": 0,
              "affected_by_severity": "high 1, moderate 1",
              "direct_affected_packages": 1
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "1 affected: @hono/node-server 1.19.15 (moderate 5.9)",
                "points": 18.5,
                "status": "partial",
                "details": [
                  {
                    "code": "advisories_affected",
                    "params": {
                      "count": 1,
                      "packages": "@hono/node-server 1.19.15 (moderate 5.9)"
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "indirect_dependencies_free_of_known_advisories",
                "name": "Indirect dependencies free of known advisories",
                "detail": "1 affected: sharp 0.34.5 (high 7.3)",
                "points": 10.4,
                "status": "partial",
                "details": [
                  {
                    "code": "advisories_affected",
                    "params": {
                      "count": 1,
                      "packages": "sharp 0.34.5 (high 7.3)"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "no advisory has been public longer than 90 days",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "advisories_none_stale",
                    "params": {
                      "days": 90
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "malicious_dependencies",
            "band": "excellent",
            "name": "Malicious dependencies",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "source": "osv",
              "meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
              "packages": [],
              "red_flag": false,
              "assessed_packages": 248,
              "malicious_packages": 0,
              "direct_malicious_packages": 0,
              "withdrawn_malicious_packages": 0,
              "installable_malicious_packages": 0
            },
            "components": [
              {
                "key": "no_dependency_reported_as_a_malicious_package",
                "name": "No dependency reported as a malicious package",
                "detail": "no dependency is reported as a malicious package",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "no_malicious_dependencies",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "good",
        "name": "AI Readiness",
        "value": 72,
        "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": [
                ".agents/skills/backlog-ui-framework/AGENTS.md",
                "AGENTS.md",
                "CLAUDE.md"
              ],
              "agent_instruction_max_bytes": 33296
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": ".agents/skills/backlog-ui-framework/AGENTS.md, AGENTS.md, CLAUDE.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".agents/skills/backlog-ui-framework/AGENTS.md, AGENTS.md, CLAUDE.md"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "100 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 100,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "good",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 71,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "pnpm-lock.yaml"
              ],
              "has_dockerfile": false,
              "typed_language": true,
              "bootstrap_files": [
                ".mise.toml"
              ],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [
                "packages/memory/tsconfig.json",
                "packages/server/tsconfig.json",
                "packages/shared/tsconfig.json",
                "packages/viewer/tsconfig.json",
                "tsconfig.json"
              ],
              "agent_commit_share": 0.65,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": ".mise.toml",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".mise.toml"
                    }
                  }
                ],
                "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": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "packages/memory/tsconfig.json, packages/server/tsconfig.json, packages/shared/tsconfig.json, packages/viewer/tsconfig.json, tsconfig.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "packages/memory/tsconfig.json, packages/server/tsconfig.json, packages/shared/tsconfig.json, packages/viewer/tsconfig.json, 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": "65 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 65,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "no automated dependency updates observed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_dependency_automation",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "primary_language": "TypeScript",
              "largest_source_bytes": 56219,
              "source_files_sampled": 423,
              "oversized_source_files": 0
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "TypeScript (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "TypeScript"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "0/423 source files over 60KB",
                "points": 55,
                "status": "met",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 423,
                      "oversized": 0
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "critical",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 20,
            "inputs": {
              "example_dirs": [],
              "has_mcp_signal": true,
              "api_schema_files": []
            },
            "components": [
              {
                "key": "api_schema_openapi_graphql_proto",
                "name": "API schema (OpenAPI/GraphQL/proto)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 40
              },
              {
                "key": "mcp_server",
                "name": "MCP server",
                "detail": null,
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 40
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
    "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-27T10:29:45.479776Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/g/gkoreli/backlog-mcp.svg",
  "full_name": "gkoreli/backlog-mcp",
  "license_state": "standard",
  "license_spdx": "MIT"
}

Scores are signals, not warranties. They reflect publicly visible practices on GitHub — not a code audit, and not a security guarantee.

Missing data is excluded and weights renormalized, never scored as zero. Methodology is versioned and open: metrics v1.13.0, schema v0.27.0 — full methodology · metrics wiki.

How one result sits in the wider record: aggregate statisticsnpm.