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

xiangganLuo / flex-point

Flex Point 是一款面向应用的轻量级扩展点(Ext Point)框架,为多业务场景下的「能力解耦、动态路由、灵活扩展」而生。它把「同一能力的不同业务实现」抽象为扩展点,由选择器在运行期按上下文选中目标实现,让业务代码只依赖接口、路由决策收敛在框架内。

JavaApache-2.0★ 9 星标⑂ 2 复刻始于 2025年6月在 GitHub 上查看 ↗

xiangganLuo/flex-point 的健康指数为 100 分中的 50 分,处于「中等」区间。 其得分最高的类别是Vitality(70/100),最低的是Community & Adoption(31/100)。 最近一次更新在 7 天前。 近期的大部分工作由 1 位贡献者完成。

50
总分 / 100
中等

软件健康指数

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

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

评分画像

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

所有权

xiangganLuo个人账户
4 关注者26 个公开仓库始于 2022年4月dp

该仓库由个人账户拥有。相较于组织支持的项目,单一所有者项目的延续性风险更高。

软件包生态系统

注册表软件包版本月下载量版本数最近发布
Mavenio.github.xiangganluo:flexpoint-core2.0.0-17 天前
Mavenio.github.xiangganluo:flexpoint-common2.0.0-17 天前
Mavenio.github.xiangganluo:flexpoint-spring2.0.0-17 天前
Mavenio.github.xiangganluo:flexpoint-springboot2.0.0-17 天前

按类别列示的指标

活力

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

70良好 · 占总体的 22%
评分方式
36/36推送新近度 — 最近一次推送于 7 天前
4.8/36提交节奏 — 52 周中有 7 周有提交
16.7/18提交量 — 最近一年 71 次提交
10/10OpenSSF Scorecard:Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
所用输入
commits_last_year71
human_commit_share1
days_since_last_push7
active_weeks_last_year7

发布纪律

72良好
评分方式
16.2/27有发布版本 — 2 个版本标签(无 GitHub 发布版本)
36/36发布时效 — 最近一次发布版本于 7 天前
12.6/27发布节奏 — 约每 237.8 天发布一次
0/10OpenSSF Scorecard:Signed-Releases — 无数据
所用输入
releases_count2
latest_release_tag2.0.0
releases_from_tags
days_since_latest_release7
mean_days_between_releases237.8
已排除计分(无数据或不适用):OpenSSF Scorecard:Signed-Releases。 其余权重已重新归一化。

社区与采用

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

31存在风险 · 占总体的 18%
评分方式
14.6/60星标 — 9 个星标
0/25复刻 — 2 个复刻
0/15关注者 — 0 位关注者
所用输入
forks2
stars9
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history

社区健康

50中等
评分方式
22.5/22.5README
22.5/22.5许可证 — 可识别的许可证(Apache-2.0)
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

可持续性与治理

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

42存在风险 · 占总体的 24%
评分方式
9/54巴士系数 — 1 位贡献者贡献了半数提交
0.4/22.5提交分布 — 头号贡献者编写了 98% 的提交
2.7/13.5贡献者广度 — 2 位贡献者
3/10OpenSSF Scorecard:Contributors — project has 1 contributing companies or organizations -- score normalized to 3
所用输入
bus_factor1
contributors_sampled2
top_contributor_share0.982
评分方式
0/46.8议题解决 — 没有议题或无数据
21.9/38.3PR 接受 — 已裁定的 PR 中 4/7 已合并
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_prs3
已排除计分(无数据或不适用):议题解决。 其余权重已重新归一化。
评分方式
10/30所有权背书 — 个人(用户)账户
0/20已验证域名 — 不适用于个人账户
5/25所有者影响力 — xiangganLuo 有 4 位关注者
18.9/25既往记录 — 26 个公开仓库,账户约 4 年
所用输入
followers4
owner_typeUser
is_verified
owner_loginxiangganLuo
public_repos26
account_age_days1,551
已排除计分(无数据或不适用):已验证域名。 其余权重已重新归一化。
评分方式
25/25已发布且可解析 — maven 上有 4 个软件包
35/35发布时效 — 最近一次发布于 7 天前
4/20版本历史 — 1 个已发布版本
20/20未被弃用 — 活跃,未被弃用或撤回
所用输入
packagesio.github.xiangganluo:flexpoint-core, io.github.xiangganluo:flexpoint-common, io.github.xiangganluo:flexpoint-spring, io.github.xiangganluo:flexpoint-springboot
ecosystemsmaven
any_deprecated
min_days_since_publish7

工程质量

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

54中等 · 占总体的 20%

工程实践

30存在风险
评分方式
0/24CI 工作流
24/24存在测试
0/16Linter 配置
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文档 / 主页站点 — https://flex-point.pages.dev/
10/10仓库描述
0/10主题标签
10/10Wiki
所用输入
topics
has_wiki
homepagehttps://flex-point.pages.dev/
has_readme
has_docs_dir
has_description

安全

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

54中等 · 占总体的 16%

安全态势

43存在风险
评分方式
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — 无数据
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
0.8/2.5Contributors — project has 1 contributing companies or organizations -- score normalized to 3
0/10Dangerous-Workflow — 无数据
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5许可证 — license file detected
7.5/7.5Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
0/5Packaging — 无数据
0/5Pinned-Dependencies — 无数据
0/5SAST — no SAST tool detected
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — 无数据
0/7.5Token-Permissions — 无数据
7.5/7.5Vulnerabilities — 0 existing vulnerabilities detected
所用输入
sourceopenssf_scorecard
checks_evaluated11
scorecard_versionv5.5.0
checks_inconclusive7
scorecard_aggregate4.3
已排除计分(无数据或不适用):branch_protection, ci_tests, dangerous_workflow, packaging, pinned_dependencies, signed_releases, token_permissions。 其余权重已重新归一化。
评分方式
35/35直接依赖不含已知公告 — 没有直接依赖携带已知公告
25/25间接依赖不含已知公告 — 没有间接依赖携带已知公告
0/40没有长期未处理的公告 — 没有公告带有发布日期
所用输入
sourceosv
advisories0
affected_packages0
assessed_packages5
unassessed_packages0
affected_by_severitynone
direct_affected_packages0
已排除计分(无数据或不适用):没有长期未处理的公告。 其余权重已重新归一化。 比对的是 maven:io.github.xiangganluo:flexpoint-core@2.0.0 的运行时依赖闭包——安装已发布的软件包时真正被拉取进来的内容——共 5 个软件包。 未对可达性进行分析。

AI 就绪度

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

53中等 · 占总体的 0%
评分方式
0/45代理指令 — 没有 CLAUDE.md / AGENTS.md / 编辑器规则
0/15机器可读文档(llms.txt)
40/40可读的提交历史 — 100 次人类提交中有 92 次说明了意图(结构化标题或解释性正文)
所用输入
has_llms_txt
legible_history_share0.92
agent_instruction_files
agent_instruction_max_bytes
评分方式
12.6/18一条命令的引导启动 — flexpoint-common/pom.xml, flexpoint-core/pom.xml, flexpoint-dependencies-bom/pom.xml(工具链约定,无任务运行器)
22/22自动化测试
0/11Lint / 格式化配置
11/11静态类型检查 — Java(静态类型)
0/10可复现环境
0/10已体现的代理实践 — 最近 100 次提交中没有代理编写的提交
0/8自动化维护 — 未观察到自动依赖更新
0/10OpenSSF Scorecard:Pinned-Dependencies — 无数据
所用输入
has_nix
has_tests
lockfiles
has_dockerfile
typed_language
bootstrap_files
has_devcontainer
has_linter_config
typecheck_configs
agent_commit_share0
toolchain_manifestsflexpoint-common/pom.xml, flexpoint-core/pom.xml, flexpoint-dependencies-bom/pom.xml, flexpoint-examples/java-example/pom.xml, flexpoint-examples/pom.xml, flexpoint-examples/spring-boot-example/pom.xml, flexpoint-plugin-all/flexpoint-plugin-audit/pom.xml, flexpoint-plugin-all/flexpoint-plugin-metrics/pom.xml, flexpoint-plugin-all/flexpoint-plugin-observability/pom.xml, flexpoint-plugin-all/flexpoint-plugin-resilience/pom.xml, flexpoint-plugin-all/flexpoint-plugin-retry/pom.xml, flexpoint-plugin-all/flexpoint-plugin-selector-ab/pom.xml, flexpoint-plugin-all/flexpoint-plugin-selector-cache/pom.xml, flexpoint-plugin-all/flexpoint-plugin-selector-code-version/pom.xml, flexpoint-plugin-all/flexpoint-plugin-selector-code/pom.xml, flexpoint-plugin-all/flexpoint-plugin-selector-gray/pom.xml, flexpoint-plugin-all/flexpoint-plugin-selector-tag/pom.xml, flexpoint-plugin-all/flexpoint-plugin-selector-tenant/pom.xml, flexpoint-plugin-all/flexpoint-plugin-selector-weight/pom.xml, flexpoint-plugin-all/flexpoint-plugin-slowcall/pom.xml, flexpoint-plugin-all/pom.xml, flexpoint-spring/pom.xml, flexpoint-springboot/pom.xml, flexpoint-test/pom.xml, pom.xml
dependency_bot_commit_share0
已排除计分(无数据或不适用):OpenSSF Scorecard:Pinned-Dependencies。 其余权重已重新归一化。
评分方式
45/45可类型检查的代码 — Java(静态类型)
55/55可控的文件大小 — 采样的 181 个源文件中有 0 个超过 60KB
所用输入
primary_languageJava
largest_source_bytes21,202
source_files_sampled181
oversized_source_files0

机器可读接口

40存在风险
评分方式
0/40API 模式(OpenAPI/GraphQL/proto)
0/20MCP 服务器
40/40可运行示例 — example
所用输入
example_dirsexample
has_mcp_signal
api_schema_files

关键数据

9GitHub 星标
2贡献者
71最近 12 个月提交数
7距最近推送天数
2发布版本数
1巴士系数(bus factor)
0开放议题
Maven, npm软件包生态系统数

数据采集警告

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • Could not fetch maven package 'io.github.xiangganluo:flexpoint-test' from its registry
  • GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

更多细节

Star 与 Fork 历史 0 ★ / 2 ⇿
0Star
2Fork

每颗 star 和每个 fork 的添加时间,来自 GitHub 并按天汇总。累计增长位于其构成来源——每日新增——的正上方,二者可相互对照:稳定的自然增长与短暂的突增形态截然不同。当这一差别可被衡量时,它会作为增长真实性予以报告。

111222212025-062025-062025-06
OpenSSF Scorecard 4.3 / 10
4.3综合

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

