Публічний реєстр
Звіт про здоров'я програмного забезпеченнясхема 0.27.0 · метрики 1.13.0 · 2026-08-01 10:13 UTC

dork-labs / dorkos

You, multiplied. Mission control for Claude Code, Codex, and OpenCode: see every session, approve what your agents do, and run them on a schedule. Self-hosted, MIT.

TypeScriptMIT★ 7 зірок⑂ 1 форкз лют. 2026 р.Переглянути на GitHub ↗

dork-labs/dorkos має індекс здоров’я 65 зі 100, що відповідає смузі «Помірний». Найвищий показник — Engineering Quality (94/100), найнижчий — Community & Adoption (44/100). Останнє оновлення — сьогодні. Більшість нещодавньої роботи виконує один учасник.

65
загалом / 100
Помірний

Індекс здоров'я програмного забезпечення

Метрики згруповано у зважені категорії на шкалі 1–100. Загальна оцінка починається як їхнє середнє; коли публічні дані активують Політику юрисдикцій високого ризику, рейтинг коригується й отримує верхню межу 49 («Під ризиком»). Готовність до ШІ не входить до індексу.

65
Відмінний85-100Зразковий; відповідає практично всім перевіреним критеріям
Добрий70-84Здоровий; незначні прогалини
Помірний50-69Прийнятний, але з помітними прогалинами; рекомендовано перевірку
У зоні ризику30-49Суттєві слабкі місця; впровадження потребує обережності
Критичний1-29Серйозні проблеми (покинутий, єдиний мейнтейнер, без базової гігієни)
ЖиттєздатністьСпільнота тавпровадженняСталість таврядуванняІнженернаякістьБезпекаГотовність доШІ

Профіль оцінок

Кожна вісь — окрема категорія. Форма важить більше, ніж середнє: здоровий об'єкт заповнює всю фігуру, тоді як профіль із піками та провалами означає, що сила в одному вимірі маскує ризик в іншому.

Власність

Dork LabsОрганізація
0 підписників6 публічних репозиторіївз лют. 2024 р.

За цим репозиторієм стоїть організація — спільна, підзвітна опіка, здатна пережити будь-якого окремого мейнтейнера.

Пакетні екосистеми

РеєстрПакетВерсіяЗавантажень / місВерсіїОстання публікаціяТеги
npmdorkos0.56.02 256629 днів томуclaudeclaude-codeclaude-code-uidorkosautonomous-agentsai-agentagent-sdkagent-scheduleragent-discoveryagent-meshcronschedulertelegramobsidianrelaymeshrest-apicodexopencodemcpmulti-agentcoding-agentsmission-controlself-hosted

Метрики за категоріями

Життєздатність

Чи живий проєкт — чи пишеться код і чи виходять релізи?

82Добрий · 22% загального індексу
Як обчислюється оцінка
36/36Свіжість push — останній push 0 дн. тому
13.2/36Ритм комітів — 19/52 тижнів із комітами
18/18Обсяг комітів — 2 010 комітів за останній рік
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Використані вхідні дані
commits_last_year2 010
human_commit_share1
days_since_last_push0
active_weeks_last_year19
Як обчислюється оцінка
27/27Випускає релізи — опубліковано 60 релізів
36/36Свіжість релізів — останній реліз 9 дн. тому
27/27Ритм релізів — реліз кожні ~1,1 дн.
0/10OpenSSF Scorecard: Signed-Releases — Project has not signed or included provenance with any releases.
Використані вхідні дані
releases_count60
latest_release_tagv0.56.0
releases_from_tagsні
days_since_latest_release9
mean_days_between_releases1,1

Спільнота та впровадження

Чи має проєкт користувачів, завантаження, увагу та влаштовані умови для контриб’юторів?

44У зоні ризику · 18% загального індексу
Як обчислюється оцінка
12.6/60Зірки — 7 зірок
0/25Форки — 1 форків
0/15Спостерігачі — 0 спостерігачів
Використані вхідні дані
forks1
stars7
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Як обчислюється оцінка
22.5/22.5README
22.5/22.5Ліцензія — визнана ліцензія (MIT)
18/18Настанови CONTRIBUTING
0/13.5Кодекс поведінки
0/7.2Шаблон issue
0/6.3Шаблон PR
Використані вхідні дані
has_readmeтак
has_licenseтак
has_contributingтак
has_issue_templateні
has_code_of_conductні
has_pull_request_templateні
Як обчислюється оцінка
44.7/80Щомісячні завантаження — 2 256 завантажень/місяць у npm
0/20Залежні пакети в реєстрі — ця екосистема цього не повідомляє
Використані вхідні дані
packagesdorkos
dependents
ecosystemsnpm
total_downloads
monthly_downloads2 256
Виключено з оцінювання (немає даних або не застосовно): Залежні пакети в реєстрі. Залишкові ваги перенормовано.

Сталість та врядування

Чи переживе проєкт своїх людей — бас-фактор, реактивність, хто за ним стоїть і як супроводжуються пакети?

51Помірний · 24% загального індексу
Як обчислюється оцінка
9/54Бас-фактор — на 1 контриб’ютор(ів) припадає половина всіх комітів
0/22.5Розподіл комітів — головний контриб’ютор — автор 100% комітів
1.4/13.5Широта контриб’юторів — 1 контриб’юторів
0/10OpenSSF Scorecard: Contributors — project has 0 contributing companies or organizations -- score normalized to 0
Використані вхідні дані
bus_factor1
contributors_sampled1
top_contributor_share1
Як обчислюється оцінка
0/46.8Вирішення issue — немає issue або даних
37.7/38.3Прийняття PR — злито 676/686 вирішених PR
0/15OpenSSF Scorecard: Code-Review — Found 0/30 approved changesets -- score normalized to 0
Використані вхідні дані
merged_prs676
open_issues0
closed_issues0
issue_closed_ratio
closed_unmerged_prs10
Виключено з оцінювання (немає даних або не застосовно): Вирішення issue. Залишкові ваги перенормовано.

Власність та опіка

41У зоні ризику
Як обчислюється оцінка
30/30Підтримка власника — у власності організації
0/20Верифікований домен
0/25Охоплення власника — 0 підписників у dork-labs
11.1/25Послужний список — 6 публічних репозиторіїв, вік облікового запису ~2 р.
Використані вхідні дані
followers0
owner_typeOrganization
is_verified
owner_logindork-labs
public_repos6
account_age_days896

Супровід пакетів

100Відмінний
Як обчислюється оцінка
25/25Опубліковано й доступно — 1 пакет(ів) у npm
35/35Свіжість публікацій — остання публікація 9 дн. тому
20/20Історія версій — 62 опублікованих версій
20/20Не застарілий — активний, не deprecated і не yanked
Використані вхідні дані
packagesdorkos
ecosystemsnpm
any_deprecatedні
min_days_since_publish9

Інженерна якість

Чи наявні базові інженерні практики та документація?

94Відмінний · 20% загального індексу
Як обчислюється оцінка
24/24Процеси CI — 17 процес(ів) CI
24/24Наявні тести
16/16Конфігурація лінтера — eslint.config.js, eslint.config.mjs
0/9.6Pre-commit-хуки
6.4/6.4.editorconfig
20/20OpenSSF Scorecard: CI-Tests — 30 out of 30 merged PRs checked by a CI test -- score normalized to 10
Використані вхідні дані
has_ciтак
has_testsтак
has_editorconfigтак
has_linter_configтак
has_precommit_configні

Документація

100Відмінний
Як обчислюється оцінка
30/30README
25/25Каталог документації
15/15Сайт документації / домашня сторінка — https://dorkos.ai
10/10Опис репозиторію
10/10Теми — 20 тем
10/10Wiki
Використані вхідні дані
topicsagent-sdk, ai-agents, anthropic, autonomous-agents, claude, claude-code, cli, cron, developer-tools, mcp, multi-agent, obsidian, open-source, scheduler, self-hosted, telegram, codex, opencode, orchestration, coding-agents
has_wikiтак
homepagehttps://dorkos.ai
has_readmeтак
has_docs_dirтак
has_descriptionтак

Безпека

Чи міцні видимі практики безпеки й ланцюга постачання, без непослабленої пов’язаності з юрисдикціями високого ризику?

50Помірний · 16% загального індексу

Стан безпеки

40У зоні ризику
Як обчислюється оцінка
7.5/7.5Binary-Artifacts — no binaries found in the repo
2.2/7.5Branch-Protection — branch protection is not maximal on development and all release branches
2.5/2.5CI-Tests — 30 out of 30 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
0/2.5Contributors — project has 0 contributing companies or organizations -- score normalized to 0
10/10Dangerous-Workflow — no dangerous workflow patterns detected
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5Ліцензія — license file detected
7.5/7.5Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
5/5Packaging — packaging workflow detected
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
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
0/7.5Vulnerabilities — 52 existing vulnerabilities detected
Використані вхідні дані
sourceopenssf_scorecard
checks_evaluated18
scorecard_versionv5.5.0
checks_inconclusive0
scorecard_aggregate4
Як обчислюється оцінка
35/35Прямі залежності без відомих сповіщень — жодна пряма залежність не має відомих сповіщень
13.2/25Непрямі залежності без відомих сповіщень — уражено 1: @hono/node-server 1.19.17 (moderate 5.9)
40/40Немає задавнених сповіщень — жодне сповіщення не є публічним довше за 90 дн.
Використані вхідні дані
sourceosv
advisories1
affected_packages1
assessed_packages264
unassessed_packages0
affected_by_severitymoderate 1
direct_affected_packages0
Звірено з runtime-замиканням залежностей npm:dorkos@0.56.0 — тим, що тягне за собою встановлення опублікованого пакета, — 264 пакетів. Досяжність не аналізується.

Готовність до ШІ

Наскільки репозиторій оснащений для розробки та супроводу за участі ШІ-агентів? Незалежний, експериментальний бейдж — вага 0.0, тож він подається окремо і не впливає на загальний індекс здоров'я.

81Добрий · 0% загального індексу
Як обчислюється оцінка
45/45Інструкції для агентів — .claude/CLAUDE.md, AGENTS.md, packages/mesh/src/__tests__/fixtures/claude-project/.claude/CLAUDE.md
0/15Машиночитана документація (llms.txt)
40/40Читабельна історія комітів — намір зазначено у 100 з 100 людських комітів (структурований заголовок або пояснювальний текст)
Використані вхідні дані
has_llms_txtні
legible_history_share1
agent_instruction_files.claude/CLAUDE.md, AGENTS.md, packages/mesh/src/__tests__/fixtures/claude-project/.claude/CLAUDE.md
agent_instruction_max_bytes20 801
Як обчислюється оцінка
0/18Розгортання однією командою
22/22Автоматизовані тести
11/11Конфігурація лінтера / форматера — eslint.config.js, eslint.config.mjs
11/11Статична перевірка типів — apps/client/tsconfig.json, apps/desktop/tsconfig.json, apps/e2e/tsconfig.json, apps/obsidian-plugin/tsconfig.json, apps/server/tsconfig.json, apps/site/tsconfig.json, packages/a2a-gateway/tsconfig.json, packages/cli/tsconfig.json, packages/db/tsconfig.json, packages/evals/tsconfig.json, packages/extension-api/tsconfig.json, packages/harness/tsconfig.json, packages/icons/tsconfig.json, packages/marketplace/scripts/tsconfig.json, packages/marketplace/tsconfig.json, packages/mesh/tsconfig.json, packages/operating-skills/tsconfig.json, packages/relay/tsconfig.json, packages/shared/tsconfig.json, packages/skills/tsconfig.json, packages/test-utils/tsconfig.json, scripts/tsconfig.json, templates/relay-adapter/tsconfig.json, tsconfig.json
10/10Відтворюване середовище — Dockerfile, lockfile
10/10Підтверджена практика роботи з агентами — 98 з останніх 100 комітів створено агентом або з його зазначенням
0/8Автоматизоване супроводження — автоматичних оновлень залежностей не виявлено
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Використані вхідні дані
has_nixні
has_testsтак
lockfilespnpm-lock.yaml
has_dockerfileтак
typed_languageтак
bootstrap_files
has_devcontainerні
has_linter_configтак
typecheck_configsapps/client/tsconfig.json, apps/desktop/tsconfig.json, apps/e2e/tsconfig.json, apps/obsidian-plugin/tsconfig.json, apps/server/tsconfig.json, apps/site/tsconfig.json, packages/a2a-gateway/tsconfig.json, packages/cli/tsconfig.json, packages/db/tsconfig.json, packages/evals/tsconfig.json, packages/extension-api/tsconfig.json, packages/harness/tsconfig.json, packages/icons/tsconfig.json, packages/marketplace/scripts/tsconfig.json, packages/marketplace/tsconfig.json, packages/mesh/tsconfig.json, packages/operating-skills/tsconfig.json, packages/relay/tsconfig.json, packages/shared/tsconfig.json, packages/skills/tsconfig.json, packages/test-utils/tsconfig.json, scripts/tsconfig.json, templates/relay-adapter/tsconfig.json, tsconfig.json
agent_commit_share0,98
toolchain_manifests
dependency_bot_commit_share0
Як обчислюється оцінка
45/45Типізований код — TypeScript (статично типізована)
54.8/55Керовані розміри файлів — 16/4 453 файлів вихідного коду понад 60 КБ
Використані вхідні дані
primary_languageTypeScript
largest_source_bytes146 909
source_files_sampled4 453
oversized_source_files16
Як обчислюється оцінка
40/40Схема API (OpenAPI/GraphQL/proto) — docs/api/openapi.json
20/20Сервер MCP
40/40Придатні до запуску приклади — example
Використані вхідні дані
example_dirsexample
has_mcp_signalтак
api_schema_filesdocs/api/openapi.json

Ключові факти

7зірок GitHub
1контриб'юторів
2 010комітів за останні 12 місяців
0днів від останнього пушу
60релізів
1бас-фактор
0відкритих issue
npmпакетних екосистем

Попередження щодо збору даних

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Докладніше

OpenSSF Scorecard 4.0 / 10
4.0сукупно

Незалежна, не прив'язана до інструментів оцінка безпеки від відкритого проєкту OpenSSF Scorecard. Кожна перевірка винагороджує практику безпеки, а не інструмент конкретного постачальника. Перевірки, які Scorecard не зміг визначити, позначено н/д і виключено з оцінки безпеки (вони ніколи не зараховуються як нуль).Scorecard v5.5.0 · 2026-08-01 10:13 UTC

