Public record
Software health reportschema 0.27.0 · metrics 1.13.0 · 2026-07-23 02:09 UTC

silverstein / minutes

Every meeting, every idea, every voice note — searchable by your AI. Open-source, privacy-first conversation memory layer.

RustMIT★ 1,372 stars⑂ 143 forkssince Mar 2026View on GitHub ↗

silverstein/minutes holds a health index of 69 out of 100, placing it in the Moderate band. It scores highest on Vitality (85/100) and lowest on Security (43/100). It was last updated today. A single contributor accounts for most of its recent work.

69
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.

69
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

Mat SilversteinPersonal account
177 followers25 public repossince Jun 2013Business Vacation

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?

85Excellent · 22% of overall
How it's scored
36/36Push recency — last push 0 days ago
13.2/36Commit cadence — 19/52 weeks with commits
18/18Commit volume — 1,297 commits in the last year
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 29 issue activity found in the last 90 days -- score normalized to 10
Inputs used
commits_last_year1,297
human_commit_share1
days_since_last_push0
active_weeks_last_year19
How it's scored
27/27Ships releases — 70 releases published
36/36Release recency — latest release 5 days ago
27/27Release cadence — a release every ~3.9 days
8/10OpenSSF Scorecard: Signed-Releases — 5 out of the last 5 releases have a total of 5 signed artifacts.
Inputs used
releases_count70
latest_release_tagv0.22.1
releases_from_tagsno
days_since_latest_release5
mean_days_between_releases3.9

Community & Adoption

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

68Moderate · 18% of overall
How it's scored
50.9/60Stars — 1,372 stars
17.9/25Forks — 143 forks
0/15Watchers — 2 watchers
Inputs used
forks143
stars1,372
watchers2
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
How it's scored
22.5/22.5README
22.5/22.5License — recognized license (MIT)
18/18CONTRIBUTING guide
0/13.5Code of conduct
0/7.2Issue template
0/6.3PR template
Inputs used
has_readmeyes
has_licenseyes
has_contributingyes
has_issue_templateno
has_code_of_conductno
has_pull_request_templateno
How it's scored
49.7/80Monthly downloads — 5,342 downloads/month across crates, npm
0/20Registry dependents — not reported by this ecosystem
Inputs used
packagesminutes-cli, minutes-core, minutes-mcp, minutes-sdk, whisper-guard
dependents
ecosystemscrates, npm
total_downloads3,899
monthly_downloads5,342
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?

64Moderate · 24% of overall
How it's scored
9/54Bus factor — 1 contributor(s) cover half of all commits
1.4/22.5Commit distribution — top contributor authored 94% of commits
13.5/13.5Contributor breadth — 23 contributors
10/10OpenSSF Scorecard: Contributors — project has 4 contributing companies or organizations
Inputs used
bus_factor1
contributors_sampled23
top_contributor_share0.94
How it's scored
38.1/46.8Issue resolution — 81% of issues closed
35.1/38.3PR acceptance — 309/337 decided PRs merged
0/15OpenSSF Scorecard: Code-Review — Found 1/30 approved changesets -- score normalized to 0
Inputs used
merged_prs309
open_issues31
closed_issues136
issue_closed_ratio0.814
closed_unmerged_prs28
How it's scored
10/30Ownership backing — personal (user) account
0/20Verified domain — not applicable to user accounts
16.2/25Owner reach — 177 followers of silverstein
22.3/25Track record — 25 public repos, account ~13 yr old
Inputs used
followers177
owner_typeUser
is_verified
owner_loginsilverstein
public_repos25
account_age_days4,774
Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.
How it's scored
25/25Published & resolvable — 5 package(s) on crates, npm
35/35Publish recency — latest publish 5 days ago
20/20Version history — 62 published versions
20/20Not deprecated — active, not deprecated or yanked
Inputs used
packagesminutes-cli, minutes-core, minutes-mcp, minutes-sdk, whisper-guard
ecosystemscrates, npm
any_deprecatedno
min_days_since_publish5

Engineering Quality

Are baseline engineering and documentation practices in place?

81Good · 20% of overall
How it's scored
24/24CI workflows — 8 workflow(s)
24/24Tests present
0/16Linter config
0/9.6Pre-commit hooks
0/6.4.editorconfig
20/20OpenSSF Scorecard: CI-Tests — 25 out of 25 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

100Excellent
How it's scored
30/30README
25/25Documentation directory
15/15Documentation / homepage site — https://useminutes.app
10/10Repository description
10/10Topics — 13 topics
10/10Wiki
Inputs used
topicsagent-skills, meetings, ai, claude, mcp, meeting-notes, privacy, rust, speech-to-text, transcription, voice-memo, whisper, parakeet
has_wikiyes
homepagehttps://useminutes.app
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
6/7.5Binary-Artifacts — binaries present in source code
2.2/7.5Branch-Protection — branch protection is not maximal on development and all release branches
2.5/2.5CI-Tests — 25 out of 25 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 1/30 approved changesets -- score normalized to 0
2.5/2.5Contributors — project has 4 contributing companies or organizations
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 29 issue activity found in the last 90 days -- score normalized to 10
5/5Packaging — packaging workflow detected
1/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 2
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
0/5Security-Policy — security policy file not detected
6/7.5Signed-Releases — 5 out of the last 5 releases have a total of 5 signed artifacts.
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0/7.5Vulnerabilities — 82 existing vulnerabilities detected
Inputs used
sourceopenssf_scorecard
checks_evaluated18
scorecard_versionv5.5.0
checks_inconclusive0
scorecard_aggregate4.3

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.

81Good · 0% of overall
How it's scored
45/45Agent instructions — AGENTS.md, CLAUDE.md
15/15Machine-readable docs (llms.txt) — llms.txt present
40/40Legible commit history — 99 of 100 human commits state their intent (structured subject or explanatory body)
Inputs used
has_llms_txtyes
legible_history_share0.99
agent_instruction_filesAGENTS.md, CLAUDE.md
agent_instruction_max_bytes25,923
How it's scored
12.6/18One-command bootstrap — Cargo.toml, crates/cli/Cargo.toml, crates/core/Cargo.toml (toolchain convention, no task runner)
22/22Automated tests
0/11Lint / format config
11/11Static type checking — crates/mcp/tsconfig.json, crates/sdk/tsconfig.json, docs/demo-video/tsconfig.json, docs/demo/tsconfig.json, site/tsconfig.json, tooling/skills/tsconfig.json
10/10Reproducible environment — devcontainer, lockfile
10/10Demonstrated agent practice — 76 of the last 100 commits agent-authored or agent-credited
0/8Automated maintenance — no automated dependency updates observed
2/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 2
Inputs used
has_nixno
has_testsyes
lockfilesCargo.lock, package-lock.json
has_dockerfileno
typed_languageyes
bootstrap_files
has_devcontaineryes
has_linter_configno
typecheck_configscrates/mcp/tsconfig.json, crates/sdk/tsconfig.json, docs/demo-video/tsconfig.json, docs/demo/tsconfig.json, site/tsconfig.json, tooling/skills/tsconfig.json
agent_commit_share0.76
toolchain_manifestsCargo.toml, crates/cli/Cargo.toml, crates/core/Cargo.toml, crates/reader/Cargo.toml, crates/whisper-guard/Cargo.toml, sidecars/diarize-streaming/Cargo.toml, tauri/src-tauri/Cargo.toml
dependency_bot_commit_share0
How it's scored
45/45Type-checkable code — Rust (statically typed)
50.8/55Manageable file sizes — 24/313 source files over 60KB
Inputs used
primary_languageRust
largest_source_bytes688,247
source_files_sampled313
oversized_source_files24
How it's scored
0/40API schema (OpenAPI/GraphQL/proto)
20/20MCP server
40/40Runnable examples — examples
Inputs used
example_dirsexamples
has_mcp_signalyes
api_schema_files

Key facts

1,372GitHub stars
23contributors
1,297commits, last 12 months
0days since last push
70releases
1bus factor
31open issues
crates.io, npmpackage ecosystems

Data collection warnings

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • Could not fetch crates package 'minutes-reader' from its registry
  • Could not fetch crates package 'minutes-app' from its registry
  • Could not fetch crates package 'minutes-diarize-sidecar' from its registry
  • GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository
  • deps.dev does not index crates:minutes-cli@0.22.1; advisories assessed against the repository dependency graph instead

More detail

Star and fork history 0 ★ / 143 ⇿
0Stars
143Forks
70Releases

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.

0255075100125150143122026-032026-052026-07
Major 0Minor 21Patch 47
OpenSSF Scorecard 4.3 / 10
4.3aggregate

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-23 02:09 UTC

8Binary-Artifactsbinaries present in source code
3Branch-Protectionbranch protection is not maximal on development and all release branches
10CI-Tests25 out of 25 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 1/30 approved changesets -- score normalized to 0
10Contributorsproject has 4 contributing companies or organizations
10Dangerous-Workflowno dangerous workflow patterns detected
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 29 issue activity found in the last 90 days -- score normalized to 10
10Packagingpackaging workflow detected
2Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 2
0SASTSAST tool is not run on all commits -- score normalized to 0
0Security-Policysecurity policy file not detected
8Signed-Releases5 out of the last 5 releases have a total of 5 signed artifacts.
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities82 existing vulnerabilities detected
Direct dependencies 107
RegistryPackageVersion constraintManifest
npm@react-three/drei^10.7.7site/package.json
npm@react-three/fiber^9.5.0site/package.json
npm@remotion/player^4.0.446site/package.json
npm@types/three^0.183.1site/package.json
npm@vercel/analytics^2.0.1site/package.json
npmgeist^1.4.1site/package.json
npmnext^16.2.3site/package.json
npmreact^19.2.5site/package.json
npmreact-dom^19.2.5site/package.json
npmremotion^4.0.446site/package.json
npmthree^0.183.2site/package.json
crates.iominutes-core0.22.1crates/cli/Cargo.toml
crates.ioclapcrates/cli/Cargo.toml
crates.ioctrlccrates/cli/Cargo.toml
crates.ioanyhowcrates/cli/Cargo.toml
crates.iotracingcrates/cli/Cargo.toml
crates.iotracing-subscribercrates/cli/Cargo.toml
crates.ioserdecrates/cli/Cargo.toml
crates.ioserde_jsoncrates/cli/Cargo.toml
crates.iochronocrates/cli/Cargo.toml
crates.iohoundcrates/cli/Cargo.toml
crates.iodirscrates/cli/Cargo.toml
crates.ioschemarscrates/cli/Cargo.toml
crates.ioserde_yamlcrates/cli/Cargo.toml
crates.ioureqcrates/cli/Cargo.toml
crates.iocsv1crates/cli/Cargo.toml
crates.iowalkdircrates/cli/Cargo.toml
crates.iopyannote-rscrates/cli/Cargo.toml
crates.ioort=2.0.0-rc.10crates/cli/Cargo.toml
crates.iosymphoniacrates/cli/Cargo.toml
crates.ioserdecrates/core/Cargo.toml
crates.ioserde_jsoncrates/core/Cargo.toml
crates.ioserde_yamlcrates/core/Cargo.toml
crates.iotomlcrates/core/Cargo.toml
crates.iochronocrates/core/Cargo.toml
crates.iothiserrorcrates/core/Cargo.toml
crates.iodirscrates/core/Cargo.toml
crates.iowalkdircrates/core/Cargo.toml
crates.iowhichcrates/core/Cargo.toml
crates.iotracingcrates/core/Cargo.toml
crates.iocpalcrates/core/Cargo.toml
crates.iohoundcrates/core/Cargo.toml
crates.ionotifycrates/core/Cargo.toml
crates.iowhisper-rscrates/core/Cargo.toml
crates.iosymphoniacrates/core/Cargo.toml
crates.ioureqcrates/core/Cargo.toml
crates.iofs2crates/core/Cargo.toml
crates.ioschemarscrates/core/Cargo.toml
crates.iocrossbeam-channelcrates/core/Cargo.toml
crates.iocrossbeam-queuecrates/core/Cargo.toml
crates.iogetrandomcrates/core/Cargo.toml
crates.iointerprocesscrates/core/Cargo.toml
crates.iopyannote-rscrates/core/Cargo.toml
crates.ioortcrates/core/Cargo.toml
crates.iondarraycrates/core/Cargo.toml
crates.iowhisper-guard0.3.0crates/core/Cargo.toml
crates.ionnnoiselesscrates/core/Cargo.toml
crates.iobase640.22crates/core/Cargo.toml
crates.iorusqlitecrates/core/Cargo.toml
crates.iotempfile3crates/core/Cargo.toml
npm@modelcontextprotocol/ext-apps^1.6.0crates/mcp/package.json
npm@modelcontextprotocol/sdk^1.29.0crates/mcp/package.json
npmminutes-sdk0.22.1crates/mcp/package.json
npmyaml^2.8.3crates/mcp/package.json
npmzod^3.25 || ^4.0crates/mcp/package.json
crates.ioserdecrates/reader/Cargo.toml
crates.ioserde_jsoncrates/reader/Cargo.toml
crates.ioserde_yamlcrates/reader/Cargo.toml
crates.iochronocrates/reader/Cargo.toml
crates.iowalkdircrates/reader/Cargo.toml
crates.ioschemarscrates/reader/Cargo.toml
npmyaml^2.8.3crates/sdk/package.json
crates.iotracing0.1crates/whisper-guard/Cargo.toml
crates.iowhisper-rs0.16crates/whisper-guard/Cargo.toml
crates.ioserde1crates/whisper-guard/Cargo.toml
npm@modelcontextprotocol/sdk^1.29.0integrations/claude-cowork-extension/package.json
npmzod^4.3.6integrations/claude-cowork-extension/package.json
crates.ioparakeet-rs0.3.6sidecars/diarize-streaming/Cargo.toml
crates.ioserde_json1sidecars/diarize-streaming/Cargo.toml
crates.iotauri2tauri/src-tauri/Cargo.toml
crates.iotauri-plugin-shell2tauri/src-tauri/Cargo.toml
crates.iotauri-plugin-global-shortcut2tauri/src-tauri/Cargo.toml
crates.iotauri-plugin-dialog2tauri/src-tauri/Cargo.toml
crates.iotauri-plugin-notification2tauri/src-tauri/Cargo.toml
crates.ionotify-rust4.12.0tauri/src-tauri/Cargo.toml
crates.ioserde1tauri/src-tauri/Cargo.toml
crates.ioserde_json1tauri/src-tauri/Cargo.toml
crates.ioserde_yamltauri/src-tauri/Cargo.toml
crates.iominutes-coretauri/src-tauri/Cargo.toml
crates.iochrono0.4tauri/src-tauri/Cargo.toml
crates.iodirs6tauri/src-tauri/Cargo.toml
crates.iolibc0.2tauri/src-tauri/Cargo.toml
crates.iowhichtauri/src-tauri/Cargo.toml
crates.ioportable-pty0.9tauri/src-tauri/Cargo.toml
crates.iobase640.22tauri/src-tauri/Cargo.toml
crates.iofutures-util0.3tauri/src-tauri/Cargo.toml
crates.iominisign-verify0.2tauri/src-tauri/Cargo.toml
crates.ioreqwest0.12tauri/src-tauri/Cargo.toml
crates.iotauri-plugin-pty0.1tauri/src-tauri/Cargo.toml
crates.iotauri-plugin-autostart2tauri/src-tauri/Cargo.toml
crates.iotauri-plugin-updater2tauri/src-tauri/Cargo.toml
crates.iotauri-plugin-window-state2tauri/src-tauri/Cargo.toml
crates.iowalkdirtauri/src-tauri/Cargo.toml
crates.ioureqtauri/src-tauri/Cargo.toml
crates.iowindow-vibrancy0.7tauri/src-tauri/Cargo.toml
crates.ionotify7tauri/src-tauri/Cargo.toml
crates.iotracing0.1tauri/src-tauri/Cargo.toml
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

