公开记录
软件健康报告模式 0.27.0 · 指标 1.13.0 · 2026-07-25 00:12 UTC

ProductBuildersHQ / visionspec

Multi-domain specification orchestration for humans and AI agents. MultiSpec bridges the gap between organizational intent (MRD, PRD, UXD) and executable specifications for AI coding agents.

GoMIT★ 0 星标⑂ 0 复刻始于 2026年5月在 GitHub 上查看 ↗

ProductBuildersHQ/visionspec 的健康指数为 100 分中的 59 分,处于「中等」区间。 其得分最高的类别是AI Readiness(85/100),最低的是Community & Adoption(24/100)。 最近一次更新在 4 天前。 近期的大部分工作由 1 位贡献者完成。

59
总分 / 100
中等

软件健康指数

指标归入加权类别,统一采用 1–100 量表。总体分先取类别加权平均;当公开证据触发高风险司法辖区政策时,评级会按政策调整,并设置 49(有风险)的上限。AI 就绪度不计入总体分。

59
优秀85-100堪称典范;基本满足所有检验标准
良好70-84健康;仅有轻微不足
中等50-69可接受,但存在明显不足;建议进行审查
存在风险30-49存在重大薄弱环节;采用时应保持审慎
危急1-29问题严重(项目被弃置、仅有单一维护者、缺乏基本工程规范)
活力社区与采用可持续性与治理工程质量安全AI 就绪度

评分画像

每条轴代表一个类别。形状比平均值更重要——健康的对象会填满整个图形,而“一峰一谷”式画像意味着某一维度的优势正掩盖另一维度的风险。

所有权

0 关注者9 个公开仓库始于 2026年2月

该仓库由组织支持——共同承担、可问责的托管责任,可延续于任何单一维护者之后。

软件包生态系统

注册表软件包版本月下载量版本数最近发布
Gogithub.com/ProductBuildersHQ/visionspecv0.14.0-144 天前

按类别列示的指标

活力

项目是否仍有生命——是否仍在编写代码,是否仍在发布版本?

76良好 · 占总体的 22%
评分方式
36/36推送新近度 — 最近一次推送于 4 天前
6.2/36提交节奏 — 52 周中有 9 周有提交
18/18提交量 — 最近一年 288 次提交
0/10OpenSSF Scorecard:Maintained — project was created within the last 90 days. Please review its contents carefully
所用输入
commits_last_year288
human_commit_share0.96
days_since_last_push4
active_weeks_last_year9

发布纪律

100优秀
评分方式
27/27有发布版本 — 已发布 14 个发布版本
36/36发布时效 — 最近一次发布版本于 4 天前
27/27发布节奏 — 约每 6.1 天发布一次
0/10OpenSSF Scorecard:Signed-Releases — 无数据
所用输入
releases_count14
latest_release_tagv0.14.0
releases_from_tags
days_since_latest_release4
mean_days_between_releases6.1
已排除计分(无数据或不适用):OpenSSF Scorecard:Signed-Releases。 其余权重已重新归一化。

社区与采用

项目是否拥有用户、下载量与关注度,并具备欢迎贡献者参与的配置?

24危急 · 占总体的 18%
评分方式
0/60星标 — 0 个星标
0/25复刻 — 0 个复刻
0/15关注者 — 0 位关注者
所用输入
forks0
stars0
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history

社区健康

50中等
评分方式
22.5/22.5README
22.5/22.5许可证 — 可识别的许可证(MIT)
0/18CONTRIBUTING 指南
0/13.5行为准则
0/7.2议题模板
0/6.3PR 模板
所用输入
has_readme
has_license
has_contributing
has_issue_template
has_code_of_conduct
has_pull_request_template

可持续性与治理

项目能否在其成员之外延续——巴士系数、响应能力、由谁支持,以及软件包的维护状况?

54中等 · 占总体的 24%
评分方式
9/54巴士系数 — 1 位贡献者贡献了半数提交
0/22.5提交分布 — 头号贡献者编写了 100% 的提交
1.4/13.5贡献者广度 — 1 位贡献者
10/10OpenSSF Scorecard:Contributors — project has 5 contributing companies or organizations
所用输入
bus_factor1
contributors_sampled1
top_contributor_share1
评分方式
0/46.8议题解决 — 没有议题或无数据
38.2/38.3PR 接受 — 已裁定的 PR 中 4/4 已合并
0/15OpenSSF Scorecard:Code-Review — Found 0/30 approved changesets -- score normalized to 0
所用输入
merged_prs4
open_issues0
closed_issues0
issue_closed_ratio
closed_unmerged_prs0
已排除计分(无数据或不适用):议题解决。 其余权重已重新归一化。
评分方式
30/30所有权背书 — 组织持有
0/20已验证域名
0/25所有者影响力 — ProductBuildersHQ 有 0 位关注者
8.2/25既往记录 — 9 个公开仓库,账户约 0 年
所用输入
followers0
owner_typeOrganization
is_verified
owner_loginProductBuildersHQ
public_repos9
account_age_days172
评分方式
25/25已发布且可解析 — go 上有 1 个软件包
35/35发布时效 — 最近一次发布于 4 天前
20/20版本历史 — 14 个已发布版本
20/20未被弃用 — 活跃,未被弃用或撤回
所用输入
packagesgithub.com/ProductBuildersHQ/visionspec
ecosystemsgo
any_deprecated
min_days_since_publish4

工程质量

基础的工程与文档实践是否到位?

84良好 · 占总体的 20%

工程实践

80良好
评分方式
24/24CI 工作流 — 3 个工作流
24/24存在测试
16/16Linter 配置 — .golangci.yaml
0/9.6Pre-commit 钩子
0/6.4.editorconfig
0/20OpenSSF Scorecard:CI-Tests — 无数据
所用输入
has_ci
has_tests
has_editorconfig
has_linter_config
has_precommit_config
已排除计分(无数据或不适用):OpenSSF Scorecard:CI-Tests。 其余权重已重新归一化。

文档

90优秀
评分方式
30/30README
25/25文档目录
15/15文档 / 主页站点 — http://productbuildershq.com/visionspec/
10/10仓库描述
0/10主题标签
10/10Wiki
所用输入
topics
has_wiki
homepagehttp://productbuildershq.com/visionspec/
has_readme
has_docs_dir
has_description

安全

可见的安全与供应链实践是否稳固,且不存在未解决的高风险司法辖区暴露?

49存在风险 · 占总体的 16%

安全态势

49存在风险
评分方式
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — branch protection not enabled on development/release branches
0/2.5CI-Tests — 无数据
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/30 approved changesets -- score normalized to 0
2.5/2.5Contributors — project has 5 contributing companies or organizations
10/10Dangerous-Workflow — no dangerous workflow patterns detected
7.5/7.5Dependency-Update-Tool — update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5许可证 — license file detected
0/7.5Maintained — project was created within the last 90 days. Please review its contents carefully
0/5Packaging — 无数据
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
0/5SAST — no SAST tool detected
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — 无数据
6.8/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
7.5/7.5Vulnerabilities — 0 existing vulnerabilities detected
所用输入
sourceopenssf_scorecard
checks_evaluated15
scorecard_versionv5.5.0
checks_inconclusive3
scorecard_aggregate4.9
已排除计分(无数据或不适用):ci_tests, packaging, signed_releases。 其余权重已重新归一化。

AI 就绪度

该仓库在多大程度上具备与 AI 编码代理协同开发与维护的条件?这是一枚独立的实验性徽章——权重为 0.0,因此单独呈现,不影响总体健康评分。

85优秀 · 占总体的 0%
评分方式
45/45代理指令 — CLAUDE.md
0/15机器可读文档(llms.txt)
40/40可读的提交历史 — 96 次人类提交中有 96 次说明了意图(结构化标题或解释性正文)
所用输入
has_llms_txt
legible_history_share1
agent_instruction_filesCLAUDE.md
agent_instruction_max_bytes6,881
评分方式
18/18一条命令的引导启动 — Makefile
22/22自动化测试
11/11Lint / 格式化配置 — .golangci.yaml
11/11静态类型检查 — Go(静态类型)
10/10可复现环境 — lockfile
10/10已体现的代理实践 — 最近 100 次提交中有 86 次由代理编写或署名代理
8/8自动化维护 — 最近 100 次提交中有 4 次为自动依赖更新
0/10OpenSSF Scorecard:Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
所用输入
has_nix
has_tests
lockfilesgo.sum
has_dockerfile
typed_language
bootstrap_filesMakefile
has_devcontainer
has_linter_config
typecheck_configs
agent_commit_share0.86
toolchain_manifestsgo.mod
dependency_bot_commit_share0.04
评分方式
45/45可类型检查的代码 — Go(静态类型)
54.3/55可控的文件大小 — 采样的 163 个源文件中有 2 个超过 60KB
所用输入
primary_languageGo
largest_source_bytes153,218
source_files_sampled163
oversized_source_files2
评分方式
0/40API 模式(OpenAPI/GraphQL/proto)
20/20MCP 服务器
40/40可运行示例 — examples
所用输入
example_dirsexamples
has_mcp_signal
api_schema_files