10Binary-Artifactsno binaries found in the repo
不适用Branch-Protectioninternal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md
不适用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
3Contributorsproject has 1 contributing companies or organizations -- score normalized to 3
不适用Dangerous-Workflowno workflows found
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
不适用Packagingpackaging workflow not detected
不适用Pinned-Dependenciesno dependencies found
0SASTno SAST tool detected
0Security-Policysecurity policy file not detected
不适用Signed-Releasesno releases found
不适用Token-PermissionsNo tokens found
10Vulnerabilities0 existing vulnerabilities detected
直接依赖 76
注册表软件包版本约束清单文件
Mavenorg.slf4j:slf4j-apiflexpoint-common/pom.xml
Mavencn.hutool:hutool-allflexpoint-common/pom.xml
Mavencom.alibaba:transmittable-thread-localflexpoint-common/pom.xml
Mavenio.github.xiangganluo:flexpoint-commonflexpoint-core/pom.xml
Mavenorg.projectlombok:lombokflexpoint-core/pom.xml
Mavenio.github.xiangganluo:flexpoint-common${project.version}flexpoint-dependencies-bom/pom.xml
Mavenio.github.xiangganluo:flexpoint-core${project.version}flexpoint-dependencies-bom/pom.xml
Mavenio.github.xiangganluo:flexpoint-spring${project.version}flexpoint-dependencies-bom/pom.xml
Mavenio.github.xiangganluo:flexpoint-springboot${project.version}flexpoint-dependencies-bom/pom.xml
Mavenio.github.xiangganluo:flexpoint-test${project.version}flexpoint-dependencies-bom/pom.xml
Mavenio.github.xiangganluo:flexpoint-plugin-selector-code${project.version}flexpoint-dependencies-bom/pom.xml
Mavenio.github.xiangganluo:flexpoint-plugin-selector-code-version${project.version}flexpoint-dependencies-bom/pom.xml
Mavenio.github.xiangganluo:flexpoint-plugin-observability${project.version}flexpoint-dependencies-bom/pom.xml
Mavenio.github.xiangganluo:flexpoint-plugin-selector-tag${project.version}flexpoint-dependencies-bom/pom.xml
Mavenio.github.xiangganluo:flexpoint-plugin-selector-gray${project.version}flexpoint-dependencies-bom/pom.xml
Mavenio.github.xiangganluo:flexpoint-plugin-selector-ab${project.version}flexpoint-dependencies-bom/pom.xml
Mavenio.github.xiangganluo:flexpoint-plugin-selector-weight${project.version}flexpoint-dependencies-bom/pom.xml
Mavenio.github.xiangganluo:flexpoint-plugin-selector-tenant${project.version}flexpoint-dependencies-bom/pom.xml
Mavenio.github.xiangganluo:flexpoint-plugin-selector-cache${project.version}flexpoint-dependencies-bom/pom.xml
Mavenio.github.xiangganluo:flexpoint-plugin-audit${project.version}flexpoint-dependencies-bom/pom.xml
Mavenio.github.xiangganluo:flexpoint-plugin-slowcall${project.version}flexpoint-dependencies-bom/pom.xml
Mavenio.github.xiangganluo:flexpoint-plugin-metrics${project.version}flexpoint-dependencies-bom/pom.xml
Mavenio.github.xiangganluo:flexpoint-plugin-retry${project.version}flexpoint-dependencies-bom/pom.xml
Mavenio.github.xiangganluo:flexpoint-plugin-resilience${project.version}flexpoint-dependencies-bom/pom.xml
Mavenorg.projectlombok:lombok${lombok.version}flexpoint-dependencies-bom/pom.xml
Mavenorg.slf4j:slf4j-api${slf4j.version}flexpoint-dependencies-bom/pom.xml
Mavencglib:cglib${cglib.version}flexpoint-dependencies-bom/pom.xml
Mavenorg.springframework.boot:spring-boot-dependencies${spring-boot-dependencies.version}flexpoint-dependencies-bom/pom.xml
Mavenio.netty:netty-bom${netty.version}flexpoint-dependencies-bom/pom.xml
Mavenorg.mockito:mockito-inline${mockito-inline.version}flexpoint-dependencies-bom/pom.xml
Mavencom.github.fppt:jedis-mock${jedis-mock.version}flexpoint-dependencies-bom/pom.xml
Mavenuk.co.jemos.podam:podam${podam.version}flexpoint-dependencies-bom/pom.xml
Mavenorg.mapstruct:mapstruct${mapstruct.version}flexpoint-dependencies-bom/pom.xml
Mavenorg.mapstruct:mapstruct-jdk8${mapstruct.version}flexpoint-dependencies-bom/pom.xml
Mavenorg.mapstruct:mapstruct-processor${mapstruct.version}flexpoint-dependencies-bom/pom.xml
Mavencn.hutool:hutool-all${hutool-5.version}flexpoint-dependencies-bom/pom.xml
Mavenorg.dromara.hutool:hutool-extra${hutool-6.version}flexpoint-dependencies-bom/pom.xml
Mavencommons-io:commons-io${commons-io.version}flexpoint-dependencies-bom/pom.xml
Mavenorg.apache.commons:commons-compress${commons-compress.version}flexpoint-dependencies-bom/pom.xml
Mavenorg.apache.tika:tika-core${tika-core.version}flexpoint-dependencies-bom/pom.xml
Mavencom.alibaba:fastjson${fastjson.version}flexpoint-dependencies-bom/pom.xml
Mavencom.google.guava:guava${guava.version}flexpoint-dependencies-bom/pom.xml
Mavencom.alibaba:transmittable-thread-local${transmittable-thread-local.version}flexpoint-dependencies-bom/pom.xml
Mavencommons-net:commons-net${commons-net.version}flexpoint-dependencies-bom/pom.xml
Mavencom.jcraft:jsch${jsch.version}flexpoint-dependencies-bom/pom.xml
Mavenorg.lionsoul:ip2region${ip2region.version}flexpoint-dependencies-bom/pom.xml
Mavenorg.jsoup:jsoup${jsoup.version}flexpoint-dependencies-bom/pom.xml
Mavenorg.reflections:reflections${reflections.version}flexpoint-dependencies-bom/pom.xml
Mavencom.dtflys.forest:forest-spring-boot3-starter${forest.version}flexpoint-dependencies-bom/pom.xml
Mavenio.github.xiangganluo:flexpoint-coreflexpoint-spring/pom.xml
Mavenorg.springframework:spring-contextflexpoint-spring/pom.xml
Mavenorg.springframework:spring-coreflexpoint-spring/pom.xml
Mavenorg.projectlombok:lombokflexpoint-spring/pom.xml
Mavenorg.slf4j:slf4j-apiflexpoint-spring/pom.xml
Mavenio.github.xiangganluo:flexpoint-springflexpoint-springboot/pom.xml
Mavenio.github.xiangganluo:flexpoint-coreflexpoint-springboot/pom.xml
Mavenio.github.xiangganluo:flexpoint-plugin-selector-weightflexpoint-springboot/pom.xml
Mavenio.github.xiangganluo:flexpoint-plugin-auditflexpoint-springboot/pom.xml
Mavenio.github.xiangganluo:flexpoint-plugin-slowcallflexpoint-springboot/pom.xml
Mavenio.github.xiangganluo:flexpoint-plugin-metricsflexpoint-springboot/pom.xml
Mavenio.github.xiangganluo:flexpoint-plugin-retryflexpoint-springboot/pom.xml
Mavenio.github.xiangganluo:flexpoint-plugin-resilienceflexpoint-springboot/pom.xml
Mavenio.github.xiangganluo:flexpoint-plugin-observabilityflexpoint-springboot/pom.xml
Mavenio.github.xiangganluo:flexpoint-plugin-selector-codeflexpoint-springboot/pom.xml
Mavenio.github.xiangganluo:flexpoint-plugin-selector-code-versionflexpoint-springboot/pom.xml
Mavenorg.projectlombok:lombokflexpoint-springboot/pom.xml
Mavenorg.slf4j:slf4j-apiflexpoint-springboot/pom.xml
Mavenio.github.xiangganluo:flexpoint-coreflexpoint-test/pom.xml
Mavenio.github.xiangganluo:flexpoint-springflexpoint-test/pom.xml
Mavenio.github.xiangganluo:flexpoint-springbootflexpoint-test/pom.xml
Mavenio.github.xiangganluo:flexpoint-plugin-selector-codeflexpoint-test/pom.xml
Mavenio.github.xiangganluo:flexpoint-plugin-selector-code-versionflexpoint-test/pom.xml
Mavenio.github.xiangganluo:flexpoint-plugin-observabilityflexpoint-test/pom.xml
Mavenorg.projectlombok:lombokflexpoint-test/pom.xml
Mavenorg.slf4j:slf4j-apiflexpoint-test/pom.xml
Mavenio.github.xiangganluo:flexpoint-dependencies-bom${project.version}pom.xml
全部依赖 未采集

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

依赖安全公告 0

安装 maven:io.github.xiangganluo:flexpoint-core@2.0.0 会引入 5 个包(直接与传递):其中 0 个存在已知公告,0 个为直接依赖。

没有已知公告影响已评估的依赖。

公告表示依赖图中记录的版本落入某条公告的受影响范围。可达性未经分析,且依赖图包含开发与测试的版本固定——某项发现可能只涉及工具链而非交付的软件。

