用途
Create-Prove 用于为 Aeon 型变更提供行为证据。它针对一个不可变的 PR 目标(格式为 owner/repo#pr@40 位小写 SHA),实际运行被改动的技能,并将与 SHA 绑定的证据回执发布到该 PR。其判断前提是:通过 diff 审查不等于证明行为正确,只有一次成功且可关联的 Actions 运行才构成证明。
适用目标与范围
当前首个实现仅支持符合 Aeon 形态的 PR:即恰好改动一个可运行的 skills/<slug>/SKILL.md。它不启动常规应用程序,也不推断哪个技能代表仅工作流或仅配置的变更。不支持的目目标形态必须失败关闭(fail closed),且不发布证明回执。该技能不得通过递归调度自身来证明 create-prove,遇到此情况以 PROVE_UNSUPPORTED 退出。
使用方式与流程
输入变量 ${var} 为必填的不可变目标,形式为 owner/repo#pr@40-character-lowercase-sha。执行步骤包括:
- 解析目标为 target=owner/repo#pr 与 expected_sha;任何不符合该精确语法的值以 PROVE_INVALID_TARGET 退出。
- 通过 gh api 读取 PR,要求全部满足:PR 处于 open;当前 head.sha 等于 expected_sha;head 分支属于同一仓库(因为 gh workflow run --ref 无法在基础仓库中执行不受信任的 fork 分支);恰好一个改动路径匹配 skills/<slug>/SKILL.md;slug 不是 create-prove。任何不匹配以 PROVE_UNSUPPORTED 或 PROVE_STALE 退出且不出具回执。
- 检查被改动技能的 frontmatter 与指令,选择最小的、真实的、非破坏性的变量来触发被改动行为。若不存在安全的真实调用,以 PROVE_UNSAFE 退出,而非编造证据。不使用合成凭据或 dry-run 模式。
- 按文件名调度目标分支的工作流,使用唯一关联 ID,其 dispatch_id 必须以字面前缀 prove- 开头。仓库的 .github/workflows/aeon.yml 的 commit-skip 守卫仅识别该精确前缀以判定本次运行是被证明的,而非普通调度,并且不得对其正在证明的分支进行 commit 或 push。该前缀错误会静默破坏本技能存在所依赖的不可变 head 保证:
dispatch_id="prove-${pr_number}-$(date -u +%Y%m%dT%H%M%SZ)-${RANDOM}"
gh workflow run aeon.yml --repo "$repo" --ref "$head_branch"
-f skill="$skill" -f var="$proof_var" -f dispatch_id="$dispatch_id"
- 仅通过精确关联的运行标题来发现该运行,规则与 chain-runner.yml 一致;绝不只选取该技能最新一次运行。
- 最多等待 30 分钟,要求 status=completed 且 conclusion=success。获取运行日志与被捕获的技能输出,确认输出非空且不包含 No output captured.。若 Actions 包装成功但未捕获行为,则为 PROVE_MISSING_EVIDENCE。
- 重新读取 PR,要求其 head SHA 仍等于 expected_sha。
- 发布一条 PR 评论,包含对所行使路径的简要描述、运行 URL、简短输出摘录,以及恰好一个最终机器回执:
<!-- aeon-proof:{"schema":1,"target":"owner/repo#N","sha":"<sha>","kind":"aeon-skill","skill":"<slug>","evidence_run_id":123,"evidence_url":"https://github.com/owner/repo/actions/runs/123","verdict":"proven"} -->
JSON 使用 jq -cn 构造,然后渲染为一行。在上述所有关卡通过前不得发布回执。
最后在捕获输出中给出 target、skill、run ID、run URL 以及 PROVE_VERDICT=proven。
约束
- 证明运行必须执行 PR head 分支,而不是 main。
- 绝不把 CI 检查、源码检查或先前的审查回执当作行为证据。
- 绝不针对失败、取消、超时、过期、空输出、不支持或不安全的运行发布 proven 回执。
- 不要合并、关闭、批准或修改目标 PR。
- 不要提交仓库文件。
网络与日志
所有 GitHub 读取、调度、日志获取与 PR 评论均使用 gh;认证由工作流提供。绝不打印 token,也不把机密值放在命令行上。
将结果追加到 memory/logs/${today}.md 的 ### create-prove 下,包括 target、SHA、所选技能、证据运行 ID 与最终判定。工作流可代为持久化捕获的输出。
限制
当前仅支持恰好改动一个可运行 skills/<slug>/SKILL.md 的 Aeon 型 PR;不支持常规应用启动,不推断仅工作流或仅配置变更对应的技能;不支持的形态一律失败关闭。其他平台或运行环境支持暂未提供。