真值来源
RFC 与决策策略
- RFC 以
Draft开始。 - 只有当决策记录在
docs/decisions.md中且链接文档已对齐(符合docs/rfcs/README.md第 7-8 行)时,RFC 才会变为Accepted。 - 被取代的立场记录在
docs/decisions.md的Superseded Positions下。 - 除非相应的决策已存在于
docs/decisions.md中,否则不要在此任务中更改 RFC 状态。
更改代码之前
- 阅读
docs/INDEX.md。 - 阅读
docs/decisions.md以及相关的 RFC/目标注释。 - 如果更改涉及公共 CLI 标志、目标 id、能力 id、制品字段、验证命令、目标生命周期阶段或示例合约行为,请在同一次更改中更新最近的真值来源文档。
- 运行
docs/validation-gates.md中与所触及边界匹配的窄门。
命令运行器规范
- 根目录
justfile是面向开发者的命令目录,用于常见本地工作流,例如just build、just check、just evm-smoke abi-scalar和just evm-all。 - 将较长的目标 harness、生成的测试工程、validator 和特定目标的 shell
逻辑保留在
scripts/中;justfilerecipe 应组合这些脚本,而不是内联 它们的实现。 - CI 应调用与本地常见门禁相同的
justrecipe,同时在有助于定位失败时保留独立 的 GitHub Actions 步骤。 - 添加面向用户或 CI 覆盖的 smoke 脚本时,应在同一次更改中添加或更新匹配的
justrecipe/list 入口。 - 文档可以用
just命令展示常见工作流,但当某个脚本是验证门禁的权威实现时, 目标文档仍应命名底层脚本。
分支与目标策略
- 目标、链或后端 spike 应由目录和 target id 表示,而不是由长期 feature branch 表示。
- 触及下列真值来源文件的更改,必须以独立、可 review 的 PR 落到
main, 不应批量夹带在某条链分支里:ProofForge/IR/*ProofForge/Target/*ProofForge/Contract/{Spec,Intent,Source}*docs/capability-registry.mddocs/decisions.mddocs/portable-ir.md
- 链分支合并后,应 retire 对应 remote branch;从那一刻起 trunk 拥有该 target。
i18n 规则
- Feature branch 和 chain branch 不应修改
docs/zh/*.zh.md或scripts/i18n/manifest.json。 - Translation sync(
scripts/translate-docs.py)只在main上运行,并且应在英文 真值来源文档稳定后再运行。
Lean 包规范
- Lean 工具链是来自
lean-toolchain的leanprover/lean4:v4.31.0。 - 基础构建门禁是
lake build。 - 当前库根为
ProofForge、ProofForge.Evm、ProofForge.Compiler.Yul.AST、ProofForge.Compiler.Yul.Printer以及来自lakefile.lean第 7-14 行的ProofForge.Compiler.LCNF.EmitYul。 - 可执行文件为
proof-forge,根位于ProofForge.Cli,包含来自lakefile.lean第 16-19 行的supportInterpreter := true。 - 新编译的 Lean 模块必须由现有根导入或添加到 Lake 根中,文档才能声称它们是包的一部分。
当前 EVM 规范
- EVM 合约导入
ProofForge.Evm和open Lean.Evm。 - 导出的合约入口使用
@[export l_<Contract>_<method>],且必须匹配--methodCLI 标志或同级的.evm-methods文件。 - EVM 文档中的能力名称必须重用
docs/capability-registry.mdid:events.emit、crosscall.invoke、account.explicit、storage.pda、crosscall.cpi。不要引入替代 id,例如events.log、cross_call.contract或account.container。
计划行为标签
任何未在此仓库中实现的任务命令、目标、制品字段或验证路径必须标记为Planned 或 Research,不得写为当前行为。