10Binary-Artifactsno binaries found in the repo
3Branch-Protectionbranch protection is not maximal on development and all release branches
10CI-Tests30 out of 30 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
0Contributorsproject has 0 contributing companies or organizations -- score normalized to 0
10Dangerous-Workflowno dangerous workflow patterns detected
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
10Packagingpackaging workflow detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTSAST tool is not run on all commits -- score normalized to 0
10Security-Policysecurity policy file detected
0Signed-ReleasesProject has not signed or included provenance with any releases.
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities52 existing vulnerabilities detected
Прямі залежності 246
РеєстрПакетОбмеження версіїМаніфест
npmdrizzle-orm^0.45.2package.json
npm@codemirror/language^6.11.0apps/client/package.json
npm@codemirror/language-data^6.5.1apps/client/package.json
npm@codemirror/merge^6.10.0apps/client/package.json
npm@codemirror/state^6.5.2apps/client/package.json
npm@codemirror/view^6.36.0apps/client/package.json
npm@dnd-kit/core^6.3.1apps/client/package.json
npm@dnd-kit/sortable^10.0.0apps/client/package.json
npm@dorkos/extension-apiworkspace:*apps/client/package.json
npm@dorkos/iconsworkspace:*apps/client/package.json
npm@dorkos/marketplaceworkspace:*apps/client/package.json
npm@dorkos/sharedworkspace:*apps/client/package.json
npm@google/model-viewer^4.0.0apps/client/package.json
npm@radix-ui/react-alert-dialog^1.1.17apps/client/package.json
npm@radix-ui/react-dialog^1.1.17apps/client/package.json
npm@radix-ui/react-dropdown-menu^2.1.18apps/client/package.json
npm@radix-ui/react-select^2.3.1apps/client/package.json
npm@radix-ui/react-switch^1.3.1apps/client/package.json
npm@radix-ui/react-tabs^1.1.15apps/client/package.json
npm@reactour/tour^3.8.0apps/client/package.json
npm@tanstack/react-form^1.33.0apps/client/package.json
npm@tanstack/react-query^5.101.1apps/client/package.json
npm@tanstack/react-query-devtools^5.101.1apps/client/package.json
npm@tanstack/react-router^1.170.16apps/client/package.json
npm@tanstack/react-table^8.21.3apps/client/package.json
npm@tanstack/react-virtual^3.14.4apps/client/package.json
npm@tanstack/zod-adapter^1.167.0apps/client/package.json
npm@types/canvas-confetti^1.9.0apps/client/package.json
npm@uiw/react-codemirror^4.23.0apps/client/package.json
npm@xterm/addon-fit^0.10.0apps/client/package.json
npm@xterm/addon-webgl^0.18.0apps/client/package.json
npm@xterm/xterm^5.5.0apps/client/package.json
npm@xyflow/react^12.11.1apps/client/package.json
npmansi-regex^6.2.2apps/client/package.json
npmansi-to-react^6.2.6apps/client/package.json
npmblintz^0.4.0apps/client/package.json
npmcanvas-confetti^1.9.4apps/client/package.json
npmclass-variance-authority^0.7.1apps/client/package.json
npmclsx^2.1.1apps/client/package.json
npmcmdk^1.1.1apps/client/package.json
npmcronstrue^3.21.0apps/client/package.json
npmelkjs^0.11.1apps/client/package.json
npmfuse.js^7.4.2apps/client/package.json
npmhtml-to-image1.11.13apps/client/package.json
npmimmer^11.1.8apps/client/package.json
npminput-otp^1.4.2apps/client/package.json
npmlucide-react1.21.0apps/client/package.json
npmmotion^12.42.0apps/client/package.json
npmpapaparse^5.4.1apps/client/package.json
npmradix-ui^1.6.0apps/client/package.json
npmreact^19.2.7apps/client/package.json
npmreact-diff-viewer-continued^4.2.2apps/client/package.json
npmreact-dom^19.2.7apps/client/package.json
npmreact-dropzone^15.0.0apps/client/package.json
npmreact-error-boundary^6.1.2apps/client/package.json
npmreact-json-view-lite^2.5.0apps/client/package.json
npmreact-qr-code^2.2.0apps/client/package.json
npmreact-resizable-panels^3.0.6apps/client/package.json
npmreact-zoom-pan-pinch^3.6.0apps/client/package.json
npmsonner^2.0.7apps/client/package.json
npmstreamdown^2.5.0apps/client/package.json
npmtailwind-merge^3.6.0apps/client/package.json
npmtailwind-variants^3.2.2apps/client/package.json
npmthree^0.183.0apps/client/package.json
npmtw-animate-css^1.4.0apps/client/package.json
npmvaul^1.1.2apps/client/package.json
npmzod^4.4.3apps/client/package.json
npmzustand^5.0.14apps/client/package.json
npm@anthropic-ai/claude-agent-sdk0.3.177apps/desktop/package.json
npm@asteasolutions/zod-to-openapi^8.5.0apps/desktop/package.json
npm@dorkos/dbworkspace:*apps/desktop/package.json
npm@dorkos/serverworkspace:*apps/desktop/package.json
npm@dorkos/sharedworkspace:*apps/desktop/package.json
npm@ngrok/ngrok^1.7.0apps/desktop/package.json
npm@openai/codex0.144.1apps/desktop/package.json
npm@openai/codex-sdk~0.144.1apps/desktop/package.json
npm@opencode-ai/sdk^1.17.13apps/desktop/package.json
npm@scalar/express-api-reference^0.9.8apps/desktop/package.json
npmbetter-sqlite3^12.11.1apps/desktop/package.json
npmconf^15.1.0apps/desktop/package.json
npmcors^2.8.6apps/desktop/package.json
npmdotenv^17.4.2apps/desktop/package.json
npmelectron-log^5.4.3apps/desktop/package.json
npmelectron-updater^6.8.3apps/desktop/package.json
npmesbuild^0.28.0apps/desktop/package.json
npmexpress^5.2.1apps/desktop/package.json
npmgray-matter^4.0.3apps/desktop/package.json
npmnode-pty^1.1.0apps/desktop/package.json
npmuuid^13.0.0apps/desktop/package.json
npmzod^4.4.3apps/desktop/package.json
npm@dorkos/clientworkspace:*apps/obsidian-plugin/package.json
npm@dorkos/serverworkspace:*apps/obsidian-plugin/package.json
npmreact^19.2.7apps/obsidian-plugin/package.json
npmreact-dom^19.2.7apps/obsidian-plugin/package.json
npm@anthropic-ai/claude-agent-sdk0.3.177apps/server/package.json
npm@anthropic-ai/sdk^0.102.0apps/server/package.json
npm@asteasolutions/zod-to-openapi^8.5.0apps/server/package.json
npm@better-auth/api-key^1.6.23apps/server/package.json
npm@dorkos/a2a-gatewayworkspace:*apps/server/package.json
npm@dorkos/dbworkspace:*apps/server/package.json
npm@dorkos/extension-apiworkspace:*apps/server/package.json
npm@dorkos/harnessworkspace:*apps/server/package.json
npm@dorkos/marketplaceworkspace:*apps/server/package.json
npm@dorkos/meshworkspace:*apps/server/package.json
npm@dorkos/operating-skillsworkspace:*apps/server/package.json
npm@dorkos/relayworkspace:*apps/server/package.json
npm@dorkos/sharedworkspace:*apps/server/package.json
npm@dorkos/skillsworkspace:*apps/server/package.json
npm@modelcontextprotocol/sdk1.29.0apps/server/package.json
npm@ngrok/ngrok^1.7.0apps/server/package.json
npm@noble/curves^2.2.0apps/server/package.json
npm@openai/codex0.144.1apps/server/package.json
npm@openai/codex-sdk~0.144.1apps/server/package.json
npm@opencode-ai/sdk^1.17.13apps/server/package.json
npm@opentelemetry/api^1.9.1apps/server/package.json
npm@opentelemetry/exporter-trace-otlp-http^0.220.0apps/server/package.json
npm@opentelemetry/resources^2.2.0apps/server/package.json
npm@opentelemetry/sdk-trace-node^2.2.0apps/server/package.json
npm@scalar/express-api-reference^0.9.8apps/server/package.json
npmbetter-auth^1.6apps/server/package.json
npmbetter-sqlite3^12.11.1apps/server/package.json
npmchokidar^5.0.0apps/server/package.json
npmconf^15.1.0apps/server/package.json
npmconsola^3.4.2apps/server/package.json
npmcors^2.8.6apps/server/package.json
npmcroner^10.0.1apps/server/package.json
npmesbuild^0.28.0apps/server/package.json
npmexpress^5.2.1apps/server/package.json
npmexpress-rate-limit^8.5.2apps/server/package.json
npmgiget^3.3.0apps/server/package.json
npmgray-matter^4.0.3apps/server/package.json
npmmulter^2.2.0apps/server/package.json
npmnode-pty^1.1.0apps/server/package.json
npmsemver^7.8.5apps/server/package.json
npmulidx^2.4.1apps/server/package.json
npmws^8.21.0apps/server/package.json
npmzod^4.4.3apps/server/package.json
npm@base-ui/react^1.6.0apps/site/package.json
npm@better-auth/api-key^1.6.23apps/site/package.json
npm@dorkos/iconsworkspace:*apps/site/package.json
npm@dorkos/marketplaceworkspace:*apps/site/package.json
npm@neondatabase/serverless^1.1.0apps/site/package.json
npmbetter-auth^1.6apps/site/package.json
npmclass-variance-authority^0.7.1apps/site/package.json
npmclsx^2.1.1apps/site/package.json
npmcmdk^1.1.1apps/site/package.json
npmdate-fns^4.4.0apps/site/package.json
npmdrizzle-orm^0.45.2apps/site/package.json
npmembla-carousel-react^8.6.0apps/site/package.json
npmfumadocs-core^16.10apps/site/package.json
npmfumadocs-mdx^14.3.0apps/site/package.json
npmfumadocs-openapi^11apps/site/package.json
npmfumadocs-ui^16.10apps/site/package.json
npmgeist^1.7.2apps/site/package.json
npminput-otp^1.4.2apps/site/package.json
npmlodash-es^4.18.1apps/site/package.json
npmlucide-react1.21.0apps/site/package.json
npmmotion^12.38.0apps/site/package.json
npmnext16.2.9apps/site/package.json
npmnext-themes^0.4.6apps/site/package.json
npmposthog-js^1.395.0apps/site/package.json
npmreact19.2.5apps/site/package.json
npmreact-day-picker^9.14.0apps/site/package.json
npmreact-dom19.2.5apps/site/package.json
npmreact-resizable-panels^3.0.6apps/site/package.json
npmresend^6.16.0apps/site/package.json
npmshiki^4.3.0apps/site/package.json
npmsonner^2.0.7apps/site/package.json
npmstreamdown^2.5.0apps/site/package.json
npmtailwind-merge^3.5.0apps/site/package.json
npmusehooks-ts^3.1.1apps/site/package.json
npmvaul^1.1.2apps/site/package.json
npmzod^4.4.3apps/site/package.json
npm@a2a-js/sdk0.3.13packages/a2a-gateway/package.json
npm@dorkos/dbworkspace:*packages/a2a-gateway/package.json
npm@dorkos/meshworkspace:*packages/a2a-gateway/package.json
npm@dorkos/relayworkspace:*packages/a2a-gateway/package.json
npm@dorkos/sharedworkspace:*packages/a2a-gateway/package.json
npmzod^4.4.3packages/a2a-gateway/package.json
npm@anthropic-ai/claude-agent-sdk0.3.177packages/cli/package.json
npm@anthropic-ai/sdk^0.102.0packages/cli/package.json
npm@asteasolutions/zod-to-openapi^8.5.0packages/cli/package.json
npm@inquirer/prompts^8.5.2packages/cli/package.json
npm@modelcontextprotocol/sdk1.29.0packages/cli/package.json
npm@ngrok/ngrok^1.7.0packages/cli/package.json
npm@openai/codex0.144.1packages/cli/package.json
npm@openai/codex-sdk~0.144.1packages/cli/package.json
npm@opencode-ai/sdk^1.17.13packages/cli/package.json
npm@scalar/express-api-reference^0.9.8packages/cli/package.json
npmbetter-sqlite3^12.11.1packages/cli/package.json
npmconf^15.1.0packages/cli/package.json
npmcors^2.8.6packages/cli/package.json
npmdotenv^17.4.2packages/cli/package.json
npmesbuild^0.28.0packages/cli/package.json
npmexpress^5.2.1packages/cli/package.json
npmgray-matter^4.0.3packages/cli/package.json
npmnode-pty^1.1.0packages/cli/package.json
npmqrcode-terminal^0.12.0packages/cli/package.json
npmuuid^13.0.0packages/cli/package.json
npmws^8.21.0packages/cli/package.json
npmzod^4.4.3packages/cli/package.json
npmbetter-sqlite3^12.11.1packages/db/package.json
npmdrizzle-orm^0.45.2packages/db/package.json
npm@eslint/js^9.39.4packages/eslint-config/package.json
npmeslint-config-prettier^10.1.8packages/eslint-config/package.json
npmeslint-plugin-jsdoc^63.0.9packages/eslint-config/package.json
npmeslint-plugin-jsx-a11y^6.10.2packages/eslint-config/package.json
npmeslint-plugin-react^7.37.5packages/eslint-config/package.json
npmeslint-plugin-react-hooks7.1.0packages/eslint-config/package.json
npmtypescript-eslint^8.62.0packages/eslint-config/package.json
npm@dorkos/dbworkspace:*packages/evals/package.json
npm@dorkos/serverworkspace:*packages/evals/package.json
npm@dorkos/sharedworkspace:*packages/evals/package.json
npm@dorkos/test-utilsworkspace:*packages/evals/package.json
npmzod^4.4.3packages/evals/package.json
npm@dorkos/sharedworkspace:*packages/extension-api/package.json
npmzod^4.4.3packages/extension-api/package.json
npm@dorkos/marketplaceworkspace:*packages/harness/package.json
npmzod^3.25.76packages/harness/package.json
npmlucide-react1.21.0packages/icons/package.json
npm@dorkos/skillsworkspace:*packages/marketplace/package.json
npmzod^3.25.76packages/marketplace/package.json
npm@dorkos/dbworkspace:*packages/mesh/package.json
npm@dorkos/sharedworkspace:*packages/mesh/package.json
npmdrizzle-orm^0.45.2packages/mesh/package.json
npmulidx^2.4.1packages/mesh/package.json
npm@dorkos/skillsworkspace:*packages/operating-skills/package.json
npm@chat-adapter/telegram^4.31.0packages/relay/package.json
npm@dorkos/dbworkspace:*packages/relay/package.json
npm@dorkos/sharedworkspace:*packages/relay/package.json
npm@grammyjs/auto-retry^2.0.2packages/relay/package.json
npm@slack/bolt^4.7.3packages/relay/package.json
npm@slack/web-api^7.17.0packages/relay/package.json
npmchat^4.31.0packages/relay/package.json
npmchokidar^5.0.0packages/relay/package.json
npmdrizzle-orm^0.45.2packages/relay/package.json
npmgrammy^1.44.0packages/relay/package.json
npmslackify-markdown^5.0.0packages/relay/package.json
npmulidx^2.4.1packages/relay/package.json
npmzod^4.4.3packages/relay/package.json
npm@asteasolutions/zod-to-openapi^8.5.0packages/shared/package.json
npmulidx^2.4.1packages/shared/package.json
npmzod^4.4.3packages/shared/package.json
npm@dorkos/sharedworkspace:*packages/skills/package.json
npmgray-matter^4.0.3packages/skills/package.json
npmzod^3.25.76packages/skills/package.json
Усі залежності не зібрано

Не вдалося зібрати розв'язаний набір залежностей для цього звіту: GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Сповіщення про залежності 1

Встановлення npm:dorkos@0.56.0 тягне 264 пакетів, прямих і транзитивних: 1 мають відомі сповіщення, з них 0 — прямі залежності.

ПакетВерсіяЗв'язокКритичністьСповіщеньВиправлено в
@hono/node-server1.19.17непрямапомірна12.0.5

Сповіщення означає, що версія, записана в графі залежностей, потрапляє в уражений діапазон. Досяжність не аналізується, а граф містить піниї розробки й тестування — знахідка може стосуватися інструментів, а не поставленого коду.