关键数据

0GitHub 星标
1贡献者
288最近 12 个月提交数
4距最近推送天数
14发布版本数
1巴士系数(bus factor)
0开放议题
Go软件包生态系统数

数据采集警告

  • GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

更多细节

OpenSSF Scorecard 4.9 / 10
4.9综合

来自开源项目 OpenSSF Scorecard 的独立、工具无关的安全评估。每项检查奖励的是安全实践本身,而非特定供应商的工具。Scorecard 无法判定的检查项标记为 不适用,并从安全评分中剔除(绝不按零分计)。Scorecard v5.5.0 · 2026-07-25 00:12 UTC

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
不适用CI-Testsno pull request found
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/30 approved changesets -- score normalized to 0
10Contributorsproject has 5 contributing companies or organizations
10Dangerous-Workflowno dangerous workflow patterns detected
10Dependency-Update-Toolupdate tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
0Maintainedproject was created within the last 90 days. Please review its contents carefully
不适用Packagingpackaging workflow not detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTno SAST tool detected
0Security-Policysecurity policy file not detected
不适用Signed-Releasesno releases found
9Token-Permissionsdetected GitHub workflow tokens with excessive permissions
10Vulnerabilities0 existing vulnerabilities detected
直接依赖 12
注册表软件包版本约束清单文件
Gogithub.com/bmatcuk/doublestar/v4v4.10.0go.mod
Gogithub.com/fsnotify/fsnotifyv1.10.1go.mod
Gogithub.com/grokify/oscompatv0.5.0go.mod
Gogithub.com/grokify/pidlv0.5.0go.mod
Gogithub.com/grokify/prism-roadmapv0.16.0go.mod
Gogithub.com/modelcontextprotocol/go-sdkv1.6.1go.mod
Gogithub.com/plexusone/graphfsv0.2.0go.mod
Gogithub.com/plexusone/graphizev0.4.0go.mod
Gogithub.com/plexusone/omnillm-corev0.18.0go.mod
Gogithub.com/plexusone/structured-evaluationv0.10.0go.mod
Gogithub.com/spf13/cobrav1.10.2go.mod
Gogopkg.in/yaml.v3v3.0.1go.mod
全部依赖 未采集

本报告未能采集到解析后的依赖集合:GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

