MWest2020/estafette
GitHub: MWest2020/estafette
Estafette 是一款命令行工具,通过编排现有扫描器机械化评估代码仓库的可迁移性并生成带分级判定的审计报告。
Stars: 0 | Forks: 0
# estafette
**没有参与过的人能让这东西跑起来吗?Estafette 以机械化的方式回答了这个问题。**
Estafette 使公共部门的 proofs of concept **具备可迁移性——而且是有衡量标准的可迁移性**。它是一个命令行工具,用于根据 *transfer manifest* 评估代码仓库,并生成一份带有 tier 判定的**可迁移性报告**。它负责编排现有的、受信任的 scanner,而不是重新发明它们。
- **状态:** 早期开发中(v1 进行中)。完整计划请参阅
[`openspec/project.md`](openspec/project.md)。
- **许可证:** [EUPL-1.2](LICENSE) — 从第一天起即公开。
- **Python:** 3.12+
- **包/运行器:** [`uv`](https://docs.astral.sh/uv/)
## 它的功能
给定一个仓库和一个 transfer manifest,estafette 会运行一组固定的机械化检查,并针对每次检查报告:
- **状态**(pass / fail),
- 针对每次失败提供一个可操作的 **gap**(例如 *“代码中引入了依赖 `X` 但未声明”*),绝不会只是一个单纯的红叉,以及
- 它所使用的**证据**,确保判定结果可审计。
然后它会分配一个 **tier**。在 v1 版本中,唯一实现的 tier 是 **bronze** —— 这是使关于复用的对话得以开展的基础底线。
### Bronze 等级
1. 符合 REUSE 标准(每个文件都有许可证 + 版权信息)
2. 声明的许可证在其出现的所有位置保持一致
3. 未检测到 secrets
4. SBOM 顺利生成并与声明的依赖项匹配
5. 存在 transfer manifest 且有效
6. Contact/owner 字段不为空
**Silver**(在隔离的 harness 中可复现地构建)和 **gold**(可由第三方部署,数据需求可满足)已作为路线图在 [`docs/tiers.md`](docs/tiers.md) 中明确规定,但目前尚未强制执行。不过,构建 harness 本身在 v1 *已经* 内置,其结果会以信息形式报告(“这是否能通过 silver:是/否 + gaps”)。
## 设计原则
Estafette **负责编排,而非重新发明**:
| 关注点 | 工具 |
| ---------------------- | ----------------------- |
| 许可证清晰度 | [REUSE](https://reuse.software/) |
| 软件物料清单 | [`syft`](https://github.com/anchore/syft) |
| Secret 检测 | [`gitleaks`](https://github.com/gitleaks/gitleaks) |
| 漏洞 | [`trivy`](https://github.com/aquasecurity/trivy) *(v2)* |
Estafette 自身的代码包含了 manifest schema、构建 harness、tier 语义以及报告——除此无他。完整的不变量请见
[`openspec/project.md`](openspec/project.md);重点如下:
- **机械化,否则无效** —— 一个 tier 永远只是引擎对特定 commit 处理后的输出。
- **诊断,而非仅仅判定失败** —— gap 报告才是核心产出。
- **不受信任的代码绝不在常规环境下运行** —— 构建 harness 在 run 阶段运行于无网络的 rootless `podman` 中,并设有严格的资源限制。
- **确定且可复现** —— 相同的 commit + 相同的 estafette 版本 →
字节完全相同的报告正文。
- **判定路径中绝对不使用 LLM。**
## 用法(目标)
```
uvx estafette assess [--manifest path/to/manifest.yaml]
```
这会在 `reports/` 下生成 `report.json` 和人类可读的 `report.md`。
## transfer manifest
transfer manifest 被设计为 **[`publiccode.yml`](https://yml.publiccode.tools/) 的一个扩展配置**,而非竞争对手:在存在重叠的地方,字段名称保持一致。请参阅
[`docs/manifest-spec.md`](docs/manifest-spec.md)。
## 开发
本项目使用 [OpenSpec](https://github.com/Fission-AI/OpenSpec)
工作流(propose → apply → archive)。已提议和正在进行中的工作位于
[`openspec/changes/`](openspec/changes/)。
```
uv sync # install dependencies
uv run pytest # run tests
```
## 许可证
[EUPL-1.2](LICENSE)。版权所有归 estafette 贡献者所有。
标签:Python, SBOM, 开源治理, 无后门, 硬件无关