Raw JSON report machine-readable
{
  "data": {
    "repo": {
      "topics": [
        "agent-skills",
        "meetings",
        "ai",
        "claude",
        "mcp",
        "meeting-notes",
        "privacy",
        "rust",
        "speech-to-text",
        "transcription",
        "voice-memo",
        "whisper",
        "parakeet"
      ],
      "is_fork": false,
      "size_kb": 20121,
      "has_wiki": true,
      "homepage": "https://useminutes.app",
      "languages": {
        "CSS": 43565,
        "HTML": 737849,
        "Rust": 5356949,
        "Shell": 75057,
        "Swift": 59902,
        "Python": 443857,
        "JavaScript": 538869,
        "TypeScript": 748232
      },
      "pushed_at": "2026-07-23T01:30:49Z",
      "created_at": "2026-03-18T06:11:04Z",
      "owner_type": "User",
      "updated_at": "2026-07-23T01:51:18Z",
      "description": "Every meeting, every idea, every voice note — searchable by your AI. Open-source, privacy-first conversation memory layer.",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "main",
      "license_spdx_raw": "MIT",
      "primary_language": "Rust",
      "significant_languages": [
        "Rust"
      ]
    },
    "owner": {
      "blog": "https://x1wealth.com",
      "name": "Mat Silverstein",
      "type": "User",
      "login": "silverstein",
      "company": "Business Vacation",
      "location": "United States",
      "followers": 177,
      "avatar_url": "https://avatars.githubusercontent.com/u/4837632?v=4",
      "created_at": "2013-06-26T16:09:19Z",
      "is_verified": null,
      "public_repos": 25,
      "account_age_days": 4774
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v0.22.1",
          "kind": "patch",
          "published_at": "2026-07-17T19:19:39Z"
        },
        {
          "tag": "v0.22.0",
          "kind": "minor",
          "published_at": "2026-07-16T16:10:44Z"
        },
        {
          "tag": "v0.21.0",
          "kind": "minor",
          "published_at": "2026-07-13T17:00:50Z"
        },
        {
          "tag": "v0.20.0",
          "kind": "minor",
          "published_at": "2026-07-08T21:16:41Z"
        },
        {
          "tag": "v0.19.0",
          "kind": "minor",
          "published_at": "2026-06-25T21:41:51Z"
        },
        {
          "tag": "v0.18.14",
          "kind": "patch",
          "published_at": "2026-06-20T01:34:23Z"
        },
        {
          "tag": "v0.18.13",
          "kind": "patch",
          "published_at": "2026-06-18T10:51:39Z"
        },
        {
          "tag": "v0.18.12",
          "kind": "patch",
          "published_at": "2026-06-15T21:32:25Z"
        },
        {
          "tag": "v0.18.11",
          "kind": "patch",
          "published_at": "2026-06-12T23:40:53Z"
        },
        {
          "tag": "v0.18.10",
          "kind": "patch",
          "published_at": "2026-06-12T17:25:21Z"
        },
        {
          "tag": "v0.18.9",
          "kind": "patch",
          "published_at": "2026-06-11T22:35:42Z"
        },
        {
          "tag": "v0.18.8",
          "kind": "patch",
          "published_at": "2026-06-11T04:48:19Z"
        },
        {
          "tag": "v0.18.7",
          "kind": "patch",
          "published_at": "2026-06-10T21:08:25Z"
        },
        {
          "tag": "v0.18.6",
          "kind": "patch",
          "published_at": "2026-06-08T22:19:14Z"
        },
        {
          "tag": "v0.18.5",
          "kind": "patch",
          "published_at": "2026-06-02T16:07:15Z"
        },
        {
          "tag": "v0.18.4",
          "kind": "patch",
          "published_at": "2026-05-29T06:24:33Z"
        },
        {
          "tag": "v0.18.3",
          "kind": "patch",
          "published_at": "2026-05-29T03:24:33Z"
        },
        {
          "tag": "v0.18.2",
          "kind": "patch",
          "published_at": "2026-05-20T11:08:37Z"
        },
        {
          "tag": "v0.18.1",
          "kind": "patch",
          "published_at": "2026-05-20T07:00:14Z"
        },
        {
          "tag": "v0.18.0",
          "kind": "minor",
          "published_at": "2026-05-14T22:50:51Z"
        },
        {
          "tag": "v0.17.3",
          "kind": "patch",
          "published_at": "2026-05-12T03:42:44Z"
        },
        {
          "tag": "v0.17.2",
          "kind": "patch",
          "published_at": "2026-05-11T19:23:19Z"
        },
        {
          "tag": "v0.17.1",
          "kind": "patch",
          "published_at": "2026-05-11T17:01:11Z"
        },
        {
          "tag": "v0.17.0",
          "kind": "minor",
          "published_at": "2026-05-11T05:19:24Z"
        },
        {
          "tag": "v0.16.5",
          "kind": "patch",
          "published_at": "2026-05-09T16:52:53Z"
        },
        {
          "tag": "v0.16.4",
          "kind": "patch",
          "published_at": "2026-05-07T15:11:11Z"
        },
        {
          "tag": "v0.16.3",
          "kind": "patch",
          "published_at": "2026-05-07T14:07:03Z"
        },
        {
          "tag": "v0.16.2",
          "kind": "patch",
          "published_at": "2026-05-07T05:23:19Z"
        },
        {
          "tag": "v0.16.1",
          "kind": "patch",
          "published_at": "2026-05-04T17:38:42Z"
        },
        {
          "tag": "v0.16.0",
          "kind": "minor",
          "published_at": "2026-04-29T22:45:57Z"
        },
        {
          "tag": "v0.15.0",
          "kind": "minor",
          "published_at": "2026-04-27T20:59:28Z"
        },
        {
          "tag": "v0.14.1",
          "kind": "patch",
          "published_at": "2026-04-23T23:08:08Z"
        },
        {
          "tag": "v0.14.0",
          "kind": "minor",
          "published_at": "2026-04-23T19:25:47Z"
        },
        {
          "tag": "v0.13.3",
          "kind": "patch",
          "published_at": "2026-04-21T16:08:07Z"
        },
        {
          "tag": "v0.13.2",
          "kind": "patch",
          "published_at": "2026-04-18T16:48:17Z"
        },
        {
          "tag": "v0.13.1",
          "kind": "patch",
          "published_at": "2026-04-18T03:27:19Z"
        },
        {
          "tag": "v0.13.0",
          "kind": "minor",
          "published_at": "2026-04-17T00:47:25Z"
        },
        {
          "tag": "v0.12.2",
          "kind": "patch",
          "published_at": "2026-04-15T22:32:35Z"
        },
        {
          "tag": "v0.12.1",
          "kind": "patch",
          "published_at": "2026-04-15T18:52:12Z"
        },
        {
          "tag": "v0.12.0",
          "kind": "minor",
          "published_at": "2026-04-14T16:32:28Z"
        },
        {
          "tag": "v0.11.3",
          "kind": "patch",
          "published_at": "2026-04-13T23:19:43Z"
        },
        {
          "tag": "v0.11.2",
          "kind": "patch",
          "published_at": "2026-04-10T19:17:41Z"
        },
        {
          "tag": "v0.11.1",
          "kind": "patch",
          "published_at": "2026-04-09T23:52:39Z"
        },
        {
          "tag": "plugin-v0.8.0",
          "kind": "other",
          "published_at": "2026-04-09T05:15:01Z"
        },
        {
          "tag": "v0.11.0",
          "kind": "minor",
          "published_at": "2026-04-08T21:43:50Z"
        },
        {
          "tag": "v0.10.4",
          "kind": "patch",
          "published_at": "2026-04-07T18:26:28Z"
        },
        {
          "tag": "v0.10.3",
          "kind": "patch",
          "published_at": "2026-04-07T07:03:31Z"
        },
        {
          "tag": "v0.10.2",
          "kind": "patch",
          "published_at": "2026-04-07T00:43:57Z"
        },
        {
          "tag": "v0.10.1",
          "kind": "patch",
          "published_at": "2026-04-06T21:27:11Z"
        },
        {
          "tag": "v0.10.0",
          "kind": "minor",
          "published_at": "2026-04-06T02:47:29Z"
        },
        {
          "tag": "v0.9.4",
          "kind": "patch",
          "published_at": "2026-04-02T17:55:35Z"
        },
        {
          "tag": "v0.9.3",
          "kind": "patch",
          "published_at": "2026-04-01T18:21:24Z"
        },
        {
          "tag": "v0.9.2",
          "kind": "patch",
          "published_at": "2026-04-01T02:00:48Z"
        },
        {
          "tag": "v0.9.1",
          "kind": "patch",
          "published_at": "2026-03-31T16:36:07Z"
        },
        {
          "tag": "v0.9.0",
          "kind": "minor",
          "published_at": "2026-03-31T16:03:13Z"
        },
        {
          "tag": "v0.8.5",
          "kind": "patch",
          "published_at": "2026-03-31T02:47:32Z"
        },
        {
          "tag": "v0.8.4",
          "kind": "patch",
          "published_at": "2026-03-29T22:17:02Z"
        },
        {
          "tag": "v0.8.3",
          "kind": "patch",
          "published_at": "2026-03-29T14:28:57Z"
        },
        {
          "tag": "v0.8.2",
          "kind": "patch",
          "published_at": "2026-03-28T23:08:05Z"
        },
        {
          "tag": "v0.8.1-live-coach",
          "kind": "prerelease",
          "published_at": "2026-03-28T14:28:41Z"
        },
        {
          "tag": "v0.8.0",
          "kind": "minor",
          "published_at": "2026-03-27T00:25:54Z"
        },
        {
          "tag": "v0.7.3",
          "kind": "patch",
          "published_at": "2026-03-25T05:07:46Z"
        },
        {
          "tag": "v0.7.2",
          "kind": "patch",
          "published_at": "2026-03-24T22:22:53Z"
        },
        {
          "tag": "v0.7.1",
          "kind": "patch",
          "published_at": "2026-03-24T19:31:57Z"
        },
        {
          "tag": "v0.7.0",
          "kind": "minor",
          "published_at": "2026-03-24T17:36:53Z"
        },
        {
          "tag": "v0.6.0",
          "kind": "minor",
          "published_at": "2026-03-24T14:51:08Z"
        },
        {
          "tag": "v0.5.0",
          "kind": "minor",
          "published_at": "2026-03-23T01:42:36Z"
        },
        {
          "tag": "v0.4.0",
          "kind": "minor",
          "published_at": "2026-03-22T16:58:16Z"
        },
        {
          "tag": "v0.3.0",
          "kind": "minor",
          "published_at": "2026-03-21T16:51:49Z"
        },
        {
          "tag": "v0.2.0",
          "kind": "minor",
          "published_at": "2026-03-20T15:43:29Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "3b13375e14897a575ddfcdd9cbcc6367f709b73d",
          "body": "Adds a generic text-archive source to minutes import (issue #515):\nrecursively converts .md/.markdown/.txt transcripts and notes into\nMinutes meeting files with deterministic title/date/attendee inference\n(frontmatter, Date: lines, filename patterns, mtime fallback), YAML-safe\nfrontmatter, 0600 perm\n[…]\nin Minutes\nformat, files inside the output dir, and unreadable/non-UTF-8 files\nwithout aborting the batch. No LLM or network calls.\n\nCloses #515\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(import): add minutes import text for existing text archives (#516)",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-21T23:11:37Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c0a356a16a1d9d3582b9b5f34777ad70ee4f8d0a",
          "body": "The Site Release Link Consistency job on main went red after #514 merged\nwithout rerunning scripts/sync_site_release_version.mjs (test count moved\nto 1581).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(site): regenerate release constants after dictation test additions",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-21T22:49:19Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "146d062f6ff9ab232c789712890ec734360493fe",
          "body": "…ry (#509)\n\nDictation would hang and mis-report a missing whisper model as\n\"mic silent, check input device\" — the model load stalled before any\naudio level was emitted, so the overlay fell through to its generic\nlevel-timeout string. This sent users chasing a microphone/TCC problem\nthat didn't exist\n[…]\nt tests + code\nreview; interactive click-test still recommended before release.\n\nCo-authored-by: Mat Silverstein <mat@x1wealth.com>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(dictation): graceful missing-model handling with one-click recove…",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-21T18:27:30Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d45c92310dea7ad9cc5fb009771ac9c7e3d539b9",
          "body": "…lision) (#512)\n\n`vocabulary add` derived an entry id via ASCII-only slugification, so a\ncanonical with no ASCII letters/digits (Cyrillic, CJK, etc.) produced an\nempty slug and collapsed to the bare `<kind>` (`term`/`acronym`/\n`organization`). Several such entries then shared one id, making\n`vocabul\n[…]\nary remove`: match by id OR exact canonical, so non-Latin\n  entries can be removed by the term the user typed, not an opaque hash.\n\nCloses #511\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(vocabulary): unique id for non-ASCII canonicals (no bare-kind col…",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-21T18:27:26Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "fa8171966c63b524a35c01b23d7b26b0d03f9a12",
          "body": null,
          "is_bot": false,
          "headline": "ci: add protected signed dev acceptance [skip ci]",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-18T17:45:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "18e2c616d68a78ce9a9b5d3af14c720970149166",
          "body": "* docs(plans): first-class voice enrollment design + phasing\n\nResearch + design for making voice enrollment first-class: three-legged\n(active enrollment, passive confirm-once learning, on-device privacy),\ngrounded in the existing voice.rs/voices.db/embedding-sidecar machinery\nand 2026 speaker-verifi\n[…]\nembed_solo_clip needs models to test; do it post-trust with a shared helper.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(plans): first-class voice enrollment design + phasing (#495)",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-18T14:49:10Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0f43e92502303572a4f12666f45ee645fe6b3bb5",
          "body": "… bundle (#507)\n\nloadMeetings() awaited loadProactiveContextBundle() *before* fetching and\nrendering the list. That bundle runs several corpus-wide scans (search +\nconsistency report + graph rebuild), so on launch the meetings list — and\nthe whole main view — stayed blank until all of it finished.\n\n\n[…]\nive bundle in the background and re-render once it resolves so the\nambient-context card still appears. First paint is no longer gated on the\nbundle.\n\nCo-authored-by: Mat Silverstein <mat@x1wealth.com>",
          "is_bot": false,
          "headline": "perf(desktop): don't block meetings-list first paint on the proactive…",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-18T14:49:07Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "230e431280d1c3c6f6c967aa081146590773259c",
          "body": "…aults (WU5-config) (#506)\n\nAdds the [voice] privacy knobs the voice-enrollment Phase 1 safe foundation\nneeds (docs/plans/voice-enrollment-phase1-spec.md, WU5): store_meeting_embeddings,\npassive_candidate_capture, candidate_retention_days, restricted_meetings_eligible,\nretain_non_self_embeddings. De\n[…]\nnrollment-from-history keeps working.\n\nConfig-only (VoiceConfig struct) — no collision with the in-flight\nconversation-trust config.rs changes.\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(config): granular voice-privacy settings with biometric-safe def…",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-18T00:10:15Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f3cf81fa35ab87351bf5f09c7b455107c1c017e5",
          "body": null,
          "is_bot": false,
          "headline": "feat(voice): add immutable sample profiles (#505)",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-17T23:20:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "87eff6010e949a8a9264b6966ec95631f019f2bf",
          "body": "* fix(permissions): retry transient input probe outcomes (#501)\n\n* chore(site): sync test count for #501 probe retry tests (1559→1561)\n\nTwo new cross-platform unit tests (classify_probe_status,\nresolve_runtime_issue) added by the #501 fix. Regenerated via\nscripts/sync_site_release_version.mjs.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(permissions): retry transient input probe outcomes (#504)",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-17T21:20:36Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "1cd2debf52a98b82b858a3240aa767c139389d00",
          "body": "…) (#503)\n\n.chat-messages inherited user-select: none from the body rule, so users\ncouldn't select or copy assistant answers or transcript snippets in the\nRecall panel. Add an explicit user-select: text override (plus -webkit-\nprefix for the WKWebView) scoped to the chat message container.\n\nCloses #490\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(desktop): make Recall/chat panel text selectable + copyable (#490…",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-17T20:24:25Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "8707de0d9a46fb56464e932ef7f02cc696352d50",
          "body": null,
          "is_bot": false,
          "headline": "fix release registry publish workflow",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-17T19:32:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1bd03080c758f7d4a04ee5ef0ccda72c23691c81",
          "body": "Pin crates/mcp to the exact minutes-sdk 0.22.1 that release-publish.yml\npublishes first, with the resolved tarball + integrity, so the tag\nworkflow's strict npm ci for mcp resolves the freshly-published SDK.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "release: pin minutes-sdk 0.22.1 for mcp",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-17T19:07:58Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "9913babb8435f1d147411c5c6c85f471d934da40",
          "body": "Patch release. Bugfixes only.\n\n- fix(hotkey): stop the system-wide CGEventTap leak — a permission probe\n  created a kCGHIDEventTap every 15s and never invalidated it, exhausting\n  the system tap table and freezing keyboard/mouse (and crashing\n  WindowServer) after the app ran a few hours; quitting M\n[…]\ntect PipeWire system-audio sinks on Linux.\n  (#489, thanks @gtheys)\n- fix(summarize): support the Apple engine for speaker mapping. (#487, #498)\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(release): 0.22.1 (#502)",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-17T18:28:42Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "464295c580f17177b4ad3d9f715532ab624cfea2",
          "body": "… (#493)\n\n* fix(parakeet): don't misreport benign helper exits as argv/#163 drift\n\nlog_parakeet_helper_failure_once printed the same \"check that every argv\nflag is accepted by the ParakeetHelper clap struct (issue #163)\" warning\nfor ANY non-zero helper exit. But the host-process helper also exits\nno\n[…]\nuthored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Mathieu Silverstein <silverbook@M-MacBook-Pro.local>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(parakeet): don't misreport benign helper exits as argv/#163 drift…",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-17T18:08:44Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e3931212089e89cc637e84249fe88373da976892",
          "body": "…15s (#488) (#500)\n\ninput_monitoring_runtime_issue() created and tore down a real\nkCGHIDEventTap on every 15s permission-monitor poll (for users who granted\nInput Monitoring) just to detect a \"granted but unusable\" state. That state\nis fixed for the process lifetime -- it's only cleared by restartin\n[…]\nso it runs exactly once per launch, preserving the\ndiagnostic with zero ongoing churn. Complements the CFMachPortInvalidate\nteardown fix (#499).\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(permissions): probe Input Monitoring once per process, not every …",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-17T17:47:16Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1f89523b09b677459f9d8b73aee704ac105cfce4",
          "body": "…em-wide tap leak (#488) (#499)\n\n* fix(hotkey): invalidate CGEventTap Mach port on teardown to stop leak (#488)\n\nrun_event_tap tore down with CGEventTapEnable(false) + CFRelease but never\ncalled CFMachPortInvalidate, so each tap was left registered in the\nsystem's 512-entry event-tap table as a disa\n[…]\n. Add CFMachPortInvalidate there for completeness,\nmatching the teardown fix.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(hotkey): invalidate CGEventTap Mach port on teardown to stop syst…",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-17T14:43:35Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3cf919648ed86c20041a05687c132fd2658505a2",
          "body": "#439 added the \"apple\"/\"apple-fm\" engine arm to summarization and title\nrefinement (and the speaker_mapping_model_hint metadata), but not to the\nspeaker-mapping executor run_speaker_mapping_prompt, so engine = \"apple\"\nfell through to the \"Unknown engine: apple\" catch-all and Level-1 speaker\nmapping \n[…]\no multimodal input; macOS gating and graceful degrade already\nwork (map_speakers logs-and-continues on any engine error).\n\nReported by @jmh1313.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(summarize): support Apple engine for speaker mapping (#487) (#498)",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-17T06:47:23Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "fa413794217811dfb52580703a779aa04e0ec010",
          "body": "…cOS 15 (#494) (#497)\n\nThe bundled Swift helpers (system_audio_record, mic_check, calendar-events)\nwere compiled with swiftc and no -target. swiftc ignores\nMACOSX_DEPLOYMENT_TARGET (unlike clang/ld), so it stamped each helper's\nLC_BUILD_VERSION minos from the host SDK -- macOS 26 on the macos-latest\n[…]\necording paths stay weak-linked behind @available/#available guards, so\nthe binaries load on macOS 14+ and run on 15+.\n\nReported by @Victors081.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(build): pin Swift helper deployment targets so 0.22.0 loads on ma…",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-17T06:47:19Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "80d7c3509c29bc8934158a49c010aaf11c99085c",
          "body": "* fix(core): let `--call` auto-detect PipeWire system-audio sinks\n\n`CapturePlan::system_audio_ready()` only recognized name patterns\n(BlackHole, .monitor, Teams Audio, etc). `detect_loopback_device()`\nalready picks a real PipeWire sink (speaker/headphones/Bluetooth A2DP)\nas the system-audio route vi\n[…]\no behavior change.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Mat Silverstein <matsilverstein@gmail.com>\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(core): let --call auto-detect PipeWire system-audio sinks (#489)",
          "author_name": "Geert Theys",
          "author_login": "gtheys",
          "committed_at": "2026-07-17T05:22:34Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f05aa87bd4e3a3556f0e5a48e8ace66c11f68d21",
          "body": "Tag-triggered release-publish.yml publishes minutes-sdk, minutes-mcp,\nminutes-core, and minutes-cli with zero stored credentials: npm OIDC\ntrusted publishing (with provenance) and crates.io via\nrust-lang/crates-io-auth-action. Deny-all default permissions,\nid-token:write only on publish jobs, everyt\n[…]\needed\na cross-machine key. docs/release/trusted-publishing.md carries the\none-time registry-side setup; procedure.md now ends at \"push the tag\".\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "ci(release): OIDC trusted publishing for npm + crates.io (#486)",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-16T19:15:00Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "51d2d13c321e3ddafabbee4f6172f4c203167eed",
          "body": null,
          "is_bot": false,
          "headline": "release: pin minutes-sdk 0.22.0 for mcp",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-16T15:45:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bf225e9eed6c8264111ec91b2455a4c801035e8d",
          "body": "…es (#485)\n\nFirst release through the new rails: single-command transactional bump\n(scripts/bump-version.mjs), all Domain-1 sources verified by\ncheck_version_sync. Notes drafted per the /minutes-release-notes skill.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(release): bump version to 0.22.0 across all sources + draft not…",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-16T05:11:19Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "32f80062c6bd045292715562705603d3a96f9c95",
          "body": "…s (#484)\n\nTwo hand-repeated workflows encoded as canonical skills (23 total).\nRelease notes: commit-range classification, release-voice conventions\n(incl. the no-em-dash rule from 88ded28), version-sync checklist. SEO\nwave: the #435-#438 methodology (SERP recon, DESIGN.md token\nconstraints, interna\n[…]\n\nspecifics deliberately kept out of the public repo. Full compiler gate\ngreen: 33 tests, ownership audit, goldens, compile:dry across all hosts.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(skills): minutes-release-notes + minutes-seo-wave workflow skill…",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-16T04:10:45Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "43c55de8fa33990715118d8ab2829269a785a708",
          "body": "…(#483)\n\nCross-agent (CLAUDE.md + AGENTS.md, matching text): wrong rewrite/merge\nworse than none (every-name-right, #385 series); recording never\ndegraded by an optional consumer (RFC 0004 failure isolation, enforced\nby the capture-reliability suites); auto-update off until hosted\nmanifest + rollback UX (auto-update-evaluation.md). Pointers, not\nenforcement — each names its primary control.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(agents): promote three proven decisions into agent instructions …",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-16T03:59:01Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "8fee02097daf575cdd5a83f6e6beb900c92abdf2",
          "body": "…ndary (#482)\n\n* feat(core): capture-reliability invariant suites + engine process boundary\n\nEncodes the invariants behind the silent transcript/audio-loss class\n(Cristy blank-transcript loss; live-sidecar inference starvation;\n#395/#396, #409, #412/#414, #467) as tests, so a fifth recurrence fails\n\n[…]\ned it. One sweep confirms no direct\nCommand::new remains outside the wrapper.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(core): capture-reliability invariant suites + engine process bou…",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-16T03:55:44Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f0a1e17d6745202ac492b68edf44dcd5c71d4bb1",
          "body": "… (#481)\n\nEncodes the publish ordering that bit twice (mcp shipped depending on\nan unpublished minutes-sdk — the v0.19.0/v0.20 lag). scripts/release.mjs:\nphase1 packs+tests+publishes the sdk and polls the registry for exact\nvisibility; phase2 commits ONLY the exact mcp pin + lockfile (diff\nasserted)\n[…]\nrkflow now gates artifacts on a\nrelease_readiness job running the --release invariant, so a manual tag\non a transitional tree publishes nothing.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(release): two-phase committed release flow with provenance gates…",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-16T03:13:25Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3151a46d828e1388ea5d4d3374ef93308c6f0000",
          "body": "beads_reaper.mjs is a report-only local script (beads state is local\nDolt — never hosted CI) surfacing the three drift classes that\naccumulated historically: in_progress idle >30d (29 today), open issues\nmatching merged PR titles, and exact-duplicate titles. PLAN.md gets a\nstatus banner pointing at the live sources of truth — it reads as a\ncurrent tracker but stopped being one in April.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(tracker): local beads reaper + PLAN.md truth banner (#480)",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-16T02:44:28Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f1fed5130022af5b28adccc0016b526fa5d0aa46",
          "body": "docs claimed \"pre-push hooks + CI enforce these\" while .git/hooks/ held\nonly samples. Ships a real optional .githooks/pre-push (version sync\nalways; skills check when built, explicit skip line otherwise; <0.1s)\nand scripts/setup-hooks.sh that refuses to clobber an existing\ncore.hooksPath without --force. Docs now say what is true: CI is\nauthoritative, hooks are optional fast feedback, --no-verify exists.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(dev): optional pre-push hooks + honest enforcement docs (#479)",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-16T02:44:26Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "2ce603439fd97e3de4bec1bc115c25ddf534bc52",
          "body": "* feat(design): machine-readable tokens + shrink-only literal lint\n\nDESIGN.md's palette/font rules had zero enforcement. design/tokens.json\nis the hand-curated machine-readable source (never parsed from prose,\nwhich also names prohibited values); raw color/font literals are allowed\nonly in token-def\n[…]\nassed the\nprefix allowlist. Expanded with fixtures for the reported bypasses.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(design): token enforcement with shrink-only baseline (#478)",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-16T02:44:22Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c6928f076fc09560ebe79d448e474f1d2c2d7236",
          "body": "…#477)\n\nThe compiler verified sources compile to expected outputs but never\nrejected orphans: deleting a canonical skill left its generated mirrors\nshipping forever. npm run check now audits every file under the\ngenerated roots against current sources plus a data allowlist for\nlegitimately non-generated surfaces (hooks, agents, packs). Goldens\nextended from 4 pilot skills to all 21 (1.1MB committed).\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(skills): stale-artifact ownership check + full golden coverage (…",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-16T02:08:17Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "e5eeee80cfeadf777c85e4435711961a7d4a6e57",
          "body": "* feat(release): transactional bump-version script\n\nOne command writes every Domain-1 version source (manifests, package\nlocks, Cargo.lock workspace entries, MCP_SERVER_VERSION, derived site\nconstants) via a temporary git worktree: the real tree receives a\nsingle validated git-apply or nothing. --dr\n[…]\ny-at-target sources produce no diff) while still failing\non unexpected files.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(release): transactional bump-version script (#476)",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-16T02:08:14Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7cd197b2c23392be2cc50b127e13428ed0d559f8",
          "body": "CI deleted crates/mcp/package-lock.json and ran npm install every run\n(npm/cli#4828 workaround), so the committed lockfile was never\nvalidated — a fresh dependency graph shipped on every build. The\nlockfile is now regenerated with Node 22/npm 10 whose v3 format\nrecords all platform-specific optional\n[…]\ntries across\nlinux/darwin/win32), the hack is replaced with npm ci, and a slim\n3-OS mcp_lockfile_check matrix job proves portability in ci_gate.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "ci: validate the committed MCP lockfile instead of deleting it (#475)",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-16T01:37:55Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a855d73ccc6e69ca267add688a8f8cb96db24c43",
          "body": "* ci: enforce release version lockstep\n\n* feat(release): add --release mode asserting exact mcp->sdk pin\n\nIn --release mode the checker additionally requires\ncrates/mcp/package.json's minutes-sdk dependency to be an exact semver\nequal to crates/sdk/package.json's version — the invariant that the\nv0.\n[…]\nole-line match) with fixtures for the comment-only and embedded-string\ncases.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "ci: three-domain version-policy checker (#473)",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-16T01:17:05Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "fb2ae675ea75676042bcf207cec6419b47e8db5c",
          "body": "* ci: lint workflows with pinned actionlint\n\n* ci: expression-aware runner-context rule; fix live env.ImageOS bugs\n\nactionlint models env as a loose string map and does not flag\n${{ env.ImageOS }}, so the runner-image cache-key class gets a dedicated\nexpression-aware checker (comments never flag; no\n[…]\n single-quote-aware). New fixtures\ncover the indexed and format-braces cases.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "ci: workflow linting as an independent required check (#474)",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-16T00:51:44Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f8ac8f157cf5dcaf12adda3523cda1a0ac3b5847",
          "body": null,
          "is_bot": false,
          "headline": "ci: add required skills compiler gate (#472)",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-16T00:26:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "538e93edec2532edaca44e75591ed7e125e6aac9",
          "body": "Add the live-assistance session contract, synthetic privacy-safe eval corpus, deterministic reducer and routing replay, required CI enforcement, generated agent surfaces, and implementation documentation.",
          "is_bot": false,
          "headline": "feat(agent): define session-aware live assistance (#470)",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-15T22:06:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8cd9345e69b7c9046d42194f57c2526da32e9c08",
          "body": null,
          "is_bot": false,
          "headline": "feat(context): expose bounded live screen awareness (#471)",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-15T20:49:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ebca4e14f8b7457a3c867b3dc9a4b7099accf919",
          "body": "…ngine-active) (#469)",
          "is_bot": false,
          "headline": "test(coach): make MCP copilot contract model-aware (guided-setup vs e…",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-15T19:49:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7557c8a00e3fae9979f885e61b63bb340e66051b",
          "body": "…468)\n\n* fix(desktop): coalesce meetings watcher fs events before emitting artifacts:changed\n\nLinux inotify delivers one event per syscall (write/chmod/rename/\nclose-write) instead of the batched events FSEvents gives on macOS.\nEvery raw event fired artifacts:changed immediately, and the UI does\na f\n[…]\n@gtheys's PR #468.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Mat Silverstein <matsilverstein@gmail.com>\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(desktop): stop meetings list flashing from Linux inotify noise (#…",
          "author_name": "Geert Theys",
          "author_login": "gtheys",
          "committed_at": "2026-07-15T15:47:49Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "811df6059ff55ff42b8c7921429072fdd722f7cb",
          "body": "Honor the configured microphone in native ScreenCaptureKit calls and degrade to a surviving PCM stem instead of failing the recording.\n\nReported and diagnosed by @gdiab.",
          "is_bot": false,
          "headline": "fix(capture): preserve recoverable native call audio (#463) (#467)",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-15T08:21:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9e22051672c0e3963878e6ee973ccacd6a4c9803",
          "body": "…(#466)\n\n* feat(cli): tune Coach model to local hardware\n\n* chore(coach): add monthly model freshness eval\n\n* chore(release): sync test count for coach model-selection tests\n\n* fix(copilot): synchronize deterministic eval nudges",
          "is_bot": false,
          "headline": "feat(coach): hardware-aware model selection + monthly freshness eval …",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-15T05:54:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7fd3b2b8354209b4c7e88f766406fd9bcedd1019",
          "body": null,
          "is_bot": false,
          "headline": "fix(cli): make Coach setup API-first (#465)",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-15T01:14:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b7469de1a4399fe63053e63625c62e46f2b89e43",
          "body": "…#464)\n\n* feat(core): add realtime copilot contract and engine\n\n* feat(cli): add portable copilot stream surface\n\n* refactor(tauri): share Ollama streaming transport\n\n* docs: document realtime copilot configuration\n\n* chore(pr): trim copilot to additive core\n\n* feat(copilot): add lock-free live part\n[…]\n\n\n* fix(copilot): retry relay establishment EOF\n\n* chore(release): re-sync test count after relay reconnect stress test\n\n---------\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(copilot): real-time meeting Coach integration (atomic landing) (…",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-15T01:11:39Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "19e95b4c16c92423c801239144c97e6fe1896089",
          "body": "…tion copy (#458) (#459)\n\n@DoctorEdMilan diagnosed that the extension display name (\"Minutes —\nMeeting Memory for AI\" / \"Minutes - Meeting Workspace for Claude\") contains\na space-separated dash that the host sanitizes to three underscores, making\n`mcp__Minutes___...__list_meetings` parse ambiguously\n[…]\n, and drop the stale version-pinned changelog\nblocks (0.18.13/0.20.0) for evergreen copy. version + tools untouched.\n\nCloses #458.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(mcpb): rename display name to fix widget tool resolution + reposi…",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-14T17:16:46Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3fb2e837b6cfedeb71fe88cdc5d6e3ec95bb323f",
          "body": "The claude chat path used `--output-format stream-json` but not\n`--include-partial-messages`, so claude emitted one complete assistant\nmessage at the end — the panel showed \"thinking…\" through the whole\ngeneration, then dumped the full reply at once (no token streaming like\nClaude Code/Codex). Verif\n[…]\nread for the\ngrounding narration). Reply now renders as it generates. Recall-chat\nsurface only; does not touch live_transcript.rs.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(recall): token-level streaming in the chat panel (#453)",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-13T21:14:28Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "219c20c9dee28ddf95791886350fd608036003fc",
          "body": "…452)\n\n* feat(recall): stop/cancel button for an in-flight chat turn (#444)\n\nAdds a Stop control to interrupt a long Recall chat turn (cold start +\ngrounding + response). AppState tracks one turn with a monotonic id,\ncancel flag, and owned child handle; cmd_recall_chat_cancel tears down\nvia the same\n[…]\nnon-windows so each target moves it exactly once.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(recall): stop/cancel button for an in-flight chat turn (#444) (#…",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-13T19:49:18Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0e41793b5f5bda5987577faefe99f4df9d07c7a4",
          "body": "…ved files (#451)\n\nFollow-up to #449, which missed several version sources the release\nprocedure requires: manifest.mcpb.json runtime version (MCP bundle guard),\nboth package-lock.json files (npm version), and the derived\nsite/lib/release.ts + llms.txt / docs mirrors (sync scripts). All now at\n0.21.0; manifest.json and manifest.mcpb.json runtime versions match.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(release): complete 0.21.0 bump — mcbp manifest, lockfiles, deri…",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-13T16:55:02Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "d52f0b6d5ec4055db09356237a2b97b6f642c99a",
          "body": "Bumps all version sources (Cargo workspace, tauri.conf.json, sdk +\nmcp package.json, manifest.json, MCP_SERVER_VERSION) and Cargo.lock.\nThe mcp -> minutes-sdk dependency is intentionally left at ^0.19.0 —\nbumping it to an unpublished ^0.21.0 breaks CI's npm install (the trap\nfrom the v0.20.0 release); the publish sequence handles it after sdk\nis on npm.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(release): bump version to 0.21.0 (#449)",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-13T16:53:26Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "aab7bc78734b634d54562dddafb9de59677fc368",
          "body": "…8) (#450)\n\nLive-mode sessions were ephemeral: the fixed ~/.minutes/live-transcript.\n{wav,jsonl} slot was overwritten by the next `minutes live`, and stopping\nnever created a diarized/summarized meeting like Record — a real\ndata-loss footgun.\n\nNew `[live_transcript] promote_on_stop` (default \"proces\n[…]\nfacts + meeting_path.\n\nImplemented by codex gpt-5.6, reviewed + verified here (7 tests, fmt,\nclippy -D warnings, cli+app compile).\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(live): preserve + promote live sessions to meetings on stop (#44…",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-13T16:50:34Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "bcdddbbbe50632e0c0ba905680064130bf399a9a",
          "body": "…le toggle (#447)\n\nRe-lands #446 (auto-closed when #445's base-branch delete cascaded to the\nstacked PR). Combines: scroll-anchoring (auto-scroll only if at bottom,\n\"jump to latest\" pill otherwise — the tmux-scrollback behavior), a compact\nRecall header on short viewports for coach/prompter use, and\n[…]\nisible faint keyboard glyph).\nFrontend only; index.html taken verbatim from the node-checked\nfeat/coach-ux tip. Follow-up to #404.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(recall): coach-mode UX — scroll-anchoring, compact header, visib…",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-13T15:52:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a1da574c3fd6ed3191d09e5fd89d48789a161e60",
          "body": "…low-up) (#445)\n\nAssistant replies now render **bold**, *italic*, `inline code`, and fenced\ncode blocks instead of raw text, incrementally as the response streams.\n\nXSS-safe by construction: fenced code is pulled out and escaped, the rest\nis HTML-escaped BEFORE any formatting, and the inline rules o\n[…]\ner list\nlayout, so only inline emphasis + code needed handling. Verified with an\nXSS + markdown + collision test suite (10 cases).\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(recall): render a safe markdown subset in chat replies (#404 fol…",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-13T15:50:03Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "29ad704a6edcd641254411c3f03b324b1e412c38",
          "body": "…rminal by default (#362) (#404)\n\n* feat(recall): add native chat panel with headless Claude streaming\n\nReplace xterm.js TUI as default Recall UI with a structured chat panel.\nBackend: cmd_recall_chat_send spawns claude --output-format stream-json\n--no-interactive and streams chunks to frontend via \n[…]\noken compile — the #443 class). Matches the production init in main.rs.\n\n---------\n\nCo-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>\nCo-authored-by: Mat Silverstein <matsilverstein@gmail.com>",
          "is_bot": false,
          "headline": "feat(recall): native chat panel for Recall, replacing the embedded te…",
          "author_name": "Maosuarez",
          "author_login": "maosuarez",
          "committed_at": "2026-07-13T14:57:40Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1a88941078f709c409d03a8b264bf0e34c9c13d1",
          "body": "…S 26+) (#439)\n\n* feat(core): on-device summarization via Apple Foundation Models (macOS 26+)\n\nNew \"apple\" summarization engine: zero-setup, zero-API-key, zero-network\nsummaries, action items, and decisions on macOS 26+ with Apple Intelligence.\n\n- crates/core/src/apple_fm.rs — helper lifecycle mirro\n[…]\nnthropic.com>\n\n* chore(site): sync release constants after rebase onto Wave 2\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(core): on-device summarization via Apple Foundation Models (macO…",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-13T14:22:34Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "548f8b537a1b28ca5be26dc9be1e37a8074c0a98",
          "body": "…s (#443)\n\n#441 (consent Wave 2) added `include_restricted` to SearchFilters but\nmissed the struct literal in tests/integration/pipeline_test.rs, so\n`cargo test -p minutes-core` fails to compile the integration target\n(E0063). Add the field with the default `false` (exclude restricted),\nmatching SearchFilters::default(). Build restored.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(test): add missing include_restricted to integration SearchFilter…",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-12T10:40:58Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "80e8ebeab7c3906005e54c21fbc41cdafc517043",
          "body": "…lass 2) (#442)\n\nThe extractor sometimes returns several names as one string (\"Gert and\nLiam\"), which fused into a single person entity (\"gert-liam\") in a real\nvault. Add split_person_references(): split on the conjunctions `and`\n(case-insensitive), `&`, `+`, `;`, and on commas only when a conjuncti\n[…]\npreserved)\n+ an end-to-end build_entity_links check that \"Gert and Liam\" yields\ndistinct entities while \"Sarah Chen\" stays intact.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(graph): split multi-person strings into separate entities (#385 c…",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-12T09:54:41Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3abcdd44e534ca46681db9f3a60355168a0d73db",
          "body": "…#441)\n\n* feat(consent): Phase 2 Wave 2 — agent-layer sensitivity enforcement (minutes-3yub.4)\n\nRestricted meetings (sensitivity: restricted) are now excluded by default\nfrom every agent surface, with an explicit, logged override:\n\n- core search: SearchFilters.include_restricted; FTS post-filter +\n \n[…]\n@anthropic.com>\n\n* chore(site): sync release constants after rebase onto #440\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(consent): Phase 2 Wave 2 — agent-layer sensitivity enforcement (…",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-12T04:22:20Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3e82d31a44b17c735f29b8758b0e6a5fa17b7916",
          "body": "The title model sometimes answers the prompt conversationally\n(\"I'll create a concise meeting title...\") instead of returning a bare\ntitle; the first line was slugified straight into the filename (real\noccurrence: 2026-07-02-i-ll-create-a-concise-meeting-title-mat.md).\n\nAdd looks_like_instruction_ec\n[…]\n to avoid nuking legitimate titles (e.g. \"Here Comes...\").\n\nTests: unit coverage for the guard + an end-to-end fallback/log check.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(pipeline): reject instruction-echo titles from the LLM (#401) (#440)",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-12T03:33:45Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "200fcfcac9afa3d6a796961cba48bb1229872c9c",
          "body": "…versarial review fixes (#438)\n\nTwo new pages:\n- /resources/hipaa-compliant-ai-note-taker — vendor-matrix capstone for the\n  compliance cluster (Otter/Fireflies/Fathom/Krisp conditional, Granola no,\n  on-device outside the BAA framework), FAQPage JSON-LD, links all analyses\n- /resources/is-it-legal-\n[…]\npture\n  mechanism corrected (native Swift capture / loopback, not bare cpal);\n  consent frontmatter claim softened to match Option<ConsentBasis>\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(site): SEO wave 4 — HIPAA capstone, recording-legality guide, ad…",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-11T20:05:26Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ee2c0431ceabc29b39d60ff5fddd85fb1ad2fe03",
          "body": "…resource guides (#437)\n\nAll competitor facts researched fresh (2026-07-11) from official sources\nby parallel research agents, then adversarially reviewed (fact-diff vs\nsourced reports, honesty audit vs Rust source, link/consistency greps):\n\n- /compare/fathom-vs-minutes — Fathom now bot-free-capable\n[…]\ninst source —\nureq exists only in summarize.rs (opt-in text summarizer); capture.rs /\ntranscribe.rs / dictation.rs have zero network references.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(site): SEO content wave 3 — 3 compare pages, 2 HIPAA answers, 3 …",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-11T18:29:44Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "62dd97a8e542c2083f91a40811230df830f72738",
          "body": "…up, engine post (#436)\n\nWeeks 3-6 of the SEO plan (internal, docs/marketing/):\n\n- /writing/whisper-cpp-vs-parakeet-cpp — first-party engine comparison\n  grounded in docs/architecture/parakeet.md benchmarks and production\n  fallback behavior; added to writing index\n- /resources/best-local-speech-to-\n[…]\nlies/host controls) targeting competitors'\n  churn queries; ends at botless capture\n- sitemap.ts: 4 new routes; .md twins for all resource pages\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(site): SEO content wave 2 — privilege, anti-bot, local STT round…",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-11T18:02:44Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "33081a4a15d4a1ba4251bdc2c005a33dbaa9b3f0",
          "body": "Competitive strategy docs follow the existing internal-artifacts\nconvention (docs/marketing/ is already gitignored).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(docs): move SEO plan to gitignored docs/marketing (internal)",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-11T17:47:00Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a92b39ad08d59a755b5549cfeed9fc2715e98c91",
          "body": "…sper compare (#435)\n\nAhrefs research (docs/plans/seo-plan.md): 370 refdomains but 1 ranking\nkeyword; compliance and dictation clusters are near-uncontested (KD 0-13)\nand cloud competitors structurally can't follow. Ships the weeks-1-2 pages:\n\n- /security — on-device architecture pillar with honest \n[…]\ntation-beachhead comparison\n- sitemap.ts + robots.ts (site had neither)\n- footer Security link, compare hub entry, .md twins for all three pages\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(site): SEO wedge pages — security pillar, HIPAA answer, superwhi…",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-11T17:45:32Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "63cb5c5e65a2e18850495348b80a305b7f0390c3",
          "body": "…marizers (#421)\n\n* fix(jobs): respect keep_after_summary when cleaning screenshots on job completion\n\npreserve_audio_alongside_output() unconditionally deleted the per-recording\nscreens dir after processing, so screenshots vanished even with\nscreen_context.keep_after_summary = true. The pipeline's \n[…]\namp is now the last\nwhitespace-delimited token inside the brackets, tolerating bare, diarized,\nand attributed-name labels alike. Companion regression test with a >100k\ndiarized transcript, per review.",
          "is_bot": false,
          "headline": "fix(screen-context): retain screenshots and deliver them to agent sum…",
          "author_name": "Ryan",
          "author_login": "rymalia",
          "committed_at": "2026-07-11T17:32:33Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "973bb6dc77040eb4c19433f502f8efdf6b541370",
          "body": "The hero transcript card streams its lines in once on load, mirroring how\nMinutes streams real transcription — CSS-only (staggered animation-delay),\ngated behind prefers-reduced-motion: no-preference so the reduce path\nrenders the final state instantly. No JS, no hydration flash. Amend\nDESIGN.md's M\n[…]\nresolve the standing contradiction with the\n\"streamed partials, never spinners\" interaction-craft rule; add a decision\n-log entry.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(site): product-honest streaming-transcript hero reveal (#434)",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-10T22:19:33Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d8fe04f3e3b704fe6f257e4336ff7c98d576d74f",
          "body": "10/10 pass within DESIGN.md (no motion/scroll effects, which the system\nforbids): a spec-sheet trust bar under the hero for the regulated buyer\n(on-device · nothing uploaded · MIT · consent in every file), and a new\nSection 02 \"On-device\" that makes the ownership wedge visual — the\ndevice-vs-cloud d\n[…]\nid\non-device) reused from the Granola comparison as a homepage signature.\nRenumber trailing sections; add an On-device nav anchor.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(site): homepage elevation — trust bar + on-device data motif (#433)",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-10T22:12:48Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "56124a88776c2d3032c4033328e6795e8020fc52",
          "body": "…mory (#432)\n\nLead with the ownership/permanence line (\"no one can take it from you\")\nand the acquisition/subpoena wedge, reframe off \"infrastructure for\nagents\" to \"the private, owned conversation-memory layer,\" and name the\nnot-another-notetaker distinction. Keeps the loved lines (grep still\nworks, no vendor to outlive; agents have run logs / humans have\nconversations).\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(readme): align positioning with the site — owned conversation-me…",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-10T21:26:40Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "8550acc32fcfc0fc5a5fdfd28a27cd78409fbf52",
          "body": "…itecture (#431)\n\nThe positioning wedge vs the real competitor: Granola captures locally\nbut streams audio to cloud transcription (Deepgram/AssemblyAI), enhances\nvia cloud AI (OpenAI/Anthropic), and stores transcripts + notes on AWS\n(US only). Minutes is on-device end to end. Add an honest, sourced\n\n[…]\nOC 2) so the wedge stays fair and defensible; all claims cited to\nGranola's own security/privacy FAQ. Keep the .md mirror in sync.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(site): sharpen Granola comparison to the on-device vs cloud arch…",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-10T21:09:41Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "961999c15891409d9b0947eabcb561db0e44e49e",
          "body": "Dictation is the low-friction daily habit and the front door to the\nproduct (per the positioning decision). Promote it from a buried feature\ncell to a dedicated Section 01 right after the hero: the hold-to-talk\nloop, a daily-note card in the transcript-card treatment, and the true\ndifferentiator vs.\n[…]\nxt and forget\nit; Minutes keeps every word locally in the same owned memory. Renumber\nthe following sections and add a nav anchor.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(site): elevate dictation to a front-door on-ramp section (#430)",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-10T21:01:25Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a1e99b2efb8988cf4df7345d2431df4955474679",
          "body": "…#429)\n\nLead with the ownership/permanence wedge that 2025's cloud-memory\nbetrayals (Limitless acquisition, Otter suit) made concrete, instead of\nthe agent-readable framing — which becomes the mechanism beneath it. The\none claim no cloud competitor can copy is \"no one can take it from you.\"\n\nReframe\n[…]\nch for the buyer who\nactually pays: legal/clinical/financial professionals who can't put\nclient conversations in a cloud recorder.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(site): reposition hero on ownership + name the regulated buyer (…",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-10T20:54:57Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "fd2629c6bce7a4e1d338b30f9893dbfc9ed02526",
          "body": "…uctions (#426) (#428)\n\nCLAUDE.md, AGENTS.md, and the release/updater docs hardcoded a specific\nDeveloper ID ('Mathieu Silverstein (63TMLKT8HN)') in a public repo. Agents\nand humans follow these literally, so exporting that identity on a machine\nwithout the cert makes build.sh/install-dev-app.sh abo\n[…]\n mechanism\nbut use a generic placeholder; the identity is machine-local (shell profile /\nuntracked env), not tracked instructions.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: remove hardcoded personal Developer ID from tracked agent instr…",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-10T19:39:21Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d55d635dcf389e1029e01275da32c6cfd6b28055",
          "body": "…d surface permission failures (#427)\n\nThe `minutes stop` sentinel broke the record loop without setting the shared\nstop flag; the screen-capture thread only watched that flag, so\nScreenCaptureHandle::drop blocked in join() while post-meeting screenshots\naccumulated toward the 60-frame cap. The hand\n[…]\nhes\nminutes.log, events.jsonl (screen_context.unavailable), a desktop\nnotification at recording start, and a new `minutes health` item that probes\nwith a real capture attempt.\n\nFixes #423. Fixes #424.",
          "is_bot": false,
          "headline": "fix(screen-context): stop capture thread on every record-loop exit an…",
          "author_name": "Ryan",
          "author_login": "rymalia",
          "committed_at": "2026-07-10T19:24:06Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0a0cc957535d254ccfbe12b24f5ad9e44514129e",
          "body": "…nt denial can't hollow out the app (#422) (#425)\n\ncp -rf into an existing /Applications/Minutes.app bundle trips macOS App\nManagement protection; on denial it deletes what it can but can't write the\nnew files, leaving the app hollowed out (skeleton dir, no Info.plist, no\nbinaries) — destroyed, not \n[…]\n /Applications is\nwritable. On failure: clean up, leave the existing app intact, and point the\nuser at the App Management setting.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(scripts): stage+atomic-swap in build.sh --install so App Manageme…",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-10T17:42:33Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "287844292618a5c72f30d5054d5037b16367be4e",
          "body": "…t yet on npm; matches the lag pattern from v0.19.0)",
          "is_bot": false,
          "headline": "fix(release): mcp depends on published minutes-sdk ^0.19.0 (0.20.0 no…",
          "author_name": "silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-08T21:01:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0162fa63cfa87b840df897eb7ebd932b0cd3b962",
          "body": "…ease bump",
          "is_bot": false,
          "headline": "chore: untrack local scratch/log files accidentally staged in the rel…",
          "author_name": "silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-08T20:59:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f8c68ca678485279eec143a61e39ae88298ed6fe",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): bump to v0.20.0",
          "author_name": "silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-08T20:57:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9432d786fdd33fecc9e8a7e37338dc55c502b0cd",
          "body": "…r speaker confirm (#391) (#419)",
          "is_bot": false,
          "headline": "fix(desktop): replace unsupported prompt() with in-app input modal fo…",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-07T14:57:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e9b37afcea1b1e3df78bcd327f90d5ffac413e39",
          "body": "…rences (#406)\n\nConsolidate scattered documentation (~40 files from root and loose docs/) into\norganized subfolders grouped by purpose:\n\n- docs/architecture/ — system design, audio processing, transcription models\n- docs/checklists/ — pre-commit, compatibility, regression testing workflows\n- docs/de\n[…]\nuced cognitive load through purposeful organization\n- Faster discovery of relevant documentation\n- Preserved git history (all moves via git mv)\n\nCo-authored-by: Claude Sonnet 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: reorganize documentation into clear taxonomy and fix cross-refe…",
          "author_name": "Maosuarez",
          "author_login": "maosuarez",
          "committed_at": "2026-07-07T01:25:16Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0c88050dd28a7c9cd8221491de07dcf03a5fb481",
          "body": "…e Windows hang (#415) (#416)\n\n* feat(diag): stage breadcrumbs for process pipeline to localize Windows hang (#415)\n\n* chore: sync release test count",
          "is_bot": false,
          "headline": "feat(diag): stage breadcrumbs for the process pipeline to localize th…",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-06T17:53:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d59d1d178bf51baa7448a87d5132acf35510f270",
          "body": "… evidence, not in-person system-silent (#412 false positive) (#414)",
          "is_bot": false,
          "headline": "fix(pipeline): silent-remote guard fires only on native-call recovery…",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-04T03:38:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c05a995e58da06fd658d9d4afd84bcddec8f1e0e",
          "body": "…ently lost (#286) (#412)\n\n* Guard silent remote call stems in batch pipeline\n\n* fix(pipeline): key silent-remote guard off capture_warnings; cover queued+recovery paths, drop sparse false-positive (review)\n\n* chore: sync release test count (silent-remote guard)",
          "is_bot": false,
          "headline": "fix(pipeline): flag call recordings whose remote/system audio was sil…",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-04T01:09:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6b717ace566ec43f381a3d9dc7260328800ed10d",
          "body": "…ixed 15s windows (#369) (#410)\n\n* Add VAD segmentation for sherpa transcription\n\n* fix(sherpa): empty-VAD returns silence, unpadded timestamps, clear VAD feature gate (review)\n\n* chore: sync release test count (sherpa vad-seg tests)",
          "is_bot": false,
          "headline": "feat(sherpa): VAD-based segmentation — speech boundaries instead of f…",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-03T22:41:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4d2bbd8146b8327cff753aa432187f28ddc7cc84",
          "body": "…ad of crashing the recording sidecar (#408) (#409)\n\n* fix(core): fall back when ort silero init panics\n\n* chore: sync release test count (vad-ort fallback test)",
          "is_bot": false,
          "headline": "fix(core): ort-silero VAD init panic degrades to whisper-silero inste…",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-03T21:30:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "76036e338837f04280d61e552f6c5c9ff1967bda",
          "body": "… insert mode) (#407)\n\nExisting users with destination = \"clipboard\" had no signal that dictation can\nnow type at the cursor — the feature was invisible to exactly the people who\nalready dictate. Add a 'Where dictated text goes' selector to the DICTATION\nsettings (insert vs clipboard) with a note ab\n[…]\noard fallback. Reuses the existing cmd_set_setting\ndictation/destination path; empty/unset shows as the compiled default (insert).\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(dictation): surface output destination in Settings (discoverable…",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-03T21:26:42Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6b1441c7c6f52e5ac8403680a6a9928e9bd50073",
          "body": "…#403)\n\n* Implement dictation v1 insertion pill\n\n* fix(dictation): clipboard changeCount discipline, verified paste target, session-true pill, raceless hold/tap, early permission honesty, reduced motion\n\n* chore: sync release test count\n\n* fix(ui): make Cmd/Ctrl+B work when the terminal or an input \n[…]\n.\nKeep only the modal/viewer-overlay suppression.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(dictation): v1 — insert-at-cursor + the four-state pill (#378) (…",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-03T17:47:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "387b2a1c93b18fbec8d450379675785e71587544",
          "body": "…collapse (#402)\n\n* feat(ui): add documents pane and calm viewer\n\n* review: scale-true padding, reduced-motion guard, instruction files read-only\n\n* fix(documents): close autosave + list races, selection/escape/shortcut guards, symlink scope (review findings)\n\n* docs(design): add Interaction craft s\n[…]\ne: keep notes.md out of the documents PR (unrelated release-notes staging)\n\n* chore: drop beads drift from documents PR\n\n---------\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(ui): Documents pane + calm markdown viewer + Cmd/Ctrl+B sidebar …",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-03T15:09:39Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "915e1bb8177173a4e9d783197c2545baef9e4430",
          "body": "…ty (#369) (#399)\n\nReal-meeting A/B (75 min, posted on #369) shows the sherpa integration trails\nthe parakeet engine on segmentation, casing, and completeness. Recommending it\nin the README overstates the current state; re-promote once the integration\ngaps close.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: frame sherpa as experimental, not recommended, pending A/B pari…",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-03T03:52:21Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "c570743fa070954f023e033203a5956fc53ab885",
          "body": "Replaces the single long-scroll settings panel with a tab bar\n(General / Capture / Transcription / AI & Privacy / Advanced),\nkeeping all existing section IDs intact so JS loadSettings() and\nRust commands are unaffected.\n\n- Pure wrapping approach: 5 `<div.settings-tab-panel>` wrappers\n  around existi\n[…]\n2 (Windows) compatibility\n- ARIA tablist/tab/tabpanel + roving tabindex for keyboard nav\n- openSettings() resets to General tab on every open\n\nCo-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(ui): reorganize Settings into 5 tabs for faster navigation (#400)",
          "author_name": "Maosuarez",
          "author_login": "maosuarez",
          "committed_at": "2026-07-03T03:52:18Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "cc4fda83629d30939727ead2f3e829d924952f63",
          "body": "…ds are self-contained (#369) (#398)\n\n* Fix sherpa dylib packaging\n\n* fix(core): scope sherpa static linking to macOS (Linux/Windows stay dynamic)\n\nsherpa-rs-sys's static feature panics in build.rs on Linux without a global\nRUSTFLAGS relocation hack, which would have broken CI's all-platform\nengine-\n[…]\ntays tied to the #369 release\ndecision (nothing distributes the feature yet).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(core): static sherpa linking on macOS — opt-in engine-sherpa buil…",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-03T00:27:02Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6ce9b82bd8db8b4ac0fb4d13ea660ef36e98eb95",
          "body": "…tures (#369, #395) (#397)\n\nLive verification on the maintainer machine right after #396: a default build\nwith these features produces artifacts that crash at launch. sherpa-rs and ort\nlink dynamic libraries (libsherpa-onnx-c-api.dylib, libonnxruntime.1.17.1.dylib)\nthat are neither bundled into the \n[…]\ncmake-gated DEFAULT is reverted.\n\nSherpa-in-app now has a concrete blocker: bundle the dylibs + set rpaths, or\nlink statically. Tracked on #369.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(scripts): revert engine-sherpa/vad-ort from default app-build fea…",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-02T19:15:01Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "785216c2e5376a36f59b66a3dd14cd072ea0b80c",
          "body": "…owngrade diagnostics (#395) (#396)\n\nProduction incident 2026-07-02: a live meeting shipped a garbled, sparse live\ntranscript while status reported healthy. Config had engine = \"sherpa\" (set up\nfor SOTA-stack testing in the dev app), but no app build could compile sherpa\n(the tauri crate did not exp\n[…]\neeting; patch\nported to current main, then fresh-context codex review found the dispatch\nblocker and the inherit/case + cmake issues fixed here.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(live): stop silent engine fallback in recording sidecar; honest d…",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-02T18:25:32Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3b4c0311e888aa9409a89f2214ba2463896e3a9e",
          "body": "…ters (#385) (#394)\n\nTurns the suggestion-only name-variant clusters (#390) into a durable, applied\nmerge. `minutes people merge <canonical> <variant...>` records a Person entry in\nthe vocabulary store; on graph rebuild the canonicalizer collapses every variant\nto the canonical slug and re-points me\n[…]\nNGES; all folded in: evidence-ranked\ncanonical, exact slug resolution, precise conflict recovery, testable rebuild,\npartial-success reporting).\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(cli): `minutes people merge` confirm-merge for name-variant clus…",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-02T05:29:10Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2120a49bfed5c18a7a8bf8a56414c47ed70e556a",
          "body": "…on collapse (#392) (#393)\n\nWhen diarization collapses a multi-party meeting to <=1 rendered speaker, the\nsummarizer guesses assignees and empirically defaults to the recorder, silently\nINVERTING who owes whom. Guard: when a meeting had a diarization result but the\nrendered transcript shows <=1 real\n[…]\nl changes folded in: rendered-label\nsignal, diarization-result gate, trusted-attendee denominator, kind-scoped owner\nclearing, status degrade).\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(pipeline): withhold action-item/commitment assignees on diarizati…",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-02T02:31:51Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "30498ee81286452c8f7d42b827512af37934ff4b",
          "body": "…ustering (#385) (#390)\n\nSlice 0 entity-resolution eval harness (test-gated, synthetic) gating\nwrong_merges==0, full drift recall, and the clique property. New entity_cluster\nmodule: separator + same-first-letter single-edit predicate (ASCII-guarded, no\nDouble Metaphone), clique-based clustering (no\n[…]\nthree passes (design, impl, verify);\nfindings folded in (mixed-edge bridge, transitive drift chain, CJK over-match,\ndeterminism, eval realism).\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(graph): entity-resolution eval + suggestion-only name-variant cl…",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-01T16:02:45Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a21f6d39aa04961beaafb3127070e80437a26dc2",
          "body": "… (#388) (#389)\n\n* fix(name-correction): stop rewriting common words to look-alike names (#388)\n\nThe config-gated post-pass name corrector rewrote common English words in the\ntranscript body into unrelated proper nouns pulled from the whole-vault name\npool: work->York (x24), moat->Mat, line->Life, h\n[…]\n@anthropic.com>\n\n* chore: update Cargo.lock after dropping rphonetic (#388)\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(name-correction): stop rewriting common words to look-alike names…",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-01T15:35:19Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "161051b58ec26ec94ad0bf6d04a7c62a5a9aedb6",
          "body": "…mapping health (#384) (#387)\n\nRecovery path for meetings that shipped with anonymous SPEAKER_n labels\nbecause Level-1 speaker mapping timed out, errored, or ran before attendees\nwere known. Re-runs just the mapping (no audio reprocessing) and records a\nspeaker_mapping health block in the frontmatte\n[…]\ngs fixed and\ncovered by tests (merge dedup and High-preservation, mixed-fence code blocks,\nglued-fence body preservation, non-meeting refusal).\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(cli): `minutes redo-speaker-mapping` recovery command + speaker-…",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-07-01T00:24:34Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "127b7c35eecc15ce8c5b93854cfe43860d502207",
          "body": "…386)\n\nReal-vault data (#370 comment from @gtheys) showed person-entity contamination\nwell beyond the role/title suffixes #374 fixed. This handles two more classes on\nthe same two-layer mechanism (strip at extraction in pipeline::add_person_entity,\nheal on reindex in person_identity::normalize_entit\n[…]\nbel leak + garbage-name classes). Multi-person\nconcatenation and name-variant resolution remain tracked there for a designed pass.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(graph): strip speaker labels + gate non-person entities (#385) (#…",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-06-30T22:55:17Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f68bc77857891dc66a5b7c6c53e3e86459dbd04d",
          "body": "* feat(ui): first pass at persistent UI font scaling w/keyboard shortcuts\n\nIntroduces `Cmd/Ctrl +/-/0` keyboard shortcuts to adjust the UI's base font size.  The selected zoom level is saved to local storage, persisting across sessions.\n\nThis implements a scalable typography system using CSS custom \n[…]\nred-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Mat Silverstein <matsilverstein@gmail.com>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(ui): Persistent UI font scaling with keyboard shortcuts (#381)",
          "author_name": "Sherri Alexander",
          "author_login": "SherriAlexander",
          "committed_at": "2026-06-30T03:25:15Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3c86be4de13bfba2cbbf83ac0687e9ba61b3a2e1",
          "body": "… (#380)\n\n* feat(cli): add `minutes transcribe --json` for transcript-only output\n\nAdds a `minutes transcribe <file>` subcommand: audio in, transcript out,\nwith no meeting files written and no summarization. `--json` emits the\nstructured envelope from #376; plain text by default. `--diarize` is\nopt-\n[…]\nite/lib/release.ts: CLI command count 45 → 54 after adding `transcribe`\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(cli): add `minutes transcribe --json` for transcript-only output…",
          "author_name": "Maosuarez",
          "author_login": "maosuarez",
          "committed_at": "2026-06-30T00:39:17Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "463518c43604d5d3a92af80b95587f3aba78966b",
          "body": "One person fragments into many knowledge-graph entities (reported by\n@gtheys in #367: junlei/junrei/junwei + role-suffix variants). This is the\nentity-level sibling of the Every Name Right epic: keep the PERSON right\nacross fragments, with wrong-merge-worse-than-split as the cardinal rule.\n\nResearch\n[…]\n as slice 1. Reviewed against the code: corrected the\nentity-construction layer (pipeline.rs, not knowledge_extract.rs) and the\nclustering predicate (names_likely_same needs a new phonetic/edit edge).",
          "is_bot": false,
          "headline": "docs(plans): person entity resolution proposal + SOTA eval design (#371)",
          "author_name": "Mat Silverstein",
          "author_login": "silverstein",
          "committed_at": "2026-06-30T00:19:05Z",
          "body_truncated": true,
          "is_coding_agent": false
        }
      ],
      "releases_count": 70,
      "commits_last_year": 1297,
      "latest_release_at": "2026-07-17T19:19:39Z",
      "latest_release_tag": "v0.22.1",
      "releases_from_tags": false,
      "days_since_last_push": 0,
      "active_weeks_last_year": 19,
      "days_since_latest_release": 5,
      "mean_days_between_releases": 3.9
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": true,
      "health_percentage": 57,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "minutes-cli",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "ai",
            "memory",
            "whisper",
            "transcription",
            "meeting",
            "command-line-utilities",
            "multimedia::audio"
          ],
          "ecosystem": "crates",
          "matches_repo": true,
          "registry_url": "https://crates.io/crates/minutes-cli",
          "is_deprecated": false,
          "latest_version": "0.22.1",
          "repository_url": "https://github.com/silverstein/minutes",
          "versions_count": 18,
          "total_downloads": 728,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 151,
          "first_published_at": "2026-03-24T18:22:32.223840Z",
          "latest_published_at": "2026-07-17T19:47:38.691301Z",
          "latest_version_yanked": false,
          "days_since_latest_publish": 5
        },
        {
          "name": "minutes-core",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "ai",
            "memory",
            "whisper",
            "transcription",
            "meeting",
            "command-line-utilities",
            "multimedia::audio"
          ],
          "ecosystem": "crates",
          "matches_repo": true,
          "registry_url": "https://crates.io/crates/minutes-core",
          "is_deprecated": false,
          "latest_version": "0.22.1",
          "repository_url": "https://github.com/silverstein/minutes",
          "versions_count": 18,
          "total_downloads": 839,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 180,
          "first_published_at": "2026-03-24T18:21:04.437176Z",
          "latest_published_at": "2026-07-17T19:45:59.321188Z",
          "latest_version_yanked": false,
          "days_since_latest_publish": 5
        },
        {
          "name": "minutes-mcp",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "mcp",
            "meeting",
            "transcription",
            "ai",
            "claude",
            "memory",
            "conversation",
            "whisper"
          ],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/minutes-mcp",
          "is_deprecated": false,
          "latest_version": "0.22.1",
          "repository_url": "https://github.com/silverstein/minutes",
          "versions_count": 62,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 1970,
          "first_published_at": "2026-03-23T05:29:49.784000Z",
          "latest_published_at": "2026-07-17T19:44:08.454000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 5
        },
        {
          "name": "minutes-sdk",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "meeting",
            "transcription",
            "memory",
            "ai",
            "agent",
            "mcp",
            "claude",
            "langchain",
            "conversation",
            "whisper"
          ],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/minutes-sdk",
          "is_deprecated": false,
          "latest_version": "0.22.1",
          "repository_url": "https://github.com/silverstein/minutes",
          "versions_count": 61,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 2352,
          "first_published_at": "2026-03-23T05:29:38.285000Z",
          "latest_published_at": "2026-07-17T19:43:57.274000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 5
        },
        {
          "name": "whisper-guard",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "audio",
            "speech",
            "whisper",
            "transcription",
            "hallucination",
            "multimedia::audio",
            "text-processing"
          ],
          "ecosystem": "crates",
          "matches_repo": true,
          "registry_url": "https://crates.io/crates/whisper-guard",
          "is_deprecated": false,
          "latest_version": "0.3.0",
          "repository_url": "https://github.com/silverstein/minutes",
          "versions_count": 6,
          "total_downloads": 2332,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 689,
          "first_published_at": "2026-03-27T18:56:16.343453Z",
          "latest_published_at": "2026-05-14T23:08:39.905547Z",
          "latest_version_yanked": false,
          "days_since_latest_publish": 69
        }
      ]
    },
    "popularity": {
      "forks": 143,
      "stars": 1372,
      "watchers": 2,
      "fork_history": {
        "days": [
          {
            "date": "2026-03-20",
            "count": 1
          },
          {
            "date": "2026-03-21",
            "count": 7
          },
          {
            "date": "2026-03-23",
            "count": 2
          },
          {
            "date": "2026-03-24",
            "count": 2
          },
          {
            "date": "2026-03-25",
            "count": 3
          },
          {
            "date": "2026-03-26",
            "count": 2
          },
          {
            "date": "2026-03-27",
            "count": 9
          },
          {
            "date": "2026-03-28",
            "count": 9
          },
          {
            "date": "2026-03-29",
            "count": 12
          },
          {
            "date": "2026-03-30",
            "count": 10
          },
          {
            "date": "2026-03-31",
            "count": 10
          },
          {
            "date": "2026-04-01",
            "count": 8
          },
          {
            "date": "2026-04-02",
            "count": 3
          },
          {
            "date": "2026-04-03",
            "count": 3
          },
          {
            "date": "2026-04-04",
            "count": 2
          },
          {
            "date": "2026-04-05",
            "count": 2
          },
          {
            "date": "2026-04-06",
            "count": 3
          },
          {
            "date": "2026-04-07",
            "count": 4
          },
          {
            "date": "2026-04-08",
            "count": 2
          },
          {
            "date": "2026-04-09",
            "count": 3
          },
          {
            "date": "2026-04-11",
            "count": 2
          },
          {
            "date": "2026-04-12",
            "count": 3
          },
          {
            "date": "2026-04-14",
            "count": 2
          },
          {
            "date": "2026-04-15",
            "count": 1
          },
          {
            "date": "2026-04-16",
            "count": 2
          },
          {
            "date": "2026-04-17",
            "count": 2
          },
          {
            "date": "2026-04-19",
            "count": 1
          },
          {
            "date": "2026-04-21",
            "count": 1
          },
          {
            "date": "2026-04-24",
            "count": 1
          },
          {
            "date": "2026-04-25",
            "count": 1
          },
          {
            "date": "2026-04-27",
            "count": 1
          },
          {
            "date": "2026-04-28",
            "count": 1
          },
          {
            "date": "2026-04-30",
            "count": 1
          },
          {
            "date": "2026-05-04",
            "count": 1
          },
          {
            "date": "2026-05-11",
            "count": 2
          },
          {
            "date": "2026-05-12",
            "count": 1
          },
          {
            "date": "2026-05-13",
            "count": 1
          },
          {
            "date": "2026-05-17",
            "count": 1
          },
          {
            "date": "2026-05-18",
            "count": 1
          },
          {
            "date": "2026-05-21",
            "count": 2
          },
          {
            "date": "2026-05-22",
            "count": 2
          },
          {
            "date": "2026-05-23",
            "count": 3
          },
          {
            "date": "2026-05-29",
            "count": 1
          },
          {
            "date": "2026-06-08",
            "count": 1
          },
          {
            "date": "2026-06-12",
            "count": 1
          },
          {
            "date": "2026-06-17",
            "count": 1
          },
          {
            "date": "2026-06-24",
            "count": 1
          },
          {
            "date": "2026-06-27",
            "count": 1
          },
          {
            "date": "2026-07-01",
            "count": 1
          },
          {
            "date": "2026-07-03",
            "count": 1
          },
          {
            "date": "2026-07-07",
            "count": 1
          },
          {
            "date": "2026-07-08",
            "count": 1
          },
          {
            "date": "2026-07-19",
            "count": 1
          },
          {
            "date": "2026-07-21",
            "count": 1
          },
          {
            "date": "2026-07-22",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 143,
        "total_forks": 143
      },
      "star_history": null,
      "open_issues_and_prs": 32
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "examples"
      ],
      "has_llms_txt": true,
      "has_dockerfile": false,
      "has_mcp_signal": true,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": true,
      "typecheck_configs": [
        "crates/mcp/tsconfig.json",
        "crates/sdk/tsconfig.json",
        "docs/demo-video/tsconfig.json",
        "docs/demo/tsconfig.json",
        "site/tsconfig.json",
        "tooling/skills/tsconfig.json"
      ],
      "toolchain_manifests": [
        "Cargo.toml",
        "crates/cli/Cargo.toml",
        "crates/core/Cargo.toml",
        "crates/reader/Cargo.toml",
        "crates/whisper-guard/Cargo.toml",
        "sidecars/diarize-streaming/Cargo.toml",
        "tauri/src-tauri/Cargo.toml"
      ],
      "largest_source_bytes": 688247,
      "source_files_sampled": 313,
      "oversized_source_files": 24,
      "agent_instruction_files": [
        "AGENTS.md",
        "CLAUDE.md"
      ],
      "agent_instruction_max_bytes": 25923
    },
    "dependencies": {
      "manifests": [
        "Cargo.toml",
        "site/package.json"
      ],
      "advisories": {
        "error": null,
        "scope": null,
        "source": null,
        "findings": [],
        "collected": false,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 0,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "crates",
        "npm"
      ],
      "dependencies": [
        {
          "name": "@react-three/drei",
          "manifest": "site/package.json",
          "ecosystem": "npm",
          "version_constraint": "^10.7.7"
        },
        {
          "name": "@react-three/fiber",
          "manifest": "site/package.json",
          "ecosystem": "npm",
          "version_constraint": "^9.5.0"
        },
        {
          "name": "@remotion/player",
          "manifest": "site/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.0.446"
        },
        {
          "name": "@types/three",
          "manifest": "site/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.183.1"
        },
        {
          "name": "@vercel/analytics",
          "manifest": "site/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.0.1"
        },
        {
          "name": "geist",
          "manifest": "site/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.4.1"
        },
        {
          "name": "next",
          "manifest": "site/package.json",
          "ecosystem": "npm",
          "version_constraint": "^16.2.3"
        },
        {
          "name": "react",
          "manifest": "site/package.json",
          "ecosystem": "npm",
          "version_constraint": "^19.2.5"
        },
        {
          "name": "react-dom",
          "manifest": "site/package.json",
          "ecosystem": "npm",
          "version_constraint": "^19.2.5"
        },
        {
          "name": "remotion",
          "manifest": "site/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.0.446"
        },
        {
          "name": "three",
          "manifest": "site/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.183.2"
        },
        {
          "name": "minutes-core",
          "manifest": "crates/cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.22.1"
        },
        {
          "name": "clap",
          "manifest": "crates/cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "ctrlc",
          "manifest": "crates/cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "anyhow",
          "manifest": "crates/cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "tracing",
          "manifest": "crates/cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "tracing-subscriber",
          "manifest": "crates/cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "serde",
          "manifest": "crates/cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "serde_json",
          "manifest": "crates/cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "chrono",
          "manifest": "crates/cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "hound",
          "manifest": "crates/cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "dirs",
          "manifest": "crates/cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "schemars",
          "manifest": "crates/cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "serde_yaml",
          "manifest": "crates/cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "ureq",
          "manifest": "crates/cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "csv",
          "manifest": "crates/cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "walkdir",
          "manifest": "crates/cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "pyannote-rs",
          "manifest": "crates/cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "ort",
          "manifest": "crates/cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "=2.0.0-rc.10"
        },
        {
          "name": "symphonia",
          "manifest": "crates/cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "serde",
          "manifest": "crates/core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "serde_json",
          "manifest": "crates/core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "serde_yaml",
          "manifest": "crates/core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "toml",
          "manifest": "crates/core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "chrono",
          "manifest": "crates/core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "thiserror",
          "manifest": "crates/core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "dirs",
          "manifest": "crates/core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "walkdir",
          "manifest": "crates/core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "which",
          "manifest": "crates/core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "tracing",
          "manifest": "crates/core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "cpal",
          "manifest": "crates/core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "hound",
          "manifest": "crates/core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "notify",
          "manifest": "crates/core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "whisper-rs",
          "manifest": "crates/core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "symphonia",
          "manifest": "crates/core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "ureq",
          "manifest": "crates/core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "fs2",
          "manifest": "crates/core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "schemars",
          "manifest": "crates/core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "crossbeam-channel",
          "manifest": "crates/core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "crossbeam-queue",
          "manifest": "crates/core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "getrandom",
          "manifest": "crates/core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "interprocess",
          "manifest": "crates/core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "pyannote-rs",
          "manifest": "crates/core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "ort",
          "manifest": "crates/core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "ndarray",
          "manifest": "crates/core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "whisper-guard",
          "manifest": "crates/core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.3.0"
        },
        {
          "name": "nnnoiseless",
          "manifest": "crates/core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "base64",
          "manifest": "crates/core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.22"
        },
        {
          "name": "rusqlite",
          "manifest": "crates/core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "tempfile",
          "manifest": "crates/core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "3"
        },
        {
          "name": "@modelcontextprotocol/ext-apps",
          "manifest": "crates/mcp/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.6.0"
        },
        {
          "name": "@modelcontextprotocol/sdk",
          "manifest": "crates/mcp/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.29.0"
        },
        {
          "name": "minutes-sdk",
          "manifest": "crates/mcp/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.22.1"
        },
        {
          "name": "yaml",
          "manifest": "crates/mcp/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.8.3"
        },
        {
          "name": "zod",
          "manifest": "crates/mcp/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.25 || ^4.0"
        },
        {
          "name": "serde",
          "manifest": "crates/reader/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "serde_json",
          "manifest": "crates/reader/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "serde_yaml",
          "manifest": "crates/reader/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "chrono",
          "manifest": "crates/reader/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "walkdir",
          "manifest": "crates/reader/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "schemars",
          "manifest": "crates/reader/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "yaml",
          "manifest": "crates/sdk/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.8.3"
        },
        {
          "name": "tracing",
          "manifest": "crates/whisper-guard/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.1"
        },
        {
          "name": "whisper-rs",
          "manifest": "crates/whisper-guard/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.16"
        },
        {
          "name": "serde",
          "manifest": "crates/whisper-guard/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "@modelcontextprotocol/sdk",
          "manifest": "integrations/claude-cowork-extension/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.29.0"
        },
        {
          "name": "zod",
          "manifest": "integrations/claude-cowork-extension/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.3.6"
        },
        {
          "name": "parakeet-rs",
          "manifest": "sidecars/diarize-streaming/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.3.6"
        },
        {
          "name": "serde_json",
          "manifest": "sidecars/diarize-streaming/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "tauri",
          "manifest": "tauri/src-tauri/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2"
        },
        {
          "name": "tauri-plugin-shell",
          "manifest": "tauri/src-tauri/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2"
        },
        {
          "name": "tauri-plugin-global-shortcut",
          "manifest": "tauri/src-tauri/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2"
        },
        {
          "name": "tauri-plugin-dialog",
          "manifest": "tauri/src-tauri/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2"
        },
        {
          "name": "tauri-plugin-notification",
          "manifest": "tauri/src-tauri/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2"
        },
        {
          "name": "notify-rust",
          "manifest": "tauri/src-tauri/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "4.12.0"
        },
        {
          "name": "serde",
          "manifest": "tauri/src-tauri/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "serde_json",
          "manifest": "tauri/src-tauri/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "serde_yaml",
          "manifest": "tauri/src-tauri/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "minutes-core",
          "manifest": "tauri/src-tauri/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "chrono",
          "manifest": "tauri/src-tauri/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.4"
        },
        {
          "name": "dirs",
          "manifest": "tauri/src-tauri/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "6"
        },
        {
          "name": "libc",
          "manifest": "tauri/src-tauri/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.2"
        },
        {
          "name": "which",
          "manifest": "tauri/src-tauri/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "portable-pty",
          "manifest": "tauri/src-tauri/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.9"
        },
        {
          "name": "base64",
          "manifest": "tauri/src-tauri/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.22"
        },
        {
          "name": "futures-util",
          "manifest": "tauri/src-tauri/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.3"
        },
        {
          "name": "minisign-verify",
          "manifest": "tauri/src-tauri/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.2"
        },
        {
          "name": "reqwest",
          "manifest": "tauri/src-tauri/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.12"
        },
        {
          "name": "tauri-plugin-pty",
          "manifest": "tauri/src-tauri/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.1"
        },
        {
          "name": "tauri-plugin-autostart",
          "manifest": "tauri/src-tauri/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2"
        },
        {
          "name": "tauri-plugin-updater",
          "manifest": "tauri/src-tauri/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2"
        },
        {
          "name": "tauri-plugin-window-state",
          "manifest": "tauri/src-tauri/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2"
        },
        {
          "name": "walkdir",
          "manifest": "tauri/src-tauri/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "ureq",
          "manifest": "tauri/src-tauri/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "window-vibrancy",
          "manifest": "tauri/src-tauri/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.7"
        },
        {
          "name": "notify",
          "manifest": "tauri/src-tauri/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "7"
        },
        {
          "name": "tracing",
          "manifest": "tauri/src-tauri/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.1"
        }
      ],
      "all_dependencies": {
        "error": "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
        "source": null,
        "packages": [],
        "collected": false,
        "truncated": false,
        "total_count": null,
        "direct_count": null,
        "indirect_count": null
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 1,
        "merged_prs": 309,
        "open_issues": 31,
        "closed_ratio": 0.814,
        "closed_issues": 136,
        "closed_unmerged_prs": 28
      },
      "bus_factor": 1,
      "bot_contributors": 0,
      "top_contributors": [
        {
          "type": "User",
          "login": "silverstein",
          "commits": 1213,
          "avatar_url": "https://avatars.githubusercontent.com/u/4837632?v=4"
        },
        {
          "type": "User",
          "login": "gregoire22enpc",
          "commits": 11,
          "avatar_url": "https://avatars.githubusercontent.com/u/23221802?v=4"
        },
        {
          "type": "User",
          "login": "maosuarez",
          "commits": 9,
          "avatar_url": "https://avatars.githubusercontent.com/u/140128662?v=4"
        },
        {
          "type": "User",
          "login": "cathrynlavery",
          "commits": 9,
          "avatar_url": "https://avatars.githubusercontent.com/u/50469282?v=4"
        },
        {
          "type": "User",
          "login": "claude",
          "commits": 6,
          "avatar_url": "https://avatars.githubusercontent.com/u/81847?v=4"
        },
        {
          "type": "User",
          "login": "mwolson",
          "commits": 6,
          "avatar_url": "https://avatars.githubusercontent.com/u/1510193?v=4"
        },
        {
          "type": "User",
          "login": "calebchongc",
          "commits": 6,
          "avatar_url": "https://avatars.githubusercontent.com/u/6571888?v=4"
        },
        {
          "type": "User",
          "login": "gtheys",
          "commits": 5,
          "avatar_url": "https://avatars.githubusercontent.com/u/527237?v=4"
        },
        {
          "type": "User",
          "login": "rymalia",
          "commits": 3,
          "avatar_url": "https://avatars.githubusercontent.com/u/705882?v=4"
        },
        {
          "type": "User",
          "login": "czlonkowski",
          "commits": 3,
          "avatar_url": "https://avatars.githubusercontent.com/u/56956555?v=4"
        }
      ],
      "contributors_sampled": 23,
      "top_contributor_share": 0.94
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "ci.yml",
        "coach-model-eval.yml",
        "lint-workflows.yml",
        "release-cli.yml",
        "release-macos.yml",
        "release-publish.yml",
        "release-windows-desktop.yml",
        "signed-dev-acceptance.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [],
      "has_editorconfig": false,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "Cargo.lock",
        "package-lock.json"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 8,
            "reason": "binaries present in source code",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 3,
            "reason": "branch protection is not maximal on development and all release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 10,
            "reason": "25 out of 25 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 1/30 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 4 contributing companies or organizations",
            "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 29 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": 2,
            "reason": "dependency not pinned by hash detected -- score normalized to 2",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "SAST tool is not run on all commits -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 0,
            "reason": "security policy file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": 8,
            "reason": "5 out of the last 5 releases have a total of 5 signed artifacts.",
            "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": "82 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "3b13375e14897a575ddfcdd9cbcc6367f709b73d",
        "ran_at": "2026-07-23T02:09:09Z",
        "aggregate_score": 4.3,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-21T23:37:29Z",
      "oldest_open_prs": [
        {
          "number": 518,
          "created_at": "2026-07-22T14:51:43Z",
          "last_comment_at": "2026-07-22T14:51:46Z",
          "last_comment_author": "vercel"
        }
      ],
      "last_merged_pr_at": "2026-07-21T23:11:38Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": [
        {
          "number": 63,
          "created_at": "2026-04-02T14:54:18Z",
          "last_comment_at": "2026-07-03T03:52:41Z",
          "last_comment_author": "silverstein"
        },
        {
          "number": 64,
          "created_at": "2026-04-02T14:54:24Z",
          "last_comment_at": "2026-04-03T14:06:00Z",
          "last_comment_author": "silverstein"
        },
        {
          "number": 124,
          "created_at": "2026-04-16T12:44:54Z",
          "last_comment_at": "2026-06-25T23:21:38Z",
          "last_comment_author": "silverstein"
        },
        {
          "number": 162,
          "created_at": "2026-04-21T17:18:06Z",
          "last_comment_at": "2026-06-11T20:27:13Z",
          "last_comment_author": "silverstein"
        },
        {
          "number": 163,
          "created_at": "2026-04-21T17:51:44Z",
          "last_comment_at": "2026-05-13T04:58:53Z",
          "last_comment_author": "silverstein"
        },
        {
          "number": 169,
          "created_at": "2026-04-22T16:45:10Z",
          "last_comment_at": "2026-05-20T05:40:46Z",
          "last_comment_author": "silverstein"
        },
        {
          "number": 183,
          "created_at": "2026-04-23T17:48:31Z",
          "last_comment_at": "2026-04-23T18:02:52Z",
          "last_comment_author": "silverstein"
        },
        {
          "number": 184,
          "created_at": "2026-04-23T19:45:04Z",
          "last_comment_at": "2026-04-29T19:49:48Z",
          "last_comment_author": "silverstein"
        },
        {
          "number": 244,
          "created_at": "2026-05-13T16:33:06Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 245,
          "created_at": "2026-05-13T16:35:25Z",
          "last_comment_at": "2026-06-11T20:27:11Z",
          "last_comment_author": "silverstein"
        },
        {
          "number": 253,
          "created_at": "2026-05-21T20:10:06Z",
          "last_comment_at": "2026-05-22T22:15:03Z",
          "last_comment_author": "silverstein"
        },
        {
          "number": 265,
          "created_at": "2026-05-31T06:55:47Z",
          "last_comment_at": "2026-06-11T16:27:18Z",
          "last_comment_author": "silverstein"
        },
        {
          "number": 267,
          "created_at": "2026-06-01T10:40:44Z",
          "last_comment_at": "2026-06-02T15:29:27Z",
          "last_comment_author": "silverstein"
        },
        {
          "number": 268,
          "created_at": "2026-06-01T10:42:41Z",
          "last_comment_at": "2026-06-02T15:29:31Z",
          "last_comment_author": "silverstein"
        },
        {
          "number": 286,
          "created_at": "2026-06-09T00:49:49Z",
          "last_comment_at": "2026-07-02T17:30:36Z",
          "last_comment_author": "silverstein"
        },
        {
          "number": 305,
          "created_at": "2026-06-11T20:26:17Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 318,
          "created_at": "2026-06-12T16:16:01Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 362,
          "created_at": "2026-06-25T05:41:00Z",
          "last_comment_at": "2026-07-17T21:28:53Z",
          "last_comment_author": "silverstein"
        },
        {
          "number": 369,
          "created_at": "2026-06-26T05:34:07Z",
          "last_comment_at": "2026-07-03T22:14:00Z",
          "last_comment_author": "silverstein"
        },
        {
          "number": 373,
          "created_at": "2026-06-27T19:25:17Z",
          "last_comment_at": "2026-07-08T19:29:56Z",
          "last_comment_author": "silverstein"
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/silverstein/minutes",
    "host": "github.com",
    "name": "minutes",
    "owner": "silverstein"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 69,
      "inputs": {
        "security": 43,
        "vitality": 85,
        "community": 68,
        "governance": 64,
        "engineering": 81
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "excellent",
        "name": "Vitality",
        "value": 85,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "good",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 77,
            "inputs": {
              "commits_last_year": 1297,
              "human_commit_share": 1,
              "days_since_last_push": 0,
              "active_weeks_last_year": 19
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 0 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "19/52 weeks with commits",
                "points": 13.2,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 19
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "1297 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 1297
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 29 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": null,
            "notes": [],
            "value": 98,
            "inputs": {
              "releases_count": 70,
              "latest_release_tag": "v0.22.1",
              "releases_from_tags": false,
              "days_since_latest_release": 5,
              "mean_days_between_releases": 3.9
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "70 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 70
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 5 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 5
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~3.9 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 3.9
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "5 out of the last 5 releases have a total of 5 signed artifacts.",
                "points": 8,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "unverified",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": "repository_too_young",
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": null,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "maintenance record not established from the collected data",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_unverified",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "moderate",
        "name": "Community & Adoption",
        "value": 68,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "moderate",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 69,
            "inputs": {
              "forks": 143,
              "stars": 1372,
              "watchers": 2,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "1,372 stars",
                "points": 50.9,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 1372
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "143 forks",
                "points": 17.9,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 143
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "2 watchers",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "good",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 70,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": true,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (MIT)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "MIT"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 18,
                "status": "met",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          },
          {
            "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": 62,
            "inputs": {
              "packages": [
                "minutes-cli",
                "minutes-core",
                "minutes-mcp",
                "minutes-sdk",
                "whisper-guard"
              ],
              "dependents": null,
              "ecosystems": "crates, npm",
              "total_downloads": 3899,
              "monthly_downloads": 5342
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "5,342 downloads/month across crates, npm",
                "points": 49.7,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 5342,
                      "ecosystems": "crates, 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": "moderate",
        "name": "Sustainability & Governance",
        "value": 64,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "at_risk",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 34,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 23,
              "top_contributor_share": 0.94
            },
            "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 94% of commits",
                "points": 1.4,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 94
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "23 contributors",
                "points": 13.5,
                "status": "met",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 23
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 4 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "good",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 73,
            "inputs": {
              "merged_prs": 309,
              "open_issues": 31,
              "closed_issues": 136,
              "issue_closed_ratio": 0.814,
              "closed_unmerged_prs": 28
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "81% of issues closed",
                "points": 38.1,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 81
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "309/337 decided PRs merged",
                "points": 35.1,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 309,
                      "decided": 337
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 1/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "moderate",
            "name": "Ownership & stewardship",
            "note": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "verified_domain"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 61,
            "inputs": {
              "followers": 177,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "silverstein",
              "public_repos": 25,
              "account_age_days": 4774
            },
            "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": "177 followers of silverstein",
                "points": 16.2,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 177,
                      "login": "silverstein"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "25 public repos, account ~13 yr old",
                "points": 22.3,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 25
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 13
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "minutes-cli",
                "minutes-core",
                "minutes-mcp",
                "minutes-sdk",
                "whisper-guard"
              ],
              "ecosystems": "crates, npm",
              "any_deprecated": false,
              "min_days_since_publish": 5
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "5 package(s) on crates, npm",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 5,
                      "ecosystems": "crates, npm"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 5 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 5
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "62 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 62
                    }
                  }
                ],
                "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": 81,
        "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": "8 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 8
                    }
                  }
                ],
                "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": "25 out of 25 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": 100,
            "inputs": {
              "topics": [
                "agent-skills",
                "meetings",
                "ai",
                "claude",
                "mcp",
                "meeting-notes",
                "privacy",
                "rust",
                "speech-to-text",
                "transcription",
                "voice-memo",
                "whisper",
                "parakeet"
              ],
              "has_wiki": true,
              "homepage": "https://useminutes.app",
              "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://useminutes.app",
                "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": "13 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 13
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "at_risk",
        "name": "Security",
        "value": 43,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": null,
            "notes": [],
            "value": 43,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 18,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 0,
              "scorecard_aggregate": 4.3
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "binaries present in source code",
                "points": 6,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection is not maximal on development and all release branches",
                "points": 2.2,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "25 out of 25 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 1/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 4 contributing companies or organizations",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "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 29 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 2",
                "points": 1,
                "status": "partial",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "5 out of the last 5 releases have a total of 5 signed artifacts.",
                "points": 6,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "82 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 4
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "good",
        "name": "AI Readiness",
        "value": 81,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "excellent",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "has_llms_txt": true,
              "legible_history_share": 0.99,
              "agent_instruction_files": [
                "AGENTS.md",
                "CLAUDE.md"
              ],
              "agent_instruction_max_bytes": 25923
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "AGENTS.md, CLAUDE.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "AGENTS.md, CLAUDE.md"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": "llms.txt present",
                "points": 15,
                "status": "met",
                "details": [
                  {
                    "code": "llms_txt_present",
                    "params": {}
                  }
                ],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "99 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 99,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 68,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "Cargo.lock",
                "package-lock.json"
              ],
              "has_dockerfile": false,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": true,
              "has_linter_config": false,
              "typecheck_configs": [
                "crates/mcp/tsconfig.json",
                "crates/sdk/tsconfig.json",
                "docs/demo-video/tsconfig.json",
                "docs/demo/tsconfig.json",
                "site/tsconfig.json",
                "tooling/skills/tsconfig.json"
              ],
              "agent_commit_share": 0.76,
              "toolchain_manifests": [
                "Cargo.toml",
                "crates/cli/Cargo.toml",
                "crates/core/Cargo.toml",
                "crates/reader/Cargo.toml",
                "crates/whisper-guard/Cargo.toml",
                "sidecars/diarize-streaming/Cargo.toml",
                "tauri/src-tauri/Cargo.toml"
              ],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "Cargo.toml, crates/cli/Cargo.toml, crates/core/Cargo.toml (toolchain convention, no task runner)",
                "points": 12.6,
                "status": "partial",
                "details": [
                  {
                    "code": "toolchain_convention",
                    "params": {
                      "files": "Cargo.toml, crates/cli/Cargo.toml, crates/core/Cargo.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": "crates/mcp/tsconfig.json, crates/sdk/tsconfig.json, docs/demo-video/tsconfig.json, docs/demo/tsconfig.json, site/tsconfig.json, tooling/skills/tsconfig.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "crates/mcp/tsconfig.json, crates/sdk/tsconfig.json, docs/demo-video/tsconfig.json, docs/demo/tsconfig.json, site/tsconfig.json, tooling/skills/tsconfig.json"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "devcontainer, lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "devcontainer, lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "76 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 76,
                      "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 2",
                "points": 2,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 96,
            "inputs": {
              "primary_language": "Rust",
              "largest_source_bytes": 688247,
              "source_files_sampled": 313,
              "oversized_source_files": 24
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "Rust (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "Rust"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "24/313 source files over 60KB",
                "points": 50.8,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 313,
                      "oversized": 24
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "moderate",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 60,
            "inputs": {
              "example_dirs": [
                "examples"
              ],
              "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": "examples",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "examples"
                    }
                  }
                ],
                "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",
    "Could not fetch crates package 'minutes-reader' from its registry",
    "Could not fetch crates package 'minutes-app' from its registry",
    "Could not fetch crates package 'minutes-diarize-sidecar' from its registry",
    "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
    "deps.dev does not index crates:minutes-cli@0.22.1; advisories assessed against the repository dependency graph instead"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-23T02:09:33.350872Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/s/silverstein/minutes.svg",
  "full_name": "silverstein/minutes",
  "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 statisticscrates.io, npm.