原始 JSON 报告 机器可读
{
  "data": {
    "repo": {
      "topics": [],
      "is_fork": false,
      "size_kb": 11743,
      "has_wiki": true,
      "homepage": "http://productbuildershq.com/visionspec/",
      "languages": {
        "Go": 1519470,
        "Makefile": 1196
      },
      "pushed_at": "2026-07-20T10:43:49Z",
      "created_at": "2026-05-23T14:20:39Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-20T10:40:44Z",
      "description": "Multi-domain specification orchestration for humans and AI agents. MultiSpec bridges the gap between organizational intent (MRD, PRD, UXD) and executable specifications for AI coding agents.",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "main",
      "license_spdx_raw": "MIT",
      "primary_language": "Go",
      "significant_languages": [
        "Go"
      ]
    },
    "owner": {
      "blog": "https://productbuildershq.com",
      "name": "ProductBuildersHQ",
      "type": "Organization",
      "login": "ProductBuildersHQ",
      "company": null,
      "location": null,
      "followers": 0,
      "avatar_url": "https://avatars.githubusercontent.com/u/258703354?v=4",
      "created_at": "2026-02-02T00:56:12Z",
      "is_verified": null,
      "public_repos": 9,
      "account_age_days": 172
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v0.14.0",
          "kind": "minor",
          "published_at": "2026-07-20T10:43:50Z"
        },
        {
          "tag": "v0.13.0",
          "kind": "minor",
          "published_at": "2026-07-18T20:18:18Z"
        },
        {
          "tag": "v0.12.0",
          "kind": "minor",
          "published_at": "2026-07-06T14:25:22Z"
        },
        {
          "tag": "v0.11.0",
          "kind": "minor",
          "published_at": "2026-07-06T13:06:32Z"
        },
        {
          "tag": "v0.10.0",
          "kind": "minor",
          "published_at": "2026-06-13T18:53:55Z"
        },
        {
          "tag": "v0.9.0",
          "kind": "minor",
          "published_at": "2026-06-08T09:27:37Z"
        },
        {
          "tag": "v0.8.0",
          "kind": "minor",
          "published_at": "2026-06-07T18:22:38Z"
        },
        {
          "tag": "v0.7.0",
          "kind": "minor",
          "published_at": "2026-06-01T14:41:07Z"
        },
        {
          "tag": "v0.6.0",
          "kind": "minor",
          "published_at": "2026-06-01T09:01:30Z"
        },
        {
          "tag": "v0.5.0",
          "kind": "minor",
          "published_at": "2026-05-26T13:11:26Z"
        },
        {
          "tag": "v0.4.0",
          "kind": "minor",
          "published_at": "2026-05-25T13:37:07Z"
        },
        {
          "tag": "v0.3.0",
          "kind": "minor",
          "published_at": "2026-05-24T23:50:28Z"
        },
        {
          "tag": "v0.2.0",
          "kind": "minor",
          "published_at": "2026-05-24T16:10:22Z"
        },
        {
          "tag": "v0.1.0",
          "kind": "minor",
          "published_at": "2026-05-24T13:51:14Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "295661bd0d0a5d55c823e64ccf20433e1f7375e1",
          "body": "Fold the project rubrics config feature (custom rubric files + pass-criteria\npolicy across all evaluation paths) into the v0.14.0 release: add highlights,\nAdded entries, and a \"Project Rubrics Config\" section. Regenerate CHANGELOG.md.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: include RubricsConfig in the v0.14.0 release notes and changelog",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-07-20T10:38:02Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f3e675daaf0cd4c3e9973134e8e7f0ed22aa255f",
          "body": "Note the overrides -> directory -> profile resolution order, project-relative\npath handling, and that strict_mode / max_* apply across all evaluation paths.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(config): document rubrics config resolution and effect",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-07-20T10:32:29Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f99db827573d2c1d117955f594f18b4f8cc70e94",
          "body": "Wire visionspec.yaml `rubrics` config into evaluation via\nEvaluator.ApplyProjectRubrics: custom rubric files (overrides then directory,\nresolved against the project) are chained ahead of the base loader, strict mode\nrequires every category to reach Acceptable, and configured max_* limits\noverride th\n[…]\ns — `eval`, `synthesize --eval`, and the MCP run_eval / eval_draft tools —\nso the previously-inert RubricsConfig now takes effect.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(eval): apply the project rubrics config across evaluation paths",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-07-20T10:32:28Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3263e15eda34f187b9eae03b2f35368dae59a3f8",
          "body": "Add a loader that maps spec types to specific rubric file paths, for a project's\nvisionspec.yaml `rubrics.overrides`.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(rubrics): add NewOverrideLoader for per-spec-type rubric overrides",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-07-20T10:32:28Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "bb8fb2e85969aff468e32ee0a17d13e72f51b848",
          "body": "… struct\n\nThe RubricYAML flat parser and VisionSpec-local RubricSet were removed in the\nv0.14.0 rubric migration; rubrics now parse directly into structured-evaluation's\nrubric.RubricSet. Update the RMI-221 roadmap item and the composability plan to\nreflect the canonical format.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(specs): update roadmap/plan references to the retired RubricYAML…",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-07-20T10:08:17Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "6dc8cbad01d2eda01d6b9a3040b1f09c42673f06",
          "body": "Add the v0.14.0 entry (structured-evaluation RubricSet adoption, native rubric\nYAML, prism-roadmap canvas assets, richer judge prompts, tpd.md embed fix,\ndependency bumps) and regenerate CHANGELOG.md via schangelog.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(changelog): update changelog for v0.14.0",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-07-20T09:50:05Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "c6846667d0de3168a88ba5f696f2c98a0a7b8b0f",
          "body": "Document the rubric standardization on structured-evaluation's RubricSet: the\npkg/rubrics breaking change, the native rubric YAML format, prism-roadmap canvas\nasset consumption, richer judge prompts, a migration guide, and the new\nstructured-evaluation v0.10.0 / prism-roadmap v0.16.0 dependencies. Add the\nrelease to the mkdocs nav.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: add v0.14.0 release notes",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-07-20T09:48:36Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "161a5353aa726eea5fe5f9810abf1685a05b68b1",
          "body": "Update the custom-profiles, organization-customization, and org-cli example\nguides to the canonical structured-evaluation rubric format: spec type from\nthe filename (no spec_type field), categorical scale options for flat rubrics,\nweighted criteria with indicators for rich rubrics, and passCriteria\n(minCategoriesPassing / maxFindingsSeverity / scoreThresholds). Historical\nrelease notes are left as-is.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(rubrics): document the structured-evaluation rubric format",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-07-20T09:48:36Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "7528882c4bfb52f7a77b59ee4feb2eca145de807",
          "body": "buildEvalPrompt previously sent only each category's name, weight, and\ndescription to the judge. Now it renders the actual scoring criteria — the\npayoff of adopting the shared rubric type:\n\n- flat rubrics: the categorical pass/partial/fail criteria as scoring guidance\n- rich rubrics: each weighted s\n[…]\nto the rubric total, so point-weighted and\nfraction-weighted rubrics render correctly. Prompt building now uses a\nstrings.Builder.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(eval): render rubric criteria and indicators in the judge prompt",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-07-20T09:48:35Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "fd92f3e07367e497e1f91ee692f2648f8872a3f1",
          "body": "…h format\n\nassumption-map, discovery-snapshot, and shapeup-pitch were in an intermediate\nrich format where each criterion's `description` mapped to no structured-\nevaluation field (silently dropped on parse) and `thresholds`/`methodology`\nwere ignored — so they evaluated with empty criteria. Rewrite\n[…]\nreference -> metadata.basedOn,\ncategory and criterion names humanized. They now carry their intended\nweighted criteria (18/15/19).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(rubrics): author the 3 discovery/shapeup rubrics in canonical ric…",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-07-20T09:48:35Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ace36ff35456faac012b65ef5ccf419ddd7e3cce",
          "body": "…n native, drop flat parser\n\nRewrite the 80 legacy flat rubric YAMLs (criteria as a pass/partial/fail\nmap) into the canonical structured-evaluation format (categorical Scale\noptions, passCriteria.maxFindingsSeverity), via a committed, self-contained\nmigration tool (tools/migrate-rubric-yaml) that ro\n[…]\nnNative) walks\nevery *.rubric.yaml in the repo and fails if any is not native.\n\nLoader test fixtures updated to the native format.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "refactor(rubrics): migrate flat profile YAMLs to structured-evaluatio…",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-07-20T09:48:35Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "46e32f24453a6ae1483ea789b8e91f578c8e0935",
          "body": "…nical rubric type\n\nReplace visionspec's parallel flat rubric types (RubricSet, Category,\nCategoricalCriteria, PassCriteria) with structured-evaluation's\nrubric.RubricSet everywhere: the Go registry, all loaders, and the eval\nprompt/response path. The 21 Go-registered rubrics are regenerated as\nrubr\n[…]\nmod carries local replace directives for\nstructured-evaluation and prism-roadmap during development; these are\nremoved at release.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "refactor(rubrics)!: adopt structured-evaluation RubricSet as the cano…",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-07-20T09:48:34Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a22a38bac81eebd1a2e77ef4fae9d7401947c085",
          "body": "Import prism-roadmap's embedded templates and rubrics (via NewSubFSLoader\nover its FS) as a fallback in the profile template and rubric loaders, and\nremove the duplicated opportunity-spec and bmc templates and rubrics that\nwere copied across profile directories. prism-roadmap v0.15.0 is now the\nsingle source of truth for canonical canvas assets.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(profiles): consume canonical canvas assets from prism-roadmap",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-07-20T04:18:25Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f612b803de5c93a56ae9f9b18bba45f08c6bd6fe",
          "body": "The TPD template file was added with the TPD spec type but never included\nin the //go:embed directive or Available(), so templates.Get(SpecTypeTPD)\nfailed even though tpd.md exists on disk. This left big-tech-product — which\nrequires tpd — with no reachable template through the public API.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(templates): embed tpd.md and add it to Available",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-07-19T22:31:20Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "7c6148c324734229a0ed97f2c80cb11ac928e0b5",
          "body": "…ubrics\n\nThe gosec G101 rule flags CategoricalCriteria fields (Pass, Partial, Fail)\nas potential hardcoded credentials. These are rubric evaluation criteria\ntext, not credentials. Applied the same nolint pattern used in existing\nrubrics (mrd.go, prd.go, etc.) to all 12 AIDLC rubric files.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(rubrics): add nolint comments for G101 false positives in AIDLC r…",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-07-18T16:51:08Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "7a3a49f38c4479077d3cee5358c5f1bef7aa9aab",
          "body": "On Windows, system timer resolution is ~15.6ms (vs nanoseconds on Unix).\nOperations completing faster than this resolution return ElapsedTime of 0.\n\nChange assertion from `> 0` to `>= 0` to accommodate Windows behavior.\nThe test validates elapsed time isn't negative (error case), not that\ntime has definitely passed.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(aidlc): fix Windows CI test failure for timer resolution",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-07-18T16:36:55Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "107c13caf307f34310e446364a8eeefc8b958cf5",
          "body": "- Update installation version to v0.13.0 in README and docs/index.md\n- Update Go version requirement to 1.26.1\n- Add new v0.13.0 features to Key Capabilities:\n  - Dual-methodology system\n  - AIDLC workflow integration\n  - V2MOM strategic planning\n  - 1-5 numeric evaluation scoring\n- Update component status table with new features\n- Update release notes link to v0.13.0\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: update documentation for v0.13.0 release",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-07-18T16:19:17Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "d5ceca5de3bfd0968061f9a24803943a82a7ae60",
          "body": "- Add v0.13.0 release notes\n- Update CHANGELOG.json with v0.13.0 entries\n- Regenerate CHANGELOG.md via schangelog\n- Add AIDLC integration guide to mkdocs navigation\n- Add v0.13.0 to releases navigation\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: prepare v0.13.0 release",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-07-18T16:04:51Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "ea8e6c0d247b3c745db7d2e623107a59978f06bf",
          "body": "- Update Go version from 1.26.0 to 1.26.1\n- Add github.com/grokify/pidl v0.5.0 for PIDL protocol export\n- Update golang.org/x/sys from v0.46.0 to v0.47.0\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "build(deps): update Go version and add pidl dependency",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-07-18T15:40:14Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f4abd3c0371fe4c18eb8f71fee4eae9a9df4ef80",
          "body": "Fix ASCII diagram box alignment in Open Source vs. Organization\narchitecture section for better readability.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: fix README diagram alignment",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-07-18T15:39:56Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "c1004e5e29b65b23643faca0ea9d39d9b5682489",
          "body": "Add Phase 15 (AIDLC Workflow Integration v0.8.0) detailing:\n\n- AIDLC core types and workflow DAG\n- Evaluation integration with rubrics\n- Phase transition logic\n- Document templates\n- Sample project and testing\n- Daemon API integration\n- Frontend components\n- Next steps for follow-up work\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: update ROADMAP with AIDLC integration phase",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-07-18T15:39:47Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "b6f626d168562dc24535142c93c667a0d36ad23d",
          "body": "Add comprehensive guide for AWS AI DLC workflow integration:\n\n- Setup and configuration instructions\n- Workflow phases explanation (inception, construction, operations)\n- API reference and code examples\n- Update guides index to include new guide\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: add AIDLC integration guide",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-07-18T15:39:26Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "3baf7fcee3319f94c28c19b153ca00ee86d7fd21",
          "body": "Add sample AIDLC project demonstrating the workflow:\n\n- Pre-populated inception phase documents (vision, requirements, technical)\n- Construction phase document (implementation plan in progress)\n- Workflow state file (aidlc-state.md) with progress tracking\n- VisionSpec sync data (.visionspec/specs.json)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(examples): add AIDLC demo project",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-07-18T15:39:18Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f4c6fcc858b004d24c219de6665141f922e9c672",
          "body": "Add V2MOM profiles for different organizational levels:\n\n- v2mom/: Generic V2MOM profile\n- v2mom-company/: Company-level strategic planning\n- v2mom-department/: Department-level V2MOM\n- v2mom-team/: Team-level V2MOM\n\nEach includes templates for vision, values, methods, obstacles,\nand measures with level-appropriate guidance.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(profiles): add V2MOM strategic planning profiles",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-07-18T15:39:00Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "398795a99908410e4d23bebafc7a8ec691d95205",
          "body": "Add LLM-as-judge rubrics for all 12 AIDLC document types:\n\n- aidlc_vision.go: clarity, completeness, alignment, feasibility\n- aidlc_requirements.go: testability, traceability, ambiguity\n- aidlc_technical.go: architecture, scalability, security\n- aidlc_architecture.go: ADR quality, component clarity\n\n[…]\noring.go: metrics, logs, alerts, SLOs\n- aidlc_disaster.go: RTO/RPO, procedures, testing\n- aidlc_slo.go: SLI definitions, targets, error budgets\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(rubrics): add AIDLC evaluation rubrics",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-07-18T15:38:34Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9310a4874afb2380ddf3ebdaf98145f16682f7ef",
          "body": "Implement AWS AI DLC workflow integration:\n\n- types.go: Phase, DocType, Document, QualityScore enums and structs\n- workflow.go: Workflow DAG with nodes, edges, and status tracking\n- sync.go: Bidirectional sync between VisionSpec and AIDLC directories\n- state.go: Parse and serialize aidlc-state.md fo\n[…]\nvalidation\n- templates.go: Document templates for all 12 AIDLC doc types\n- pidl_integration.go: PIDL protocol export for workflow visualization\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(aidlc): add AIDLC workflow package",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-07-18T15:38:04Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "24ba932cc7cd9f11dc74d4ed82e129e2ffa51844",
          "body": "Add strategic planning (V2MOM) and AWS AI DLC workflow spec types:\n\n- V2MOM: vision, values, methods, obstacles, measures, alignment, summary\n- AIDLC: 12 document types across inception, construction, operations phases\n\nInclude helper functions for spec type groupings by phase.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(types): add V2MOM and AIDLC spec types",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-07-18T15:37:23Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "1407eca2c5ba6c1f6845ff55ca0d9c2085ae6d62",
          "body": "Add RequirementsMethodology and ImplementationMethodology fields\nto Project, deprecating the old Workflow field.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(types): add methodology fields to Project struct",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-07-18T15:33:19Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "18a18c79ac1b953416d6abaedb7581d9e132b965",
          "body": "Add MethodologyType and ImplementationMethodology types to support\nseparating requirements methodologies (WHAT to build) from\nimplementation methodologies (HOW to build).\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(types): add methodology types for dual-methodology system",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-07-18T15:32:37Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "cf4148171712d00f14adeef63360c096960e295f",
          "body": "Update all petstore-ai-agent evaluation files:\n- Add schemaVersion: \"v2\"\n- Add scoreV2 (1-5 integer)\n- Add confidence values\n- Add dimensions with per-category scores\n- Add blocking array\n- Update reason codes to category-prefix format (REQ-*, METRIC-*, etc.)\n\nFiles updated: mrd.json, prd.json, uxd.json, opportunity-spec.json\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(examples): update petstore eval files to v2 format",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-07-18T15:28:46Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "27d56a7b1b265c77d80d08ce50dd46df2ca2db52",
          "body": "- Update score scale description (1-5 instead of 0-10)\n- Add v2 evaluation result format with dimensions\n- Add reason codes section with category prefixes\n- Add confidence values and pass criteria\n- Link to reason codes reference\n- Add reason-codes.md to mkdocs navigation\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(cli): update eval command for v2 format",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-07-18T15:28:46Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "1e32b1e8fb33856a0348cee0a3ef52cf5e2f2371",
          "body": "Add comprehensive documentation for reason codes:\n- Code format: {CATEGORY}-{ISSUE}\n- All 10 categories with their codes\n- Default severities for each code\n- AI-assisted repair workflow examples\n- Human review requirements by category\n- v2 evaluation result format\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(concepts): add reason codes reference",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-07-18T15:28:46Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "83401c6ff08afcef7cbb81ce005c778897728ca9",
          "body": "Update test assertions for v2 evaluation fields.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "test(eval): update integration tests for v2 schema",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-07-18T15:28:46Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "d75feab61ce74033607f0363016c7e5c7ab7938b",
          "body": "Update evaluation types and rendering for v2 schema:\n- Add IntScore (1-5), Confidence, Blocking fields to Result\n- Add IntScore, Confidence, ReasonCodes to CategoryResult\n- Add Code, Location fields to Finding\n- Update renderers to display v2 scores with labels\n- Support both v1 (0-10) and v2 (1-5) score formats\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(eval): implement v2 evaluation schema with 1-5 scoring",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-07-18T15:28:43Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "0528c4dc9a0444ab3e345e5b7b2d9aabdace7649",
          "body": "…thub.com/plexusone/structured-evaluation-0.9.0\n\nchore(deps): bump github.com/plexusone/structured-evaluation from 0.8.0 to 0.9.0",
          "is_bot": false,
          "headline": "Merge pull request #4 from ProductBuildersHQ/dependabot/go_modules/gi…",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-07-18T15:29:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9d67053bc5ee724dd8eceaeaf5914a4efe6b562b",
          "body": "…thub.com/grokify/oscompat-0.5.0\n\nchore(deps): bump github.com/grokify/oscompat from 0.4.0 to 0.5.0",
          "is_bot": false,
          "headline": "Merge pull request #3 from ProductBuildersHQ/dependabot/go_modules/gi…",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-07-18T15:29:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3436cb5b56aa4b4dd20e6cac65925d37c4cbea54",
          "body": "Bumps [github.com/plexusone/structured-evaluation](https://github.com/plexusone/structured-evaluation) from 0.8.0 to 0.9.0.\n- [Release notes](https://github.com/plexusone/structured-evaluation/releases)\n- [Changelog](https://github.com/plexusone/structured-evaluation/blob/main/CHANGELOG.md)\n- [Commi\n[…]\ncom/plexusone/structured-evaluation\n  dependency-version: 0.9.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump github.com/plexusone/structured-evaluation",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-13T23:55:03Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e8181723455fc6f3dd12e914f25fac0c8065cc28",
          "body": "Bumps [github.com/grokify/oscompat](https://github.com/grokify/oscompat) from 0.4.0 to 0.5.0.\n- [Release notes](https://github.com/grokify/oscompat/releases)\n- [Changelog](https://github.com/grokify/oscompat/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/grokify/oscompat/compare/v0.4.0...v0.\n[…]\ny-name: github.com/grokify/oscompat\n  dependency-version: 0.5.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump github.com/grokify/oscompat from 0.4.0 to 0.5.0",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-13T23:54:56Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "830e869f07d15eed84593eae40a7237fdc19aa68",
          "body": "- Add docs/releases/v0.12.0.md release notes\n- Update mkdocs.yml navigation with v0.12.0\n- Update CHANGELOG.json with v0.12.0 entries\n- Regenerate CHANGELOG.md via schangelog\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: prepare v0.12.0 release documentation",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-07-06T14:15:44Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "e02eb5c85b81ac3f950b3d5d6f9580e9796bed60",
          "body": "In true AWS Working Backwards, the 6-Pager is the leadership approval\ngate BEFORE investing in detailed PRD/UXD work. Leaders read the\n6-Pager to decide if the project should proceed.\n\nUpdated flow:\nMRD → Press → FAQ → 6-Pager → PRD → UXD → TRD → IRD → TPD → Spec\n\nAlso updated PRD synthesis to include narrative-6p as a source,\nensuring detailed requirements align with the approved narrative.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(workflow): place 6-Pager before PRD/UXD per AWS Working Backwards",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-07-06T13:54:58Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "e302419835aca5bac908add1edc0d2775a6bdd65",
          "body": "Infrastructure Design is now required in the workflow, positioned\nbetween TRD and TPD. This supports teams with separate infra and\napp design responsibilities.\n\nIRD synthesis sources: trd, prd\nIRD guidance: deployment, scaling, cloud services, monitoring,\nsecurity, operational runbooks, cost estimates, capacity planning\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(profiles): add IRD as required spec in big-tech-product",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-07-06T13:50:25Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "8ea9fc33d08962890e146493a1bb83d6451313a6",
          "body": "Change spec sorting from category-first (Source → GTM → Technical)\nto true AWS Working Backwards dependency order:\n\n1. Discovery: opportunity-spec, mrd\n2. Vision: press, faq (Working Backwards)\n3. Product: prd, uxd (informed by PR/FAQ)\n4. Narrative: narrative-6p, narrative-1p, bmc\n5. Technical: trd,\n[…]\nrd, tpd\n6. Output: spec, current-truth\n\nThis ensures the sidebar nav follows the actual synthesis flow\nrather than arbitrary category grouping.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(types): use true workflow order for spec sorting",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-07-06T13:44:24Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e0da8b1261d6588aadd849b914695e15de0428f2",
          "body": null,
          "is_bot": false,
          "headline": "docs: `mkdocs.yml`: update nav",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-07-06T13:02:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f54a66a912178c3b4d0dd682c2bf806e79f4b1f9",
          "body": "- Add docs/cli/workflow.md with usage, flags, and examples\n- Update docs/mcp/tools.md with get_workflow tool documentation\n- Add workflow.md to mkdocs.yml navigation\n- Add workflow command to README CLI table\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: add workflow CLI command and MCP tool documentation",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-07-06T12:59:08Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "9e78216b569eebca0a37baf949cc256154fb857d",
          "body": "- Add docs/releases/v0.11.0.md with workflow IR and specworkflow features\n- Update CHANGELOG.json with v0.11.0 release entry\n- Regenerate CHANGELOG.md via schangelog\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: add v0.11.0 release notes and update changelog",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-07-06T12:44:55Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "cf9e5220db874ddec1415f0a557dde6e25a5ec44",
          "body": "- Add proper error handling helpers in workflow tests instead of discarding errors\n- Fix gofmt formatting in MCP server imports\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: address lint errors in workflow tests and MCP server",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-07-06T12:39:59Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "c28c2ecd436cc905701119bc6c02586b10bdb445",
          "body": "Example project demonstrating visionspec workflow with specs in\nvarious states (pass, conditional, fail) for testing and demo.\nBased on OpenAPI Petstore with AI recommendation features.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: add petstore-ai-agent example project",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-07-06T12:36:10Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "ba46de45dc32ca6e67fe2d4e520908bc86b689e3",
          "body": "Adds 'workflow' CLI command and 'get_workflow' MCP tool to display\nproject workflow DAG with nodes, dependencies, phases, and progress.\nSupports JSON, Mermaid, and DOT output formats.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(cli): add workflow command and MCP tool",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-07-06T12:35:38Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "d9ab9a07eafe468157bc333ae85303414512f9db",
          "body": "Ensures consistent spec ordering in AllSpecs() by sorting by\ncategory (source, gtm, technical, output) then by workflow\nposition within each category. Fixes PR-FAQ ordering.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(types): sort specs by category and workflow order",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-07-06T12:35:24Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "2933cc6bdfbf66fdbc6e9468dbe8c81d10c42d22",
          "body": "Adapts the generic workflow package for visionspec, generating\nworkflows from profiles by mapping spec types to nodes and\nsynthesis dependencies to edges.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(workflow): add specworkflow adapter for visionspec profiles",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-07-06T12:35:09Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a678d96f1a19eb57fff65d7f509fc6d9efdf0a8e",
          "body": "Introduces a generic workflow intermediate representation (IR) for\nmodeling directed acyclic graphs of work items with dependencies.\nIncludes builder pattern, topological sort, and Mermaid rendering.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(workflow): add workflow IR package for DAG modeling",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-07-06T12:34:45Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "ae37cce5c40be771b79816ed46036556b20e29d5",
          "body": null,
          "is_bot": false,
          "headline": "docs: `README.md`: add hero link",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-07-06T07:34:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "adbc020f89f99f7dd43b3f333bcc575b31ba39a6",
          "body": null,
          "is_bot": false,
          "headline": "chore(deps): `go mod`: update dependencies",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-07-06T07:32:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "309ca8614d929300d016c8c0445896645321183d",
          "body": null,
          "is_bot": false,
          "headline": "docs: `README.md`: add hero image",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-07-05T18:13:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "05cccfa2091f320acc94254c93e37a12f3be036d",
          "body": null,
          "is_bot": false,
          "headline": "docs: `README.md`: update shields",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-07-04T09:51:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "22c7eaf72c0667f17dd412860e450ce5271c422a",
          "body": "…thub.com/plexusone/omnillm-core-0.17.0\n\nchore(deps): bump github.com/plexusone/omnillm-core from 0.16.0 to 0.17.0",
          "is_bot": false,
          "headline": "Merge pull request #1 from ProductBuildersHQ/dependabot/go_modules/gi…",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-06-29T08:01:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7a6a2500a77e8ac104fb41f309cea6d336db9e7b",
          "body": "Bumps [github.com/plexusone/omnillm-core](https://github.com/plexusone/omnillm-core) from 0.16.0 to 0.17.0.\n- [Release notes](https://github.com/plexusone/omnillm-core/releases)\n- [Changelog](https://github.com/plexusone/omnillm-core/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/plexusone/o\n[…]\n github.com/plexusone/omnillm-core\n  dependency-version: 0.17.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump github.com/plexusone/omnillm-core",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-28T20:37:46Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "46ff8e5bffb22525c1a0b15d2bb1162e2b77f901",
          "body": "…thub.com/plexusone/structured-evaluation-0.8.0\n\nchore(deps): bump github.com/plexusone/structured-evaluation from 0.7.0 to 0.8.0",
          "is_bot": false,
          "headline": "Merge pull request #2 from ProductBuildersHQ/dependabot/go_modules/gi…",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-06-28T20:36:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "51318bd7d87fdf2edc647e46a0e7184204a220b1",
          "body": "Bumps [github.com/plexusone/structured-evaluation](https://github.com/plexusone/structured-evaluation) from 0.7.0 to 0.8.0.\n- [Release notes](https://github.com/plexusone/structured-evaluation/releases)\n- [Changelog](https://github.com/plexusone/structured-evaluation/blob/main/CHANGELOG.md)\n- [Commi\n[…]\ncom/plexusone/structured-evaluation\n  dependency-version: 0.8.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump github.com/plexusone/structured-evaluation",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-22T23:54:36Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "13e161116c8535081322cb5c0fe88b8a1f20efaf",
          "body": "- Fix visualization badge URL (plexusone → ProductBuildersHQ)\n- Add Cross-Project Analysis section with search, reuse, patterns commands\n- Add workflows command to Context & Traceability section\n- Add get_execution_status and track_requirement MCP tools\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(readme): add missing CLI commands and MCP tools",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-06-14T13:30:07Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "03416dc980fe901f9c2f727b02559f6bb974bba7",
          "body": "- Update CHANGELOG.json with v0.10.0 entries\n- Regenerate CHANGELOG.md via schangelog\n- Add docs/releases/v0.10.0.md release notes\n- Update mkdocs.yml with v0.10.0 in releases nav\n- Update README.md current version to v0.10.0\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: prepare v0.10.0 release",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-06-13T17:18:47Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "b865371bc4d62bf7b2d147faae6ef4552513c466",
          "body": "G115 (integer overflow): Replace string(rune(i)) with strconv.Itoa(i)\nin pairKey function to avoid potential integer overflow when converting\nint to rune.\n\nG122 (filepath.Walk TOCTOU): Add nolint comments for ReadFile calls\ninside filepath.Walk callbacks. These are internal spec-scanning tools\nwhere the user provides the directory - the security risk is minimal\nfor this use case.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: resolve gosec lint issues G115 and G122",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-06-13T17:04:46Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "d5ad31a9eef936883fb1e1ae2409d3e723eaebfe",
          "body": "The JTBD canvas implementation in prism-roadmap includes:\n- JTBDCanvas with full methodology support\n- JobStatement, OutcomeExpectation, Force, HiringSolution types\n- ODI scoring with CalculateOpportunityScore\n- Job filtering (functional, emotional, social)\n- Opportunity analysis (top, underserved, overserved)\n- Switch interview tracking\n- Markdown renderer support\n- Comprehensive unit tests\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: mark RMI-494 JTBD profile Go structs as complete",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-06-13T16:29:51Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "aa457756368b1134eee85b6c3faf3b01f9979275",
          "body": "Update from commit-based pseudo-version to tagged release.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(deps): update oscompat to v0.4.0",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-06-13T16:20:07Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "e2e5acdd845cd3968f59cfe10ef2bb16223cb93d",
          "body": "Replace Unix-specific mode bit checks (info.Mode()&0111) with\noscompat/fs.IsExecutable for cross-platform executable detection.\n\nThis fixes CI failures on Windows where the Unix executable bit\ncheck always fails since Windows doesn't use permission bits.\n\nThe oscompat abstraction:\n- Unix/macOS: checks execute permission bits\n- Windows: checks file extensions or no-extension (git hooks)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(hooks): use oscompat for cross-platform executable detection",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-06-13T16:02:14Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "212aff40c8bc1497efe1fae80f2f3c0f1f65b439",
          "body": "Mark completed items with implementation details:\n- RMI-148: MkDocs graph embedding\n- RMI-350-352: Search, reuse, patterns packages and CLI\n- RMI-601/611/640/641: MCP execution tools and prompts\n- RMI-496: Core workflow documentation\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: update ROADMAP with completed implementation items",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-06-13T15:16:36Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "412610e3147493b559bacaea02e0d4cea1971e54",
          "body": "Add framework-specific workflow documentation:\n- Shape Up flow (pitch → betting → scope → hill chart → build)\n- Continuous Discovery flow (touchpoints → OST → assumptions)\n- Combined Shape Up + Continuous Discovery workflow\n\nIncludes key principles for each framework and guidance\non combining them for ongoing discovery with execution cycles.\n\nImplements RMI-496.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(workflow): add Shape Up and Continuous Discovery flows",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-06-13T15:14:59Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "b0e68c49eb7676f430ad9df240a2f3de1a9d0e10",
          "body": "Add MCP tools for execution status tracking:\n- get_execution_status - track requirement implementation progress\n- track_requirement - update requirement status with evidence\n\nAdd MCP prompts for guided implementation:\n- implement_requirement - guide requirement implementation\n- verify_acceptance - guide acceptance criteria verification\n- resolve_drift - guide drift resolution\n\nImplements RMI-601, RMI-611, RMI-640, RMI-641.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(mcp): add execution tracking tools and prompts",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-06-13T15:14:22Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "5bb1c0ca811af331ffdaa0a6ff2c40f0b25cb1a9",
          "body": "Add CLI commands for cross-project analysis:\n- visionspec search <query> - full-text search with filters\n- visionspec reuse - analyze requirement reuse opportunities\n- visionspec patterns - detect patterns and anti-patterns\n\nCommands support --format flag for JSON/terminal output.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(cli): add search, reuse, and patterns commands",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-06-13T15:11:09Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "98d0053ea5725eff7efe69c46615a84a1e081abb",
          "body": "Add patterns package for detecting patterns and anti-patterns:\n- Structural patterns (common sections across specs)\n- Content patterns (user stories, acceptance criteria, API refs)\n- Anti-patterns (empty sections, vague requirements, TODOs)\n- Quality scoring based on anti-pattern severity\n\nImplements RMI-352.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(patterns): add specification pattern detection",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-06-13T15:10:20Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "5a7753a47e845e08fb2f68d926dbac3a3de7ee32",
          "body": "Add reuse package for identifying reusable requirements:\n- Extract requirements using RFC 2119 patterns\n- Find duplicate requirements across projects\n- Find similar requirements via keyword overlap\n- Suggest consolidation and template opportunities\n\nImplements RMI-351.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(reuse): add requirement reuse tracking across projects",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-06-13T15:09:09Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "fcb04a68db5dec9f2a89c3c5d44a5d7a33c9b492",
          "body": "Add search package for searching across all spec files:\n- Searcher with configurable search options\n- Filter by project, spec type, with regex support\n- Ranked results with match counts and context\n- Faceted results by project and spec type\n\nImplements RMI-350.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(search): add full-text search across specification files",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-06-13T15:08:56Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "abef7b5ffdc8f9fe528d8be38cb671f4592699fa",
          "body": "Add functions to detect and embed graphize visualization output\nin MkDocs project documentation:\n- DetectGraphizeOutput() - finds graphize HTML output\n- GenerateProjectIndexWithGraph() - generates index with auto-detection\n- EmbedGraphizeInIndex() - embeds iframe or link for visualization\n\nImplements RMI-148.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(mkdocs): add graphize visualization embedding support",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-06-13T15:08:44Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f4b9b61013b30ec7b7f1ba9a69dddb542a30e6e1",
          "body": "Mark completed items:\n- RMI-036/037: align command and current-truth structure\n- RMI-090/091: OpenSpec adapter\n- RMI-103: Git hooks support\n- RMI-110/111: Cross-project deps and ROADMAP generation\n- RMI-120/121: Decision log and rationale graphs\n- RMI-130/131: Metrics dashboard\n- RMI-442/443: Contex\n[…]\nfy graphize integration:\n- RMI-148: MkDocs graph embedding uses graphize exporters\n- RMI-350-352: Search/reuse/patterns integrate with graphize\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: update ROADMAP.md with implementation status",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-06-13T14:18:25Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d99bfc9ffe0440436fc5a356aff0dec41fe84c99",
          "body": "- Add docs/cli/align.md: alignment checking documentation\n- Add docs/cli/metrics.md: metrics dashboard documentation\n- Add docs/cli/hooks.md: Git hooks management documentation\n- Update docs/cli/index.md: add new commands to reference\n- Update mkdocs.yml: add new pages to navigation\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(cli): add documentation for align, metrics, and hooks commands",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-06-13T13:10:11Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "2716a325805d94fd5c8d56e8650086aac9d413f8",
          "body": "- Add align, metrics, hooks commands to CLI reference\n- Update export targets: openspec, github, jira now implemented\n- Add new MCP tools: align_spec, get_metrics, install_hooks, etc.\n- Update project status: Phase 8 complete, Phase 14 complete\n- Update current version to v0.9.0\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: update README with new commands and targets",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-06-13T07:25:06Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "d67dbb271bcf850ec27f196fc2821d409e902857",
          "body": "- Extract loadContextForCommand helper to fix dupl lint\n- Fix gofmt formatting in hooks.go\n- Add nolint for gosec G306 (file permissions)\n  - hooks.go: Git hooks must be executable (0755)\n  - commands.go: Documentation file needs to be readable (0644)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: resolve lint issues in cli and hooks",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-06-13T07:19:48Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "07dce9d6a54ef7d19324a5ebebeddc5a89192fcf",
          "body": "Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(deps): update go dependencies",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-06-13T06:55:26Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "ebb4995263b24138f8d3068c3f12a3ae249984f3",
          "body": "Mark completed roadmap items:\n- RMI-036, RMI-037: Post-ship alignment (align command, current-truth)\n- RMI-090, RMI-091: OpenSpec adapter\n- RMI-103: Git hooks support\n- RMI-148: MkDocs graph embedding\n- RMI-110, RMI-111: Cross-project dependencies, ROADMAP generation\n- RMI-120, RMI-121: Decision log\n[…]\n: Evaluation metrics dashboard\n- RMI-442, RMI-443: Context flags on align command\n- RMI-621, RMI-630, RMI-631: Test mapping, GitHub/Jira export\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: update ROADMAP.md with completion status",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-06-13T06:55:16Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9a1ca3321f4056ba82b726cff2ed520cc697c811",
          "body": "Add MCP tool handlers:\n- align_spec: Run alignment checking\n- get_alignment_status: Get alignment status\n- track_resolution: Track discrepancy resolution\n- get_metrics: Get evaluation metrics\n- install_hooks: Install git hooks\n- get_hooks_status: Get hooks status\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(mcp): add MCP tools for new features",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-06-13T06:55:02Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "ebca7423d0d68d607fda2246481f95f8b33f1cdf",
          "body": "Add CLI commands for new packages:\n- visionspec align: Post-ship alignment checking\n- visionspec hooks install/uninstall/status: Git hooks management\n- visionspec metrics: Evaluation metrics dashboard\n- Context flags: --with-context, --context-file on align/drift\n\nUpdates to existing commands:\n- drift: Add --with-context and --context-file flags\n- Export: Support openspec, github, jira targets\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(cli): integrate commands for new features",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-06-13T06:54:44Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "9fd56cf9c05469f7612a18ab7fe9198e41434d10",
          "body": "GitHub Issues export (pkg/target/github_issues.go):\n- Export requirements as GitHub issues\n- Create milestones from phases\n- Link issues to specs via labels\n- Priority and label mapping\n\nJira export (pkg/target/jira.go):\n- Export as Jira epics/stories\n- Map priorities and labels\n- Create project boa\n[…]\nverage by requirement\n- Report uncovered requirements\n- Support multiple test frameworks\n\nImplements RMI-621, RMI-630, RMI-631 from ROADMAP.md.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: add GitHub Issues, Jira export, and test mapping",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-06-13T06:54:27Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "110bce37abbb26ff9aa9f7b020a5f0edf858e262",
          "body": "Add pkg/metrics for tracking spec evaluation metrics:\n\n- Spec quality trends over time\n- Common failure patterns\n- Conflict frequency tracking\n- Resolution time metrics\n- Dashboard renderers: HTML, JSON, terminal\n- Reconciliation metrics\n\nImplements RMI-130, RMI-131 from ROADMAP.md (Analytics).\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(metrics): add evaluation metrics dashboard",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-06-13T06:53:48Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "62956a3cbd1750f90552d62e553e842e76dafe6f",
          "body": "Cross-project dependencies (pkg/deps):\n- Dependency graph between projects\n- Dependency cycle detection\n- Impact analysis for changes\n- Visualization support\n\nROADMAP.md generation (pkg/roadmap):\n- Aggregate project statuses\n- Priority-based ordering\n- Progress tracking\n- Milestone mapping\n\nDecision\n[…]\n Link decisions to requirements\n- Impact analysis\n- Searchable decision history\n\nImplements RMI-110, RMI-111, RMI-120, RMI-121 from ROADMAP.md.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: add cross-project deps, roadmap generation, and decisions",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-06-13T06:51:46Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1443f4b3fd4435dc5177c5722d001610ecf2f0a5",
          "body": "Git hooks for automated spec validation:\n- pre-commit: Lint changed spec files\n- pre-push: Validate specs before push\n- commit-msg: Validate commit message format\n- post-commit: Update spec status after commit\n- Install/uninstall/status commands\n\nMkDocs graph embedding:\n- Embed graphize visualizatio\n[…]\nrt for inline SVG and linked HTML exports\n- Configurable graph options\n\nImplements RMI-103 (Git hooks), RMI-148 (MkDocs graph) from ROADMAP.md.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(hooks): add Git hooks and MkDocs graph embedding",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-06-13T06:50:34Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b6467350b3be2501a4c0519599fd20e828ac4a3a",
          "body": "Add OpenSpec target adapter for cross-tool compatibility:\n\n- Portable JSON/YAML schema for requirements\n- Standardized structure: metadata, sections, requirements, tasks\n- Acceptance criteria with test mapping\n- Dependency graph support\n- YAML and JSON output variants\n\nImplements RMI-090, RMI-091 from ROADMAP.md (OpenSpec Adapter).\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(target): add OpenSpec portable export format",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-06-13T06:47:14Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "b07268a01b0e9a479ecbe583227e3ba51dd7d732",
          "body": "Add pkg/align package for comparing spec.md against actual implementation:\n\n- Discrepancy types: missing_feature, undocumented_code, diverged,\n  partial_implementation, behavior_mismatch\n- Severity levels: critical, high, medium, low, info\n- Alignment scoring (0-100%)\n- current-truth.md generation\n-\n[…]\nworkflow for tracking fixes\n- Multiple output formats: text, json, markdown\n\nImplements RMI-036, RMI-037 from ROADMAP.md (Post-Ship Alignment).\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(align): add post-ship alignment checking",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-06-13T06:47:04Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "988c6941316986d9a472146d3f07bac213713c4d",
          "body": "Update documentation to reflect new default rich output:\n- Add --basic flag for legacy simplified output\n- Document pipeline visualization with status icons\n- Add box-drawing table examples\n- Update JSON schema with pipeline and aggregate fields\n- Update markdown format examples\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(cli): update status command for rich output format",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-06-08T11:37:35Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "905283f516f3ea2ae4971df1a00272a5ab4b1885",
          "body": "Change status command to use rich output by default:\n- Pipeline visualization with status icons (✅/❌/🔄)\n- Box-drawing tables for summary display\n- Completion percentage and aggregate categories\n- Add --basic flag for legacy simplified output\n\nRich format is optimized for AI agents consuming CLI output.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(cli): use rich status output as default for AI agents",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-06-08T10:11:02Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "e34c103fc691cee7feb94c6c8f0cd862759fa287",
          "body": "Add tests for:\n- NewRichReport: pipeline building, aggregate categories\n- RichReport setters: highlights, findings, steps, decisions\n- RenderRichText: terminal output with box-drawing\n- RenderRichMarkdown: markdown output with tables\n- buildPipeline: stage status determination\n- formatFindings: finding string formatting\n- truncate: string truncation helper\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "test(status): add tests for rich report functionality",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-06-08T10:04:34Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "901ca7b06225a2a54c14d95ad240781124716c7c",
          "body": "Add RichReport type extending Report with:\n- Pipeline visualization with stage statuses\n- CategoryBreakdown for pass/partial/fail counts\n- LLM-fillable semantic fields (Highlights, MediumFindings,\n  NextSteps, KeyDecisions, ReadySummary)\n\nAdd deterministic renderers:\n- RenderRichText: terminal outpu\n[…]\nenderKeyDecisions: decision table\n\nThis enables LLMs to fill semantic fields while visionspec\nrenders the rich status format deterministically.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(status): add rich report JSON IR schema and renderers",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-06-08T09:58:45Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "73e84643f84bcc40bc5412f46bfa31990d0f79c4",
          "body": null,
          "is_bot": false,
          "headline": "docs: `mkdocs.yml`: add `v0.9.0` to nav",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-06-08T09:23:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0138dcddacb712ffc99a68b690dc0011b780b53b",
          "body": "- Update installation version to v0.9.0\n- Add spec-workflows integration section\n- Document workflow selection on init\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: update README for v0.9.0",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-06-08T09:14:05Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "7b6b68495e70881d5f4229eeb422fb5c5ab1f307",
          "body": "Add CLI documentation for the new workflows command.\nUpdate MkDocs navigation to include workflows page.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(cli): add workflows command documentation",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-06-08T09:13:41Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "baff3150ffd200b331f1bf64e97ab70c9c7b5b41",
          "body": "Add v0.9.0 release entry with spec-workflows integration features.\nRegenerate CHANGELOG.md using schangelog.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: update changelog for v0.9.0",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-06-08T09:13:32Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "731da863cb45930426a501d38a985050aa7d67ae",
          "body": "Document spec-workflows integration features:\n- External repository loading and auto-discovery\n- workflows command for listing methodologies\n- init --workflow flag for methodology selection\n- Environment variable and search path configuration\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: add v0.9.0 release notes",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-06-08T09:13:10Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "99581d44bc15a1af686a1adc82d9e3e6b4fe685d",
          "body": "Add persistent --workflows-repo flag to root command for explicit\nspec-workflows repository path specification.\n\nWhen set, overrides auto-discovery and uses the specified path.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(cli): add --workflows-repo global flag",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-06-08T08:58:25Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "7977b346345cb098f18ae7cd21c294bb8493e972",
          "body": "Add user-facing workflow features:\n\n- 'visionspec workflows' command lists available workflows\n  Shows repository path and grouped workflow IDs\n  Provides setup instructions if no repo found\n\n- 'visionspec init --workflow=<id>' flag\n  Validates workflow exists in discovered repo\n  Stores workflow ID in visionspec.yaml\n  Uses workflow-specific templates when --with-templates\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(cli): add workflows command and init --workflow flag",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-06-08T08:58:05Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "d6b4a600d2a16ccbee8256d9b4f735dbbc4b59bf",
          "body": "Add WorkflowsRepoPath field and helper methods to CLI Config:\n- GetWorkflowsRepo() - loads repo with auto-discovery\n- GetWorkflowsRepoPath() - returns discovered path\n- GetTemplateLoaderForWorkflow() - methodology-specific templates\n- GetRubricLoaderForWorkflow() - methodology-specific rubrics\n- Lis\n[…]\n) - lists all workflow IDs\n\nAuto-discovery allows visionspec to find spec-workflows repos\nwithout explicit --workflows-repo flag in most cases.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(cli): add workflows repo support to Config",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-06-08T08:57:55Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "cb0d5143611b76a49d8597cdfa972328580e4741",
          "body": "Store the selected workflow (methodology/level) in project config.\nExample: \"aws-working-backwards/product\"\n\nThis enables projects to specify which spec-workflows methodology\nthey follow, affecting template and rubric selection.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(types): add Workflow field to Project",
          "author_name": "John Wang",
          "author_login": "grokify",
          "committed_at": "2026-06-08T08:57:44Z",
          "body_truncated": false,
          "is_coding_agent": true
        }
      ],
      "releases_count": 14,
      "commits_last_year": 288,
      "latest_release_at": "2026-07-20T10:43:50Z",
      "latest_release_tag": "v0.14.0",
      "releases_from_tags": false,
      "days_since_last_push": 4,
      "active_weeks_last_year": 9,
      "days_since_latest_release": 4,
      "mean_days_between_releases": 6.1
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 50,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "github.com/ProductBuildersHQ/visionspec",
          "exists": true,
          "license": null,
          "keywords": [],
          "ecosystem": "go",
          "matches_repo": true,
          "registry_url": "https://pkg.go.dev/github.com/ProductBuildersHQ/visionspec",
          "is_deprecated": false,
          "latest_version": "v0.14.0",
          "repository_url": "https://github.com/ProductBuildersHQ/visionspec",
          "versions_count": 14,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": null,
          "latest_published_at": "2026-07-20T10:38:02Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 4
        }
      ]
    },
    "popularity": {
      "forks": 0,
      "stars": 0,
      "watchers": 0,
      "fork_history": {
        "days": [],
        "complete": true,
        "collected": 0,
        "total_forks": 0
      },
      "star_history": {
        "days": [],
        "complete": true,
        "collected": 0,
        "total_stars": 0,
        "collected_at": null
      },
      "open_issues_and_prs": 0
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "examples"
      ],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": true,
      "bootstrap_files": [
        "Makefile"
      ],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [
        "go.mod"
      ],
      "largest_source_bytes": 153218,
      "source_files_sampled": 163,
      "oversized_source_files": 2,
      "agent_instruction_files": [
        "CLAUDE.md"
      ],
      "agent_instruction_max_bytes": 6881
    },
    "dependencies": {
      "manifests": [
        "go.mod"
      ],
      "advisories": {
        "error": null,
        "scope": null,
        "source": null,
        "findings": [],
        "collected": false,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 0,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "go"
      ],
      "dependencies": [
        {
          "name": "github.com/bmatcuk/doublestar/v4",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v4.10.0"
        },
        {
          "name": "github.com/fsnotify/fsnotify",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.10.1"
        },
        {
          "name": "github.com/grokify/oscompat",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.5.0"
        },
        {
          "name": "github.com/grokify/pidl",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.5.0"
        },
        {
          "name": "github.com/grokify/prism-roadmap",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.16.0"
        },
        {
          "name": "github.com/modelcontextprotocol/go-sdk",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.6.1"
        },
        {
          "name": "github.com/plexusone/graphfs",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.2.0"
        },
        {
          "name": "github.com/plexusone/graphize",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.4.0"
        },
        {
          "name": "github.com/plexusone/omnillm-core",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.18.0"
        },
        {
          "name": "github.com/plexusone/structured-evaluation",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.10.0"
        },
        {
          "name": "github.com/spf13/cobra",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.10.2"
        },
        {
          "name": "gopkg.in/yaml.v3",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v3.0.1"
        }
      ],
      "all_dependencies": {
        "error": "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
        "source": null,
        "packages": [],
        "collected": false,
        "truncated": false,
        "total_count": null,
        "direct_count": null,
        "indirect_count": null
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 0,
        "merged_prs": 4,
        "open_issues": 0,
        "closed_ratio": null,
        "closed_issues": 0,
        "closed_unmerged_prs": 0
      },
      "bus_factor": 1,
      "bot_contributors": 1,
      "top_contributors": [
        {
          "type": "User",
          "login": "grokify",
          "commits": 284,
          "avatar_url": "https://avatars.githubusercontent.com/u/209872?v=4"
        }
      ],
      "contributors_sampled": 1,
      "top_contributor_share": 1
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "go-ci.yaml",
        "go-lint.yaml",
        "go-sast-codeql.yaml"
      ],
      "has_docs_dir": true,
      "linter_configs": [
        ".golangci.yaml"
      ],
      "has_editorconfig": false,
      "has_linter_config": true,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "go.sum"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 0,
            "reason": "branch protection not enabled on development/release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": null,
            "reason": "no pull request found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 0,
            "reason": "Found 0/30 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 5 contributing companies or organizations",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 10,
            "reason": "update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 0,
            "reason": "project was created within the last 90 days. Please review its contents carefully",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": null,
            "reason": "packaging workflow not 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": "no SAST tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 0,
            "reason": "security policy file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 9,
            "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": 10,
            "reason": "0 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "295661bd0d0a5d55c823e64ccf20433e1f7375e1",
        "ran_at": "2026-07-25T00:12:05Z",
        "aggregate_score": 4.9,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": true,
      "has_security_policy": false,
      "has_dependabot_config": true
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-24T23:53:35Z",
      "oldest_open_prs": [],
      "last_merged_pr_at": "2026-07-18T15:29:40Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/ProductBuildersHQ/visionspec",
    "host": "github.com",
    "name": "visionspec",
    "owner": "ProductBuildersHQ"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 59,
      "inputs": {
        "security": 49,
        "vitality": 76,
        "community": 24,
        "governance": 54,
        "engineering": 84
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "good",
        "name": "Vitality",
        "value": 76,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "moderate",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 60,
            "inputs": {
              "commits_last_year": 288,
              "human_commit_share": 0.96,
              "days_since_last_push": 4,
              "active_weeks_last_year": 9
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 4 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 4
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "9/52 weeks with commits",
                "points": 6.2,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 9
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "288 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 288
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "project was created within the last 90 days. Please review its contents carefully",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "releases_count": 14,
              "latest_release_tag": "v0.14.0",
              "releases_from_tags": false,
              "days_since_latest_release": 4,
              "mean_days_between_releases": 6.1
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "14 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 14
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 4 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 4
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~6.1 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 6.1
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "unverified",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": "repository_too_young",
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": null,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "maintenance record not established from the collected data",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_unverified",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "critical",
        "name": "Community & Adoption",
        "value": 24,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "critical",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 1,
            "inputs": {
              "forks": 0,
              "stars": 0,
              "watchers": 0,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "0 stars",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "0 forks",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "0 watchers",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "moderate",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 50,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (MIT)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "MIT"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "moderate",
        "name": "Sustainability & Governance",
        "value": 54,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 20,
            "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 5 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "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": 72,
            "inputs": {
              "merged_prs": 4,
              "open_issues": 0,
              "closed_issues": 0,
              "issue_closed_ratio": null,
              "closed_unmerged_prs": 0
            },
            "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": "4/4 decided PRs merged",
                "points": 38.2,
                "status": "met",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 4,
                      "decided": 4
                    }
                  }
                ],
                "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": 38,
            "inputs": {
              "followers": 0,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "ProductBuildersHQ",
              "public_repos": 9,
              "account_age_days": 172
            },
            "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 ProductBuildersHQ",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 0,
                      "login": "ProductBuildersHQ"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "9 public repos, account ~0 yr old",
                "points": 8.2,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 9
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 0
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "github.com/ProductBuildersHQ/visionspec"
              ],
              "ecosystems": "go",
              "any_deprecated": false,
              "min_days_since_publish": 4
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "1 package(s) on go",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 1,
                      "ecosystems": "go"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 4 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 4
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "14 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 14
                    }
                  }
                ],
                "max_points": 20
              },
              {
                "key": "not_deprecated",
                "name": "Not deprecated",
                "detail": "active, not deprecated or yanked",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "package_not_deprecated",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "good",
        "name": "Engineering Quality",
        "value": 84,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "good",
            "name": "Engineering practices",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: CI-Tests. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_ci_tests"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 80,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": true,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "3 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 3
                    }
                  }
                ],
                "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": ".golangci.yaml",
                "points": 16,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".golangci.yaml"
                    }
                  }
                ],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "excellent",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "topics": [],
              "has_wiki": true,
              "homepage": "http://productbuildershq.com/visionspec/",
              "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": "http://productbuildershq.com/visionspec/",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "at_risk",
        "name": "Security",
        "value": 49,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): CI-Tests, Packaging, Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "ci_tests",
                    "packaging",
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 49,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 15,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 3,
              "scorecard_aggregate": 4.9
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection not enabled on development/release branches",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "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 5 contributing companies or organizations",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "update tool detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "project was created within the last 90 days. Please review its contents carefully",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow not detected",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "no SAST tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 6.8,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "0 existing vulnerabilities detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 2
            },
            "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": "excellent",
        "name": "AI Readiness",
        "value": 85,
        "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.md"
              ],
              "agent_instruction_max_bytes": 6881
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "CLAUDE.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "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": "96 of 96 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 96,
                      "sampled": 96
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "excellent",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "go.sum"
              ],
              "has_dockerfile": false,
              "typed_language": true,
              "bootstrap_files": [
                "Makefile"
              ],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [],
              "agent_commit_share": 0.86,
              "toolchain_manifests": [
                "go.mod"
              ],
              "dependency_bot_commit_share": 0.04
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "Makefile",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "Makefile"
                    }
                  }
                ],
                "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": ".golangci.yaml",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".golangci.yaml"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "Go (statically typed)",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "Go"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "86 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 86,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "4 of the last 100 commits are automated dependency updates",
                "points": 8,
                "status": "met",
                "details": [
                  {
                    "code": "dependency_bot_commits",
                    "params": {
                      "count": 4,
                      "sampled": 100
                    }
                  }
                ],
                "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": 99,
            "inputs": {
              "primary_language": "Go",
              "largest_source_bytes": 153218,
              "source_files_sampled": 163,
              "oversized_source_files": 2
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "Go (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "Go"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "2/163 source files over 60KB",
                "points": 54.3,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 163,
                      "oversized": 2
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "moderate",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 60,
            "inputs": {
              "example_dirs": [
                "examples"
              ],
              "has_mcp_signal": true,
              "api_schema_files": []
            },
            "components": [
              {
                "key": "api_schema_openapi_graphql_proto",
                "name": "API schema (OpenAPI/GraphQL/proto)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 40
              },
              {
                "key": "mcp_server",
                "name": "MCP server",
                "detail": null,
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": "examples",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "examples"
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-25T00:12:10.304580Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/p/ProductBuildersHQ/visionspec.svg",
  "full_name": "ProductBuildersHQ/visionspec",
  "license_state": "standard",
  "license_spdx": "MIT"
}

评分是信号,而非担保。 评分反映的是 GitHub 上公开可见的实践——不是代码审计,也不是安全保证。

缺失数据将被剔除并重新归一化权重,绝不按零分计。方法论已版本化并公开:指标 v1.13.0、模式 v0.27.0—— 完整方法论 · 指标知识库.

单项结果在整体记录中的位置: 汇总统计Go.