FOSSA 治理基线¶
状态¶
BLOCKED_EXTERNAL,最后验证时间为 2026-07-16。跟踪项为
GitHub issue #436。
本页记录 FOSSA 变更前的可公开复现证据和凭据边界。它不是合规通过结论,也不枚举认证后才能读取的 issue 明细。
公开 FOSSA 快照¶
公开 project API 入口为:
https://app.fossa.com/api/projects/git%2Bgithub.com%2Fretrofor%2Fiamai?ref=dev&ref_type=branch
完整 project JSON 含有不应进入 issue、CI 日志或文档的 updateHook.secret_key。不得直接输出或先保存
原始响应;查询时必须在管道中直接构造白名单投影,例如:
curl -fsSL 'https://app.fossa.com/api/projects/git%2Bgithub.com%2Fretrofor%2Fiamai?ref=dev&ref_type=branch' \
| jq '{locator, public, default_branch, tracking_branches,
policy: {id: .policyId, title: .policy.title, type: .policy.type},
last_analyzed_revision,
head: {locator: .head.locator, updatedAt: .head.updatedAt,
integration_hook_status: .head.integration_hook_status,
dependency_count: .head.dependency_count,
license_count: .head.license_count,
todo_count: .head.todo_count,
unresolved_issue_count: .head.unresolved_issue_count},
dev_reference: ([.references[]
| select(.name == "dev")
| {name, type, revision_id}][0])}'
2026-07-16 的白名单快照:
locator:
git+github.com/retrofor/iamai;project 为 public。default branch:
master;tracking branches 包含master,不包含dev。policy:
Single-Binary Distribution,policy id98653,typeLICENSING。last analyzed project revision 仍是
a59126dec42ebeb6dd55df9fd7382284fb4a7af0,创建时间为 2026-05-06 06:16:49 UTC。旧
masterhead 显示 119 dependencies、54 licenses、9 todos;公开摘要在 2026-07-16 重新计算后显示 0 unresolved licensing issues,但它仍是旧 revision,不能证明当前dev合规。 该旧 revision 的 source-license matches 仍包含AGPL-3.0-or-later``(``docs/source/credits.md) 和AGPL-3.0-only``(``Cargo.toml、DECLARED_LICENSE、COPYING);应分析当前dev并核对新匹配路径,不能改写历史 revision 来制造通过状态。devreference 已前进到1e34500e8357e36477536f5c76f5d9548aaae0d7,但该 revision 的integration_hook_status为NONE,依赖、许可证和 issue 计数均为空。当前 GitHubdev为d2e5216b8c611c7f7e53e0027865919bd790f33f,对应公开 revision API 返回 404。licensing issue scanning 和 status check 均启用;GitHub update hook active,last error 为 null。
最新可复现的 pull request revision 71eb09e4f9b753caf1651429b2f58723cbcf13f6 已完成分析,
公开 revision 摘要显示 113 dependencies、37 licenses、8 todos、0 unresolved issues,并识别出
first-party MIT。它的 GitHub License Compliance status 成功,但 target URL 仍错误地位于
refs/branch/master/71eb09e...;合并后的 dev SHA 没有 FOSSA status。
状态结果也会随 revision 改变:1c49ebd 的 GitHub status 报告 3 issues,后续 c2321ac 和
71eb09e 报告全部通过。未认证的 revision 摘要不能替代完整 finding 清单,也不能解释旧 status
中的 dependency、version、license、policy、locator 和 disposition。
认证边界¶
当前终端没有 fossa CLI,FOSSA_API_KEY、FOSSA_API_TOKEN、FOSSA_TOKEN 均未设置,
常见用户配置目录中也没有 FOSSA 凭据。公开 project、revision、dependencies 和 licenses API 可读;
issue、issue export 和 policy rule API 返回 HTTP 302 到登录页,revision 页面显示
window.logged_in = false。
FOSSA 官方权限模型将所需能力拆分如下:
导出完整 finding 清单需要 Full credential 或 UI session 以及项目 View 权限;
修改 default/tracked branch 需要项目 Edit 权限;
应用 licensing policy 还需要
SetPolicy;纠正跨项目 dependency license metadata 需要 organization Admin 或 Editor。
因此 project-admin 不是唯一可行角色,但 Push-Only token 不足以读取或管理这些数据。GitHub App、
.fossa.yml 和带 Push-Only token 的 GitHub Actions 也不会向执行者授予上述 FOSSA 权限。
因此下列操作不能在当前凭据边界内完成:
导出包含 issue id、dependency、version、license、policy、locator 和状态的完整 finding 清单;
备份或修改 FOSSA project settings 和 policy;
把 default/tracked branch 改为
dev;把 policy 改为
Standard Bundle Distribution;对精确
devSHA 发起新分析,处理或逐项豁免 findings;证明精确
devrevision 的 first-party license 为 MIT 且没有未处置的 AGPL 匹配。
仓库与 GitHub 基线¶
GitHub 默认分支是 dev,repository license API 返回 MIT。dev 的 required checks 只有:
Lint / Rust / Config;Pytest (Python 3.11);Pytest (Python 3.12);Pytest (Python 3.13);Docs。
FOSSA 不在 required checks 中;在认证后的 dev 重分析通过前必须保持这一状态。
仓库中没有 .fossa.yml 或 FOSSA workflow。全部 13 个受版本控制的 Python project metadata 都声明
MIT,Cargo.toml 也声明 MIT。发布输入的基线 digest 为:
uv.lock b31f2c8cb9702ab7452c1e377ce6638ebfe36e8a99ae676b9d020f11ec79acb1
Cargo.lock ea8cda5d4e4aa258b2716241315948a093615faa569c27a34326159a6f951860
官方权限与 API 参考¶
权限和恢复步骤以 FOSSA 官方文档为准:
恢复步骤¶
取得带最小充分权限的 FOSSA Full credential 或 UI session:issue export 需要 View,branch 设置需要 Edit,policy 应用需要
SetPolicy;不得把 token 写入 issue 或日志。在变更前导出 project settings、旧 policy,并对精确 revision 分别使用
status=active和status=ignored导出 issues;也可用/api/v2/issues做等价的完整分页导出。清单必须保留 issue 状态、policy rule、豁免或忽略理由,不能只保存默认的 active 结果。把 default/tracked branch 改为
dev,policy 改为Standard Bundle Distribution;此时不改 GitHub branch protection。FOSSA 没有可直接设置的 project source-license 字段。对执行时最新
devSHA 和一个基于该 SHA 的 pull request revision 分别发起分析,核对 BOM 与uv.lock、Cargo.lock和发布 artifacts,并确认 first-party license 结果包含 MIT、不包含 无法解释的 AGPL。只有证明匹配路径不属于发布物或 first-party source,并记录 owner、理由且保留 过滤前后的 match inventory 时,才能使用 scan path filter。FOSSA dependency correction/conclusion 不能 充当 project source-license 设置。Dependency license correction 必须限定在 FOSSA 支持的对应 scope, 记录审计证据,并取得所需的 organization Admin 或 Editor 权限;license dispute 按项目 issue 的访问 权限提交,并同样保留证据和审计记录,不能把 correction 的组织级权限要求套用到 dispute。修复真实 finding;无法立即修复的项目必须逐项记录 owner、理由、批准日和到期日。
同时验证两个 revision 的 FOSSA 页面/API 与 GitHub commit status,再把 revision、policy 或 waiver 决策、package license metadata 证据链接到 #436 和 release checklist。
unresolved findings 清零或逐项处置,并在 2026-08-15 前关闭现有
v0.3.0waiver 或用新的具名、 限时决策替代后,才能关闭 #436;是否将 FOSSA 设为 required check 另行决策。
完成门槛¶
FOSSA 的 default/tracked branch 和 last analyzed revision 必须指向同一个已记录的 dev SHA;policy 为
Standard Bundle Distribution,该 revision 的 first-party license 为 MIT,没有未处置的 AGPL 匹配;
完整 issue inventory 可追溯到该 SHA 和 lockfile digest;未解决项为零或都有具名、限时豁免;
一个 dev revision 和一个 pull request revision
的 License Compliance status 都成功;#436 与 release checklist 含 revision、policy/waiver 和 package
license metadata 证据;现有 v0.3.0 waiver 已关闭或被新的具名决策替代。