原始 JSON 报告 机器可读
{
  "data": {
    "repo": {
      "topics": [],
      "is_fork": false,
      "size_kb": 2025,
      "has_wiki": true,
      "homepage": "https://flex-point.pages.dev/",
      "languages": {
        "Java": 458599
      },
      "pushed_at": "2026-07-17T04:58:51Z",
      "created_at": "2025-06-26T09:52:01Z",
      "owner_type": "User",
      "updated_at": "2026-07-17T04:58:55Z",
      "description": "Flex Point 是一款面向应用的轻量级扩展点(Ext Point)框架,为多业务场景下的「能力解耦、动态路由、灵活扩展」而生。它把「同一能力的不同业务实现」抽象为扩展点,由选择器在运行期按上下文选中目标实现,让业务代码只依赖接口、路由决策收敛在框架内。",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "Apache-2.0",
      "default_branch": "master",
      "license_spdx_raw": "Apache-2.0",
      "primary_language": "Java",
      "significant_languages": [
        "Java"
      ]
    },
    "owner": {
      "blog": "https://github.com/xiangganLuo",
      "name": null,
      "type": "User",
      "login": "xiangganLuo",
      "company": "dp",
      "location": "China  Changsha",
      "followers": 4,
      "avatar_url": "https://avatars.githubusercontent.com/u/104347635?v=4",
      "created_at": "2022-04-25T07:36:20Z",
      "is_verified": null,
      "public_repos": 26,
      "account_age_days": 1551
    },
    "license": {
      "state": "standard",
      "spdx_id": "Apache-2.0",
      "raw_spdx": "Apache-2.0",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "2.0.0",
          "kind": "major",
          "published_at": "2026-07-17T02:38:51Z"
        },
        {
          "tag": "1.0.0",
          "kind": "major",
          "published_at": "2025-11-21T06:31:29Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "66deba3a600aff6418a1c0bd1236af7438256bdf",
          "body": "- getExtMetrics 无 MetricsProvider 时返回空指标(EmptyExtMetrics)而非 null,与 getAllExtMetrics 对齐\n- 插件 enable 从 FAILED/DESTROYED 重启前先防御式清理,避免重复注册导致永久卡死\n- 事件热路径改用 subscribe/unsubscribe 时预排序快照,去掉每次 publish 的排序\n- 扩展点代理按 (extType, ability) 身份缓存;拦截链改由 Supplier 每次 invoke 读取当前快照\n  (保留运行期拦截器动态增删);DefaultInterceptorRegistry 预排序快照 O(1) 返回\n- getLoadReport 改为 synchronized 返回不可变快照\n- findAbilitysByCode/ByCodeAndTags 改用 Objects.equals + null 键校验,消除 NPE\n- 新增针对性单测:空指标/插件恢复/事件优先级/代理缓存动态拦截器/报告快照/NPE 安全",
          "is_bot": false,
          "headline": "fix(core): 修复代码审查发现的 6 项问题(正确性+性能)",
          "author_name": "luoxianggan",
          "author_login": null,
          "committed_at": "2026-07-17T04:58:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3bcb8b370d0bfc1c824aacb911fc1523daf918c6",
          "body": null,
          "is_bot": false,
          "headline": "build: 版本回滚为下一개发版 2.0.1-SNAPSHOT(2.0.0 已发布 Maven Central)",
          "author_name": "luoxianggan",
          "author_login": null,
          "committed_at": "2026-07-17T02:51:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4f25b9c61e721f15879e34e16fb398ae98af15cb",
          "body": "… warnings 字段解析崩溃)",
          "is_bot": false,
          "headline": "build(release): 升级 central-publishing-maven-plugin 0.7.0 -> 0.11.0(修复…",
          "author_name": "luoxianggan",
          "author_login": null,
          "committed_at": "2026-07-17T02:38:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "62b4bf0e8ce2b9753ed882b104cfebaa1d4cae85",
          "body": "- 删除标准上下文 FlexPointContext 的所有文档表述;改为「选择器运行期数据由业务方\n  实现命名 Resolver 提供、数据来源由业务自维护」。\n- 属性装配范围:13 → 9(weight/audit/slowcall/metrics/retry/resilience/observability/\n  code/code-version);tag/gray/ab/tenant/cache 改显式 @Bean(传入 Resolver / delegate)。\n- ext.md 上下文节改为「选择器的运行期数据」;plugins-official 表/各选择器章节改写为\n  Resolver + 显式 @Bean;quickstart/springboot 示例改用业务 holder;glossary 删词条加\n  Resolver;selector.md/README/ARCHITECTURE 同步。\n- npm run docs:build 通过,全库 md 无 FlexPointContext/byLabel/相关属性残留。",
          "is_bot": false,
          "headline": "docs: 同步「移除上下文概念 + 选择器改命名 Resolver」到文档",
          "author_name": "luoxianggan",
          "author_login": null,
          "committed_at": "2026-07-17T02:20:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a102073e223b6f6432a5ac3776e04472726ca4d4",
          "body": "设计取向调整:不内置请求上下文,插件所需运行期数据一律由业务方实现接口提供\n(与 CodeSelector.CodeResolver 一致)。上下文模块留待后续规划。\n\n- 删除 flexpoint-common 的 FlexPointContext(及 common 的 lombok 依赖)。\n- tag/gray/ab/tenant/cache 选择器改为命名 Resolver 接口注入:\n  TagSelector.LabelResolver / GraySelector.GrayKeyResolver /\n  AbTestSelector.AbKeyResolver / TenantS\n[…]\n Resolver,改显式 @Bean);\n  weight 不依赖上下文,仍支持属性装配。清理 Properties/optional 依赖。\n- 重写 5 个选择器单测;删除 FlexPointContextTest;PluginsAutoConfigurationTest 用 weight 替换 tag。\n- mvn clean test 全反应堆全绿(flexpoint-test 61)。",
          "is_bot": false,
          "headline": "refactor(selector): 移除 FlexPointContext 上下文概念,选择器改用命名 Resolver 接口",
          "author_name": "luoxianggan",
          "author_login": null,
          "committed_at": "2026-07-17T02:01:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d92ff40f8eef9f3c21f8d213f71805b3f05e8364",
          "body": "请求级标准上下文属跨层横切基础设施(接入层填充、选择器读取),不隶属内核,\n移出 flexpoint-core.context → flexpoint-common.context(com.flexpoint.common.context)。\n- 新增:flexpoint-common 补 lombok 依赖 + FlexPointContext。\n- 删除:flexpoint-core 下旧文件。\n- 全量更新 13 个 java 引用 + README/quickstart/selector 文档 import + 架构文档。\n- Java 包名(业务代码)不受影响;mvn clean test 全绿。",
          "is_bot": false,
          "headline": "refactor(context): FlexPointContext 从 core 迁至 flexpoint-common",
          "author_name": "luoxianggan",
          "author_login": null,
          "committed_at": "2026-07-17T01:33:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "83bdaf4503af7456b75abf7469db454a6b0bfa5c",
          "body": null,
          "is_bot": false,
          "headline": "build(release): 修复 BOM flatten 版本属性 + oss/bom 模式产出 Central 合规 pom",
          "author_name": "luoxianggan",
          "author_login": null,
          "committed_at": "2026-07-16T12:58:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d775b69f64ddea775bbedb10abdc9a4aa78879a7",
          "body": null,
          "is_bot": false,
          "headline": "docs: groupId 同步为 io.github.xiangganluo(Maven 坐标,不含 Java 包名)",
          "author_name": "luoxianggan",
          "author_login": null,
          "committed_at": "2026-07-16T12:54:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c11b5ddb6e0fe82d09161fa0d9d1469ef822c79f",
          "body": "…entral 合规)",
          "is_bot": false,
          "headline": "build(release): groupId 改 io.github.xiangganluo + flatten 切 oss/bom(C…",
          "author_name": "luoxianggan",
          "author_login": null,
          "committed_at": "2026-07-16T12:43:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1ebf6d02ca8930cd5cebc2ffeb6953f1dc5e9409",
          "body": "maven-deploy-plugin 的 default-deploy 执行改为 phase=none 彻底解绑(<skip> 会被\n环境 profile 的属性覆盖、-Dmaven.deploy.skip 又会连 central-publishing 一起跳过)。\n如此 maven-deploy 完全不跑(不会被 rdc profile 的 altReleaseDeploymentRepository\n重定向到内网仓库),central-publishing 正常上传 Maven Central。",
          "is_bot": false,
          "headline": "build(release): 解绑标准 deploy 目标,发布仅走 central-publishing",
          "author_name": "luoxianggan",
          "author_login": null,
          "committed_at": "2026-07-16T12:22:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "db106456a213fcf0efb8e5f0e9f05929036c457b",
          "body": "- examples/test:显式 central-publishing skipPublishing=true(该插件不认\n  maven.deploy.skip,上次误把 examples 算进 Central 包导致校验失败)。\n- 根 pom maven-deploy-plugin skip=true:发布统一走 central-publishing,\n  禁用标准 deploy,避免被环境的部署重定向推到其它仓库。",
          "is_bot": false,
          "headline": "build(release): 修正 Central 发布——排除 examples/test + 禁用标准 deploy",
          "author_name": "luoxianggan",
          "author_login": null,
          "committed_at": "2026-07-16T12:08:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f47b230a7276a5fb8189042b6b8ca72a8b3ae154",
          "body": "…ated\n\n受控发布:deploy 仅上传到 Central Portal 并等待校验通过,最终 Publish 由人工在\n网页确认,避免自动不可逆发布。",
          "is_bot": false,
          "headline": "build(pom): central-publishing 显式 autoPublish=false + waitUntil=valid…",
          "author_name": "luoxianggan",
          "author_login": null,
          "committed_at": "2026-07-16T11:50:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f6175ed92fdb2b3f795cb79e3e3715cba3269eb9",
          "body": "- 根 pom / flexpoint-dependencies-bom 的 revision: 2.0.0-SNAPSHOT -> 2.0.0。\n- 同步架构文档版本声明。\n- 已通过签名冒烟:mvn clean verify -Dgpg.skip=false 全反应堆 BUILD SUCCESS,\n  各发布模块产出 pom/jar/sources/javadoc 的 .asc 签名,满足 Maven Central 要求。",
          "is_bot": false,
          "headline": "release: 版本切为正式版 2.0.0(去除 SNAPSHOT)",
          "author_name": "luoxianggan",
          "author_login": null,
          "committed_at": "2026-07-16T11:44:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cf74165eb132eab879bd6e3cdd5740bdd84bebfe",
          "body": "connection/developerConnection 改为标准 scm:git:...git 形式,符合 Maven 约定与\nCentral 校验预期。已通过签名冒烟验证:mvn clean verify -Dgpg.skip=false 全反应堆\nBUILD SUCCESS,各发布模块均产出 pom/jar/sources/javadoc 的 .asc 签名。",
          "is_bot": false,
          "headline": "build(pom): 规范 scm 连接为 scm:git 形式(中央仓库配置补齐)",
          "author_name": "luoxianggan",
          "author_login": null,
          "committed_at": "2026-07-16T11:36:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "949c97dbe7ccce3bb907bca31a42b5a62ab1b0d9",
          "body": "- plugins-official.md:明确 13 个插件支持 flexpoint.plugins.<name>.enabled=true\n  属性装配;code/code-version 另需 CodeResolver/CodeVersionResolver Bean\n  (@ConditionalOnBean),code-version 属性前缀 kebab;observability 经 ObjectProvider\n  可选注入 AlertStrategy/MetricsCollector。\n- 缓存选择器 cache 改为「显式 @Bean」:说明装饰器同名注册与 FlexPointSpringSelectorRegister\n  的冲突原因,示例用 3 参构造指定独立 name 规避。\n- springboot.md:装配途径改为「属性开关(13) + 声明 @Bean(cache/覆盖)」;删除旧的\n  「仅 10 个 / 4 个需 @Bean」过时表述。\n- npm run docs:build 通过。",
          "is_bot": false,
          "headline": "docs(site): 同步插件装配口径为 13 属性装配 + cache 显式 @Bean",
          "author_name": "luoxianggan",
          "author_login": null,
          "committed_at": "2026-07-16T11:08:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "69772cf7c0aca867751963c2a181d8719fbef3bf",
          "body": "throwsCallTimeoutWhenProceedExceedsTimeout 原用 sleep(500) vs timeout(100) 的\n墙钟竞速:主线程在 submit 与 future.get 之间若发生 GC/调度停顿,任务可能已完成,\nget(100ms) 立即返回值,偶发断言失败(未抛异常)。\n\n改为让任务阻塞在测试控制的 CountDownLatch 上:无论机器快慢或主线程停顿,\nfuture.get(timeout) 必定超时,结果确定;断言后 countDown 释放任务避免线程悬挂。\n用例耗时同时从 >0.5s 降至 ~0.14s。3 次连续运行全绿。",
          "is_bot": false,
          "headline": "test(resilience): 加固超时用例,消除计时抖动(flaky)",
          "author_name": "luoxianggan",
          "author_login": null,
          "committed_at": "2026-07-16T11:07:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f87c0e06f3cc12684b4c61d5c501bde95ccfe3fb",
          "body": "- YAML 示例补 3 个新纳入「配置即装配」的插件;标注 code/code-version 需 Resolver Bean。\n- 明确 13 个插件支持属性装配,cache 走显式 @Bean(装饰器同名冲突原因)。",
          "is_bot": false,
          "headline": "docs(readme): 官方插件配置示例补齐 observability/code/code-version",
          "author_name": "luoxianggan",
          "author_login": null,
          "committed_at": "2026-07-16T10:56:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "84bda9cfb009d6a0d07bf29b3b46dc91c31e9cbc",
          "body": "将剩余可安全属性装配的官方插件接入 FlexPointPluginsAutoConfiguration:\n- observability:flexpoint.plugins.observability.enabled=true;经 ObjectProvider\n  收集容器内 AlertStrategy / MetricsCollector(可无)。\n- code:需业务方 CodeSelector.CodeResolver Bean(@ConditionalOnBean)。\n- code-version:需 CodeVersionSelector.CodeVersionResolver Be\n[…]\n,纯属性装配必然导致选择器名重复冲突;内置选择器也非 Selector Bean 无法\n作 delegate。故 cache 请以显式 @Bean(自定 delegate 与名称)方式使用,已在 auto-config\nJavadoc 说明。至此 13 个官方插件支持属性装配,cache 走显式 @Bean。\n\nmvn clean test 全反应堆全绿(flexpoint-test 65 项)。",
          "is_bot": false,
          "headline": "feat(springboot): observability/code/code-version 纳入「配置即装配」",
          "author_name": "luoxianggan",
          "author_login": null,
          "committed_at": "2026-07-16T10:55:04Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1d50ebd6021ac9be0668283de14df0a521602740",
          "body": "- guide/contributing.md:贡献步骤(fork/clone/分支/PR/review)+ PR 原则 + 本地构建/提交规范。\n- guide/contact.md:微信二维码(public/weixin.png)+ 邮箱 + GitHub/Issues。\n- sidebar 与 nav 新增「社区」组(贡献指南 / 联系作者)。\n- npm run docs:build 通过。",
          "is_bot": false,
          "headline": "docs(site): 新增贡献指南与联系作者页",
          "author_name": "luoxianggan",
          "author_login": null,
          "committed_at": "2026-07-16T10:24:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b626cbd4a24c0bb77c82a9f68793da2e87456229",
          "body": "- 首页动态效果:Hero 渐变标题流动/背景光晕、特性卡 scroll-reveal + hover,\n  明暗色兼容、prefers-reduced-motion 降级、无 FOUC(Layout.vue + theme/custom.css)。\n- core 详解并改名/重构:guide/ext.md(“调用管线与拦截器”→“扩展点”,ext 核心页:定义/注册/查找/\n  调用管线/拦截器 SPI/内置事件埋点/标准上下文)、selector.md(“选择器与决策解释”→“选择器”)、\n  observability.md(“监控与可观测”→“可观测”,含事件体系+监控体系+配置表);\n[…]\nofficial.md 扩为 14 插件完整参考(artifactId/pluginId/构造参数/配置/依赖+YAML/@Bean 示例)。\n- 事实修正:属性「配置即装配」适用 10 个插件;code/code-version/cache/observability 需 @Bean;\n  框架注解仅 @FpSelector/@FpExt。npm run docs:build 通过(11 页)。",
          "is_bot": false,
          "headline": "docs(site): 首页动效 + core 详解 + 术语表 + 插件完整参考 + 名词调整",
          "author_name": "luoxianggan",
          "author_login": null,
          "committed_at": "2026-07-16T10:07:52Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "efd1d932a687cad7090fc787f8b2cecb7cc0c7dc",
          "body": "重写 ARCHITECTURE_V1.md 对齐当前实现:内核 SPI/机制与插件边界、core 各子模块(ext/selector/plugin/event/monitor/context/拦截器)、\n调用管线(拦截链→内置事件拦截器→反射)、官方插件全景(每插件一模块)、配置即装配、新 SPI 示例(SelectionResult/AbstractSelector/FlexPointContext)与测试体系。",
          "is_bot": false,
          "headline": "docs(arch): 重新同步架构文档至 2.0",
          "author_name": "luoxianggan",
          "author_login": null,
          "committed_at": "2026-07-16T09:38:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ee484b1900d4fec96b5b2bf11703738e39a87bfa",
          "body": null,
          "is_bot": false,
          "headline": "docs(static): 移除 无用 文档",
          "author_name": "luoxianggan",
          "author_login": null,
          "committed_at": "2026-07-16T09:33:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5812fa34e1420676b12d70b980b2e9c22b412013",
          "body": "- 模块结构补全 flexpoint-plugin-all 下 14 个插件模块(按选择器/观测/行为分类)。\n- 新增「官方插件(配置即装配)」章节:flexpoint.plugins.* 配置示例 + 插件全景表。\n- 自定义选择器示例更新为新 SPI(AbstractSelector.filter + FlexPointContext)。\n- 修正监控示例 API(getExtMetrics(ability)/getAverageResponseTime)并说明依赖 observability 插件。\n- 文档区增加官网(VitePress,docs/)入口。",
          "is_bot": false,
          "headline": "docs(readme): 同步 2.0 内容",
          "author_name": "luoxianggan",
          "author_login": null,
          "committed_at": "2026-07-16T09:29:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "88648f18be7758457acf58549480b22aa536548c",
          "body": "- 技术栈:VitePress 1.6.4(Vue)+ vitepress-plugin-mermaid + 本地全文搜索,中文 UI,品牌蓝。\n- index.md 落地页(hero + 6 features + Maven 坐标);guide/:简介/快速开始/核心概念/选择器与决策解释/\n  调用管线与拦截器/监控与可观测/插件体系/官方插件模块/Spring Boot 接入。\n- 内容与最新事实一致(getId、SelectionResult、内置 EventPublishingInterceptor、每插件独立模块)。\n- node_modules/、.vitepress/dist/、.vitepress/cache/ 已 gitignore(不入库)。\n- 本地 npm run docs:build 通过(10 页)。",
          "is_bot": false,
          "headline": "docs(site): 新增官网首页与文档(VitePress)",
          "author_name": "luoxianggan",
          "author_login": null,
          "committed_at": "2026-07-16T09:25:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b17e54450d0a664ddebfe4945d7a8a0f68cecf29",
          "body": "root pom 与 dependencies-bom 的 revision 改为 2.0.0-SNAPSHOT;正式发布时再去除 -SNAPSHOT。",
          "is_bot": false,
          "headline": "build: 版本回退为 2.0.0-SNAPSHOT(当前处于测试阶段)",
          "author_name": "luoxianggan",
          "author_login": null,
          "committed_at": "2026-07-16T09:21:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0e3c5668435fbd1bafe9110bd4c1ca63c2f8b935",
          "body": "- context/FlexPointContextTest:ThreadLocal 生命周期、标准字段/labels/attributes、clear/set。\n- interceptor/InterceptorPipelineTest:注册表按 order 排序、可重入链(重试)、经 FlexPoint 的\n  around 集成(拦截器环绕事件终端,重试产生 3 次调用 + 2 FAIL/1 SUCCESS 事件)。\n- selector/SelectorRegistryTest:getSelectorNames/size 可观测、资源级唯一。\n- event/DecisionExplanationEventTest:EXT_SELECTED/EXT_SELECTION_FAILED 携带决策解释属性。\n- springboot/PluginsAutoConfigurationTest:flexpoint.plugins.* 配置装配集成(含默认关闭)。\n- flexpoint-test 增加 selector-tag/retry 测试依赖。",
          "is_bot": false,
          "headline": "test(core): 补充上下文/拦截器/选择器/事件/配置装配单测",
          "author_name": "luoxianggan",
          "author_login": null,
          "committed_at": "2026-07-16T09:21:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a5f5d7af5f045f0f9e7da311be54b74927958c8e",
          "body": "- FlexPointPluginsProperties:flexpoint.plugins.* 属性(各插件 enabled + 参数)。\n- FlexPointPluginsAutoConfiguration:每插件独立嵌套 @Configuration + 类级 @ConditionalOnClass\n  + @ConditionalOnProperty,缺失插件类时整体跳过;装配出的 Plugin Bean 由核心自动配置收集进 FlexPoint。\n- FlexPointAutoConfiguration 导入插件自动配置;springboot 以 optional 依赖引入各插件(消费方按需引入模块)。\n- 缓存选择器需 delegate,走编程式,不做属性装配。",
          "is_bot": false,
          "headline": "feat(springboot): 官方插件「配置即装配」自动配置",
          "author_name": "luoxianggan",
          "author_login": null,
          "committed_at": "2026-07-16T09:20:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "aee7465f88e056b986e9ea45f3e2a18adae10ce3",
          "body": "选择器(读标准上下文 FlexPointContext,配置即路由):\n- selector-tag 标签、selector-gray 灰度(百分比)、selector-ab A/B 分流、\n  selector-weight 权重、selector-tenant 租户(带回退)、selector-cache 缓存(装饰器)。\n观测/治理(事件订阅/监控链):\n- audit 审计日志、slowcall 慢调用告警、metrics 指标汇总。\n行为增强(调用拦截器 SPI):\n- retry 重试、resilience 超时+熔断(CircuitBreaker 100/Retry 300/Timeout 400)。\n\n- 每个插件为 flexpoint-plugin-all 下独立子模块(getId + 生命周期),含各自单测(全部通过)。\n- 父 pom modules 与 dependencies-bom 已登记全部插件。",
          "is_bot": false,
          "headline": "feat(plugins): 新增 11 个官方插件,每插件独立模块",
          "author_name": "luoxianggan",
          "author_login": null,
          "committed_at": "2026-07-16T09:18:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ab7c3e701c16035b06804dff1f3ca74f7e455827",
          "body": "- maven-gpg-plugin 与 central-publishing-maven-plugin 放入主 <build>(gpg 绑定 verify,\n  本地非发布构建可 -Dgpg.skip=true);central publishingServerId=central + tokenAuth。\n- 固定 maven-surefire-plugin 版本(发布卫生)。",
          "is_bot": false,
          "headline": "build: Maven 中央仓库发布插件对齐主构建 + 固定 surefire 版本",
          "author_name": "luoxianggan",
          "author_login": null,
          "committed_at": "2026-07-16T09:17:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "febc56ecf4afaca53e32b53890ccb2004c7e08ef",
          "body": "- 版本:root pom 与 dependencies-bom 的 revision 升级为 2.0.0(发布版,非 SNAPSHOT)。\n- 新增 release profile(mvn clean deploy -Prelease):\n  - maven-gpg-plugin 对构件 GPG 签名(Central 强制要求);\n  - central-publishing-maven-plugin 发布到 Central Portal(publishingServerId=central, autoPublish)。\n- sources/javadoc jar 已在默认 build 生成\n[…]\n- test/examples 模块设 maven.deploy.skip=true,不发布到中央仓库。\n- 元数据(name/description/url/licenses/developers/scm)已在根 pom 提供并被各模块继承。\n\n发布前置(接入方自备):settings.xml 配置 server id=central 的 Portal token;本地配置并上传 GPG 公钥。",
          "is_bot": false,
          "headline": "build: 升级版本至 2.0.0 并补齐 Maven 中央仓库发布配置",
          "author_name": "luoxianggan",
          "author_login": null,
          "committed_at": "2026-07-16T08:20:54Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "91b5750fd94ad93ddcfe5535882534c702ee4d7f",
          "body": "- EXT_CORE_REQUIREMENTS.md:扩展点核心模块(定义/注册/调用管线+拦截器 SPI)需求与设计。\n- SELECTOR_CORE_OPTIMIZATION.md:选择器内核可优化点梳理(P1/P5/P6/P7 已实施,P2/P3/P4/P8 记录)。",
          "is_bot": false,
          "headline": "docs: 沉淀 ext 核心需求与 selector 内核优化文档",
          "author_name": "luoxianggan",
          "author_login": null,
          "committed_at": "2026-07-16T08:16:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7dd49d93377332131a865fcbff05e096da92f672",
          "body": "调用拦截器 SPI(around):\n- 新增 ext.interceptor:ExtInvocation / ExtInvocationInterceptor / ExtInvocationTerminal /\n  InterceptorRegistry / DefaultInterceptorRegistry / 可重入链 DefaultExtInvocation。\n- FlexPoint/Builder/PluginContext/DefaultPluginContext/DefaultPluginManager 接线,\n  拦截器注册表由 Builder 统一创建并被插件与 FlexP\n[…]\n不在此抛异常,由 FlexPoint 决定);\n- SelectorRegistry 增加 getSelectorNames/size 可观测;\n- EventDispatcher 选择成功/失败事件携带决策解释(decisionExplanation 属性)。\n\n配套更新全部测试选择器与 java-example 自定义选择器至新 SPI;ExtUtil 归入 ext 包。全量测试通过(48)。",
          "is_bot": false,
          "headline": "feat(core): 调用拦截器 SPI + 事件埋点拦截器化 + 选择器 SelectionResult 重构",
          "author_name": "luoxianggan",
          "author_login": null,
          "committed_at": "2026-07-16T08:16:09Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2c6d168a11b93773ccc8a5c0ec84b6257e7b596d",
          "body": "新增 com.flexpoint.core.context.FlexPointContext(线程级持有 tenantId/appCode/version/uid/labels/attributes),\n供路由选择器无需业务 Resolver 即可读取上下文,配合接入层入口填充实现「配置即装配」。",
          "is_bot": false,
          "headline": "feat(core): 新增标准请求上下文 FlexPointContext",
          "author_name": "luoxianggan",
          "author_login": null,
          "committed_at": "2026-07-16T08:15:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0f7d43344464b6faeb5f9fdcd6977027daceb1d9",
          "body": "在不改变行为的前提下,为各模块关键路径补充 debug 级日志,便于问题定位:\n\n- core:\n  - FlexPoint 查找入口/命中计数/回退/代理创建/关闭流程;\n  - FlexPointBuilder 构建与插件装配摘要;DefaultPluginManager 注册/装配/停止;\n  - 注册中心读取快照与实现数;选择器查找命中;AbstractSelector 过滤命中/歧义;\n  - EventDispatcher 同步/异步发布、DefaultEventBus 路由与订阅、FilterEventRouter 匹配数;\n  - 监控链 record/handler 变更、A\n[…]\n plugin-all:选择器 resolve/过滤、插件 init/start/stop、Observability 装配、指标累计/告警分发/事件转发。\n- spring/springboot:@FpExt 代理注入与调用、扩展点/选择器 Bean 扫描注册、核心自动配置收集到的插件明细。\n\n耗时/循环内日志均以参数化或 isDebugEnabled 守护,避免非 debug 级别的额外开销。",
          "is_bot": false,
          "headline": "chore(log): 全模块补充详细 debug 日志",
          "author_name": "luoxianggan",
          "author_login": null,
          "committed_at": "2026-07-16T07:00:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f9ab520f65900938be825ddb36e04d6ad7bc4dfb",
          "body": "- README:模块结构增加 flexpoint-plugin-all;CodeVersionSelector import 路径与依赖说明更新。\n- ONE_PAGER / PLUGIN_TEMPLATE:按极简模型重写(getId、装配=注册序、统一降级、模块布局)。\n- 新增 PLUGIN_REFACTOR_2026-07-16.md 变更说明与迁移指引。",
          "is_bot": false,
          "headline": "docs: 更新插件体系简化与模块化文档",
          "author_name": "luoxianggan",
          "author_login": null,
          "committed_at": "2026-07-16T06:35:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4026fccb24377f952b26a1ebac165d7284a171e9",
          "body": "- 短路 Object 方法(toString/hashCode/equals):直接转发,不再产生埋点噪声事件。\n- 收敛计时与异常处理为清晰结构,保留 INVOKE_BEFORE/SUCCESS/FAIL/EXCEPTION 语义\n  (FAIL=业务异常解包 ITE,EXCEPTION=框架/反射错误)。\n- 保留 setAccessible(true):扩展点实现类可能为非 public 类,反射调用 public 接口方法需放开可访问性。",
          "is_bot": false,
          "headline": "refactor(core): 重构扩展点调用代理 EventPublisherInvocationHandler",
          "author_name": "luoxianggan",
          "author_login": null,
          "committed_at": "2026-07-16T06:35:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "05e66dbdee6a890a9f7f82d9ff25013f8db931e3",
          "body": "BREAKING CHANGE: 插件模型移除 dependencies/order/version/apiVersion/critical/capabilities,\nPlugin 接口由 getDescriptor() 改为 getId();官方插件从 flexpoint-core 迁出为独立模块。\n\n核心精简(flexpoint-core):\n- Plugin 改用 String getId();删除 PluginDescriptor/Validator/Capability/Dependency/\n  DependencyResolver 及 PluginDependencyExcep\n[…]\n登记新模块。\n\n消费方重连:\n- flexpoint-test 依赖 3 个插件模块;更新/重写测试,删除依赖/顺序/critical/descriptor 相关用例,\n  新增 PluginManagerBasicsTest(id 唯一/资源级唯一/统一降级/注册序)。\n- examples(java/spring-boot) 引入选择器插件依赖并改 import;自定义插件改 getId()。",
          "is_bot": false,
          "headline": "refactor(plugin)!: 精简插件模型并将官方插件独立成模块",
          "author_name": "luoxianggan",
          "author_login": null,
          "committed_at": "2026-07-16T06:34:45Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a3e50dceab6416dd91f0fb1fb770676b9cd750f3",
          "body": null,
          "is_bot": false,
          "headline": "cc",
          "author_name": "luoxianggan",
          "author_login": null,
          "committed_at": "2026-07-16T06:09:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5a622c4de011868de685a95797a6aaf9b85609a1",
          "body": null,
          "is_bot": false,
          "headline": "del CORE_REVIEW_2026-07-16.md",
          "author_name": "luoxianggan",
          "author_login": null,
          "committed_at": "2026-07-16T06:08:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ed787b551e7175d4ddcdc4684ddc731757009c79",
          "body": "- Phase B:勾选回退语义、F1 文档、F2 示例及验收;README 增补本轮进展。\n- CORE_REVIEW:将\"findAbility 事件重复/矛盾\"标注为已修复(2026-07-16)。",
          "is_bot": false,
          "headline": "docs: 同步 Phase B 进度(事件语义/回退/F1-F2)与 Review 修复标注",
          "author_name": "luoxianggan",
          "author_login": null,
          "committed_at": "2026-07-16T05:47:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c1ceb774c3dbed23f58e92a53e63801845fa3fa4",
          "body": "flexpoint-examples/java-example 增加 PluginExampleMain 及配套插件:\n- BasePlugin 被 GreetingSelectorPlugin 依赖,演示依赖解析与装配顺序;\n- FaultyOptionalPlugin 非关键启动失败,演示降级不阻断构建;\n- 打印加载报告(顺序/状态/失败原因);\n- 演示按上下文路由与运行期 disable/enable 选择器插件。\n\n已本地运行验证输出符合预期。",
          "is_bot": false,
          "headline": "docs(examples): 新增 Java 自定义插件示例(依赖/顺序/降级/运行期启停)",
          "author_name": "luoxianggan",
          "author_login": null,
          "committed_at": "2026-07-16T05:46:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c75ebf620dd727ba8d4525ab9a35974f310e3a80",
          "body": "事件语义收敛:\n- DefaultExtAbilityRegistry.getAllExtAbility 改为无副作用纯读取,不再发布\n  EXT_FOUND/EXT_NOT_FOUND(消除同一次查找的重复/矛盾事件,并使 getAllExt 纯读取无事件)。\n- FlexPoint.findAbility 将 SELECTOR_FOUND 移到确认选择器存在之后发布;\n  查找语义(EXT_FOUND/EXT_NOT_FOUND)由 FlexPoint 在正确节点单一发布。\n- findAbilitysByCode/findAbilitysByCodeAndTags 命中候选时统一发布一次 EXT_FOUND。\n\n路由回退:\n- 新增 FlexPoint.findAbilityByCodeAndTagsOrFallback:优先 code+tags 精确匹配,\n  未命中回退到 code-only(specific → general)。\n\n补充 EventSemanticsTest(命中/未命中/纯读取/选择器缺失)与 CodeTagsFallbackTest。",
          "is_bot": false,
          "headline": "feat(core): 收敛查找事件语义并新增 code+tags→code 回退",
          "author_name": "luoxianggan",
          "author_login": null,
          "committed_at": "2026-07-16T05:40:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b41b16304e468a0c081558f35291fe11c9b0c964",
          "body": "勾选官方插件装配生效、并发启停幂等与并发事件稳定性;README 增补运行期治理与\n测试总数(50,全绿)说明。",
          "is_bot": false,
          "headline": "docs: 同步 Phase B 进度(运行期启停 / E2 装配 / E3 并发)",
          "author_name": "luoxianggan",
          "author_login": null,
          "committed_at": "2026-07-16T05:31:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "afd38c61f1a9f1426fd14d8fd6726b42219fb3c6",
          "body": "- OfficialPluginAssemblyTest:CodeSelectorPlugin 注册选择器并生效;\n  ObservabilityPlugin 调用后指标累计;停用观测插件不影响核心选择(降级)。\n- ConcurrentPluginEventTest:ObservabilityPlugin 激活下 8 线程并发调用,\n  验证无异常且指标原子累计正确。",
          "is_bot": false,
          "headline": "test(plugin): 补充官方插件装配生效(E2)与并发事件稳定性(E3)测试",
          "author_name": "luoxianggan",
          "author_login": null,
          "committed_at": "2026-07-16T05:29:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "76fc656a3b2afe34cb78d0f34967d01ec347be00",
          "body": "此前 enable/disable 为 no-op。现落地最小可用的运行期治理:\n- disable:仅对 STARTED 生效,调用 stop() 反注册能力后置 STOPPED(不 destroy,便于重启);\n- enable:幂等;从 CREATED/FAILED/DESTROYED 进入先 init 再 start,从 STOPPED 进入仅 start;\n  失败降级为 FAILED 并记入加载报告,不抛出。\n- DefaultPluginManager 将 PluginContext 提升为字段,安装与运行期启停复用同一上下文。\n- FlexPoint 暴露 enablePlugin/disablePlugin 委托入口(未装配插件时空操作)。\n\n补充 PluginRuntimeToggleTest 覆盖启停切换、幂等与未知插件空操作。",
          "is_bot": false,
          "headline": "feat(plugin): 实现 PluginManager 运行期 enable/disable(最小可用)",
          "author_name": "luoxianggan",
          "author_login": null,
          "committed_at": "2026-07-16T05:29:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "df0632c0bee6bb7e7c6f1ee7b1ed492adcbd88a9",
          "body": "- Phase B:勾选依赖解析/冲突/资源级唯一、状态机、描述符校验、上下文边界单测;\n  决策解释 v1、一页纸/模板、文档对齐;README 增补 2026-07-16 进展摘要。\n- Phase A:勾选 B 组并发一致性冒烟与 E 组事件配置校验。",
          "is_bot": false,
          "headline": "docs: 同步 Phase A/B 进度勾选(测试补齐/生命周期/决策解释/DX 文档)",
          "author_name": "luoxianggan",
          "author_login": null,
          "committed_at": "2026-07-16T05:20:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "57742b9ad6477aaadd0a58e770932a82d7a23683",
          "body": "- FlexPointConfigValidator 新增 EventConfig 校验:线程池 core/max/queue/keepAlive 合法性\n  与 max>=core 约束,避免非法值延后到 ThreadPoolExecutor 构造期才暴露(Phase A E 组配置治理)。\n- AbstractChainExtMonitor.getAllExtMetrics 无 MetricsProvider 时返回空集合而非 null,消除调用方 NPE 风险。\n- PluginLoadReport JavaDoc 订正:移除不存在的 addConflict 示例,改用真实的 addMissingDep。\n\n补充 config/EventConfigValidationTest 覆盖默认通过与非法值拒绝。",
          "is_bot": false,
          "headline": "refactor(core): Review 安全项修复(事件配置校验 / 空安全 / 文档)",
          "author_name": "luoxianggan",
          "author_login": null,
          "committed_at": "2026-07-16T05:18:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "65349f49006998f150923f179cf9a38ec04a7003",
          "body": "新增 DecisionExplanation 值对象(候选快照/过滤链路/命中原因/结论 HIT|MISS|AMBIGUOUS)。\nSelector 接口新增 explain(candidates) 方法:\n- AbstractSelector 基于 filter 链路提供通用实现(Code/CodeVersion 等自动获得);\n- 直接实现 Selector 者可用 DecisionExplanation.fromSelection(...) 一行推导。\nFlexPoint.findAbility 在 Debug 级别输出决策解释,便于排查路由命中/未命中。\n\n接口变更为破坏性:所有直接 implements Selector 的实现需补充 explain(本次已更新全部测试选择器;\n经 AbstractSelector 继承的官方/示例选择器不受影响)。\n\n补充 selector/DecisionExplanationTest 覆盖命中/未命中/歧义与便捷推导。",
          "is_bot": false,
          "headline": "feat(selector): 决策解释 v1(调试级)并调整 Selector 接口",
          "author_name": "luoxianggan",
          "author_login": null,
          "committed_at": "2026-07-16T05:15:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fa86addc47853db04d1720442ca9d9c801f92134",
          "body": "此前 build() 装配插件后未持有 PluginManager,导致 shutdown() 从不调用\nstopAll()(插件 stop/destroy 永不执行、订阅与处理链无法清理),且加载报告被丢弃、无法观测。\n\n变更:\n- FlexPoint 新增 PluginManager 字段(纯内核构建时为 null),并新增构造重载保持兼容。\n- shutdown() 按\"插件逆序停止 -> 监控器关闭 -> 事件总线关闭\"的顺序释放资源。\n- 暴露 getPluginLoadReport()/getPluginStates() 供接入层观测。\n- ExtMonitor 新增 default shutdown() 空实现,AsyncExtMonitor 的线程池现可随 shutdown 释放。\n\n补充 FlexPointPluginLifecycleTest 覆盖:装配可观测、shutdown 触发 stop/destroy、纯内核空状态。",
          "is_bot": false,
          "headline": "feat(core): FlexPoint 持有 PluginManager 并接管插件生命周期与关闭",
          "author_name": "luoxianggan",
          "author_login": null,
          "committed_at": "2026-07-16T05:11:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "85fae38ad47bdfd796721ef818951e736f36e944",
          "body": "- Phase B:ONE_PAGER.md(SPI 最小必读)与 PLUGIN_TEMPLATE.md(最小插件模板+自测脚手架)。\n- CORE_REVIEW_2026-07-16.md:核心代码 Review 结论与问题清单(含已修复项与待决策项)。",
          "is_bot": false,
          "headline": "docs: 补充插件 SPI 一页纸/模板与核心代码 Review 报告",
          "author_name": "luoxianggan",
          "author_login": null,
          "committed_at": "2026-07-16T05:08:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "14548eadd0a6f9bb01b046a8bc3af2d3f478294f",
          "body": "覆盖 Phase A 工作包 B:8 写线程并发注册 + 4 读线程并发遍历,\n验证快照读取不抛并发修改异常,且最终注册总数与写入次数一致。",
          "is_bot": false,
          "headline": "test(registry): 补充注册中心并发一致性冒烟测试",
          "author_name": "luoxianggan",
          "author_login": null,
          "committed_at": "2026-07-16T05:08:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e786a9b7d1ddbc0b1eeee9494e2a2c35a57e3ebe",
          "body": "- PluginLifecycleTest:CREATED->INITIALIZED->STARTED->STOPPED->DESTROYED 状态流转,\n  安装正序、停止逆序编排约束。\n- PluginDescriptorValidationTest:pluginId/semver 构造期校验(空/非法字符/非法版本)。\n- PluginContextBoundaryTest:上下文暴露的 registry/selector/event/monitor/config\n  与内核装配实例一致(能力边界)。",
          "is_bot": false,
          "headline": "test(plugin): 补充插件生命周期/描述符校验/上下文边界单测",
          "author_name": "luoxianggan",
          "author_login": null,
          "committed_at": "2026-07-16T05:08:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9ba58b64a1b01325358f9084af4e9c1f54526654",
          "body": "拓扑排序(Kahn)完成后又对整体按 order 排序,当\"被依赖者 order 大于依赖者\"时\n会将依赖方排到被依赖方之前,导致装配顺序错误。\n\n改为在 Kahn 主循环内使用优先队列(order 升序、pluginId 字典序兜底)选择就绪节点,\n既保证拓扑正确性,又保留 order 语义与确定性。\n\n补充 DependencyAndConflictTest 覆盖:依赖顺序回归、缺失/循环/重复依赖、\n资源级唯一(选择器同名禁止覆盖)、关键/非关键插件失败差异化。",
          "is_bot": false,
          "headline": "fix(plugin): 修复 DependencyResolver 中 order 全局重排破坏拓扑顺序的缺陷",
          "author_name": "luoxianggan",
          "author_login": null,
          "committed_at": "2026-07-16T05:07:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "83acd2346f8d9b9539abd909dfba68596f863e47",
          "body": "- 移除旧的告警和采集处理器实现\n- 重新组织告警策略和枚举类到官方插件包路径\n- 删除旧的选择器实现并将引用更新到新的插件化实现\n- 合并事件和监控自动配置为统一的观察性配置\n- 重构构建器以支持插件管理和事件总线配置\n- 添加事件拒绝策略和线程池配置选项\n- 更新示例代码以使用新的插件化选择器\n- 引入官方内置插件模型和SPI化改造\n- 更新测试用例以适配新的包路径和配置结构",
          "is_bot": false,
          "headline": "refactor(core): 重构核心架构以支持插件化和观察性功能",
          "author_name": "luoxianggan",
          "author_login": "xiangganLuo",
          "committed_at": "2026-03-26T05:41:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "691c3e2feedb5d6f5350b02ea2b55cd4a0fc7a00",
          "body": "- 移除 ConflictDetector 类及其能力冲突检测逻辑\n- 删除 capability 维度的唯一性约束,允许多插件声明相同能力\n- 保留 pluginId 唯一性校验和资源级唯一约束(选择器名等)\n- 更新 FLEXPOINT_PLAN.md 体现能力并存与资源级唯一策略\n- 修改 PluginLoadReport 移除冲突记录相关字段\n- 调整 Builder 和 PluginManager 相关导入和类型声明\n- 更新技术设计文档说明注册与冲突策略变更",
          "is_bot": false,
          "headline": "refactor(plugin): 移除插件能力冲突检测并调整注册策略",
          "author_name": "luoxianggan",
          "author_login": "xiangganLuo",
          "committed_at": "2026-03-25T16:37:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8a3a19a379a4889126448f90266154491cb96f91",
          "body": "- 新增Plugin接口及生命周期管理抽象\n- 实现DefaultPluginManager插件管理器\n- 添加DependencyResolver依赖解析与拓扑排序\n- 实现ConflictDetector冲突检测机制\n- 提供PluginContext受控上下文访问内核能力\n- 在FlexPointBuilder中集成插件装配入口\n- 添加AbstractPlugin便捷基类实现\n- 完善插件元数据模型与校验机制\n- 更新文档索引与任务拆解进度追踪\n- 修复method.invoke调用时的访问权限问题",
          "is_bot": false,
          "headline": "feat(core): 实现插件SPI化核心功能",
          "author_name": "luoxianggan",
          "author_login": "xiangganLuo",
          "committed_at": "2026-03-25T09:09:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0628c3151719724bd7aa6f55d58898257d71bb55",
          "body": null,
          "is_bot": false,
          "headline": "feat(core): converge invoke fail/exception event semantics (#7)",
          "author_name": "xiangganLuo",
          "author_login": "xiangganLuo",
          "committed_at": "2026-03-25T06:27:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6bc7e1cf1cda6a6e1523bce0a7ed21dbf5128ed1",
          "body": null,
          "is_bot": false,
          "headline": "refactor(core): 第0阶段实现",
          "author_name": "xiangganLuo",
          "author_login": "xiangganLuo",
          "committed_at": "2026-03-25T05:42:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "82da641a8b397d88af321766e599d6a7bcaf9c29",
          "body": "- 删除了关于代码立即运行和必要导入的重复要求\n- 移除了最佳实践和设计模式的相关条目\n- 清理了性能和用户体验的重复说明\n- 去除了代码可读性和可维护性的冗余描述",
          "is_bot": false,
          "headline": "chore(docs): 移除general.mdc中的冗余编码规范",
          "author_name": "luoxianggan",
          "author_login": "xiangganLuo",
          "committed_at": "2026-03-24T10:47:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d08efebbf238643635b3b680cd779ce08a56c588",
          "body": null,
          "is_bot": false,
          "headline": "docs: add phase-0 kernel optimization plan and docs",
          "author_name": "xiangganLuo",
          "author_login": "xiangganLuo",
          "committed_at": "2026-03-24T06:29:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "51f879d14bfc8521db33697ecd5223e2a0acbbbc",
          "body": null,
          "is_bot": false,
          "headline": "Fix typos, harden EventContext, and strengthen integration tests",
          "author_name": "xiangganLuo",
          "author_login": "xiangganLuo",
          "committed_at": "2026-03-24T03:45:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cda9054a3f415c69694bbcd15eb232622138cf2d",
          "body": "- 删除ExtMetrics接口中的getP95ResponseTime和getP99ResponseTime方法定义- 移除ExtMetricsImpl类中对P95和P99响应时间的简化实现\n- 避免提供可能误导的性能指标数据",
          "is_bot": false,
          "headline": "refactor(monitor): 移除不准确的P95和P99响应时间计算",
          "author_name": "luoxianggan",
          "author_login": "xiangganLuo",
          "committed_at": "2025-11-21T06:31:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d8a567b4b970022e215689538d36f152f119c77b",
          "body": null,
          "is_bot": false,
          "headline": "docs(README): 更新项目简介和特性描述",
          "author_name": "luoxianggan",
          "author_login": null,
          "committed_at": "2025-08-20T04:01:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "883bda14e0e38542df1dbd95a413ac57ee940583",
          "body": null,
          "is_bot": false,
          "headline": "refactor(core): 优化扩展点查找逻辑和事件发布机制",
          "author_name": "luoxianggan",
          "author_login": "xiangganLuo",
          "committed_at": "2025-08-04T15:46:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3cb62ac3e50e192d3c050877d4a9751eeb7de97a",
          "body": null,
          "is_bot": false,
          "headline": "refactor(core): 重构扩展点 ID 生成逻辑",
          "author_name": "luoxianggan",
          "author_login": "xiangganLuo",
          "committed_at": "2025-07-31T14:28:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7228e553f942eb028cb486f65aab0c1007286faa",
          "body": null,
          "is_bot": false,
          "headline": "Merge remote-tracking branch 'origin/master'",
          "author_name": "luoxianggan",
          "author_login": "xiangganLuo",
          "committed_at": "2025-07-28T14:53:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "50327d53d45213a4499ca89b4e643d593ad18900",
          "body": "- 新增 AbstractChainExtMonitor 抽象类,实现链式监控逻辑\n- 重构 AsyncExtMonitor 和 DefaultExtMonitor,继承自 AbstractChainExtMonitor\n- 新增多个自动配置类,分别负责核心、事件、监控、处理器、注册等功能模块\n- 重构 MonitorFactory,支持创建自定义处理器链的监控器\n- 更新 FlexPointBuilder,使用新的监控器创建逻辑\n-移除 FlexPointAutoConfiguration 中的冗余配置",
          "is_bot": false,
          "headline": "refactor(flexpoint): 重构监控模块并优化自动配置",
          "author_name": "luoxianggan",
          "author_login": "xiangganLuo",
          "committed_at": "2025-07-28T14:53:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e6cd32291a3b752f9492fa751fb0dca31164d2e4",
          "body": null,
          "is_bot": false,
          "headline": "style(monitor): 格式问题",
          "author_name": "xiangganluo",
          "author_login": "xiangganLuo",
          "committed_at": "2025-07-28T05:26:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "74e05ffef4e9b62070a622497b021b178bc86a00",
          "body": "- 将扩展点实例的属性名从 extMap 改为 extAbilityMap,提高代码可读性- 新增 EventPublisherInvocationHandler 类,用于扩展点调用事件埋点\n- 修改 ExtAbilityInvocationHandler,移除事件发布逻辑\n- 更新 FlexPoint 类,使用代理方式包装扩展点实例,实现调用埋点\n- 调整 findAbilityByCode 和 findAbilitiesByCodeAndTags 方法,返回匹配的扩展点列表",
          "is_bot": false,
          "headline": "refactor(core): 重构扩展点调用事件埋点逻辑",
          "author_name": "luoxianggan",
          "author_login": "xiangganLuo",
          "committed_at": "2025-07-27T15:03:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "43b49ae86ba96a322fb7ac5152c4c3a191cc89f9",
          "body": "- 重构了扩展点监控实现,采用责任链模式处理监控逻辑\n- 新增事件驱动机制,支持扩展点和选择器的注册、注销事件\n- 优化了扩展点注册中心,支持扩展点注销和事件发布\n- 重新设计了监控指标接口和实现,提高了可扩展性\n- 移除了不必要的监控状态接口和实现",
          "is_bot": false,
          "headline": "feat(core): 重构监控系统并添加事件驱动功能",
          "author_name": "luoxianggan",
          "author_login": "xiangganLuo",
          "committed_at": "2025-07-27T13:40:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9e7b32ed0972e58824d43772fb8b509a4261f0d2",
          "body": null,
          "is_bot": false,
          "headline": "feature(rules): 添加项目通用规范和开发指南",
          "author_name": "luoxianggan",
          "author_login": "xiangganLuo",
          "committed_at": "2025-07-26T07:08:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3ff8296db40c61598c57154fa96fb0dcca4b2954",
          "body": null,
          "is_bot": false,
          "headline": "feat(core): 增加根据 code 和标签查找扩展点的方法",
          "author_name": "luoxianggan",
          "author_login": "xiangganLuo",
          "committed_at": "2025-07-22T14:59:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fe47dae7e8ae8dd3c2521f282362e09267d33ae7",
          "body": null,
          "is_bot": false,
          "headline": "refactor(core): 重构核心模块,去除上下文概念",
          "author_name": "luoxianggan",
          "author_login": "xiangganLuo",
          "committed_at": "2025-07-20T09:35:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "88f0826d2249fbdb2112c4550c9a6e22283aac39",
          "body": null,
          "is_bot": false,
          "headline": "docs(README): 更新核心特性和使用场景",
          "author_name": "luoxianggan",
          "author_login": "xiangganLuo",
          "committed_at": "2025-07-19T11:18:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e7c1d76f0a48315827a99e152dfec3a0da6a6fa6",
          "body": null,
          "is_bot": false,
          "headline": "refactor: 更新代码文件作者信息",
          "author_name": "luoxianggan",
          "author_login": "xiangganLuo",
          "committed_at": "2025-07-19T11:01:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8e3abc65efbf8120356d699b61fa7f24103bb81a",
          "body": "- 移动 ExtensionTags 从 common 包到 core 包\n- 用 ExtensionUtil.getExtensionId替换 generateExtensionId 方法\n- 移除 DefaultExtensionMonitor 中的冗余代码\n- 更新相关类以使用新的 ExtensionTags 包",
          "is_bot": false,
          "headline": "refactor(core): 重构扩展点监控功能并移动 ExtensionTags",
          "author_name": "luoxianggan",
          "author_login": "xiangganLuo",
          "committed_at": "2025-07-19T10:43:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "65cb0feea331d97c14d2d662735480293d822983",
          "body": "- 在 FlexPointConfig 中添加异步监控线程池配置- 重构 AsyncExtensionMonitor 类,支持动态配置线程池参数- 优化 DefaultExtensionMonitor 中的指标记录逻辑\n- 调整 FlexPoint 和 MonitorPipeline 接口,使用 ExtensionAbility 作为参数\n- 移除不必要的 getExtensionType 方法,简化扩展点注册流程",
          "is_bot": false,
          "headline": "feat(core): 增强异步监控功能并优化扩展点注册",
          "author_name": "luoxianggan",
          "author_login": null,
          "committed_at": "2025-07-19T09:10:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "17b323f2d266b212d37165d8a5e6c8bb6c28a90b",
          "body": "- 从 RegistryConfig 类中删除了 allowDuplicateRegistration 字段\n- 从配置验证和日志输出中移除了与重复注册相关的逻辑\n-简化了注册配置的结构,仅保留启用状态",
          "is_bot": false,
          "headline": "refactor(core): 移除重复注册相关配置",
          "author_name": "luoxianggan",
          "author_login": null,
          "committed_at": "2025-07-19T08:15:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6d1d79ca37b496230fd6326906dc4ef3ca5ffac8",
          "body": null,
          "is_bot": false,
          "headline": "feat(core): 重构扩展点定义逻辑以及解析逻辑",
          "author_name": "luoxianggan",
          "author_login": null,
          "committed_at": "2025-07-19T08:13:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0df10b93944162f61611ef6be6bb06769c4732de",
          "body": null,
          "is_bot": false,
          "headline": "feat(core): 重构选择器机制",
          "author_name": "luoxianggan",
          "author_login": null,
          "committed_at": "2025-07-19T05:40:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c3a35365fef6ba88fa715a7478fb7e18b164812e",
          "body": "- 将选择器链核心接口与实现、选择器优先级与顺序管理机制、选择器动态注册/注销API与配置标记为已完成\n-保持典型业务场景内置选择器任务状态不变",
          "is_bot": false,
          "headline": "docs(FLEXPOINT_PLAN): 更新选择器链任务状态",
          "author_name": "luoxianggan",
          "author_login": "xiangganLuo",
          "committed_at": "2025-07-10T12:53:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2556b4b661cacf813f03241ca185cc1c041efb36",
          "body": "-移除 AbstractSelector 和 ExtensionSelector接口\n- 新增 Selector接口和 SelectorChain 类\n- 重构 FlexPoint 和 DefaultSelectorRegistry 以支持选择器链\n- 更新注解和代理逻辑以适应新的选择器体系\n- 删除不必要的测试类和重构现有测试",
          "is_bot": false,
          "headline": "feat(core): 重构选择器体系并引入选择器链",
          "author_name": "luoxianggan",
          "author_login": "xiangganLuo",
          "committed_at": "2025-07-10T12:49:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fe061f0a298cd1b5558e332c8d39ae3222320478",
          "body": "-将 @ExtensionAbilityReference 注解重命名为 @Extension\n- 更新相关类名和方法名,如 ExtensionAbilityReferenceProcessor 改为 ExtensionAbilityProcessor\n- 修改 FlexPointBuilder 类的描述,将其称为 FlexPoint 实例的建造者\n- 更新示例代码中的注解使用",
          "is_bot": false,
          "headline": "refactor(flexpoint): 重构扩展点引用相关代码",
          "author_name": "luoxianggan",
          "author_login": "xiangganLuo",
          "committed_at": "2025-07-05T16:08:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "728ff801908e8f36038c84736394427bbf570990",
          "body": "…ilder 类中删除了 withSelector 方法\n\n- 在 FlexPointManager 中添加了 registerSelector 方法来注册自定义选择器- 这个改动简化了 FlexPointBuilder 的接口,并将选择器注册逻辑移至更合适的位置",
          "is_bot": false,
          "headline": "refactor(core): 移除 FlexPointBuilder 中的 withSelector 方法- 从 FlexPointBu…",
          "author_name": "luoxianggan",
          "author_login": "xiangganLuo",
          "committed_at": "2025-07-05T15:55:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c0a56fee41e8d15a6beaa0a56b109ae2431bf930",
          "body": "- 将 ExtensionResolutionStrategy重命名为 ExtensionSelector\n- 将 DefaultExtensionResolutionStrategyRegistry 重命名为 DefaultSelectorRegistry\n- 更新了相关的类名、接口名和方法名,以更好地反映其功能\n- 调整了部分代码结构,以适应新的命名体系",
          "is_bot": false,
          "headline": "refactor(core): 重构扩展点解析逻辑,改为扩展点选择逻辑",
          "author_name": "luoxianggan",
          "author_login": "xiangganLuo",
          "committed_at": "2025-07-05T15:51:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4d397ab1de8ba260bd4e509f404c0aac33389acb",
          "body": "- 新增自定义解析器的定义和注册示例\n- 添加使用 @ExtensionResolverSelector 注解指定解析器的说明\n- 优化文档结构,删除多余的分隔符",
          "is_bot": false,
          "headline": "feat(README): 补充解析器自定义与注册说明",
          "author_name": "luoxianggan",
          "author_login": "xiangganLuo",
          "committed_at": "2025-07-04T12:26:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ed3c1566fe33d033e9d2ef34b659863cf75b3813",
          "body": null,
          "is_bot": false,
          "headline": "refactor(flexpoint-core):调整配置项并移除未使用属性",
          "author_name": "luoxianggan",
          "author_login": "xiangganLuo",
          "committed_at": "2025-07-04T08:45:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8ffd3db0e5b33df8b33fe053b52edd471307266a",
          "body": null,
          "is_bot": false,
          "headline": "docs(README): 更新贡献指南",
          "author_name": "luoxianggan",
          "author_login": "xiangganLuo",
          "committed_at": "2025-07-04T08:41:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2be98768108c9f07eb94843da87e6eda49e121bb",
          "body": "-为 version() 方法添加文档注释,解释其用途和默认值- 优化接口文档,提高可读性和易理解性",
          "is_bot": false,
          "headline": "docs(README): 更新 OrderProcessAbility 接口文档",
          "author_name": "luoxianggan",
          "author_login": "xiangganLuo",
          "committed_at": "2025-07-04T08:19:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "aeed11fdc0700d3dde157f066fb02a1e6ab4c075",
          "body": null,
          "is_bot": false,
          "headline": "refactor(project): 重构项目结构和代码,最低支持jdk1.8",
          "author_name": "luoxianggan",
          "author_login": "xiangganLuo",
          "committed_at": "2025-07-04T08:16:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d668241589e3fefa16685f3e2f66d34db9f6d827",
          "body": "- 将项目标题简化为 \"Flex Point\"\n- 更新项目描述为 \"多场景适配、轻量级、极致灵活的扩展点框架\"",
          "is_bot": false,
          "headline": "docs: 更新 README.md 中的项目标题和描述",
          "author_name": "luoxianggan",
          "author_login": "xiangganLuo",
          "committed_at": "2025-07-04T06:53:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bf4134aa0b185979502e08bb09ea8fb36599768e",
          "body": null,
          "is_bot": false,
          "headline": "refactor(flexpoint-core):优化监控模块代码结构",
          "author_name": "luoxianggan",
          "author_login": "xiangganLuo",
          "committed_at": "2025-07-04T06:40:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1c5f95e2ef479013052c7b4d74bb30e8e405d827",
          "body": "- 优化项目简介,突出企业级应用和高可扩展性\n- 调整核心特性描述,增加预留扩展点说明\n- 新增使用场景部分,详细说明多租户、平台型系统等应用场景\n- 更新多环境支持描述,简化为 Spring Boot 和 Java原生环境",
          "is_bot": false,
          "headline": "docs: 更新 README.md 文件",
          "author_name": "luoxianggan",
          "author_login": "xiangganLuo",
          "committed_at": "2025-07-04T06:37:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "45238acbd68aeeb568929f4cdc4d958d95c18af6",
          "body": null,
          "is_bot": false,
          "headline": "build: 添加 Maven Wrapper 配置和脚本",
          "author_name": "luoxianggan",
          "author_login": "xiangganLuo",
          "committed_at": "2025-07-04T06:26:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b5f1480c865db1f76ed86c20d52b7a6e93a09143",
          "body": "- 新增 AsyncExtensionMonitor 类实现异步监控\n- 在 ExtensionMonitor 接口中添加新的监控相关方法\n- 新增 MonitorFactory 类提供监控器创建方法\n- 实现 MonitorPipeline 类统一处理监控事件和数据采集\n- 添加新的监控枚举类型和扩展接口",
          "is_bot": false,
          "headline": "feat(core): 增加异步监控器和监控数据采集功能",
          "author_name": "luoxianggan",
          "author_login": "xiangganLuo",
          "committed_at": "2025-07-04T05:52:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "176f61cbf656dff18af85c9f6d11cc7174ddcbc8",
          "body": "- 移除 flexpoint-common 中的 jakarta.validation、jakarta.servlet 和 jakarta.annotation 依赖\n- 在 flexpoint-examples/spring-boot-example 中添加上述依赖\n- 更新 flexpoint-springboot 中 Spring Boot 相关依赖为 provided 范围\n- 新增 META-INF/spring.factories 文件实现 Spring Boot 自动配置- 重构 SpringExtensionAbilityRegister 类,实现 InitializingBean 接口",
          "is_bot": false,
          "headline": "build(flexpoint): 调整项目依赖结构并支持 Spring Boot 自动配置",
          "author_name": "luoxianggan",
          "author_login": "xiangganLuo",
          "committed_at": "2025-07-04T03:38:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0b3db7cb7f5213ef9616cf175d0bd2000ad72a1b",
          "body": null,
          "is_bot": false,
          "headline": "docs(architecture): 更新架构图",
          "author_name": "luoxianggan",
          "author_login": "xiangganLuo",
          "committed_at": "2025-07-01T03:48:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ad085fc095f404da2413285cab5349a397687670",
          "body": "Signed-off-by: xiangganluo <2648835884@qq.com>",
          "is_bot": false,
          "headline": "add LICENSE.",
          "author_name": "xiangganluo",
          "author_login": "sky6939",
          "committed_at": "2025-06-30T13:00:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f7764be6624f1f208178882a5e097971b53b2ad1",
          "body": null,
          "is_bot": false,
          "headline": "feat(core): 添加扩展能力选择器注解并更新相关测试",
          "author_name": "luoxianggan",
          "author_login": "xiangganLuo",
          "committed_at": "2025-06-30T12:49:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "923c2758b0254fb0ce47fa07c5559e5b7af2fc08",
          "body": "- 重构了扩展点注册、解析和监控的核心逻辑\n- 新增 ResolutionContext 类以统一扩展点上下文信息\n- 改进了扩展点版本管理和匹配逻辑\n-精简了配置和元数据相关代码\n- 优化了自定义解析策略的实现方式",
          "is_bot": false,
          "headline": "refactor(core): 重构核心模块以简化架构并增强功能",
          "author_name": "luoxianggan",
          "author_login": "xiangganLuo",
          "committed_at": "2025-06-29T15:25:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 2,
      "commits_last_year": 71,
      "latest_release_at": "2026-07-17T02:38:51Z",
      "latest_release_tag": "2.0.0",
      "releases_from_tags": true,
      "days_since_last_push": 7,
      "active_weeks_last_year": 7,
      "days_since_latest_release": 7,
      "mean_days_between_releases": 237.8
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 42,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "io.github.xiangganluo:flexpoint-core",
          "exists": true,
          "license": "Apache Software License, Version 2.0",
          "keywords": [],
          "ecosystem": "maven",
          "matches_repo": true,
          "registry_url": "https://central.sonatype.com/artifact/io.github.xiangganluo/flexpoint-core",
          "is_deprecated": false,
          "latest_version": "2.0.0",
          "repository_url": "https://github.com/xiangganLuo/flex-point/flexpoint-core",
          "versions_count": 1,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": null,
          "latest_published_at": "2026-07-17T02:43:27Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 7
        },
        {
          "name": "io.github.xiangganluo:flexpoint-common",
          "exists": true,
          "license": "Apache Software License, Version 2.0",
          "keywords": [],
          "ecosystem": "maven",
          "matches_repo": true,
          "registry_url": "https://central.sonatype.com/artifact/io.github.xiangganluo/flexpoint-common",
          "is_deprecated": false,
          "latest_version": "2.0.0",
          "repository_url": "https://github.com/xiangganLuo/flex-point/flexpoint-common",
          "versions_count": 1,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": null,
          "latest_published_at": "2026-07-17T02:43:26Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 7
        },
        {
          "name": "io.github.xiangganluo:flexpoint-spring",
          "exists": true,
          "license": "Apache Software License, Version 2.0",
          "keywords": [],
          "ecosystem": "maven",
          "matches_repo": true,
          "registry_url": "https://central.sonatype.com/artifact/io.github.xiangganluo/flexpoint-spring",
          "is_deprecated": false,
          "latest_version": "2.0.0",
          "repository_url": "https://github.com/xiangganLuo/flex-point/flexpoint-spring",
          "versions_count": 1,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": null,
          "latest_published_at": "2026-07-17T02:43:51Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 7
        },
        {
          "name": "io.github.xiangganluo:flexpoint-springboot",
          "exists": true,
          "license": "Apache Software License, Version 2.0",
          "keywords": [],
          "ecosystem": "maven",
          "matches_repo": true,
          "registry_url": "https://central.sonatype.com/artifact/io.github.xiangganluo/flexpoint-springboot",
          "is_deprecated": false,
          "latest_version": "2.0.0",
          "repository_url": "https://github.com/xiangganLuo/flex-point/flexpoint-springboot",
          "versions_count": 1,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": null,
          "latest_published_at": "2026-07-17T02:43:53Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 7
        }
      ]
    },
    "popularity": {
      "forks": 2,
      "stars": 9,
      "watchers": 0,
      "fork_history": {
        "days": [
          {
            "date": "2025-06-26",
            "count": 1
          },
          {
            "date": "2025-06-27",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 2,
        "total_forks": 2
      },
      "star_history": null,
      "open_issues_and_prs": 0
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "example"
      ],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [
        "flexpoint-common/pom.xml",
        "flexpoint-core/pom.xml",
        "flexpoint-dependencies-bom/pom.xml",
        "flexpoint-examples/java-example/pom.xml",
        "flexpoint-examples/pom.xml",
        "flexpoint-examples/spring-boot-example/pom.xml",
        "flexpoint-plugin-all/flexpoint-plugin-audit/pom.xml",
        "flexpoint-plugin-all/flexpoint-plugin-metrics/pom.xml",
        "flexpoint-plugin-all/flexpoint-plugin-observability/pom.xml",
        "flexpoint-plugin-all/flexpoint-plugin-resilience/pom.xml",
        "flexpoint-plugin-all/flexpoint-plugin-retry/pom.xml",
        "flexpoint-plugin-all/flexpoint-plugin-selector-ab/pom.xml",
        "flexpoint-plugin-all/flexpoint-plugin-selector-cache/pom.xml",
        "flexpoint-plugin-all/flexpoint-plugin-selector-code-version/pom.xml",
        "flexpoint-plugin-all/flexpoint-plugin-selector-code/pom.xml",
        "flexpoint-plugin-all/flexpoint-plugin-selector-gray/pom.xml",
        "flexpoint-plugin-all/flexpoint-plugin-selector-tag/pom.xml",
        "flexpoint-plugin-all/flexpoint-plugin-selector-tenant/pom.xml",
        "flexpoint-plugin-all/flexpoint-plugin-selector-weight/pom.xml",
        "flexpoint-plugin-all/flexpoint-plugin-slowcall/pom.xml",
        "flexpoint-plugin-all/pom.xml",
        "flexpoint-spring/pom.xml",
        "flexpoint-springboot/pom.xml",
        "flexpoint-test/pom.xml",
        "pom.xml"
      ],
      "largest_source_bytes": 21202,
      "source_files_sampled": 181,
      "oversized_source_files": 0,
      "agent_instruction_files": [],
      "agent_instruction_max_bytes": null
    },
    "dependencies": {
      "manifests": [
        "docs/package.json",
        "flexpoint-common/pom.xml",
        "flexpoint-core/pom.xml",
        "flexpoint-dependencies-bom/pom.xml",
        "flexpoint-examples/pom.xml",
        "flexpoint-plugin-all/pom.xml",
        "flexpoint-spring/pom.xml",
        "flexpoint-springboot/pom.xml",
        "flexpoint-test/pom.xml",
        "pom.xml"
      ],
      "advisories": {
        "error": null,
        "scope": "published_package",
        "source": "osv",
        "findings": [],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 5,
        "malicious_count": 0,
        "assessed_package": "maven:io.github.xiangganluo:flexpoint-core@2.0.0",
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "maven",
        "npm"
      ],
      "dependencies": [
        {
          "name": "org.slf4j:slf4j-api",
          "manifest": "flexpoint-common/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "cn.hutool:hutool-all",
          "manifest": "flexpoint-common/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "com.alibaba:transmittable-thread-local",
          "manifest": "flexpoint-common/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "io.github.xiangganluo:flexpoint-common",
          "manifest": "flexpoint-core/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.projectlombok:lombok",
          "manifest": "flexpoint-core/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "io.github.xiangganluo:flexpoint-common",
          "manifest": "flexpoint-dependencies-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "io.github.xiangganluo:flexpoint-core",
          "manifest": "flexpoint-dependencies-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "io.github.xiangganluo:flexpoint-spring",
          "manifest": "flexpoint-dependencies-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "io.github.xiangganluo:flexpoint-springboot",
          "manifest": "flexpoint-dependencies-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "io.github.xiangganluo:flexpoint-test",
          "manifest": "flexpoint-dependencies-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "io.github.xiangganluo:flexpoint-plugin-selector-code",
          "manifest": "flexpoint-dependencies-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "io.github.xiangganluo:flexpoint-plugin-selector-code-version",
          "manifest": "flexpoint-dependencies-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "io.github.xiangganluo:flexpoint-plugin-observability",
          "manifest": "flexpoint-dependencies-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "io.github.xiangganluo:flexpoint-plugin-selector-tag",
          "manifest": "flexpoint-dependencies-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "io.github.xiangganluo:flexpoint-plugin-selector-gray",
          "manifest": "flexpoint-dependencies-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "io.github.xiangganluo:flexpoint-plugin-selector-ab",
          "manifest": "flexpoint-dependencies-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "io.github.xiangganluo:flexpoint-plugin-selector-weight",
          "manifest": "flexpoint-dependencies-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "io.github.xiangganluo:flexpoint-plugin-selector-tenant",
          "manifest": "flexpoint-dependencies-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "io.github.xiangganluo:flexpoint-plugin-selector-cache",
          "manifest": "flexpoint-dependencies-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "io.github.xiangganluo:flexpoint-plugin-audit",
          "manifest": "flexpoint-dependencies-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "io.github.xiangganluo:flexpoint-plugin-slowcall",
          "manifest": "flexpoint-dependencies-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "io.github.xiangganluo:flexpoint-plugin-metrics",
          "manifest": "flexpoint-dependencies-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "io.github.xiangganluo:flexpoint-plugin-retry",
          "manifest": "flexpoint-dependencies-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "io.github.xiangganluo:flexpoint-plugin-resilience",
          "manifest": "flexpoint-dependencies-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.projectlombok:lombok",
          "manifest": "flexpoint-dependencies-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${lombok.version}"
        },
        {
          "name": "org.slf4j:slf4j-api",
          "manifest": "flexpoint-dependencies-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${slf4j.version}"
        },
        {
          "name": "cglib:cglib",
          "manifest": "flexpoint-dependencies-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${cglib.version}"
        },
        {
          "name": "org.springframework.boot:spring-boot-dependencies",
          "manifest": "flexpoint-dependencies-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${spring-boot-dependencies.version}"
        },
        {
          "name": "io.netty:netty-bom",
          "manifest": "flexpoint-dependencies-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${netty.version}"
        },
        {
          "name": "org.mockito:mockito-inline",
          "manifest": "flexpoint-dependencies-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${mockito-inline.version}"
        },
        {
          "name": "com.github.fppt:jedis-mock",
          "manifest": "flexpoint-dependencies-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${jedis-mock.version}"
        },
        {
          "name": "uk.co.jemos.podam:podam",
          "manifest": "flexpoint-dependencies-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${podam.version}"
        },
        {
          "name": "org.mapstruct:mapstruct",
          "manifest": "flexpoint-dependencies-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${mapstruct.version}"
        },
        {
          "name": "org.mapstruct:mapstruct-jdk8",
          "manifest": "flexpoint-dependencies-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${mapstruct.version}"
        },
        {
          "name": "org.mapstruct:mapstruct-processor",
          "manifest": "flexpoint-dependencies-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${mapstruct.version}"
        },
        {
          "name": "cn.hutool:hutool-all",
          "manifest": "flexpoint-dependencies-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${hutool-5.version}"
        },
        {
          "name": "org.dromara.hutool:hutool-extra",
          "manifest": "flexpoint-dependencies-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${hutool-6.version}"
        },
        {
          "name": "commons-io:commons-io",
          "manifest": "flexpoint-dependencies-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${commons-io.version}"
        },
        {
          "name": "org.apache.commons:commons-compress",
          "manifest": "flexpoint-dependencies-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${commons-compress.version}"
        },
        {
          "name": "org.apache.tika:tika-core",
          "manifest": "flexpoint-dependencies-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${tika-core.version}"
        },
        {
          "name": "com.alibaba:fastjson",
          "manifest": "flexpoint-dependencies-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${fastjson.version}"
        },
        {
          "name": "com.google.guava:guava",
          "manifest": "flexpoint-dependencies-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${guava.version}"
        },
        {
          "name": "com.alibaba:transmittable-thread-local",
          "manifest": "flexpoint-dependencies-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${transmittable-thread-local.version}"
        },
        {
          "name": "commons-net:commons-net",
          "manifest": "flexpoint-dependencies-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${commons-net.version}"
        },
        {
          "name": "com.jcraft:jsch",
          "manifest": "flexpoint-dependencies-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${jsch.version}"
        },
        {
          "name": "org.lionsoul:ip2region",
          "manifest": "flexpoint-dependencies-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${ip2region.version}"
        },
        {
          "name": "org.jsoup:jsoup",
          "manifest": "flexpoint-dependencies-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${jsoup.version}"
        },
        {
          "name": "org.reflections:reflections",
          "manifest": "flexpoint-dependencies-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${reflections.version}"
        },
        {
          "name": "com.dtflys.forest:forest-spring-boot3-starter",
          "manifest": "flexpoint-dependencies-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${forest.version}"
        },
        {
          "name": "io.github.xiangganluo:flexpoint-core",
          "manifest": "flexpoint-spring/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.springframework:spring-context",
          "manifest": "flexpoint-spring/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.springframework:spring-core",
          "manifest": "flexpoint-spring/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.projectlombok:lombok",
          "manifest": "flexpoint-spring/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.slf4j:slf4j-api",
          "manifest": "flexpoint-spring/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "io.github.xiangganluo:flexpoint-spring",
          "manifest": "flexpoint-springboot/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "io.github.xiangganluo:flexpoint-core",
          "manifest": "flexpoint-springboot/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "io.github.xiangganluo:flexpoint-plugin-selector-weight",
          "manifest": "flexpoint-springboot/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "io.github.xiangganluo:flexpoint-plugin-audit",
          "manifest": "flexpoint-springboot/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "io.github.xiangganluo:flexpoint-plugin-slowcall",
          "manifest": "flexpoint-springboot/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "io.github.xiangganluo:flexpoint-plugin-metrics",
          "manifest": "flexpoint-springboot/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "io.github.xiangganluo:flexpoint-plugin-retry",
          "manifest": "flexpoint-springboot/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "io.github.xiangganluo:flexpoint-plugin-resilience",
          "manifest": "flexpoint-springboot/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "io.github.xiangganluo:flexpoint-plugin-observability",
          "manifest": "flexpoint-springboot/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "io.github.xiangganluo:flexpoint-plugin-selector-code",
          "manifest": "flexpoint-springboot/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "io.github.xiangganluo:flexpoint-plugin-selector-code-version",
          "manifest": "flexpoint-springboot/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.projectlombok:lombok",
          "manifest": "flexpoint-springboot/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.slf4j:slf4j-api",
          "manifest": "flexpoint-springboot/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "io.github.xiangganluo:flexpoint-core",
          "manifest": "flexpoint-test/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "io.github.xiangganluo:flexpoint-spring",
          "manifest": "flexpoint-test/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "io.github.xiangganluo:flexpoint-springboot",
          "manifest": "flexpoint-test/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "io.github.xiangganluo:flexpoint-plugin-selector-code",
          "manifest": "flexpoint-test/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "io.github.xiangganluo:flexpoint-plugin-selector-code-version",
          "manifest": "flexpoint-test/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "io.github.xiangganluo:flexpoint-plugin-observability",
          "manifest": "flexpoint-test/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.projectlombok:lombok",
          "manifest": "flexpoint-test/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.slf4j:slf4j-api",
          "manifest": "flexpoint-test/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "io.github.xiangganluo:flexpoint-dependencies-bom",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        }
      ],
      "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": 3
      },
      "bus_factor": 1,
      "bot_contributors": 0,
      "top_contributors": [
        {
          "type": "User",
          "login": "xiangganLuo",
          "commits": 55,
          "avatar_url": "https://avatars.githubusercontent.com/u/104347635?v=4"
        },
        {
          "type": "User",
          "login": "sky6939",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/46442135?v=4"
        }
      ],
      "contributors_sampled": 2,
      "top_contributor_share": 0.982
    },
    "quality_signals": {
      "has_ci": false,
      "has_tests": true,
      "ci_workflows": [],
      "has_docs_dir": true,
      "linter_configs": [],
      "has_editorconfig": false,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": null,
            "reason": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
            "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": 3,
            "reason": "project has 1 contributing companies or organizations -- score normalized to 3",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": null,
            "reason": "no workflows found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 0,
            "reason": "no update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": null,
            "reason": "packaging workflow not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": null,
            "reason": "no dependencies found",
            "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": null,
            "reason": "No tokens found",
            "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": "66deba3a600aff6418a1c0bd1236af7438256bdf",
        "ran_at": "2026-07-24T20:07:21Z",
        "aggregate_score": 4.3,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-17T04:59:46Z",
      "oldest_open_prs": [],
      "last_merged_pr_at": "2026-03-25T06:27:28Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/xiangganLuo/flex-point",
    "host": "github.com",
    "name": "flex-point",
    "owner": "xiangganLuo"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 50,
      "inputs": {
        "security": 54,
        "vitality": 70,
        "community": 31,
        "governance": 42,
        "engineering": 54
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "good",
        "name": "Vitality",
        "value": 70,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "moderate",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 68,
            "inputs": {
              "commits_last_year": 71,
              "human_commit_share": 1,
              "days_since_last_push": 7,
              "active_weeks_last_year": 7
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 7 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 7
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "7/52 weeks with commits",
                "points": 4.8,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 7
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "71 commits in the last year",
                "points": 16.7,
                "status": "partial",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 71
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "good",
            "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": 72,
            "inputs": {
              "releases_count": 2,
              "latest_release_tag": "2.0.0",
              "releases_from_tags": true,
              "days_since_latest_release": 7,
              "mean_days_between_releases": 237.8
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "2 version tags (no GitHub releases)",
                "points": 16.2,
                "status": "partial",
                "details": [
                  {
                    "code": "version_tags_no_releases",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 7 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 7
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~237.8 days",
                "points": 12.6,
                "status": "partial",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 237.8
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "maintained",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": null,
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": 7,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 7 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 7
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "at_risk",
        "name": "Community & Adoption",
        "value": 31,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "critical",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 15,
            "inputs": {
              "forks": 2,
              "stars": 9,
              "watchers": 0,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "9 stars",
                "points": 14.6,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 9
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "2 forks",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "0 watchers",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "moderate",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 50,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (Apache-2.0)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "Apache-2.0"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 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": "at_risk",
        "name": "Sustainability & Governance",
        "value": 42,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 15,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 2,
              "top_contributor_share": 0.982
            },
            "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 98% of commits",
                "points": 0.4,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 98
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "2 contributors",
                "points": 2.7,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 1 contributing companies or organizations -- score normalized to 3",
                "points": 3,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "at_risk",
            "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": 41,
            "inputs": {
              "merged_prs": 4,
              "open_issues": 0,
              "closed_issues": 0,
              "issue_closed_ratio": null,
              "closed_unmerged_prs": 3
            },
            "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/7 decided PRs merged",
                "points": 21.9,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 4,
                      "decided": 7
                    }
                  }
                ],
                "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": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "verified_domain"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 42,
            "inputs": {
              "followers": 4,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "xiangganLuo",
              "public_repos": 26,
              "account_age_days": 1551
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "personal (user) account",
                "points": 10,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_personal",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": "not applicable to user accounts",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_applicable_to_user_accounts",
                    "params": {}
                  }
                ],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "4 followers of xiangganLuo",
                "points": 5,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 4,
                      "login": "xiangganLuo"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "26 public repos, account ~4 yr old",
                "points": 18.9,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 26
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 4
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "good",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 84,
            "inputs": {
              "packages": [
                "io.github.xiangganluo:flexpoint-core",
                "io.github.xiangganluo:flexpoint-common",
                "io.github.xiangganluo:flexpoint-spring",
                "io.github.xiangganluo:flexpoint-springboot"
              ],
              "ecosystems": "maven",
              "any_deprecated": false,
              "min_days_since_publish": 7
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "4 package(s) on maven",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 4,
                      "ecosystems": "maven"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 7 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 7
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "1 published versions",
                "points": 4,
                "status": "partial",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "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": "moderate",
        "name": "Engineering Quality",
        "value": 54,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "at_risk",
            "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": 30,
            "inputs": {
              "has_ci": false,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "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": "https://flex-point.pages.dev/",
              "has_readme": true,
              "has_docs_dir": true,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 25,
                "status": "met",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": "https://flex-point.pages.dev/",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "moderate",
        "name": "Security",
        "value": 54,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Branch-Protection, CI-Tests, Dangerous-Workflow, Packaging, Pinned-Dependencies, Signed-Releases, Token-Permissions. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "branch_protection",
                    "ci_tests",
                    "dangerous_workflow",
                    "packaging",
                    "pinned_dependencies",
                    "signed_releases",
                    "token_permissions"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 43,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 11,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 7,
              "scorecard_aggregate": 4.3
            },
            "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": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "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 1 contributing companies or organizations -- score normalized to 3",
                "points": 0.8,
                "status": "partial",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no workflows found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "no update tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow not detected",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "no dependencies found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "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": "No tokens found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "0 existing vulnerabilities detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "excellent",
            "name": "Dependency advisories",
            "note": "Excluded from scoring (no data or not applicable): No advisories left outstanding. Remaining weights renormalized. Matched the maven:io.github.xiangganluo:flexpoint-core@2.0.0 runtime dependency closure — what installing the published package pulls in — 5 packages. Reachability is not analyzed.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "no_advisories_left_outstanding"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              },
              {
                "code": "advisories_scope_published",
                "params": {
                  "package": "maven:io.github.xiangganluo:flexpoint-core@2.0.0",
                  "assessed": 5
                }
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "source": "osv",
              "advisories": 0,
              "affected_packages": 0,
              "assessed_packages": 5,
              "unassessed_packages": 0,
              "affected_by_severity": "none",
              "direct_affected_packages": 0
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "no direct dependency carries a known advisory",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "no_direct_advisories",
                    "params": {}
                  }
                ],
                "max_points": 35
              },
              {
                "key": "indirect_dependencies_free_of_known_advisories",
                "name": "Indirect dependencies free of known advisories",
                "detail": "no indirect dependency carries a known advisory",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "no_indirect_advisories",
                    "params": {}
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "no advisory carries a publication date",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_no_publication_date",
                    "params": {}
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "malicious_dependencies",
            "band": "excellent",
            "name": "Malicious dependencies",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "source": "osv",
              "meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
              "packages": [],
              "red_flag": false,
              "assessed_packages": 5,
              "malicious_packages": 0,
              "direct_malicious_packages": 0,
              "withdrawn_malicious_packages": 0,
              "installable_malicious_packages": 0
            },
            "components": [
              {
                "key": "no_dependency_reported_as_a_malicious_package",
                "name": "No dependency reported as a malicious package",
                "detail": "no dependency is reported as a malicious package",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "no_malicious_dependencies",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 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": "moderate",
        "name": "AI Readiness",
        "value": 53,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "at_risk",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.92,
              "agent_instruction_files": [],
              "agent_instruction_max_bytes": null
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "no CLAUDE.md / AGENTS.md / editor rules",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_instructions",
                    "params": {}
                  }
                ],
                "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": "92 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 92,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Pinned-Dependencies. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_pinned_dependencies"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 51,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [],
              "has_dockerfile": false,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [],
              "agent_commit_share": 0,
              "toolchain_manifests": [
                "flexpoint-common/pom.xml",
                "flexpoint-core/pom.xml",
                "flexpoint-dependencies-bom/pom.xml",
                "flexpoint-examples/java-example/pom.xml",
                "flexpoint-examples/pom.xml",
                "flexpoint-examples/spring-boot-example/pom.xml",
                "flexpoint-plugin-all/flexpoint-plugin-audit/pom.xml",
                "flexpoint-plugin-all/flexpoint-plugin-metrics/pom.xml",
                "flexpoint-plugin-all/flexpoint-plugin-observability/pom.xml",
                "flexpoint-plugin-all/flexpoint-plugin-resilience/pom.xml",
                "flexpoint-plugin-all/flexpoint-plugin-retry/pom.xml",
                "flexpoint-plugin-all/flexpoint-plugin-selector-ab/pom.xml",
                "flexpoint-plugin-all/flexpoint-plugin-selector-cache/pom.xml",
                "flexpoint-plugin-all/flexpoint-plugin-selector-code-version/pom.xml",
                "flexpoint-plugin-all/flexpoint-plugin-selector-code/pom.xml",
                "flexpoint-plugin-all/flexpoint-plugin-selector-gray/pom.xml",
                "flexpoint-plugin-all/flexpoint-plugin-selector-tag/pom.xml",
                "flexpoint-plugin-all/flexpoint-plugin-selector-tenant/pom.xml",
                "flexpoint-plugin-all/flexpoint-plugin-selector-weight/pom.xml",
                "flexpoint-plugin-all/flexpoint-plugin-slowcall/pom.xml",
                "flexpoint-plugin-all/pom.xml",
                "flexpoint-spring/pom.xml",
                "flexpoint-springboot/pom.xml",
                "flexpoint-test/pom.xml",
                "pom.xml"
              ],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "flexpoint-common/pom.xml, flexpoint-core/pom.xml, flexpoint-dependencies-bom/pom.xml (toolchain convention, no task runner)",
                "points": 12.6,
                "status": "partial",
                "details": [
                  {
                    "code": "toolchain_convention",
                    "params": {
                      "files": "flexpoint-common/pom.xml, flexpoint-core/pom.xml, flexpoint-dependencies-bom/pom.xml"
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "Java (statically typed)",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "Java"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "no agent-authored commits among the last 100",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_authored_commits",
                    "params": {
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "no automated dependency updates observed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_dependency_automation",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "no dependencies found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "primary_language": "Java",
              "largest_source_bytes": 21202,
              "source_files_sampled": 181,
              "oversized_source_files": 0
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "Java (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "Java"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "0/181 source files over 60KB",
                "points": 55,
                "status": "met",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 181,
                      "oversized": 0
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "at_risk",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "example_dirs": [
                "example"
              ],
              "has_mcp_signal": false,
              "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": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": "example",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "example"
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
    "Could not fetch maven package 'io.github.xiangganluo:flexpoint-test' from its registry",
    "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-24T20:07:25.659984Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/x/xiangganLuo/flex-point.svg",
  "full_name": "xiangganLuo/flex-point",
  "license_state": "standard",
  "license_spdx": "Apache-2.0"
}

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

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

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