Öffentliches Register
Software-GesundheitsberichtSchema 0.27.0 · Metriken 1.13.0 · 2026-07-24 03:37 UTC

forwardimpact / monorepo

Applications that help teams grow and cultivate world-class engineers in the age of AI

JavaScriptApache-2.0★ 3 Sterne⑂ 0 Forksseit Jan. 2026Auf GitHub ansehen ↗

forwardimpact/monorepo erreicht einen Gesundheitsindex von 65 von 100 und liegt damit im Bereich Mittel. Am stärksten schneidet es bei Vitality (86/100) ab, am schwächsten bei Community & Adoption (40/100). Zuletzt heute aktualisiert. Ein einzelner Mitwirkender trägt den Großteil der jüngsten Arbeit.

65
gesamt / 100
Mittel

Software-Gesundheitsindex

Metriken werden auf einer Skala von 1–100 in gewichtete Kategorien gruppiert. Der Gesamtwert beginnt als ihr Mittel; sobald öffentliche Evidenz die Richtlinie für Hochrisikojurisdiktionen auslöst, wird die Bewertung angepasst und erhält die Obergrenze 49 (Gefährdet). AI Readiness liegt außerhalb.

65
Exzellent85-100Vorbildlich; erfüllt im Wesentlichen alle geprüften Kriterien
Gut70-84Gesund; geringfügige Lücken
Mittel50-69Akzeptabel mit deutlichen Lücken; Überprüfung empfohlen
Gefährdet30-49Erhebliche Schwächen; eine Übernahme erfordert Vorsicht
Kritisch1-29Schwerwiegende Probleme (aufgegeben, nur ein Maintainer, keine Hygiene)
VitalitätCommunity &VerbreitungNachhaltigkeit &GovernanceEngineering-QualitätSicherheitAI Readiness

Bewertungsprofil

Jede Achse ist eine Kategorie. Die Form zählt mehr als der Durchschnitt — ein gesundes Projekt füllt die gesamte Fläche, während ein Profil aus Spitzen und Kratern bedeutet, dass Stärke in einer Dimension Risiken in einer anderen verdeckt.

Eigentümerschaft

0 Follower20 öffentliche Reposseit Jan. 2026

Dieses Repository wird von einer Organisation getragen — geteilte, rechenschaftspflichtige Trägerschaft, die jeden einzelnen Maintainer überdauern kann.

Paket-Ökosysteme

RegistryPaketVersionDownloads / MonatVersionenZuletzt veröffentlicht
npmfit-rc0.1.403794vor 5 Tagen
npmfit-doc0.2.372562vor 22 Tagen
npmfit-rag0.1.01101vor 5 Tagen
npmfit-guide0.1.532845vor 5 Tagen
npmfit-unary0.1.1113834vor 5 Tagen
npmfit-logger0.1.321691vor 19 Tagen

Metriken nach Kategorie

Vitalität

Lebt das Projekt — wird Code geschrieben und werden Releases ausgeliefert?

86Exzellent · 22 % des Gesamtindex
Wie die Bewertung erfolgt
36/36Push-Aktualität — letzter Push vor 0 Tagen
19.4/36Commit-Rhythmus — 28/52 Wochen mit Commits
18/18Commit-Volumen — 3.471 Commits im letzten Jahr
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Verwendete Eingangsdaten
commits_last_year3.471
human_commit_share1
days_since_last_push0
active_weeks_last_year28
Wie die Bewertung erfolgt
27/27Liefert Releases aus — 100 Releases veröffentlicht
36/36Release-Aktualität — letztes Release vor 2 Tagen
27/27Release-Rhythmus — ein Release etwa alle 0,6 Tage
0/10OpenSSF Scorecard: Signed-Releases — Project has not signed or included provenance with any releases.
Verwendete Eingangsdaten
releases_count100
latest_release_taggear@v0.3.2
releases_from_tagsnein
days_since_latest_release2
mean_days_between_releases0,6

Community & Verbreitung

Hat das Projekt Nutzer, Downloads, Aufmerksamkeit und ein einladendes Umfeld für Beitragende?

40Gefährdet · 18 % des Gesamtindex
Wie die Bewertung erfolgt
4.9/60Stars — 3 Stars
0/25Forks — 0 Forks
0/15Watcher — 0 Watcher
Verwendete Eingangsdaten
forks0
stars3
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Wie die Bewertung erfolgt
22.5/22.5README
22.5/22.5Lizenz — anerkannte Lizenz (Apache-2.0)
18/18CONTRIBUTING-Leitfaden
0/13.5Verhaltenskodex
0/7.2Issue-Vorlage
0/6.3PR-Vorlage
Verwendete Eingangsdaten
has_readmeja
has_licenseja
has_contributingja
has_issue_templatenein
has_code_of_conductnein
has_pull_request_templatenein
Wie die Bewertung erfolgt
42.7/80Downloads pro Monat — 1.581 Downloads/Monat über npm
0/20Abhängige in der Registry — von diesem Ökosystem nicht ausgewiesen
Verwendete Eingangsdaten
packagesfit-rc, fit-doc, fit-rag, fit-guide, fit-unary, fit-logger
dependents
ecosystemsnpm
total_downloads
monthly_downloads1.581
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): Abhängige in der Registry. Die verbleibenden Gewichte wurden renormalisiert.

Nachhaltigkeit & Governance

Überdauert das Projekt die Menschen, die es tragen — Bus-Faktor, Reaktionsfähigkeit, Trägerschaft und Paketpflege?

58Mittel · 24 % des Gesamtindex
Wie die Bewertung erfolgt
9/54Bus-Faktor — 1 Beitragende decken die Hälfte aller Commits ab
4/22.5Commit-Verteilung — wichtigste beitragende Person verfasste 82 % der Commits
2.7/13.5Breite der Beitragenden — 2 Beitragende
10/10OpenSSF Scorecard: Contributors — project has 3 contributing companies or organizations -- score normalized to 10
Verwendete Eingangsdaten
bus_factor1
contributors_sampled2
top_contributor_share0,824
Wie die Bewertung erfolgt
43.6/46.8Issue-Lösungsquote — 93 % der Issues geschlossen
34.5/38.3PR-Annahme — 1.372/1.520 entschiedene PRs gemergt
0/15OpenSSF Scorecard: Code-Review — Found 0/30 approved changesets -- score normalized to 0
Verwendete Eingangsdaten
merged_prs1.372
open_issues29
closed_issues395
issue_closed_ratio0,932
closed_unmerged_prs148
Wie die Bewertung erfolgt
30/30Organisatorische Trägerschaft — im Besitz einer Organisation
0/20Verifizierte Domain
0/25Reichweite des Inhabers — 0 Follower von forwardimpact
10.7/25Kontohistorie — 20 öffentliche Repos, Kontoalter ca. 0 Jahre
Verwendete Eingangsdaten
followers0
owner_typeOrganization
is_verified
owner_loginforwardimpact
public_repos20
account_age_days192

Paketpflege

100Exzellent
Wie die Bewertung erfolgt
25/25Veröffentlicht & auflösbar — 6 Paket(e) auf npm
35/35Veröffentlichungsaktualität — letzte Veröffentlichung vor 5 Tagen
20/20Versionshistorie — 5 veröffentlichte Versionen
20/20Nicht veraltet — aktiv, nicht veraltet oder zurückgezogen
Verwendete Eingangsdaten
packagesfit-rc, fit-doc, fit-rag, fit-guide, fit-unary, fit-logger
ecosystemsnpm
any_deprecatednein
min_days_since_publish5

Engineering-Qualität

Sind grundlegende Engineering- und Dokumentationspraktiken vorhanden?

76Gut · 20 % des Gesamtindex
Wie die Bewertung erfolgt
24/24CI-Workflows — 30 Workflow(s)
24/24Tests vorhanden
16/16Linter-Konfiguration — biome.json, eslint.config.js
0/9.6Pre-Commit-Hooks
0/6.4.editorconfig
20/20OpenSSF Scorecard: CI-Tests — 26 out of 26 merged PRs checked by a CI test -- score normalized to 10
Verwendete Eingangsdaten
has_cija
has_testsja
has_editorconfignein
has_linter_configja
has_precommit_confignein
Wie die Bewertung erfolgt
30/30README
0/25Dokumentationsverzeichnis
15/15Dokumentations-/Homepage-Site — http://www.forwardimpact.team
10/10Repository-Beschreibung
0/10Topics
10/10Wiki
Verwendete Eingangsdaten
topics
has_wikija
homepagehttp://www.forwardimpact.team
has_readmeja
has_docs_dirnein
has_descriptionja

Sicherheit

Sind die sichtbaren Sicherheits- und Lieferkettenpraktiken belastbar, ohne ungeklärte Exposition gegenüber Hochrisikojurisdiktionen?

62Mittel · 16 % des Gesamtindex
Wie die Bewertung erfolgt
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — branch protection not enabled on development/release branches
2.5/2.5CI-Tests — 26 out of 26 merged PRs checked by a CI test -- score normalized to 10
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/30 approved changesets -- score normalized to 0
2.5/2.5Contributors — project has 3 contributing companies or organizations -- score normalized to 10
10/10Dangerous-Workflow — no dangerous workflow patterns detected
7.5/7.5Dependency-Update-Tool — update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5Lizenz — license file detected
7.5/7.5Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
0/5Packaging — keine Daten
4/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 8
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
5/5Security-Policy — security policy file detected
0/7.5Signed-Releases — Project has not signed or included provenance with any releases.
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
3/7.5Vulnerabilities — 6 existing vulnerabilities detected
Verwendete Eingangsdaten
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate5,2
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): packaging. Die verbleibenden Gewichte wurden renormalisiert.
Wie die Bewertung erfolgt
35/35Direkte Abhängigkeiten ohne bekannte Advisories — keine direkte Abhängigkeit trägt ein bekanntes Advisory
25/25Indirekte Abhängigkeiten ohne bekannte Advisories — keine indirekte Abhängigkeit trägt ein bekanntes Advisory
0/40Keine offenen Advisories — kein Advisory trägt ein Veröffentlichungsdatum
Verwendete Eingangsdaten
sourceosv
advisories0
affected_packages0
assessed_packages116
unassessed_packages0
affected_by_severitynone
direct_affected_packages0
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): Keine offenen Advisories. Die verbleibenden Gewichte wurden renormalisiert. Abgeglichen wurde die Laufzeit-Abhängigkeitshülle von npm:fit-rc@0.1.40 — das, was die Installation des veröffentlichten Pakets nach sich zieht — mit 116 Paketen. Erreichbarkeit wird nicht analysiert.

AI Readiness

Wie gut ist das Repository dafür ausgestattet, mit KI-Coding-Agenten entwickelt und gepflegt zu werden? Ein unabhängiges, experimentelles Badge — Gewicht 0,0, es wird eigenständig ausgewiesen und verändert den Gesamt-Gesundheitswert nicht.

78Gut · 0 % des Gesamtindex
Wie die Bewertung erfolgt
45/45Agentenanweisungen — .claude/skills/CLAUDE.md, .github/CLAUDE.md, CLAUDE.md, config/CLAUDE.md, libraries/CLAUDE.md, libraries/libbridge/CLAUDE.md, libraries/libconfig/CLAUDE.md, products/CLAUDE.md, products/guide/CLAUDE.md, products/map/CLAUDE.md, products/outpost/CLAUDE.md, products/outpost/templates/CLAUDE.md, references/CLAUDE.md, services/CLAUDE.md, websites/CLAUDE.md
15/15Maschinenlesbare Doku (llms.txt) — llms.txt vorhanden
40/40Lesbare Commit-Historie — 100 von 100 menschlichen Commits benennen ihre Absicht (strukturierter Betreff oder erläuternder Text)
Verwendete Eingangsdaten
has_llms_txtja
legible_history_share1
agent_instruction_files.claude/skills/CLAUDE.md, .github/CLAUDE.md, CLAUDE.md, config/CLAUDE.md, libraries/CLAUDE.md, libraries/libbridge/CLAUDE.md, libraries/libconfig/CLAUDE.md, products/CLAUDE.md, products/guide/CLAUDE.md, products/map/CLAUDE.md, products/outpost/CLAUDE.md, products/outpost/templates/CLAUDE.md, references/CLAUDE.md, services/CLAUDE.md, websites/CLAUDE.md
agent_instruction_max_bytes7.904
Wie die Bewertung erfolgt
18/18Bootstrap mit einem Befehl — design/justfile, justfile, websites/fit/justfile, websites/jidoka/justfile, websites/kata/justfile, websites/monorepo/justfile
22/22Automatisierte Tests
11/11Lint-/Format-Konfiguration — biome.json, eslint.config.js
0/11Statische Typprüfung
10/10Reproduzierbare Umgebung — devcontainer, Dockerfile
10/10Belegte Agentenpraxis — 92 der letzten 100 Commits von Agenten verfasst oder ihnen zugeschrieben
5/8Automatisierte Wartung — Abhängigkeits-Automatisierung konfiguriert, in den erfassten Commits nicht beobachtet
8/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 8
Verwendete Eingangsdaten
has_nixnein
has_testsja
lockfiles
has_dockerfileja
typed_languagenein
bootstrap_filesdesign/justfile, justfile, websites/fit/justfile, websites/jidoka/justfile, websites/kata/justfile, websites/monorepo/justfile
has_devcontainerja
has_linter_configja
typecheck_configs
agent_commit_share0,92
toolchain_manifests
dependency_bot_commit_share0
Wie die Bewertung erfolgt
0/45Typprüfbarer Code — JavaScript ohne Typprüfungs-Konfiguration
55/55Handhabbare Dateigrößen — 1/1.641 Quelldateien über 60 KB
Verwendete Eingangsdaten
primary_languageJavaScript
largest_source_bytes61.828
source_files_sampled1.641
oversized_source_files1
Wie die Bewertung erfolgt
40/40API-Schema (OpenAPI/GraphQL/proto) — libraries/libproto/proto/common.proto, libraries/libproto/proto/resource.proto, libraries/libproto/proto/tool.proto, services/bridge/proto/bridge.proto, services/embedding/proto/embedding.proto, services/ghserver/proto/ghserver.proto, services/ghuser/proto/ghuser.proto, services/graph/proto/graph.proto, services/map/proto/map.proto, services/pathway/proto/pathway.proto, services/span/proto/span.proto, services/tenancy/proto/tenancy.proto, services/vector/proto/vector.proto
0/20MCP-Server
0/40Lauffähige Beispiele
Verwendete Eingangsdaten
example_dirs
has_mcp_signalnein
api_schema_fileslibraries/libproto/proto/common.proto, libraries/libproto/proto/resource.proto, libraries/libproto/proto/tool.proto, services/bridge/proto/bridge.proto, services/embedding/proto/embedding.proto, services/ghserver/proto/ghserver.proto, services/ghuser/proto/ghuser.proto, services/graph/proto/graph.proto, services/map/proto/map.proto, services/pathway/proto/pathway.proto, services/span/proto/span.proto, services/tenancy/proto/tenancy.proto, services/vector/proto/vector.proto