Звіт у форматі JSON машиночитний
{
  "data": {
    "repo": {
      "topics": [
        "agent-sdk",
        "ai-agents",
        "anthropic",
        "autonomous-agents",
        "claude",
        "claude-code",
        "cli",
        "cron",
        "developer-tools",
        "mcp",
        "multi-agent",
        "obsidian",
        "open-source",
        "scheduler",
        "self-hosted",
        "telegram",
        "codex",
        "opencode",
        "orchestration",
        "coding-agents"
      ],
      "is_fork": false,
      "size_kb": 231051,
      "has_wiki": true,
      "homepage": "https://dorkos.ai",
      "languages": {
        "CSS": 68530,
        "MDX": 231982,
        "HTML": 81667,
        "Shell": 203093,
        "Python": 106794,
        "Dockerfile": 8192,
        "JavaScript": 128935,
        "TypeScript": 33031266
      },
      "pushed_at": "2026-08-01T09:38:14Z",
      "created_at": "2026-02-12T00:54:36Z",
      "owner_type": "Organization",
      "updated_at": "2026-08-01T09:38:19Z",
      "description": "You, multiplied. Mission control for Claude Code, Codex, and OpenCode: see every session, approve what your agents do, and run them on a schedule. Self-hosted, MIT.",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "main",
      "license_spdx_raw": "MIT",
      "primary_language": "TypeScript",
      "significant_languages": [
        "TypeScript"
      ]
    },
    "owner": {
      "blog": "dorkian.com",
      "name": "Dork Labs",
      "type": "Organization",
      "login": "dork-labs",
      "company": null,
      "location": null,
      "followers": 0,
      "avatar_url": "https://avatars.githubusercontent.com/u/160296816?v=4",
      "created_at": "2024-02-17T02:46:22Z",
      "is_verified": null,
      "public_repos": 6,
      "account_age_days": 896
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v0.56.0",
          "kind": "minor",
          "published_at": "2026-07-22T22:17:13Z"
        },
        {
          "tag": "v0.55.0",
          "kind": "minor",
          "published_at": "2026-07-22T10:09:25Z"
        },
        {
          "tag": "v0.54.0",
          "kind": "minor",
          "published_at": "2026-07-21T14:50:20Z"
        },
        {
          "tag": "v0.53.0",
          "kind": "minor",
          "published_at": "2026-07-20T18:27:02Z"
        },
        {
          "tag": "v0.52.0",
          "kind": "minor",
          "published_at": "2026-07-20T13:52:05Z"
        },
        {
          "tag": "v0.51.0",
          "kind": "minor",
          "published_at": "2026-07-17T22:41:48Z"
        },
        {
          "tag": "v0.50.0",
          "kind": "minor",
          "published_at": "2026-07-17T17:36:39Z"
        },
        {
          "tag": "v0.49.0",
          "kind": "minor",
          "published_at": "2026-07-14T14:50:20Z"
        },
        {
          "tag": "v0.48.0",
          "kind": "minor",
          "published_at": "2026-07-13T22:14:53Z"
        },
        {
          "tag": "v0.46.0",
          "kind": "minor",
          "published_at": "2026-07-12T20:32:36Z"
        },
        {
          "tag": "v0.45.1",
          "kind": "patch",
          "published_at": "2026-07-10T04:07:44Z"
        },
        {
          "tag": "v0.45.0",
          "kind": "minor",
          "published_at": "2026-07-10T03:55:35Z"
        },
        {
          "tag": "v0.44.0",
          "kind": "minor",
          "published_at": "2026-06-16T23:13:38Z"
        },
        {
          "tag": "v0.43.1",
          "kind": "patch",
          "published_at": "2026-06-13T21:05:55Z"
        },
        {
          "tag": "v0.43.0",
          "kind": "minor",
          "published_at": "2026-06-12T00:38:14Z"
        },
        {
          "tag": "v0.42.0",
          "kind": "minor",
          "published_at": "2026-06-05T20:48:29Z"
        },
        {
          "tag": "v0.41.0",
          "kind": "minor",
          "published_at": "2026-04-15T17:20:37Z"
        },
        {
          "tag": "v0.40.0",
          "kind": "minor",
          "published_at": "2026-04-14T14:53:21Z"
        },
        {
          "tag": "v0.39.0",
          "kind": "minor",
          "published_at": "2026-04-13T02:41:30Z"
        },
        {
          "tag": "v0.38.0",
          "kind": "minor",
          "published_at": "2026-04-12T02:41:47Z"
        },
        {
          "tag": "v0.37.0",
          "kind": "minor",
          "published_at": "2026-04-11T21:58:57Z"
        },
        {
          "tag": "v0.36.0",
          "kind": "minor",
          "published_at": "2026-04-11T16:51:29Z"
        },
        {
          "tag": "v0.35.0",
          "kind": "minor",
          "published_at": "2026-04-09T20:54:35Z"
        },
        {
          "tag": "v0.34.1",
          "kind": "patch",
          "published_at": "2026-04-09T11:01:58Z"
        },
        {
          "tag": "v0.34.0",
          "kind": "minor",
          "published_at": "2026-04-08T15:16:50Z"
        },
        {
          "tag": "v0.33.0",
          "kind": "minor",
          "published_at": "2026-04-05T20:22:06Z"
        },
        {
          "tag": "v0.32.0",
          "kind": "minor",
          "published_at": "2026-04-04T21:56:09Z"
        },
        {
          "tag": "v0.31.0",
          "kind": "minor",
          "published_at": "2026-04-04T00:26:26Z"
        },
        {
          "tag": "v0.30.0",
          "kind": "minor",
          "published_at": "2026-03-31T16:34:56Z"
        },
        {
          "tag": "v0.29.0",
          "kind": "minor",
          "published_at": "2026-03-31T02:10:45Z"
        },
        {
          "tag": "v0.28.0",
          "kind": "minor",
          "published_at": "2026-03-30T17:04:54Z"
        },
        {
          "tag": "v0.27.0",
          "kind": "minor",
          "published_at": "2026-03-28T16:59:14Z"
        },
        {
          "tag": "v0.26.0",
          "kind": "minor",
          "published_at": "2026-03-28T11:24:02Z"
        },
        {
          "tag": "v0.25.0",
          "kind": "minor",
          "published_at": "2026-03-27T13:05:53Z"
        },
        {
          "tag": "v0.24.0",
          "kind": "minor",
          "published_at": "2026-03-25T14:34:41Z"
        },
        {
          "tag": "v0.23.0",
          "kind": "minor",
          "published_at": "2026-03-24T03:28:05Z"
        },
        {
          "tag": "v0.22.0",
          "kind": "minor",
          "published_at": "2026-03-24T00:48:34Z"
        },
        {
          "tag": "v0.21.0",
          "kind": "minor",
          "published_at": "2026-03-23T15:57:00Z"
        },
        {
          "tag": "v0.20.0",
          "kind": "minor",
          "published_at": "2026-03-22T20:17:48Z"
        },
        {
          "tag": "v0.19.0",
          "kind": "minor",
          "published_at": "2026-03-21T23:21:22Z"
        },
        {
          "tag": "v0.18.0",
          "kind": "minor",
          "published_at": "2026-03-20T02:41:04Z"
        },
        {
          "tag": "v0.17.2",
          "kind": "patch",
          "published_at": "2026-03-19T22:22:38Z"
        },
        {
          "tag": "v0.17.0",
          "kind": "minor",
          "published_at": "2026-03-18T23:56:26Z"
        },
        {
          "tag": "v0.16.0",
          "kind": "minor",
          "published_at": "2026-03-18T14:53:50Z"
        },
        {
          "tag": "v0.15.0",
          "kind": "minor",
          "published_at": "2026-03-17T13:12:24Z"
        },
        {
          "tag": "v0.14.0",
          "kind": "minor",
          "published_at": "2026-03-16T17:48:22Z"
        },
        {
          "tag": "v0.13.1",
          "kind": "patch",
          "published_at": "2026-03-15T01:36:23Z"
        },
        {
          "tag": "v0.13.0",
          "kind": "minor",
          "published_at": "2026-03-15T01:08:23Z"
        },
        {
          "tag": "v0.12.0",
          "kind": "minor",
          "published_at": "2026-03-13T16:33:53Z"
        },
        {
          "tag": "v0.11.0",
          "kind": "minor",
          "published_at": "2026-03-11T16:11:31Z"
        },
        {
          "tag": "v0.10.0",
          "kind": "minor",
          "published_at": "2026-03-11T09:44:29Z"
        },
        {
          "tag": "v0.9.1",
          "kind": "patch",
          "published_at": "2026-03-10T15:46:58Z"
        },
        {
          "tag": "v0.9.0",
          "kind": "minor",
          "published_at": "2026-03-10T03:52:21Z"
        },
        {
          "tag": "v0.8.0",
          "kind": "minor",
          "published_at": "2026-03-05T01:48:12Z"
        },
        {
          "tag": "v0.7.0",
          "kind": "minor",
          "published_at": "2026-03-03T03:07:14Z"
        },
        {
          "tag": "v0.6.0",
          "kind": "minor",
          "published_at": "2026-03-02T13:00:31Z"
        },
        {
          "tag": "v0.5.0",
          "kind": "minor",
          "published_at": "2026-03-01T19:10:24Z"
        },
        {
          "tag": "v0.4.0",
          "kind": "minor",
          "published_at": "2026-02-27T05:23:26Z"
        },
        {
          "tag": "v0.3.0",
          "kind": "minor",
          "published_at": "2026-02-18T16:14:47Z"
        },
        {
          "tag": "v0.2.0",
          "kind": "minor",
          "published_at": "2026-02-17T10:21:54Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "9da8c34d3dcb777041cfc90ad63ec0527dda3ebc",
          "body": "…esidual (#687)\n\nThe program shipped as twelve PRs; the spec moves to implemented, and the\nfollow-ups gain the one gap reviews kept circling: Codex's never-asking\nmiddle stop enters without a consent ritual, covered by the amber caption\nby design.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(specs): trust-dial records its implementation and its sharpest r…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-08-01T09:33:54Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "69c3fda31844e5dd58ebfd80aef822313e9557f0",
          "body": "* feat(session): a new conversation starts at the trust level you chose\n\nThe last piece of the Trust Dial program: a person can now say once how much\na new session may do without asking, instead of moving the dial every time\nthey open a conversation.\n\nThe stored value is the runtime-neutral STOP, ne\n[…]\n  of a label over an empty dial; the four new bare buttons take `focus-ring`.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(settings): tell DorkOS how much new sessions may do — once (#686)",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-08-01T09:23:56Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f5bdb918eae264f8cc4447b118a7e4c1783db5b1",
          "body": "… stale (#685)\n\nTwo branches regenerated the API docs against different bases and the\nqueue merged both cleanly; the generated MDX for PATCH /api/sessions/:id\nlost the autonomy-acknowledgement description on the combined tree.\nRe-run of the generators, no hand-written content.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(api): regenerate the session PATCH doc the trust-dial merge left…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-08-01T08:37:08Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "818a953649b670acd71d54f6dbd281c553ab410c",
          "body": "…l it, ghosts release their names, a reused folder starts fresh (#684)\n\n* fix(mesh): an agent keeps its identity when its project is checked out twice (DOR-790)\n\n`.dork/agent.json` is git-tracked, so every clone and linked worktree carries\none manifest ULID — ten checkouts share one id on the machin\n[…]\nng` during implementation. The liveness rule the spec\nspecifies is unchanged.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(mesh): an agent keeps its identity — copied checkouts can't stea…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-08-01T08:08:35Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e9b566d9d8b94607aade07c849dfbc27cb489ae1",
          "body": "…moved, the teeth kept (#683)\n\n* test(server): pin the dark holder's clock in the cross-client lock test\n\nThe takeover leg made the abandoned turn go dark with `() => Date.now() -\nLOCK_TTL_MS - 1`, a probe that recomputes the answer on every call. The\nlock manager samples `now` first and calls the p\n[…]\nto 0.5 now that beforeEach pins\nit; the two genuine overrides (1 and 0) stay.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "test(server): three timing flakes become deterministic — the races re…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-08-01T07:33:57Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4d16061c41251712de41dacf81f32d9b5394f9fa",
          "body": "… (#682)\n\n* feat(session): Full autonomy asks first, and the server is what asks\n\nThe confirmation dialog that landed with the Trust Dial (#680) was a\ncourtesy: a second cockpit tab, a stale window, or a script could write\n`permissionMode: bypassPermissions` straight past it. A gate that lives in\non\n[…]\nsetters, so \"all\" is the consistent choice the\ntoolchain can actually verify.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(session): Full autonomy asks first — and the server is what asks…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-08-01T07:21:32Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "919d5eda3cf1a9747cd98848c096455f20564f25",
          "body": "…lling the truth (#681)\n\n* refactor(client): the Trust Dial becomes a shared control, not a status-line one\n\nThe dial shipped inside `features/status`, which is where its only caller\nlived. That is also the mechanical reason the product had three permission\npickers telling three different stories: a\n[…]\nsummary also pushed the\nCLI install preview past 80 columns; tightened to 78.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(client): every place you pick a trust level is the same dial, te…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-08-01T07:10:30Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "823f2c9c5fa6db55d95264b48590eac3f4f61507",
          "body": "…essaging observability spine (#679)\n\n* feat(observability): one id follows a message from the room to the reply\n\nEvery hop of a message's life — a room entry, a claim, a triggerTurn, a\nruntime turn, a reply post, a relay delivery — used to carry a different\nid vocabulary, so reconstructing one exch\n[…]\nm its source instead\nof through the projector, which no longer re-exports it.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(server): one id follows a message from dispatch to reply — the m…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-08-01T05:51:39Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "05d6a2b7fa91c262fd483b1d0c50e9a4e7d9bea8",
          "body": "… with three stops (#680)\n\n* feat(shared): a permission mode says which question it answers\n\nTwo modes could sit at the same dial position and mean unrelated things.\nClaude's `plan` sits where \"ask first\" sits, but nobody chooses planning\nas a level of trust — you switch it on for a stretch of work \n[…]\npec's own follow-ups\nrather than asserted in a code comment nobody can check.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(client): the Trust Dial — how much your agent may do is one dial…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-08-01T05:44:22Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f863e09bd0ee1b14948e042778b5c172698cc51b",
          "body": "…#678)\n\n* feat(session): permission receipts survive reopening the conversation\n\nA receipt was supposed to be permanent — the transcript is the audit trail\n(specs/trust-dial §4), and the one record a person most wants when reviewing\nwhat an agent did is what it asked for and what they answered. As s\n[…]\njection, and the projector had crossed its file-size\nthreshold carrying them.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(session): permission receipts survive reopening a conversation (…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-08-01T04:53:38Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6a51210af7d420eafbb72ad25c8aab18913de575",
          "body": "* feat(shared): permission modes carry machine-readable meaning\n\nA permission mode used to be an id and a label, which left every surface\nthat warns about one guessing from the id. `PermissionModeDescriptor` now\ncarries what the mode actually does: which of the three dial positions it\nsits at, how o\n[…]\no` and asserts the bypass rank — a rank\nno id list in the client can produce.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(runtimes): permission modes carry machine-readable meaning (#677)",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-08-01T04:16:25Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5f40666be1e2a50e8db88646d5d8b0198608844f",
          "body": "…(#676)\n\nPR #673 gave the stalled banner and the mention palette screen-reader\nannouncer twins, and stopped the paged room feed claiming positions it\ncannot know. Four browser tests still matched the old surface: two\ntext locators now resolved to both the visible line and its announcer,\nand the feed\n[…]\netsize -1 with no posinset (the thread panel keeps its exact values).\n\nAll four verified green locally against a real browser on isolated\nports.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "test(e2e): the browser suite learns the room's honest a11y semantics …",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-08-01T03:33:02Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "51d599750a08be51158476701b61936013a13aa9",
          "body": "…on as receipts (#675)\n\n* feat(client): an answered permission request settles into the conversation as a receipt\n\nA tool-approval card used to be a question with no answer kept. You approved\nor denied, the card vanished, and the transcript held no trace of what was\nasked or what you said — the one \n[…]\nhange, with tests for both the\n  silence and that it still speaks afterwards.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(client): answered permission requests settle into the conversati…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-08-01T03:27:10Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f768f2f7e8ab10da367c59f2c4ce64d53753919a",
          "body": "…runtime, honest on unknowns (#674)\n\n* fix(server): a session can only be set to a permission mode its runtime can run\n\nPATCH /api/sessions/:id validated `permissionMode` against the six-value shared\nenum and nothing else, so a mode the session's OWN runtime never declared was\naccepted and persisted\n[…]\nBoth stay declared\nin `covers:` so the gate still accounts for their commits.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(server): permission modes tell the truth — validated against the …",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-08-01T03:05:37Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c9e207095eee2de05442336c130d54a305885a0c",
          "body": "…keeps your place (#673)\n\n* fix(rooms): a screen reader hears what a message is about, not the diff pasted into it\n\nLanding on a message used to read its whole body out first, because the row\npointed its accessible description at everything it had rendered — so a message\ncarrying a pasted diff annou\n[…]\nto reach into, and that is the test to apply before\ncopying it anywhere else.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(rooms): the room reads aloud sensibly, reaches every finger, and …",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-08-01T02:57:08Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "318e7cd11ac0d9315b905f926db8e9d813573b9e",
          "body": "…oth dispatch paths (#672)\n\n* fix(tasks): a scheduled run stops when you stop it, even parked on an approval\n\n`executeRunDirect` built a combined abort signal from `maxRuntime` and the\nrun's cancel controller, then only read it at the top of the `for await` body —\nwhich runs when the NEXT event arri\n[…]\n first event was still in flight\ncannot pass them by the old loop-body check.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(tasks): a task that hits its time limit is actually stopped, on b…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-08-01T02:50:39Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "af3aa101a0965986c3665d3b1bfff1d239ec5142",
          "body": "…d runs (#671)\n\n* fix(tasks): a file on disk cannot switch a scheduled task to run without approvals\n\nA task's SKILL.md `permissions:` frontmatter went straight into the schedule\nrow, alongside a hardcoded `status: 'active'` and an `enabled` that defaults\ntrue. Anything that can write `.dork/tasks/<\n[…]\nhed-off task\nkeeps its grant by design, so the comments stop calling it live.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(tasks): a file on disk cannot grant itself approval-free schedule…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-08-01T02:49:40Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b702a693cb12e0405706cc1a2cc90ae9c840a746",
          "body": "…a Stop button that actually stops it (#670)\n\n* fix(runtime): the log says when nobody answered a prompt in time\n\nAll three interactive handlers auto-deny after ten minutes and used to\nwrite nothing anywhere: the card vanished from any client that happened\nto be watching, the turn carried on as thou\n[…]\noves out of\n  `room-trigger.ts` into one object, beside the writes they damp.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(rooms): a room says when its agent is stuck waiting on you, and …",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-08-01T02:34:27Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a0c71d31e42f48e8f6245297c259e7fe8cfd8deb",
          "body": "…ng lost on the way to the cache (#669)\n\nThe supportedModels() call site re-picked five fields from the SDK's\nmodel objects before handing them to the cache, dropping\nsupportsAdaptiveThinking (and supportsAutoMode, supportsFastMode).\nWith the capability invisible, resolveThinkingOptions never asked \n[…]\na real model: thinking_delta text streams\nover the durable session stream, the transcript persists the text, and\nthe history API serves it back.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(runtime): thinking shows up again — model capabilities stop getti…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-08-01T01:40:30Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d2aca153b439383d0e775e6f17d297731b2fad6c",
          "body": "…n decisions (#668)\n\nSix interactively-decided design decisions for collapsing the six-mode\npermission surface into a three-stop Trust Dial: mental model, per-runtime\ntruth via living captions over structured capability descriptors, ambient\nsignal, request-to-receipt approval cards, a server-enforced autonomy door,\nand a user-configurable default trust level (Full autonomy permitted,\nconsent-gated at set-time).\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(specs): trust-dial — permission-mode redesign ideation and desig…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-08-01T01:38:24Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "5482d155c6333b3586312002f3e95935c5c51815",
          "body": "… fault logs one line an hour (#667)\n\n* fix(tasks): the five-minute task sync no longer aborts on a deleted task\n\nThe reconciler that keeps task files and the DB cache in step has never\ncompleted a pass on any install where a retired task had ever run.\n\n`pulse_runs.schedule_id` referenced `pulse_sch\n[…]\nat sessions started by it lose\ntheir \"came from this task\" label.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(tasks): the five-minute task sync stops failing, and one standing…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-08-01T01:28:14Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "17a740366168e2af421c8bd779d9239af6e75008",
          "body": "…Rs (#666)\n\n* docs(specs): mesh identity survives a copied checkout — spec + two ADRs\n\nThe mesh-identity-integrity mini-spec resolves DOR-790's open design\nquestion: keep git-committed manifest ids and refuse the silent\nrelocation while the incumbent path still holds the manifest, instead\nof re-mint\n[…]\nmanifests surface via the existing logger, test list renumbered\n\nRefs DOR-790\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(specs): mesh identity survives a copied checkout — spec + two AD…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-08-01T01:01:27Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2838947fca5de29c7a14795fb4c66387628e18dc",
          "body": "…rs stop pretending (#665)\n\n* fix(relay): a chat says when it cannot reach its agent, and the numbers stop pretending (DOR-789)\n\nNine conditions could stop a chat message before the agent ever ran — a\npaused binding, a chat not allowed to reach its agent, a missing agent, a\nsession that would not st\n[…]\n` shape, and MetricsSummary's No-listener pill. All five mutation-\n  checked.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(relay): a chat says when it cannot reach its agent, and the numbe…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-31T23:04:13Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2e212bef2cd4a19c72bdff49f147d85f83a192df",
          "body": "…664)\n\n* fix(rooms): an agent in a room keeps the conversation it is having (DOR-784)\n\nA room binds one session per agent, and that binding is the agent's memory\nof the room. It is written before the first turn from a placeholder id the\nroom mints itself, because two posts arriving before the first \n[…]\nAdded` and says the rows\n  exist for diagnosis with nothing reading them yet.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(rooms): an agent in a room keeps the conversation it is having (#…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-31T21:31:35Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "bf08fe4569ae409f07677f1599c2be3f0f702462",
          "body": "…s running (#663)\n\n* feat(cli): doctor finds the problems that only show up while DorkOS is running (DOR-797)\n\nPhase P4 of the messaging-observability spec. `dorkos doctor` keeps its\nCheckResult model, its renderer, and its \"only a fail exits non-zero\" rule;\nthis widens what it can answer.\n\n- `Check\n[…]\n one write; the\n  listRoomSessions TSDoc no longer forbids the caller it has.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(cli): doctor finds the problems that only show up while DorkOS i…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-31T21:10:43Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b6d4e958befc6525bde8a178d9cc16afc714c77f",
          "body": "… send stays in view (DOR-799) (#662)\n\nThe pending-post row is drawn under the feed, not in it — the server has\nnot accepted the message, so it is not one of the feed's numbered\narticles. The scroll pin, though, was keyed on the newest server ENTRY\nalone, so appending that row grew the scroller with\n[…]\nchanged: a reader scrolled\nback through history is left where they are, and finds the row waiting\nwhen they return to the bottom.\n\nRefs DOR-799.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(rooms): the scroll pin follows a message of your own, so a failed…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-31T20:37:40Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f4819e016b1e19646d3c4c98dbdce9f132f13ae4",
          "body": "…phaned (#661)\n\n* fix(session): bound the stall watchdog's interrupt and log every stall\n\nThe watchdog awaited `interruptQuery` with no bound. That call reaches the\nsame possibly-wedged subprocess the watchdog is firing about, so it can hang\ntoo — leaving the turn frozen at `streaming`, the lock hel\n[…]\nill expires at INTERACTION_TIMEOUT_MS, which is untouched here.\n\nRefs DOR-782\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(session): a turn waiting on a person is not killed, stolen, or or…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-31T20:12:21Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b065bbfa2d3c4245a0289325cf1e8e6b5a5230e0",
          "body": "Ideation + specification for the messaging observability workstream:\na domain dispatchId threaded via AsyncLocalStorage across the room\ndispatch chain, always-mounted read-only debug surfaces, log\nconventions, doctor extensions, and dev-loop noise work. Registered in\nspecs/manifest.json.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(specs): messaging observability & DX specification (DOR-797) (#660)",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-31T20:01:23Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "fe04a894468729b87d96d0a7ed175fae16fd2230",
          "body": "…r sessions, allowlists, and secrets (#659)\n\n* fix(relay): chat integrations stay closed when consent cannot be resolved\n\nThe relay/bridge SECURITY batch from a verified deep review (DOR-788).\nEvery item here is a place where the machine, on losing track of who was\nallowed to talk to whom, kept talk\n[…]\ns.\n\nAll six mutations of the two blockers' fixes are caught by the new tests.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(relay): chat bridges fail closed — consent, access rules, per-use…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-31T19:35:43Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0d0abf6b29e7dda17a93800e034e09e9d48b6e00",
          "body": "…d a sent message is never silently lost (DOR-783) (#658)\n\n* fix(rooms): a room comes back on its own, and says what it is doing while it cannot (DOR-783)\n\nEight client-side defects from an incident review, all of them variations on\none theme: a room that could not tell the reader what was happening\n[…]\ntself\nwith nothing pressed, which is the new behaviour and has no race in it.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(client): the room stream heals itself, notices tell the truth, an…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-31T19:35:42Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0746d4a5e7927f4b8371dc0c6469f535d980eebf",
          "body": "…out why an agent is quiet (DOR-781) (#657)\n\nA production-critical fix program for the rooms dispatcher, derived from a\nverified incident post-mortem: a room went forty-one minutes without answering a\nperson, and left three lines in the server log to explain it.\n\nEight fixes, plus the three blockers\n[…]\noted to the shipped copy.\n\nEvery fix was seeded back in and confirmed to turn its test red, including both\ndirections of the narrowed exemption.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(rooms): a room answers everyone who asked, and tells the truth ab…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-31T19:35:40Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b389593cfbca34d53af81b587154876f5edc2195",
          "body": "…n flight is a live region (#656)\n\nA conversation is now a `role=\"feed\"`: Page Down and Page Up move message to\nmessage, Ctrl+Home and Ctrl+End leave for the controls above and below, and\nevery message is a named article that says where it sits in the transcript.\n\nThe second adopter of the shared fe\n[…]\nput four announcements through the live region with zero repeats,\nzero replays of anything already said, and an empty region at rest afterwards.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(chat): the session transcript is a WAI-ARIA feed, and the turn i…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-31T15:11:12Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c8f5d945d84476ec08420d2986752f21fe959512",
          "body": "…thread a message at a time (#655)\n\nAn open thread is now a `role=\"feed\"` of its own, the same pattern the room\ntimeline adopted: Page Down and Page Up move root-to-reply, Ctrl+Home and\nCtrl+End leave for the header's close button and the thread's own composer,\nand every message says where it sits i\n[…]\ns Page Down / Page Up across a three-message thread and back out\nthrough both ends, and a capture run over the desktop panel and the 390px push.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(rooms): the thread panel is a feed too, so a keyboard crosses a …",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-31T14:06:03Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "39b59b067b4d64714bce1b666e3f2c6d7aff297a",
          "body": "…ses it a message at a time (#654)\n\nA room's history is now a `role=\"feed\"`: Page Down and Page Up move\nmessage to message, Ctrl+Home and Ctrl+End leave for the header above\nand the composer below, and every message is a named article that says\nwhere it sits in the room's flow.\n\nWhy it needed to be \n[…]\none walking Page Down / Page Up / Ctrl+End across a three-message\nroom and out into the composer, including from inside a message's own\ntoolbar.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(rooms): the room timeline is a WAI-ARIA feed, so a keyboard cros…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-31T12:53:06Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "89496daafeb29f3f3f8d8aef223414ff74465ebf",
          "body": "…ts the conversation (#653)\n\nClaude Code renames a session while it runs, and callers that persist the first\nid they saw keep asking with it — a room binding stores the SDK id from the\nfirst turn and never revisits it. `ensureSession` asked the session map for that\nid alone, found no key, and built \n[…]\nstill creates: eviction\nsweeps the whole alias chain, so an id asked again after the session is gone has\nnothing to resolve to and starts fresh.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(runtime): starting a turn by an older session name no longer spli…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-31T12:18:31Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "de99438acc3dc4b9b61ee5aa1a2b43a21752c194",
          "body": "The \"falls back to the last thing it said here\" test built its expected\ntimestamp from the live Date.now(), so for the first ~45 minutes after\nlocal midnight the 45-minutes-ago instant fell on the previous calendar\nday and formatRelativeTime rendered \"Yesterday, 11 pm\" instead of \"45m\nago\" — a deter\n[…]\nfollowing\nthe same pattern already used in session-utils.test.ts, so every\nassertion in the file is independent of wall-clock time and timezone.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "test(client): pin the clock in member-line's last-spoke test (#652)",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-31T12:05:27Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f810a2e4690b4a7eef66d9689ee89204b3c0305b",
          "body": "Slack has no bot typing API, so the adapter had been faking one: an\n:hourglass_flowing_sand: reaction added the instant a message arrived,\nbefore anything had claimed it. A message nobody picked up still looked\nlike it was being worked on — the exact shape E16 names as the one not\nto copy.\n\nThe indi\n[…]\nrmClient.startTyping`/`stopTyping` — dead repo-wide, and unable\nto express a channel plus a message timestamp — are deleted rather than\nclaimed.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(relay): Slack marks your message when an agent picks it up (#651)",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-31T11:34:28Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "878023f63a4f48b97355099ac4e7cdde06e5d5f3",
          "body": "…o (#649)\n\nOnboarding has always been able to tell which coding agents are connected — it\nruns the probe, it draws the connect cards — and has never once acted on the\nanswer. A person whose only authenticated runtime was Codex finished setup with\n`runtimes.default` still saying claude-code, because \n[…]\nree writes to the developer's own config. `simulatedDefaultRuntime`\nmakes the disclosure and its picker showable there, with the tap kept local.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(onboarding): setup picks the agent you actually have, and says s…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-31T11:29:36Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "95ad39571951c76f2fc0c42df95e824e7f19b00f",
          "body": "The dispatcher's in-flight check was scoped to one cascade, and every\nmessage a person sends mints a new one. So an agent still working on the\nlast message — routine with `engaged` as the channel default, where any\nturn slower than the wait deadline stays live for up to fifty minutes —\nwas waved str\n[…]\nher to herself, in one of\nthe thirty slots that exist to carry what other people said. Notices\nabout somebody else stay: those are real context.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(rooms): an agent no longer answers twice at once in one room (#650)",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-31T11:24:57Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "cf4ee1df171523b94c7690a4518760479c98e265",
          "body": "…every id it has held (#648)\n\nClaude Code names a session itself, and can rename it again when it picks the\nsession back up. The rebind that follows a rename was told which session to move\nby the id the turn was asked with — which, from the second rename on, is an\nindex alias rather than the key the\n[…]\nmately hold different links in\nthat chain. Eviction sweeps the index by value so the extra aliases die with the\nsession instead of outliving it.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(runtime): a twice-renamed Claude Code session keeps answering to …",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-31T10:56:54Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b252e534757754f24e46dfd12d4053f38f3196c2",
          "body": "… port (#647)\n\nAn interface with one implementation describes that implementation. This adds\nthe foreign case — a read-only adapter for a Buzz relay (Nostr over WebSocket)\n— so the `CommunityAdapter` port is answerable to a backend we do not control\nbefore `apps/community` sets it in concrete.\n\nIt c\n[…]\ning routes through this port yet, and the adapter is\nnot registered at startup — it needs a relay URL from a config surface that\ndoes not exist.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(communities): a read-only Buzz relay behind the CommunityAdapter…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-31T09:32:07Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5181e7306105f70f9138a47de7ea76a824a054c2",
          "body": "A room's presence signals only reach whoever has that room open. The sidebar\ndraws every room at once, so it needs the other half: a claim-time count on the\nglobal fan-out, and a dot on the row it belongs to.\n\nServer: the dispatcher gains a narrow `workingCount(roomId)` accessor over its\nown claim m\n[…]\nave\nit on.\n\nThe dot is emerald, not the brand tint of the unread badge beside it: two facts\nabout one row have to be tellable apart at a glance.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(rooms): the sidebar shows which rooms have an agent working (#646)",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-31T09:15:43Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a1af862eb665ddefe84224db0587416ecfebcc8f",
          "body": "The relay's Claude Code adapter took `runtimeRegistry.getDefault()` through\nan `as unknown as ClaudeCodeAgentRuntimeLike` cast. That cast was the whole\nproblem: the adapter speaks the Claude Agent SDK's session vocabulary, and\n`runtimes.default` is applied to the registry (index.ts:680) well before\n\n[…]\n gets a dated note\nseparating \"claude-code is the shipped default\" from \"the default must be\nClaude-shaped\", which is what it had hardened into.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(runtimes): the relay stops following the default runtime (#645)",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-31T08:34:20Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "57993d5d89777912c1dbf7877228809d88c57f3a",
          "body": "…es it (#644)\n\nWhich runtime a new chat starts on has been a setting in DorkOS all along with\nnowhere to change it — applied at boot, written only by hand, invisible in the\nproduct. Last week the server learned a default model and effort per runtime,\nand the week before that an agent learned to carr\n[…]\ne first session was not running on. It reads the config this screen already has\nin hand — no second request, and the same field the card writes.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(settings): choose what a new chat starts with, and see who ignor…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-31T07:09:27Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5dc4f5c011d4de8efe959ed6fc3f1b2f707e3922",
          "body": "Every thread you started or replied in now has a row in the sidebar, above\nyour channels, newest answer first: what the thread was about, which room it\nis in, how many replies it has, and a count of the ones you have not read.\nClicking a row opens that room with the thread already open beside it.\n\nT\n[…]\nke and so worth advertising, while a thread is something that\nhappens to you, and a heading nobody can fill is an instruction nobody can\nfollow.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(rooms): the sidebar answers “where is this thread?” (#643)",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-31T06:55:16Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3bc73013f61b1d88279bfa5392b080a1993b9bd9",
          "body": "The inline thread gathering is retired. A thread root now carries one quiet\n\"↳ 3 replies · last 9:45 AM\" row, and the thread itself opens in a panel\nbeside the room with its own composer. The room's scroll stays the room's\nhowever long a thread gets; on a phone the panel is a full-screen push with\na\n[…]\nr than in the room's main flow. The thread is named by reference, never\nby quoting its root — the excerpt stays inside the untrusted-text fence.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(rooms): threads get a room of their own — the side panel (#641)",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-31T04:23:36Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7b6f89252f0fce3e850b5e65076fda8bb2513238",
          "body": "The server learned a default model and effort per runtime last week. It was\none answer for the whole machine: the agent that reviews a diff and the agent\nthat watches a room ran on the same model, at the same effort, because there\nwas nowhere to say otherwise.\n\nAn agent can now say otherwise. `model\n[…]\ne server default from then on — so an agent quietly pinning itself\nwould be invisible exactly where somebody would look to explain the behavior.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(agents): an agent carries its own model and effort (#642)",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-31T04:11:08Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "786e2f8ff69b628c76f1e7979efae2983655f719",
          "body": "…fort, per runtime (#640)\n\nWhich model a new session starts on, and how hard it thinks, could only be\nanswered per session, after the fact. This teaches the server an answer: a\ndefault model and default effort per runtime, seeded onto a session at the\nmoment it is created.\n\nPer runtime because a mod\n[…]\nely differ — are\ndocumented at both clamp sites, because one shared default is what makes the\ndivergence visible to a person for the first time.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(config): the server learns its execution defaults — model and ef…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-31T02:08:03Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3c74e4c5eaaccef5af3a5bfe4eb36d41310cd775",
          "body": "…t pop (#639)\n\nThe capsule's leftmost tenants are now this reader's three most-used emoji\nand a 🙂+ that opens a searchable picker; the pills land under the message\nwith all five approved behaviours from the design record §2. Reactions\njoin ENTRY_ACTION_ORDER, so the toolbar, the right-click menu and\n[…]\nve.\n\nKeyboard: the pills are a second roving group reached from the message\nwith ArrowDown, so a message with ten reactions still costs one Tab.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(rooms): react with an emoji — three quick, one picker, pills tha…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-31T00:58:03Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f46737978dc4cc6cee47e0d95fdeb12bc1e0c456",
          "body": "…eal session (#638)\n\nA room binds one session per (room, agent) so an agent keeps a single thread\nof context there. The id it bound was the wrong one.\n\n`room-trigger.ts` mints a UUID BEFORE the turn and writes it to\n`room_sessions`, which is correct and load-bearing: two posts arriving before\nthe fi\n[…]\nwith — the exact stale\nid this commit exists to stop trusting — so leaving it there would hand the\nnext reader a plausible-looking wrong answer.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(rooms): a room agent keeps its memory — the binding follows the r…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-30T23:54:40Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "90941ef5521e6c7b95b2a4902ec8e94dd06478ea",
          "body": "… it (#637)\n\nTwice now a full CI run of `@dorkos/client` has reported every one of its\n7447 tests passing and failed anyway, on a single unhandled error:\n\n  ReferenceError: window is not defined\n    at performWorkOnRootViaSchedulerTask (react-dom-client.development.js)\n    at performWorkUntilDeadlin\n[…]\ndefined.\n\nCost is in the noise: 901/910 user-seconds for the suite before, 909/952\nafter, on a machine busy enough that wall-clock says nothing.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(client): react work can no longer outlive the test that scheduled…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-30T23:41:36Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "bc9af5d09b908325d1217481c50f05c96f11368e",
          "body": "…nse mode becomes readable (DOR-756) (#636)\n\n* refactor(rooms): the members dialog becomes the room details sheet\n\n`features/room-membership` is now `features/room-management`, and\n`RoomMembersDialog` is `RoomDetailsDialog`. The panel is on its way to\nholding everything about a room — topic, archive\n[…]\nec that landed on\nmain this week, was in it. Written by the reporter on the post-merge\nrun, along with that run's counts.\n\n---------\n\nCo-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(rooms): the members dialog becomes the room sheet, and the respo…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-30T23:32:33Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5507e23f40550f2576ae0ed902ed815f2f3af48b",
          "body": "The community port's `publishSignal` already carried its optional presence\npayload, and the reference fake already round-tripped it. What was missing\nwas the backend that could prove it: `LocalCommunityAdapter` declared\n`signals: 'none'`, because `'both'` means round-tripping a payload the room\nsign\n[…]\n lossy:\n`useRoomPresenceStore.observe` drops a progress frame it cannot key or age,\nand a test now pins that instead of leaving it to a comment.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(communities): the port can say who is working (#635)",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-30T22:52:31Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8b5818d7672122ff0ce0570df4d7a954325d6f92",
          "body": "… the receipt (#633)\n\nThe indicator started at inbound publish, before anything had claimed the\nmessage, and blind-capped at 60s. It could show typing for an agent that\nnever ran — the exact shape E16/E16a forbid — and it went quiet a minute into\nwork that was still going.\n\nThe loop is now keyed to \n[…]\n\nclaim that the SignalEmitter carried the delivery→reply span is corrected in\nplace — it has zero producers, and could not have driven anything.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(relay): Telegram typing tells the truth — driven by the turn, not…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-30T22:00:05Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e2078208681bea11fec6334bd075729a2bf2a2c0",
          "body": "…ffort at two scopes (#634)\n\nOperator-approved visual-companion session (2026-07-30): in-context editing with\nan exceptions overview; three inline Config rows with provenance chips;\nchip-is-reset, honest timing with live-apply, the pre-launch picker fix, and\nunsupported-means-said; deviations+broken\n[…]\npenCode effort verified\nunsupported at the API. Onboarding auto-set sequenced behind de-Claude-shaping\ngetDefault(). Build order E1-E5 recorded.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(specs): the execution-defaults design record — runtime, model, e…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-30T21:59:40Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "09913f7582e539d95d1287fa1b3cd3cd67fa4925",
          "body": "…ly (#632)\n\nPut an emoji on a message in a room, and take it back by clicking it again.\nThe pill is the toggle, keyed on (you, this entry, this emoji), so that key\nholds at most one reaction however many times anyone asks. A click sends the\nflip; a client that might retry sends `on: true` or `on: fa\n[…]\nso it is always three, riding the room the reader was already given.\n\nServer only. Nothing a person can see changes until the client half ships.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(rooms): reactions land on the server — and reach the agent quiet…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-30T18:38:02Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a12c8d597d73d3cd4553ef739a4ff5e599ff24c7",
          "body": "…#631)\n\nThe capsule used to be drawn inside the message's own column, so hovering a\nmessage dropped a panel of buttons over its first line — on a group start,\nover the name of whoever spoke. It now straddles the message block's top-right\nedge, half of it in the air between messages, clear of the wor\n[…]\nhe words on the group start and the\ncontinuation alike, while the containment assertion beside it stays green —\nwhich is the point of adding it.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(rooms): the message toolbar moves to the edge — off your words (…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-30T18:33:38Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "13e0e20e13ac41eb63d950fb549cbad24e437efb",
          "body": "… a playground bench (#630)\n\nThe action toolbar on a room message rendered as a ~6px capsule with its own\n24px buttons hanging 9px out of it top and bottom, reading as a rule struck\nthrough the icons.\n\nThe sticky rail that holds the toolbar is a flex row of height ZERO, and a flex\nrow's default `ali\n[…]\na scroller, action counts, group positions, and both themes. No\nserver needed; the action set reaches only two Zustand stores and the clipboard.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(rooms): the message toolbar actually holds its buttons — and gets…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-30T16:27:47Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "bb57054a2baa8b3f037d1fa6e771bdc0b162e939",
          "body": "…hread panel (#629)\n\nOperator-approved visual-companion session (2026-07-30): the action capsule\nstraddles the message edge; reactions ship as three-quick-plus-picker with five\napproved behaviors including the costless agent acknowledgment; inline thread\ngathering retires in favor of reply rows plus\n[…]\naggregates by participation; six spring micro-interactions approved at v2\ntimings. Build order B1-B5 recorded with surface-collision sequencing.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(specs): the room messaging design record — capsule, reactions, t…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-30T16:04:46Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2ee72f96e1a711611aba3ad2b5a8b5aac635fdd2",
          "body": "…kpit (#627)\n\nThreads have rendered in the cockpit since the timeline learned to group by\n`threadRootEntryId`, but nothing in the client could WRITE one: the server\nroute existed and agents could reply through it, a person could not.\n\nDelivered as the entry action SURFACE rather than a lone reply bu\n[…]\ne room budget, and is answered inside the same thread) is\npinned server-side against a scripted runner, where it costs nothing and cannot\nflake.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(rooms): every message gets a menu — reply in thread from the coc…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-30T14:30:10Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "948504c7dd20e9950722634d830d3a41f6751fc0",
          "body": "…ing + project resolution (DOR-736 follow-up) (#628)\n\n* fix(connectors): accept both Composio key kinds — x-user-api-key routing + project resolution (DOR-736 follow-up)\n\nLive verification on the founder's machine overturned #617's conclusion: their\nkeys were fine, our client sent the wrong auth hea\n[…]\nertions, the enum in the three responses that embed the schema, nothing\nelse.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(connectors): accept both Composio key kinds — x-user-api-key rout…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-30T14:28:42Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "377b118811e62b59f7629916aedae036e0afd228",
          "body": "The server already publishes a working signal for every claim its dispatcher\nholds. The cockpit read those signals off the wire and threw them away, with a\ncomment saying no view consumed them. Now one does.\n\nA small keyed store in `entities/room` holds one record per `(author, entry)` —\nthe dispatc\n[…]\ner the spec's one-fragment-per-phase\nrule. It absorbs the two that told earlier slices of the same story, carrying\ntheir `covers:` items across.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(rooms): the room shows who is working on it (#626)",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-30T10:08:34Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0b0133e12d7b3822281aedad4c489b03c2059792",
          "body": "… the same way everywhere (#625)\n\nThe `CommunityAdapter` port contracted `getRoom` to answer `null` for a room\nthat is unknown or invisible, and said nothing at all about what\n`subscribeRoom` owes the same pair. Two backends filled that silence two\ndifferent ways: the reference `FakeCommunityAdapter\n[…]\n what pins the order of the two checks.\n\nNo changelog fragment: an internal contract between two server-side adapters,\nnothing a person can see.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(communities): subscribing to a room that does not exist now fails…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-30T09:55:41Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "443fb3ee633af6bbbb3dd416d8d980d2d388466c",
          "body": "* feat(server,shared): choose which Claude Code account new work runs on (DOR-729)\n\nPhase A of spec `claude-code-accounts`: the config field, the resolvers, the\nclassifications, and the wire contract. No UI and no multi-root reads yet —\nthose are later phases.\n\nA \"Claude Code account\" is a Claude co\n[…]\nSessionListWarning.account drifted the exported spec.\n\nCo-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: choose which Claude Code account runs your work (DOR-729) (#621)",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-30T09:41:00Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "25aa7af159fb908ca1b17c6599340e17f4e898ec",
          "body": "This machine's own SQLite rooms now sit behind the `CommunityAdapter` port,\nand pass `communityConformance` — the same gate a Buzz relay and\n`apps/community` will each clear. It is a wrapper, not a rewrite: every rule a\nroom has still lives in `services/rooms/` (visibility, the one-level thread\nceil\n[…]\nagment lands with the first\n  adapter somebody can SEE, not the first one that exists.\n\nNo changelog fragment: nothing a person can see changes.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(communities): local rooms become the first community adapter (#624)",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-30T07:46:55Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "364d3a88e3da2923fc12420918063f59e34f150b",
          "body": "The claim map has always known which agents are mid-turn, and showed it to\nnobody but other agents. This publishes it on the room's ephemeral signal\nchannel, so the cockpit can draw a working line in the next task (1.3).\n\n`RoomSignalEventSchema` gains three optional fields — `state`\n(`working` | `wo\n[…]\n pinned as\nchosen behaviour, not fixed: it releases with nothing durable beside it, which\nis the one indicator-then-nothing this design accepts.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(rooms): rooms publish the working signal while it is true (#623)",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-30T07:39:30Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e0adb56bf21101ee3d204df93b3d00584a3b7a8b",
          "body": "…is answering (#622)\n\nA room waits ten minutes for a triggered agent to answer, then stops waiting.\nThe turn is never cancelled, so its answer still posts when it lands. But the\nCLAIM died at that deadline too, and the claim is the only live record that an\nagent is working. On the shipped defaults t\n[…]\nd` since #620, and the stale comments cost a debugging cycle here.\n\nFoundation for the room-presence signal publisher (spec 260729-145341 §3.1).\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(rooms): a claim lives until its turn is done, and knows what it …",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-30T05:29:30Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7a83e1d83448b003d5e309b6e88317762d1b52fb",
          "body": "…annel default (#620)\n\n`mention-only` charged an `@` on every single message; `always` is agent\ndominance by construction, because a participant that never has to think\ncannot lose the race for the floor. `engaged` is the only bounded option,\nbecause it decays — Sacks/Schegloff/Jefferson rule 1(c), \n[…]\nsite of what happens. A membership that\nalready holds it still displays it — a control that renders blank for a real\nvalue is the worse failure.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(rooms): agents stay in the conversation — engaged becomes the ch…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-30T03:28:51Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "549a8dcca19f1180ba6d04352d582bf60107a03f",
          "body": "…e (#619)\n\nOne port, four backends' worth of difference, and no assertion weakened for\nany of them. `CommunityAdapter` is the fourth swappable seam beside\n`AgentRuntime`, `Transport` and `ConnectorProvider`: it lets one local server\nread and write rooms somewhere other than this machine, without the\n[…]\nagent's entry to its\nowner.\n\nNo concrete adapter ships here, and nothing user-visible changes — so there is\nno changelog fragment, per the spec.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(communities): the CommunityAdapter port and its conformance suit…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-30T02:25:46Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ae78316749360e3a9afe94181efc7026f87b76f3",
          "body": "…posed, execute-ready (DOR-745) (#618)\n\nTwo specs, one ADR, and the design-critique evidence for the Connections\nRedesign — Direct First program: direct vendor MCP connections become the\nfront door (custody: the key stays on your machine), the page inverts\naround a service catalog, Composio is named\n[…]\n (two real defects fixed pre-freeze: a boot purge that\nwould have deleted working no-auth connections, and a duplicated OAuth\nprompt parameter).\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(specs): connections redesign + direct-connect — specified, decom…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-30T00:17:53Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "dd7647cb9b0dce3850e359b51dccd056af22f210",
          "body": "…erified shapes, loud failures (DOR-703 follow-up) (#617)\n\nFirst real API contact (the founder's key) surfaced two compounding bugs:\nevery Composio call 401ed AND the failure was invisible — toolkits came back\n[] with warnings: [], so /connections looked dead after a successful key save.\n\nRoot cause\n[…]\nvoking cached session attachments.\n\nAdversarial self-check: reverting the composio-client fix turns 10 of the 15\nnew envelope-fixture tests red.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(connectors): survive first contact with the real Composio API — v…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-29T23:34:13Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c10d950154cae4417efeda9833097e25ef69056c",
          "body": "…ose as implemented (DOR-706) (#616)\n\nDocs truthing (connector-completion task A6): docs/connectors/{index,\ncomposio,nango,raw-mcp}.mdx now describe only shipped behavior — the\n/connections walkthrough (sidebar → Providers key entry → service-first\nConnect → custody sentence before sign-in → account\n[…]\nfile-onboarding (#608), and connector-gateway (DOR-371 PRs\n#392–#410, backfilled task statuses); all three manifest entries move\nto implemented.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(connectors): the guides describe what ships — and three specs cl…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-29T23:05:51Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0f1c0002556bd8f01db4e23cabe3b9a153ff0ec5",
          "body": "…mode provider + Playwright suite (DOR-707) (#615)\n\n* test(connectors): scripted test-mode connector provider behind the credential gate (DOR-707)\n\nE1 of Slice E. TestModeConnectorProvider lives in server source like\nTestModeRuntime — dynamic-imported and wired only under DORKOS_TEST_RUNTIME,\nso the\n[…]\nm>\n\n* chore(e2e): manifest run history from the post-rebase verification pass\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "test(e2e): the connector flow proves itself in a real browser — test-…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-29T22:43:37Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e8d6277310a5f4b2d7b2ee28dd0cbc74c35c6456",
          "body": "…, attach to sessions (DOR-708) (#614)\n\n* feat(connections): a Connections screen and session attach for connected accounts (DOR-708)\n\nSlice B of the connector-completion program — the client half over Slice A's\nserver truth:\n\n- Transport grows 12 connector methods (providers/credential, toolkits,\n \n[…]\nrom the one the client consumes. Snapshot\nand generated API docs regenerated.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(client): the Connections surface — connect services, see custody…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-29T22:28:39Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "25589bd0b495a9fc002b05d11df54a3e5a51f933",
          "body": "…, live provider reload, agent tools, Nango Proxy→MCP (DOR-703, DOR-415) (#611)\n\n* feat(connectors): server truth — live credential seam, agent tools, Nango Proxy→MCP (DOR-371, DOR-415)\n\nSlice A of the connector-completion program (tasks A1–A5):\n\n- A1: ConnectorProviderBootstrapper owns provider lif\n[…]\nbsent — MCP\nJSON-RPC mounts are not REST registry paths, same as /mcp itself.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(connectors): the server half becomes reachable — credential seam…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-29T22:09:59Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "99a81cbb604431009ab522211afe961fae84badb",
          "body": "…PR, and prove it ran (#613)\n\nNinety-five browser tests existed and no workflow ran them. Within a day\nof the suite's repair, two feature PRs (#606, #608) merged and broke its\nmarketplace and onboarding specs — silently, because nothing ran them.\nThis is the gate that ends that.\n\nbrowser-test.yml ru\n[…]\ne ProfilePromptCard that mounts into the sidebar\nmid-drag, now settled by global-setup performing the shipped\ndon't-ask-again write.\n\nCo-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "ci(e2e): the browser suite finally gates something — run it on every …",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-29T21:05:41Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4b48abf71983762d6862ab9e60efd66ca826fd03",
          "body": "DOR-659, DOR-660 and DOR-661 all merged on 2026-07-28/29 and together\nsettled a decision nobody wrote down: an agent reads a seeded skill pack\nprojected into the runtime that cannot read it natively, and answers\nquestions about DorkOS by searching that instance's own documentation\nrather than from m\n[…]\nt currently hold up its end (DOR-701, re-measured\n2026-07-29), and until DOR-671 lands only DorkBot ever receives a pack\ncorrection.\n\nCo-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(adr): record how an agent learns DorkOS and answers for it (#607)",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-29T19:34:33Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "03f15bbfeb9a4edd2cc06dbdfbf349b15333252a",
          "body": "…or between question and answer (#610)\n\nIDEATE + SPECIFY + review revision + DECOMPOSE for specs/room-presence:\na mechanical working indicator derived from the trigger dispatcher's claim\nlifecycle, published on the existing ephemeral room signal channel, rendered\nas a presence line in the cockpit, h\n[…]\nhened). Decomposed into 8 tasks across 3\nphases (03-tasks.json / 03-tasks.md), mirrored to the tracker with real\nblocking relations.\n\nCo-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(spec): specify and decompose room presence — the working indicat…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-29T19:20:55Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6ad1d604d6da430950a74c2a9443db70ba083044",
          "body": "…at, and recommendations (DOR-705) (#608)\n\n* feat(onboarding): DorkBot asks what kind of work you do, and every agent knows who it works for (DOR-705)\n\nSlice D of the Connector Gateway Completion program (spec\nuser-profile-onboarding, id 260729-084310):\n\n- New `profile` block in UserConfigSchema (ro\n[…]\nhips and free text\n  disable, a hint line appears) instead of a silent no-op.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(onboarding,profile): DorkBot asks what you do — profile, role be…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-29T15:58:44Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c134a11bebc1e39695f5e9bf07d6f0b17e5df6ad",
          "body": "…rong write (#609)\n\nEvery store that wrote to `<target>.tmp` and renamed it into place used a\nFIXED temp name, so two concurrent writers raced the same staging file:\n\n1. A writes its bytes to `X.tmp`\n2. B overwrites `X.tmp` with B's bytes\n3. A renames `X.tmp` -> `X`, publishing B's data under A's wr\n[…]\nstruction -- run sequentially they cannot fail\n-- and assert file content, not status codes, since a crossed write also\nreturns 200.\n\nCo-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(server): stop concurrent saves losing data or landing under the w…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-29T15:40:22Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c95f846cb25ed767ddd2e570a70f49d3c273eb92",
          "body": "…nest features entry (DOR-704) (#606)\n\n* feat(marketplace): surface connector packages in discovery (DOR-704)\n\nSlice C of the Connector Gateway Completion program.\n\nC1 — Marketplace connector discovery:\n- The dorkos.json sidecar entry schema gains an optional adapterType field\n  (browse aggregation \n[…]\nall five types plus\n  the CONNECTOR variant (shape was missing pre-existing).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(marketplace,site): surface connectors — badge, filter, and an ho…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-29T15:04:42Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7576b917c5818bc29ef135740a59df0302bd1acf",
          "body": "…n, specification, tasks (DOR-706) (#601)\n\nTwo specs for the Connector Gateway Completion program: finish and surface\nthe shipped connector-gateway backend (credential write + live provider\nregistration, agent-facing MCP tools, DOR-415 Nango wrapper, /connections\nUI, discovery) and the user profile + DorkBot onboarding role beat.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(specs): connector completion + user profile onboarding — ideatio…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-29T14:57:25Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "669b8098a86ee32fd9332edae91478ed109adf0e",
          "body": "`seedOperatingSkills` had exactly two production callers: `ensureDorkBot`\n(every boot) and `agent-creator` (creation only). So DorkBot was the only\nexisting agent a pack bump ever reached. Every other agent kept the\n`OPERATING_SKILLS_VERSION` it was created with forever, including the\nretractions th\n[…]\nATING_SKILLS_VERSION` (this delivers the version we already ship), and\nthe pass's additive, never-throwing, never-deleting contract.\n\nCo-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(agents): give every agent the current skill pack on boot (#600)",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-29T14:42:33Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c70de1389a6fdbab1f2b4a60d2e3a6f7222aa0f6",
          "body": "…your home (#605)\n\nThe browser suite was 53 red of 98, and most of it was the suite pointing at\nUI that no longer exists — reported as timeouts, which read like flake.\n\nFour dialog page objects opened their dialog with\n`page.evaluate(() => document.querySelector('button[aria-label=\"…\"]')?.click())`\n\n[…]\nmarks it read, so it silently\ncleared another spec's unread badge. It filters to its own run id now.\nGOTCHAS.md documents the class.\n\nCo-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(e2e): repair the browser suite, and stop it piling up folders in …",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-29T14:30:39Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "bdbb1d314d95e9c5781d39c3fd7efb671bfa7ee1",
          "body": "… working-on-it (#604)\n\nTwo reports feeding the room-presence proposal: the Buzz source read at\n55a3ed7b (ephemeral kind-20002 typing, harness-automatic reaction acks,\nencrypted self-only read cursors, agent typing routed out of the human\ntyping row into an activity bar), and the platform survey (Sl\n[…]\nen-labeled-state is the convergent AI pattern;\nread receipts trend opt-out everywhere; Linear is the only system that\nnames a hang).\n\nCo-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(research): how Buzz and the major platforms signal heard-you and…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-29T14:30:26Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "dd12a0128b84f7ba780b0a36c20baaa9a5d6694d",
          "body": "…603)\n\nThe room log becomes the first source the message-search index reads, and\nthe machinery every later source reuses lands with it (spec\n`specs/message-search/`, ADR 260728-214214, DOR-680).\n\nA new `services/search/` domain: a registry of sources as records rather\nthan a port, the M2 mechanism (\n[…]\nmediate write-through on the room\npath is deferred rather than dropped, and why.\n\nNothing a person can reach queries these rows yet.\n\nCo-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(search): message search starts filling itself from your rooms (#…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-29T14:11:02Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "14a113aad1775f3e08fcc745a9055c856fd45981",
          "body": "…ts channel (#602)\n\nThe last of three parts. PR 1 gave `room_entries` its thread relation, PR 2\ntaught the client to render it; this drops the child-room shape underneath:\n`rooms.parent_id`, `rooms.root_entry_id`, `idx_rooms_parent_id` and the\n`thread` member of `RoomKind`.\n\nMigration 0038 is hand-w\n[…]\naim is withdrawn and what it missed is\nrecorded. Its unread-count lean was overturned during PR 2 and now says so.\n\nPart of DOR-634.\n\nCo-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(rooms): retire the thread room, and move any that survive into i…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-29T14:04:07Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a9bf74ebc16c58f309ef9c7c2173bbb2caa4eda7",
          "body": "…#599)\n\nThe OpenCode sidecar's `GET /session` returns only the 100 most recently\nupdated sessions when no `limit` is sent. It reports no total and sets no\nmarker, so a truncated page is byte-for-byte identical to a complete one —\nolder sessions simply stopped appearing, with no error anywhere.\n\nDriv\n[…]\neither param ignores it and falls back to today's\nbehavior, never an error. No `opencode.db` access — ADR-0308 holds.\n\nRefs: DOR-673\n\nCo-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(opencode): list every session past the sidecar's silent 100 cap (…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-29T12:53:52Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2da18cdea706dccd00ad207e3727aa7f978ff38a",
          "body": "`--check` is the mode documented as safe to run any time, and it wrote a\nfile. In a directory with no `.agents/harness.manifest.json` it scaffolded\none — into whatever directory the command was invoked from — then reported\ndrift as if it had only looked. An agent running it from the wrong folder\ngot\n[…]\nw list `opencode`, the sixth harness HARNESS_IDS has carried\nwhile the prose listed five — a real repo sync projects 18 files to it.\n\nCo-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(cli): harness sync --check no longer writes a file (#598)",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-29T12:29:18Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "970cc0b7cb092c70675816a7e00cfd984ab53f90",
          "body": "Hard Rule 3 bans os.homedir() in server code. The guard was a\nno-restricted-imports ban with `importNames: ['homedir']`, which sees\n`import { homedir } from 'os'` and `import * as os from 'os'` but is blind\nto `import os from 'os'` + `os.homedir()` — the spelling this server\nactually uses. No file i\n[…]\nspelling-dependent (claude-config-dir.ts is exempt from the\ncall ban, not the import ban).\n\nThis is the defect described in DOR-668.\n\nCo-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "ci(lint): make the os.homedir() ban actually catch os.homedir() (#595)",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-29T11:54:46Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6714cdc758c584fcd98a2b6c6fc6a97eba12d051",
          "body": "Two real tables and one FTS5 index, the root of the message-search graph.\nNothing reads or writes them yet; the projections and the search box follow.\n\n`messages` is a derived, rebuildable projection of what was said, never a\nstore: rooms, Claude Code and Codex keep their own canonical record and\nDo\n[…]\nrphaned index rows present, at rank 0 and at the default. It is left out\n  rather than shipped as a green check that proves nothing.\n\nCo-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(db): give message search somewhere to keep what you said (#596)",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-29T11:54:27Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c103b5cde92ba40503ae388914d7d321ddcce16b",
          "body": "PR 2 of 3 for the entry-relation threads work (ADR 260728-022013).\nTracked in DOR-634, which PR 3 completes; PR 1 was #586.\n\nThe client moves onto the entry relation. `RoomTimeline` splits a room's\nlog by `threadRootEntryId`: the default flow is every entry that heads\nnothing, and a reply is drawn u\n[…]\nnread list (1), dropping the orphan marker (1),\nand deriving Unread from only one of its two lists (1 red for channels,\n10 for DMs).\n\nCo-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(rooms): a thread reply reads under the message it answers (#597)",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-29T11:54:00Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b8ece15c02e641c21e698ad65ae549f294cd2a22",
          "body": "The room-context block told an agent that `handle` was what an `@mention`\nresolves against, and then computed it with a rule the resolver does not\nuse: `agents.byPath(naturalKey)?.name`, unfiltered. So an agent in a room\nwith `Art Blocks Analytics` — a real agent on this machine, one of seven\nwhose \n[…]\nerting\nany guard reds it; 25 consecutive runs are green.\n\nPhase 1 of specs/handles, and it ships alone: no schema change, no column.\n\nCo-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(rooms): only hand an agent an @name that reaches somebody (#594)",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-29T02:25:42Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f3851231e7e5cb90cfe48ceff3dad7ea3aa0e151",
          "body": "…did not survive re-measurement (#593)\n\nPart of the DOR-672 decomposition. Deliberately no tracker id in the subject:\nDOR-672 is the parent feature and its eleven children are unstarted, so\nletting the integration close it on merge would be wrong.\n\nTurns specs/message-search/02-specification.md into\n[…]\nitself false — the inline markers are insertions — and is\nreplaced with the instruction to cite this file by section, never by line.\n\nCo-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(spec): decompose message search, and amend the four claims that …",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-29T02:11:33Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "80536d4c8fd13fcffbcb0513cdd5e8cc694eb76c",
          "body": "…pecs that said we could not (DOR-672) (#590)\n\nSpecs and one ADR only — no code, nothing user-facing, no changelog fragment\n(the gate keys on feat/fix/refactor/perf and reports clean).\n\nThe design is a derived index, not a second store: ADR-0043's shape with the\nruntimes' own stores playing the part\n[…]\nnded Amendment section, so every inbound `file:line` citation still\nresolves — `room-participation:646` cites `rooms:517` by number.\n\nCo-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(spec): search every message you ever sent, and amend the three s…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-29T00:13:53Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f1be735fab9779266946d74664c28abe69e65f26",
          "body": "…fy the worktree (#591)\n\nTwo process traps that each cost real time in one multi-agent session, recorded\nin the skills that govern the action rather than in a handoff note.\n\ncreating-pull-requests: Linear closes an issue on merge from a bare id in the PR\ntitle or branch name, or from a magic word an\n[…]\n out the stale\nbase, and it misstated where worktrees live (gtr.worktrees.dir is a per-machine\noverride, not the committed default).\n\nCo-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(skills): name the ticket only when the PR completes it, and veri…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-29T00:05:28Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2ba77ecd55a8b26fc3844f5ee7482439c31dd05a",
          "body": "…(#592)\n\nRooms host people and agents on one stream, and nothing in them has a\nhandle. `authors` carries an opaque ULID, a server-side natural key, and\na display name its own doc comment forbids anyone to look up by. The\nperson at the keyboard is called 'You'. Seven of the 52 agents on this\nmachine \n[…]\nould have returned ids for rows that were never\nwritten.\n\nNo ADR; the two decisions that would earn one later are named in the spec.\n\nCo-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(spec): give every author in a room a name you can actually type …",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-29T00:04:16Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6f06d98e5448db910a1c2740f1fc51449b0717bc",
          "body": "… (#581)\n\n* fix(ci): let merge-tail act under the queue, and make `test` gateable\n\nTwo things the cutover broke or exposed, plus the doc nit from #574.\n\nmerge-tail could not arm anything. With a merge queue configured,\n`gh pr merge --auto` resolves to an enqueue rather than\n`enablePullRequestAutoMer\n[…]\n still sufficient and the\nworkflow behaves as before.\n\nCo-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(ci): let merge-tail act under the queue, and make `test` gateable…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-28T22:35:22Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "042f89daeb1b0e93b5e5c822b8b3b3ac7f8c09f6",
          "body": "…(#589)\n\nEvery agent is handed two documentation URLs in its `<dorkos_context>` block and,\nuntil now, no procedure for using them, so whether it retrieved or guessed was\nleft to the model. The five existing operating skills are all about ACTING\nthrough DorkOS; none was about ANSWERING for it.\n\nA six\n[…]\n\n`operating-dorkos` now names the new sibling, and an already-seeded file is\nrewritten only on a strictly higher stamp. That reaches DorkBot's workspace and\nnothing else that already exists (DOR-671).",
          "is_bot": false,
          "headline": "feat(agents): agents look up the answer in the DorkOS docs (DOR-661) …",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-28T21:08:38Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0695364460b286e8d562f199e58f183e71e039b0",
          "body": "…R-660) (#588)\n\n`buildDorkosContextBlock()` handed every agent on every runtime two hardcoded\nproduction URLs, so a dev instance told its agents to read whatever shipped last\nrather than the docs it is running. The same file already reads `env` for\n`Port:` a few lines down.\n\nBoth lines now build fro\n[…]\n. Agents still get `llms.txt` (the ~29 KB index), never `llms-full.txt`.\n\nAn env var rather than a config field: no user changes this at runtime, and a\nconfig field would owe a semver-keyed migration.",
          "is_bot": false,
          "headline": "fix(server): send agents to the docs your own instance is running (DO…",
          "author_name": "Dorkian",
          "author_login": "doriancollier",
          "committed_at": "2026-07-28T19:46:45Z",
          "body_truncated": true,
          "is_coding_agent": false
        }
      ],
      "releases_count": 60,
      "commits_last_year": 2010,
      "latest_release_at": "2026-07-22T22:17:13Z",
      "latest_release_tag": "v0.56.0",
      "releases_from_tags": false,
      "days_since_last_push": 0,
      "active_weeks_last_year": 19,
      "days_since_latest_release": 9,
      "mean_days_between_releases": 1.1
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": true,
      "health_percentage": 62,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "dorkos",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "claude",
            "claude-code",
            "claude-code-ui",
            "dorkos",
            "autonomous-agents",
            "ai-agent",
            "agent-sdk",
            "agent-scheduler",
            "agent-discovery",
            "agent-mesh",
            "cron",
            "scheduler",
            "telegram",
            "obsidian",
            "relay",
            "mesh",
            "rest-api",
            "codex",
            "opencode",
            "mcp",
            "multi-agent",
            "coding-agents",
            "mission-control",
            "self-hosted"
          ],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/dorkos",
          "is_deprecated": false,
          "latest_version": "0.56.0",
          "repository_url": "https://github.com/dork-labs/dorkos",
          "versions_count": 62,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 2256,
          "first_published_at": "2026-02-14T10:44:38.756000Z",
          "latest_published_at": "2026-07-22T22:06:21.960000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 9
        }
      ]
    },
    "popularity": {
      "forks": 1,
      "stars": 7,
      "watchers": 0,
      "fork_history": {
        "days": [
          {
            "date": "2026-03-17",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 1,
        "total_forks": 1
      },
      "star_history": null,
      "open_issues_and_prs": 1
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "example"
      ],
      "has_llms_txt": false,
      "has_dockerfile": true,
      "has_mcp_signal": true,
      "bootstrap_files": [],
      "api_schema_files": [
        "docs/api/openapi.json"
      ],
      "has_devcontainer": false,
      "typecheck_configs": [
        "apps/client/tsconfig.json",
        "apps/desktop/tsconfig.json",
        "apps/e2e/tsconfig.json",
        "apps/obsidian-plugin/tsconfig.json",
        "apps/server/tsconfig.json",
        "apps/site/tsconfig.json",
        "packages/a2a-gateway/tsconfig.json",
        "packages/cli/tsconfig.json",
        "packages/db/tsconfig.json",
        "packages/evals/tsconfig.json",
        "packages/extension-api/tsconfig.json",
        "packages/harness/tsconfig.json",
        "packages/icons/tsconfig.json",
        "packages/marketplace/scripts/tsconfig.json",
        "packages/marketplace/tsconfig.json",
        "packages/mesh/tsconfig.json",
        "packages/operating-skills/tsconfig.json",
        "packages/relay/tsconfig.json",
        "packages/shared/tsconfig.json",
        "packages/skills/tsconfig.json",
        "packages/test-utils/tsconfig.json",
        "scripts/tsconfig.json",
        "templates/relay-adapter/tsconfig.json",
        "tsconfig.json"
      ],
      "toolchain_manifests": [],
      "largest_source_bytes": 146909,
      "source_files_sampled": 4453,
      "oversized_source_files": 16,
      "agent_instruction_files": [
        ".claude/CLAUDE.md",
        "AGENTS.md",
        "packages/mesh/src/__tests__/fixtures/claude-project/.claude/CLAUDE.md"
      ],
      "agent_instruction_max_bytes": 20801
    },
    "dependencies": {
      "manifests": [
        "package.json"
      ],
      "advisories": {
        "error": null,
        "scope": "published_package",
        "source": "osv",
        "findings": [
          {
            "name": "@hono/node-server",
            "direct": false,
            "version": "1.19.17",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.9,
            "advisory_ids": [
              "GHSA-frvp-7c67-39w9"
            ],
            "fixed_version": "2.0.5",
            "advisory_count": 1,
            "oldest_advisory_days": 10
          }
        ],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {
          "moderate": 1
        },
        "advisory_count": 1,
        "affected_count": 1,
        "assessed_count": 264,
        "malicious_count": 0,
        "assessed_package": "npm:dorkos@0.56.0",
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "npm"
      ],
      "dependencies": [
        {
          "name": "drizzle-orm",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.45.2"
        },
        {
          "name": "@codemirror/language",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^6.11.0"
        },
        {
          "name": "@codemirror/language-data",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^6.5.1"
        },
        {
          "name": "@codemirror/merge",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^6.10.0"
        },
        {
          "name": "@codemirror/state",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^6.5.2"
        },
        {
          "name": "@codemirror/view",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^6.36.0"
        },
        {
          "name": "@dnd-kit/core",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^6.3.1"
        },
        {
          "name": "@dnd-kit/sortable",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^10.0.0"
        },
        {
          "name": "@dorkos/extension-api",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@dorkos/icons",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@dorkos/marketplace",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@dorkos/shared",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@google/model-viewer",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.0.0"
        },
        {
          "name": "@radix-ui/react-alert-dialog",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.1.17"
        },
        {
          "name": "@radix-ui/react-dialog",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.1.17"
        },
        {
          "name": "@radix-ui/react-dropdown-menu",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.1.18"
        },
        {
          "name": "@radix-ui/react-select",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.3.1"
        },
        {
          "name": "@radix-ui/react-switch",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.3.1"
        },
        {
          "name": "@radix-ui/react-tabs",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.1.15"
        },
        {
          "name": "@reactour/tour",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.8.0"
        },
        {
          "name": "@tanstack/react-form",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.33.0"
        },
        {
          "name": "@tanstack/react-query",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.101.1"
        },
        {
          "name": "@tanstack/react-query-devtools",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.101.1"
        },
        {
          "name": "@tanstack/react-router",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.170.16"
        },
        {
          "name": "@tanstack/react-table",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^8.21.3"
        },
        {
          "name": "@tanstack/react-virtual",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.14.4"
        },
        {
          "name": "@tanstack/zod-adapter",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.167.0"
        },
        {
          "name": "@types/canvas-confetti",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.9.0"
        },
        {
          "name": "@uiw/react-codemirror",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.23.0"
        },
        {
          "name": "@xterm/addon-fit",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.10.0"
        },
        {
          "name": "@xterm/addon-webgl",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.18.0"
        },
        {
          "name": "@xterm/xterm",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.5.0"
        },
        {
          "name": "@xyflow/react",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^12.11.1"
        },
        {
          "name": "ansi-regex",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^6.2.2"
        },
        {
          "name": "ansi-to-react",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^6.2.6"
        },
        {
          "name": "blintz",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.4.0"
        },
        {
          "name": "canvas-confetti",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.9.4"
        },
        {
          "name": "class-variance-authority",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.7.1"
        },
        {
          "name": "clsx",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.1.1"
        },
        {
          "name": "cmdk",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.1.1"
        },
        {
          "name": "cronstrue",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.21.0"
        },
        {
          "name": "elkjs",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.11.1"
        },
        {
          "name": "fuse.js",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^7.4.2"
        },
        {
          "name": "html-to-image",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "1.11.13"
        },
        {
          "name": "immer",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^11.1.8"
        },
        {
          "name": "input-otp",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.4.2"
        },
        {
          "name": "lucide-react",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "1.21.0"
        },
        {
          "name": "motion",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^12.42.0"
        },
        {
          "name": "papaparse",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.4.1"
        },
        {
          "name": "radix-ui",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.6.0"
        },
        {
          "name": "react",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^19.2.7"
        },
        {
          "name": "react-diff-viewer-continued",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.2.2"
        },
        {
          "name": "react-dom",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^19.2.7"
        },
        {
          "name": "react-dropzone",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^15.0.0"
        },
        {
          "name": "react-error-boundary",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^6.1.2"
        },
        {
          "name": "react-json-view-lite",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.5.0"
        },
        {
          "name": "react-qr-code",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.2.0"
        },
        {
          "name": "react-resizable-panels",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.0.6"
        },
        {
          "name": "react-zoom-pan-pinch",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.6.0"
        },
        {
          "name": "sonner",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.0.7"
        },
        {
          "name": "streamdown",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.5.0"
        },
        {
          "name": "tailwind-merge",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.6.0"
        },
        {
          "name": "tailwind-variants",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.2.2"
        },
        {
          "name": "three",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.183.0"
        },
        {
          "name": "tw-animate-css",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.4.0"
        },
        {
          "name": "vaul",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.1.2"
        },
        {
          "name": "zod",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.4.3"
        },
        {
          "name": "zustand",
          "manifest": "apps/client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.0.14"
        },
        {
          "name": "@anthropic-ai/claude-agent-sdk",
          "manifest": "apps/desktop/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.3.177"
        },
        {
          "name": "@asteasolutions/zod-to-openapi",
          "manifest": "apps/desktop/package.json",
          "ecosystem": "npm",
          "version_constraint": "^8.5.0"
        },
        {
          "name": "@dorkos/db",
          "manifest": "apps/desktop/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@dorkos/server",
          "manifest": "apps/desktop/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@dorkos/shared",
          "manifest": "apps/desktop/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@ngrok/ngrok",
          "manifest": "apps/desktop/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.7.0"
        },
        {
          "name": "@openai/codex",
          "manifest": "apps/desktop/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.144.1"
        },
        {
          "name": "@openai/codex-sdk",
          "manifest": "apps/desktop/package.json",
          "ecosystem": "npm",
          "version_constraint": "~0.144.1"
        },
        {
          "name": "@opencode-ai/sdk",
          "manifest": "apps/desktop/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.17.13"
        },
        {
          "name": "@scalar/express-api-reference",
          "manifest": "apps/desktop/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.9.8"
        },
        {
          "name": "better-sqlite3",
          "manifest": "apps/desktop/package.json",
          "ecosystem": "npm",
          "version_constraint": "^12.11.1"
        },
        {
          "name": "conf",
          "manifest": "apps/desktop/package.json",
          "ecosystem": "npm",
          "version_constraint": "^15.1.0"
        },
        {
          "name": "cors",
          "manifest": "apps/desktop/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.8.6"
        },
        {
          "name": "dotenv",
          "manifest": "apps/desktop/package.json",
          "ecosystem": "npm",
          "version_constraint": "^17.4.2"
        },
        {
          "name": "electron-log",
          "manifest": "apps/desktop/package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.4.3"
        },
        {
          "name": "electron-updater",
          "manifest": "apps/desktop/package.json",
          "ecosystem": "npm",
          "version_constraint": "^6.8.3"
        },
        {
          "name": "esbuild",
          "manifest": "apps/desktop/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.28.0"
        },
        {
          "name": "express",
          "manifest": "apps/desktop/package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.2.1"
        },
        {
          "name": "gray-matter",
          "manifest": "apps/desktop/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.0.3"
        },
        {
          "name": "node-pty",
          "manifest": "apps/desktop/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.1.0"
        },
        {
          "name": "uuid",
          "manifest": "apps/desktop/package.json",
          "ecosystem": "npm",
          "version_constraint": "^13.0.0"
        },
        {
          "name": "zod",
          "manifest": "apps/desktop/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.4.3"
        },
        {
          "name": "@dorkos/client",
          "manifest": "apps/obsidian-plugin/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@dorkos/server",
          "manifest": "apps/obsidian-plugin/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "react",
          "manifest": "apps/obsidian-plugin/package.json",
          "ecosystem": "npm",
          "version_constraint": "^19.2.7"
        },
        {
          "name": "react-dom",
          "manifest": "apps/obsidian-plugin/package.json",
          "ecosystem": "npm",
          "version_constraint": "^19.2.7"
        },
        {
          "name": "@anthropic-ai/claude-agent-sdk",
          "manifest": "apps/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.3.177"
        },
        {
          "name": "@anthropic-ai/sdk",
          "manifest": "apps/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.102.0"
        },
        {
          "name": "@asteasolutions/zod-to-openapi",
          "manifest": "apps/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^8.5.0"
        },
        {
          "name": "@better-auth/api-key",
          "manifest": "apps/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.6.23"
        },
        {
          "name": "@dorkos/a2a-gateway",
          "manifest": "apps/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@dorkos/db",
          "manifest": "apps/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@dorkos/extension-api",
          "manifest": "apps/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@dorkos/harness",
          "manifest": "apps/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@dorkos/marketplace",
          "manifest": "apps/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@dorkos/mesh",
          "manifest": "apps/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@dorkos/operating-skills",
          "manifest": "apps/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@dorkos/relay",
          "manifest": "apps/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@dorkos/shared",
          "manifest": "apps/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@dorkos/skills",
          "manifest": "apps/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@modelcontextprotocol/sdk",
          "manifest": "apps/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "1.29.0"
        },
        {
          "name": "@ngrok/ngrok",
          "manifest": "apps/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.7.0"
        },
        {
          "name": "@noble/curves",
          "manifest": "apps/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.2.0"
        },
        {
          "name": "@openai/codex",
          "manifest": "apps/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.144.1"
        },
        {
          "name": "@openai/codex-sdk",
          "manifest": "apps/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "~0.144.1"
        },
        {
          "name": "@opencode-ai/sdk",
          "manifest": "apps/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.17.13"
        },
        {
          "name": "@opentelemetry/api",
          "manifest": "apps/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.9.1"
        },
        {
          "name": "@opentelemetry/exporter-trace-otlp-http",
          "manifest": "apps/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.220.0"
        },
        {
          "name": "@opentelemetry/resources",
          "manifest": "apps/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.2.0"
        },
        {
          "name": "@opentelemetry/sdk-trace-node",
          "manifest": "apps/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.2.0"
        },
        {
          "name": "@scalar/express-api-reference",
          "manifest": "apps/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.9.8"
        },
        {
          "name": "better-auth",
          "manifest": "apps/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.6"
        },
        {
          "name": "better-sqlite3",
          "manifest": "apps/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^12.11.1"
        },
        {
          "name": "chokidar",
          "manifest": "apps/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.0.0"
        },
        {
          "name": "conf",
          "manifest": "apps/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^15.1.0"
        },
        {
          "name": "consola",
          "manifest": "apps/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.4.2"
        },
        {
          "name": "cors",
          "manifest": "apps/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.8.6"
        },
        {
          "name": "croner",
          "manifest": "apps/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^10.0.1"
        },
        {
          "name": "esbuild",
          "manifest": "apps/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.28.0"
        },
        {
          "name": "express",
          "manifest": "apps/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.2.1"
        },
        {
          "name": "express-rate-limit",
          "manifest": "apps/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^8.5.2"
        },
        {
          "name": "giget",
          "manifest": "apps/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.3.0"
        },
        {
          "name": "gray-matter",
          "manifest": "apps/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.0.3"
        },
        {
          "name": "multer",
          "manifest": "apps/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.2.0"
        },
        {
          "name": "node-pty",
          "manifest": "apps/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.1.0"
        },
        {
          "name": "semver",
          "manifest": "apps/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^7.8.5"
        },
        {
          "name": "ulidx",
          "manifest": "apps/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.4.1"
        },
        {
          "name": "ws",
          "manifest": "apps/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^8.21.0"
        },
        {
          "name": "zod",
          "manifest": "apps/server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.4.3"
        },
        {
          "name": "@base-ui/react",
          "manifest": "apps/site/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.6.0"
        },
        {
          "name": "@better-auth/api-key",
          "manifest": "apps/site/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.6.23"
        },
        {
          "name": "@dorkos/icons",
          "manifest": "apps/site/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@dorkos/marketplace",
          "manifest": "apps/site/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@neondatabase/serverless",
          "manifest": "apps/site/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.1.0"
        },
        {
          "name": "better-auth",
          "manifest": "apps/site/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.6"
        },
        {
          "name": "class-variance-authority",
          "manifest": "apps/site/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.7.1"
        },
        {
          "name": "clsx",
          "manifest": "apps/site/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.1.1"
        },
        {
          "name": "cmdk",
          "manifest": "apps/site/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.1.1"
        },
        {
          "name": "date-fns",
          "manifest": "apps/site/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.4.0"
        },
        {
          "name": "drizzle-orm",
          "manifest": "apps/site/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.45.2"
        },
        {
          "name": "embla-carousel-react",
          "manifest": "apps/site/package.json",
          "ecosystem": "npm",
          "version_constraint": "^8.6.0"
        },
        {
          "name": "fumadocs-core",
          "manifest": "apps/site/package.json",
          "ecosystem": "npm",
          "version_constraint": "^16.10"
        },
        {
          "name": "fumadocs-mdx",
          "manifest": "apps/site/package.json",
          "ecosystem": "npm",
          "version_constraint": "^14.3.0"
        },
        {
          "name": "fumadocs-openapi",
          "manifest": "apps/site/package.json",
          "ecosystem": "npm",
          "version_constraint": "^11"
        },
        {
          "name": "fumadocs-ui",
          "manifest": "apps/site/package.json",
          "ecosystem": "npm",
          "version_constraint": "^16.10"
        },
        {
          "name": "geist",
          "manifest": "apps/site/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.7.2"
        },
        {
          "name": "input-otp",
          "manifest": "apps/site/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.4.2"
        },
        {
          "name": "lodash-es",
          "manifest": "apps/site/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.18.1"
        },
        {
          "name": "lucide-react",
          "manifest": "apps/site/package.json",
          "ecosystem": "npm",
          "version_constraint": "1.21.0"
        },
        {
          "name": "motion",
          "manifest": "apps/site/package.json",
          "ecosystem": "npm",
          "version_constraint": "^12.38.0"
        },
        {
          "name": "next",
          "manifest": "apps/site/package.json",
          "ecosystem": "npm",
          "version_constraint": "16.2.9"
        },
        {
          "name": "next-themes",
          "manifest": "apps/site/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.4.6"
        },
        {
          "name": "posthog-js",
          "manifest": "apps/site/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.395.0"
        },
        {
          "name": "react",
          "manifest": "apps/site/package.json",
          "ecosystem": "npm",
          "version_constraint": "19.2.5"
        },
        {
          "name": "react-day-picker",
          "manifest": "apps/site/package.json",
          "ecosystem": "npm",
          "version_constraint": "^9.14.0"
        },
        {
          "name": "react-dom",
          "manifest": "apps/site/package.json",
          "ecosystem": "npm",
          "version_constraint": "19.2.5"
        },
        {
          "name": "react-resizable-panels",
          "manifest": "apps/site/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.0.6"
        },
        {
          "name": "resend",
          "manifest": "apps/site/package.json",
          "ecosystem": "npm",
          "version_constraint": "^6.16.0"
        },
        {
          "name": "shiki",
          "manifest": "apps/site/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.3.0"
        },
        {
          "name": "sonner",
          "manifest": "apps/site/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.0.7"
        },
        {
          "name": "streamdown",
          "manifest": "apps/site/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.5.0"
        },
        {
          "name": "tailwind-merge",
          "manifest": "apps/site/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.5.0"
        },
        {
          "name": "usehooks-ts",
          "manifest": "apps/site/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.1.1"
        },
        {
          "name": "vaul",
          "manifest": "apps/site/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.1.2"
        },
        {
          "name": "zod",
          "manifest": "apps/site/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.4.3"
        },
        {
          "name": "@a2a-js/sdk",
          "manifest": "packages/a2a-gateway/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.3.13"
        },
        {
          "name": "@dorkos/db",
          "manifest": "packages/a2a-gateway/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@dorkos/mesh",
          "manifest": "packages/a2a-gateway/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@dorkos/relay",
          "manifest": "packages/a2a-gateway/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@dorkos/shared",
          "manifest": "packages/a2a-gateway/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "zod",
          "manifest": "packages/a2a-gateway/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.4.3"
        },
        {
          "name": "@anthropic-ai/claude-agent-sdk",
          "manifest": "packages/cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.3.177"
        },
        {
          "name": "@anthropic-ai/sdk",
          "manifest": "packages/cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.102.0"
        },
        {
          "name": "@asteasolutions/zod-to-openapi",
          "manifest": "packages/cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "^8.5.0"
        },
        {
          "name": "@inquirer/prompts",
          "manifest": "packages/cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "^8.5.2"
        },
        {
          "name": "@modelcontextprotocol/sdk",
          "manifest": "packages/cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "1.29.0"
        },
        {
          "name": "@ngrok/ngrok",
          "manifest": "packages/cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.7.0"
        },
        {
          "name": "@openai/codex",
          "manifest": "packages/cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.144.1"
        },
        {
          "name": "@openai/codex-sdk",
          "manifest": "packages/cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "~0.144.1"
        },
        {
          "name": "@opencode-ai/sdk",
          "manifest": "packages/cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.17.13"
        },
        {
          "name": "@scalar/express-api-reference",
          "manifest": "packages/cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.9.8"
        },
        {
          "name": "better-sqlite3",
          "manifest": "packages/cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "^12.11.1"
        },
        {
          "name": "conf",
          "manifest": "packages/cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "^15.1.0"
        },
        {
          "name": "cors",
          "manifest": "packages/cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.8.6"
        },
        {
          "name": "dotenv",
          "manifest": "packages/cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "^17.4.2"
        },
        {
          "name": "esbuild",
          "manifest": "packages/cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.28.0"
        },
        {
          "name": "express",
          "manifest": "packages/cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.2.1"
        },
        {
          "name": "gray-matter",
          "manifest": "packages/cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.0.3"
        },
        {
          "name": "node-pty",
          "manifest": "packages/cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.1.0"
        },
        {
          "name": "qrcode-terminal",
          "manifest": "packages/cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.12.0"
        },
        {
          "name": "uuid",
          "manifest": "packages/cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "^13.0.0"
        },
        {
          "name": "ws",
          "manifest": "packages/cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "^8.21.0"
        },
        {
          "name": "zod",
          "manifest": "packages/cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.4.3"
        },
        {
          "name": "better-sqlite3",
          "manifest": "packages/db/package.json",
          "ecosystem": "npm",
          "version_constraint": "^12.11.1"
        },
        {
          "name": "drizzle-orm",
          "manifest": "packages/db/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.45.2"
        },
        {
          "name": "@eslint/js",
          "manifest": "packages/eslint-config/package.json",
          "ecosystem": "npm",
          "version_constraint": "^9.39.4"
        },
        {
          "name": "eslint-config-prettier",
          "manifest": "packages/eslint-config/package.json",
          "ecosystem": "npm",
          "version_constraint": "^10.1.8"
        },
        {
          "name": "eslint-plugin-jsdoc",
          "manifest": "packages/eslint-config/package.json",
          "ecosystem": "npm",
          "version_constraint": "^63.0.9"
        },
        {
          "name": "eslint-plugin-jsx-a11y",
          "manifest": "packages/eslint-config/package.json",
          "ecosystem": "npm",
          "version_constraint": "^6.10.2"
        },
        {
          "name": "eslint-plugin-react",
          "manifest": "packages/eslint-config/package.json",
          "ecosystem": "npm",
          "version_constraint": "^7.37.5"
        },
        {
          "name": "eslint-plugin-react-hooks",
          "manifest": "packages/eslint-config/package.json",
          "ecosystem": "npm",
          "version_constraint": "7.1.0"
        },
        {
          "name": "typescript-eslint",
          "manifest": "packages/eslint-config/package.json",
          "ecosystem": "npm",
          "version_constraint": "^8.62.0"
        },
        {
          "name": "@dorkos/db",
          "manifest": "packages/evals/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@dorkos/server",
          "manifest": "packages/evals/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@dorkos/shared",
          "manifest": "packages/evals/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@dorkos/test-utils",
          "manifest": "packages/evals/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "zod",
          "manifest": "packages/evals/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.4.3"
        },
        {
          "name": "@dorkos/shared",
          "manifest": "packages/extension-api/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "zod",
          "manifest": "packages/extension-api/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.4.3"
        },
        {
          "name": "@dorkos/marketplace",
          "manifest": "packages/harness/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "zod",
          "manifest": "packages/harness/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.25.76"
        },
        {
          "name": "lucide-react",
          "manifest": "packages/icons/package.json",
          "ecosystem": "npm",
          "version_constraint": "1.21.0"
        },
        {
          "name": "@dorkos/skills",
          "manifest": "packages/marketplace/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "zod",
          "manifest": "packages/marketplace/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.25.76"
        },
        {
          "name": "@dorkos/db",
          "manifest": "packages/mesh/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@dorkos/shared",
          "manifest": "packages/mesh/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "drizzle-orm",
          "manifest": "packages/mesh/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.45.2"
        },
        {
          "name": "ulidx",
          "manifest": "packages/mesh/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.4.1"
        },
        {
          "name": "@dorkos/skills",
          "manifest": "packages/operating-skills/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@chat-adapter/telegram",
          "manifest": "packages/relay/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.31.0"
        },
        {
          "name": "@dorkos/db",
          "manifest": "packages/relay/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@dorkos/shared",
          "manifest": "packages/relay/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@grammyjs/auto-retry",
          "manifest": "packages/relay/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.0.2"
        },
        {
          "name": "@slack/bolt",
          "manifest": "packages/relay/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.7.3"
        },
        {
          "name": "@slack/web-api",
          "manifest": "packages/relay/package.json",
          "ecosystem": "npm",
          "version_constraint": "^7.17.0"
        },
        {
          "name": "chat",
          "manifest": "packages/relay/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.31.0"
        },
        {
          "name": "chokidar",
          "manifest": "packages/relay/package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.0.0"
        },
        {
          "name": "drizzle-orm",
          "manifest": "packages/relay/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.45.2"
        },
        {
          "name": "grammy",
          "manifest": "packages/relay/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.44.0"
        },
        {
          "name": "slackify-markdown",
          "manifest": "packages/relay/package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.0.0"
        },
        {
          "name": "ulidx",
          "manifest": "packages/relay/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.4.1"
        },
        {
          "name": "zod",
          "manifest": "packages/relay/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.4.3"
        },
        {
          "name": "@asteasolutions/zod-to-openapi",
          "manifest": "packages/shared/package.json",
          "ecosystem": "npm",
          "version_constraint": "^8.5.0"
        },
        {
          "name": "ulidx",
          "manifest": "packages/shared/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.4.1"
        },
        {
          "name": "zod",
          "manifest": "packages/shared/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.4.3"
        },
        {
          "name": "@dorkos/shared",
          "manifest": "packages/skills/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "gray-matter",
          "manifest": "packages/skills/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.0.3"
        },
        {
          "name": "zod",
          "manifest": "packages/skills/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.25.76"
        }
      ],
      "all_dependencies": {
        "error": "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
        "source": null,
        "packages": [],
        "collected": false,
        "truncated": false,
        "total_count": null,
        "direct_count": null,
        "indirect_count": null
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 1,
        "merged_prs": 676,
        "open_issues": 0,
        "closed_ratio": null,
        "closed_issues": 0,
        "closed_unmerged_prs": 10
      },
      "bus_factor": 1,
      "bot_contributors": 0,
      "top_contributors": [
        {
          "type": "User",
          "login": "doriancollier",
          "commits": 2031,
          "avatar_url": "https://avatars.githubusercontent.com/u/1047898?v=4"
        }
      ],
      "contributors_sampled": 1,
      "top_contributor_share": 1
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "browser-test.yml",
        "changelog-fragment-check.yml",
        "claude-code-review.yml",
        "claude.yml",
        "cli-smoke-test.yml",
        "db-check.yml",
        "desktop-release.yml",
        "desktop-smoke.yml",
        "docs-openapi-check.yml",
        "evals.yml",
        "merge-tail.yml",
        "operating-skills-version-check.yml",
        "publish-docker.yml",
        "scripts-test.yml",
        "test.yml",
        "typecheck.yml",
        "update-homebrew.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [
        "eslint.config.js",
        "eslint.config.mjs"
      ],
      "has_editorconfig": true,
      "has_linter_config": true,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "pnpm-lock.yaml"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 3,
            "reason": "branch protection is not maximal on development and all release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 10,
            "reason": "30 out of 30 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": 0,
            "reason": "project has 0 contributing companies or organizations -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 0,
            "reason": "no update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": 10,
            "reason": "packaging workflow detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 0,
            "reason": "dependency not pinned by hash detected -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "SAST tool is not run on all commits -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 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": 0,
            "reason": "52 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "9da8c34d3dcb777041cfc90ad63ec0527dda3ebc",
        "ran_at": "2026-08-01T10:13:12Z",
        "aggregate_score": 4,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": true,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-08-01T09:58:12Z",
      "oldest_open_prs": [
        {
          "number": 612,
          "created_at": "2026-07-29T19:36:23Z",
          "last_comment_at": "2026-07-29T19:39:25Z",
          "last_comment_author": "claude"
        }
      ],
      "last_merged_pr_at": "2026-08-01T09:38:14Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/dork-labs/dorkos",
    "host": "github.com",
    "name": "dorkos",
    "owner": "dork-labs"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 65,
      "inputs": {
        "security": 50,
        "vitality": 82,
        "community": 44,
        "governance": 51,
        "engineering": 94
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "good",
        "name": "Vitality",
        "value": 82,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "good",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 77,
            "inputs": {
              "commits_last_year": 2010,
              "human_commit_share": 1,
              "days_since_last_push": 0,
              "active_weeks_last_year": 19
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 0 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "19/52 weeks with commits",
                "points": 13.2,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 19
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "2010 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 2010
                    }
                  }
                ],
                "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": 60,
              "latest_release_tag": "v0.56.0",
              "releases_from_tags": false,
              "days_since_latest_release": 9,
              "mean_days_between_releases": 1.1
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "60 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 60
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 9 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 9
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~1.1 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 1.1
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "unverified",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": "repository_too_young",
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": null,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "maintenance record not established from the collected data",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_unverified",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "at_risk",
        "name": "Community & Adoption",
        "value": 44,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "critical",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 13,
            "inputs": {
              "forks": 1,
              "stars": 7,
              "watchers": 0,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "7 stars",
                "points": 12.6,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 7
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "1 forks",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "0 watchers",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "good",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 70,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": true,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (MIT)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "MIT"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 18,
                "status": "met",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          },
          {
            "key": "ecosystem_adoption",
            "band": "moderate",
            "name": "Ecosystem adoption (downloads)",
            "note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "registry_dependents"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 56,
            "inputs": {
              "packages": [
                "dorkos"
              ],
              "dependents": null,
              "ecosystems": "npm",
              "total_downloads": null,
              "monthly_downloads": 2256
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "2,256 downloads/month across npm",
                "points": 44.7,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 2256,
                      "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": 51,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 10,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 1,
              "top_contributor_share": 1
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "1 contributor(s) cover half of all commits",
                "points": 9,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 100% of commits",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 100
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "1 contributors",
                "points": 1.4,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 0 contributing companies or organizations -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "good",
            "name": "Issue & PR responsiveness",
            "note": "Excluded from scoring (no data or not applicable): Issue resolution. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "issue_resolution"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 71,
            "inputs": {
              "merged_prs": 676,
              "open_issues": 0,
              "closed_issues": 0,
              "issue_closed_ratio": null,
              "closed_unmerged_prs": 10
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "no issues or no data",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_issues_or_data",
                    "params": {}
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "676/686 decided PRs merged",
                "points": 37.7,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 676,
                      "decided": 686
                    }
                  }
                ],
                "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": "dork-labs",
              "public_repos": 6,
              "account_age_days": 896
            },
            "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 dork-labs",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 0,
                      "login": "dork-labs"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "6 public repos, account ~2 yr old",
                "points": 11.1,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 6
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 2
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "dorkos"
              ],
              "ecosystems": "npm",
              "any_deprecated": false,
              "min_days_since_publish": 9
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "1 package(s) on npm",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 1,
                      "ecosystems": "npm"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 9 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 9
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "62 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 62
                    }
                  }
                ],
                "max_points": 20
              },
              {
                "key": "not_deprecated",
                "name": "Not deprecated",
                "detail": "active, not deprecated or yanked",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "package_not_deprecated",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "excellent",
        "name": "Engineering Quality",
        "value": 94,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "excellent",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": true,
              "has_linter_config": true,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "17 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 17
                    }
                  }
                ],
                "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": "eslint.config.js, eslint.config.mjs",
                "points": 16,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "eslint.config.js, eslint.config.mjs"
                    }
                  }
                ],
                "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": 6.4,
                "status": "met",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "30 out of 30 merged PRs checked by a CI test -- score normalized to 10",
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "excellent",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "topics": [
                "agent-sdk",
                "ai-agents",
                "anthropic",
                "autonomous-agents",
                "claude",
                "claude-code",
                "cli",
                "cron",
                "developer-tools",
                "mcp",
                "multi-agent",
                "obsidian",
                "open-source",
                "scheduler",
                "self-hosted",
                "telegram",
                "codex",
                "opencode",
                "orchestration",
                "coding-agents"
              ],
              "has_wiki": true,
              "homepage": "https://dorkos.ai",
              "has_readme": true,
              "has_docs_dir": true,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 25,
                "status": "met",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": "https://dorkos.ai",
                "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": "20 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 20
                    }
                  }
                ],
                "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": 50,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 18,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 0,
              "scorecard_aggregate": 4
            },
            "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 is not maximal on development and all release branches",
                "points": 2.2,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "30 out of 30 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 0 contributing companies or organizations -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "no update tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file 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": "52 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "excellent",
            "name": "Dependency advisories",
            "note": "Matched the npm:dorkos@0.56.0 runtime dependency closure — what installing the published package pulls in — 264 packages. Reachability is not analyzed.",
            "notes": [
              {
                "code": "advisories_scope_published",
                "params": {
                  "package": "npm:dorkos@0.56.0",
                  "assessed": 264
                }
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 88,
            "inputs": {
              "source": "osv",
              "advisories": 1,
              "affected_packages": 1,
              "assessed_packages": 264,
              "unassessed_packages": 0,
              "affected_by_severity": "moderate 1",
              "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": "1 affected: @hono/node-server 1.19.17 (moderate 5.9)",
                "points": 13.2,
                "status": "partial",
                "details": [
                  {
                    "code": "advisories_affected",
                    "params": {
                      "count": 1,
                      "packages": "@hono/node-server 1.19.17 (moderate 5.9)"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "no advisory has been public longer than 90 days",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "advisories_none_stale",
                    "params": {
                      "days": 90
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "malicious_dependencies",
            "band": "excellent",
            "name": "Malicious dependencies",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "source": "osv",
              "meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
              "packages": [],
              "red_flag": false,
              "assessed_packages": 264,
              "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": 81,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "excellent",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 1,
              "agent_instruction_files": [
                ".claude/CLAUDE.md",
                "AGENTS.md",
                "packages/mesh/src/__tests__/fixtures/claude-project/.claude/CLAUDE.md"
              ],
              "agent_instruction_max_bytes": 20801
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": ".claude/CLAUDE.md, AGENTS.md, packages/mesh/src/__tests__/fixtures/claude-project/.claude/CLAUDE.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".claude/CLAUDE.md, AGENTS.md, packages/mesh/src/__tests__/fixtures/claude-project/.claude/CLAUDE.md"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "100 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 100,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 64,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "pnpm-lock.yaml"
              ],
              "has_dockerfile": true,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [
                "apps/client/tsconfig.json",
                "apps/desktop/tsconfig.json",
                "apps/e2e/tsconfig.json",
                "apps/obsidian-plugin/tsconfig.json",
                "apps/server/tsconfig.json",
                "apps/site/tsconfig.json",
                "packages/a2a-gateway/tsconfig.json",
                "packages/cli/tsconfig.json",
                "packages/db/tsconfig.json",
                "packages/evals/tsconfig.json",
                "packages/extension-api/tsconfig.json",
                "packages/harness/tsconfig.json",
                "packages/icons/tsconfig.json",
                "packages/marketplace/scripts/tsconfig.json",
                "packages/marketplace/tsconfig.json",
                "packages/mesh/tsconfig.json",
                "packages/operating-skills/tsconfig.json",
                "packages/relay/tsconfig.json",
                "packages/shared/tsconfig.json",
                "packages/skills/tsconfig.json",
                "packages/test-utils/tsconfig.json",
                "scripts/tsconfig.json",
                "templates/relay-adapter/tsconfig.json",
                "tsconfig.json"
              ],
              "agent_commit_share": 0.98,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": "eslint.config.js, eslint.config.mjs",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "eslint.config.js, eslint.config.mjs"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "apps/client/tsconfig.json, apps/desktop/tsconfig.json, apps/e2e/tsconfig.json, apps/obsidian-plugin/tsconfig.json, apps/server/tsconfig.json, apps/site/tsconfig.json, packages/a2a-gateway/tsconfig.json, packages/cli/tsconfig.json, packages/db/tsconfig.json, packages/evals/tsconfig.json, packages/extension-api/tsconfig.json, packages/harness/tsconfig.json, packages/icons/tsconfig.json, packages/marketplace/scripts/tsconfig.json, packages/marketplace/tsconfig.json, packages/mesh/tsconfig.json, packages/operating-skills/tsconfig.json, packages/relay/tsconfig.json, packages/shared/tsconfig.json, packages/skills/tsconfig.json, packages/test-utils/tsconfig.json, scripts/tsconfig.json, templates/relay-adapter/tsconfig.json, tsconfig.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "apps/client/tsconfig.json, apps/desktop/tsconfig.json, apps/e2e/tsconfig.json, apps/obsidian-plugin/tsconfig.json, apps/server/tsconfig.json, apps/site/tsconfig.json, packages/a2a-gateway/tsconfig.json, packages/cli/tsconfig.json, packages/db/tsconfig.json, packages/evals/tsconfig.json, packages/extension-api/tsconfig.json, packages/harness/tsconfig.json, packages/icons/tsconfig.json, packages/marketplace/scripts/tsconfig.json, packages/marketplace/tsconfig.json, packages/mesh/tsconfig.json, packages/operating-skills/tsconfig.json, packages/relay/tsconfig.json, packages/shared/tsconfig.json, packages/skills/tsconfig.json, packages/test-utils/tsconfig.json, scripts/tsconfig.json, templates/relay-adapter/tsconfig.json, tsconfig.json"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "Dockerfile, lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "Dockerfile, lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "98 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 98,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "no automated dependency updates observed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_dependency_automation",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "primary_language": "TypeScript",
              "largest_source_bytes": 146909,
              "source_files_sampled": 4453,
              "oversized_source_files": 16
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "TypeScript (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "TypeScript"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "16/4453 source files over 60KB",
                "points": 54.8,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 4453,
                      "oversized": 16
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "excellent",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "example_dirs": [
                "example"
              ],
              "has_mcp_signal": true,
              "api_schema_files": [
                "docs/api/openapi.json"
              ]
            },
            "components": [
              {
                "key": "api_schema_openapi_graphql_proto",
                "name": "API schema (OpenAPI/GraphQL/proto)",
                "detail": "docs/api/openapi.json",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "docs/api/openapi.json"
                    }
                  }
                ],
                "max_points": 40
              },
              {
                "key": "mcp_server",
                "name": "MCP server",
                "detail": null,
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": "example",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "example"
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
    "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
  ],
  "report_type": "repository",
  "generated_at": "2026-08-01T10:13:35.794942Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/d/dork-labs/dorkos.svg",
  "full_name": "dork-labs/dorkos",
  "license_state": "standard",
  "license_spdx": "MIT"
}

Оцінки — це сигнали, а не гарантії. Вони відображають публічно видимі практики на GitHub — це не аудит коду й не гарантія безпеки.

Відсутні дані виключаються, а ваги перенормовуються — нуль за відсутність ніколи не ставиться. Методологія версіонована й відкрита: метрики v1.13.0, схема v0.27.0 — повна методологія · вікі метрик.

Як окремий результат виглядає на тлі всього реєстру: сукупна статистикаnpm.