Eckdaten

3GitHub-Sterne
2Mitwirkende
3.471Commits, letzte 12 Monate
0Tage seit letztem Push
100Releases
1Bus-Faktor
29offene Issues
npmPaket-Ökosysteme

Warnungen zur Datenerhebung

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • Could not fetch npm package 'fit-map' from its registry
  • Could not fetch npm package 'fit-pack' from its registry
  • GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Weitere Details

OpenSSF Scorecard 5.2 / 10
5.2Gesamtwert

Unabhängige, werkzeugneutrale Sicherheitsbewertung durch das quelloffene OpenSSF Scorecard. Jede Prüfung honoriert eine Sicherheits-Praxis, nicht das Werkzeug eines bestimmten Anbieters. Prüfungen, die Scorecard nicht ermitteln konnte, sind mit k. A. markiert und vom Sicherheitswert ausgeschlossen (nie als null gezählt).Scorecard v5.5.0 · 2026-07-24 03:36 UTC

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
10CI-Tests26 out of 26 merged PRs checked by a CI test -- score normalized to 10
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/30 approved changesets -- score normalized to 0
10Contributorsproject has 3 contributing companies or organizations -- score normalized to 10
10Dangerous-Workflowno dangerous workflow patterns detected
10Dependency-Update-Toolupdate tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
k. A.Packagingpackaging workflow not detected
8Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 8
0SASTSAST tool is not run on all commits -- score normalized to 0
10Security-Policysecurity policy file detected
0Signed-ReleasesProject has not signed or included provenance with any releases.
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
4Vulnerabilities6 existing vulnerabilities detected
Direkte Abhängigkeiten 21
RegistryPaketVersionsvorgabeManifest
npmforwardimpact-monorepo.package.json
npm@forwardimpact/libcodegen0.0.0launchers/fit-codegen/package.json
npm@forwardimpact/libdoc0.0.0launchers/fit-doc/package.json
npm@forwardimpact/guide0.0.0launchers/fit-guide/package.json
npm@forwardimpact/landmark0.0.0launchers/fit-landmark/package.json
npm@forwardimpact/libsupervise0.0.0launchers/fit-logger/package.json
npm@forwardimpact/map0.0.0launchers/fit-map/package.json
npm@forwardimpact/outpost0.0.0launchers/fit-outpost/package.json
npm@forwardimpact/libpack0.0.0launchers/fit-pack/package.json
npm@forwardimpact/pathway0.0.0launchers/fit-pathway/package.json
npm@forwardimpact/librag0.0.0launchers/fit-process/package.json
npm@forwardimpact/librag0.0.0launchers/fit-rag/package.json
npm@forwardimpact/librc0.0.0launchers/fit-rc/package.json
npm@forwardimpact/summit0.0.0launchers/fit-summit/package.json
npm@forwardimpact/libsupervise0.0.0launchers/fit-svscan/package.json
npm@forwardimpact/libterrain0.0.0launchers/fit-terrain/package.json
npm@forwardimpact/librpc0.0.0launchers/fit-unary/package.json
npm@forwardimpact/libtelemetry0.0.0launchers/fit-visualize/package.json
npm@forwardimpact/gemba0.0.0launchers/gemba-benchmark/package.json
npm@forwardimpact/gemba0.0.0launchers/gemba-harness/package.json
npm@forwardimpact/gemba0.0.0launchers/gemba-trace/package.json
Alle Abhängigkeiten nicht erhoben

Der aufgelöste Abhängigkeitssatz konnte für diesen Bericht nicht erhoben werden: GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Abhängigkeits-Advisories 0

Die Installation von npm:fit-rc@0.1.40 zieht 116 Pakete nach sich, direkt und transitiv: 0 tragen bekannte Advisories, davon 0 direkte Abhängigkeiten.

Keine bekannten Advisories betreffen die bewerteten Abhängigkeiten.

Ein Advisory bedeutet, dass die im Abhängigkeitsgraphen erfasste Version in den betroffenen Bereich eines Advisories fällt. Erreichbarkeit wird nicht analysiert, und der Graph enthält Entwicklungs- und Test-Pins — ein Fund kann das Werkzeug betreffen und nicht die ausgelieferte Software.

JSON-Rohbericht maschinenlesbar
{
  "data": {
    "repo": {
      "topics": [],
      "is_fork": false,
      "size_kb": 57422,
      "has_wiki": true,
      "homepage": "http://www.forwardimpact.team",
      "languages": {
        "ASL": 41062,
        "CSS": 230258,
        "HTML": 66773,
        "Just": 15042,
        "Shell": 94549,
        "Swift": 35288,
        "Python": 818,
        "PLpgSQL": 7478,
        "Mustache": 8751,
        "Dockerfile": 1671,
        "Handlebars": 1002,
        "JavaScript": 8063060,
        "TypeScript": 4402
      },
      "pushed_at": "2026-07-24T03:36:06Z",
      "created_at": "2026-01-14T17:26:39Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-23T23:16:20Z",
      "description": "Applications that help teams grow and cultivate world-class engineers in the age of AI",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "Apache-2.0",
      "default_branch": "main",
      "license_spdx_raw": "Apache-2.0",
      "primary_language": "JavaScript",
      "significant_languages": [
        "JavaScript"
      ]
    },
    "owner": {
      "blog": "https://forwardimpact.team/",
      "name": "Forward Impact Engineering",
      "type": "Organization",
      "login": "forwardimpact",
      "company": null,
      "location": null,
      "followers": 0,
      "avatar_url": "https://avatars.githubusercontent.com/u/254527721?v=4",
      "created_at": "2026-01-12T18:48:41Z",
      "is_verified": null,
      "public_repos": 20,
      "account_age_days": 192
    },
    "license": {
      "state": "standard",
      "spdx_id": "Apache-2.0",
      "raw_spdx": "Apache-2.0",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "gear@v0.3.2",
          "kind": "other",
          "published_at": "2026-07-21T20:08:13Z"
        },
        {
          "tag": "gear@v0.3.1",
          "kind": "other",
          "published_at": "2026-07-21T20:01:14Z"
        },
        {
          "tag": "gear@v0.3.0",
          "kind": "other",
          "published_at": "2026-07-21T07:04:14Z"
        },
        {
          "tag": "gear@v0.2.0",
          "kind": "other",
          "published_at": "2026-07-20T12:10:16Z"
        },
        {
          "tag": "gear@v0.1.23",
          "kind": "other",
          "published_at": "2026-07-19T11:18:44Z"
        },
        {
          "tag": "map@v0.15.64",
          "kind": "other",
          "published_at": "2026-07-19T11:12:27Z"
        },
        {
          "tag": "gear@v0.1.22",
          "kind": "other",
          "published_at": "2026-07-19T08:08:47Z"
        },
        {
          "tag": "outpost@v3.12.0",
          "kind": "other",
          "published_at": "2026-07-19T08:03:38Z"
        },
        {
          "tag": "guide@v0.1.53",
          "kind": "other",
          "published_at": "2026-07-19T08:02:48Z"
        },
        {
          "tag": "gear@v0.1.21",
          "kind": "other",
          "published_at": "2026-07-16T08:42:29Z"
        },
        {
          "tag": "gear@v0.1.20",
          "kind": "other",
          "published_at": "2026-07-15T18:24:00Z"
        },
        {
          "tag": "gear@v0.1.17",
          "kind": "other",
          "published_at": "2026-07-14T13:05:43Z"
        },
        {
          "tag": "gear@v0.1.16",
          "kind": "other",
          "published_at": "2026-07-13T15:46:58Z"
        },
        {
          "tag": "gear@v0.1.15",
          "kind": "other",
          "published_at": "2026-07-13T13:41:17Z"
        },
        {
          "tag": "map@v0.15.63",
          "kind": "other",
          "published_at": "2026-07-13T13:34:04Z"
        },
        {
          "tag": "landmark@v0.1.31",
          "kind": "other",
          "published_at": "2026-07-13T13:33:23Z"
        },
        {
          "tag": "summit@v0.1.31",
          "kind": "other",
          "published_at": "2026-07-13T13:32:55Z"
        },
        {
          "tag": "pathway@v0.26.9",
          "kind": "other",
          "published_at": "2026-07-13T13:31:57Z"
        },
        {
          "tag": "summit@v0.1.30",
          "kind": "other",
          "published_at": "2026-07-04T09:37:33Z"
        },
        {
          "tag": "map@v0.15.62",
          "kind": "other",
          "published_at": "2026-07-04T09:37:20Z"
        },
        {
          "tag": "landmark@v0.1.30",
          "kind": "other",
          "published_at": "2026-07-04T09:37:18Z"
        },
        {
          "tag": "gear@v0.1.14",
          "kind": "other",
          "published_at": "2026-07-04T03:03:57Z"
        },
        {
          "tag": "outpost@v3.11.0",
          "kind": "other",
          "published_at": "2026-07-03T21:59:09Z"
        },
        {
          "tag": "outpost@v3.10.0",
          "kind": "other",
          "published_at": "2026-07-01T17:26:47Z"
        },
        {
          "tag": "pathway@v0.26.8",
          "kind": "other",
          "published_at": "2026-07-01T17:25:58Z"
        },
        {
          "tag": "guide@v0.1.52",
          "kind": "other",
          "published_at": "2026-07-01T17:25:33Z"
        },
        {
          "tag": "gear@v0.1.13",
          "kind": "other",
          "published_at": "2026-07-01T17:33:23Z"
        },
        {
          "tag": "gear@v0.1.12",
          "kind": "other",
          "published_at": "2026-06-29T20:06:55Z"
        },
        {
          "tag": "gear@v0.1.11",
          "kind": "other",
          "published_at": "2026-06-29T16:22:06Z"
        },
        {
          "tag": "gear@v0.1.10",
          "kind": "other",
          "published_at": "2026-06-29T02:51:32Z"
        },
        {
          "tag": "gear@v0.1.9",
          "kind": "other",
          "published_at": "2026-06-27T23:33:19Z"
        },
        {
          "tag": "gear@v0.1.8",
          "kind": "other",
          "published_at": "2026-06-27T22:38:24Z"
        },
        {
          "tag": "outpost@v3.9.0",
          "kind": "other",
          "published_at": "2026-06-27T12:34:01Z"
        },
        {
          "tag": "gear@v0.1.7",
          "kind": "other",
          "published_at": "2026-06-27T04:31:51Z"
        },
        {
          "tag": "outpost@v3.8.1",
          "kind": "other",
          "published_at": "2026-06-25T23:25:24Z"
        },
        {
          "tag": "landmark@v0.1.29",
          "kind": "other",
          "published_at": "2026-06-25T23:24:08Z"
        },
        {
          "tag": "summit@v0.1.29",
          "kind": "other",
          "published_at": "2026-06-25T23:24:08Z"
        },
        {
          "tag": "map@v0.15.61",
          "kind": "other",
          "published_at": "2026-06-25T23:23:53Z"
        },
        {
          "tag": "pathway@v0.26.7",
          "kind": "other",
          "published_at": "2026-06-25T23:23:53Z"
        },
        {
          "tag": "outpost@v3.8.0",
          "kind": "other",
          "published_at": "2026-06-25T13:51:37Z"
        },
        {
          "tag": "outpost@v3.7.0",
          "kind": "other",
          "published_at": "2026-06-25T09:09:51Z"
        },
        {
          "tag": "outpost@v3.6.0",
          "kind": "other",
          "published_at": "2026-06-24T18:25:21Z"
        },
        {
          "tag": "pathway@v0.26.6",
          "kind": "other",
          "published_at": "2026-06-23T19:42:52Z"
        },
        {
          "tag": "outpost@v3.5.1",
          "kind": "other",
          "published_at": "2026-06-21T22:08:12Z"
        },
        {
          "tag": "landmark@v0.1.28",
          "kind": "other",
          "published_at": "2026-06-23T19:42:43Z"
        },
        {
          "tag": "outpost@v3.5.0",
          "kind": "other",
          "published_at": "2026-06-23T19:42:37Z"
        },
        {
          "tag": "gear@v0.1.6",
          "kind": "other",
          "published_at": "2026-06-23T19:46:37Z"
        },
        {
          "tag": "guide@v0.1.51",
          "kind": "other",
          "published_at": "2026-06-23T19:41:32Z"
        },
        {
          "tag": "pathway@v0.26.5",
          "kind": "other",
          "published_at": "2026-06-23T19:41:22Z"
        },
        {
          "tag": "map@v0.15.60",
          "kind": "other",
          "published_at": "2026-06-23T19:41:14Z"
        },
        {
          "tag": "outpost@v3.4.0",
          "kind": "other",
          "published_at": "2026-06-19T17:42:51Z"
        },
        {
          "tag": "outpost@v3.3.2",
          "kind": "other",
          "published_at": "2026-06-17T15:28:46Z"
        },
        {
          "tag": "outpost@v3.3.1",
          "kind": "other",
          "published_at": "2026-06-17T14:51:57Z"
        },
        {
          "tag": "landmark@v0.1.27",
          "kind": "other",
          "published_at": "2026-06-15T06:09:18Z"
        },
        {
          "tag": "guide@v0.1.50",
          "kind": "other",
          "published_at": "2026-06-15T06:08:54Z"
        },
        {
          "tag": "map@v0.15.59",
          "kind": "other",
          "published_at": "2026-06-15T06:04:54Z"
        },
        {
          "tag": "pathway@v0.26.4",
          "kind": "other",
          "published_at": "2026-06-12T14:03:48Z"
        },
        {
          "tag": "summit@v0.1.28",
          "kind": "other",
          "published_at": "2026-06-12T14:02:39Z"
        },
        {
          "tag": "outpost@v3.3.0",
          "kind": "other",
          "published_at": "2026-06-12T14:01:45Z"
        },
        {
          "tag": "landmark@v0.1.26",
          "kind": "other",
          "published_at": "2026-06-12T13:59:46Z"
        },
        {
          "tag": "guide@v0.1.49",
          "kind": "other",
          "published_at": "2026-06-12T13:49:36Z"
        },
        {
          "tag": "map@v0.15.58",
          "kind": "other",
          "published_at": "2026-06-12T13:47:29Z"
        },
        {
          "tag": "pathway@v0.26.3",
          "kind": "other",
          "published_at": "2026-06-12T07:29:02Z"
        },
        {
          "tag": "outpost@v3.2.2",
          "kind": "other",
          "published_at": "2026-06-12T00:02:49Z"
        },
        {
          "tag": "outpost@v3.2.1",
          "kind": "other",
          "published_at": "2026-06-11T23:30:19Z"
        },
        {
          "tag": "map@v0.15.57",
          "kind": "other",
          "published_at": "2026-06-11T01:56:07Z"
        },
        {
          "tag": "landmark@v0.1.25",
          "kind": "other",
          "published_at": "2026-06-11T01:55:42Z"
        },
        {
          "tag": "guide@v0.1.48",
          "kind": "other",
          "published_at": "2026-06-11T01:55:29Z"
        },
        {
          "tag": "gear@v0.1.5",
          "kind": "other",
          "published_at": "2026-06-10T23:48:39Z"
        },
        {
          "tag": "guide@v0.1.47",
          "kind": "other",
          "published_at": "2026-06-10T13:02:43Z"
        },
        {
          "tag": "landmark@v0.1.24",
          "kind": "other",
          "published_at": "2026-06-09T07:23:11Z"
        },
        {
          "tag": "map@v0.15.56",
          "kind": "other",
          "published_at": "2026-06-09T07:22:55Z"
        },
        {
          "tag": "summit@v0.1.27",
          "kind": "other",
          "published_at": "2026-06-09T07:22:14Z"
        },
        {
          "tag": "svcoauth@v0.1.0",
          "kind": "other",
          "published_at": "2026-06-09T02:13:45Z"
        },
        {
          "tag": "svcghuser@v0.1.0",
          "kind": "other",
          "published_at": "2026-06-09T02:13:42Z"
        },
        {
          "tag": "outpost@v3.2.0",
          "kind": "other",
          "published_at": "2026-06-08T08:19:39Z"
        },
        {
          "tag": "map@v0.15.55",
          "kind": "other",
          "published_at": "2026-06-07T16:10:06Z"
        },
        {
          "tag": "pathway@v0.26.2",
          "kind": "other",
          "published_at": "2026-06-05T06:50:43Z"
        },
        {
          "tag": "outpost@v3.1.4",
          "kind": "other",
          "published_at": "2026-05-31T20:10:10Z"
        },
        {
          "tag": "summit@v0.1.26",
          "kind": "other",
          "published_at": "2026-05-31T20:10:10Z"
        },
        {
          "tag": "map@v0.15.54",
          "kind": "other",
          "published_at": "2026-05-31T20:09:26Z"
        },
        {
          "tag": "pathway@v0.26.1",
          "kind": "other",
          "published_at": "2026-05-31T20:09:16Z"
        },
        {
          "tag": "landmark@v0.1.23",
          "kind": "other",
          "published_at": "2026-05-31T20:09:16Z"
        },
        {
          "tag": "summit@v0.1.25",
          "kind": "other",
          "published_at": "2026-05-31T12:15:18Z"
        },
        {
          "tag": "guide@v0.1.46",
          "kind": "other",
          "published_at": "2026-05-31T12:15:02Z"
        },
        {
          "tag": "pathway@v0.26.0",
          "kind": "other",
          "published_at": "2026-05-31T12:14:52Z"
        },
        {
          "tag": "pathway@v0.25.66",
          "kind": "other",
          "published_at": "2026-05-28T09:45:38Z"
        },
        {
          "tag": "guide@v0.1.45",
          "kind": "other",
          "published_at": "2026-05-28T09:45:19Z"
        },
        {
          "tag": "outpost@v3.1.3",
          "kind": "other",
          "published_at": "2026-05-28T09:44:46Z"
        },
        {
          "tag": "map@v0.15.53",
          "kind": "other",
          "published_at": "2026-05-28T09:44:25Z"
        },
        {
          "tag": "landmark@v0.1.22",
          "kind": "other",
          "published_at": "2026-05-28T09:44:18Z"
        },
        {
          "tag": "summit@v0.1.24",
          "kind": "other",
          "published_at": "2026-05-28T09:44:04Z"
        },
        {
          "tag": "map@v0.15.52",
          "kind": "other",
          "published_at": "2026-05-26T05:40:06Z"
        },
        {
          "tag": "pathway@v0.25.65",
          "kind": "other",
          "published_at": "2026-05-26T05:39:55Z"
        },
        {
          "tag": "summit@v0.1.23",
          "kind": "other",
          "published_at": "2026-05-25T06:46:44Z"
        },
        {
          "tag": "pathway@v0.25.64",
          "kind": "other",
          "published_at": "2026-05-25T06:46:34Z"
        },
        {
          "tag": "landmark@v0.1.21",
          "kind": "other",
          "published_at": "2026-05-25T06:46:27Z"
        },
        {
          "tag": "guide@v0.1.44",
          "kind": "other",
          "published_at": "2026-05-25T06:45:30Z"
        },
        {
          "tag": "outpost@v3.1.2",
          "kind": "other",
          "published_at": "2026-05-25T06:45:30Z"
        },
        {
          "tag": "map@v0.15.51",
          "kind": "other",
          "published_at": "2026-05-25T06:45:24Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "a227f32d7bc49250fb2dab370cd88d581b36f558",
          "body": "…an (#1995)\n\n* plan(2270): benchmark trace parity — implementation plan draft\n\nPlan overview plus four parts: shared trace core (identity + split\nmodules), benchmark runtime pipeline, action/workflow contract, and\ndocumentation. Panel review pending; PR opens after a clean panel.\n\nCo-Authored-By: Cl\n[…]\nrt-04 step 6.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01Shyc6EN4qu7T6gAQ6Zoz7k\n\n---------\n\nCo-authored-by: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "plan(2270): benchmark trace parity — one trace pipeline, five-file pl…",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-23T23:16:15Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0efbede37f818bb293dc64fae790198b37aa4558",
          "body": "…ivers (#1994)\n\n* design(2270): benchmark trace parity — one trace pipeline for both drivers\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01L7BTGAAGoNYdap5usi9qVq\n\n* design(2270): address panel round 1 — artifact rooting, identity grammar, la\n[…]\n hosts today.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01L7BTGAAGoNYdap5usi9qVq\n\n---------\n\nCo-authored-by: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "design(2270): benchmark trace parity — one trace pipeline for both dr…",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-23T22:19:19Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "55b764e3c30eb098da2dc869f17881ff5093101e",
          "body": "…s (#1993)\n\nSpec (WHAT/WHY) making gemba-benchmark and the benchmark action produce\nagent traces exactly the way gemba-harness does: raw envelope traces\npreserved per cell, shared trace--<case>--<participant>.<role>.ndjson\nnaming, one shared split implementation, trace--* workflow artifacts on\nthe e\n[…]\nh vulnerability-scanning red:\nthe failure is newly published registry advisories (postcss high,\nhono/@hono/node-server moderates) unrelated to this markdown-only diff;\nsecurity fix follows separately.",
          "is_bot": false,
          "headline": "spec(2270): benchmark trace parity — eval traces as workflow artifact…",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-23T21:17:28Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6c13c0cceac47a0099c0e63fc522cd061fefbcde",
          "body": "…s (#1992)\n\n* docs(references): reconcile the bionova-apps reference with current tooling\n\nBring the reference spec in line with the infrastructure the live repo now\nruns on, without importing its feature evolution.\n\n- Mark prerequisites A (--output-root, --schema-dir) and B (prose to SQL)\n  impleme\n[…]\nsfy format-md\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VdE8eQkxfCLnB4Pmkxo4xN\n\n---------\n\nCo-authored-by: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(kata): migrate kata-agent and kata-interview actions to gemba CLI…",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-22T05:54:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "800d556b5054f9c2091711141b9a17cc10d89d87",
          "body": "v1.0.8 installs the report CLI in the merge job, fixing the\n'gemba-benchmark: command not found' failure both eval workflows hit\nat the merge step.\n\n\nClaude-Session: https://claude.ai/code/session_01YMPZXTtLLYsrB6Q1YuQ2V4\n\nCo-authored-by: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(ci): bump benchmark reusable workflow to v1.0.8 (#1991)",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-21T20:22:51Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "d0525b7f24472afb65620b12dfe79c0f025d48b3",
          "body": "… (#1990)\n\nFresh upstream advisories landed mid-release and failed the audit gate\non main, the gear npm publish, and the gear binaries publish: fast-uri\n3.0.0-3.1.2 and linkify-it <=5.0.1, both high. Bump the fast-uri\noverride to ^3.1.3, add a linkify-it ^5.0.2 override, and update\nbun.lock so resol\n[…]\noint the\nGEAR_RELEASE pins and the co-versioned installer default accordingly.\n\n\nClaude-Session: https://claude.ai/code/session_01YMPZXTtLLYsrB6Q1YuQ2V4\n\nCo-authored-by: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(security): clear high npm audit findings and re-cut gear as 0.3.2…",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-21T19:47:30Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f8cdd1c0d58a06375f610388511574aaad2906d3",
          "body": "…ll.sh --only (#1989)\n\n* fix(benchmark): install report CLI in the merge job\n\nThe reusable workflow's merge job ran the benchmark action in merge\nmode without installing gemba-benchmark, so the report step failed\nwith 'command not found' (exit 127). The shard job gets the binary\nfrom forwardimpact/b\n[…]\nf-consistent.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01YMPZXTtLLYsrB6Q1YuQ2V4\n\n---------\n\nCo-authored-by: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(benchmark): install the report CLI in the merge job via fit-insta…",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-21T19:31:16Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "73bf1ff69be3e3c83bbcb77a1f59fd89bab8174c",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(settings): set default permission mode to acceptEdits",
          "author_name": "D. Olsson",
          "author_login": null,
          "committed_at": "2026-07-21T08:51:40Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "3d92fa17e80b1309419e2c11897ad045ce188f6d",
          "body": "Write(path) rules are not matched by file permission checks; the\nexisting Edit(path) rules already cover all file-editing tools.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(settings): drop redundant Write() permission rules",
          "author_name": "D. Olsson",
          "author_login": null,
          "committed_at": "2026-07-21T08:48:43Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "609c17f9d2af9c6e4084031795423536cafd2e50",
          "body": "The jidoka-pages repo now exists with the workflow-mode Pages deploy;\nwebsite-jidoka.yaml publishes to it like the fit and kata sites.\n\nCo-authored-by: D. Olsson <dick.olsson@newpage.io>\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(websites): record the live Jidoka publishing pipeline (#1988)",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-21T08:17:44Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "b4dee81aab2d6f887b3bbb8c2f339da9a63e7bf5",
          "body": "Flips all 27 forwardimpact/bootstrap pins to the v1.0.18 SHA, whose\nbundled installer defaults to gear@v0.3.0 — the first CI configuration\nthat installs and invokes the jidoka binary end to end, closing the\nrename window.\n\nCo-authored-by: D. Olsson <dick.olsson@newpage.io>\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(ci): repin bootstrap to v1.0.18 (#2260) (#1987)",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-21T07:39:21Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "2c1288af4e872c2c397ab86cf7862b73ea88f294",
          "body": "…986)\n\nThe gear@v0.3.0 bundle carries the jidoka binary (renamed from\ncoaligned); bumping the installer default lets bootstrapped runners\ninstall and invoke it.\n\nCo-authored-by: D. Olsson <dick.olsson@newpage.io>\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(bootstrap): default FIT_GEAR_RELEASE to gear@v0.3.0 (#2260) (#1…",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-21T07:12:42Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "59423e6c90e14b7969dd4ea80dc0d8a53b7394f4",
          "body": null,
          "is_bot": false,
          "headline": "docs: fix heading levels in CONTRIBUTING.md",
          "author_name": "D. Olsson",
          "author_login": null,
          "committed_at": "2026-07-21T06:58:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "09f024ff753fb1386f3446bf8954b0b4646e04f4",
          "body": "The jidoka binary replaces coaligned in the gear bundle; 0.x minor\nsignals the renamed binary set.\n\nCo-authored-by: D. Olsson <dick.olsson@newpage.io>\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(gear): bump to 0.3.0 (#2260) (#1985)",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-21T06:26:05Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "6f53f55cddedf902adb4052934dbef7ab84bf1a0",
          "body": "…verrides (#1983)\n\n* feat(jidoka): CLI + library axis — jidoka product, libinvariant rename (#2260)\n\nPart 1 of plan 2260-a: products/jidoka package with the moved bin,\nlibcoaligned → libinvariant rename (bin and branded discovery default\nremoved, findInvariantsRoot gains a rulesDir parameter), .coal\n[…]\nreturns 0 vulnerabilities.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: D. Olsson <dick.olsson@newpage.io>\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(security): bump axios, body-parser, brace-expansion, protobufjs o…",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-21T06:02:22Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f92375101a6d950a995351d3ed6d6d7916acf3cf",
          "body": "* feat(jidoka): CLI + library axis — jidoka product, libinvariant rename (#2260)\n\nPart 1 of plan 2260-a: products/jidoka package with the moved bin,\nlibcoaligned → libinvariant rename (bin and branded discovery default\nremoved, findInvariantsRoot gains a rulesDir parameter), .coaligned →\n.jidoka con\n[…]\nt\nper design § Interfaces.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: D. Olsson <dick.olsson@newpage.io>\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(jidoka): reframe Co-Aligned as the Jidoka product (#2260) (#1980)",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-21T05:30:45Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7f5de36bc90444bfaf3554b466b5f98311f7ad09",
          "body": "…1982)\n\nPart 4 Step 4.3, stage 2. eval-kata and eval-coaligned move to the\nbenchmark sibling SHA produced by the stage-1 merge — the first\nprojection whose nested bootstrap pin (v1.0.17) installs the\ngemba-benchmark binary its own clis: line requests.\n\nCo-authored-by: D. Olsson <dick.olsson@newpage.io>\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(ci): repin the reusable benchmark workflow to v1.0.7 (#2250) (#…",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-20T12:50:28Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "e43c07f24c2f9f7f54e9e55b3d903d291f7d57f6",
          "body": "…) (#1981)\n\nPart 4 Step 4.3, stage 1. Every bootstrap pin moves to v1.0.17\n(71bd7553 — installs the gemba-* binaries from gear@v0.2.0); harness to\nv1.0.4 (f1943c61), wiki to v1.0.2 (ad004295), benchmark to v1.0.6\n(9cf5ddb6) — the re-seeded projections carrying the renamed steps. The\nclis: values and\n[…]\na lane, issue #1978) and the\nbenchmarks/fit-wiki eval-family path reference (permanent keep).\n\nCo-authored-by: D. Olsson <dick.olsson@newpage.io>\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(ci): repin agent-run actions and flip CLI names to gemba (#2250…",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-20T12:43:02Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "951e6f9e87db8db0bf597442c109afb4d543ab6b",
          "body": "…977)\n\nPart 4 Step 4.2. The gear@v0.2.0 release is the first that ships the\ngemba-named binaries, so the bundled installer's default pin moves to it;\ncallers may still override via FIT_GEAR_RELEASE.\n\nCo-authored-by: D. Olsson <dick.olsson@newpage.io>\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(bootstrap): default FIT_GEAR_RELEASE to gear@v0.2.0 (#2250) (#1…",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-20T12:34:13Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f8e1f0e4e7dacc5e28be085141d63135abbe3181",
          "body": "…ear 0.2.0 (#2250) (#1976)\n\nSpec 2250 Part 4 Step 4.1 version arithmetic. libharness and libxmr take\nmajors (bin field and ./bin/* exports removed — breaking); libwiki takes\nthe 0.x minor that signals the same break and re-ranges onto\nlibharness/libxmr ^3.0.0; gemba stays at its first-release 0.1.0 \n[…]\nersions; gear takes the 0.x minor for the\ndependency break (three runtime libraries dropped).\n\nCo-authored-by: D. Olsson <dick.olsson@newpage.io>\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(release): bump libharness 3.0.0, libxmr 3.0.0, libwiki 0.3.0, g…",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-20T07:14:33Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "794753171c640438e459a5db70de2355f2767c23",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore: switch defaultMode from bypassPermissions to auto",
          "author_name": "D. Olsson",
          "author_login": null,
          "committed_at": "2026-07-20T06:50:39Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "d41612b78c3cb259b276d2f652d5bd9168bb1021",
          "body": "* plan(2260): reframe Co-Aligned as the Jidoka product\n\nImplementation plan for the approved design: overview plus four parts\n(CLI+library axis, actions+CI axis, brand surfaces, release train).\nPanel review in progress; amendments may follow.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nC\n[…]\n in plan-a-01\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01GiD7fUtnNXkoU3EArKCMxQ\n\n---------\n\nCo-authored-by: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "plan(2260): reframe Co-Aligned as the Jidoka product (#1975)",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-20T05:29:53Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c99d9a7eb9c8c0a383102c3ca9b721f235b1f05e",
          "body": "* spec(2260): reframe Co-Aligned as the Jidoka product\n\nDraft spec + design (lockstep co-execution): rename libcoaligned to\nlibinvariant, introduce products/jidoka/ owning the jidoka CLI and the\npublished jidoka action, rebrand the standard, website, skills, pack,\nlauncher, and config directory, wit\n[…]\nthe lint ban.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01PY48JGmm9A2JXSzHxRvgDH\n\n---------\n\nCo-authored-by: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "design(2260): reframe Co-Aligned as the Jidoka product (#1974)",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-20T04:39:20Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4bd6a1f8305baeae1cec15e96b9bcd997287db86",
          "body": "* feat(gemba): own the runtime CLI axis under the new product (#2250)\n\nPart 1 of plan 2250-a. Create products/gemba (bin map + deps, no\nexports/main/src), move the six thin CLI entry points out of libharness,\nlibwiki, and libxmr under the gemba-* names, and purify the libraries\ninto import-only pack\n[…]\nobservable\nordering delta.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: D. Olsson <dick.olsson@newpage.io>\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(gemba): the Gemba agent-runtime platform product (#2250) (#1973)",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-20T04:38:55Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b48faeea40513e4ab7b969f5d217816d76033050",
          "body": "* plan(2250): the Gemba agent-runtime platform product\n\nPlan for spec 2250 against design-a: four parts — CLI axis (products/gemba\npackage, six bins, library purification, launchers, public-cli-set),\nactions axis (bootstrap/harness/benchmark/wiki relocation + publish\nwiring), product framing (Gear r\n[…]\nbution, rg -n consistency.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: D. Olsson <dick.olsson@newpage.io>\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "plan(2250): the Gemba agent-runtime platform product (#1972)",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-19T17:27:53Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "26b0e1c4c72aa862460a0935493935be41bc8859",
          "body": "* design(2250): an agent-runtime platform product\n\nCapture a new Secondary meta-product, PLATFORM (name deferred), whose job is\nto stand up and operate an agent team, split cleanly out of Gear along one\nboundary: PLATFORM ships what you run; Gear ships what you import.\n\nPLATFORM has two surfaces. An\n[…]\nee libraries.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_016xYdChqvHtDr7BG2woh2Kj\n\n---------\n\nCo-authored-by: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "design(2250): an agent-runtime platform product (#1971)",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-19T14:59:18Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "cd9329696f41dcf62f8cff5e162b99f27670df4c",
          "body": "…es (#1969)\n\n* fix(librpc): bound unary calls with an absolute deadline across retries\n\nfit-process vectors hung effectively forever when the embedding service\nwas down: each UNAVAILABLE attempt fed exponential retry backoff\n(~17 minutes of sleep alone), and the vector processor swallowed batch\nfail\n[…]\nafter the assertions pass.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: D. Olsson <dick.olsson@newpage.io>\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(librpc): bound unary calls with an absolute deadline across retri…",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-19T12:55:38Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "40d8a6df09bdcef699cd2f6552d9912766d731ec",
          "body": "…(#1970)\n\nSubject-scoped commands (readiness, timeline, coverage, sources, and\nvoice with no flags) now resolve their subject through one explicit\nhelper: --email wins, else the signed-in identity's email, else an error\nthat names the sign-in path. evidence keeps its deliberately broad\nno-email view\n[…]\n_email is the persona's upward manager, while health --manager\ntakes a team lead's own email.\n\nCo-authored-by: D. Olsson <dick.olsson@newpage.io>\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(landmark): default the subject email from the signed-in identity …",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-19T12:46:05Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e51ee4b4a956e9a75c103f66ba315af5f1b20615",
          "body": "…ess in bootstrap (#1968)\n\n* fix(libcodegen): prune stale generated service dirs and verify freshness in bootstrap\n\nA proto rename left the old generated/services dir behind: codegen only\nmkdirs and re-includes leftovers in exports.js, and bootstrap's warm\npath never compared the generated tree agai\n[…]\nsets before the prune test\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: D. Olsson <dick.olsson@newpage.io>\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(libcodegen): prune stale generated service dirs and verify freshn…",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-19T12:02:36Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "11a2067e0f2041cbc00a9bd9ac8a6b2794f2098d",
          "body": "…racy (#1967)\n\nlibrepl owns the input contract end to end: positional argv is now a\none-shot prompt line (one onLine call, then exit 0), equivalent to piped\nstdin; flags still win and positionals are never commands. The terminal\nformatter finally honors its TTY promise — pipes get plain text instead\n[…]\nxamples, and tool list caught up\nwith reality (pathway 3005, mcp 3011, CamelCase tool names).\n\nCo-authored-by: D. Olsson <dick.olsson@newpage.io>\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(guide): one-shot prompts, TTY-aware output, and status/skill accu…",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-19T11:51:32Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "12ad090908809f88f20f9506c6e82a8c433e5cbc",
          "body": "…e (#1966)\n\nThe substrate stage shipped only the starter standard (J040/J060) while\nseeding rosters spanning J040-J100, so every staged workspace failed\nlevel-gated Landmark commands with 'Unknown level'. Stage now ships the\npathway standard from the same data root as the activity data (starter\nas f\n[…]\nhe stack survives, and FIT_DEBUG=1 prints full stacks from the\nfit-map and fit-landmark bins.\n\nCo-authored-by: D. Olsson <dick.olsson@newpage.io>\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(map): stage the pathway standard and enforce roster level coverag…",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-19T11:35:17Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "75df76f1085982171ae4be7bb086fc9a7b998d42",
          "body": "…embedding fixes, gear bundle)\n\nlibharness 1.4.0 -> 2.0.0: spec 2240 renamed the fit-benchmark\ninvariants subcommand to grade (no alias) and made the grade object\nrequired in result records -- breaking on the published CLI surface,\nso major despite the feat commit type. libwiki and gear carry the\n^2.0.0 range bump. gear 0.1.23 ships the post-2240 fit-trace and\nfit-benchmark binaries (--gate/--weight). map and svcembedding are\nroutine fixes.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(release): cut 5 packages (libharness 2.0.0 scored grading, map/…",
          "author_name": "D. Olsson",
          "author_login": null,
          "committed_at": "2026-07-19T10:48:16Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "527bea777d2918991a562b1b3470156300603137",
          "body": "…(#2240) (#1965)\n\n* feat(libharness): add pure check-row grading derivation\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n* feat(libharness): discover and validate hidden test suites in the task loader\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n* feat(libharness): add hidden\n[…]\nalse-passing their checks.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: D. Olsson <dick.olsson@newpage.io>\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(libharness): scored benchmark tasks — row-authoritative grading …",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-19T10:31:34Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3d2532be53bc37c323f07205955d565791919cf0",
          "body": "The default reloadConfig handed createProductConfig a bare\n{ cwd, env } bag where the Config constructor expects a Runtime (or\n{ runtime } wrapper). Config then read rt.proc off the bag, got\nundefined, and libstorage crashed with \"Cannot read properties of\nundefined (reading 'env')\" — breaking `fit-\n[…]\nrap the ambient runtime and override only proc.cwd so the post-init\nre-read stays anchored at the stage target, as the original comment\nintends.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(map): pass a real runtime to reloadConfig in substrate stage",
          "author_name": "D. Olsson",
          "author_login": null,
          "committed_at": "2026-07-19T09:37:36Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0cef946b60b9e1691776c29714f6ef45cec85568",
          "body": "Without it, any input chunk over the model's max sequence length fails\nthe whole embedding batch with HTTP 413, so fit-process vectors drops\nthose documents from the index (73 of 192 batches on the current\nsynthetic corpus). Truncating over-length inputs is the right trade for\nan embeddings backend: a clipped embedding still lands in the index.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(embedding): pass --auto-truncate to the TEI backend",
          "author_name": "D. Olsson",
          "author_login": null,
          "committed_at": "2026-07-19T09:37:17Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "e180e179bd58bcf8c21598d26e21037fa227e5d2",
          "body": "…s (#1963)\n\n* Revise spec 2240: de-tangle hidden tests from invariants\n\nHidden test suites become a first-class libharness subsystem driven by\na declarative tests/manifest.yaml: the harness stages each hidden test\ninto the agent CWD, runs it, converts the exit status into one check\nrow, and restores\n[…]\nwithout\nthem.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01LMa8NiWcBJ21QfcPLJMsAg\n\n---------\n\nCo-authored-by: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "spec(2240): scored benchmark tasks with harness-run hidden test suite…",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-19T08:13:24Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ef8e305f9e0eac492f916382d4772a203d88807e",
          "body": "…e (#1964)\n\n* docs(skills): make the clean-break decision visible at every pipeline gate\n\nReviews anchor on artifacts, but the clean-break rule was written as a\ndefault that applies when the spec says nothing. An absent statement\ncannot be reviewed, so shims slipped through.\n\nEach phase now carries \n[…]\ntifact alone.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01TFjs43ZN6DMu5pshVv6Rv1\n\n---------\n\nCo-authored-by: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(skills): carry the clean-break decision through the spec pipelin…",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-19T08:03:26Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c8274692d85d777050f223bcdc306c6ab7c806cc",
          "body": "…rading (#1962)\n\nThe dual-channel draft (weights beside an authoritative exit code) hinged\non a documentation-only coupling contract: a failing scored check must not\nfail the exit code, or every partial run zeroes out. Review concluded that\ncontract was the design's weakest point and a clean break i\n[…]\n and\nthe implement-feature leading example carry over from the previous draft.\n\n\nClaude-Session: https://claude.ai/code/session_01HyGEFbRLfPmDmQscL8sSYn\n\nCo-authored-by: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(spec-2240): rework scored benchmark tasks to row-authoritative g…",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-19T05:59:11Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "fbf6bef36c689a6c75f946fc7e58d68299b65ce0",
          "body": "Implementation plan for the approved design: score derivation module,\nrecord-schema additions, runner and invariants-subcommand composition,\nreport meanScore/scoreAtK aggregation and rendering, fit-trace assert\n--weight, the implement-feature scored conversion, and documentation.\n\nPanel: 3 technical\n[…]\nt accepted\ntrade-off; overriding it is a design amendment, not a plan decision.\n\nCo-authored-by: D. Olsson <dick.olsson@newpage.io>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "plan(2240): scored benchmark tasks (#1961)",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-18T18:37:59Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8b7f0fc405b93b17f67e987c8793b4d5e5210021",
          "body": "…, libharness advisor)\n\n- libcoaligned 0.1.17 -> 0.1.18\n- libcodegen 0.1.68 -> 0.1.69\n- libgraph 0.1.78 -> 0.1.79\n- libharness 1.3.0 -> 1.4.0\n- libmock 0.1.14 -> 0.1.15\n- libproto 0.1.3 -> 0.1.4\n- librc 0.1.39 -> 0.1.40\n- libresource 0.1.117 -> 0.1.118\n- librpc 0.1.110 -> 0.1.111\n- libtelemetry 0.1.\n[…]\n1.0 -> 3.12.0\n- svcspan 0.1.49 -> 0.1.50 (first release under svcspan prefix, was svctrace@v0.1.49)\n- librag 0.1.0 (first release)\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(release): cut 18 packages (svcspan rename, librag consolidation…",
          "author_name": "D. Olsson",
          "author_login": null,
          "committed_at": "2026-07-18T17:41:48Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7c2133c26c16dee052882889caccccbebad18c2d",
          "body": "Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore: reflow markdown to satisfy format:md",
          "author_name": "D. Olsson",
          "author_login": null,
          "committed_at": "2026-07-18T17:37:40Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "7a35ffa321c57a9cef65f2aa4a6dbd38288d9d8a",
          "body": "… alongside binary gates (#1960)\n\n* spec(2240): draft spec + design for scored benchmark tasks\n\nScored vs judged task shapes for fit-benchmark: mechanical score from\nweighted invariant check rows, judge kept as a binary gate, convention\nover configuration per task. Review panels pending; findings wi\n[…]\ntion section.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01Bt3bNsA2WAXzTp2rKqyeUc\n\n---------\n\nCo-authored-by: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "design(2240): scored benchmark tasks — mechanical capability gradient…",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-18T17:19:37Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "18032e7a395f153ef80661eb72edae994f7b92ff",
          "body": "…2230) (#1959)\n\n* feat(libharness): onPrompt tap on AgentRunner (#2230)\n\nStep 1 of plan 2230-a: optional onPrompt callback invoked with the\neffective (amend-applied) prompt of each run and resume, so a transcript\nrecorder can capture exactly what the caller received.\n\nCo-Authored-By: Claude Opus 4.8\n[…]\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: D. Olsson <dick.olsson@newpage.io>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(libharness): native advisor consults for fit-harness sessions (#…",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-18T12:35:05Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7326f0af0da2b08771228bbc0c2e3bae60170a74",
          "body": "* feat(archivist): add archivist agent and kata-archive skill (#2210)\n\nAdd the archivist persona (Study, Act) and its kata-archive skill, owning\ntime-based retention of terminal, time-bounded artifacts — past-week agent\nlogs and past-month storyboards removed directly in the wiki, terminal spec\ndire\n[…]\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: D. Olsson <dick.olsson@newpage.io>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(kata): archivist + devex-engineer agents (#2210) (#1957)",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-18T11:34:18Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "29492e3437e26703e77893c0917de35a701b0749",
          "body": "* feat(librag): consolidate six RAG bins into fit-process and fit-rag (#2220)\n\nNew librag library aggregates the retrieval-augmented-generation CLI surface\ninto two subcommand bins: fit-process (resources|graphs|vectors) and fit-rag\n(search|query|subjects). Each command module ports its predecessor \n[…]\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: D. Olsson <dick.olsson@newpage.io>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(librag): consolidate the RAG and codegen CLIs (#2220) (#1958)",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-18T11:29:15Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ad20b7390e09d46131ffdcc057521a5efca0a6e4",
          "body": "Translate design 2230-a into an eight-step implementation plan for\nlibraries/libharness: runner onPrompt tap, transcript recorder, advisor\nsession + budget, Advisor tool + extra-tools seam, loop-mode and run-mode\nwiring, CLI flags, exports, and docs.\n\nPanel: 3-reviewer kata-review, 0 blockers; confi\n[…]\n missing from libmock' —\nit exists at libraries/libmock/src/fixture/eval.js:19.\n\nCo-authored-by: D. Olsson <dick.olsson@newpage.io>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "plan(2230): native advisor consults for fit-harness sessions (#1956)",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-18T11:18:58Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "66a046bb4b6e29bf063b5c2fbf13f11110bf6d24",
          "body": "Execution-ready plan for the two roster agents, two Study-phase skills,\nand the retention-PR approval class. One implementation PR (enumeration-drift\ncouples the new skill dirs to the published-skills counts). Two clean\nkata-review panels.\n\nCo-authored-by: D. Olsson <dick.olsson@newpage.io>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "plan(2210): archivist + devex-engineer agents (#1954)",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-18T10:49:27Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "9be3ca92599331b49b340c80f1c5bb67e3043975",
          "body": "…g merge (#1955)\n\n* fix(skills): leave-it goes straight to discard_changes after verifying merge\n\nA plain ExitWorktree remove practically always refuses: squash merges\nleave the pre-squash commits on the branch, and the tool can also fail\nto verify worktree state entirely. Make the clean-tree + merg\n[…]\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: D. Olsson <dick.olsson@newpage.io>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(skills): leave-it goes straight to discard_changes after verifyin…",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-18T10:46:02Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "88b2b3c6fdd5c1419f35a7bf65fcaf122c412a2e",
          "body": "Spec (WHAT/WHY) and design (WHICH/WHERE) for an executor-triggered\nadvisor consult in libharness: one-shot judge-shaped session on a\nstronger model behind an Advisor MCP tool, per-participant transcript\nrecorder, code-enforced consult budget, and trace evidence. Lockstep\nco-execution: spec and desig\n[…]\newer batch and the 3-reviewer design re-panel are\naddressed in these revisions.\n\nCo-authored-by: D. Olsson <dick.olsson@newpage.io>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "design(2230): native advisor consults for fit-harness sessions (#1953)",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-18T10:33:21Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "71af12414a8173834df1a7b04053f4ed4378e9fc",
          "body": "Translate design 2220-a into an execution-ready plan: create librag with\nfit-process/fit-rag subcommand bins, fold fit-download-bundle into\nfit-codegen download, make the proto-compiler toolchain opt-in, and migrate\nevery call site, skill, and doc as one clean break.\n\nCo-authored-by: D. Olsson <dick.olsson@newpage.io>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "plan(2220): consolidate RAG and codegen CLIs (#1952)",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-18T10:06:52Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "ce9d5fa9e2ad31315ac99d3edcaf5260d0009325",
          "body": "Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(leave-it): skill to leave and remove a worktree",
          "author_name": "D. Olsson",
          "author_login": null,
          "committed_at": "2026-07-18T10:02:09Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "ad9df995083a783a041d1bf92628cd5e7cb5f2f0",
          "body": "Architectural design for spec 2210: two roster agents (archivist,\ndevex-engineer) and two Study-phase skills (kata-archive,\nkata-devex-audit), plus a new agent-originated retention-PR approval\nclass gated on a product-manager review. Reuses the established agent\nprofile, coverage-map audit, review-panel, and merge-gate shapes.\n\nCo-authored-by: D. Olsson <dick.olsson@newpage.io>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "design(2210): archivist + devex-engineer agents (#1951)",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-18T09:57:27Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "067b7c09d6a630c854e027e4843cfbe5abe2a486",
          "body": "* design(2220): consolidate RAG and codegen CLIs\n\nLockstep spec + design for consolidating the fragmented RAG CLI surface\nand the codegen distribution CLIs, from the CLI-consolidation research\nquorum finding.\n\n- New librag library with fit-process (write) and fit-rag (read)\n  subcommand CLIs replaci\n[…]\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: D. Olsson <dick.olsson@newpage.io>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "design(2220): consolidate RAG and codegen CLIs (#1950)",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-18T09:38:10Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "438b9466e7492ef04621dc64340623db086a24b7",
          "body": "* spec(2210): archivist + devex-engineer agents\n\nAdd two Kata agents. Archivist owns time-based retention of terminal\nspecs and past-week logs/storyboards; DevEx Engineer owns codebase\nhealth and a new review-panel dimension. Each gets one new skill\n(kata-archive, kata-devex-audit). Retention PRs ar\n[…]\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: D. Olsson <dick.olsson@newpage.io>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "spec(2210): archivist + devex-engineer agents (#1949)",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-18T09:23:59Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9694a26d724c655a2773c8558e2900a244c25f88",
          "body": "…on merge (#1948)\n\nA sharded benchmark ran fit-benchmark report --format=text for every\nshard and for the merge, and text always rendered the full report\n(summary, pass@k, and per-task detail with per-run tables, invariant\nchecks, judge commentary, and errors). A 6-shard run produced six full\nsummar\n[…]\nmers using the action directly and\nunsharded keep the full summary by default.\n\n\nClaude-Session: https://claude.ai/code/session_01NtUUGSexm1pNA6qGcmBvDv\n\nCo-authored-by: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(libharness): compact per-shard benchmark summaries, full report …",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-18T07:45:15Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "64bd8009ef26cc15ae1c5bc57076a3490f2d220c",
          "body": "* feat(svcspan): rename svctrace service to svcspan\n\nComplete clean-break rename of the span-ingestion service from svctrace to\nsvcspan, removing the identifier collision with the unrelated fit-trace\nlibrary. Renames the directory, package (@forwardimpact/svcspan), bin\n(fit-svcspan), proto package/s\n[…]\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: D. Olsson <dick.olsson@newpage.io>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(svcspan): rename svctrace to svcspan (#2200) (#1947)",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-17T15:29:02Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7674fbc2bf97f71e9a748b2f5268790b7a1f9f14",
          "body": "Execution-ready plan-a.md for spec 2200 (svctrace → svcspan rename), plus a manual runtime smoke-test section and service start-up clarifications in services/ and config/ CLAUDE.md (config.json is gitignored, use just rc-* or source .env, fit-rc runs services under Node).",
          "is_bot": false,
          "headline": "plan(2200): rename svctrace to svcspan (#1944)",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-16T12:18:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e05e4596f8f89c2341ebd3c606b5f9562d8f6e15",
          "body": "…ooks (#1945)\n\nQuiet, non-fatal session-start hooks; resolve tools through ordered install channels (release → brew/apt/npm) so web sessions fall back to trusted registries when github.com is blocked; add --soft for session hooks; add the coaligned launcher and extend the public-cli-set invariant for the one non-fit public CLI.",
          "is_bot": false,
          "headline": "feat(bootstrap): trusted install channels and quieter session-start h…",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-16T07:34:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fe53fac8de7b92747b8dd4a6811edf7faac9baf2",
          "body": "Cuts a fresh gear tag on top of 98015b17b so the tap job runs with the\nmerged render-formula.sh (creates Formula/fit-gear.rb from scratch). The\nv0.1.20 run published all 123 assets but its tap job failed because the\nold update-formula.sh only rewrote an existing formula and the tap ships\ncasks only. Carries the already-live libpack@0.1.11 (fit-pack stage --all).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(gear): bump to 0.1.21 to validate render-formula.sh tap fix",
          "author_name": "D. Olsson",
          "author_login": null,
          "committed_at": "2026-07-16T06:55:05Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "35c2bd07ecd8fab931c5ef0d7c0a9ea0c5ee7a28",
          "body": "Neutralize ambient DEBUG=* for the eslint (jsdoc) check so its wildcard can't dump internal logs and code-path graphs, make debug logging opt-in in the .env examples, and print a one-line pass confirmation from the metadata, dependabot, and jsdoc checks. `bun run check` output drops from ~2.3M lines to ~26, all signal.",
          "is_bot": false,
          "headline": "chore(check): cut check-chain noise and confirm each step (#1943)",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-15T21:31:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3362832a10f9bf4991f5edc27f638d727a855650",
          "body": "…#1942)\n\nThe coaligned temporal invariant flagged a spec number in a code\ncomment. Reword the WHY to stand on its own without the reference.\n\nCo-authored-by: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(ci): drop rotting spec reference from render-formula.sh comment (…",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-15T20:41:52Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "98015b17b681cc562a5cdd0721b636aca29821a0",
          "body": "The tap job failed on the first Homebrew-on-Linux release (gear@v0.1.20):\n`update-formula.sh` rewrites an existing formula in place, but the tap\nships casks only — there is no Formula/ dir, so `Formula/fit-gear.rb not\nfound` and the release's tap update never completed.\n\nSpec 2190 renders the cask b\n[…]\ne of any bundle now creates its formula, and a future bundle folds\nin with no hand-seeded tap file — matching the spec 2190 scope.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(ci): render Linux formula from scratch in the tap job",
          "author_name": "D. Olsson",
          "author_login": null,
          "committed_at": "2026-07-15T19:13:54Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8b5028ad2194a630cba0d1271d44953e79934369",
          "body": "gear@v0.1.19 shipped no assets: its Publish: Binaries arm64 legs 404'd on\nthe apm download (pre-existing resolve_apm bug, now fixed in #1939 /\nbootstrap v1.0.15, pinned by #1940). Cutting gear@v0.1.20 at a main HEAD\nthat carries the full arm64 chain (env-cache-key + gear-skip + apm fix +\nv1.0.15 pins) to confirm arm64 Publish: Binaries now produces assets.\n\nRefs #1936\n\nCo-authored-by: D. Olsson <dick.olsson@newpage.io>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(gear): bump to 0.1.20 (re-validate arm64 binaries) (#1941)",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-15T17:15:50Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "85bd6dbca9a398106e310e881fb019ea920babb4",
          "body": "Bumps all 27 forwardimpact/bootstrap SHA pins from ccdf5ac7 (v1.0.14) to\n3d474156 (v1.0.15), which carries the apm arm64 asset-name fix (#1939,\nroot 21595d74d): resolve_apm now downloads apm-linux-arm64.tar.gz with the\ncorrect sha256 on ubuntu-24.04-arm, instead of 404ing on the wrong\n\"aarch64\" asse\n[…]\n.\n\nUnblocks the arm64 Publish: Binaries legs for the next gear cut.\n\nRefs #1936\n\nCo-authored-by: D. Olsson <dick.olsson@newpage.io>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "ci: bump bootstrap pin to 3d474156 # v1.0.15 (apm arm64 fix) (#1940)",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-15T17:04:36Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "21595d74d5373ff61a366aa82afb09644ca65b9c",
          "body": "resolve_apm built the linux-aarch64 URL as apm-linux-aarch64.tar.gz\n(from uname -m), but Microsoft's apm release ships the arm64 asset as\napm-linux-arm64.tar.gz — so the download 404'd on every ubuntu-24.04-arm\nleg. The pinned sha256 for that case was also a placeholder dummy, never\nverified against\n[…]\naks, and claude all resolve correctly on arm64; only apm was wrong.\n\nRefs #1936\n\nCo-authored-by: D. Olsson <dick.olsson@newpage.io>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(ci): correct apm arm64 asset name and sha in fit-install.sh (#1939)",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-15T16:58:49Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8978b003a6c695ae9f16bc4fed027589605f158a",
          "body": "Cuts a fresh gear release to validate the #1936 arm64 Linux binary-build\nfix now that bootstrap v1.0.14 is pinned on main (#1937). gear@v0.1.18 was\na dead tag — its Publish: Binaries produced no assets because of the arm64\nbug now fixed. This carries the already-live libpack@0.1.11 fit-pack (with\n`stage --all`).\n\nRefs #1936\n\nCo-authored-by: D. Olsson <dick.olsson@newpage.io>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(gear): bump to 0.1.19 for arm64 binary-build validation (#1938)",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-15T16:40:38Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "d23a3b6d386170b67a4e51afac33a4b81b9bb339",
          "body": "Bumps all 27 forwardimpact/bootstrap SHA pins across 15 workflows from\n52b7f3fe (v1.0.10) to ccdf5ac7 (v1.0.14), which carries the arm64 Linux\nenv fix for the binary build (fix commit 471a0ad3d, #1936):\n\n- runner.arch added to the env-cache key (arm64 no longer restores the\n  x64 cache -> x64 `just`\n[…]\nl, package-macos.yml,\nreached via publish-binaries.yml) is covered.\n\nRefs #1936\n\nCo-authored-by: D. Olsson <dick.olsson@newpage.io>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "ci: bump bootstrap pin to ccdf5ac7 # v1.0.14 (arm64 fix) (#1937)",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-15T16:29:44Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "471a0ad3d21c491c975ef98c13dbe7119e270788",
          "body": "Spec 2190 added a bun-linux-arm64 build leg on ubuntu-24.04-arm, but the\nfirst release run failed at `just codegen` with `Exec format error` — an\nx64 `just` on an aarch64 runner. Two bugs in the bootstrap action:\n\n1. The environment cache key used runner.os only. runner.os is \"Linux\"\n   for both ubu\n[…]\nso skip the gear-binary install on linux-aarch64 instead of\n   failing. The build needs only bun + just + the workspace, not gear.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(ci): bootstrap arm64 Linux env for the binary build (#1936)",
          "author_name": "D. Olsson",
          "author_login": null,
          "committed_at": "2026-07-15T16:19:41Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "dbb4817e180f082b9fabf9db802486b1fb642941",
          "body": "Ships the `fit-pack stage --all` whole-dir staging mode merged in #1934\n(4139a89e1). Producer step 1 of the gear-release chain: this bump lets the\nnext gear release (gear@v0.1.18) rebuild the fit-pack binary with --all, which\nCI installs via the bootstrap gear bundle.\n\nCo-authored-by: D. Olsson <dick.olsson@newpage.io>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(libpack): bump to 0.1.11 (#1935)",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-15T15:43:22Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "4139a89e1efaf7ae863682f669d124a11f94a0a0",
          "body": "* feat(libpack): add fit-pack stage --all whole-dir mode\n\nSelect every skill in the source dir regardless of prefix, for a\nsingle-pack source dir whose skills share no common prefix (e.g. a\nproduct-local .claude). --prefix is now optional; validation requires\n--prefix or --all.\n\nCo-Authored-By: Clau\n[…]\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: D. Olsson <dick.olsson@newpage.io>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(ci): publish Outpost skills pack (#1934)",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-15T15:29:10Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2432887f01087496876af8669142a2def00bb2f0",
          "body": "* design(2200): rename svctrace to svcspan (spec + design)\n\nLockstep spec + design for renaming the span-ingestion service\n`@forwardimpact/svctrace` (bin `fit-svctrace`, at `services/trace/`) to\n`svcspan`. The name collides with the unrelated `fit-trace` library; the\nservice stores OpenTelemetry spa\n[…]\nkdown tables (MD056). Restructure the success-criteria table as a\nbulleted list so the pipes render literally, and run the repo md\nformatter.\n\n---------\n\nCo-authored-by: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "design(2200): rename svctrace to svcspan (#1933)",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-15T07:19:35Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2f7e545c6ad2552c48196b44af760e19a0159946",
          "body": "The #read-do anchor does not exist in CONTRIBUTING.md; the Clean breaks\nitem lives under the ## Checklists heading. Point all seven links at\n#checklists, matching CLAUDE.md's convention. rumdl reflow follows.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(docs): repair broken CONTRIBUTING #read-do link fragments",
          "author_name": "D. Olsson",
          "author_login": null,
          "committed_at": "2026-07-14T18:53:07Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "435db00f0e1216609048c7a5b2052afc8b10a8be",
          "body": "* feat(build): add bun-linux-arm64 target routed to arm64 runner (#2190)\n\nAdd bun-linux-arm64 to every CLI's targets in the manifest and replace the\ntwo-branch os ternary in build-binaries.yml with a three-way map so the arm64\nLinux cell runs on ubuntu-24.04-arm instead of silently building on macOS\n[…]\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: D. Olsson <dick.olsson@newpage.io>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(ci): Homebrew on Linux (#2190) (#1931)",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-14T18:50:17Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "51be7cb23c6e86cbb71640ad42b7ac880d089792",
          "body": "* plan(2190): Homebrew on Linux\n\nTranslate design 2190-a into ten steps: add bun-linux-arm64 to the build\nmatrix behind a target→runner map, extract the macOS package job into a\nreusable package-macos.yml, add a parallel package-linux.yml that packs\nmanifest CLIs into per-arch tarballs via a new bui\n[…]\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: D. Olsson <dick.olsson@newpage.io>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "plan(2190): Homebrew on Linux (#1930)",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-14T16:47:43Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "44ddb058d2c90e3850c0570698e35af77114f382",
          "body": "…trine (#1928)\n\n* test: drop workflow-shape and invariant-module tests\n\nRemove the kata-interview workflow/action shape test, the kata-interview\nSKILL.md shape test, and the unit tests that duplicated invariant rule\nmodules already enforced by `bun run invariants` (public-cli-set,\nbun-test-imports, \n[…]\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: D. Olsson <dick.olsson@newpage.io>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "test: drop workflow-shape and invariant-module tests, add testing doc…",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-14T16:14:27Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "86a17b551b8aa3b0aec6f7a53740938d50261df7",
          "body": "Add spec and design for distributing every tagged bundle on Linux via a\nHomebrew formula from the existing tap, mirroring the macOS per-bundle\ncontainer model. Lockstep spec+design in one PR.\n\nCo-authored-by: D. Olsson <dick.olsson@newpage.io>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "design(2190): Homebrew on Linux (#1927)",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-14T16:08:41Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "924676aee384ddf0e5441b28064cc5a6af5313c1",
          "body": "…y (#1926)\n\nRewrite fit-install.sh around a declarative tool registry. On Darwin, external\ntools install via Homebrew — homebrew-core formulae (just, gh, ripgrep,\ngitleaks) and the forwardimpact/homebrew-tap fit-gear cask (which ships every\nfit-* CLI and coaligned) — favouring official packaging ove\n[…]\nstep now always runs on macOS so brew tools are\nreconciled even on a cache hit.\n\nCo-authored-by: D. Olsson <dick.olsson@newpage.io>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(bootstrap): install via Homebrew on Darwin, table-driven registr…",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-14T14:52:25Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b384ed10914cb909cbb4ebe323ec9181a5b8fdec",
          "body": "…at v1.0.0\n\nReplace the local `./products/kata/actions/kata-interview` reference with the\npublished `forwardimpact/kata-interview@<sha> # v1.0.0`, matching every other\nsibling-action consumer and the SHA-pin policy in .github/CLAUDE.md. The\nmonorepo now dogfoods the actual split projection, and the \n[…]\ne\n(which had no preceding checkout to resolve against) is gone. Dependabot keeps\nthe pin current via the github-actions root scan.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "ci(kata-interview): consume the published sibling action, SHA-pinned …",
          "author_name": "D. Olsson",
          "author_login": null,
          "committed_at": "2026-07-14T13:31:08Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "cfa18dd360867c4db8bdfb28a75cb1069fedcfb8",
          "body": "Carries the bootstrap install-guard fix into a gear release so the published\nfit-install.sh asset (curl | bash bootstrap) installs a tool only when it is\nnot already on PATH. Pure rebuild bump — no products/gear source change.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(gear): release 0.1.17 to ship the fit-install.sh PATH guard fix",
          "author_name": "D. Olsson",
          "author_login": null,
          "committed_at": "2026-07-14T09:16:02Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "577bf82f50bff3d5afaea40aa6f86e9fcec8bced",
          "body": "The install guard checked `$BIN_DIR/$name` — only whether a copy existed in\n$HOME/.local/bin — so a binary already resolvable on PATH (e.g. installed via\nHomebrew) did not count, and every bootstrap reinstalled it into ~/.local/bin,\nshadowing the existing one. Check `command -v \"$name\"` instead so an already\ninstalled tool anywhere on PATH is left in place.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(bootstrap): install a tool only when it is not already on PATH",
          "author_name": "D. Olsson",
          "author_login": null,
          "committed_at": "2026-07-14T09:14:53Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "8ed5e06ba5ab02612bff6a6f661cce926fea255a",
          "body": "…s section (#1925)\n\nApply the coaligned-setup guideline to this repo's own CONTRIBUTING.md: the\nInvariants section listed the architectural non-negotiables in prose but never\npointed contributors at where the machine-checked rules live or how to add one.\nAdd a three-line pointer to `.coaligned/invar\n[…]\nules.mjs`, the\n`bun run invariants` command, and the coaligned-invariant skill.\n\nCo-authored-by: D. Olsson <dick.olsson@newpage.io>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(contributing): point at the invariant tooling from the Invariant…",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-13T15:49:39Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0b88ecee81c970f0a04a1666f4c1f192d9eb6be7",
          "body": "…tup (#1924)\n\nThe coaligned-setup skill created the .coaligned/invariants/ layer and told\nauthors to record the check command in CONTRIBUTING.md, but never told them to\npoint contributors at where machine-checked invariants live or how to add one.\nThat discovery contract — the directory, the `coalig\n[…]\ne coaligned-skills benchmark with a\ncontributing-surfaces-invariants assertion.\n\nCo-authored-by: D. Olsson <dick.olsson@newpage.io>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(coaligned): point CONTRIBUTING.md at the invariant tooling in se…",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-13T15:20:12Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "144441971347a1d93b459838be8d7aaf6c8e6e68",
          "body": "Carries #1923 into a gear release: publish-binaries now regenerates the\nfit-gear cask binary block from build/cli-manifest.json via\nrender-cask-binaries.sh, replacing the hand-fixed tap cask (tap #73) with a\nreproducible one. Pure rebuild bump — no products/gear source change.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(gear): release 0.1.16 to regenerate homebrew cask from manifest",
          "author_name": "D. Olsson",
          "author_login": null,
          "committed_at": "2026-07-13T15:17:38Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "20084f6e99aa00638546e9aff6585233ffdfd751",
          "body": "…n (#1923)\n\n`brew install --cask fit-gear` failed at link time with \"symlink source\n'.../Contents/MacOS/fit-eval' is not there\": the libeval→libharness\nrename (spec 2110) renamed the fit-eval CLI to fit-harness and the app\nbundle followed, but the tap cask's hand-maintained `binary` block did\nnot. T\n[…]\nnd macOS awk. Product casks link\none binary and keep their hand-written stanza.\n\nCo-authored-by: D. Olsson <dick.olsson@newpage.io>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(release): regenerate gear cask binary block from cli-manifest.jso…",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-13T14:28:31Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a23fb039268bd9f578f3157523aec9a66e177230",
          "body": "Running a benchmark showed `apm install` writes a per-family `.gitignore`\n(just `apm_modules/`, already root-covered) that reappears every run as\nuntracked noise — the real source of the duplicate-.gitignore problem. Ignore\nthat generated file (and `*/bun.lock`) from the shared benchmarks/.gitignore\n[…]\nt-wiki's per-family copy so no family carries its own. Document the\napm-generated .gitignore in the fit-benchmark authoring guide.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(benchmarks): ignore apm-generated per-family .gitignore centrally",
          "author_name": "D. Olsson",
          "author_login": null,
          "committed_at": "2026-07-13T13:52:18Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c47b2c12fd0064c4913fecd3fcf6b05c510432a8",
          "body": "Add a fit-benchmark task family that proves the coaligned skill pack makes\nagents produce correct instruction artifacts, plus its manual-dispatch\nworkflow. Two tasks: `bootstrap-repo` (coaligned-setup — verifies CLAUDE.md\nsurfaces both job and checklist discovery, JTBD carries a <job>, the starter\ni\n[…]\ny format into authored vs generated\n  files, document judge.md, and add authoring guidance for agent.task.md and\n  what to commit.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(benchmarks): add coaligned-skills eval family",
          "author_name": "D. Olsson",
          "author_login": null,
          "committed_at": "2026-07-13T13:35:56Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "dd6c7c9bf6c49816f239b7e6c7a7c46afd7ece57",
          "body": "Co-Aligned now defines the universal properties of CLAUDE.md, CONTRIBUTING.md,\nand JTBD.md — including the L1 requirement that CLAUDE.md surface how jobs and\nchecklists are discovered. The Monorepo standard now builds on Co-Aligned,\nkeeping only directory-shape conventions. This makes the coaligned-\n[…]\nigned-layer: point L1/L2 repairs at coaligned-setup\n- websites: reflect the flipped dependency on the coaligned and monorepo sites\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(coaligned): own universal root files and job/checklist discovery",
          "author_name": "D. Olsson",
          "author_login": null,
          "committed_at": "2026-07-13T11:46:45Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3803e4305d788669b9d4fe5e14a658ee3814c58b",
          "body": "…e (#1920)\n\n* fix(skills): repair broken markdown in kata-security-update and monorepo-setup\n\nRejoin the PR-body quote that a formatter split into a spurious H2,\nrestore the Memory section to H2, and give monorepo-setup's bare\nreference-style links real targets so they render as links.\n\nhttps://clau\n[…]\nest still asserted\nthe table row. Assert the contract phrases instead of the layout.\n\nhttps://claude.ai/code/session_01RiYqpptQcEYMBKeMwByhHr\n\n---------\n\nCo-authored-by: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "refactor(skills): converge published skill packs on one house templat…",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-09T07:36:55Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "61f63b84aff6c1f614bc885f3104ba53e54d2d3e",
          "body": "coaligned-setup Step 3 now seeds .coaligned/invariants/ with a bundled starter rule so a freshly bootstrapped repo begins with one live invariant. Adds no-conflict-markers.rules.mjs: a generic, zero-config rule that fails any tracked file carrying a leftover git merge-conflict marker.",
          "is_bot": false,
          "headline": "feat(coaligned-setup): ship a generic starter invariant (#1919)",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-09T06:51:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7ab9c73b7fbe8348cdae6d87b425f370fa014595",
          "body": "…(#1917)\n\nThe landing page framed Outpost as a flat list of 8 \"Core Skills.\" The\nproduct actually runs a team of six scheduled agent personas (postman,\nconcierge, librarian, chief-of-staff, recruiter, head-hunter), each\ncarrying a subset of ~28 shipped skills on its own cron schedule.\n\n- Reframe her\n[…]\nting Started\n- Rename the macOS heading to \"and\" so its in-page anchor resolves\n\nCo-authored-by: D. Olsson <dick.olsson@newpage.io>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(outpost): reflect the agent-team model and full skill inventory …",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-09T06:47:45Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c6c4749c79bfbc7547982cabd959cc7b42c3785e",
          "body": "Part 04 of spec 2180. Switch the kata-interview wrapper's persona-select-command from the removed fit-map substrate verbs to fit-terrain substrate pick|issue, carrying the FI pick-memory path and issued-token name as explicit options. Add shape-test assertions pinning the terrain-only persona step (SC8).",
          "is_bot": false,
          "headline": "feat(kata): switch interview persona step to fit-terrain (#2180) (#1916)",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-09T04:15:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0a83d437a58b6f994b920b76a084a094e6d505e4",
          "body": "…1915)\n\nA bare fit-install.sh run now installs fit-wiki, fit-xmr, fit-trace,\nfit-doc, and fit-terrain alongside the external tools and coaligned.\nThese are the five fit-* CLIs the kata-* skills invoke, so every\nenvironment bootstrapped without arguments has them on PATH.\n\n\nClaude-Session: https://claude.ai/code/session_01KvJPJ61etEWexTen7dEd3N\n\nCo-authored-by: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Install the five kata-used fit-* CLIs by default in fit-install.sh (#…",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-08T23:48:51Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "4e0efe7a518fe2f81146cdbaadaf3b787ffabdc9",
          "body": "libskill 6.2.0 (minor: standard contract), libharness 1.3.0 (minor:\ninterview action), libsyntheticprose 0.1.36, libterrain 0.1.41, map\n0.15.63, pathway 0.26.9, summit 0.1.31, landmark 0.1.31, gear 0.1.15\n(binary carrier). Floors: libskill ^6.2.0 in libterrain/map/pathway/\nsummit/landmark; libterrain ^0.1.41 in map/gear.\n\nhttps://claude.ai/code/session_01Pbkjsvf8AAvixdhkGxZbCp",
          "is_bot": false,
          "headline": "chore(release): cut spec-2180 train — libskill@v6.2.0 + 8 dependents",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-08T06:45:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d3563349ca0a92e13c3d5a05238fa1b9560c6acc",
          "body": "…ill, identity verbs to fit-terrain (#2180) (#1912)\n\n* refactor(libskill): host the standard contract — levels module and JSON schemas move from map (#2180)\n\nPart 01 of plan 2180-a. Breaks the libskill<->map package cycle and the\ninverted libterrain->map edge:\n\n- levels.js + test and the thirteen sc\n[…]\nl, mechanical\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01Pbkjsvf8AAvixdhkGxZbCp\n\n---------\n\nCo-authored-by: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(terrain): generic substrate contract — standard schemas to libsk…",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-08T05:18:32Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "02ba794ae4b56a5de06ae68cce3917ad1458e229",
          "body": "* plan(2180): draft plan-a — substrate contract, six parts\n\nDraft pending panel review; PR opens after the panel is clean.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AcSX5W7CbNAAGxa1XprcSM\n\n* plan(2180): address panel findings — importmap\n[…]\ne Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AcSX5W7CbNAAGxa1XprcSM\n\n* style: rumdl format plan-a files\n\n---------\n\nCo-authored-by: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "plan(2180): generic substrate contract — six-part execution plan (#1911)",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-08T03:21:28Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d557abf15dc3c88c5d5cc39ebb16602b2829e41a",
          "body": "…ll, identity verbs to fit-terrain (#1910)\n\n* spec(2180): draft spec + design — generic substrate contract\n\nStandard contract (levels + JSON schemas) moves to libskill; substrate\nidentity verbs (provision/pick/issue + init/check) move to fit-terrain\nbehind a documented Substrate Contract. Clean brea\n[…]\ner-\nsupplied-name requirement is the WHAT and stays; exact flags live in the\ndesign.\n\nhttps://claude.ai/code/session_01U8CBqqkx5etFirMifY4mYd\n\n---------\n\nCo-authored-by: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "design(2180): generic substrate contract — standard schemas to libski…",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-08T02:03:02Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "df2269dbb1fdb08e99ff979bd5d178bcd01b0dea",
          "body": "…action (#2170) (#1909)\n\n* feat(libterrain): add generic `fit-terrain substrate up` verb (#2170)\n\nSupabase bring-up primitive (start + discover + --emit-env) with its own\nthin, cwd-explicit spawner. No migration/seed knowledge — those stay with\nthe consumer — so the verb is portable to any Supabase-\n[…]\nrned error).\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01LgBdXACCc85ZgcSdjVb75H\n\n---------\n\nCo-authored-by: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(kata): package the interview capability as a reusable published …",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-08T00:22:22Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "bbe6f90ad96deb92cb1d59ddb60d6eb71ec97d2c",
          "body": "…160) (#1908)\n\n* feat(bootstrap): add apm-verify pack reconciliation script\n\n`apm install` exits 0 even when a declared pack fails to resolve, so its exit\ncode cannot gate the run. Add a Bun `.mjs` that reconciles each pack declared\nunder `apm.yml` `dependencies.apm` against the post-install `apm.lo\n[…]\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: D. Olsson <dick.olsson@newpage.io>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(bootstrap): provision declared packs in the bootstrap action (#2…",
          "author_name": "Dick Olsson",
          "author_login": "dickolsson",
          "committed_at": "2026-07-07T20:19:45Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3391955d7604be9e11a4889f39668c023c4c2de4",
          "body": "Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore: remove .claude/memory symlink to wiki",
          "author_name": "D. Olsson",
          "author_login": null,
          "committed_at": "2026-07-06T07:35:09Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a79cdbb6fd4d742ff73168cfa6afd09b32dbbf23",
          "body": "Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(ci): clarify website workflow names as \"Standard\"",
          "author_name": "D. Olsson",
          "author_login": null,
          "committed_at": "2026-07-06T07:33:06Z",
          "body_truncated": false,
          "is_coding_agent": true
        }
      ],
      "releases_count": 100,
      "commits_last_year": 3471,
      "latest_release_at": "2026-07-21T20:08:13Z",
      "latest_release_tag": "gear@v0.3.2",
      "releases_from_tags": false,
      "days_since_last_push": 0,
      "active_weeks_last_year": 28,
      "days_since_latest_release": 2,
      "mean_days_between_releases": 0.6
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": true,
      "health_percentage": 75,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "fit-rc",
          "exists": true,
          "license": "Apache-2.0",
          "keywords": [],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/fit-rc",
          "is_deprecated": false,
          "latest_version": "0.1.40",
          "repository_url": "https://github.com/forwardimpact/monorepo",
          "versions_count": 4,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 379,
          "first_published_at": "2026-06-12T13:47:28.600000Z",
          "latest_published_at": "2026-07-18T17:47:22.436000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 5
        },
        {
          "name": "fit-doc",
          "exists": true,
          "license": "Apache-2.0",
          "keywords": [],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/fit-doc",
          "is_deprecated": false,
          "latest_version": "0.2.37",
          "repository_url": "https://github.com/forwardimpact/monorepo",
          "versions_count": 2,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 256,
          "first_published_at": "2026-06-12T12:57:08.194000Z",
          "latest_published_at": "2026-07-01T14:17:25.059000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 22
        },
        {
          "name": "fit-rag",
          "exists": true,
          "license": "Apache-2.0",
          "keywords": [],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/fit-rag",
          "is_deprecated": false,
          "latest_version": "0.1.0",
          "repository_url": "https://github.com/forwardimpact/monorepo",
          "versions_count": 1,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 110,
          "first_published_at": "2026-07-18T17:47:44.183000Z",
          "latest_published_at": "2026-07-18T17:47:44.426000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 5
        },
        {
          "name": "fit-guide",
          "exists": true,
          "license": "Apache-2.0",
          "keywords": [],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/fit-guide",
          "is_deprecated": false,
          "latest_version": "0.1.53",
          "repository_url": "https://github.com/forwardimpact/monorepo",
          "versions_count": 5,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 284,
          "first_published_at": "2026-06-12T12:57:02.517000Z",
          "latest_published_at": "2026-07-18T18:11:26.503000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 5
        },
        {
          "name": "fit-unary",
          "exists": true,
          "license": "Apache-2.0",
          "keywords": [],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/fit-unary",
          "is_deprecated": false,
          "latest_version": "0.1.111",
          "repository_url": "https://github.com/forwardimpact/monorepo",
          "versions_count": 4,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 383,
          "first_published_at": "2026-06-12T12:56:49.434000Z",
          "latest_published_at": "2026-07-18T18:00:19.291000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 5
        },
        {
          "name": "fit-logger",
          "exists": true,
          "license": "Apache-2.0",
          "keywords": [],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/fit-logger",
          "is_deprecated": false,
          "latest_version": "0.1.32",
          "repository_url": "https://github.com/forwardimpact/monorepo",
          "versions_count": 1,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 169,
          "first_published_at": "2026-07-04T09:19:18.494000Z",
          "latest_published_at": "2026-07-04T09:19:18.850000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 19
        }
      ]
    },
    "popularity": {
      "forks": 0,
      "stars": 3,
      "watchers": 0,
      "fork_history": {
        "days": [],
        "complete": true,
        "collected": 0,
        "total_forks": 0
      },
      "star_history": null,
      "open_issues_and_prs": 35
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [],
      "has_llms_txt": true,
      "has_dockerfile": true,
      "has_mcp_signal": false,
      "bootstrap_files": [
        "design/justfile",
        "justfile",
        "websites/fit/justfile",
        "websites/jidoka/justfile",
        "websites/kata/justfile",
        "websites/monorepo/justfile"
      ],
      "api_schema_files": [
        "libraries/libproto/proto/common.proto",
        "libraries/libproto/proto/resource.proto",
        "libraries/libproto/proto/tool.proto",
        "services/bridge/proto/bridge.proto",
        "services/embedding/proto/embedding.proto",
        "services/ghserver/proto/ghserver.proto",
        "services/ghuser/proto/ghuser.proto",
        "services/graph/proto/graph.proto",
        "services/map/proto/map.proto",
        "services/pathway/proto/pathway.proto",
        "services/span/proto/span.proto",
        "services/tenancy/proto/tenancy.proto",
        "services/vector/proto/vector.proto"
      ],
      "has_devcontainer": true,
      "typecheck_configs": [],
      "toolchain_manifests": [],
      "largest_source_bytes": 61828,
      "source_files_sampled": 1641,
      "oversized_source_files": 1,
      "agent_instruction_files": [
        ".claude/skills/CLAUDE.md",
        ".github/CLAUDE.md",
        "CLAUDE.md",
        "config/CLAUDE.md",
        "libraries/CLAUDE.md",
        "libraries/libbridge/CLAUDE.md",
        "libraries/libconfig/CLAUDE.md",
        "products/CLAUDE.md",
        "products/guide/CLAUDE.md",
        "products/map/CLAUDE.md",
        "products/outpost/CLAUDE.md",
        "products/outpost/templates/CLAUDE.md",
        "references/CLAUDE.md",
        "services/CLAUDE.md",
        "websites/CLAUDE.md"
      ],
      "agent_instruction_max_bytes": 7904
    },
    "dependencies": {
      "manifests": [
        "package.json"
      ],
      "advisories": {
        "error": null,
        "scope": "published_package",
        "source": "osv",
        "findings": [],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 116,
        "malicious_count": 0,
        "assessed_package": "npm:fit-rc@0.1.40",
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "npm"
      ],
      "dependencies": [
        {
          "name": "forwardimpact-monorepo",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "."
        },
        {
          "name": "@forwardimpact/libcodegen",
          "manifest": "launchers/fit-codegen/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.0.0"
        },
        {
          "name": "@forwardimpact/libdoc",
          "manifest": "launchers/fit-doc/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.0.0"
        },
        {
          "name": "@forwardimpact/guide",
          "manifest": "launchers/fit-guide/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.0.0"
        },
        {
          "name": "@forwardimpact/landmark",
          "manifest": "launchers/fit-landmark/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.0.0"
        },
        {
          "name": "@forwardimpact/libsupervise",
          "manifest": "launchers/fit-logger/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.0.0"
        },
        {
          "name": "@forwardimpact/map",
          "manifest": "launchers/fit-map/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.0.0"
        },
        {
          "name": "@forwardimpact/outpost",
          "manifest": "launchers/fit-outpost/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.0.0"
        },
        {
          "name": "@forwardimpact/libpack",
          "manifest": "launchers/fit-pack/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.0.0"
        },
        {
          "name": "@forwardimpact/pathway",
          "manifest": "launchers/fit-pathway/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.0.0"
        },
        {
          "name": "@forwardimpact/librag",
          "manifest": "launchers/fit-process/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.0.0"
        },
        {
          "name": "@forwardimpact/librag",
          "manifest": "launchers/fit-rag/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.0.0"
        },
        {
          "name": "@forwardimpact/librc",
          "manifest": "launchers/fit-rc/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.0.0"
        },
        {
          "name": "@forwardimpact/summit",
          "manifest": "launchers/fit-summit/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.0.0"
        },
        {
          "name": "@forwardimpact/libsupervise",
          "manifest": "launchers/fit-svscan/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.0.0"
        },
        {
          "name": "@forwardimpact/libterrain",
          "manifest": "launchers/fit-terrain/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.0.0"
        },
        {
          "name": "@forwardimpact/librpc",
          "manifest": "launchers/fit-unary/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.0.0"
        },
        {
          "name": "@forwardimpact/libtelemetry",
          "manifest": "launchers/fit-visualize/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.0.0"
        },
        {
          "name": "@forwardimpact/gemba",
          "manifest": "launchers/gemba-benchmark/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.0.0"
        },
        {
          "name": "@forwardimpact/gemba",
          "manifest": "launchers/gemba-harness/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.0.0"
        },
        {
          "name": "@forwardimpact/gemba",
          "manifest": "launchers/gemba-trace/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.0.0"
        }
      ],
      "all_dependencies": {
        "error": "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
        "source": null,
        "packages": [],
        "collected": false,
        "truncated": false,
        "total_count": null,
        "direct_count": null,
        "indirect_count": null
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 6,
        "merged_prs": 1372,
        "open_issues": 29,
        "closed_ratio": 0.932,
        "closed_issues": 395,
        "closed_unmerged_prs": 148
      },
      "bus_factor": 1,
      "bot_contributors": 3,
      "top_contributors": [
        {
          "type": "User",
          "login": "dickolsson",
          "commits": 1813,
          "avatar_url": "https://avatars.githubusercontent.com/u/112085?v=4"
        },
        {
          "type": "User",
          "login": "claude",
          "commits": 388,
          "avatar_url": "https://avatars.githubusercontent.com/u/81847?v=4"
        }
      ],
      "contributors_sampled": 2,
      "top_contributor_share": 0.824
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "build-binaries.yml",
        "check-build.yml",
        "check-context.yml",
        "check-data.yml",
        "check-quality.yml",
        "check-security.yml",
        "check-test.yml",
        "curate-wiki.yml",
        "eval-guide.yml",
        "eval-jidoka.yml",
        "eval-kata.yml",
        "eval-wiki.yml",
        "kata-coaching.yml",
        "kata-dispatch.yml",
        "kata-interview.yml",
        "kata-shift.yml",
        "kata-storyboard.yml",
        "outpost-determinism-probe.yml",
        "package-linux.yml",
        "package-macos.yml",
        "publish-actions.yml",
        "publish-binaries.yml",
        "publish-npm.yml",
        "publish-skills.yml",
        "release-tag.yml",
        "website-fit.yaml",
        "website-jidoka.yaml",
        "website-kata.yaml",
        "website-monorepo.yaml",
        "website.yml"
      ],
      "has_docs_dir": false,
      "linter_configs": [
        "biome.json",
        "eslint.config.js"
      ],
      "has_editorconfig": false,
      "has_linter_config": true,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 0,
            "reason": "branch protection not enabled on development/release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 10,
            "reason": "26 out of 26 merged PRs checked by a CI test -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 0,
            "reason": "Found 0/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 3 contributing companies or organizations -- score normalized to 10",
            "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": 10,
            "reason": "update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": null,
            "reason": "packaging workflow not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 8,
            "reason": "dependency not pinned by hash detected -- score normalized to 8",
            "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": 10,
            "reason": "security policy file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": 0,
            "reason": "Project has not signed or included provenance with any releases.",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 4,
            "reason": "6 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "a227f32d7bc49250fb2dab370cd88d581b36f558",
        "ran_at": "2026-07-24T03:36:58Z",
        "aggregate_score": 5.2,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": true,
      "has_dependabot_config": true
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-24T03:35:14Z",
      "oldest_open_prs": [
        {
          "number": 1883,
          "created_at": "2026-07-03T03:33:41Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1996,
          "created_at": "2026-07-24T00:52:42Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1997,
          "created_at": "2026-07-24T03:33:56Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1998,
          "created_at": "2026-07-24T03:34:00Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1999,
          "created_at": "2026-07-24T03:34:18Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 2000,
          "created_at": "2026-07-24T03:36:06Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ],
      "last_merged_pr_at": "2026-07-23T23:16:16Z",
      "ci_last_conclusion": "FAILURE",
      "oldest_open_issues": [
        {
          "number": 357,
          "created_at": "2026-04-12T19:34:08Z",
          "last_comment_at": "2026-04-30T11:55:40Z",
          "last_comment_author": "kata-agent-team"
        },
        {
          "number": 438,
          "created_at": "2026-04-19T14:54:53Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 479,
          "created_at": "2026-04-22T03:33:25Z",
          "last_comment_at": "2026-04-29T04:51:53Z",
          "last_comment_author": "kata-agent-team"
        },
        {
          "number": 625,
          "created_at": "2026-04-30T12:25:51Z",
          "last_comment_at": "2026-05-19T13:16:24Z",
          "last_comment_author": "kata-agent-team"
        },
        {
          "number": 953,
          "created_at": "2026-05-16T16:31:35Z",
          "last_comment_at": "2026-05-16T16:33:40Z",
          "last_comment_author": "kata-agent-team"
        },
        {
          "number": 985,
          "created_at": "2026-05-17T19:19:42Z",
          "last_comment_at": "2026-05-17T19:30:45Z",
          "last_comment_author": "kata-agent-team"
        },
        {
          "number": 986,
          "created_at": "2026-05-17T19:20:01Z",
          "last_comment_at": "2026-05-20T05:20:54Z",
          "last_comment_author": "kata-agent-team"
        },
        {
          "number": 988,
          "created_at": "2026-05-17T19:20:36Z",
          "last_comment_at": "2026-05-17T19:22:47Z",
          "last_comment_author": "kata-agent-team"
        },
        {
          "number": 1036,
          "created_at": "2026-05-19T13:20:19Z",
          "last_comment_at": "2026-05-19T13:38:51Z",
          "last_comment_author": "kata-agent-team"
        },
        {
          "number": 1111,
          "created_at": "2026-05-22T02:37:11Z",
          "last_comment_at": "2026-05-22T03:41:39Z",
          "last_comment_author": "kata-agent-team"
        },
        {
          "number": 1386,
          "created_at": "2026-06-03T11:24:39Z",
          "last_comment_at": "2026-06-12T13:44:26Z",
          "last_comment_author": "kata-agent-team"
        },
        {
          "number": 1397,
          "created_at": "2026-06-03T15:25:03Z",
          "last_comment_at": "2026-06-06T05:08:02Z",
          "last_comment_author": "kata-agent-team"
        },
        {
          "number": 1503,
          "created_at": "2026-06-08T06:47:23Z",
          "last_comment_at": "2026-06-08T07:20:03Z",
          "last_comment_author": "kata-agent-team"
        },
        {
          "number": 1511,
          "created_at": "2026-06-08T08:19:17Z",
          "last_comment_at": "2026-06-08T20:28:31Z",
          "last_comment_author": "kata-agent-team"
        },
        {
          "number": 1517,
          "created_at": "2026-06-08T20:29:08Z",
          "last_comment_at": "2026-06-08T20:29:14Z",
          "last_comment_author": "kata-agent-team"
        },
        {
          "number": 1547,
          "created_at": "2026-06-10T15:14:33Z",
          "last_comment_at": "2026-06-10T15:41:12Z",
          "last_comment_author": "kata-agent-team"
        },
        {
          "number": 1548,
          "created_at": "2026-06-10T15:16:27Z",
          "last_comment_at": "2026-06-12T08:38:22Z",
          "last_comment_author": "kata-agent-team"
        },
        {
          "number": 1549,
          "created_at": "2026-06-10T15:16:49Z",
          "last_comment_at": "2026-06-10T22:57:51Z",
          "last_comment_author": "kata-agent-team"
        },
        {
          "number": 1550,
          "created_at": "2026-06-10T15:33:57Z",
          "last_comment_at": "2026-06-10T23:01:09Z",
          "last_comment_author": "kata-agent-team"
        },
        {
          "number": 1555,
          "created_at": "2026-06-10T16:17:49Z",
          "last_comment_at": "2026-06-10T17:10:29Z",
          "last_comment_author": "kata-agent-team"
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/forwardimpact/monorepo",
    "host": "github.com",
    "name": "monorepo",
    "owner": "forwardimpact"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 65,
      "inputs": {
        "security": 62,
        "vitality": 86,
        "community": 40,
        "governance": 58,
        "engineering": 76
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "excellent",
        "name": "Vitality",
        "value": 86,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "good",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 83,
            "inputs": {
              "commits_last_year": 3471,
              "human_commit_share": 1,
              "days_since_last_push": 0,
              "active_weeks_last_year": 28
            },
            "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": "28/52 weeks with commits",
                "points": 19.4,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 28
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "3471 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 3471
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "releases_count": 100,
              "latest_release_tag": "gear@v0.3.2",
              "releases_from_tags": false,
              "days_since_latest_release": 2,
              "mean_days_between_releases": 0.6
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "100 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 100
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 2 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 2
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~0.6 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 0.6
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "maintained",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": null,
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": 0,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 0 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "at_risk",
        "name": "Community & Adoption",
        "value": 40,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "critical",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 5,
            "inputs": {
              "forks": 0,
              "stars": 3,
              "watchers": 0,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "3 stars",
                "points": 4.9,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 3
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "0 forks",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "0 watchers",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "good",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 70,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": true,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (Apache-2.0)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "Apache-2.0"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 18,
                "status": "met",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          },
          {
            "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": 53,
            "inputs": {
              "packages": [
                "fit-rc",
                "fit-doc",
                "fit-rag",
                "fit-guide",
                "fit-unary",
                "fit-logger"
              ],
              "dependents": null,
              "ecosystems": "npm",
              "total_downloads": null,
              "monthly_downloads": 1581
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "1,581 downloads/month across npm",
                "points": 42.7,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 1581,
                      "ecosystems": "npm"
                    }
                  }
                ],
                "max_points": 80
              },
              {
                "key": "registry_dependents",
                "name": "Registry dependents",
                "detail": "not reported by this ecosystem",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_reported_by_this_ecosystem",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "moderate",
        "name": "Sustainability & Governance",
        "value": 58,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 26,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 2,
              "top_contributor_share": 0.824
            },
            "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 82% of commits",
                "points": 4,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 82
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "2 contributors",
                "points": 2.7,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 3 contributing companies or organizations -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "good",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 78,
            "inputs": {
              "merged_prs": 1372,
              "open_issues": 29,
              "closed_issues": 395,
              "issue_closed_ratio": 0.932,
              "closed_unmerged_prs": 148
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "93% of issues closed",
                "points": 43.6,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 93
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "1372/1520 decided PRs merged",
                "points": 34.5,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 1372,
                      "decided": 1520
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "at_risk",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 41,
            "inputs": {
              "followers": 0,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "forwardimpact",
              "public_repos": 20,
              "account_age_days": 192
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "organization-owned",
                "points": 30,
                "status": "met",
                "details": [
                  {
                    "code": "owner_organization",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "0 followers of forwardimpact",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 0,
                      "login": "forwardimpact"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "20 public repos, account ~0 yr old",
                "points": 10.7,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 20
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 0
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "fit-rc",
                "fit-doc",
                "fit-rag",
                "fit-guide",
                "fit-unary",
                "fit-logger"
              ],
              "ecosystems": "npm",
              "any_deprecated": false,
              "min_days_since_publish": 5
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "6 package(s) on npm",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 6,
                      "ecosystems": "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": "5 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 5
                    }
                  }
                ],
                "max_points": 20
              },
              {
                "key": "not_deprecated",
                "name": "Not deprecated",
                "detail": "active, not deprecated or yanked",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "package_not_deprecated",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "good",
        "name": "Engineering Quality",
        "value": 76,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "good",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 84,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": true,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "30 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 30
                    }
                  }
                ],
                "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": "biome.json, eslint.config.js",
                "points": 16,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "biome.json, eslint.config.js"
                    }
                  }
                ],
                "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": "26 out of 26 merged PRs checked by a CI test -- score normalized to 10",
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "moderate",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 65,
            "inputs": {
              "topics": [],
              "has_wiki": true,
              "homepage": "http://www.forwardimpact.team",
              "has_readme": true,
              "has_docs_dir": false,
              "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": 0,
                "status": "missed",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": "http://www.forwardimpact.team",
                "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": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "moderate",
        "name": "Security",
        "value": 62,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "moderate",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Packaging. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "packaging"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 52,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 17,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 1,
              "scorecard_aggregate": 5.2
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection not enabled on development/release branches",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "26 out of 26 merged PRs checked by a CI test -- score normalized to 10",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 0/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 3 contributing companies or organizations -- score normalized to 10",
                "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": "update tool detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow not detected",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 8",
                "points": 4,
                "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 detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "6 existing vulnerabilities detected",
                "points": 3,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "excellent",
            "name": "Dependency advisories",
            "note": "Excluded from scoring (no data or not applicable): No advisories left outstanding. Remaining weights renormalized. Matched the npm:fit-rc@0.1.40 runtime dependency closure — what installing the published package pulls in — 116 packages. Reachability is not analyzed.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "no_advisories_left_outstanding"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              },
              {
                "code": "advisories_scope_published",
                "params": {
                  "package": "npm:fit-rc@0.1.40",
                  "assessed": 116
                }
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "source": "osv",
              "advisories": 0,
              "affected_packages": 0,
              "assessed_packages": 116,
              "unassessed_packages": 0,
              "affected_by_severity": "none",
              "direct_affected_packages": 0
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "no direct dependency carries a known advisory",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "no_direct_advisories",
                    "params": {}
                  }
                ],
                "max_points": 35
              },
              {
                "key": "indirect_dependencies_free_of_known_advisories",
                "name": "Indirect dependencies free of known advisories",
                "detail": "no indirect dependency carries a known advisory",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "no_indirect_advisories",
                    "params": {}
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "no advisory carries a publication date",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_no_publication_date",
                    "params": {}
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "malicious_dependencies",
            "band": "excellent",
            "name": "Malicious dependencies",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "source": "osv",
              "meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
              "packages": [],
              "red_flag": false,
              "assessed_packages": 116,
              "malicious_packages": 0,
              "direct_malicious_packages": 0,
              "withdrawn_malicious_packages": 0,
              "installable_malicious_packages": 0
            },
            "components": [
              {
                "key": "no_dependency_reported_as_a_malicious_package",
                "name": "No dependency reported as a malicious package",
                "detail": "no dependency is reported as a malicious package",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "no_malicious_dependencies",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          },
          {
            "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": 1
            },
            "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": 78,
        "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": 1,
              "agent_instruction_files": [
                ".claude/skills/CLAUDE.md",
                ".github/CLAUDE.md",
                "CLAUDE.md",
                "config/CLAUDE.md",
                "libraries/CLAUDE.md",
                "libraries/libbridge/CLAUDE.md",
                "libraries/libconfig/CLAUDE.md",
                "products/CLAUDE.md",
                "products/guide/CLAUDE.md",
                "products/map/CLAUDE.md",
                "products/outpost/CLAUDE.md",
                "products/outpost/templates/CLAUDE.md",
                "references/CLAUDE.md",
                "services/CLAUDE.md",
                "websites/CLAUDE.md"
              ],
              "agent_instruction_max_bytes": 7904
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": ".claude/skills/CLAUDE.md, .github/CLAUDE.md, CLAUDE.md, config/CLAUDE.md, libraries/CLAUDE.md, libraries/libbridge/CLAUDE.md, libraries/libconfig/CLAUDE.md, products/CLAUDE.md, products/guide/CLAUDE.md, products/map/CLAUDE.md, products/outpost/CLAUDE.md, products/outpost/templates/CLAUDE.md, references/CLAUDE.md, services/CLAUDE.md, websites/CLAUDE.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".claude/skills/CLAUDE.md, .github/CLAUDE.md, CLAUDE.md, config/CLAUDE.md, libraries/CLAUDE.md, libraries/libbridge/CLAUDE.md, libraries/libconfig/CLAUDE.md, products/CLAUDE.md, products/guide/CLAUDE.md, products/map/CLAUDE.md, products/outpost/CLAUDE.md, products/outpost/templates/CLAUDE.md, references/CLAUDE.md, services/CLAUDE.md, websites/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": "100 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 100,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "good",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 84,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [],
              "has_dockerfile": true,
              "typed_language": false,
              "bootstrap_files": [
                "design/justfile",
                "justfile",
                "websites/fit/justfile",
                "websites/jidoka/justfile",
                "websites/kata/justfile",
                "websites/monorepo/justfile"
              ],
              "has_devcontainer": true,
              "has_linter_config": true,
              "typecheck_configs": [],
              "agent_commit_share": 0.92,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "design/justfile, justfile, websites/fit/justfile, websites/jidoka/justfile, websites/kata/justfile, websites/monorepo/justfile",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "design/justfile, justfile, websites/fit/justfile, websites/jidoka/justfile, websites/kata/justfile, websites/monorepo/justfile"
                    }
                  }
                ],
                "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": "biome.json, eslint.config.js",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "biome.json, eslint.config.js"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "devcontainer, Dockerfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "devcontainer, Dockerfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "92 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 92,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "dependency automation configured, none observed in the sampled commits",
                "points": 5,
                "status": "partial",
                "details": [
                  {
                    "code": "dependency_bot_config_only",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 8",
                "points": 8,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "moderate",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 55,
            "inputs": {
              "primary_language": "JavaScript",
              "largest_source_bytes": 61828,
              "source_files_sampled": 1641,
              "oversized_source_files": 1
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "JavaScript without a type-check config",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_typecheck_config_language",
                    "params": {
                      "language": "JavaScript"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "1/1641 source files over 60KB",
                "points": 55,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 1641,
                      "oversized": 1
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "at_risk",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "example_dirs": [],
              "has_mcp_signal": false,
              "api_schema_files": [
                "libraries/libproto/proto/common.proto",
                "libraries/libproto/proto/resource.proto",
                "libraries/libproto/proto/tool.proto",
                "services/bridge/proto/bridge.proto",
                "services/embedding/proto/embedding.proto",
                "services/ghserver/proto/ghserver.proto",
                "services/ghuser/proto/ghuser.proto",
                "services/graph/proto/graph.proto",
                "services/map/proto/map.proto",
                "services/pathway/proto/pathway.proto",
                "services/span/proto/span.proto",
                "services/tenancy/proto/tenancy.proto",
                "services/vector/proto/vector.proto"
              ]
            },
            "components": [
              {
                "key": "api_schema_openapi_graphql_proto",
                "name": "API schema (OpenAPI/GraphQL/proto)",
                "detail": "libraries/libproto/proto/common.proto, libraries/libproto/proto/resource.proto, libraries/libproto/proto/tool.proto, services/bridge/proto/bridge.proto, services/embedding/proto/embedding.proto, services/ghserver/proto/ghserver.proto, services/ghuser/proto/ghuser.proto, services/graph/proto/graph.proto, services/map/proto/map.proto, services/pathway/proto/pathway.proto, services/span/proto/span.proto, services/tenancy/proto/tenancy.proto, services/vector/proto/vector.proto",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "libraries/libproto/proto/common.proto, libraries/libproto/proto/resource.proto, libraries/libproto/proto/tool.proto, services/bridge/proto/bridge.proto, services/embedding/proto/embedding.proto, services/ghserver/proto/ghserver.proto, services/ghuser/proto/ghuser.proto, services/graph/proto/graph.proto, services/map/proto/map.proto, services/pathway/proto/pathway.proto, services/span/proto/span.proto, services/tenancy/proto/tenancy.proto, services/vector/proto/vector.proto"
                    }
                  }
                ],
                "max_points": 40
              },
              {
                "key": "mcp_server",
                "name": "MCP server",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 40
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
    "Could not fetch npm package 'fit-map' from its registry",
    "Could not fetch npm package 'fit-pack' from its registry",
    "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-24T03:37:18.390283Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/f/forwardimpact/monorepo.svg",
  "full_name": "forwardimpact/monorepo",
  "license_state": "standard",
  "license_spdx": "Apache-2.0"
}

Bewertungen sind Signale, keine Garantien. Sie spiegeln öffentlich sichtbare Praxis auf GitHub wider — kein Code-Audit und keine Sicherheitsgarantie.

Fehlende Daten werden ausgeschlossen und die Gewichte neu normiert, nie als null bewertet. Die Methodik ist versioniert und offen: Metriken v1.13.0, Schema v0.27.0 — vollständige Methodik · Metriken-Wiki.

Wie ein einzelnes Ergebnis im Gesamtregister steht: aggregierte Statistikennpm.