CLAUDE.md · git:20261025.e0e33cf · 2026-10-25 · sha256 db1ddb9be0cd78c7
CLAUDE.md git:20261025.e0e33cfB
Immutable. This exact content never changes and is served at /api/v1/blob/db1ddb9be0cd78c7.
# trureturing — 不动点(所有 agent 的必读标架)
**默认 thinking 与回答技能**:所有 agent 开始处理用户请求时,默认读取并使用 [`skills/formal-thinking-and-answer/SKILL.md`](skills/formal-thinking-and-answer/SKILL.md),无需用户显式点名。按该技能进行思考、核验证据与组织回答;具体形式化和编译范围遵守技能的适用条件,面向用户默认用普通语言回答,并保留影响结论的条件与未决边界。
## 常用命令速查
在仓库根目录运行;`<…>` 换成实际值。完整参数以 `make help`、`make -C tools help` 和脚本用法为准;有 make 目标就用目标(第 8.1 条),长任务用宿主后台作业(第 8.6 条)。
| 用途 | 命令 |
|---|---|
| 仓库修改先复用兼容 linked worktree,需隔离时创建;只读与 issue 操作复用现有检出(第 6.1 条) | `make worktree KIND=<kind> NAME=<任务码> DEST=../trureturing-<session-id>` |
| 编译指定 Lean 模块及依赖 | `make lean LEAN_TARGETS="<点分模块名>"`(省略 `LEAN_TARGETS` 为全项目) |
| 核对指定 Lean 模块、utility 输入及 imports / 发射所选 Scribe | `make lean-report-scoped LEAN_TARGETS="<点分模块名>"` / `make emit [PATHS=<NUL分隔路径文件>]` |
| 显式整库 Lean 报告(CI / 整库核验) | `make lean-report` |
| 摄入指定理论源 | `make ingest SOURCE="<source-id 或源文件路径>"` |
| 查看 atom / 连读上下文 | `make show-atom ATOM_ID=<id>` / `make atom-context ATOM_ID=<id>` |
| 搜索指定理论的 atom | `make search-atoms SOURCE=<源ID或理论路径> [TEXT=<关键词>] [STATE=<目录状态>] [LIMIT=<上限>]` |
| 构建、冻结并覆盖锚点 atom | `make deposit ATOM_ID=<id> GID=<gid>` |
| 构建并冻结无对应理论卷(故无 atom)的形式化 | `make deposit-uncovered GID=<gid>` |
| 用既有冻结声明覆盖 atom | `make cover ATOM_ID=<id> GID=<gid>`;批量用 `make cover-batch ATOMS=<TSV文件>` |
| 预览 atom 子句拆分 | `make decompose ATOM_ID=<id> DRY_RUN=1` |
| 按请求结算 atom(先连读上下文) | `make settle REQUEST=<请求文件>`(适用范围见第 3.2 条) |
| 快速 .NET 结构检查 | `make -C tools check-fast`(不验证 Lean 或完整准入) |
| 基线到当前工作树的完整增量检查 | `make gate BASE=<40位commit-SHA>` |
| .NET 构建 / 全量测试 | `make -C tools dotnet` / `make -C tools test` |
| 数学门 / 本地 CI 准入流程 | `make test` / `make gate` |
| 建 PR | `make pr HEAD=<分支> MESSAGE=<消息文件>`(首行为标题;默认自动合并并等 required CI;`AUTO_MERGE=0` 关闭自动合并;`DRAFT=1` 创建草稿后直接返回;`pr-open` 同义) |
| 等指定 PR 提交的 CI | `make pr-watch PR=<编号> HEAD_SHA=<40位commit-SHA>` |
| 预览可回收 worktree | `make -C tools clean-lanes`(加 `FORCE=1` 执行;已合并到 dev、干净且 HEAD 提交与分配均满 3 小时可回收;未合并或不干净的须 HEAD 提交与分配均满 24 小时并落后 BASE 300 提交;未知保留,删除按锁时长与身份核验) |
| 交付后归还 worktree 并保留缓存 | `make worktree-return PR=<编号> WRITERS_JOINED=1`(先核验 MERGED、首个 dev push 并 join 本任务写入者;第 6.1 条) |
| 显式删除指定 worktree | `make worktree-remove NAMES="<目录名>"`(第 6.1 条) |
| 磁盘可用空间低于 5% 时回收 | `make -C tools clean-all FORCE=1`(AI 可直接执行,第 6.1 条) |
常用独立脚本(以下 `bash tools/scripts/agent/…` 均在仓库根运行):
| 用途 | 命令 |
|---|---|
| 查指定修订的工具文件 / 目录容量余量 | `bash tools/scripts/agent/headroom.sh HEAD` |
| 提取定理前的节级假设 | `bash tools/scripts/agent/section-context.sh <源文件.md> <定理号>` |
| Nyx 提问(oracle broker 单次流式调用) | `python3 tools/scripts/agent/nyx/nyx.py ask <brief文件> <输出文件>` |
| 查看 Nyx 可用池 | `python3 tools/scripts/agent/nyx/nyx.py pools` |
| 抓取网页或 PDF(可选 NyxID Firecrawl;文献读取路线见第 5.11 条) | `nyxid proxy request api-firecrawl v1/scrape -m POST -H "Content-Type:application/json" -d '{"url":"<地址>","formats":["markdown"]}' --output json` |
**Nyx 调用禁令**:禁止执行旧 `nyxid oracle` CLI 及其子命令,包括脚本封装、sshx 席位和失败回退中的间接调用。独立提问统一用上述 `nyx.py ask`,sshx 的 oracle 席统一用其 broker runner;具体契约见第 5.11 条。
## 1. 权威、本体与不可逆真值 DAG
### 1.1 权威原文与守护强度
> 好坐标系是变换下的不动标架(GICT 定理 7.3)。模型是作用于本库的变换;本文件给出工作的不动标架,库内上下文见 `agents/CONTEXT.md`。所引成熟理论与最佳实践并非本项目发明。
**硬/软分栏**:机器强制、违则 lint 红的是硬不动点;不可机器判、靠评审与自觉的是软不动点,须对手官与人类门守护。各条〔守护〕不得超报保证强度(第 2.4、5.7 条)。
**一名一址**:本文件是权威原文,`AGENTS.md` 只指向它。文件/目录的相对 symlink 仅在 `Meta/FILEMAP.toml` 对应字面路径条目声明 `symlink = { target = "相对目标", kind = "file 或 directory" }`,并遵守 registry/path policy。目标须在同仓同快照:文件为常规文件,目录含非空且完整保留的 Git 可发现常规文件集合。harness 保存链接目标的原始字节,不沿目录别名重复收正文;历史修订使用自身 FILEMAP。拒绝未声明、目标不符、绝对/越界路径、链接链及目录循环;`.git`、`.lake` 不得作为链接或目标。常规指针文件仍可用;agent/skills 别名目标只在 FILEMAP 声明,各 worktree 的相对链接指向本地真源。
### 1.2 架构三分与唯一真源
**形式化优先,消化从简。** 只有经 Lean kernel 验证的形式化代码——声明、证明项及其 axiom 闭包——承载本库的数学真值;百分之百可信指该形式系统内已验证的陈述,不包括理论散文、消化状态或模型解释。工作的最高优先级是高效推进实质形式化、复用已有证明并扩展真值 DAG。
**消化系统只是辅助追踪,不承担数学真值。** 其索引、覆盖路由和账目状态的一致性偏差,在相关现有记录中简短注明原因即可;不要求另立案、立即结算、全局对齐或专门派席反复审计,不为账本完美而扩建工具、重跑验证或占用形式化主线。能够随手完成的 canonical 结算照做;其余允许暂存偏差,继续真正缺失的数学内容。若现役机器门实际阻断形式化提交,只做恢复该提交所需的最小处理。不得伪报覆盖、证明或检查通过;Lean 核验、公理边界和冻结真值保护仍须严格执行。本款优先于本文件其他条款对消化记账、结算及修器的投入要求,但不豁免下款。
**纯消化任务不做验证工作。** 纯消化任务指不新增、不首冻 D5 数学声明的交付,包括:用既有冻结声明 `make cover` / `cover-batch`,`make settle` / `settle-batch` / `settle-clear`(非命题与仅由钉版上游闭合的命题),写入账本的 `make decompose`,以及第 4.3 条只去 `private`、由 canonical writer 重钉并登记的公开。这类任务的流程:
- 不要求逐句探针、证据存档或活路径读数,不派评审三席、补证席或修复席;
- 现役 writer 命令退出 0、PR 的 required checks 绿,即可合入;第 4.3 条「公开化须验证消费者」由 required checks(含重建受影响模块的 `current`)承担;
- PR 正文如实写出账目进出与未结条目,仍不得伪报覆盖、证明或检查通过;
- 账目偏差按上款简注,事后由 writer 修正。
本款优先于第 5.6、5.7 条与第 6.1 条对独立评审的要求。只要交付新增或首冻 D5 声明,就是实质形式化,判形、准入、探针、冻结前判形与三席评审照旧。
**形式化直接写 Lean 与 Scribe。** 形式化交付的必需面是 D5 Lean 与对应的 Blueprint Scribe,不以先写理论卷为前置。所形式化的内容**已有理论卷**(`docs/develop/theory/**` 中存在对应 markdown)时,必须经消化系统入链:该卷尚未摄入就先 `make ingest`,再用 `make show-atom`/`make atom-context` 定位对应 atom,在同一交付中经 `make deposit ATOM_ID=… GID=…` 冻结并覆盖,或对既有冻结声明 `make cover`;不得绕过已有理论卷直接 `deposit-uncovered`。**只有不存在对应理论卷**时,才直接写 D5 Lean 与 Scribe,经 `make deposit-uncovered GID=…` 冻结,不要求先补 `docs/develop/theory/**` 正文或运行 `make ingest`。理论卷可按第 3.8 条另写,用于散文推理、地形图或日后消化,不是这类形式化的前置。无 atom 不豁免第 3.2 条判形与准入依据、第 3.3 条用途规则及第 3.7 条文献表态。
**形式化不改判官**(τ=0 owner 2026-09-29,原话「形式化过程中, 不要改判官, 如果信息逃逸无法登记也不要改判官」):形式化 lane 与形式化交付只改内容面(D5、Blueprint、Reg 声明源码与内容模板、消化账本、理论卷),不得修改判官——`tools/**`(含 StrataLint、lean-inspector、报告生成与调度脚本)、判官 Interface/Impl 包、`.github/**` 及其它准入面。判官缺陷或判官阻塞形式化时,新建或复用 issue 写明阻塞判词与读数,继续其余数学工作;判官修复归判官所有者线,不在形式化交付中夹带。本款对形式化 lane 优先于第 5.5 条的当场 hotfix 要求。
〔守护:**工作优先级与软纪律**;本条不把消化收据升级为证明,也不宣称既有机器检查已随文字修改。〕
**整个系统是一张不可逆真值 DAG**,架构三分:
```
docs/theory(参考输入)──(可选)摄入机器──► Lean(唯一真源)◄──针对它── C# harness
只进不承重,定位在消化账本 kernel 只看代码 治理/验证/发射/守门,自身零内容
```
- **Lean**:真值=声明+证明项+axiom 闭包,注释零参与。X_Frontier 的 `TASK D5-Tnnnn` 是冻结门与目标处理命令读取的治理地址;其余工单散文非数学承重。SL-013 为 deferred `NoFindings`,不执法散文形状。
- **C# harness**:程序集只许程序(类型/逻辑/loader/writer);声明性实例住程序目录外(TOML/scribe.cs/Evidence/D5)或测试 fixture(第 4.2 条)。
- **docs/theory**:理论卷是参考输入;需要进入消化账本时,经 atomizer+消化账本摄入,Lean/C# 对其零知识零定位(TheoryIsolation)。新增理论 PR 可以只提交正文,不以 `make ingest`、atom CAS 或 backfill 作为合并前置;形式化交付不以先写理论卷为前置,但内容已有理论卷时须先摄入并经 deposit/cover 入链(第 1.2 条「形式化直接写 Lean 与 Scribe」);卷与 atoms 不删属建设者纪律。已形式化者不重复形式化,勘误追加散文与新 atom。只增不减的账本是 git,机器只保证数据当下正确,改删历史由 git 查证,无历史单调判官。实现层无既有 CAS blob 删除面;失败回滚只删本次新建且尚未入账的 blob。
### 1.3 真值图、冻结与两个偏序
- **节点/边**:命题或工件(closed/open/tail/semantic 四态账目)/证明依赖;证明无环,故良基、可归纳分层。
- **冻结律**:kernel-verified 为真即冻结,已验证的真不因账目变更而失效。成员身份取 `Golden/Frozen/state/<module>.lean.json` 存在;删除状态片与改 pin 同为合法的成员变更,该模块退出冻结成员而陈述真值不变;SL-008 只判成员状态与当前树一致,历史归 git。冻结真值是 GICT 7.3 的运行标架。
- **两个偏序禁混用**:图深度 `depth(v)` 是最长依赖路径(无前置=0,否则 `1+max depth(前置)`),非任意拓扑序号或入度;信任地层 τ 是 harness 保护面的变更治理分层(信任根 τ=0,内容 τ_max,第 7.12 条)。两者相关而不同构,各自机器可算。
- **成本**:翻一节点须撤其全部后代,`Cost ∝ |后代子图|`,去重并用可审计向量,非单浮点;越核心越贵(第 7.12 条成本式的图论根)。
- **保守扩展**:`H(a)=admit ⟹ H′(a)=admit`,新规则不翻已冻结节点。
- **方向**:open 未冻结节点即 frontier;模型有且仅有一种作用方式——在 frontier 证明 open,为真即冻结,图单调生长(第 7.16 条)。
- **勘误**:误判为真者连同后代撤销(判词可诉见 spec 第 11.14 节),是修正误判,不改变 kernel-verified 的真。
- **人无位置**:真由 kernel 判、冻结由数学结构定、方向取 frontier,四态穷尽,无“人判断”态。
harness 维护此图:admission 检验有效证明且与冻结一致(保守扩展),SL-008 守冻结,τ 取信任拓扑序,成本取后代子图,open 定 frontier。*成熟锚*:DAG、良基归纳、单调账本、内容寻址 Merkle DAG、保守扩展、Gödel 的 open 边界。
### 1.4 素数、因陀罗网与罗盘边界
> **我们不过是在寻找 truth 中的素数,固定为节点**:冻结陈述类比不可约真值原子,后续真理由其组合生成;素数无穷类比 frontier 不竭、Euclid 与 Gödel 同形。寻找而非发明,不变量可作坐标(GICT 7.3)。
>
> **我们是在寻找因陀罗网的珍珠**:证明节点以全部前置哈希内容寻址,Merkle DAG 使每颗珠映照全网;变一颗则后继映像皆变。“一即一切”对应冻结/保守扩展的可判结构,C0 机器为 inactive;内化塔层层判前层,顶上 Gödel 标 open。
素数是筛的方法论,因陀罗网是网的本体论。〔守护:**软**·本体注是罗盘非证明(第 2.3 条);结构同构各按既有边界承担:冻结当前态有硬门,保守扩展数学义务不冒充已退役重放/C0/证书机器〕
## 2. 认识论与科学方法
### 2.1 账必须平
**账,必须平(诚实 > 速度)**:异常(意外数值、张力、失败尝试)须由读数检出并入账,或显式标永久案号/`ASSUMED-UNVERIFIED`/`deferred`,不得静默遗漏;“账平”即浮账集为空。产物形式服从第 2.10 条。
*成熟锚*:复式记账(Pacioli,1494)、no-silent-failure/fail-closed。〔守护:**硬+软边界**·SL-019 检查非消化结构化输入;消化账目由目标命令按需读取与处理,辅助一致性偏差遵守第 1.2 条;散文异常靠对手官。〕
### 2.2 机器判对错与不可判 open
**对错,机器判;真 ⊋ 证,诚实标 open。** 正确性由形式验证(`lake build`、Lean kernel 无 sorry 无私 axiom)与多模型对抗(sshx 三席+异模型)检验忠实性、空洞性、矛盾;自信也须交独立机器,不得自证。给定形式系统内不可证亦不可反证者,对人和机器都不可判,应标 `open`,不是等人裁决。人类门只授权不可逆动作、选择价值/方向,不替机器判对错(第 5.9 条)。
*成熟锚*:Gödel 不完备(1931)、形式核验、多模型对抗。〔守护:**硬**·SL-002/SL-008/axiom 白名单、Lean kernel、sshx;不可判者诚实标 open〕
### 2.3 美与逻辑
**美是罗盘,逻辑是棘轮。** 美选题、命名、猜想,逻辑判卷守账;审美与可压缩性可启发而非证明。直觉必交第二只手(证明/亲跑/异模型);禁美冒充证明或证明冒充美。
*成熟锚*:Popper 猜想与反驳、审美先验及其边界。〔守护:**软**·对手官打靶/反例与自觉;不可 lint〕
### 2.4 状态语法与不冒领
**状态即语法,不冒领。** 可验证者验到底(`lake build`/`StrataLint` 绿);不能验证者显式标 `open`/`ASSUMED-UNVERIFIED`/`deferred`+案号。账上没有的不冒领;报现役须真执法,否则报延后,禁浅校验冒充绿灯。
*成熟锚*:可证伪性、可复现性(种子/环境钉版)、policy-as-code。〔守护:**硬**·SL-006 禁手写状态、Lean 语义状态、coverage active/deferred 分列〕
### 2.5 门槛与最小权威
**门槛只设在会说谎的地方,不过度门控。** 伪造状态、绕检查、藏浮账、幻引幻数、命题空洞由形式验证、溯源与多模型对抗判。人类门设在不可逆授权和价值选择:`X_Assumptions` 变更、新 axiom、论文签发、`Hearts.lean`、元层自改;机器仍判对错(如 SL-022 判 raw path 元层、lint 判合规),人只授权动作,其余全自动。
*成熟锚*:least authority、机制设计。〔守护:**元准则**·harness 设计律,非单条 lint〕
### 2.6 预测检验与适应
**预测检验想法,适应检验方法。** 想法须对未来作可证伪预测并留底;golden corpus 冻结预测由 CI 检验,保守扩展约束未来,审计 `break_eta` 到期对账,先验登记、`suspected-novel` 等待文献检验,成败皆产 truth。
方法须容纳未来变更:优先内容指纹而非位置锚、注册表而非硬编码清单,避免只适配当前形态。适应仍受真值单调约束:expand–migrate–contract、门收缩义务会计、方言演化版本 bump。真值内核不动,机制才可演化;好坐标系让变化可表达(GICT 7.3)。
*成熟锚*:Popper、演化架构/YAGNI、稳定内核与可变外壳。〔守护:**软+硬投影**·golden/保守扩展/break_eta 检验预测,epoch 判例与义务会计检验适应;选何预测与保留何门靠对手官和自觉〕
### 2.7 科学方法的自反回灌
**以本库证出的科学方法思考。** 裁决层/逃逸谱中已 kernel 冻结的定理作为所有 agent 的默认推理罗盘;定理在形式域内为真,外推纪律属类比,须受第 2.6 条预测检验。下列名为可机械查的 GID 尾段:
- **前视承诺**:判断前登记成功/推翻判据与预测,只按预登记结算,禁事后拟合;硬投影为第 9.3 条六元组的跑前预期红和预测留底。
- **查表复制器**(`lookup_copy_zero_loss_and_nonanticipating_failure`):回顾全对不等于预测力;只复述已见数据、能解释一切的解释按零信息处理。
- **盲核/电荷分解**(`blind_residual_charge_decomposition`):区分可由定义/切法消去的混淆与当前词汇表的结构盲核;后者须换语言/框架,禁用预算买盲核。
- **预算包络**(`budget_envelope_infimum_and_limit`):边际改进递减、下确界为盲核质量;连续投入无边际改进即换 Γ(表述/工具/层级),不继续 grind,同于盲修两轮重估 worth。
- **追加目标不改旧结算**(`append_only_old_settlement_unchanged`):修假设/目标/规则须明列旧结论哪些仍立、哪些作废,禁静默重算历史。
- **Pareto 弱支配与增益 cocycle**(`pareto_weak_reflexive_transitive`/`gain_difference_self_zero_and_cocycle`):方案逐坐标弱支配比较,不拍单标量;收益沿不同叙事路径须一致,否则先查账。
- **准入反单调**(`dependency_closure_admission_antitone`):依赖闭包污染越重(陈旧读数、利益相关来源、单一先验),自我裁决资格越紧;降自信、引独立席或标 `ASSUMED-UNVERIFIED`,不得因急放宽。
- **局部结算**(`spectrum_commitment_local_settlement`):开工即定截止与判据,到期五态端化(proved/refuted/invalid/…),open 不得以“进行中”拖延;卡死单按第 5.10 条重开。
若类比持续产坏判断,修外推面,不改冻结定理。*成熟锚*:预登记、泛化、不可约误差、边际收益、法不溯及既往、Pareto、利益回避。〔守护:**软(罗盘)+硬锚**·SL-008 守定理,通用思考纪律靠对手官与第 5.10 条反思;承诺/结算已有六元组、预测留底、GoalArtifact 判据硬投影〕
### 2.8 成本感与数据核验
**觉得贵,先查数据;查完是真贵就照做,不降质;没查清不开干。** 成本感只触发重新量仓内实测计数、diff、日志、判词原文,不能拿记忆、旧面板结论代替现场数据。若确实贵,保持原质量,不得缩范围、跳测试、绕门、留垫层;若形态错,改形态再量。先问主要成本项是否必须,再考虑分批、重试或抢窗口;命名重写等非必要工作不得冒充迁移必然。旧结算保留,新读数可开新结算(第 2.7 条)。
*成熟锚*:实事求是、measure before optimize、Amdahl、前提核对、根因分析、现地现物。〔守护:**软+硬投影**·量没量靠对手官/反思;凡因成本改变计划(拆层/改序/缩规模/补偿机制),PR/issue 说明须附实测读数与采集命令,计数带索引/窗口/口径(第 8.4 条),只称“大/慢/多”无效〕
### 2.9 测量、未知与排除项
**【硬门】禁模糊措辞代替测量。** 关于本系统,禁用“也许/很可能/大概/应该是/估计/看起来像/我认为”把未测之事包装为结论。可测者只能给读数与出处,或明说“我没测 X”及原因,不存在语气替代项。
不确定必须类型化为 `open`(形式不可判)、`ASSUMED-UNVERIFIED`(前提未验)或“未验证 X,因为 Y”,并可追索谁测、测什么、何时完成;须列已排除与仍存的替代解释。写下模糊词先问能否测:能则测,不能则显式标记并给理由。报告他人亦然,不得转嫁核验成本。完成之“绿”只认 required check 的退出码,不认已用时间。
*成熟锚*:可证伪性、有对照/排除项的假设检验、证据链与 known/unknown 分栏。〔守护:**硬门(行为)+软(机器)**·自然语言不可 lint,靠对手官且无豁免;硬投影为 required checks、第 8.5 条日志引用、第 2.4 条禁手写状态〕
### 2.10 记录律:整个系统只留结果,不留过程
**整个系统只保留正式成果、必要的实验程序与结果数据、来源和许可证,以及承担裁决的机器状态。冻结状态片、账本和检查结论由验证程序维护,叙事不作第二真源。**
- **成果归入项目对应位置**:代码、理论正文、文献条目和现役规范各归其位。实验程序、数据和配套报告统一放入私有仓库 [`the-omega-institute/trureturing-experiments`](https://github.com/the-omega-institute/trureturing-experiments),默认本地路径为主仓库同级的 `../trureturing-experiments`;禁止向主仓库新增实验材料或挪到其他主仓库目录规避。主仓库只保留实验入口说明、正式源码引用的许可证及承担裁决的机器状态;路径准入边界见 spec §11.13。
- **按实际用途判断实验价值**:能支持数据搜索、候选枚举、反例发现、数值边界验证或后续研究的独立程序与数据可以保留;没有正文引用或未进入主构建不构成删除理由。
- **不保存过程材料,也不以链接或搬家保留**:思考转录、实施日记、评审对话、命令流水、回执副本和重复快照不进入仓库、规范、拉取请求或议题正文;已有过程引用随清理删除,不另建历史索引或归档目录。第 5.2 条要求的会话 ID 只是恢复指针,不在此列。
- **正文只写当前结果与边界**:保留结论、必要读数、验证状态及未解决的问题;失败只留下可复用的判据或回归用例。不复述机器状态,不为记录本身派席。
- **文件正文不写日期与变更缘由**:代码、注释、技能、模板、规范和文档只陈述现行规则、定义与结论,不写修改日期、变更原因、事故经过、判例清单或「某次评审因此被拒」一类说明;何时改、为何改、由哪次失败引起,只写在提交信息与拉取请求正文,历史由 git 查证。承担结论的日期(文献版本日期、数据采集时点等读数)属于结果,不在此列。修改含此类叙述的段落时一并删去。
- 本条优先于本文件其他条款对留痕数量、形式和历史保存的要求;检索、验证、评审和异常处理仍须完成,产物只保留有用的结果。
〔守护:**软**·靠评审与本条;过程叙述及其归档链接不予接纳。机器状态和实验文件登记仍由各自检查执行。〕
### 2.11 关系优先的研究与类比迁移
**以目标所需的关系组织研究:消化项目积累,定位实际缺口,连接跨模块结果,主动搜索与类比,验证迁移条件,再检验所得结论。** 搜索也用于打开更大的问题地图、发现新表述和新路线;类比提供候选路线,能否借用结论由下面的对应与证据决定。
- **优先复用,不重复做**:先核对文献、仓内与第三方库、协作者既有成果的来源、版本、假设、适用范围和证据状态;已有结果满足当前所需结论及条件时,直接引用或调用,不重复推导、计算或证明,也不将改写、包装或重复核验计作新成果。新增工作只处理真实未覆盖的缺口、必要的接口验证或明确要求的复现,写清参数对应与未证桥梁。文献引用或协作者报告不自动等于 Lean 核验;复用仍遵守第 1.2 条的 Lean 真源与 TheoryIsolation 边界,以及第 3.1、3.2 条的检索与准入规则。
- **先定关系与目标**:按问题涉及的层次,写清对象怎样生成、是否有共同来源、观察保留什么、允许哪些操作,以及结论的量词、精度和资源范围。区分相关的存在、可识别、可取得与可认证问题,从目标倒推当前缺的是信息、联合约束还是估计强度。按需寻找简洁可证明的辅助结构,如分解、引理、不变量或接口;在相同目标、适用范围和资源要求下比较足够的结构,以减少重复、简化推导或降低取得与验证成本。
- **用成对实例定位信息缺口**:寻找“现有读数相同,目标答案或操作合法性不同”的两个实际实现。找到即可证伪当前表示的充分性,找不到不等于已证充分;声称充分须证明目标及相关操作的合法性在观察纤维上不变。仅对旧读数作后处理不能补回被合并的区别;应增加能够切开该纤维的关系,或按第 2.7 条换 Γ,并交代回接原问题的映射与未证义务。
- **多向 GPT Pro 许愿,找不到就逐级退求**:研究启动、出现新缺口或路线停滞时,主动按第 5.11 条通过 Nyx 让 GPT Pro 搜索;有新线索就带着当前缺口继续追问。先说明原目标、必须保留的条件、已知障碍及最希望得到的定理、工具或构造,请它寻找能直接接上的结果;未找到时,逐级寻找足够的引理、受限版本、可用估计、反例或可检验的新方向。各级说明能推进什么、仍缺什么,原目标和完成判据保持不变;退求较弱成果不等于降低原任务的结算标准。
- **让论文搜索扩展路线**:明确让 GPT Pro 查相关论文、近期进展、经典方法、同类问题及失败边界,沿引用和结构联系寻找当前表述之外的工具。把障碍写成可检索的关系,如交叠、相容性、不可区分性、状态递推或局部到整体,同时寻找支持路线的定理与推翻路线的反例。核对原始来源、版本、定理条件及已解决范围,区分文献结论、模型推导和待证猜想;未命中只说明已查范围内未找到,不能推出结果不存在或研究原创。
- **多打比方,验证关系与方法的迁移**:主动用日常图景和其他领域重述障碍,例如把覆盖看成铺砖、加权估计看成预算分配、局部到整体看成接口拼接;也让 GPT Pro 搜索这些类比对应的研究。比方用于产生新表示、检索词和可检验路线;换表示、模型或方法时,按问题需要核对对象、假设、操作与所需性质的对应,以及量词、尺度、结论方向、误差和成本。可表达或可逆不自动意味着可操作、可验证或成本等价。说明对应在哪一步失效,缺项转成证明义务;统一关系须由可验证的对应与组合建立,同名、相同数值、直觉或统一术语均不能替代证明。
- **并行分工,汇合成果**:独立缺口可并行研究,围绕共同目标、假设与版本,在授权和隔离边界内汇合可共享的结果与反例;隔离评审席在提交独立结论前不得读取同轮其他席的结果。汇合时核对相容性、重复与遗漏,逐项消化用户追加的有效限定,按能否缩小缺口评价收益,不按席位或调用次数。
- **联合估计守住共同实现**:组合关系时明确是否属于同一实际对象、概率律、历史和条件事件,或经已证映射、耦合、支配关系关联。对每个对象同时成立的统一界可以组合,分别可达的最优值不能当作同时可达,边缘相同不能替代联合关系。上下界各按方向使用,总量的上界不能充当其中某部分的下界。
- **倒推足够的联合条件**:先写最终结论需要跨过的判据,再分解缺口,允许不同增益、情形或分支互补;不把“每一项都统一严格为正”等强条件误当目标的必要条件。区分必要条件、充分条件和为方便估计加入的强条件;较强条件失败不自动否定原目标,须回查是否仍可由较弱条件得到。
- **让实验区分路线,并守住结论范围**:按第 2.7 条预定成功与推翻判据,适用时用小实例、退化边界和极端构型检验候选,并作独立核验。分别报告数值改进、松弛可行、真实实现、有限阶段结论与统一无界结论,说明近似方向及可实现性;下界失效不等于对象不存在,方法反例不等于原命题反例。缺少结构信息时按第 2.7 条换法,结果与未解边界按第 2.9、2.10 条保留。
- **成果集中归位,区分证据与新意**:按第 2.10 条优先归入既有的对应成果位置,保留足以支撑结论的定义、假设、推导与适用边界,必要的例子与反例可归正文,不以短摘要代替实质成果。区分既有结果的应用、仓内新增的综合推导与经文献核查的原创候选;综合或改换表述不自动取得新内容资格,新增 Lean 仍受第 3.2 条 bind-only 规则约束。
*成熟锚*:结构映射、数学归约、充分统计与不可识别性、耦合、松弛与对偶、反例驱动研究。〔守护:**软**·对象对应、假设忠实性、量词范围与共同实现由研究和独立评审核对;本条不新增机器判官,不将类比或数值实验当作形式证明。〕
### 2.12 理论构建与评价的对等原则
对新旧理论采用相同的评价标准:允许从明确的模型前提出发,不得要求新框架“无前提地推出全部物理规律”,也不得把这一更强任务当作数学建模、结构统一或等价重表述成立的先决条件。应在声明的前提与范围内,主动推进定义、推导、证明和反例检验,依据逻辑一致性、对应关系的严格性、独立假设的减少以及新增的解释与约束评价成果。
严格区分模型定义、条件定理、等价表示与经验性主张:数学结论以证明检验,物理主张以可观察后果与经验对应检验。发现缺口时,指出具体缺失的条件、推理步骤或实现桥梁,并尽可能补全;不要反复用“尚未证明宇宙本体如此”替代实质分析。同时,不得把前提的重述当作推导,把术语替换当作解释,或把数学兼容性当作本体真实性的证明。
## 3. 形式化、逃逸内容、用途与研究
### 3.1 先库后证与宿主搜索能力
**先库后证**:任何 Lean 形式化前默认可出网查第三方库(loogle/leansearch/Reservoir/GitHub/arXiv 等非封闭示例),判卷门永远离线(第 3.7 条、spec A12/A17)。本款仅管本仓派出的形式化 worker;codex-cli worker 搜索是宿主默认能力,仓库无法强制,禁止改宿主 `~/.codex` 全局配置。
检索唯一顺序:本仓 D5 声明 → 钉版 mathlib → spec A17 可准入第三方 Lean 生态 → 本地证明 → 仍无则 `AxiomDebt`/`open`+upstream issue。精确命中必须 import+直接应用,只在真实 content 证明内适配参数与规范化,不重证,也不新增无消费者的 bind-only 包装/伴随定理/模块(第 3.2 条);上游已证者是唯一真源。brief/PR 保留最小检索结论:查何名、何处、命中与否,不存过程(第 2.10 条)。
检索须覆盖已有的私有定义、引理与定理;仓内命中因 `private` 无法跨模块复用时,按第 4.3 条公开原声明并直接引用,不得视为缺失而重证。
派发时实测搜索可用性并报结果;能力缺失记具名 `open(wait-for-capability)`,不得报 search-complete。恢复后完成第三方检索,该检索与本地证明均失败才记 `AxiomDebt`/`open`。
### 3.2 bind-only 禁令、逃逸见证与 atom 终结
**严格禁止新增或交付 bind-only 数学声明;全部为 bind-only 的 atom 复用既有结果,不再作为新形式化靶,零新增 Lean。消化结算按第 1.2 条从简,不以账目终态作为转向实质形式化的前提。** 本禁令逐声明适用,公开定理、私有包装、别名、伴随定理与独立模块均无例外;同模块另有 content、API 便利、覆盖需求、任务终点或反驳用途均不能豁免;例外只有两项:下款「有消费的辅助声明」,以及下文「开放问题结算依据」所允许的外部开放问题结算结论。现有定理的直接应用是 content 证明内部的正常步骤,可以写在证明内部,也可以按下款写成有消费的辅助声明,但不得另立为无消费者的绑定声明或冒称形式化成果。
**有消费的辅助声明(τ=0 owner 2026-10-05 裁决,原话「没必要为了解决bind-only 降低性能, 只要有消费也没问题」)**:一条 bind-only 声明(公开或私有)若有真实消费者——同一交付或既有树上另一声明在其活推导路径上实际使用它,判断标准同「逃逸见证」第 (iv) 项——即可新增并随宿主模块冻结,不必为规避本禁令而内联、合并声明或牺牲构建性能。它只是证明的组织方式:不构成新增数学内容,不为宿主模块提供逃逸见证或准入依据,宿主模块仍须由其他声明取得 `escape-witness` 或 `open-problem-resolution`;报告逐声明照实写 `proof_shape: bind-only` 并点名消费者。只为 import、覆盖、登记、API 便利或未来消费者而存在的 bind-only 声明不算有消费,仍按本条禁止。
本条分开判定**判形**(`proof_shape`)与**准入依据**(`admission_basis`);消化终结处理已有内容,不取得新增数学内容的名义。
**判形**:将待交付定理的局部别名、同次新增的公开或私有 helper、tactic 展开与定义性等式全部内联,依赖展开止于既有冻结前置与钉版上游声明。若结论仅由这些前置的实例化、前提代入、逻辑投影或重组(`.1`/`.2`/`.mp`/`.mpr`、合取、TFAE 打包)、以及规范化改写得到,即为 **bind-only**;否则为 **content**。规范化包括定义展开、只用既有冻结或 Mathlib 改写引理的 `simp`,以及在给定假设和上述步骤已提供全部原子事实后进行的求和分配、代数展开及 `ring`/`linarith`/`omega`/`norm_num`/`decide` 化简。仅把移心恒等式命名为见证、改换指标类型或加入权重,不构成规范化之外的新内容。判定程序若建立前置未提供、也不能由上述规范化得到的新命题,该命题才是候选见证;使用某个 tactic 本身不决定判形。最薄上游包装、手工重证已有上游结论及从既有存在定理取见证后作绑定,同样判为 bind-only。
**逃逸见证(escape witness)**:一个新中间命题须同时满足(i)其声明位于该定理已 elaborate 的传递常量依赖闭包内;(ii)不能由既有冻结或钉版上游前置经实例化、投影或规范化直接得到;(iii)与结论非定义等价、非别名或重述;(iv)位于结论的活推导路径上——对证明项作 ζ/β/ι 归约、删去死项与被投影丢弃的分量后仍被使用。若不用它、仅靠 bind-only 操作也能得到结论,它就不是见证;把无关新命题塞进依赖闭包不得改变判形。
**见证的两种合法形态**:(1)满足上述四项的独立中间命题;(2)公开结论本身——由非 bind-only 的计算、构造或估计链在活证明路径上直接产出,且无法仅靠既有前置的绑定与规范化得到。不得为第二种形态人为制造中间命题。源码行数、声明数量与新增参数不作判据;冻结前置身份用直接依赖的 GID 与 `statement_id`,Mathlib 不计入冻结前置,但其直接实例化同样不能充当见证。
**作用域**:新增声明与 bind-only 包装禁令覆盖新增或修改的未冻结 D5 内容,以及首次 Freeze 的全部声明。既有冻结身份只取受保护 immutable baseline 上的 `Golden/Frozen/state/<module>.lean.json`;candidate 新增首个状态片即首次 Freeze,不得用本次写出的 pin 冒充既有冻结前置或取得豁免。不得通过私有化、拆文件、换名、伴随声明或选择不同 deposit anchor 绕过。既有冻结节点仍按第 1.3 条保留,不得追溯撤销真值。
**准入依据之一(escape-witness)**:`admission_basis: escape-witness` 要求模块存在真实逃逸内容,且每条新增定理逐项通过上述判形与活路径审查;任一新增定理为无消费者的 bind-only 即拒绝该交付,不得以同模块其他 content 掩护;有消费的 bind-only 辅助声明按「有消费的辅助声明」处理,但不能替模块提供逃逸内容。全部为 bind-only 的候选须报 `admission_basis: none`,不得新增 Lean 声明、首次冻结、deposit,也不得另派实施席重做。探针只用于核实判形,一经确认 bind-only 即停止重复数学实施,简记复用依据并按第 1.2 条处理消化;外部具名开放问题的例外见下款「开放问题结算依据」。
**开放问题结算依据(τ=0 owner 2026-09-15 裁决)**:`admission_basis: open-problem-resolution` 是与 `escape-witness` 并列的第二个准入依据,只适用于第 3.6 条第一、二档的**外部具名开放问题**:交付的公开结论逐字对应一条已发表、经文献核对仍无证明或反驳的具名猜想或问题(OEIS `%C`/`%F` 猜想行、论文末尾 conjecture/question、Erdős 旁问等),且该结算在探针之前已预登记(issue 载逐字出处、量词写全的陈述、档位与文献核对读数)。此时**结算本身即新增数学内容**——新颖性在于「该具名断言此前未被文献判定」,不在证明步骤——故即使证明按本条判形为 bind-only(仅由钉版 Mathlib 前置经实例化、投影与规范化得到),该公开结论仍可首次冻结。四项条件缺一即评审打回:(a) 交付面只含结算该断言所需的声明:定义、一条 `result`,以及在其活推导路径上被使用的辅助声明(按「有消费的辅助声明」);不得夹带无消费者的 bind-only 伴随定理或包装;(b) 逐声明如实报 `proof_shape`(bind-only 照实写,不得冒称 content),PR 正文写 `admission_basis: open-problem-resolution` 并引用预登记 issue;(c) Scribe 带 `OpenProblemResolutionClaim`(Proved / Refuted)与 Problems 卷宗,文献核对按第 3.6 条 ②;(d) 第 3.3 条用途规则照判,不因本依据豁免。仓内 atom(理论卷子句)不适用本依据:那是消化结算的对象,仍按上款直接 cover。探针对外部开放问题核实为 bind-only 后不「转消化结算」,而是如实标注后继续实施。
**全 bind-only atom 停止重复投入**:连读 atom 及上下文,逐子句核对既有前置、参数替换、假设与规范化关系;只有全部命题子句均可由既有冻结或钉版上游前置经本条允许的实例化、投影与规范化推出,且无遗漏条件或未证前提,才可判全 bind-only。确认后简记既有结果及复用依据,不得继续把该 atom 当作待形式化靶、拆成新的绑定义务、等待未来消费者或为覆盖制造新定理。能低成本完成的消化随手结算;否则简注原因并继续实质形式化,不为追求终态追加投入。现役路径是引用一个或多个既有冻结声明,由 `make cover` / `make cover-batch` 写入覆盖并由机器派生 `absorbed-closed`;覆盖可以由既有声明经本条允许的实例化、投影与规范化共同完成,不要求先造一条与 atom 逐字同形的定理。多子句 atom 先按既有 `make decompose` 契约建立子句链,分别完成覆盖并对齐父项;实际申报终态时仍须满足子句完整性与链闭合检查;尚未完成消化就如实保留未完成状态,不要求为此阻塞形式化。
**混合 atom**:只将真正缺少 content 的子句保留为形式化前沿;bind-only 子句按上款结算。母 atom 只有在全部子项及自身覆盖均完成后才可报终态,不得以部分绑定覆盖冒领整项完成。判形有未核实前提时不得先称全 bind-only。
**终态必须由现役 writer 产生**:不得用 quarantine、失败的 cover disposition、手改目录或手填状态冒领已处理。`cover` 只接受既有冻结项目声明 GID;仅由钉版上游(Mathlib 及 manifest 闭包)前置闭合而仓内无可用 GID 的命题 atom,**需要结算时用现有 `settle-atom`(`make settle`)写收据终结**,`justification` 写明由哪些上游声明闭合、仓内无 GID——不新增终态、不新增 writer、不做机器判形(τ=0 owner 2026-09-15 裁决:账本这类非 Lean 真源只需文本标记,无人消费的状态不值一台机器;案 #8049);判形真实性仍是本条软评审边界,不得回派数学实施或新增绑定包装补 GID。
**先库后证与停手**:上游已有证明必须直接复用,禁止重证或新增无消费者的包装。连续两次候选靶均为 bind-only(按「开放问题结算依据」准入的外部开放问题结算不计),简记复用依据后按第 7.11 条换 Γ,转向真正缺失的数学内容;消化结算及工具缺口按第 1.2 条从简处理;席位空闲不构成派题理由。
**逃逸内容须写在探针之前,不得事后追认**:预登记义务须点名拟议的非绑定事实。观测见证与拟议不同须重新预登记,不得事后改标;报告逐声明列 `proof_shape`、直接冻结依赖(GID + `statement_id`)、`escape_witness` 与 `admission_basis`。评审对任一新增的无消费者 bind-only 声明(「有消费的辅助声明」与「开放问题结算依据」所允许者除外)、无逃逸依据的首次冻结或虚报 atom 终态均 reject;判形真实性仍属第 3.5 条所列语义评审边界,不冒充现役机器分类。
### 3.3 计算性内容的用途准入
**用途准入**是与判形、准入依据正交的第三个合取:新内容不保证有用途;不改 `proof_shape`、两种见证、第 3.2 条的两个准入依据(`escape-witness` / `open-problem-resolution`)或既有冻结。用途规则的作用域为受保护 immutable baseline 未冻结的新增或字节变化 D5 Lean 模块,以及本次首次取得 state pin 的模块之并集;不随 judge-only 改动扫未变历史。分类与用途须逐声明评审,不得以同模块的无关反例掩护普通实例。
**计算性内容(按交付语义定义,不按文件名、`Certificate` 字样或 tactic)**:以有限计算或可核验实例为主要新内容者分四类——有界枚举(`bounded-enumeration`)、检查器/反射基础设施(`checker`)、数值归约(`numeric-reduction`)、已认证实例(`certified-instance`)。
**用途判据**:须在探针之前预登记计算所回答的**独立问题**(事前存在的 atom / TASK / 断言 / 具体证明义务)。**普通正向有限实例禁止准入**:`certified-instance` 与 `bounded-enumeration` 只可走经验证的 `refutes`;消费者标签、终点标签、自指终点、附加 `result` 或引用成功均不豁免。**反驳保留**:处决一条具名断言(`refutes` 边),不要求另造消费者,与其用 `decide`/`norm_num`/`native_decide` 还是一般定理实例化无关(判形仍按第 3.2 条原判)。正向、存在式或合取式反例所需的否定结论仍须满足第 3.2 条逐声明禁令,不得新增无消费者的 bind-only companion theorem。**一般基础设施**仍可报 `checker` / `numeric-reduction`:具名消费者须在活推导路径真正使用其结论,仅 import、只用定义、重命名/转发、合取或子句打包、coverage 均不算;checker 可直接解决独立终点问题(`terminal_result`),不要求再造一个 importer。四类的有效 `refutes` 均免下游消费者与类特有附加条件,仍须满足第 3.2 条既有判形与准入依据(`escape-witness`,或外部开放问题的 `open-problem-resolution`),不构成额外准入路径;仅绑定的反驳直接用于 atom 消化结算,不得新增反驳包装或伴随定理。同一交付命中多类时按最严条件判,但有效 `refutes` 优先于类特有条件;同模块无关反例不得替其他普通实例取得依据。
**一般定理支配**——已有一般定理可不加强假设得到同一结论者,先复用或 `make cover`,不单独冻;有界枚举立不了无界量化的 ∀(有限域穷举除外),其合法角色只剩探针与反驳。
**检查器须同 PR 带首个具体实例**:具体输入、证书或检查成功证明、soundness 应用、所解问题缺一不可;再包一层接口、把 refutation 留在假设位、附无关玩具例子都不算。**归约须同批履行其数值前提**(同函数、同参数、同域、同向阈值)且有 `consumer` 或 `refutes`;前提未履行者可在探针、issue 或进展报告里如实申报条件结果,但**不得据此取得用途准入或单独首次冻结**,`terminal_result` 不豁免归约的附加条件。已认证实例的用途须落实到其**结论**,且只可走上述经验证的 `refutes`;只用同模块定义不算。**源卷复述不算消费**:源句本身报告同一计算时,用一般定理覆盖或标计算实验不形式化;重算属第 2.7 条查表复制器。
**用途字段(一个当前 contract;按第 8.5 条缺项即违规)**:Lean 头部 `utility:` 记录中的 `kind` 承载 `computational_content.kind` 分类(四类之一,或 `none`),正文说明须与头部一致。普通实例的 `basis` 只能填 `refutes`,不再有 consumer/terminal 三选一许可;检查器/归约按上款条件选择(头部文法以 `terminal` 表示 `terminal_result`)。`consumer` 精确到声明 GID 与「消费者 → 前置」方向;`instance` 记录检查器的具体实例,`premises` 记录归约数值前提(逐项:已履行/缺)。反驳同时提供形式 `claim` 与否定证明 `result`,源断言到 claim 的忠实性另行评审。`kind`、`basis`、`instance`、`premises`、`result`、`claim` 是绑定当前源码的头部结构化数据,精确文法见 spec A5.1,机器消费与语义边界见第 3.4 条 SL-031 款。
**逐声明与 `none`**:报 `none` 须说明为何全部声明均不命中四类,该理由按用途语义评审,不是头部文法的新字段。任一声明命中则模块不得报 `none`,且每个计算性声明分别给出用途依据;仅当全部声明皆不命中时才可报 `none`。`none` 经评审成立后本款合取为真,无需计算性用途依据,其余用途字段为 `not-applicable(kind=none)` 的正文说明,不加入头部文法;当前报告及第 3.2 条既有判形与第 6.2 条仍适用,一般引理先落地、下一层才有消费者不受本款计算性用途要求约束。`generality: G|I|E` 与用途分类正交,一般数学结果不因 `I` 或含数值而被本款禁止。
**PR 正文必填字段(全软 + no consumer)**:`question_answered`(含预登记位置)、`dominating_theorem_search`(范围、方法、`found` / `not-found-in-searched-scope`);`build_seconds` 可选(实测值 + 树/硬件/缓存口径,或 `null`,不设阈值)。PR 正文检查后可编辑、这些正文字段无 fail-closed 消费者,故必填项是软义务,不是硬投影;头部字段的结构硬门不使正文或用途语义升硬。
### 3.4 用途机器面、停用机制与软边界
**当前机器面(候选判官 SL-031,硬、delta-only、fail-closed)**:现行选择为「present byte-changed 且 baseline 未冻结的 D5 Lean」与「首次 state pin」之去重并集,无 state、只改正文、缺头、Modified、rename/copy 目的路径均不逃逸;同时命中时按 FirstFreeze 判。所有选中模块(含 `none`)须有绑定当前源码的非错误 Lean report;缺头、文法错、缺报告、报告坏或 stale、引用悬空、输入 unknown、普通实例不走 refutes 均 Block。baseline-frozen 的 utility 棘轮与 SL-008 不变。已知普通分类仅换 label 且头后正文逐字节不变时 `UTILITY-CLASSIFICATION-DOWNGRADE` Block;分类变更(含缺失/坏 label)另出 `UTILITY-CLASSIFICATION-CHANGED`,每个选中模块出 `UTILITY-OBSERVED`。
**有界形式反驳(硬)**:`claim` 指向唯一 included、无自由项或宇宙参数的闭合 `Prop` 定义;`result` 指向本模块唯一 included、闭合 kernel theorem,claim 的编译类型必须字面为 `Prop`,result 的编译类型必须字面为 `Not claim`,证明项的类型正确性由 Lean 编译期内核检查,claim/result 公理闭包仅限既有许可集。`refutes=gid` 必须等于该 claim;atom/TASK 必须可解析。额外未证假设、自我反驳、外模块/非 theorem result、正向结果伪贴 refutes、缺失或不匹配 typed evidence 均不通过。证据由 inspector 对编译项计算产生,经 source-bound loader 消费,不进入 statement identity;不展开定义、不化简、不接受定义性别名。
**阶段与历史基线(硬)**:ChangedContent、PreDeposit 共用上述检查,非 refutes 的 checker 须有 `instance`,归约须有 `premises` 且 basis=consumer;不要求 freeze 后才产生的 atom coverage。FirstFreeze 另要求 `refutes=atom` coverage 精确绑定指定 result 的当前 statement identity,consumer 有 import 可达路径。`make deposit` 将 BASE 解析成 immutable commit SHA 并传给头部预检,仅 baseline 的 pin 取得历史豁免,candidate 自带 pin 无效,baseline 失败即错误。
**反驳证据的输入闭包(硬)**:report 中同时绑定 claim 源码路径与 SHA-256。claim 即使不在 result 的 import 闭包内也参与声明身份和闭合性检查,故模块 report facet 把该 claim 的编译导出与传递编译工件作为输入依赖,其变更、删除或传递依赖变化均使 refutation 重查;strict loader 不接受把当前 claim 报告拼接进旧反驳证据。此依赖只服务报告正确失效,不是用途或证明依赖的通用分类器。
**用途软边界(Observe + 评审)**:分类真实与否、是否真解决独立问题(`terminal`)、独立问题或 atom/TASK 到 claim 的忠实映射、无关反例夹带、消费者在活推导路径上的实际证明使用、前提是否同域同向、一般定理支配仍由独立评审按第 3.3 条「用途判据」逐声明判。**残余(如实记 `open`)**:fresh `none` 或正文真实变化后的重分类不等于机器证明一般性;观察明确标 `semantics=unverified-by-machine`,由 Observe + 评审 + #5515 接住,不冒领为机器已判「无用」。不以名字、数字、binder 数、tactic 或关键词建立通用语义分类器,证明依赖图也不自动解决该边界。typed claim/result 关系由编译项的字面类型核对,不得继续把它记成只查引用;该形式检验也不证明源句忠实性或全部用途语义。
**自查**:必须说清解决何问题、履行何义务、反驳何断言;导入/覆盖/认证数不替代用途。禁为旧管道造消费者、跨参数冒用数值界或重复计算源句所报告的枚举。
### 3.5 用途与黎曼路线的证据范围
**用途样本(仅限 2026-09-05 采样)**:全库读数来自 dev `a030e0dc6e`;枚举族/反例/证书三行在 `5aa818b070` 复算一致(该树全库 3361 模块/512,850 行)。五坐标不外推为当前全库保证:
| 样本 | 模块 | 行数 | 有下游 import | 闭合 atom | 两者皆无 |
| --- | --- | --- | --- | --- | --- |
| 全库 D5 | 3360 | 512,608 | 45% | 58% | 19% |
| 枚举族(S0/Tower 周期 6–12) | 80 | 31,971 | 96%(族内互引) | 1% | 2% |
| 反例 | 23 | 2,913 | 13% | 83% | 13% |
| 数值证书(去概念桶) | 27 | 3,523 | 33% | 56% | 26% |
同窗口枚举族 78 模块有 import 或 coverage,77 有 importer,仅 5 有族外 importer(被 6 模块引);4 个数学消费者只用周期 ≤5 底层生成器(`ASSUMED-UNVERIFIED`:未复算声明闭包)。周期 6–12 塔只汇入两个子句打包模块各闭 1 atom,源句报告枚举本身。3 个反例模块两类边皆无,故按边数设用途门会误判。`TribonacciPermanentSurvivors` 声明枚举未用于一般定理。`LeanCacheBudgetPolicy.cs` 注 S0/Tower 81 模块 6305 s@ARM、最贵单子图 1656 s;与本表 80 模块集合是否相同未核对,`ASSUMED-UNVERIFIED`。
**同窗口的未履行用途**:LRAT 链至 `GoldenDFAOMinimalityTargets` M07–M16 均是假设 `refutation` 的条件定理,仓内 `lrat_proof`/`.lrat`/`.cnf` 皆 0;`FiniteExhaustion`→`FiniteBranchAtlas` 无 importer/coverage/具体实例。`germ_zero_of_center_jet` 三前提仅曲率由 `g60_curvature_le_118` 履行,值界缺,导数只到 g 1(阈值 1 非 1.87),唯一应用仍带假设。`DedekindBhkCertificates` 四实例零引用而定义被用;7 个数值证书无 importer/coverage(详 #5515)。
**仍有用的区别**:`GapEndpoints` 两枚举器周期九相差的 3 词正是 gap 边界周期 3 环;保留探针发现及其证明链,无需保留整塔。既有 `clause_depth_sixty_claim_is_false` 是一般定理在 60 的实例化,仍判 bind-only;新同形 atom 走消化,反驳用途不豁免包装禁令。
**黎曼路线样本(2026-09-04,增订二十五至二十九 W-10…W-21)**:W-12 阿基米德可积性提供主要分析逃逸。W-14/W-15 的 `exists_supportRadius`、W-18 的 `activePrimePowers_eq_empty_of_exp_lt_two` 须按第 3.2 条四项检查见证,不能使其 bind-only 主声明取得资格;W-10/11/13/16/17/19/20/21 是去假设化、投影、存在见证绑定或冻结 iff 复合,亦为 bind-only。既有冻结保留,同形新增直接消化,同模块 content helper 不豁免。席位空闲不得在边际收益触底后继续派同形任务。
*成熟锚*:旧数据可推出的信息不算新信息、数学新颖性/拒绝平凡包装、预算包络与第二次同症状停手、需求到验收的 traceability、真实实例端到端交付、YAGNI、Popper、Goodhart。理论卷的“无明确下游 theorem 消费者按 DECT 平凡病淘汰”“C8 禁枚举完备”按各自范围理解,用途例外以第 3.3 条为准。
〔守护:**判形/准入依据全软 + no consumer;用途结构与 typed refutation 硬、分类真实性与源句忠实性软**·逐声明 bind-only 禁令、判形、逃逸见证、准入依据、atom 覆盖的语义忠实性、增订「逃逸内容」子句与 PR 正文「逃逸内容」栏均由对手官评审判;当前 `tools/` 与 `.github/` 无 fail-closed 消费者读取 `proof_shape`/`escape_witness`/`admission_basis`,PR 与 issue 正文可在检查后编辑,故这些不得称硬投影或现役机器门。未来若升硬,须由候选判官内经独立评审核对的消费者(现役 SL-029 警告不提供分区保护)读取不可变且绑定 HEAD 的结构化工件,并以变异证明「缺字段或伪造分类」会使具名检查变红。**INACTIVE·推断边界**:「判形可由 elaborate 后的常量依赖闭包机器算」不构成现役保证;常量依赖闭包本身不证明全部判形或用途语义。用途结构与指定 claim/result 的否定关系由第 3.4 条 SL-031、编译项上的有界计算与同步 deposit 预检消费,不可据此声称判形或准入依据已机器分类;其余用途语义及「PR 正文必填字段」仍全软,由评审按第 3.3 条「用途判据」判,复算口径在证据样本与 #5515。按第 8.5 条,「尚未 lint 不构成豁免」:新增无消费者的 bind-only 声明(第 3.2 条「有消费的辅助声明」与「开放问题结算依据」所允许者除外)、无准入依据的首次冻结模块、无用途依据的计算性新准入或夹带普通实例,均须评审拒绝,与第 2.4 条冒领同罪;报告通过不等于全部语义通过,质量判词与机器准入权威仍分工〕
### 3.6 开放问题三档与研究线
**选题函数决定产出,已知结果不派席,核心目标按研究线推进。** 席位数不代表推进,空闲不构成派题理由。每个候选入管线前须标档:
- **第一档·新近小猜想**:论文末尾 conjecture/question(多为 2024–2026,较早年份而文献核对仍无人跟进者同属本档,年份不是界)、OEIS 评注、Kourovka 未加星问题等,开放因无人看而非难;预登记须写来源年份与归档理由。实施前联网核对文献无证明,写入预登记评注;按小时级两阶段管线:探针一席 → Stage A → 镜像核对 → Stage B → 三席评审。
- **第二档·计算前沿**:下一未知情形是未做过或认证过的有限计算;有限归约+穷举/SAT+内核验证须真正推进已知范围。以周级研究线推进。
- **第三档·核心问题**:有文献地位的核心未决问题。LLM 席不能可靠地产生深刻新想法,主要用于验证/移植/穷举。机器可自主开第三档研究线,开线预登记须写明逐字出处、文献核对读数、证明或反驳路线(关键想法、已核步骤、未决步骤)及成功/推翻/停止判据;GPT PRO deep research 给文献地图/障碍,codex 将已知引理及路径障碍形式化。成果至少是形式化地形图,突破机会来自暴露的空白。
**搜题深浅两轨混合**:开放问题搜题分深度轨与速度轨,两轨并行,共用排重与候选输出字段。**深度轨**的 brief 只附仓库地址 `https://github.com/the-omega-institute/trureturing`,由席位结合仓库已有的冻结 Lean 结果、`Library/` 文献注、理论卷与 `Problems/` 卷宗,自选适合本仓库结算的已发表开放问题及搜法;不指定档案、领域、时间窗、预计结算时长或难度。深度轨 brief 请席位按深度排序候选:问题有多位作者陈述、引用或依赖,跨论文长期未决,结算需要证明或附机理与整族推广的反例;单个小情形的求值属浅层,预期为真与预期为假的问题同等欢迎。**速度轨**的 brief 指定一个近期 arXiv 月份窗口,数学物理优先、其他领域同样接受,另收 OEIS 猜想行与长期无人跟进的论文问题;只收本仓库能经小时级管线结算的候选,且候选须带席位已亲手核对的精确小反例或可逐步写出的短证明,策略草图不算;典型形状为在限制下已证而作者相信限制可去、数值发现的精确常数、只经数值检验的充分条件、少数规模下观察到的结构性质与收尾问题清单中有有限答案者;名题、悬赏题、专家社区正在攻的问题与需要研究线的候选不进速度轨,归深度轨。两轨 brief 都指向仓库发布的已收录问题页并附 open 预登记 issue 标题作排重,候选输出字段为逐字出处、重要性、既有尝试、仓库适配依据、结算路线、结算类型(小情形/族/证明)、文献核对读数与档位。结算类型为族或证明、路线尚未完整的候选按本条研究线推进,不压进小时级管线。席位分配:GPT Pro 搜题席两轨轮流,codex 搜题席分属两轨。模板为 `tools/scripts/agent/openproblem/templates/search-brief.md`(深度轨)与 `search-brief-quick.md`(速度轨),由同目录 `render-search-brief.sh` 生成。
**研究线(第二、三档)**:长期研究复用所属 session 的 worktree(第 6.1 条),一份障碍登记(失败处及必要读数,第 5.10 条),一张已证/在证/阻塞的子引理 DAG;GPT PRO 做地图文献、codex 多席并行子引理。开线预登记成功/推翻/停止判据:多久无边际改进即换 Γ/目标,连续两周无边际改进即触底(第 2.7 条);到期五态端化,不得以进行中拖延。每个子引理 deposit 仍走两阶段管线;不得拿第一档小时节奏让长期线几小时无果即换题。登记只保留可复用结论与边界(第 2.10 条)。
**硬规则**:①先答文献有无该陈述;已有只 `make cover`,或在第一/二档靶的真实消费者内用 `FromLiterature` 前置,不绕第 3.2 条独立首次冻结禁令、不单派探针/实施席。②搜题候选与预登记须写档位及核对结果(查 X 无证明/计算未见于 Y),缺则评审打回;档位是对候选的标注,不是搜题范围。③按解决何已发表问题/推进何已知范围报进展,不用模块/席位/行数;有限证书只有排除此前未排除情形才可称部分进展。④同 lane 第三次因非数学缺陷重做即停(第 7.11 条);卷内事实错误单独勘注,不为证书做第四次 deposit。⑤外部具名开放问题的结算按第 3.2 条「开放问题结算依据」准入:证明步骤为 bind-only 不构成拒绝理由,但该款 (a)–(d) 四项条件缺一即打回。
**结算之后继续推理**:结算一个猜想不止于判定成立或不成立,还要推理结算揭示的新信息。反驳时,分析反例揭示的机理——猜想在哪一步、因缺少哪条假设或结构而失效;补上什么条件或改弱什么结论后可能成立;哪些较弱形式、特殊情形或相邻陈述仍然成立。证明时,分析证明揭示的结构——起决定作用的机制、不变量或恒等式;结论能推广到哪里,放宽哪条假设仍成立,界是否紧;同一方法还能解决哪些相邻问题。两种情形都要写明原文依赖该猜想的其他结论与后续问题因此如何变化。分析结果写入该问题卷宗的 `## Triage` 节(卷宗章节集合封闭,不另立 `##` 节),每条陈述标明已证、已算或未决。其中值得证明的新命题作为新候选,按第 3.2 条判形与准入、第 3.3 条用途规则与第 3.7 条文献尽调另行立项,不并入结算模块,也不借原猜想的开放问题结算依据取得准入。
*成熟锚*:选择效应、Polymath、人定方向与分布式验证、计算机辅助证明、预登记/停止规则、Goodhart。〔守护:**软+硬投影**·选题/档位真实性靠对手官与第 5.10 条反思;缺档位/文献核对由评审打回,开线缺停止判据无效。不可 lint 不豁免:已知结果派席、有限证书冒称进展均属第 2.4 条冒领〕
### 3.7 写作尽调与文献状态
- **述而不作,信而好古(写作即尽调)**:AI 写正式陈述(Describe 节点、定理级叙事)时须当场检索文献并表态——查到出处 → `literature-attested` + L 平面 note(DOI/标题唯一真源);确系本仓推导 → `repo-derived`;认真查过而无 → `suspected-novel`(检索留痕可审计)。**没有"回头再说"的合法值**(unassessed 为 inactive,不是合法值);冒认前人成果为新、或漏认前人成果,同为不诚实。硬门仍全程离线(DOI 在线解析只是 Observe)——**出网的是写作的手,不是判卷的门**。〔守护:**硬+软**·表态强制+attested 全链(note 存在/DOI 语法唯一/引用不悬空)机器红;"是否真已知"靠 brief 尽调义务+评审席+周期文献核查 lane(建议机器,不进硬门)〕
### 3.8 理论正文与追加纪律
- **形式化遇到理论缺口,可以直接推理补足。** 缺少定义、桥接引理、不变量、构造或证明步骤时,agent 可以在当前目标内研究并补足,继续形式化,无须等待用户补写理论或另行授权。补足的内容可以直接写成 D5 Lean 与 Blueprint Scribe,不必先写入理论卷(第 1.2 条);选择写入理论卷时,归入既有相关理论卷并遵守本节追加纪律。补足须保持原问题的目标、假设与量词;尚未证成的部分明确标为待证,不冒称定理。数学真值仍只由内核验证的形式化代码承担。
- **新增理论 PR 可不做消化。** 仅新增或追加 `docs/develop/theory/**` 正文、且不提交形式化、覆盖、冻结或消化工件的 PR,可以不运行 `make ingest`,不要求同时新增 atom CAS 或 backfill,也不要求先取得任何消化状态。正文仍须遵守本节的纯数学、文献尽调与追加纪律;若以后需要把该卷接入消化账本,另行提交 canonical ingest PR。含有 ingest、cover、deposit 或其它消化工件的 PR,仍按第 4.7 条对应链路核对。
- **理论推理只包含定义、假设、定理与证明。** `docs/develop/theory/**` 的正文保持纯数学:引理、命题、推论归入定理,例子与反例写成命题并给出证明,符号约定与数学引文附于对应条目。不得混入模型调用、工程实现、代码或测试、核验日志、摄入流程、评审记录、工单与交付状态;正式成果按既有归属置于正文之外;过程材料依第 2.10 条不保存。
- **理论单卷上限为 5,000 行。** SL-003 的 delta 谓词检查 `docs/develop/theory/**` 中新增或修改的 Markdown 全文,包括空行,末尾换行符不多计一行;超过上限即拒绝,未触及的历史长卷不进入检查。超出单卷篇幅的新内容写入同主题续卷并通过引用衔接,保留既有卷的条目、编号与引用;不得用新卷重复已有内容。
- **理论文档须可持续追加。** 新理论接在文末,保留既有条目的文本、编号与引用;新定义、新假设和新定理使用新编号,不复用旧编号、不整体重排。需要修正时,追加明确指向原条目的更正命题、适用假设与证明,说明替代关系;不得静默改写旧假设、结论或证明,也不得把被更正的结论继续当作有效前提。追加纪律自卷合入 `dev` 起生效;合入前的草稿可在其 PR 内就地修订。
- **禁止把已存在的理论新增到 `docs/develop/theory/**`。** 新卷与新增章节的承重命题必须是本仓新增的数学内容。凡经第 3.7 条尽调判为 `literature-attested`(整体、逐字或仅换记号地对应已发表定理、已公开草稿或教科书结果)者,不得作为新卷、新章或新增定理写入,只以 `Library/` note 引用;需要形式化时走第 3.6 条硬规则①的 `make cover` 或 `FromLiterature` 前置。已知定理只可作为新内容承重推导的中间步骤附于新条目之内,逐条标注先例,不单列为定理;一卷或一批增补的承重命题全部为已知结果者,评审打回、不得合入。
〔守护:**硬+软**·单卷行数由 SL-003 delta 谓词执法;正文的数学边界、追加方式及是否为已有理论由作者与独立评审检查,不冒称已有机器强制;不可 lint 不豁免,冒充新内容与第 2.4 条冒领同罪。〕
### 3.9 登记即声明模板与 delta 判官
**信息逃逸审计**:本节 delta/first-pin 选中 D5 源模块中,相对受保护基线新作者的每条公开 `theorem`/`lemma` 声明,除下款指定反驳 result 豁免外,须由写出该定理的 agent 在同一交付中按判官格式尝试忠实的四槽登记,提交源码所有者对应的 `Reg/D5/<镜像路径>.lean`、已编译的登记证明及当前 binding evidence;不得先交裸 D5 定理,再把登记责任留给后续 agent 或审计者。交付须完成登记,或按下款「登记受阻的交付边界」关联 issue 并明确披露审计未完成。已有 Reg 源码、成功登记、证明与机器状态保留,未完成登记不得冒报 `declared_validated`;Lean kernel、`sorry`、`axiom`、冻结及其它现役检查照常执行。第 3.2 条的数学判形、逃逸见证与准入依据以及第 3.3 条的用途规则独立适用。
**登记的模板契约**:带类型的 `Contract.Registration` 必须以 `readout` 字段指明所用的已 enroll 模板,模板由 `Contract.TemplateEnrollment` 声明;判官只核对这一条声明的 enrollment 判断(E1–E8)与编译产物证据,绝不替登记去搜索或猜测模板。模板是内容面数据,不是判官;判官不为某个语料模块放宽文法(第 3.4 条允许表原则)。
**delta 律**:判官只评估候选相对受保护基线**新增、字节变化**的 `Reg` 模块里的登记;另按 SL-031 的 changed/first-pin D5 选择源识别新增公开定理,只到其源码所有者的镜像 `Reg/D5/<同路径>.lean` 及该镜像显式 import 的 Reg 模块找登记,不读取 D5 的登记 payload;已在 git 里的登记**不读、不判、在任何层(加载器、读者、规则)都不因它失败**。整工件完整性检查(报告的 canonical 字节、内容寻址、封套 schema)仍是全局的——它们守 producer 的工件,不守登记。被选中的登记:未声明 ⇒ `DTR-Undeclared`;声明了但未解析/证据缺失、畸形、不一致或无有效证书 ⇒ `DTR-Evidence`;声明且验证通过 ⇒ `DTR-Declared`;新增公开定理无登记 ⇒ `DTR-Unregistered`(下款)。判词名单封闭为这四个,无别的名字;**四个判词全部为 Observe(告警)**,判官只收集登记状态、不阻断准入。判官的改动权限收归 #5214 登记即程序线,其他 lane 不改判官、只提供告警读数(τ=0 owner 2026-09-20 裁决,原话「把判官从block 改成warning … 把改的权限全部收到你这边来吧, 否则太乱了. 你只要收集他们的warning就可以了」)。
**反驳 result 豁免**:D5 `utility` 头中 `basis=refutes` 所指的 result 定理不要求四槽逃逸登记,不计入登记完成标准,也不产生 `DTR-Unregistered`;同模块其它新增公开定理仍按原标准。SL-031 的用途准入继续核对 result 是具名 claim 的闭合否定,kernel 与公理检查不变。result 按 utility 的同一选择器解析:在指定编译模块内恰有一个 included 声明的名称末段匹配,豁免取该声明的实际全名,支持任意命名空间及无命名空间;缺失或歧义选择器不产生豁免。
**登记完成的证据标准**:上述 delta/first-pin 选择中的 D5 源模块若声称完成登记,须有忠实的登记证据。登记完成须提交其源码所有者对应的 `Reg/D5/<镜像路径>.lean`,每条审计目标至少一条 `declared_validated` 四槽记录,并带已编译的登记证明及当前 binding evidence。D5 内容模板若本身新增公开 `theorem`/`lemma` 声明也在此范围内;`Reg`、`Interface`、`Impl` 中的 helper 声明不是 D5 源声明,不会递归产生新的 Reg/D5 审计目标,但仍执行其现有 kernel、`sorry`、axiom 检查。CI 绿、任何 `DTR-*` warning 或仅有告警收据都不能视为登记完成;登记缺失、无效或所需证明缺失即审计未完成,按下款 issue 路径继续数学开发与交付。它不是历史全库回填要求,不改变 DTR 四种 Observe 或 delta-only runtime,也不改变 judge ownership。登记证明属于审计证据,不取得数学 GID、Scribe、deposit 或 utility 义务。
**登记受阻的交付边界**:登记缺失、无效或受阻时,须新建或复用 issue,写明原定理、具体模板缺口或失败判词与读数、缺失证据,并在交付中关联 issue、如实说明审计未完成,继续数学开发与交付。不要求穷尽编码、反复重试、另开登记修复 lane 或另行豁免;本款优先于第 5.4/5.5 条对登记问题的即时修复要求。不得为使登记通过而修改判官(E1–E8、inspector、判官 Interface/Impl 包或 `tools/**`),不得硬套错误模板、削弱原定理或新增 bind-only 包装。issue 不是证明、`declared_validated` 或新的机器状态。
**依赖族源绑定 API**:`DependentFamily.realize` 由带类型的 `Contract.TemplateEnrollment` 登记;`Reg/Support/DependentFamily` 提供共享 enrollment。原源码镜像使用 `def x : Contract.Registration … := {…}`;直接 `realization := .source …` 登记必须设 `familyRecord := none`,完整的带类型 `DependentFamily.Registration` 证明保留在 `realization` 中,并提供合法的已 enroll 模板 `readout`、`sourceSelection` 和 `continuation := .unknown`。非空 `familyRecord` 仅用于 spec A5.3 明确的既有有限 catalog / `LegacyPrimitiveRealization` 适配器,须配套有限 realization bridge,不用于直接源声明。选择器只定位 compiler 原陈述的坐标与实际读出位置;机器核对作用域、依赖闭合、逆映射、完整陈述重构与 rigid universes,kernel 核对等价 bridge、actual 正律、全族干预、固定其它读出/锚的敏感性及 actual 观察依赖。有限角色不要求有限参数、State 或输出;退化纤维可保留。具体契约与当前限制见 spec A5.3;不能据 API 的存在冒领未编译案例。
**模板归属**:优先复用合法模板;现有模板无合法归属时,由 D5 内容所有者新增有意义的参数化数学模板,在 `Reg/Support` 完成共享 enrollment 后用于对应镜像。数学所有者已冻结时仍按其 Reg 镜像登记。不要求历史回填,不设新债务账本、兼容开关或宽限期。不得为了制造审计目标新增 bind-only D5 包装;复用既有定理或模板且没有新 Lean 声明时不产生人工审计义务。
**四槽登记的有效性标准**:**选中 D5 源模块中**相对受保护基线新作者的每条公开 `theorem`/`lemma` 声明,除指定反驳 result 豁免外,登记完成的标准是有**至少一条** `declared_validated` 四槽登记。同一定理可在多个舞台登记多条逃逸路线,不判完备性或自然性。`Reg`、`Interface`、`Impl` 的 helper 声明不属于该 D5 author target,不会递归产生 Reg/D5 审计目标,其现有 kernel、`sorry`、axiom 检查照常执行。四槽各有机器消费者:
- **原来逃逸在哪里**:`escapeFrom := some <term>` 指明常量或 binder 类型;检查其在 elaborate 后的定理陈述中出现,并与闭合舞台 State 所代表的对象作身份核对,不搜索。
- **把逃逸怎么处理**:`readout := some <已 enroll 模板应用>` 由现役 DTR 的 E1–E8、精确提取与编译产物证据核对;模板选择遵守本节模板契约,不为语料放宽判官。
- **出来什么新信息**:`realization` 中的带类型 `<桥>` 核对原陈述、闭合 Law 和实现参数;既有 `LegacyPrimitiveRealization` 等价桥继续有效,`EscapePrimitiveRealization` 只要求陈述 ⇒ Law,但强制有效 variation·sensitivity,否则报 `dtr.forward_bridge_requires_sensitivity`。契约实现保留精确 Law 检查。
- **新信息在哪里继续逃逸**:`continuation` 是闭合舞台上具名 `LayerChain` 的 `EscapeResidualWitness` 值、`EscapeResidualEmpty` 证明,或`.unknown`。前两者核对证书声明、类型及链所属舞台,内核检查 membership/empty 证明;判官不求值证书。`.unknown` 只诚实标记残余未知,没有证书,不证明不可判定性或残余无穷/不可穷尽,也不能替代必需的 realization bridge、variation/sensitivity 或其它 binding evidence;只要其余证据有效,显式 open residual 仍可构成完整登记。
登记在 Reg 所有者内声明,编译类型为 `Registration`、`TemplateEnrollment`、`RootCatalog` 或 `Seal`,数学字段由 Lean 编译器检查。判官读取编译后的构造器树或常量引用;需要计算才能取得的值具名报「无法解码」。判官不检查登记的源码写法,Reg 与实现包的依赖禁令由 `REG-IMPLEMENTATION` 执行。选中登记缺任一逃逸槽为 `DTR-Undeclared`,证据不成立为 `DTR-Evidence`,新增公开定理无至少一条完整有效登记为 `DTR-Unregistered`,完整验证为 `DTR-Declared`(含 `escape_from`/`escape_continues`/`bridge_kind`);四者均为 Observe(告警)。这四名封闭。报告复用由编译依赖 trace、utility 输入与报告格式标识决定,复用验证器只查结构与工件自身完整性,不以重算当前文件摘要判 `DTR-Evidence`;提取语义或报告格式变化按第 10.4 条更新报告格式标识。新旧公开定理只按同路径 base 字节中的同名公开 `theorem`/`lemma` 判定,只读数据、不执行 base。`private`、internal-detail、`def`、具名 `instance`、`example` 和机器伴随名豁免;源文件显式写出的伴随后缀定理不借后缀豁免。已知边界:匿名命题值 instance 在报告中与 theorem 不可区分,本门不修复该报告限制。
**声明工程与依赖方向**(τ=0 owner 裁决):逃逸声明是关于数学的元数据,不与定理混放。D5 包只放数学与内容层的舞台、模板、记录类型,只依赖 Mathlib,不 import 判官,也不 import 声明;判官是两个各有 manifest 的 Lake 包——接口包(契约类型、Sort 值索引族及其 D5 数学依赖)与实现包(E1–E8、各 gate、评定与证据),实现依赖接口;声明住在第三个包 `Reg`(自有 lakefile 与 manifest),只依赖 D5 包与判官接口包。判官实现与 `Reg` 均依赖接口;实现测试与分析消费者住在独立下游宿主包,依赖 `Reg` 与实现。D5 不依赖接口、实现或 `Reg`。`D5/<路径>.lean` 的定理,其声明写在 `Reg/D5/<同一路径>.lean`;目录根、seal、共享 enroll 是 import 这些叶子的 `Reg` 模块。`Reg` 契约可携带与原始舞台、目标、实现、束及目录索引绑定的数学义务;Lean 内核在 Reg 编译期检查这些义务的类型、闭合性与证明项。有限 variation、逐槽 sensitivity、source 族义务及 seal lowering/triviality、closure membership、catalog 冗余性和 kernel collision 的数学义务由契约承载,判官消费编译后的字段,不在报告期新造证明或复核这些数学命题。缺证、未知、缺项与不支持的证据保留为可编译的提交状态,不取得数学有效性。报告期对编译字段执行完整结构评定,包括模板 E1–E8、证据、各 gate、join、独立快照与 seal 目录及完整有序向量;伴随名仅是报告数据视图,不安装声明。纯计算可比较编译项并展开有限投影,不执行输入代码,也不取得内核证明权威。契约输入本身须能从构造器树与常量引用解码,认不出的输入以所在模块、声明名与原因具名失败。全 Reg 包(含包内任意 lean_lib/lean_exe)的传递 import 闭包不得含实现包,package require/defaultTargets 同受结构门约束。判官在报告期通过 Discovery/Decoder 按精确类型发现编译后的条目,不读取 recorder 环境扩展或执行登记代码。`Reg/Catalogs/**/RootCatalog.lean` 恰有一个 RootCatalog、无 Seal;同树的 `SealedCatalog.lean` 恰有一个 RootCatalog 和一个 Seal,根 ID 为所在模块,其余模块不得含这两种结构条目。根清单先由 Reg import 闭包和路径确定,expected 只取自 RootCatalog。判官实现改动不使任何 Reg/D5 `.olean` 失效;整份有效报告复用,只有新增或改动的登记交给新实现评定;契约接口变更须同一次交付迁移全部用法、删除旧路径,由编译依赖自动重评,不做历史兼容;不设模块名清单;可复用现役通用缓存中的编译产物与报告工件,复用条件服从第 10.4 条;不得加登记专用缓存或新鲜度机制。delta 判官仍只判改动、只告警,选择域含改动的 `Reg` 模块,新公开定理按路径到镜像 `Reg` 模块里找声明;`Reg` 模块进报告模块清单,报告复用遵守第 10.4 条的编译依赖 trace 与报告格式标识。冻结的 D5 模块可为迁出声明而编辑或搬迁,数学陈述与证明不变,pin 由 canonical writer 重钉。SL-001 禁止新增 D5→判官/`Reg` 依赖边;基线存在债务时,候选边集须是基线边集的子集,改动带债模块须严格减债;基线无债务时,同一规则执行全树禁令。sidecar 命令及跨模块 overlay 读取没有现役路径。
`reportInspector` 与 `compiledJudgeTests` 的传递 Lean import 闭包不含 D5、Reg 或 Mathlib。原生程序只静态导入无数学依赖的契约基础类型;数学契约头使用全限定常量名,运行期由现有 RawArtifacts 读取接口、登记与数学的编译产物。判官测试从实现的编译表达式枚举契约常量名,逐个核对接口编译产物,并检查两个程序的实际导入闭包。根 `make compiled-judge-test` 只委托 `tools/scripts/compiled-judge-test.sh`,脚本经 `make lean` 构建测试库与两个程序,再运行判官测试。测试库目录闭包包含 `LeanInformationAuditRegTests/Fixtures/CompiledInputs.lean`,其 imports 是运行期被检 Reg 输入的构建登记处;fixture 产物及其依赖由 Lake 构建,入口不手抄 Reg 模块表。被检数据不成为程序的原生链接依赖。缺失产物、未知常量或不符结构保持具名失败。
`Reg` 包准入规范见 [仓库规范 A5.6](docs/develop/spec/golden-ledger-repo-spec.md):声明 Lean 文件进入报告与 kernel/axiom 检查,不承担数学 GID、Scribe、header、deposit 或 SL-031 utility 义务。包配置属 judge 面,声明源码属 content 面。
**现役报告读取边界**:生产报告的所有模块均由 `RawArtifacts.Store` 读取编译部件,不建 Environment、不初始化扩展、不调用 elaborator、Meta、类型检查器或内核。判官只对编译产物中的声明、常量引用和契约构造器树做有界计算;需要求值的契约值、缺件、未知格式和读失败按具名 `contract.decode_failed` 或原始读取错误失败,不回退旧路径。契约中的数学义务在 Reg 编译期由内核检查,报告期不新造或复核证明。seal 保留非退化、bundle 非空、逐登记 lowering/triviality 与 closure membership、catalog 冗余性和 kernel collision 的数学义务,由 Reg 编译期内核检查;判官核对 seal 的 arena、catalog 与完整有序 unit vector 恰好对应导入闭包内的登记,不输出计数、状态划分、primitive 或角色桶统计。utility 关系逐字核对 claim 类型为 `Prop`、result 类型为 `Not claim`,不展开定义、化简或使用 Reg 证书。
*成熟锚*:显式优于隐式、delta-only 门先立后补账(第 6.2、6.4 条)、允许表判官(第 3.4 条)、数学真值冻结与独立声明包(第 1.3 条)。〔守护:**硬(告警)**·`DeclaredTemplateBindingRule`(SL-031 派发)判选中模块的登记与新增公开定理,四个判词均为 Observe、不阻断准入,效果由变异测试钉住;**软**·模板对登记的忠实性(是否真是该定理的读出)与「新模板而非硬套」由内容评审判;不可 lint 不豁免〕
## 4. 结构、递归归属、投影与消化
### 4.1 程序与数据的递归归属
**唯一真源,程序/数据递归分离**:每物只有一个权威定义处,下游皆投影且不作依赖骨骼(第 4.3 条)。程序=harness=治理者,数据=被治理投影;本层程序又是上层数据:引擎治理规则,规则治理内容,Lean 证明治理命题真值,Scribe 定义治理 md/pdf。上级程序服务下级程序(其数据),递归至 τ=0 人类可信 bootstrap,顶端 Gödel `open`。改真源即改程序,按 τ 付成本;改投影只重发射,≈免费。程序/数据边界、内化塔、成本塔是同一递归的三面,τ 度量距哪一级程序多远。
### 4.2 算法地址、当前形态与数据居所
**地址由算法算出,不开会。** GID 是规范地址(F 层为字面路径),地层由 import 偏序算;桶满只裂不迁,历史只追加。算法地址使并行贡献不撞址。
**禁历史兼容:现状唯一,历史归 git。** 工作树只呈当前最优形态;格式/规则/词表/语料单 PR 全量迁移并机器验证,不留 grandfather、legacy alias、旧格式双读、待晋升隔离区或 deprecated 存根。禁的是为旧状态保留运行时机制;Chronicle/冻结账本/spec 修订等当前审计链不是兼容层,历史归 git,过程材料仍依第 2.10 条不保存。
**数据居所律**:harness 在 `tools/`,测试在 `tools/tests/`;程序集目录(`tools/StrataLint.*/`、`tools/tests/*/`)源码只许类型/逻辑/loader/writer/测试等程序,整个 `tools/` 保护面不得住 `kind=data`。判例、常数、目录条目、文档等声明实例须在程序目录外的数据位(`Blueprint/**/*.scribe.cs`、顶层 `Golden/`、`Meta/{BACKFILL.yaml,FILEMAP.toml,domains.yaml}`、`Library/`、`docs/develop/theory/`、`Evidence/`、`D5/*.lean`),或测试项目内部的合成 fixture(非 canonical 数据)。类型/schema 留程序集,实例集合移出;类型内封闭字母表(S0–S4、PLANE)可写死并加一处锚定测试。数据文件的 parse 是 harness,须 fail-closed loader+schema。内容不因重要而进入 SL-022;golden corpus/判例住顶层 `Golden/`,由 strict loader 守。
**停用边界**:`Meta/StrataLint/` 旧位置不复存在,保守扩展重放/C0/证书机器已退役。当前 SL-008 只判成员状态与当前树一致,无历史单调判官(第 1.3、4.7 条)。
*成熟锚*:SSOT、事件溯源、内容寻址、mathlib 治理、trunk-based 单版本、expand–contract 必收尾、git 历史库、config outside binary、资产/引擎分离。〔守护:**硬+软**·GID/地层/词表/文件头由 lint 判;兼容垫层靠评审,识别即拆〕
### 4.3 依赖骨骼与叙事真源
包依赖方向为 D5 ← judge ← Reg(箭头指向被依赖者,Reg 亦可依赖 D5);SL-001 以受保护 base 的 D5→judge/Reg 边集为只缩不换的债务,新增边拒绝,带债模块字节变化须严格减债,债务清零后同门自动判全树。
**骨骼=依赖偏序**:import 只向下,逻辑严格无环;叙事可有环但不承重。文档/书/论文是图的投影,不得反定结构。叙事 canonical 源为类型化 AST(Scribe):Blueprint/Papers 由 C# 定义发射,md/PDF 是产物;引用按类型在构造期解析 GID,不用已废除的行号位置锚。
**充分复用代码与定理,让 DAG 显示真实关联。** 新增实现或证明前,先检索已有类型、函数、定义、引理与定理,核对接口、假设及适用范围;能够满足目标的已有成果必须直接调用或应用,每份实现与证明保留唯一真源。
- **私有可见性须为实际复用让路**:仓内可复用代码或定理因 `private` 无法调用时,应在原定义处改为 `public` 或语言对应的公开形式(Lean 去掉 `private`,并按所在模块的导出规则公开),同步调整必要的类型可见性和调用点。不得复制实现、另写同义证明或增加只作转发的包装来绕过可见性。
- **共享内容归入共同依赖**:原位置无法在既有分层下供多个消费者调用时,将共享实现或声明提取到各消费者可合法依赖的公共模块,原调用方也引用该处;保持第 1.2 条架构边界及本条无环方向,不为复用引入反向依赖或循环。
- **依赖须在活路径上成立**:代码调用应实际使用已有实现,证明项应实际使用已有声明,使调用关系与证明依赖共同呈现成果间的 DAG 关联。仅写引用说明、添加未使用的 import 或堆叠别名不算复用;定理应用仍遵守第 3.1、3.2 条,公开化本身不算新增数学内容。
- **公开化须验证消费者**:保持原实现语义、定理陈述与假设,验证受影响的调用方和证明;涉及既有冻结声明身份时,沿现役迁移与 canonical writer 路径维护冻结状态,不得手改状态片或借公开化撤销冻结真值。
**理论输入仅参考,Lean GID/声明唯一权威**:理论卷章节/定理编号会漂移且不受机器治理,不得反向绑定形式化工件。理论引用只作 provenance,机器验格式不验编号;发射文档的定义/定理号由 Scribe 从形式 AST 的序/依赖位置生成,不抄理论号。
*成熟锚*:DAG、DRY、依赖倒置、承重/装饰分离、formalization-first、文献与结构之别、自动编号。〔守护:**硬+软**·SL-001 守向下 import,Scribe 类型化 GID+评审守真源边界,编号由发射生成;充分复用、公开接口与活路径真实性靠评审,不冒称已有机器复用判官〕
### 4.4 真源、生成程序与投影判据
**harness 只守唯一真源与生成程序,不守投影**:真源可为程序或数据(递归见第 4.1 条);`投影=f(真源)`,f 与真源受守后,重复治理投影无新增信息。
**投影判据为四项 AND**:①producer 受 harness 治理;②完整声明的输入闭包受治理且保留;③由该 producer/闭包可逐字节无损重建;④无独立 policy/oracle/history authority。全真才是投影,不得进保护面或触发保守扩展门;未知/外部依赖 fail-closed 为非投影。重算比对(如 `emit-check` 双重建)只验③,不证明闭包完整或无独立权威,也不是治理。ledger(append-only 审计真源)、certificate(信任根)、source 均须守,此为非穷尽例。
**消除守错投影的机器**:先问补偿代码是否只因误守投影而存在,若是就删守卫,无需先删投影文件。单文件可留 tracked 人读快照,不承真值;消费者由 producer 现产喂,陈旧快照不影响判决,重跑 emit 即更新。投影冲突分类器、自动重算链、FIFO 租约、freshness 仪式(含治理投影的 emit-check 比对)、字节钉定必须删除,不能因文件仍在库而保留。**消费数据不是守卫;只守镜像/工件存在的骨骼断言(如 SL-004)不是守内容**,两者不在上述删除之列,存在性另判。
*成熟锚*:可复现构建、CQRS 可重建读模型、cache 非真源、引用透明、Ashby 必要多样性。〔守护:**硬+软**·分类器判四项合取及未知/外部依赖 fail-closed,重算验逐字节重建,保护面判定禁止纳入投影;FILEMAP `kind` 承载分类,strict loader+评审守其真实性〕
### 4.5 投影分区与变更单元
**投影按真源变更分区分片(merge unit ≤ mutation unit)**:聚合独立写集合会制造合并冲突;tracked 投影路径分区不得粗于输入变更分区,即 `改一个输入单元 ⟹ 只改一个投影文件`。
**推论(逐条可机器判)**:①**禁止提交跨分区聚合物**——全局计数、跨分区 join、manifest、index、目录 digest,它们**每次必变**,留一个就足以让整条律失效;②这类聚合一律**按需现算到 stdout,不落盘**(它们是查询,不是工件);③**每片只依赖它自己那个分区的输入**,片内不得写入依赖其他分区的字段,否则耦合只是从路径退回内容;④分片的**内容地址必须绑定其分区键**,使一片的字节不能被重放到另一片路径下;⑤**分片键由 producer 从输入键派生,不得手写清单**——否则新增一个分区就要改 harness(第 4.9 条商余结构之病)。
**分区判据**:合规与否只取决于**权威输入的独立变更单元数**,**与输入文件数无关**——一个输入文件里可以装很多个分区。变更单元由 producer 从权威输入的**稳定键**派生:若某键对应的内容能在不改动其他键的前提下被权威校验器**独立接受**,该键即一个变更单元。
**只有**当键提取结果恒为一项,或存在**机器校验的跨键原子约束**使任何合法变更都必须整体更新时,单文件投影才合规。**机器判据**:producer 须暴露确定性的 mutation-key 提取;对每个能独立通过权威校验的**单键变更夹具**,重放 producer 后 **changed tracked projection paths 的基数必须等于 1**。
**还须查第二层**:producer 的 attestation/输入哈希若覆盖**整个**输入闭包,则任一输入字节变化都会重写全部输出——那是**现状违律的证据**,也意味着分片时必须把 attestation 改为每片只绑该键的最小依赖闭包,否则**名拆实聚**。
**不得**把具体仓库路径写进本条当作永久豁免:成员数会随数据增长,「恒为一项」不能由某次样本永久担保——**举例只用于说明判据,不构成对某文件的赦免**。
**反例与开放违例**:`Evidence/D5/values.json` 的「producer 读单个 toml」不能推出「输入不分区」。2026-08-11 来源记录中的输入样本含 14 个各带 `id`/`lean_gid`/`lean_statement_sha256`/`status` 的独立记录,`|K|>1`,故为违律实例而非豁免例,**开放违例(D5-T0031),非合规**。
**自查**:为投影造冲突分类器、自动重算链、租约排队或 bot 回写时,先检查 merge unit 是否大于 mutation unit。
*成熟锚*:merge unit ≤ mutation unit、分区键与写热点(数据库分片)、CRDT 之「让并发写不相交」、细粒度构建产物(Bazel per-target output)、「不提交生成的聚合物」、单写者原则(single-writer principle)。
〔守护:**软+硬投影**·「分区是否与真源对齐」不可 lint,靠对手官评审与本条;硬投影=聚合物不落盘与分片键派生可由 FILEMAP 的 glob 条目 + 目录闭包谓词机器判,「改一个分区只碰一片」写成具名的 changed-path 交集测试〕
### 4.6 run-local 投影的归宿
**run-local 投影不入 Git 索引**:FILEMAP 声明的 run-local 产物按需现算。分片只缩小冲突面,出库才消除该族的合并冲突面;tracked 投影仍属 merge unit。`FILEMAP-RUN-LOCAL-TRACKED` 对声明为 run-local 的产物回索引报红,声明是权威,树须服从。
### 4.7 生产链、冻结与消化状态
**理论产出是一条单向链:什么源产什么、什么 PR 落哪几个面、冻结与消化是两个正交状态。**
本款描述实际执行消化与冻结时的次序、PR 形态与状态语义;纯理论新增 PR 可以停在正文,不要求先进入这条消化链;内容已有理论卷的形式化交付须先经 ingest 取得 atom,再在同一交付 deposit 并 cover;只有不存在对应理论卷时,形式化交付才直接从 `D5/<GID 路径>.lean` 入链,经 `make deposit-uncovered` 冻结,不产 coverage 边(第 1.2 条);消化偏差的投入优先级服从第 1.2 条。路径→kind→producer→verifier 唯一映射在 `Meta/FILEMAP.toml`,冲突以它为准(strict loader+`FileMapPolicy`,`FILEMAP-DATA-VERIFIER` 判 `verified_by` 悬空)。
```
docs/develop/theory/** 参考输入·当前正确,历史归 git,程序对其零知识
│ make ingest (纯理论 PR 可选;形式化内容已有本卷时必经)
├─► Meta/Digestion/atoms/sha256/<atom_id> atom CAS blob·一经产出不可变
└─► Meta/Digestion/backfill/<source_id>/<态>/<atom_id>.yaml 消化账目·四态见下
│ 形式化(先库后证,第 3.1 条)——链上唯一一环不由 make 产出;仅当不存在对应理论卷时从此处起步
▼
D5/<GID 路径>.lean 数学唯一真源
│ 手写 Scribe 定义(叙事 canonical 源)
▼
Blueprint/D5/<同一 GID 路径>.scribe.cs
│ make emit
▼
Blueprint/D5/<同一 GID 路径>.md 投影·禁手改
│ make deposit ATOM_ID=x GID=g(无 atom:make deposit-uncovered GID=g,止于冻结)
└─► Golden/Frozen/state/<模块路径>.lean.json 冻结成员状态片·`{statement_id, declarations}`·当前态
│ make cover / cover-batch
▼
backfill 条目由 residual-open 迁入 absorbed-closed 消化闭合
```
**GID 路径在三处逐段同形**(`D5/….lean` ↔ `Blueprint/D5/….scribe.cs` ↔ `Blueprint/D5/….md`),这是第 4.2 条"地址由算法算出"的落点:三处对不齐即地址错,不是文件少写了一个。
**纯理论正文 PR 不进入上述消化链**:它可以只落 `docs/develop/theory/**`,不要求本 PR 生成 atom、backfill 或 coverage;该 PR 不声明任何消化终态。后续若提交 ingest、cover 或 deposit,才按下列对应形态核对。
**三类改动形态,面集合封闭;deposit 与 cover 可在同一 PR、同一工作树顺序执行**:
- **deposit**(含无 atom 的 deposit-uncovered):`D5/*.lean` + `Blueprint/*.scribe.cs` + `Blueprint/*.md` + `Golden/Frozen/state/**`。
- **cover**:同一 `atom_id` 的账目条目写入 coverage 边,并由 residual-open 迁入机器派生的目标状态。
- **ingest**:`docs/develop/theory/**` + `atoms/sha256/*` + `backfill/**/residual-open/*`。
**停用机制边界**:两 PR 律、预登记 formalization 收据及其机器均已退役;「边即数据,不记动作」,不得据此重建动作收据或要求 deposit/cover 分两 PR。
**coverage 边当前 contract**:持久化键名为 `coverage_gids`,每个元素的键集恰为 `{gid,target_statement_id}`,其中 `target_statement_id` 可为 `null`;账本 loader 只接受这一形态。字符串元素、`receipts.coverage`、`source_sha256`、`statement_id_history` 与 `recorded_at_utc` 一律 fail-closed;writer 只写对象形。`cover-atom` 在写入前按当前 report 与冻结账本解析本次 GID,未解析即失败;任一 coverage target 未解析即令 truth 状态为 `Open`。L2 三步迁移只属已完成的 contract 判例,不构成现役迁移流程或兼容机制;当前没有 alias、双读或第二 canonical 格式。
**冻结态与消化态是两个正交状态机,禁互相冒充**:
- **冻结态(真值侧,二值)**:`Golden/Frozen/state/<module>.lean.json` 存在 ⟺ 已冻结,这是当前成员身份的唯一判据;删除状态片是合法的成员变更,不产生判词,不改变已验证陈述的真值(第 1.3 条)。SL-008 检查状态片路径、闭键 schema、模块存在与 Closed、pin 和声明清单同当前报告一致,pin 改变以 `FROZEN_PIN_CHANGE` Observe 点名;历史由 git 记录,无历史只增判官。
- **消化态(账目侧)**:`residual-open` 表示尚无 GID 覆盖,`partial-closed` 表示部分子项覆盖,`absorbed-closed` 表示本项与子链满足覆盖条件,`nonpropositional-inapplicable` 表示无需项目覆盖的终结:非命题,或命题仅由钉版上游闭合而仓内无 GID。第四态由 `receipts.nonpropositional` 的 justification 与真实邻居经目标处理命令派生,不由 atom 字节或 kind 自动判定。唯一写者是 `settle-atom`(`make settle` / `make settle-clear`);写前以 `make atom-context ATOM_ID=x` 连读前后 atom,writer 复算邻接不等即拒,`--clear` 删除目标收据并退回 `residual-open`。目标 writer 拒绝所处理记录的非法字段共存与坏形;无关账目的目录或收据偏差不触发准入审计。链闭合要求父项自身完成且全部子项为 Absorbed 或 Nonpropositional;该状态对 Lean 真值零主张、不计入可形式化分母、`Deletable` 不因它为真。`section/*` 等仍走查询时 `not-formalizable(kind)` 投影。
- **bind-only atom 的结算**:全 bind-only 的命题 atom 按第 3.2 条直接走既有覆盖与子句链闭合,到达 `absorbed-closed` 即处理完成;不产生新的 Lean 声明或冻结登记。仅由钉版上游闭合而无项目 GID 者按第 3.2 条以 `settle-atom` 的 justification 收据终结,不手写已完成。
- **文献已发表、仓内无冻结 GID 覆盖的命题 atom**:能由钉版上游闭合者按第 3.2 条以 `settle-atom` 收据终结;其余留 `residual-open`(无 GID 不满足 `absorbed-closed`)。历史账目可以携带 `receipts.quarantine` 或 `receipts.cover_disposition`,loader 保留其结构并将其作为当前一致性输入;现役流程不再提供独立 quarantine 管理或 cover disposition 重试命令,cover 失败直接返回给 AI 修正后重新调用。
- **两者不同构,故是两句话**:定理已冻结 **⇏** 其 atom 已 `absorbed-closed`(还差 cover 那一步);atom `absorbed-closed` **⟹** 其 `coverage_gids[].gid` 所指声明已冻结。汇报与 PR 说明里把"冻结了"写成"消化了"(或反之)即第 2.4 条冒领。
**含消化或冻结工件的理论 PR 说明须写清三项(承第 5.2 条产地,不另立格式)**:①**形态**(deposit / deposit-uncovered / cover / deposit+cover / ingest);②**链上这一环**——哪个 `source_id` 的哪个 `atom_id` → 哪个 GID,无 atom 时写明无 atom 及冻结的 GID;③**落地后的状态**——模块状态片路径与 `statement_id`(deposit),或 atom 由哪态迁到哪态(cover)。纯理论正文 PR 不要求这三项,只需明确其未进入消化链。判据是"读者能否据此在链上定位这次改动",不是"提没提这几个词"。
**反面即病(如何自查)**:①手改 `Blueprint/**/*.md` —— 它是 `ScribeEmitter` 的投影,改它即造第二真源(第 4.2 条),正解是改 `.scribe.cs` 后 `make emit`;②手改 `atoms/sha256/*` —— atom 一经产出不可变(第 1.2 条总则「atoms 不删」),勘误走"追加散文 + 追加新 atom";③冻结后原地编辑 `.lean` 想修补 —— 必撞 SL-008,正解是弃分支重做一次 deposit。
**多驱动者并行不必分配领域**:GID 代数定地址(第 4.2 条);两人重证同命题却不会使机器红,故开工前、开 PR 前各查本仓声明(第 3.1 条)。
*成熟锚*:构建图的产者唯一性(Bazel 每个输出恰有一个 rule)、数据血缘(data lineage)、按实体分区的状态表、git 历史、工作流状态与领域状态分离(workflow state ≠ domain state)、生成物标明产者。
〔守护:**硬 + 硬投影 + 软,诚实分栏**·**硬**——路径→kind→producer 由 FILEMAP strict loader 与 `FileMapPolicy` 执法;SL-008 检查冻结成员路径、闭键 schema、模块存在与 Closed、pin 和声明清单同当前报告一致,pin 变化为 `FROZEN_PIN_CHANGE` Observe,历史归 git;coverage 边的 GID 唯一存在、Closed 与当前 statement identity 由 cover 写前门判;新增形式化的精确 ATOM 覆盖依据由 SL-031 按交付目标检查,不做全账一致性审计。**硬投影(尚未 lint,记 `open`)**——三类改动形态的面集合可由 changed-path 交集机器判,当前**无此规则**,不得称已执法。**软**——PR 说明三项**不可 lint**,且与第 5.2 条同一个数学:正文在检查后、合并前可编辑,任何 check-time 读取只证明"那一刻有";故**不为它造门**(第 7.10 条),靠对手官评审与第 5.10 条反思。按第 8.5 条,"不可 lint"不构成豁免〕
### 4.8 生长、抽象与容量压力
**生长自相似,裂由压力。**
**不预建空壳**;抽象只在第二个实例或已证实的压力出现时才上收(通用证明成立才归 `Metallic/`,跨族定理出现才归 `Moduli/`,桶超限才 split)。目录随首个真实工件出生。
**文献笔记上限**:`Library/**` 下新增或修改的 Markdown 文件全文不得超过 3,000 行,空行计入,末尾换行符不额外计一行;超出时拆为独立笔记并以引用衔接。SL-003 检查新增路径(包括改名、复制的目标路径)与修改路径的候选全文,不追溯未触及的已有文件;目录容量规则照常执行。
**数据文件豁免行数检查**:JSON(含 JSONL/NDJSON/JSON5/JSONC)、YAML/YML、TOML、CSV/TSV、XML/TRX、Base64(`.b64`) 均不受 SL-003 文件行数软硬上限约束,扩展名不区分大小写;目录容量仍按既有规则计算。
*成熟锚*:YAGNI、演化式架构(evolutionary architecture)、比例约束(不把局部事实立成普遍法)。
〔守护:**半硬**·SL-003 容量阈机器判;「不预建」靠自觉+评审〕
### 4.9 商余结构与代表元
**harness 存规则,不存代表元**:它是商集函数 `H: X/~ → 判词`,只编码共性;改一个实例若被迫改 harness,其中就存了数据而非结构。成员应以目录闭包+具名 entrypoint 等规则定义,用单个派生 digest 吸收实例变化,不手抄地址表。旧 `TOWER.yaml` C0 手列 `(path,git-sha1)` 并对实例变动征收仪式成本的机制已 inactive。无共性不必造 harness,否则只是数据副本。
*成熟锚*:商集/不变量、声明式规则、glob 构建图、DRY。〔守护:**软+硬投影**·schema 可判实例表与规则+派生 digest,成员规则适切性靠评审〕
## 5. 协作、产地、独立性与自主推进
### 5.1 通信即工件
**通信即工件**:协调经库内 PR/issue/工单块/卷宗/判词,禁库外旁路;未见于工件视同未发生。工件只留第 2.10 条允许的结果,不保存协调过程。
*成熟锚*:审计链、不可否认性、异步书面协作。〔守护:**半硬**·门官查溯源 H9、禁库外信道;未见即未发生靠纪律〕
### 5.2 工件产地与独立性披露
**工件自报 skill、生产者与混合方式;未披露的独立性视同不存在。** 每个 PR/issue 正文顶部必载三项,缺项即不完整:
- **skill 上下文**:实际调用名,或“无 skill,主循环直接实施”。
- **载体/分工**:各承重产出的生产者,实施席与评审席身份、是否同模型族;同族不冒充多样性。
- **混合方式与核验范围**:并发盲评或串行、approve/reject/abstain 票数、分歧裁决结果,哪些由 orchestrator 亲验、哪些转述席位自报。只报这些结果,不留评审对话或过程副本(第 2.10 条)。
判据是能否复算独立来源数,不是出现模型名。恒定 `Generated with [Claude Code]` footer 只标开 PR 载体,不抵产地;未亲验须标席位自报,不写成读数。abstain、载体失败/回退、私有池导致缺席须披露实际布局变化。单点合法,留白不合法;“无 skill、零评审席、单点自查”是合法取值。
**会话 ID 供恢复**:三项之外,正文顶部同处写创建该 PR/issue 的宿主会话 ID 及恢复命令——Claude Code 取环境变量 `CLAUDE_CODE_SESSION_ID`,以 `claude --resume <id>` 恢复;codex 取 rollout 文件名 `rollout-<时间>-<UUID>.jsonl` 中的 UUID,以 `codex resume <id>` 恢复。其后接手并更新同一 PR/issue 的会话追加自己的 ID,不覆盖前者;承重席位的会话 ID 可随载体/分工栏列出。会话 ID 只是宿主本地的恢复指针,不附转录、日志或会话内容(第 2.10 条);会话已清理或在他机无法恢复时照写,正文结论不得依赖恢复会话才能读懂。
*成熟锚*:SBOM、author contribution/利益冲突披露、Co-Authored-By、CONSORT 盲法披露。〔守护:**全软**·内容真实性不可 lint;正文检查后可改,存在性也无硬投影,strict/required check 补不上。不得改载体为 commit message:评审/裁决/亲验普遍在提交后且覆盖不到 issue。PR 可有 advisory 存在性提醒,不进 required;issue 只靠评审。唯有快照不可变绑定 HEAD 且后续编辑使门失效才可称硬投影,当前无此机制且不为此新建(第 7.10 条)。旧“存在性硬投影、当前无 lint”承诺 inactive,撤销从不存在的检测承诺不触第 7.8 条红线。检查后改正文即保证的反例;不可 lint 不豁免,缺产地仍违规〕
### 5.3 issue 留痕的判决节点
**接手 issue 后及时维护该单的当前判决,不让已证伪正文继续误导。** 依第 2.10 条只留有效结论与必要读数,不保留逐轮调查/评论流水。更新时点:①实施或派席前认领,给当前认识与处置方向;②推翻已有读数/前提时立即纠正,此项优先级最高;③根因落定;④选定处置路径,保留必要排除理由;⑤触及冻结面/收据/保护面/账本 append 等不可逆物前;⑥结案给 PR 的 MERGED 状态与合入 SHA(第 6.1 条)。
判据是外部读者能否复核当前判断;评论须有新读数或新判决,无新信息不评论,“正在看/稍后回来”等进度播报不写。产地沿第 5.2 条,不另立格式。评论是输出非请示,写完继续,不等回复。
*成熟锚*:公共当前状态、claim-before-work 防重复劳动、判决及时纠正。〔守护:**全软**·评论可改删,接手时刻又无 commit/PR/check 可钉,不为此造门(第 7.10 条);靠对手官与第 5.10 条反思,不可 lint 不豁免该更新而未更新〕
### 5.4 遇题即解与实施让渡
**遇题即解,立案不等于处置**:纯消化一致性偏差按第 1.2 条简注,不触发本款的立案和实施要求。任务范围包含仓库修改时,其余问题在既有单更新或立案后,随即按第 6.1 条先复用适合任务的 linked worktree,仅在需要隔离时创建,用 `/sshx` 或按第 5.9 条直接实施,经 PR 落地;不得以“已提 issue/等回应”为完成态。仅阅读、调查或创建/编辑 GitHub issue 的任务按第 6.1 条使用主检出或合适的现有 worktree,不要求新建 worktree,也不据此扩张为仓库实施任务。
**让渡仅限**①对方已认领且有实测读数或在飞 PR 证明在动;或②唯一真源明确属对方,自己动手会造第二真源。让渡仍写被堵面与恢复动作;对方停滞即在单上认领收回。默认先动手,发现上述条件再让渡,不先设等待窗。
*成熟锚*:fix-forward、owner-until-handoff、patch 随 issue。〔守护:**全软**·及时动手靠评审/反思;硬投影=需仓库实施的立案处置计划须有相应 worktree/PR 或让渡依据,否则属冒领〕
### 5.5 目标阻塞与最小 hotfix
**目标途中遇阻及时 hotfix,不要等。** 本款对基础设施的最小修复优先于第 5.4 条立案、第 7.11 条权限外转向与第 5.9 条等灯亮;无论阻塞属谁的面,默认当场修通,立案并行。“已立案/等裁决/等对方/等定时任务”都不是完成态或停摆理由。本款不扩张内容语义裁决权,也不把缺失搜索能力说成可用。
**四项边界**:①仓库修复按第 6.1 条先复用合适的 linked worktree,仅在需要隔离时创建;只读调查按第 6.1 条使用现有检出。PR 直接对 `dev`,走全部 required checks;不 admin、不改预算掩盖、不降检测。CI hotfix 的完整验证及集成条数例外见第 8.12 条,不套第 8.14 条多层流程。②先作最小可通路修复(受预算正门重建/补缺种子路径/拆一层目标),完整根因另开 lane,两个 PR(第 6.2 条)。③仅内容语义 τ=0 裁决(真值口径/冻结/axiom/spec 数学)记 open 等 owner;基础设施/缓存/脚本/CI 拓扑/工具链自己修。④同单保留修复结果与必要读数,修好结案,不保存过程。
绕开只解决本 lane,不得称阻塞已修;需要实施修复却只写“等灯亮/只立案”、让同一阻塞反复挡别的 lane 均违规。*成熟锚*:fix-forward、owner-until-handoff、Andon 当场处理、Boy Scout Rule。〔守护:**全软**·及时修复靠评审/反思;硬投影=需仓库修复的基础设施/脚本/CI/缓存阻塞处置同处给 hotfix worktree 或 PR 号;τ=0 例外须点名待裁决语义,只写等 owner 不算〕
### 5.6 利益回避与旗判分离
**利益回避,旗判分离。** 对手官≠证师,评审独立于实现,提问者不判自己的答案。
*成熟锚*:同行评审、四眼原则、职责分离。〔守护:**流程纪律**·sshx 实施/评审席分离、异 bias 隔离属质量层;准入层不依赖它,由第 7.4 条零信任机器门判。旧“禁自并+人审 H7”inactive〕
### 5.7 单点错误与独立核验
**再聪明的单点也会错。** 正确性靠机器可判的绿灯与独立收敛,不靠单点自信。
*成熟锚*:纵深防御、对抗评审、瑞士奶酪模型。〔守护:**流程纪律**·三席+异模型由 sshx 编排,不可 lint;纯消化任务不派三席,见第 1.2 条〕
### 5.8 模型多样性与诚实声明
**模型多样性 > 单模型自证。** 同族视角共享盲区;能引入不同模型族的独立视角就引入,仅单模型则如实声明,不冒充多样性共识。
*成熟锚*:ensemble、独立同行、相关性风险。〔守护:**流程纪律**·sshx 混排模型族,能力受限时诚实披露〕
### 5.9 自主推进与四态归位
**自主推进,永不弹窗。** 对可逆且符合已核准 GoalArtifact 的实施/评审/修复/迁移/编排默认前进,不逐步求确认;用形式验证+sshx 判对错。禁弹窗/AskUserQuestion 等交互式问人,所有停等情形归四态:
- **机器可判**:判了就走。
- **形式不可判**:Gödel `open`,不是待人裁决。
- **能力/授权/资源缺口**:记具名 open 约束等灯亮(spec 第 11.9 节超仪注册表),其余 lane 继续。搜索缺失依第 3.1 条 `wait-for-capability`,不得冒报 search-complete;基础设施等目标阻塞优先第 5.5 条最小 hotfix,内容语义 τ=0 仍为 owner-open。
- **harness bug/门自锁**:agent 自主解,永不需人;需要人说明规则/harness 未完备(第 7.13、7.14、7.16 条)。
用户主动指令是新输入,执行并入账;机器不得主动索取裁决/确认。自主做完如实汇报,汇报是输出非请示。*成熟锚*:异步自治、fire-and-report、最小权威。〔守护:**元准则**·四态穷尽,无“人判断/等人”态,违者属第 7.16 条复辟〕
### 5.10 失败战史与重开工单
**失败只留可复用判据或回归用例,不重走死路**(第 2.10 条优先)。新案前查既有卷宗/编年中的有效结果;其持久性取实际消费者与存储契约,不冒领 SL-013。
**卡死工单不复活,关闭旧单并重开新单。** 失败/被拒/长期滞留的终局工单带陈旧标签、耗尽重试、过期上下文,运维修活会继承死状态,属第 4.2 条兼容垫层。新单用新号、新上下文,旧单仅留必要判词,历史归 GitHub/git。判据是是否带死状态,不是复活难易或是否曾重启成功。
*成熟锚*:无指责反思、组织记忆、不可变工作项、crash-only。〔守护:**软**·SL-013 为 deferred `NoFindings`,不守散文;查旧结论、避免死路、不复活靠实际审计工件/自觉/对手官〕
### 5.11 sshx 载体、公开证据与运行契约
**多模型对抗共识**:`/sshx`(`consensus-rnd:sshx`)派隔离席设计、实施、评审;载体按 skill 契约及下列阶段约束分派,nyxid-oracle 只承担推理,不承担验证。
- **oracle 默认只用于推理,不用于验证**:nyxid-oracle(ChatGPT Pro)默认只接推理任务——思考面板、设计、研究、文献地图、搜题与证明路线推演;sshx 的 oracle 席同样只排在推理阶段。验证任务——评审与复审各席(含 architecture/quality/tests)、适用的独立终止或完成审计、判形与忠实性核对——不派 oracle,由能在 `work_target` 执行的载体承担。oracle 的推理结论不算验证结果,进入验证前须由能执行的载体或 orchestrator 亲验。验证席因此同属一个模型族时,按第 5.2、5.8 条如实披露,不冒充多样性。
- **目标迭代无总轮数上限**:不记录 skill 可选的有限 `pass_budget`,设计/修复/复审/适用独立终止审计不得因轮数停止仍可推进的目标。按证据修真实缺口,无进展须查根因换法,不原样空转。独立实施/评审、无未解 reject、适用完成审计及 PR MERGED 要求仍在;真实能力/授权/资源缺口按第 5.9 条。单次调用、有限重试、失败回退仍按各自契约,不等于目标轮数上限。
- **默认不用 `isolated-token-subagent`**:覆盖 skill 的默认席位布局;推理多席阶段保留一 nyxid-oracle,原 subagent 名额并入其余席,其余席及预测席按 skill 分派。实施、探针与验证阶段不得派或回退 nyxid-oracle,无合规载体则该阶段 abstain。失败回退按 skill 的 `WorkerMode` 优先序,无可用载体则 abstain;各阶段均不得回退 subagent 顶替。
- **tests 席不派 nyxid-oracle**:须在 `work_target` 真跑验证;nyxid-oracle 无工作树执行能力,其“跑过什么”一律 `ASSUMED-UNVERIFIED`。
- **推理提示词要求**:每个 nyx oracle/GPT Pro 推理提示词(含 nyxid-oracle/ChatGPT Pro brief)必须包含原文「深入思考与推理, 如数学推理按照正式定义定理证明推理」。
- **每个 nyxid/ChatGPT Pro brief 必含 `https://github.com/the-omega-institute/trureturing`**,搜题/设计/研究等推理任务均适用;按需给 `/blob/<head-sha>/<path>`、PR/issue/checks 具体 URL,缺仓库地址即不合格。让席位独立取公开状态,不只转述状态;前提是实测仓库 `visibility=public`,私有时另测可达性,不假定。
- **公开证据边界**:nyxid 可读已发布状态,不能核本地未推送分支/工作树。要交它推理的内容能推就先推(可用 draft PR/临时分支);不能公开须在 brief 明写,相关结论标假设,由能执行的载体或 orchestrator 亲验。
- **禁止旧 oracle CLI,统一走 broker**:禁止执行 `nyxid oracle` 及其任何子命令,不得通过脚本封装、sshx 席位或失败回退间接调用。独立提问统一执行 `python3 tools/scripts/agent/nyx/nyx.py ask <brief文件> <输出文件>`;sshx 的 `nyxid-oracle` 席统一使用其 broker runner。两者均通过 `nyxid proxy request oracle …` 访问 NyxID oracle broker——先读池列表,再发一次流式 `chat/completions` 并据流的终态判完成。池按列表现选在线 worker 最多的 active 池,用 `python3 tools/scripts/agent/nyx/nyx.py pools` 查看,`NYX_POOL` 可显式指定;不凭记忆写死 slug。broker 不可用或调用失败时显式报告失败,不得回退旧 CLI。
- **文献与受限网页读取路线**:文献、学位论文、机构库或出版方页面因反爬挑战、机构拦截或直接请求失败而读不到时,改用 codex worker 的联网检索、Claude Code 的 `WebSearch`/`WebFetch`,或按本条 broker 路径调用 GPT Pro(`nyxid-oracle`),检索可合法阅读的版本(作者主页、机构库、arXiv、会议版等)。NyxID Firecrawl 是可选的正文抓取路径:`nyxid proxy request api-firecrawl v1/scrape`(请求体 `{"url":"<地址>","formats":["markdown"]}`;PDF 同样返回 markdown);余额不足或不可用不构成须上报的资源缺口,将文献缺口标为 `ASSUMED-UNVERIFIED` 或因来源读不到而搁置候选前不要求先试 Firecrawl。读数记录所取地址与正文字符数,不绕过付费订阅。oracle 只用于推理与检索线索,不用于验证;其转述或摘录须由能执行的载体或 orchestrator 取原文亲验;仍读不到的照实标注。
- **codex prompt 以文件 stdin 喂入**:`codex exec [flags] < promptfile`,不作位置参数,避免 shell 破坏美元号/反引号/尖括号/引号/换行后造成空 prompt 与无输入挂起。
- **flight 在飞时 caller 对该 work_target 的读数不作数**:测试可能置树于瞬时变异态。要读须取 sha256 并交回后复读比对,或只读派发前 diff 快照;读数冲突先核自己的采集条件,再判对方。临时快照不按过程档案留存(第 2.10 条)。
## 6. 工作树、PR 分层、债务收缩与完成
### 6.1 Reusable collaborative worktrees and MERGED delivery
Keep the main checkout on dev for authorized synchronization/observation. Implement, stage and switch branches in linked worktrees. Inspect Git registration, repository identity, branch/commit compatibility, existing material first. `make worktree` first reuses a compatible task tree or claims a compatible idle tree when DEST is omitted, and creates when none fits or the idle-pool scope is busy before claim entry; the contention fallback may leave a compatible idle tree unused; an explicit DEST keeps exact-path semantics; an attached initialization marker follows the recovery rule below before ordinary reuse; a task can cooperatively join the same tree. Session and directory have no permanent bijection. Directory names may retain session IDs; branch creation still follows section 7.4. An immutable dispatched baseline does not require chasing later dev tips.
**Read/write routing.** For reading, search, statistics, diff, viewing commits/PRs/issues and creating/editing GitHub issues, use the main checkout or a suitable existing worktree by default; these tasks do not require a new worktree. For pinned-revision reads prefer `git show <commit>:<path>`. Never switch a shared checkout's branch for reading. Repository edits, worktree-mutating tests, mutation verification, checkout changes, incompatible builds and builds with write side effects first reuse a suitable linked worktree after the compatibility checks above; create one only when isolation is needed. Builds that write are not read-only. Suitability includes the required revision, pins, existing material and cooperative scopes; preserve other tasks' work.
**主检出不承载修改**:主检出只用于 dev 同步、观测与缓存预热,一切修改都在 linked worktree 中进行。主检出上的任何本地修改——已跟踪文件改动、暂存内容、未跟踪文件与本地提交——均不规范、不受保护,任何 agent 可随时用 `git reset --hard origin/dev` 与 `git clean -fd` 丢弃,无需确认、等待或交还产生者;`git clean` 不加 `-x`,被 Git 忽略的 `.lake` 等构建缓存不在丢弃范围。
Enter cooperative jobs through `StrataLint worktree with`, declaring overlapping edits and actual semantic reads. Entry is shared; independent editing remains concurrent. Compound Git operations use index/ref scopes, and whole-checkout transformations exclude other entry only for that operation. No session-long whole-tree writer lease. Retain inherited OS descriptors in surviving descendants, or enter again before use. One worker exit does not terminate other users/children, remove intentional Git locks, assert publication or delete the tree. Actual host job handles own joining; no repository daemon or handoff ledger.
Checkpoint with `make worktree-checkpoint MESSAGE=FILE` after every recoverable unit of work, before long checks, before hand-off and before normal end. Label unfinished snapshots WIP in the message. A checkpoint certifies saved bytes only; it does not certify tests passed, publication or merge. Use no heartbeat or empty commits. Publish through `make worktree-publish HEAD=BRANCH`. Checkpoints use native `git add -A` and `git commit` on the current branch, including tracked and ordinary untracked files under Git ignore rules. Pre-existing staging is replaced by the working snapshot; no path ownership or separate staged-version preservation exists. Unmerged entries and unfinished operations are refused before staging. A clean snapshot creates no empty commit. Index/ref operation scopes and native Git errors coordinate commits without a session writer lease. Publication resolves one push endpoint and freshly confirms required-commit equality/ancestry there; no force push. Normal finalization follows host joining of this task's writers, checkpoints and publishes. Abnormal exit does not publish. Failed publication retains the local commit and tree.
Initialization markers (`worktree-init:<token>`), native Git index/ref transaction locks, cooperative descriptor-scope lock files and intentional worktree locks are distinct. Never unlink cooperative scope files. Failed initialization runs the same recovery path as a same-KIND/NAME/DEST rerun after owned children settle; its WORKTREE_FAILED receipt identifies stage, target, retained material and recovery/reclaim action. Resume verifies the branch-creation token/OID, unchanged branch tip and registered path/backlink/common identity, preserves differing ordinary bytes under recovery refs, completes missing checkout and restore, records completed recovery in the tree's HEAD reflog, then unlocks. Only that completed-recovery entry together with the unchanged creation witness/tip and creation pins permits repeated recovery to retain the creation commit after the requested base advances; successful ordinary initialization keeps requested-base ancestry and pin compatibility checks. Marker age is irrelevant once exclusive tree entry is acquired; mirrors without the creation witness can only be reclaimed. A checkpoint blocked by a native index/current-ref lock, or an owned initialization recovery blocked while loading its native index, clears only that exact unchanged file under exclusive tree plus index/ref scopes after complete holder inspection reports no holder, then retries once. Held or unverifiable locks retain with their exact path; canonical receipts retain every lock observation, including clearances before a later failure or during reconvergence, and report size and age without using them as clearance certificates. Non-cooperative Git with a closed lock descriptor is outside the guarantee. A moved interrupted-removal snapshot is pinned under a new recovery ref before a fresh checkpoint; replace the record atomically carrying both recovery roots, never delete it to unblock.
形式化工具不要求先提交:`ledger-align` 按 `repository.ReadCurrent()` 的工作树读取契约,通过 `repository.ReadCurrentProjection(...)` 读取当前真值输入,不按 delta 选择;deposit/cover 只改工作树、不自动提交。可恢复的修改仍按上述时点及时本地 checkpoint,包括未完成的 WIP;发布前须完成当前逻辑单元的源文件、规范投影及相应检查。
**worktree 的位置与清理**:worktree 用 `make worktree … DEST=<主检出父目录>/trureturing-<session-id>` 建立,不得放在 `/tmp`、`/private/tmp` 或 `$TMPDIR` 下。任务完成(交付按下文定义:PR MERGED 且首个 dev push 核验)后,join 本任务的写入者与构建作业,在任务树内用 `make worktree-return PR=<编号> WRITERS_JOINED=1` 归还:保存新增普通工作并保留任务分支,固定远端最新 dev,以新的 idle 分支同步,保留目录与兼容缓存。任务结束而无可交付内容时,同样 join 写入者与构建作业后用 `make worktree-return WRITERS_JOINED=1` 归还而无需 PR:按 spec A20,以保留的首条原生分支 reflog 记录中全零 old OID 对应的 new OID 为领取或创建时的 base B,要求附着的任务分支 tip 与 HEAD 均等于 B,并新鲜核验唯一 origin push endpoint 的远端 dev 保留 B,从而没有任务分支上的 dev 外提交被遗留。工作树须干净(包括普通未跟踪文件)且无未完成 Git 操作;保留写入者 join、pool/tree/index/ref 独占作用域、登记/身份及 intentional/initialization lock 保护,任务分支留给既有 orphan 退休策略。首条创建证据缺失、不可读、为链接、畸形或已部分过期则拒绝;后续 reflog 历史不影响资格。reset 离开任务分支的提交不在此当前状态规则范围内;归还保留任务 ref、其分支 reflog 与仓库对象,本身不做任何修剪,而后续因容量或磁盘压力进行的空闲池淘汰会移除该树的 per-worktree 元数据,包括其 HEAD reflog。tip 不等于 B、脏内容或未完成操作仍走 MERGED-PR 归还或显式删除。对真正 idle 分支的无 PR 重试报 `unused_return_already_idle`;`already_idle` 仅属核验 PR 的重试。省略 DEST 优先领取兼容空闲树;显式 DEST 只作用于该路径。空闲池每克隆最多 4 棵,按 idle 分支创建记录从旧到新淘汰,低于 5% 可用空间时继续淘汰空闲树。`make worktree-remove NAMES="<目录名>"` 用于用户显式删除;低磁盘回收仍走下述入口。磁盘可用空间低于 5%(与 `make worktree` 磁盘门同一阈值),或命令因磁盘空间不足而失败时,AI 可直接执行 `make -C tools clean-all FORCE=1`,不需另行确认;清理范围与保护条件以该目标及 spec A20 为准。
**只用主克隆的 linked worktree**:lane、席位、交付与研究树都由主检出所在的克隆经 `make worktree` 建立,不另建 git 克隆(含浅克隆、本地路径克隆与“独立 dev 根”)。缓存的自动 donor 只在本克隆内寻找(linked worktree 克隆其所在克隆主检出的 `.lake`);未用 `STRATALINT_LEAN_CACHE_DONOR_REPOSITORY` 显式指定 donor 时,额外克隆的主检出会另取一份独立的 `.lake`(Release 恢复或重新构建),与主克隆不共享 clonefile 块;`clean-lanes` 与 `clean-all` 只回收本克隆登记的 worktree,额外克隆及其 worktree 不在回收范围内。需要隔离时,在主克隆上另开 linked worktree,并用 `StrataLint worktree with` 声明作用域。
Idle retention and eviction use the single pool owner in SPEC A20; idle trees inside capacity bypass ordinary age selectors. All registered worktree cleanup follows SPEC A20/A20.1: selected unlocked trees are eligible; intentional locks require at least 24 hours since Git lock-file modification. A worktree-init: initialization marker instead requires an acquired exclusive tree scope; a busy initializer retains with initialization_in_progress. Automatic selection pins and reports origin/dev as an immutable commit, independently of BASE. A clean tree with no unfinished Git operation is eligible when its observed tip is an ancestor of that dev commit and both its HEAD committer age and allocation age are at least 3 hours. The last update is the observed HEAD commit's committer Unix time (`%ct`); author time, directory timestamps, reads, checkout/reset and later reflog entries do not renew it. Allocation evidence belongs to the tree across attachment changes: use the first retained HEAD record, explicit `worktree-allocation:<token>` HEAD records, and corroborated legacy branch-creation records since the latest explicit allocation. Every checkout destination that Git accepts as a local-branch name, excluding HEAD and expanded revision expressions, uses the allocation, existing-branch-checkout or bounded-ambiguity class without spelling exemptions; historical native branch-generation identity and the exact immutable record format, evidence-retention and claim-writer contracts are defined once in SPEC A20. Branch logs are checked against their own tips; detach or checkout never discards applicable allocation grace. Ordinary checkout/reset/read never emits an allocation record or renews saved-work time. Prefix expiry preserves applicable grace under ordered timestamps across related creation/checkout records and reflogs; nonmonotone clocks have no such guarantee. Known unmerged trees and merged trees with outstanding work require both ages to be at least 24 hours and at least 300 commits behind BASE. Missing, invalid or tip-mismatched allocation evidence or unreadable commit time retains with update_unknown and concrete detail; a future clock retains with age_unverifiable. Unknown dev/ancestry/update readings retain the tree with a named reason. FORCE reobserves tip, branch, registration, lock and Git directory, then recomputes the selection result before removal; any changed observation or selection result retains with race_changed. Original-selector removal checkpoints ordinary changes, including changes made after selection. Named removal bypasses automatic selectors. Keep whole-batch eligibility preflight, main/nested registration and target identity protection. Before removal, checkpoint outstanding ordinary changes using the real index. Retain the current branch, or for detached HEAD create a new local recovery branch at the resulting commit without replacing an existing ref. Retain that branch through the entire cleanup, including the orphan sweep. An unmerged/unfinished operation, failed commit or failed recovery-branch creation retains the affected tree with a concrete failure; earlier completed removals remain reported. Clean trees need no empty commit. Ignored files and intermediate staged versions are outside snapshot recovery. General activity inspection, cwd, programs, participation and cache use do not govern ordinary deletion; initialization liveness and blocked-checkpoint or initialization native-lock recovery use only the scoped checks above. Ordinary removal does not require remote confirmation; merged-task return and idle eligibility follow their specific remote-dev rules. Native branch checkout reconstructs the committed snapshot while its ref and reachable objects remain intact. Non-worktree artifacts and later orphan ref retirement retain independent policies.
Delivery follows push/remote confirmation, PR, required checks, MERGED, then first dev push/affected-entrance verification. CLOSED is not MERGED; CI success, an open PR or integration qualification is not delivery completion. After delivery completes, join task writers/build jobs and return the tree with `make worktree-return PR=<number> WRITERS_JOINED=1` (see the worktree location and cleanup paragraph above). `make pr` and `pr-watch` report checks only; neither is a merge certificate. Independent review follows section 5.6, except that a pure digestion delivery has none (section 1.2), and integration follows sections 8.12-8.14.
### 6.2 PR 层序、delta 门与债务收缩
**一次 PR 只剥一层,层层独立落地,禁多步改造攒大 PR。** dev 持续变动,须以小批量控制漂移。
**层序不可交换**:①先立只判 delta、对存量盲的门 → ②分批补账,每批一层一 PR → ③存量空后同门自动判全树,此时 no-op,不需第二次人工动作。先扫存量立刻全仓红会逼反序,与第 6.4 条冲突。
**delta-only 是定义域限制,不是旧状态运行时兼容机制**;第 4.2 条仍禁双读、legacy alias、grandfather 表、deprecated 存根、待晋升隔离区。
**base-owned 债务集 D 必须机器强制五项 AND**:①candidate-new 身份立即拒;②`D_head ⊆ D_base`,必须集合包含,计数不增不能防等量换债;③触及债务面的迁移步使 D 严格下降;④`D=∅` 同门自动判全树;⑤删除收缩机制自身会红。缺任一即 grandfather 垫层;D 是 base 数据,不是 base 判官代码。blob ratchet 可让与 base 字节相同的旧源码带诊断,新增/改动必须零诊断,无需身份表且满足①②③,但不证明④⑤。只缩不换不保证何日清零,须分批补账推进。
**INACTIVE·旧判据**:“删掉机制后旧状态是否失去专用路径”会把任何 delta 作用域误判为垫层,不可用;“计数只降+零时全树”也不足。
**开工前五项判据**:①规模对齐本仓 PR 分布,不显著超 p75;2026-08-29 最近 60 个已合 PR 样本 `min=1,p25=2,median=5,p75=13,max=233`。超出须说明本层为何不可再分,第 6.3 条只豁免文件数拆分理由。②一句话说明单一职责。③独立过全部 required checks,意义不依赖后续 PR。④不留 grandfather/豁免表。⑤每层落地前 `git merge-tree` 试合当前 dev,核对所动文件是否已在 dev 退役;退役跟着删,不搬。顺手加改动或评审跨无关主题时须检查是否混入下一层。
*成熟锚*:小批量持续交付、单一职责、Strangler Fig、expand–migrate–contract、Mikado 最小落地步。〔守护:**软+硬投影**·单层真实性靠评审;超 p75 无不可再分理由(或第 6.3 条依据)打回。protected-base delta 引用可判定义域;`merge-tree` 读数及“本层文件∩dev 已删文件”空集可验查 base,交集非空仍搬无效。正文检查后可改,说明/读数不因称硬投影而升硬(第 5.2 条);不可 lint 不豁免〕
### 6.3 冲突面、判词分区与拆分成本
**拆分看冲突面与判词;不拆唯一条件为零冲突面 AND 全批同判。** p75 是冲突风险代理,执行阈值先核理由是否成立;五项零冲突条件只消除文件数这一拆分理由,不能豁免混合判词分区。
**零冲突面五项 AND**:①全为 `RawChangeKind.Added`,无改删;②路径两两不相交且由内容地址/真源键派生,无共享可变文件;③无跨分区计数/manifest/index/digest 等聚合物;④一个 canonical producer 一次运行产出,同输入逐字节确定,非手写;⑤全部 required checks判据不依赖后续 PR。全真则 PR 给五项及读数,不用另写不可再分,评审不得仅因超 p75 打回;任假回第 6.2 条。全真但各部分独立受判且未必同判,拆分仍可防红项连坐绿项。
**分区顺序**:先量实际判词分布,找哪维使部分红/部分绿,按该维分区,再由依赖闭包限定边界,同连通分量不跨 PR。判词可分性定分区、闭包定不可切处,文件数两者都不定。只按目录/族/连通分量/卷拆而未量判词分布,不得称分区已验证;本条不新设求解器或机器分区规则。
**成本与收益并列**:N PR 对应 N 轮 required CI、N 正文;worktree count follows compatibility and task needs, with cross-session reuse(缓存随 ff-merge 作废)。同文重复只证明重复评审/冲突成本,不证明全批同判或总收益为零。纯新增回滚便利、没有文件数红规则,也不能推出整个 PR 必放行;说拆分由机器要求时须点名红判词,否则给真实理由或不拆。
**有界反例(#6164,2026-09-07)**:37 模块/74 文件一次由 `ledger-align --add ×37` 产生,`selectors_considered=3641 changed=0 added=37 unchanged=3604 conflicts=0`,零冲突五项全真。拆 6 PR 付 6 轮 CI、6 份相同 73 行正文,并 ff-merge 5 条落后 262–2078 提交的 lane;缓存重热成本未测(`ASSUMED-UNVERIFIED`)。其中 20 模块缺 `utility:`,单批会连坐其余 17,拆出头齐的 7 条可合,所以判词维有收益,却不验证当时按连通分量盲拆的方法。全仓无按文件数判红规则,超 p75 说明是软评审义务,非机器硬约束。
**唤醒域结论**:该样本 36 个初落地未冻模块因 deposit 阻断(#6165)未触发当时首冻门,与 37 补冻/20 缺头/17 连坐/7 已合是不同口径。依赖“本应发生而被别处阻断”的动作唤醒门会静默漏审,分区规则不修此缺口。旧“冻结触发缺口仍 open”已 inactive;第 3.4 条现役 changed-unfrozen D5 Lean ∪ first-pin 已补输入域,正文变更/缺头也唤醒,judge-only 不扫未变历史。此硬保证不证明分类/源句映射语义,后者仍靠独立评审。
**硬软分列**:SL-008 检查状态片路径、闭键 schema、模块存在、Closed、pin 与声明清单同当前报告一致;pin 变化为 Observe。依赖由源码 import 解析,状态片不存前置边,登记或重新钉定不检查全账闭包。内容成组的软评审纪律不冒充事件配对或依赖闭包机器门。
*成熟锚*:Goodhart、避免 cargo cult、精益、判据化例外、bulkhead 故障隔离;“风险为零则拆分收益为零”只限所论冲突维。〔守护:**软+硬投影**·零冲突五项可由 RawChangeKind/changed-path/producer 确定性重放判,但当前无此规则,记 open。全批同判须真实判词读数;理由适用性靠评审。明知五项全真且全批同判仍按文件数拆,与攒大 PR 同属阈值代替理由;混合判词仍须分区,不可 lint 不豁免〕
### 6.4 运行中的不变量先立门后补账
**系统在动,先立门后补账**:建立“全体 X 满足 P”时,先约束新增 X 满足 P,再补存量,否则两步间会漏新违例、永追移动靶。门必须只作用新增、对存量盲,避免立门全树红反逼先补。
〔守护:**软+硬投影**·新增域可由 changed-path 交集判,先后顺序靠评审〕
## 7. 治理、准入、成本与因果恢复
### 7.1 无外部特权与机器保证的 open
**一切皆 harness,无外部特权**:agent 是图的变换,无门上位置;判红不能绕,包括 admin。“不绕”是纪律,不是机器锁。2026-08-13/20 记录 `enforce_admins=false`,后者并见 `rulesets=0` 与 admin 权限;该开关任一值都挡不住管理员先改保护/required-check 再合,不是有效锁或唯一恢复路。关闭只是未论证现状,“等替代品再开”不是规则。
**机器层保证仍 open**,enforce_admins 取值不改变它;需要独立治理的组织级 ruleset/角色+审计才构成真正保证。harness 有错仍按 τ 付 W(多模型独立验证)+D(保守扩展证明)+E(可审计论证)成本,改图 PR 也过门(第 7.12 条);不得用更廉特权绕过。
### 7.2 真值机器、自建与保守扩展
**harness 判形式对错,可持续自建而不违前真。** lint/编译/双射/状态/一致性由机器判;新规则/分类/流程须保守单调扩展,旧判对者不得新判错。SL-022、一致性检验与升层让新 harness 判旧 harness,内化塔不封顶;同层不自证一致(Gödel、PZG 16.2),不可判者标 open,不交人或冒领可判。
*成熟锚*:反射/内化塔、保守扩展、Gödel 第二不完备、可判/半可判分列。〔守护:**元准则+半硬**·全部 SL/编译/SL-022 判可判者;自建受保守扩展义务与元门约束。现役成本形为候选判官+SL-029 警告+独立对抗评审,保守重放/C0/证书机器已退役,不冒充现役巡检〕
### 7.3 分类与规范先于实例
**先定义类,再处理实例**:新工件/流程/决策类先经评审/元门在 harness/规范定处理方式,再办实例,不得即兴。分类即坐标化(GICT 7.5),读数即分类(PZG),产物按 spec 路由定址。
*成熟锚*:policy-as-code、类型先于值、schema 先于数据。〔守护:**元准则**·新类经评审/SL-022,实例由机器按定义判;无定义标“未实例化(案号)”,非“未知”〕
### 7.4 零信任准入与独立 required checks
**零信任提交:机械 harness 判准入,dev 集成、main 发布、worktree 隔离。** 维护者、agent 与 fork 均过相同机械门;评审增加质量,不替代检查。
owner 原话:「只要是独立的部分就跑独立的CI, 不要混在一起了」「把CI改成白名单体系, 改了这些文件, 跑这个特定的workflow」「CI里面串行没问题, 我要的是workflow并行」「写在workflow里面检测吧, 用workflow做唯一真源」。
- `dev` 是集成主分支;实施经 PR 合入。`main` 是发布分支,依 spec A14 的 release PR 与 tag 推进。
- 实施分支由 `WorktreeCommand` 的 creation grammar 创建,会话复用独立 worktree;生命周期清理仍识别其 `LifecycleNamespaces`,不因创建词表变化缩小清理范围。
- CI 是一个 workflow `ci-current.yml`:`detect` 作业一次列出改动路径,按 `Meta/ci-units.json` 中唯一 `CI_UNITS` 与执行声明判定命中单元和 current 子检查;每个测试项目、selftest、两类编译反证、FILEMAP 与 current 各为一个作业,只在命中时运行,作业之间并行、作业内部串行。唯一 required check 是 `required` 作业:检测成功、每个单元恰在命中时运行且通过才绿,失败、取消或与命中不符均红。检测校验并按白名单匹配完整改动路径列表,不设路径数量截断。current 作业的纯理论文件检查与普通 Lean report、check-current、Scribe、PR delta 路径依 spec A22 选择。可选 FIB 回归由 current 的 canonical 报告消费者按完整 Application 输入差量与显式选择执行,tests-fib 仅确认该次 current 成功及执行身份,不重复准备或运行套件;普通 compiled-judge 与 compiled-fib-test 分离。tests-declared-template 保持 lean:none,current 消费互补的 Fourier 证据子集。检查只执行候选代码,base 只作为固定数据。
- required 名称与部署状态按 §8.12 的真实运行核验,本地文件不证明远端 ruleset 已更新。`make pr`/`make pr-open` 默认 arm auto-merge,required checks 绿后自动合;`AUTO_MERGE=0` 或 `DRAFT=1` 不 arm。PR merge-ref 检查与 dev push 检测保留 M1→M2 的残余边界,`strict=false`。
- PR 保留必要来源与 §5.2 产地信息;不留过程转录(§2.10)。
〔守护:**机器检查+部署核验**·ruleset 的实际 required set 由远端配置承担,不由本文合成;候选自审、保护面标注和独立评审的边界不变。〕
### 7.5 base 判官永久禁令与 SL-030 边界
**base 判官永久禁止(τ=0 owner 裁决)**。历史裁决原话(其中判官/内容不得同 PR 的限制已由 2026-09-24 owner 裁决撤销):「彻底移除 base 判官,判官跟非判官不能在一个 PR,防止无休止的死锁,但为了防止为了让数据过顺手改判官,所以不能一起提交。」
**定义**:为判候选而 checkout/restore/编译/执行 protected base 或任何非受审 HEAD 修订的代码,即 base 判官;含 base worktree/checkout、`git show <base>:<脚本> | bash|python|dotnet`、指向非候选自身内容寻址构建的 `--judge-root/--judge-dll`,以及 base 拥有的 derive/verify/classify/floor。**执行 base 代码禁,读 base 数据许**:可读 `HEAD^1` SHA 做对象 diff,以 `RevisionSnapshot`/`git show` 取 FILEMAP/账本/拓扑/workflow 哈希等字节喂候选判官。
workflow/脚本/make 永久不得物化或执行 base 树代码,不得以兜底/地板/过渡/防篡改复建。独立检查入口只运行候选判官。owner 接受候选可削弱自审判官的残余逃逸(`38b865a59c`,#5285),以 SL-029 按端点分树分类(仅快照证成的删除端按 protected-base FILEMAP,其余端按 candidate FILEMAP)给出非阻断警告,并保留 SL-022 标注、dev push 检测与独立评审,不另造 base 判官。
**SL-029 现役语义(τ=0 owner 2026-09-24 裁决)**:允许判官与内容以一个完整 PR 交付。合法混面 delta 恰报一条 `ADMISSION-PLANE-MIXED`,显示为 `Warning`,准入效果为 `Observe`,随后继续全部普通验证;警告随完整 `check` 和 `check-delta` 的结果输出,其它 Block 仍拒绝,SL-022 标注不变。缺失、畸形、歧义、不安全的 FILEMAP、错误的策略文件分类或无有效 base 登记的删除端仍是基础设施失败。混面不削减适用的 engineering 义务;生产 CI 按 workflow 内的单元白名单选择测试/检查。警告不强制分面,不能防止同一 PR 同时修改判官和内容;候选自审的残余边界仍在,不得把警告、标注、后续检测或评审冒充准入时点的独立保证。
**停用与证据边界**:base 判官的隔离曾被候选提前写 `$GITHUB_PATH` 伪造 dotnet 破坏(#4380/#5132),且自身造成全仓自锁;永久禁令管这种形态,不是只删某实例。base 执行地板、分面分类器、纯 revert 分类器均已移除。旧“候选判官=狐狸判鸡舍/永不候选自判/base 侧法官”属 verify-conservative 时代 inactive 成本形,不作现役指令。检查只搜字面 `HEAD^1:` 会漏变量修订,须依 git 动词及代码/数据用途判;producer/agent 侧读取 base 数据和读 HEAD 自身对象不在禁令内。判官面 PR 由 SL-030 判,不重复写普查过程。
*成熟锚*:hermetic CI、单写者、验证输入不凭来源身份、Andon。
〔守护:**硬(τ=0 裁决)+ 半硬(SL-030)+ 软,诚实分栏**·**机器面**:SL-030「Judge surface reads no other revision」(`tools/StrataLint.Engine/Rules/Trust/RepositoryRules.JudgeSurface.cs`,Block,trust)对候选 delta 内的判官面文件(`.github/**`、`tools/scripts/workflow/**`)逐行扫描能物化修订文件的 git 动词——`show <rev>:<path>`、`cat-file -p/blob/--batch`、`archive <rev>`、`worktree add`、`checkout <rev>`、`restore --source`、`read-tree`、`checkout-index`——修订不是字面 `HEAD` 即红,修订为变量时 fail-closed;workflow 中 `actions/checkout` 的 `ref:` 指向 base(`base_ref` / `pull_request.base`)亦红。四次有案的 base 判官形态(`worktree add`、三次 `git show HEAD^1:<脚本> > 文件`)在它面前**全部为红**(`JudgeSurfaceRevisionRuleTests`)。它不与第 8.13 条 冲突:该律禁的是**对 workflow 本身写测试**,而 SL-030 的测试喂的是合成文本、不断言真实 workflow 的内容,正是该律明列的豁免类(消费 workflow 文本的生产逻辑及其夹具)。**反例集合(两维,写不出就不能说「保证」)**:①绕过——面外脚本(`tools/scripts/ingest.sh`、`agent/**`、`report/**`)里物化、再由面内调用;**扫描器支持的语法之外的一切编码**——它支持的 shell 语法是:单/双引号(双引号内反斜杠只转义 `$`、反引号、`"`、`\`、换行)、`$'…'` ANSI-C 引号(解码 `\xHH`、八进制、`\cX` 控制转义(含 `\c\\`,操作数按反斜杠对消耗)与 C 转义;首个 NUL 截断)与反斜杠转义、`$(…)`(定界与命令词法共用同一注释/引号状态:替换体内未引用的词首 `#` 到行尾为注释)/反引号(含转义的嵌套反引号)/`<(…)` 替换、含描述符前缀(数字或 `{name}`)与 `>|` 的重定向(操作符只由未引用的字符构成,引号内的 `>` 是目标)、`| ; & && ||` 与 `( ) { }` 边界、`if/while/…`、赋值、`!`、`time`、`coproc` 前缀、反斜杠续行、`#` 注释只到行尾;动词位动态(`git $(…) …`、`git $V …`)即 fail-closed;命令位动态(`$GIT`、`"$(command -v git)"`)且后随受管动词即按 git 判,后随其他词不判;**git 选项按显式元数模型解析**:各动词的选项表由本机 `git <verb> -h`(git 2.50.1)派生成 flag / 取下一词或附着值 / 仅附着可选值三类,含 `--no-` 形与唯一前缀缩写,未知或歧义选项 fail-closed——`show` 例外,其选项空间是整个 log/diff 选项集(表由 `man git-log` 派生),未知选项当 flag,只会多判不会少判;支持的 YAML 载体是:`.github/**` 下的 YAML **整体由 YamlDotNet 解析**(GitHub Actions runner 同一解析器族),任何位置的 `run:` 标量(块/流映射、引号/纯/块标量、标签、锚点与别名、合并键、多文档皆由解析器处理)、job 级 `uses:` 同一映射内 `with.command` 标量与 `ref:` 标量;解析失败、`run:` 值非标量皆 fail-closed 红。**不支持即不判**(fail-open,写在这里就是反例集合):heredoc 体、`$((…))`、`case … in <pattern>)` 的模式括号(`$(…)` 内:模式的 `)` 会提前闭合替换)、参数展开(`${X}`、`git${X}`)、别名与函数、`bash -c` 拼接、`eval`、经 `env`/`command`/`exec`/`sudo`/`xargs` 等包装器调用 git;`curl` 从 raw.githubusercontent 按 SHA 取脚本;C# 进程内 `git show`(候选判官自己的读者,按定义允许);Python / JS 载体;②检查被跳过——`IsAffectedBy` 谓词漏路径、判官二进制被同一 PR 改弱(第 7.5 条已接受的残余逃逸,SL-029 仅警告,不提供隔离保证)。故 SL-030 是**早反馈**,不是「不存在 base 判官」的证明;复辟仍由**评审**按定义判、由**真跑**(第 8.12 条“安装后首个真实 run 立即核验”款)暴露自锁。其余现役机器面:SL-029 混面警告、SL-022 保护面标注(改 workflow 与判官保护面须按实际 rc 入账)。按第 8.5 条,面外形态「不可 lint」不构成豁免——重建 base 判官即违规,与第 2.4 条冒领同罪〕
### 7.6 退出语义与 bootstrap 脚手架
- **baseline 的 exit 语义分离**:0=内容全验通过;1/2=违规/基础设施,红;3=SL-022 元层变更——标注入账 + 强制 candidate `lake build` 阻断地板(**记录在案的 bootstrap 脚手架**;组件 C 所述保守扩展门取代此路径的目标为 deferred,相应保守重放/C0/证书机器已退役,不构成重建指令;改 harness 的成本与保守性义务仍在)。
### 7.7 strict 禁令与并集保证
**strict 严禁开启(τ=0 owner 裁决)**:不得要求分支追平 base,一致性须用别法解决。2026-08-10 窗口 dev 约 16 提交/小时、CI 约 344s/轮,追平 2.15 次/PR、48% PR 至少追两次;禁令反驳须同口径读数,不以“更安全”重开。
**一致性义务**是被验树即落地树。PR 入口固定 native `github.sha=M`,全部检查检出同一 M,候选判官以第一父 `B=M^1` 为数据检查 delta。push 固定 `H=event.after`,各 workflow 按完整 `event.before→H` 与登记展开的模式判断 hit;纯理论路径读取固定 before 数据运行无报告 delta,其它 push 的 current 不读 base、不执行 delta;契约见第 9.5 条与 `ci-current.yml`。PR 只把 head/merge 缺口缩为 check-time M1/land-time M2:检查后 dev 前进可能落 M2,不保证严格同树,也不许可 strict。
**替代检测/缓解**:①准入容量只判本次碰过目录,阈值比全仓不变量留 1 格,使两个并发新增并集仍在界内。②全仓不变量留检测层,架构测试超限即红并裂桶(第 4.8 条)。③共享聚合物按第 4.5 条分片。④PR merge-tree CI 判 check-time union 错误,M1→M2 残余由 dev push CI 检测并快速勘正(第 7.8 条)。内容寻址的独立定理/前置、逐定理叙事及路径 GID 不因粗路径分类成为真交互;全仓目录计数/共享汇总才有聚合交互。
提高并集保证只能走**批量>1 的合并执行者**,构建真正落地树并先验,且先实证 `merge_group` 事件实际 workflow 来源/修订。〔守护:**硬(裁决)+软(记录)**·禁令归 owner,读数限上述窗口〕
### 7.8 可逆性、风险与检测红线
**预防贵、检测廉;可逆错误须可发现、可勘正。** 四态不要求全 closed,纪律 D 要求异常检出或入账;spec 第 11.14 节判词可诉允许判错、当庭勘正。按可逆性×风险分级:
- **不可逆/信任根/检测机制本身**(元层、Hearts、axiom、发布、检测/门控能力):事前 fail-closed 硬门。
- **可逆/低风险/内容工件**(诊断码、罕见编码、内容细节):允许错误,由 conformance/canary(spec 第 11.19 节)/审计发现,案号追踪、快速勘正与申诉。
**红线:检测机制与不可逆动作绝不降级。允许 open 不许浮账,允许错不许发现不了。** 不穷举无限绕过,投资有限合理防御、可观测性与快速恢复。
*成熟锚*:四态账本/纪律 D/判词可诉、SRE error budget、assume-breach、fitness function。〔守护:**半硬**·不可逆等事前硬门;可逆层靠巡检/canary/案号/申诉,分级细化 worth 与最小门槛〕
### 7.9 错误驱动的制度生成
**错误不可穷尽,实际出错即立制。** 新错误首次出现时按四步闭环:①按第 2.1 条检出/入账,只留有用结论(第 2.10 条);②当场定义该类处理规范(第 7.3 条),按需立类,不预建空壳或即兴;③可机器判的清理规则立即化为 lint/门/巡检,经保守扩展入塔;④先 delta-only 约束新增,再按第 6.2 条分批单 PR 补账,D 空后同门自动判全树,不留垫层。
错误是 harness 的燃料(生于忧患),每类只付一次学费;首次换永久规则,第二次同类即 harness bug,最高优先修器。*成熟锚*:免疫、回归测试、判例法、SRE 行动项、TDD 红先行。〔守护:**元准则+半硬**·SL-019 检查非消化结构化异常,目标 writer 校验所处理记录,SL-013 不产 finding;立制走 SL-022 与适用的保守扩展义务,回归与第 5.10 条避免重犯;同类范围靠对手官,避免逐实例过窄或过度门控。〕
### 7.10 有案防御与成本边界
**防的必须发生过,不能只想得出;没出过错不许立制。** 每个防御机制须能点名本仓案号、有效事故结论或有据外部判例,否则属臆想,应删。事故证成的机制仍须负担自身成本;SL-029 原分区门防自己无意削门有案可查,现按第 7.5 条改为警告且不再强制隔离,base 判官虽同有事故依据却因自锁成本按第 7.5 条永久禁用。恶意防御须有实际攻击者;无限攻击面不靠穷举预防,按第 7.8 条快速检测/勘正。
*成熟锚*:先定实际 adversary、YAGNI、post-incident controls。〔守护:**软**·事件真实性靠对手官;新增防御 PR 须引用案号/有效事故结论,缺则无效,不留过程档案(第 2.10 条)〕
### 7.11 同症状停手与根因处置
**同症状第二次即停处理实例,去修根因;不能修则停止该形态投入,量化、立案、转向。**
①**同类=症状相同 AND 处置动作相同**,不取表面相似;每个实例各有局部解释不消除系统性。把本次动作与上次逐字比较,相同即同类。
②**第二次即停手,不是停工**:转答“为什么会有第二次”,答出前不处理第三例。③权限内最高优先修器。④仅内容语义裁决、宿主能力、唯一真源归属等实际边界使修器不可达时,停止同形投入 → 量次数/单次成本/总量 → 立案或补既有单 → 转向独立工作。**投入前先查既有问题/卷宗**,不能探索后才查。等灯亮合法,边等边撞不合法;基础设施/缓存/脚本/CI/工具链阻塞优先第 5.5 条最小 hotfix,不扩张 τ=0 语义裁决权。
⑤停无效投入不降检测、不弃目标;当前形态产出为零须量化如实报,不以“还在推进”掩盖。第三次同动作、第三个局部解释、明知待裁决仍派同形下一轮均违规。
*成熟锚*:Andon、五问法、error budget、根因分析、报废前停产。〔守护:**软**·同类与及时停手靠对手官/反思;第三次仍同形处置的 PR/issue 须给前两次必要读数及不修根因理由,缺则该轮投入无效,不留过程流水(第 2.10 条)〕
### 7.12 信任地层与成本递归塔
**改 harness 永远允许,但越核心越贵;成本市场自动筛选。** 与内化塔(PZG 17.4)同构,不由人作准/不准裁判。
- **τ**:受管路径各有封闭信任地层;0 为不可伪造能力链/canonical writer/GID 代数/bootstrap gate/保护面清单等信任根,越大越外层,内容为 τ_max。
- **`C(τ)=C_leaf·α^(τ_max−τ)`,α>1**:内容≈免费,每向核心一层×α,信任根 α^τ_max。三种机器可算货币为验证宽度 W(独立席/异模型/人审数)、证明深度 D(lint→类型→Lean→保守扩展证明)、保守扩展义务 E。
- **承重保守扩展律**:`∀a, τ(a)≥τ: H(a)=admit ⟹ H′(a)=admit`,新 harness 不推翻旧 admit(可更严拒新坏,不可松旧判)。范围越核心越大,核心改动须证不破坏整塔。
- **递归**:改 τ 的保守性由更核心 τ−1 harness 判,至 τ=0 人类可信 bootstrap 注入;同层一致性不可自证(Gödel/PZG 16.2),塔顶成本不可判/∞。塔无封顶;dev-baseline 判 candidate 只是 inactive 旧例,现役不执行 base 代码。
- **筛选**:仅 `Benefit>C(τ)` 才改;成本梯度排轻率改动、容真正收益,对错/成本机器算,不需人判准入。
*成熟锚*:反射、PZG 18.11 成本单调/17.8 Con 燃料、保守扩展、庇古/科斯定价、proof-of-work。〔守护:**元准则+半硬**·τ/C 可算、保守律可机器验不等于已有执行器;旧 golden 重放/C0/证书机制均 inactive。更核心层验证、τ=0 可信注入且顶标 open;落地的 harness τ 机制仍 open,属 τ=0 元改,立永久工单渐进实现〕
### 7.13 自主解锁与停用成本形
**解锁必须有成本、有账本、错误可放大检测**,满足三者 AI 自解、不碰人;现役成本为候选判官+SL-029 警告+独立对抗评审,不以 base 判官/`verify-conservative` 为成本。停摆等人、裸 admin 零成本捷径、把 τ=0 一概推人均不成立;记录/恢复是问责,不抵成本。
**INACTIVE·旧成本形**:“base 可证安全修+独立评审”、base 标签 AdmissionEffect 的负例地板过滤、base-owned 自锁检测器/回归、候选驱动证书及“永不候选自判”均为停用机制,不作现役解锁凭据或复建指令。旧 verify-conservative 由 `--judge-root` 指定 `dotnet $JUDGE_DLL` 且只认退出码、base 不复核,允许候选 `return Accepted`,故该旧证书有漏洞;不改变当前由候选自审的明确权威(`38b865a59c`,第 7.5 条)。
**账本与放大检测**:保留必要安全论证、PR 与独立评审结果,不留过程/回执副本(第 2.10 条);解锁后立即恢复门和检测,解锁者自身错误同样须很快被放大检出。旧 ceremony/保守重放再判义务 inactive,不得为它重建退役机器。
**自锁与真红**:门对 no-op/revert 也 fail 是自锁、未作区分检测,越过不降级;能区分候选、只红坏者是真红,越过即降检测,严禁。旧“仅 base-owned no-op 自锁证明后才允许候选参与+base 回归背书的 admin”条件逃生舱亦 inactive;现役撤因例外仅依第 7.14 条。
### 7.14 现役因果撤因与四条件恢复
**TEMPORARY·现役撤因通道**:dev 全部 required checks由绿转红且机器归因到 first-parent merge 后,其 **exact inverse revert 可 admin merge、不等自身 CI**。owner 原话「**revert 是在恢复,相当于时光完整倒流**;**倒流回来的状态,不需要判官验证**」。这是撤回已验证部分的恢复,不产新状态。
**现役条件恰四项 AND**:①只恢复可逆面,不触冻结/atom/内容;触及则正常门+既有 revocation/errata。②PR 引 dev 红具名判词原文及肇事 merge SHA。③合入后首个 dev push 全部 required checks必须真跑并留结论,只免自身等待不免落地检测。④仍红即未恢复,继续定位,不得二次绕过。只授权撤因,不扩修器/内容/任何前向变更或 admin 权限,第 7.8 条不变。
**精确逆**:`git revert -m 1 <merge>` 完整撤那一笔而保留后续提交;落地树不必等于 last-green 或任一祖先整树。
**先归因撤因,再修器**:钉 last-green run/SHA、first-red run/SHA、failing dev SHA 第一父与全部 required checks具名判词,沿 first-parent 找绿→红 edge。该 edge 只给候选 transition,还须过**因果门**:最小复现/反事实固定其他输入,只移除候选 delta 即消除同一判词;显式对齐 `BaseSnapshot`/candidate 输入版本,排除滞后一拍。未闭合即 `ASSUMED-UNVERIFIED`,继续诊断,不得因及时而猜撤无辜 PR。
归因成立立即开该 merge 的逆 PR,不排无关 PR 在恢复前;自身被红门挡可援上述四条件。不得借此删冻结状态片、删改 atom 或绕过冻结状态删除的现行判定。逆 PR MERGED 才算落地,其后首个 dev push 全部 required checks全绿才算恢复;仍红按新判词诊断,不把 merge 冒充完成。
**撤因与修器两个 PR**(第 6.2 条):根因修复走正门,CI 分类/逐原 PR 集成/稳定条数依第 8.12 条,多层判官改造依第 8.14 条,最小单层 hotfix 依第 5.5 条直达 dev。与第 8.15 条并行:内容 lane 可先改投 `integration-theory-<date>` 自保,不必等恢复;改投不能替代撤因或声称 dev 已绿。
**必要反例**:#4198 在健康 base 上是真 revert,自身 engineering 224/225、1 fail,故无条件放行纯 revert 会隐藏真红。#4305 的绿→红 transition 实由前笔 #4295 的 `ScribeTestSymbolBinder` 与滞后一拍 BaseSnapshot 造成;候选 edge 不等于根因,计划须读 BaseSnapshot、candidate 程序集及测试发现输入,不能由 base 独定(2026-08-31 GitHub checks/git 树记录)。该 dev 红已实证,“全部 open PR 同红”未逐一核实,`ASSUMED-UNVERIFIED`。
〔守护:**全软+deferred**·归因、字段/引用由判词、复现/反事实与对手官核验。恢复结果须列 failing run、具名判词、归因 merge SHA、revert PR、恢复后首个 dev 全部 required checks run,PR 引判词原文与已归因 transition SHA。当前 tools/.github **no consumer/deferred**,有无字段现役门同判,正文可改,不称硬投影。未来升硬须候选判官中经独立评审核对的消费者(现役 SL-029 警告不提供分区保护)读取不可变 SHA-bound 工件,编辑使门失效,fail-closed 验上述时序。旧 base `pure-revert-detect.sh` 直通 classifier inactive(删除 `7ffc6b054a`),本款无机器放行;若重建只能候选规则,依第 7.13 条自锁条件并补四项判据与两维反例集合,禁 base 脚本/CI 直通〕
### 7.15 deferred 全路径精确逆目标
**DEFERRED·更广终态(no current consumer)**:owner「**未来你不能用管理员权限,而是规则允许**」的目标是 CI 识别 revert 后三 job 跳过全部重步骤直接产成功 required checks,由 auto-merge 合入,全程无人无特权(第 7.16 条)。该目标未有当前消费者;第 7.5 条与第 7.14 条 的现役禁令不许 base 侧自动 classifier 或 CI 直通。本款不授权新 classifier/CI bypass/其他机制;合规实现建成前仅四条件临时 admin 通道可用,建成后停 admin 路径。
**DEFERRED 目标的判据恰好三项,不多不少**:①**精确逆**——逐 path 比对 OID / mode / gitlink **四组反向相等**(候选新 == 目标旧 ∧ 候选旧 == 目标新),path 集合完全相同(`--no-renames`)、**无额外 path**;②**目标须为 first-parent 链上的 merge**,即一个 PR 的落地单位;③**逃生舱自身不得被该 revert 触及**。该目标**不需要**再判「门是否自锁」——倒流回来的状态不需要判官验证,**判它是不是倒流就够了**;**不限作用路径**,任何 PR 的精确逆都属其目标范围,**不设 harness-only 之类的路径白名单**——「一模一样逆某个 PR」本身已经是最强的约束,再加路径限制是重复设防。
**DEFERRED 目标中的冻结恢复边界**:上述「不限路径」的 owner 具名裁定包含含冻结条目 PR 的精确逆。当前成员身份按 `Golden/Frozen/state/<module>.lean.json` 状态片,冻结状态删除的现行判定不变。目标的倒流语义是:那些条目本就不属于被撤销的那个状态,删除它们是**恢复**而非**解冻**,与第 1.3 条「勘误 ≠ 解冻」同向,由「精确逆某个 PR」这一机器判据代替 revocation 的人工判词。该目标只覆盖「某个 PR 的一模一样逆」;任何**非精确逆**的冻结条目删改仍遵守冻结状态删除及 errata 的现行判定,SL-008 对它不变。凡依该目标删除冻结条目,PR 说明须列出完整被删条目以供追账;此 all-path/frozen 范围**不进入现役四条件 admin 通道**。
**DEFERRED·尚未统一的来源边界**:第 7.13 条的自锁判别与第 7.14 条 的四条件恢复操作面,和上述不另判自锁、全路径三条件目标的资格面并未统一。两面分别保留,不合成七条件、不选择其一替掉另一面;更广目标不得冒充当前放行规则。
### 7.16 稳态全自主与无须人审铁律
**稳态全自主:对错机器判、方向 open 驱动、错误检测勘正自增 harness;人只创世一次 + Gödel 顶标 open(终态)。**
> **〔永久铁律·此条永不改(不可修订、不可加例外)〕 harness 完全禁止任何"需人审"门。**
> 一切准入/门控/合并必须**机器可判**——形式验证(Lean kernel 无 sorry 无私 axiom)+ 多模型对抗 + **candidate build/test/selftest、Lean/kernel、候选自带判官的 `check --protected-base`、冻结账本**。**任何门一旦产出 "requires external human review / 需人审 / 等人裁决 / awaiting human" 之类结果,即判定为 harness bug**,须立即改为机器门,machine-decide admit/reject,**绝不得让任何工件因"等人审"而阻塞**。
> 人只做两件**不可机器化**的事,且都**不是判断**:①**创世一次**(τ=0 内容寻址、公开可独立验证的初始态,信任来自可验证非背书);②**授权不可逆物理动作**(付费/平台账号/物理删除等能力-资源缺口,是"等灯亮"的 open 约束,满足即机器自动激活——不是让人判对错)。除此之外**系统里没有一处"最后要人来判"**;Gödel 顶诚实标 `open`(不可判是逻辑性质,非"轮到人")。
> 具体执法(自主解锁与成本边界见第 7.13 条):SL-022 等元层变更由保留的机器手段判定与收口——candidate build/test/selftest、Lean/kernel、**候选判官**(候选自带;base 判官已永久禁止,第 7.5 条)运行 `check --protected-base`、冻结账本;其中 rc=3 如实表示 `protected-surface change (SL-022); content checks passed`。本铁律守的是“门不得退回给人”,不守某台具体机器。本律是第 2.2 条(对错机器判)、第 2.5 条(人只授权不可逆动作)、第 7.12 条(改核心按 τ 付机器可算成本)、第 7.16 条(稳态全自主)的收口与硬化——**永不改**。
**终态人完全不参与**:本文件“靠人/人类门控/价值选择/τ=0 人审”均是 bootstrap 临时脚手架,随对应机器门建成移除。对错由 Lean+多模型对抗判;方向由 open 队列(未闭 residual/两颗心脏/Frontier)给边界,但当前无现役机器选择器,下个建设单元选择仍 open,不以人判断替代或在此另设政策。错误经检测、勘正、自增 harness 保守扩展;能勘正的 revert/errata/判词可诉(spec 第 11.14 节)无需授权,τ=0 由升层保守性与一致性检测判。
**四态穷尽,无“人判断”态**:①机器可判的对错/τ 成本,方向策略仍 open;②Gödel 不可判 open/sorry,对任何 judge 同为逻辑边界;③内容寻址且公开可独立验证的初始状态(声明哈希/一致性/保守扩展),可信来自透明可验而非背书,bootstrap 是建此状态而非人授权;④能力/资源/付费/平台/物理操作待满足的 open 约束(spec 第 11.9 节超仪注册表),满足即自动激活。agent 的 meta-judge 也是机器判断,没有问人位置。
**第 7.8 条红线不变**:渐进拆脚手架必须先有更强机器门,不得移除检测。每建一块方向 worth/保守验证/内容寻址信任/检测勘正机制,拆对应人审/admin 脚手架;脚手架自身只是按机器判决代行。`enforce_admins` 任一值都不是有效机器锁,不能替代独立治理的组织级 ruleset/角色+审计,保证仍 open(第 7.1 条)。
*成熟锚*:自主自治系统、控制论自组织与负反馈自稳、适应度函数内生方向、内容寻址信任(创世块/Merkle,可信来自可验证非背书)、超仪注册表"等灯亮"、Gödel 边界对所有 judge 等价(非人独有、非机器短板)。
〔守护:**元准则**·四态穷尽(机器可判 / 标 open / 可验证初始态 / 等灯亮 open 约束),无"人判断"态;稳态由机器门保障;渐进拆脚手架,红线"先有机器门才拆"〕
## 8. 工具、宿主作业、等待与 CI 真跑
### 8.1 分层 make 入口与器谱
**一器一门,门随层设**:构建/发射/校验/开工走所属层唯一 make 入口。根 `Makefile` 管内容(`make test` 数学门,`make help` 活器谱);`tools/Makefile` 管工具(`make -C tools test` 及 build/selftest 目标,器谱 `make -C tools help`)。层内只委托 canonical 实现,跨层零配方复制,哪层坏修哪层。
**有 make 目标就走目标,不现搓配方**:`make lean`/`lean-report-scoped`/`lean-report`(含 cache ensure)、`make -C tools check-fast`(快速结构测试)、`gate`、`test`、`worktree KIND=x NAME=y DEST=<主检出父目录>/trureturing-<session-id>`、`worktree-clean`、`pr HEAD=branch MESSAGE=file [AUTO_MERGE=0] [DRAFT=1]`、`lean-cache-ensure`、`lean-cache-{to,from}-github-without-mathlib`、`emit/ingest/deposit/cover`。pr 与 pr-open 同义,以消息首行为标题,建 PR、隔离 App token、默认 arm auto-merge 并同步等 required CI;`AUTO_MERGE=0` 关闭自动合并,`DRAFT=1` 创建草稿后直接返回、不 arm、不等 CI;不外套轮询。canonical 器的前置/失败/收据契约受测试约束;需重复三遍先铸器并接 make,不留 scratchpad。〔守护:**软+硬投影**·sleep 可搜而原语可用性不可 lint;完成依赖等待须给原语名或哨兵退出码,不认等了多久〕
### 8.2 本地早反馈与远端 CI 并行
本地检查使用与 CI 相同的独立程序。器代码迭代用 `make -C tools check-fast` 与定向项目测试;数学迭代用非空显式目标的 `make lean LEAN_TARGETS=…`;需机器可读声明、公理与材料核对时用 `make lean-report-scoped LEAN_TARGETS=…`。`deposit`/`deposit-uncovered`/`cover` 自动选 GID 模块,`cover-batch` 选整批目标并集;覆盖同时纳入所选 atom 及其传递 chain atom 的既有覆盖目标,写前核对当前声明身份,缺报告即拒绝。`emit` 从所选 Scribe 的类型化声明引用取 Lean 输入;这些本地入口只构建目标、其准入检查点名的 utility 输入及各自 import 闭包,不需要整库报告成功收据。窄报告使用独立路径与格式,不覆盖整库报告或收据;空范围、解析失败、缺失或陈旧输入非零退出。`make test` 运行 lean-report 与 check-current;`make gate BASE=<commit> [PURPOSE=pull-request|push]` 经 `ci_checks.py` 运行与 CI 相同的适用单元、子检查、测试过滤器及 TRX 校验,只把固定 base 当数据;本地包含 staged/unstaged/untracked 与 rename 两端,不删除 remotes;`make gate-plan` 仅输出选择。单项目测试用 `make -C tools test TEST_PROJECT=tools/tests/<项目>/<项目>.csproj`。
本地结果是早反馈,远端 required checks 仍是合并权威。Local WIP checkpoints may remain unpublished; publication requires a complete, currently checked source/projection unit. 本地保存遵守 §6.1 的时点;发布边界完成后及时推送,必要的其余本地核验与 CI 并行,不以完整本地验证作为推送前置。源文件或投影输入变更后,发布前重跑受影响的生产者及检查;连续 WIP checkpoint 以明确的 publication base、publication tip 与两者间的累计 diff 标识同一完整评审单元,不要求压成一个提交,不重写已发布历史。本地绿不替代远端结果,改 CI 自身仍按 §8.12 核验真实事件。
### 8.3 worktree 与 Lean 缓存入口
**PR 长缓存按当前提交先生产、后消费**:需要 `lean-cache-produce` 准备包时,按 [spec A22](docs/develop/spec/golden-ledger-repo-spec.md#a22-ci-cache-flow) 执行以下顺序;这是调用者的操作纪律,现役 CI 不会等待在飞 producer。
1. **先固定提交,再准备缓存。** 完成所需的 dev 同步、提交与推送,读取远端 PR 的当前 head `H` 和目标分支。准备期间持有 `AUTO_MERGE=0`;已有自动合并请求时用 `gh pr merge <PR> --disable-auto` 关闭。纯文档等不需要该准备包的交付不额外启动长构建。
2. **核对当前 head 的生产任务。** 已有匹配 PR/head/target 的成功准备包就复用,已有匹配的在飞 producer 就等待。保留 `lean-cache-produce` 标签的 PR 在 `pull_request:opened/reopened/synchronize` 时自动 dispatch,添加该标签的 `pull_request:labeled` 也会 dispatch。仅在两者都没有时,才显式添加 `lean-cache-produce` 标签恢复准备;标签已存在时,先 `gh pr edit <PR> --remove-label lean-cache-produce`,成功后再 `gh pr edit <PR> --add-label lean-cache-produce`。旧 head 的成功准备包不能当作当前 head 的准备完成。
3. **等实际 producer 成功。** 从 dispatch 输出取得确切的 producer run ID,用 `gh run watch <PRODUCER_RUN> --exit-status --interval 60` 等它终止;核对成功 attempt、未过期 artifact 及其 PR/head/target 身份。dispatch 成功只表示派发完成,不能报告缓存已就绪。watch 的网络或鉴权失败也不是 producer 失败,须重新读取该 run 的实际状态。
4. **准备完成后再重跑需要缓存的 CI。** `lean_pr_cache.py adopt` 只在消费步骤查找已成功的匹配准备包,不会等在飞任务,也不会在稍后上传后自动重试。若先启动的 required CI 因缓存缺失或计算预算耗尽失败,先确认匹配 producer 与 artifact 成功,再对当前 head 的失败 run 执行 `gh run rerun <CI_RUN> --failed`,从新 attempt 的 `LEAN_PR_CACHE` 收据确认 `adopted`。缺包、身份不符或其他失败先按实际判词处理,不盲重跑、不擅自抬预算;已经通过的 required 不为补一条缓存命中记录重复运行。
5. **核对当前提交后合并。** producer 成功与当前 head 的 required 成功分别核验;合并前再次确认 head 未变化,按该 head 启用正常合并并核验首个 dev push。任何新提交,包括合并 dev 产生的新 head,都回到第一步重新核对准备身份;目标分支单独前移不等于 PR head 改变,不据此机械重建。缓存成功不替代 required checks,也不替代合入后的核验。
**先热 dev,production Release 恢复只进主检出**:production Release 恢复(`make lean-cache-from-github-without-mathlib`)与 `fetch-or-fail` 报告恢复只在 dev 主检出运行;显式选择的 verification-mode fetch 不变。linked worktree 的生产缓存只由 `make lean-cache-ensure` 从热的主检出 clonefile 播种。报告恢复的补救前提是主检出为干净的 `dev` 检出;否则 `warm-donor` 以退出码 0 和 `skipped` 收据返回,不代表 donor 已预热;主检出不干净时,按第 6.1 条「主检出不承载修改」丢弃其本地修改后再预热。补救全程用条件链:`make -C '<main checkout>' warm-donor && make -C '<main checkout>' lean-report && rm -rf -- '<worktree>/.lake' && make -C '<worktree>' lean-cache-ensure`;主检出也可在 `make lean-cache-from-github-without-mathlib REFRESH_STALE=1` 后执行 `make lean-report`。无法判定检出类型时同样拒绝生产取回与报告恢复。linked worktree 的主检出候选取 Git worktree 列表首条,须核验其物理顶层路径及共同 Git 目录;候选为 bare、记录缺失或不可解析、核验不通过时仍拒绝,并给出不含主检出路径的补救,不将 Git store 目录当作主检出。
本地形式化用 `make lean-report-scoped LEAN_TARGETS="<非空点分模块列表>"`,逐模块构建和检查目标、其 utility 输入及各自 import 闭包;不读取整库报告种子,不构建整库报告。整库核验的 `make lean-report` 显式选择 `fetch-or-fail`。主检出中报告种子缺失、不完整、损坏或收据中的报告格式标识不符时,先在私有缓存写锁内取回 dev 同分区、缓存 key 一致的 Release 快照,重新检查后仍不可用即以 `LEAN_REPORT_CACHE_INCOMPATIBLE` 非零退出,不进入 Lake 报告提取;linked worktree 在所选种子不可用时先检查工作树内的 canonical 种子 `.lake/build/stratalint/raw-lean-report.json`,相符时从它复用并发布到所请求的输出,只有该种子也不可用时才以 `reason=linked-worktree` 退出,全程不取回。
dev 主检出中相符但输入已变化的种子记录在 `.lake/lean-report-seed-base.json` 的生产提交只用于选择起点;记录的 `seed_sha256` 须匹配当前 canonical 报告、全部四个 sidecar 和成功收据的实际字节,否则 base 未知。只有选中的种子为 canonical 时才进行可选刷新,自定义种子打印 `reason=non-canonical-seed` 并保留。未知 base、不干净、CI、非 dev 或 detached 检出均在列举前打印各自的 keep 收据并返回;输入已相符的种子打印 `action=keep`、`reason=seed-current`。复用阶段完成后,入口立即打印一次决策收据,再进行 provisioning、ensure 或程序构建;后续失败保留原退出码。
可继续选择时,只有最新兼容 Release 的 `producer_commit_sha` 是当前 `HEAD` 的祖先且严格晚于本地记录时才取回并以 `--refresh-stale` 替换;本地记录未知、Release 历史较旧或不在当前历史上时保留本地种子;缺失对象或浅历史无法证明祖先关系的 ancestry-unprovable 收据与完整历史上已证的非祖先区分。
可选取回绑定批准的 tag 和生产提交,不重新列举或向其他快照回退;替换前验证 staged 报告的格式、完整性和清单身份,build 与 base 一起提交,提交前失败恢复原种子及 base。提交后的备份清理失败保留备份并报告已安装。列举、读取清单或可选安装失败且回滚成功时保留本地种子并继续 Lake 增量路径;回滚失败单独报告 `rollback-failed` 和保留的 backup 路径,以 `reason=release-rollback-failed` 非零退出。可选刷新后重新检查种子,缺失或不兼容时拒绝进入 Lake。
干净谓词包含未跟踪文件。只有干净 dev 主检出的 canonical 种子生产或安装写入可信 base,恢复取清单生产提交与安装种子的完整身份;新种子无可信 base 时先移除旧记录。
canonical publication、seal 和 base 写入在同一缓存锁内完成,seal 核对 publication 返回的五件 bundle 身份,已被替换的 generation 不重封或改写 base;base 还绑定 seal 写入的成功收据,从 canonical 整份复用时更新身份并保留原生产提交,从自定义种子发布到 canonical 时 base 未知。已未知 base 的记录清理失败只报告维护诊断,不拒绝有效复用或阻断生产准备;实际替换 generation 的 provenance 写入与失效要求不变。
capture 只读输入,不改 base 或成功收据,也不依赖 Release 模块。canonical 生产准备只在现有缓存锁内移除 metadata;失败清理不移除 canonical 成功收据或 base;入口未改变 canonical 报告时,包含复用后的程序构建失败,保留当前收据和 base。
成功收据仅在持有现有缓存锁、即将改变报告的准备阶段移除,并在报告成功封口后写入;已准备的生产失败保持无收据,下一次入口按既有缺失种子恢复路径处理。锁忙时不改活动 generation。自定义输出的生产准备和 seal 保留 canonical base。
CI、非 dev 和 detached 主检出不进行可选刷新。相符的种子按原生增量路径处理源码、配置与执行环境差量。
`make lean-report REBUILD_REPORT_CACHE=1` 跳过报告恢复和整份收据复用,显式允许完整报告构建路径;主检出的 ensure 仍可按现有主检出专用路径由归档补齐冷的项目层。`make lean-cache-from-github-without-mathlib REFRESH_STALE=1` 显式替换已存在的私有 build。
普通 required CI 显式选择 `LEAN_REPORT_CACHE_MISS_POLICY=fetch-or-fail`。独立手动/PR producer 和 Release publisher 显式选择 `LEAN_REPORT_CACHE_MISS_POLICY=reuse-or-build`,该路径跳过报告恢复。入口策略由参数选择,不由环境变量判断本地或 CI;直接 `inspect.sh` 默认 `reuse-or-build`,可用 `--cache-miss-policy fetch-or-fail` 选择本地守护。
**Start with compatible reuse**: follow section 6.1; observation-only tasks need no new tree or cache preparation. For edits or builds that write, validate and reuse a suitable linked tree first; create through `make worktree` with explicit DEST only when isolation is needed. Creation does not materialize Lean caches; existing cache doors remain required. **Lean 构建一律走本层门(`make lean` / `make lean-report-scoped` / `make lean-report`,内含 lean-cache ensure 走缓存;预热即 `make lean-cache-ensure`),禁止任何冷裸 `lake build`/`lake env lean`(案号 #2762)**:现行 ensure 行为以 `LeanCacheEnsureCommand` 及其测试为准。linked worktree 没有 `.lake` 时从主检出整份 clonefile;`.lake` 在位且 stamp 匹配时不再播种,项目层为冷则拒绝并给出补救;stamp 不匹配、缺失或损坏时从主检出重新播种(整份或 build 层),主检出不可用时失败并给出补救。主检出另有已登记 donor clonefile、Release 归档、`lake exe cache get` 与原地重产等路径。裸 `lake` 可能留下无 stamp 的 `.lake`,下一次 ensure 即按上述规则处理;裸 `lake` 仅允许在 stamp 在位的热树上做增量调试;凡 `.lake` 缺失或无 stamp,一律先过 `make lean-cache-ensure`。〔守护:**软 + 硬投影**·意图不可 lint;硬投影=派席 brief 的构建步骤必须写 make 目标而非裸 lake,评审席按 #2762 打回;worker 侧违律的判据即 ensure 收据 `stamp_miss:missing` + `clonefile_attempts:0` 同现〕;
### 8.4 诊断信号与产生处的质量
**用器看征不看愿,原材料在产生处保证质量。** 判结果看退出码、判活看 CPU 增量、完成看哨兵与产物,不认耗时、静默、口头。误导信号须修 producer harness,不把反复警惕的负担转给读者;输出须按实例/时间窗定标、一信号一义、唯一权威、坏即显式 fail-closed,以“好原材料无法被误读”为目标。
**读数口径**:过载只认 CPU idle%+memory_pressure,不拿混入阻塞/等待线程的 load average 判断;append-only 日志计数分本次 boot 的 current/full/last,不裸计全史回答现在;索引、窗口与口径须随计数。wrapper/echo 的恒零退出码不代表任务成功,认命令真实哨兵。exit=143 须对齐 sync 时间戳区分 restart/watchdog;codex 归因另守第 8.5 条。被信号骗一次即补产生处,缺工具先铸,同类新事需重复三遍先铸器(第 7.3、7.9、8.1 条)。
### 8.5 codex 异常的实际日志硬门
**【硬门】codex 失败/超时/无结果及 sshx 异常退出/abstain,必先读实际日志,禁猜。** 未读原始日志前不得归因、写事故结论、提本仓/上游 issue、报完成或按表层症状选修法;表层只证明观察者没看见,不证明 codex 行为。
**权威输入**:CLI rollout `~/.codex/sessions/YYYY/MM/DD/rollout-*.jsonl`;载体若有实际 prompt、stdout/stderr、退出码/终态信封也须读,不能假定收到的题等于派发意图。按动作与时间戳看相邻间隔、命令频次及终止方式:连续活动≠hung,0% CPU≠死(可在等构建),超时≠题难,空 stdout≠未干活。不能把验证器失败当数学难度而让步命题。
**结论必须引用实际存在日志路径**,缺引用/路径不存在即归因无效,须撤回重做,不是待补证据。按第 2.10 条只留必要结论和来源,不拷贝日志或保存过程。〔守护:**硬门(行为)+半硬(机器)**·路径存在性可判,尚无 lint,#707 仍须先解 CI 路径不可移植问题;到位前由评审守,尚未 lint 不豁免〕
### 8.6 宿主作业所有权与后台边界
**长任务走宿主后台作业机制,不 shell 甩后台**:Claude Code 用 Bash `run_in_background:true`,其他宿主用等价作业/会话句柄。预期超前台预算或时长未知的 本地检查/gate/lean-report/worktree/全量 dotnet test/codex/sshx/CI 等待均适用;Bash 前台 timeout 上限 600s,更大值截断并在 10m 以 143 杀任务。
一条宿主调用承载真实长任务,内部 wait 全子进程,真实退出码落哨兵,判绿只认它。禁 `nohup … &`、`(…) &`、`setsid … &` 让 launcher 先返回:其 exit 0 不代表任务完成,宿主可能清整进程组;脱离生命周期/通知后 pgrep 也不能判完成。并行开多个宿主作业。
**例外**:脚本内部并发 `&` 后 wait 收拢合法,但 **& 与 wait 必须在同一条命令**,启动器返回前等完全部子进程,不能事后补 wait。写命令时核“返回时真实任务结束了吗”;对象是程序实际行为,非对 detach 的印象。`seat.sh dispatch` 等席位全生命周期才返回。无宿主完成信号易衍生 sleep 轮询,第 8.7、8.8 条仍适用。
〔守护:**软+硬投影**·shell 文本可搜,意图不可 lint;完成须给真实哨兵退出码。转录自审须同时判①尾随 & 且同命令无 wait;②已知长任务在前台且无后台选项。已知类含 `seat.sh dispatch`、`nyx.py ask`、`make {lean,lean-report,本地检查,gate,worktree,pr-open,cover,cover-batch,deposit,emit,ingest,test}`、`dotnet test`。只查①会漏②,运行输出/判词绿也不能证明未违规。匹配限定命令位置(行首、`;`、`&&`、`|`、`$(` 后),先剥 heredoc 体,不整命令豁免,避免散文/源码假阳与体外漏检。`tools/scripts/agent/selfaudit.sh` 可数违规/合法形及按用户指令行号分窗的挂钟,并查第 8.3 条裸 lake;每次反思必跑,只留有用结果不存转录副本(第 2.10 条)〕
### 8.7 原生同步等待与外部轮询边界
**有原生等待就不用自制挂钟**:sleep 循环会藏红、重复自写退出条件、与真实时长失配。用对象自带的同步阻塞原语,整个放一个宿主后台作业:`gh pr checks <n> --watch --fail-fast`(全出结果或首红退)、`gh run watch <run-id>`、`gh pr merge --auto`、子进程 `wait`、make 本身。写 sleep 前先查原语,有则用。
**确无原语的外部状态**才可有界轮询:间隔对齐实际事件节奏,每轮给时间戳/关键读数,开跑前固定判据,不事后定。临时读数供判断,不按过程材料留存(第 2.10 条)。
### 8.8 完成通知与唯一等待通道
**宿主会主动通知完成时,该通知就是唯一等待通道**:不得再用 `TaskOutput` 或等价阻塞任务读取等同一作业。收到通知后按输出路径读一次是消费产物,允许。判据是完成时本来是否会被叫醒;不会通知的外部事件仍用第 8.7 条 `gh … --watch`、wait、make 等原语。
*成熟锚*:事件驱动、单等待通道、回调/epoll、收到事件后消费、弃用 API 不因可调而沿用。〔守护:**软+硬投影**·转录可枚举 block=true/timeout 违规;现役自审器 `judge()` 三元组的 (iii-a) 枚举 TaskOutput block=true,(iii-b) 判 Bash 同时含 sleep 与宿主 `.../tasks/*.output` 路径。`--selftest` 15 例含通知后单读/只 sleep 无任务路径/创建后台作业三阴性对照,防过度收紧。器不在任何门,CI 无会话转录,每次反思自审才生效,不称硬门。反例两维为非 sleep 延时、变量间接路径、非 Bash、宿主目录布局变化,以及无人运行;尚未 lint 不豁免第二等待通道〕
### 8.9 所有脚本的通用性与可复用工具的仓库居所
**所有脚本必须通用,不得绑定本机。** 本条覆盖所有语言、目录和调用方式的脚本,包括 agent、构建、CI、运维、实验、一次性探针、搬运胶水及命令或配置内嵌脚本。禁止写死个人用户名、主机名、本机绝对路径、固定 checkout/worktree 位置、工具安装位置或个人缓存/日志目录;禁止隐式依赖个人 shell 启动文件、alias、已激活虚拟环境、私有全局配置或未声明的环境变量。
**环境差异必须成为显式输入。** 项目内路径由脚本位置或显式指定的仓库根定位,不得假定调用者的当前目录或仓库克隆位置;外部路径、服务地址、凭据和运行选项通过参数、配置文件或有文档的环境变量传入,默认值不得夹带本机配置。启动时校验必需输入、工具及版本,缺失即明确报错,不得静默回退到作者机器的私有目录或配置。声明支持的平台与依赖及可复现的安装方式;平台差异通过明确的能力检测与适配处理,不得把当前机器环境当作通用前提。
**可移植性须按实际范围验证。** 交付时在不同工作目录、包含空格的路径及不加载个人 shell 配置的环境中验证适用入口;未验证的平台或条件须明确说明,本机跑通不等于跨环境验证。宿主能力配置的例外不豁免脚本通用性。〔守护:**软**·通用性与验证范围靠实施及评审,本条不宣称已有全脚本可移植性机器门〕
**器住本仓,不住宿主。** 跨会话复用的自审/落地/巡检器必须 tracked:agent 器在 `tools/scripts/agent/`(已有 FILEMAP 面),harness 走 tools 正门;`agents/` 宪章封闭面由 SL-000 拒脚本。禁放 `~/.claude`、scratchpad 或其他宿主目录,以便多机共享、PR 验证、判例修复积累。
仅本会话一次性探针/搬运胶水可例外存放仓外,不豁免上述通用性要求,判据为第二次是否还用;被 CLAUDE.md/记忆/skill 引用即跨会话,必须入仓,仓外引用按第 9.2 条悬空。胶水入仓不因此欠单测债(第 9.1 条)。*成熟锚*:monorepo tooling、vendoring、IaC、可移植性。〔守护:**软+硬投影**·归属靠评审;CLAUDE.md/skill 工具路径须仓内 tracked,指向 ~/或 scratchpad 即红〕
### 8.10 语言服务器与语义读数
**语义分析用编译器/语言服务器,不拿文本当语义**:C# 用 C# LSP,Lean 用 Lean LSP;查引用/定义/调用可达/模块互依均如此。缺语言支持先装/配,实测成功再分析,不退回 grep 猜。
文本可用于字面量、禁令词/魔法串、注释/文档、粗筛后逐个语义确认,以及 LSP 覆盖不到的 shell/Makefile/YAML。符号工具也会因定位错误产假读数,必须说明完整口径:哪个符号、哪个位置、采集方式。
Lean LSP 内置 `lean --server`,无需另装;C# 由官方 `csharp-lsp`(`lspServers.csharp-ls`,`.cs→csharp`)提供。**宿主能力例外**:`.claude/` 被 `.gitignore` 排除,LSP 配置不随仓分发,与 codex 搜索同属本地能力;本律约束分析方法,不承诺可移植配置,换机须实测可用性(第 8.9 条例外)。〔守护:**软**·方法真实性靠评审;承重符号结论须在 PR/判词给工具+符号+位置的语义读数采集方式,只给 grep 不承重〕
### 8.11 PR open/watch 的消息与退出契约
**PR 器**:`pr.sh` 为 `open`/`watch` 双动词;`make pr HEAD=b MESSAGE=file [AUTO_MERGE=0] [DRAFT=1]`(pr-open 同义) 用一个消息文件(首行标题,其余正文)传全部调用方字节,标题/正文都不经 make/shell 展开。先按显式 HEAD 解析远端分支并冻结其 SHA,再在同一有界前台进程内 create → App-token 隔离 → 默认 arm auto-merge → 等 required CI,可辨退出码返回。`AUTO_MERGE=0` 不 arm 但仍等 CI;`DRAFT=1` 传 `--draft`,创建成功输出 PR 号后返回,不 arm、不等 CI,优先于 `AUTO_MERGE=1`。直调 `pr.sh open` 仍由显式 `--auto-merge` 开启自动合并,`--draft` 同样优先;`make pr-watch PR=n HEAD_SHA=<40-hex-sha>` 复用同能力,直调须给 `--head-sha`。缺值即 usage 错误,不得用调用工作树 HEAD 或首次 PR 快照补值。每次查询同时核对 PR head 与固定 commit 的检查归属;旧 head 快照只等,不得判红绿或 CLOSED,超时仍返回 124。身份缺失/矛盾、GraphQL 部分错误或上下文分页未完整取得均属查询不可用;判词携带固定 head 与实际 check/run 身份。调用方用一个宿主后台作业同步调用,认退出码;无常驻进程/租约/重算链/冲突分类器。
**make 门只保真绿/不绿**:配方失败统一返回 make 2。`1` 红、`4` CLOSED 未合、`69` 查询不可用、`124` 超时只在直调 canonical `tools/scripts/pr.sh watch` 可辨;经 make 判原因读 stdout 末行 `PR_WATCH_RESULT ... outcome=`。
### 8.12 CI 分类、持续集成与真实事件验证
**改 CI 三类验证,本条唯一主责**:管 `.github/workflows/**`、其脚本、权限/job 拓扑、required check 名/判据。①**最小 hotfix**仅恢复既有行为,普通 PR 直达 dev,无 integration 或稳定条数前置,全部 required checks/相关回归/真实触发仍须验。②**feature**全部功能覆盖且连续稳定合入 **≥4** 集成 PR。③**重构**全部受影响行为覆盖且 **≥8**。后两类无论单/多层,先在 `integration-ci-<主题>-tests` 按需逐项集成,覆盖/性能/条数齐备才可将 dev PR 转 Ready 或合 dev,可先建下述 Draft;禁改名 hotfix 规避。
**无稳定时长门槛,不要求追平 dev tip或开 Draft 前追平**:只按覆盖、性能、适用 PR 条数、真实事件判词验收;旧 GoalArtifact/PR/流程中的小时/天数观察期不再适用。性能耗时测量、运行超时、首个真实 run 核验仍有效;第 8.14 条/spec 的同步、稳定资格与交付依本条,不另加条件。
**integration 与 dev 同保护强度**:`integration-*` 分支保护/检查义务/执行环境须等价且 strict=false;非被测入口/权限/runner/缓存从共享配置取,禁专用弱化模式。被测 check 名/拓扑/缓存差异逐项给 dev 对应关系并按实际版本验,不要求两实现先相同。本款不声称远端已对齐;未达标实现/required set 不提前搬 dev,旧 workflow 绿不抵新资格,分支过滤不选版本。
**单一交付分支(强制)**:资格达标后,从最新 dev 切出一个交付分支,按层序 cherry-pick 已在 integration 验过的全部候选净提交(不含镜像与合 dev 的提交),以一个普通 PR 交付 dev;禁止多个原 lane 各自或串行转 Ready 交付。原 lane 及其 Draft 只承载开发、修复与安装,交付 MERGED 后关闭并引交付 PR。
**候选来源与跟踪 Draft**:integration 从不可变 dev SHA 建,各层以实际测试分支为 base 的独立安装 PR 全部 required checks绿后正常合入,记录源 lane/提交→安装 PR;候选修复回原 lane;改变被测行为者再独立安装复验,行为未变且对应证据充分者只补受影响检查,不只留测试分支,原 lane 不合镜像历史。实际测试分支→dev 的集成跟踪 Draft 只作证据入口,始终 Draft/auto-merge off,验后关闭不合;原 lane Draft 达标前同样保持 Draft/off,与跟踪 Draft 互引。无可审 diff 待真实 diff 再建;integration 先有首个安装 PR 全部 required checks正常合入,禁 dummy commit/绕检查。
跟踪 Draft 载当前验证结果:实际测试分支、candidate head/base SHA、实际 workflow 修订、事件/run 身份与链接、逐 PR 判词、性能/缓存、覆盖、稳定已计/未达项(未起算明写)。交付 PR 引证并说明候选净改动与被验版本对应;跟踪 Draft 不替代安装后触发验证。依第 2.10 条不另存日记、对话、命令流水或重复快照。
**逐原 PR 同步**:围绕当前固定集成基线与覆盖需求,按依赖顺序镜像已合 dev 的原 PR;基线已包含的历史 PR 不再镜像,一个原 PR 对应一个真实独立 integration PR,只带该 PR 净变更,实际测试分支为 base,在候选 CI 下全部 required checks验绿正常合入。第一条镜像单独开出,合入并收集、分析其合入后 push 结果后,其余镜像可如 dev 上的并发 PR 一样同时开出,各自在当时的 merge ref 上跑全部 required checks,绿后按依赖顺序正常合入;每条合入后的 push 结果仍逐条收集分析,任一 push 非预期红即暂停合入其余镜像直至诊断。禁批量 merge dev、打包多原 PR、直推同步。integration 只经 lane 层 PR、单原 PR 镜像、下款清理 PR 进改动,push CI 照触发。候选判官按实际 delta 的端点分树分类:仅快照证成的删除端按 integration protected-base FILEMAP,其余端按 candidate FILEMAP,据此分类;合法混面报 SL-029 `ADMISSION-PLANE-MIXED` (`Warning`/`Observe`)并继续全部验证,dev 旧绿/镜像名均不豁免任何其它检查。既不能断言单镜像必单面,也不能断言整批必混面。搬运不替代判官;必要结果映射为原 PR/源 merge SHA/链接→集成 PR→被测 head/base、workflow 版本、run/判词。最后镜像 dev SHA 只标覆盖范围,其余增量由交付 PR merge-tree 验,汇总绿不替代逐项稳定证据。
**基线刷新:feature rebase dev, integration 从同一 dev 重建。** 集成测试期间 dev 合入重大变更、使集成分支或候选与 dev 不兼容(如 CI 拓扑、必需检查名、判官接口、构建或缓存配置改变,致镜像或安装 PR 须改写才能合入或通过)时,不在旧集成分支上逐条镜像或适配补齐,按本款从最新 dev 重新切出 integration,候选 rebase 到同一 SHA,旧集成分支停用。分支与 dev 偏离较大并造成实测冲突、旧接口/配置兼容负担或历史同步成本时,优先刷新基线,不必等到完全阻断,不为保留旧集成分支持续补偿。先钉当前 dev 的不可变 SHA,在隔离工作区将原 feature/lane rebase 到该 SHA;可整理并重放已完成候选的最终净改动,保留原候选 SHA 供内容核对,不得丢失功能、回归或混入 integration 镜像历史。冲突处理后完成必要验证,再更新原 feature 与其 Draft。从同一 dev SHA 新建 integration,经独立安装 PR、全部 required checks、普通合入与首个 push 分析接入候选,不得直接推入候选绕门。新旧跟踪 Draft 明确替代关系,旧跟踪 Draft 关闭;交付依「单一交付分支」款。
**刷新后的测试边界**:刷新本身不重置稳定计数。先核候选对应及相关执行环境/行为,旧证据仅在原绑定范围内保留;变化或未证部分定向补验行为、真实事件、缓存与性能。新基线/分支的安装全部 required checks、首个 push 与适用真实事件仍须验证,整组重计只依下款「重计依据」。新基线前已经包含的 dev 历史无需逐 PR 补跑;未达标部分按需逐个引入独立 PR,每次分析 PR 与首个 push 后再推进。不得用重建回避具名失败、跳过回归或降低保护。分支年龄或 dev tip 前移本身不触发无条件重建,决定须附冲突路径、提交范围或实际兼容/同步成本读数;无固定等待期,也无机械追平要求。
**逐项分析与优化**:每项正常合入后收集 PR+push CI,关联上述身份,分析各阶段成功/失败/跳过原因、总/关键路径/分阶段耗时、缓存命中/失效/恢复/写入、Lean 重编/报告重检范围、重复工作/回归/异常。按实测修影响验收的瓶颈与必要优化,以可比条件复验影响面;无需改动以已有实测为据,不扩无关改进,达标即转交付。复验与重计依下款依据及范围;正常输入 PR 在候选行为未变且成功时按序计入,head/base 前移本身不重置,不要求整树不变。
**覆盖与性能**:逐功能覆盖所有适用真实事件、路径过滤命中/不命中、路由/job、成功/失败、权限、artifact 传递、缓存命中/失效/重建,逐项绑候选版本与 run。程序行为测试依第 9.1 条,禁 workflow 测试依第 8.13 条,本地不替真实事件。正确、高性能、代码清晰均为验收条件,全部 required checks绿不许可更慢/更复杂。可比源码/载荷、runner、工具链、缓存下测前后总/关键 job 耗时、缓存复用、实际增量/重建量并说明差异,不外推本机为 CI 性能;禁减检测/抬预算,strict 禁令不变。
**稳定计数**:单位为最终候选 CI 版本在实际测试分支经真实事件全部 required checks绿、正常合入且首个 push 必需检查成功的集成 PR,每条一次,从该版本首次真实绿起按合入顺序连续 feature 4/重构 8,连续性与失效按下款判。版本指实际 workflow/程序/判据/执行配置的行为,非整树 SHA。可计逐原 PR 镜像及候选实现/安装/修复/优化 PR;空分支、等待、旧 workflow 绿、重跑、dummy、验后关闭的探针 PR 不计,同原 PR 不拆包重复计。跑前预登记且命中具名预期判词的负向测试既不算不稳定也不计条数;漏检/非预期判词仍须修。
**达标即停,证据不越界**:最终行为候选完成上述 feature 4/重构 8 个真实 PR+首个 push 单位及适用行为/性能/事件覆盖后,停止追加镜像或重复整套验证,转做剩余交付检查。不得仅因求放心、时间流逝、同靶复审、dev 前移、新 SHA、内容/元数据/注释/格式变化或未变字节重新采集而重验整套。旧证据仅可在其实际候选、输入、执行环境及已证行为范围内复用;新受影响输入/路径、required checks、最终 merge-tree、首个 dev push 与尚未覆盖的真实事件,仍须针对适用状态各完成一次所需验证,失败照常修复复验。8 绿不等于全目标完成。
**重计依据**:调度重计/重新取得资格前,须有具体 workflow/程序/判据/执行行为变化,或原验收无效的具体证据。在既有 PR 证据中简记改变的行为/失败断言、不可变候选及 run/test 身份、哪些既有义务须重验及哪些证据失效、受影响复验范围与停止条件;不另建账本/模板/工具或过程记录。仅当合格行为版本实际改变,或证据失效覆盖整组资格时,才从该版本真绿起重计 **4/8**;失效仅限部分单位则仅撤销并补足那些单位,保留其余有效证据与计数。不得仅凭失败、状态或 SHA 推定失效。
**失败处置**:非预期失败必须保留判词、诊断并修复实际问题,重跑成功不抹失败;失败的新 PR 不计数,required checks 未通过不得合入。正确拒绝新增非法内容、无关外部服务/传输故障、实测语义保持的表示修正或采集失败,均不自动抹去有效旧单位,依上述依据界定影响面。原因未明时阻断受影响验收直至诊断,不得据此盲目全量重验;真实候选缺陷不得改称格式/基础设施问题来规避已证影响面。
**逐 run 事件/版本取源**:分列实际事件、入口 workflow 仓库/路径/不可变 SHA、PR base/head、实际 checkout 候选 SHA(PR 为 M)、protected base(PR 为 B=M^1)、reusable workflow 仓库/路径/解析后 SHA(若有)。同名 check 绿或 M/B 不能代替 workflow 版本;来源记录不扩张第 9.5 条语义检查/固定事件规划输入。
`pull_request` 入口执行受审 PR merge tree 中的 workflow;`github.sha` 是该 merge commit M,受保护基线是 `M^1=B`,不是事件 payload 中可变分支状态。[GitHub 官方文档](https://docs.github.com/en/actions/reference/workflows-and-actions/events-that-trigger-workflows#pull_request)说明该事件按目标分支过滤,合并冲突会阻止 workflow 运行。短/长 CI、Actions/Release 缓存的触发、ref 归属、工作量、写入条件、时限与失败策略统一见 [spec A22 缓存契约](docs/develop/spec/golden-ledger-repo-spec.md#a22-ci-cache-flow)。普通 PR required job 不发布 project;保留准备标签的 PR 在 opened/reopened/new-head 或该标签添加时自动 dispatch 到受保护目标 ref,在该 runtime 检出源 M 并执行长构建,只准备原生 Actions artifact,不写普通目标 cache,编译 job token 只读。源 PR 可显式取回;实际合并匹配后,目标事件直接采用,无需等待第二次 publisher。调用者按 A22 持有 `AUTO_MERGE=0` 至该准备 producer 与当前 head 的 required 成功;来源 M、workflow 目标 T 与实际 merge K 分列,不把 M 伪称为已合入,实际恢复仍须集成核验。不得把缓存成功当作 required 成功。workflow/脚本接口同 PR 原子更新并核实际调用者/被调用者版本配对;`pull_request_target` 不作为候选 CI 入口,Release 发布使用独立受信任入口。
**安装后首个真实 run 立即核验**:integration 按实证可达触发方式,最终 dev 再核 dev 触发。未触发记缺口,dev 非预期红按第 7.14 条撤因。hotfix 合前完成可达验证,仅依赖默认分支更新的路径合后立即真跑补记;feature/重构不得借此延后集成。
**取源差异下继续可达验证**:可用明确事件(如 pull_request 调钉版 reusable)验证候选程序/复用流程,只证明该事件/版本/权限;逐项披露相对拟上线原生事件的语义/权限/其他缺口。未证可达的原生路线不报已存在,旧绿不抵新资格,同 PR 另有旧 run 不使候选 wrapper 成为重复项可取消。继续可达的逐原 PR 覆盖,但 Ready/merge 仍须全部覆盖/性能/条数/真实事件资格;条数不抵原生缺口,不得先搬未达标 CI 到默认分支以使其可选。本款是事实校正,不创验证豁免。
**清理与最终对应**:专用探针载荷放触发 PR,验后关闭不合;合法镜像改动/历史留 integration,不为整理交付 diff 撤镜像。清理只删已有实验载荷/临时 wrapper,独立 PR 全部 required checks正常合入并分析 push,保留新 CI;复验与重计统一依上述依据及范围。交付前钉原 lane head、已验 integration head/各自基线,列全层候选/修复/优化/安装映射;交付分支改动的每个文件须与已验 integration tip 逐字节相同,或差异仅来自 integration 起点之后的 dev 提交(逐个点名),否则回流补验。不能仅靠标题/数量/patch-id,不要求整树同一,不重放已验历史替代对应核对。基线差异/冲突适配须说明,遗漏或未经验证差异先回流修复并补验影响面,不因清理或对应核对本身重计。
**交付收尾**:候选对应与最终覆盖/性能/条数均达标后,按「单一交付分支」款以一个普通 PR 合 dev;只带本次候选及必要修复,SL-029 按第 7.5 条警告并继续验证,不并入 integration/镜像历史、不把跟踪 Draft 当交付。记录最后镜像 dev SHA,无追平/固定等待要求;交付 PR merge-tree 独立验当时并集并给 M/B,integration 绿不替代。dev 前移不自动重计或逼追平;实际冲突/失败须诊断,依上述依据补验影响面或重计,不重放有效集成单位。M1→M2 残余依第 7.7 条检测恢复,不冒领同树、不启 strict。
CI/权限/门控改动的独立 PR 开前评审归位;交付 PR 开出前完成最终评审,默认 arm auto-merge 前亦归位;未完成评审时显式用 `AUTO_MERGE=0` 或 `DRAFT=1`。交付 PR MERGED 且首个 dev push/适用新 PR 入口核验成功后,关闭跟踪 Draft 与各原 lane Draft、保留必要验证证据链接,回收测试分支,worktree 按第 6.1 条复用或回收;跟踪 CLOSED 只表验证结束,不等于交付完成。**纯政策文档可独立普通 PR 到 dev**,保留其 required checks,不为验证本条防重复政策另造 4/8 个集成 PR,不声称已部署重构或验稳定。
**验证边界**:本地检查 不验事件过滤/拓扑/权限/artifact/CI 目录布局。真实 CWD、旧调用者/新接口错配须靠真实事件暴露;集成目标过滤与 B 取 integration tip 不证明 workflow 文本来自 integration(#4201、#6650→#6658)。旧“只能合 dev 后测/其他 PR 永无窗口/装好 integration 即选其 workflow”推论 inactive;历史 run 只证明实际版本/行为,不同基线一绿一红也不证明无缺陷或持续稳定。
〔守护:**评审纪律**·feature/重构 Ready 前正文须引原 lane/已验候选对应、逐功能覆盖、逐原 PR 结果、实际 workflow、稳定各 PR/run、异常处置结论、可比性能/缓存证据。hotfix 引回归/全部 required checks/真实触发,注明待补落地触发。缺证不报达标,正文可改不冒充新增硬门,required checks 照常〕
### 8.13 workflow 测试禁令与早反馈边界
**永久禁对 workflow 写测试**:任何断言 `.github/workflows/**` 内容的测试,含直接/常量/helper 间接读取、为此存在的 YAML 分析器及自测,均禁。形状测试不能判执行;例如 `if:false` 可让剥夺步骤不跑而所有结构断言仍绿。workflow 正确性由第 8.12 条真实事件判,本地 本地检查 不能暴露全部 CI CWD 等问题。
**唯一豁免且 removal-only**:被测对象为消费 workflow 的生产逻辑而非 workflow 本身;现有 `AdmissionTopology` 拓扑夹具、`lean-report-input.sh` producer-paths、`FrozenLedgerDeltaPredicate` ledger-input。不得扩充豁免集放新 workflow 测试。
**INACTIVE·已退役保证**:workflow 测试与 `RemoteStateIndependencePolicy` workflow/shell 扫描闭包已退役,该 policy 仅余 C# 测试源扫描。授权 publisher 的 contents-write 形状、剥夺步骤契约、required-check 名→job 唯一解析不再有机器钉子,只靠真跑/评审;这是 owner 裁决,不冒报无损或自行降检测。
〔守护:**半硬+早反馈**·`WorkflowTestProhibitionTests` 扫 tools/tests C# 的 workflow 路径,放行侧钉子防未选中树,反腐测试守 removal-only。绕过反例:拼接、常量/变量间接、文件/环境读路径、相对 `../.github/workflows`、非 C#;检查跳过反例:项目不编译/不跑、删 Fact、错扫描前缀。仅早反馈,不证明树上无 workflow 测试〕
### 8.14 判官集成与真实触发 PR
**判官逻辑先 integration 触发、逐原 PR 复测,达标后 dev Ready/merge**:管 `tools/StrataLint.Engine/**` 规则/策略、门判据、新测试程序集、拓扑/IO/容量/棘轮等准入改动。CI 分类/覆盖/计数/两 Draft/同步/同保护/版本取源/无时长门/交付条件均以第 8.12 条为唯一主责,不另加追平或等待。单次 PR merge-tree 不消除 M1→M2,判官红会堵全仓。
**多层三段**(最小单层 hotfix 依第 5.5 条直 dev):①原 lane 保存各层,独立安装 PR 全部 required checks绿后合实际 `integration-<主题>`,维护两 Draft。②逐原 PR 镜像、分析/必要复验;候选修复回原 lane,改变被测行为者再安装复验,其余按已证影响面补验;实测须重建时按第 8.12 条新分支/Draft、核对证据与补验,是否重计仅依该条「重计依据」,达标即停。③必要清理、候选净改动对应、全部适用验证后按第 8.12 条「单一交付分支」交付全部已验层,PR merge-tree 验剩余 dev 增量,合后真触发再关跟踪 Draft清理。逐层 PR 在 integration 验,交付其已验各层,SL-029 按第 7.5 条警告并继续验证;不携镜像历史。
**每层合后、逐原 PR 同步前开专用触发 PR**:同 integration base 用最小载荷分别试应拦/应放,预登记具名 finding/Observe 或零判据,全部 required checks须经实证可达事件执行并读到候选输出;逐 run 核版本,替代事件披露原生语义/权限缺口。层 PR 绿只证存量未红,层 PR 的实际 diff 未必命中新判据,不抵触发证据。探针验后关闭不合,载荷不入分支;此例外不适用于正常原 PR 同步,预期负例按第 8.12 条计验证证据。
**操作边界**:被 revert 的原提交仍在目标历史,重提可报 No commits between;须新 lane 上 `git revert -m 1 <revert 提交>` 造新提交,不能在 integration 直接 revert-of-revert。集成树只由 dev 起点+PR 验过的层/逐原 PR 增量构成。目标过滤或 B 取 integration tip 不证明入口 workflow 取其文本;一次绿也不证明连续稳定(第 8.12 条)。
〔守护:**评审纪律**·Ready 前须引①层 PR 全部 required checks绿;②同基线专用触发 PR/run 实际应拦/应放判词;③逐原 PR 复测及适用覆盖/稳定/性能。缺项不达标,可变正文不构新增硬门〕
### 8.15 dev 红时的内容 lane 改投
**dev 因 harness 红,仅增加数据的内容/理论 lane 改投 `integration-theory-<date>`。** 适用面封闭为①`D5/**/*.lean`;②`Blueprint/**/*.scribe.cs` 及其 md 投影;③`Golden/Frozen/state/**`;④`Meta/Digestion/**`。仅加 DAG 节点、不改判官/门/workflow;触 tools/**、.github/workflows/** 或任何判官/准入面不得援引,须第 8.12/8.14 条。
判据为红因层次:dev 全部 required checks因判官逻辑/自锁/workflow/准入面红,该 lane 自身未红且只在四面才可改投。Lean 编译、SL-008、coverage 等内容判词须自己修;不能只凭所改路径认定无因果关系。
**步骤**:从当时 dev 建新日子命名分支,内容 PR base 改投它;若他人已建且当前绿,直接共用,不另建。dev 全部 required checks一恢复绿即整体 PR 回 dev,带其新增量复测全部 required checks,不得跨过下一次 harness 红。创建/红绿时间由 CI 可查;分支若跨第二红说明首次绿未及时合。合回即删除,下次取新日子重建,不复用陈旧支。
改投不绕门:integration 全部 required checks照跑,只改候选/受保护基线,不改变 pull_request 使用 PR merge-tree workflow;逐 run 版本/范围依第 8.12 条,回 dev 再验。改投不替代第 7.14 条恢复 dev。重复红在无关 harness 时应换 base,不陪跑。**归因边界**:测试由 CI workflow 内的单元白名单选择,单项目入口校验其真实执行证据;一个实证 dev 红不推出全部 open PR 同红,未逐一核实者 `ASSUMED-UNVERIFIED`。
〔守护:**全软+no consumer**·红因及 PR 引 dev 具名判词原文靠对手官核验;tools/.github 无字段消费者、正文可改,有无引用现役门同判,不称硬投影;缺引用仍无改投评审依据,不豁免任何检测〕
### 8.16 CI 与判官的显式白名单权威
CI 选工的唯一权威是 `Meta/ci-units.json` 的 `CI_UNITS` 与单元执行声明,本地 gate 和远程 `detect` 共享消费:每个单元一段,段名为其作业 id,`[*]` 段适用于全部单元;`*` 跨 `/`,`?` 匹配一个字符,`!` 排除。`ci_detect.py` 校验完整改动路径列表,不设路径数量截断,一次判定全部单元并输出命中表;单元作业以 `if:` 读取命中表,未命中即跳过。`required` 作业由 `ci_required.py` 核对检测成功、白名单段与单元作业一一对应、命中者成功、未命中者跳过;另直接核对仅属于已选 current 的 source 前置 phase。该 phase 不增 CI_UNITS 项,未选 current 时跳过;确定性源码拒绝阻止所守护的后继,bootstrap/input 失败与 blocked 保留原分类及有效 fallback,执行和累计预算依 SPEC A22。增删或改名单元须同时改白名单段、作业与 `required` 的 needs,不一致时 `required` 红。白名单不从工程登记、FILEMAP 或调用关系推导;工程依赖或测试读取的文件改变时,同一 PR 修改对应单元的白名单。
FILEMAP 管路径归属、custody、准入面、symlink 与 Evidence 格式。工程登记管程序集、项目引用与测试归属;Lean/Lake 按原生依赖执行增量。SL-003/SL-015 的检查材料仍在 `Meta/ci-checks.json` 显式声明。不得重建跨 workflow 的分析、阶段计划、公共执行证据或 transport 体系。
登记缺失与冲突具名失败,只修对应登记;不得通过 MSBuild、目录/名称启发式、反射、调用图或 IO 效果推导 CI 影响范围。缓存只复用增量工作,命中不构成检查成功。实际 required set、事件、覆盖、性能及稳定验证依 §8.12;workflow 测试禁令依 §8.13。
## 9. 验证、变异、引用完整性与确定性
### 9.1 陈述回声、TDD 与胶水边界
**陈述回声先行,先测后码。** 先核要证的题,防证对错题。任何新工件/包/工具/规则或既有程序修改,先写完整集成/单元测试作可执行需求契约,先行为边界/失败态(fail-closed),再正例;只实现转绿所需,红→绿→重构,不镀金。未先测不得直接实现。
**胶水不写单测**:TDD 管类型/判决/解析/状态机等承重程序;只组合 canonical make/gh/git 并转退出码/哨兵的脚本,权威在被调程序的门/测试,不重复造测试套件。胶水须开头 fail-fast 验全部输入且 exit 可辨、落真实哨兵、幂等或安全重跑。一旦自有结构解析/红绿判决/状态维护,即升为程序迁 tools 走 TDD,不借脚本名豁免。
*成熟锚*:需求确认、可执行规格、reuse-before-build、先库后证。〔守护:**硬+软+半硬**·硬面仅现役 build/kernel/manifest/frozen-ledger;先测/检索靠评审与自觉,胶水分类靠评审、三义务现场验。报绿须真跑看退出码;新程序缺覆盖、重证已有定理均评审打回,不留过程档案(第 2.10 条)〕
### 9.2 引用的存在、一致性与消费者
**引用须机械可判,悬空即红**:GID/路径/类型/组件 id/摘要/entrypoint/ticket/anchor 等指向性字段,须有消费者从被指向侧查找/重算,对不存在或不一致 fail-closed。只验十六进制/路径格式不算指向检测;无检测即无症状断链。
新增指向字段同 PR 必给消费者,否则不得进 schema。发现未检测引用,只能补检测,或删字段并同步删相应规范,不得字段/现役承诺都留着不执法。
**有界缺口**:2026-08-12 普查中 `Golden/values-kernels.toml` 的 `lean_gid/lean_statement_sha256` 仅验唯一/格式,writer 原样复制 values.json;spec SL-018 却要求候选 inspector 验 GID 唯一存在、kind=def、标准三公理闭包、statement SHA 与投影一致。此为该样本的规范/实现缺口,不冒称当前新测量;报现役须真执行,否则标延后。
*成熟锚*:外键/参照完整性、Merkle 校验、链接检查、编译期符号解析。〔守护:**半硬**·每类有无 fail-closed 消费者可普查,尚无 lint,由对手官守;格式冒充指向是主要伪装〕
### 9.3 变异证据与六元组
**检测存在只能由变异判,机制存在/正确不等于已被钉住。** 打断生产机制须有具名测试红,否则未覆盖。有效红须 `compile_errors=0` AND 非零退出 AND 具名 `[FAIL]`;禁以编译失败冒充测试失败,变异整块删除不留不可达代码。审 diff 分别看删/增名字,净数相等不保证钉子保留。放行侧须独立覆盖,全拒坏门也能过全套仅拒绝测试。
**完成证据六元组**:变异位置 → 具名红测试 → compile_errors → 退出码 → 还原 → **跑前预期红的条数/名字**,缺一不认。前五项验有无红,第六项验应红者是否都红;期望值必须独立于被测函数,不能跟实际一起变而恒真,别的测试红不证明该钉子有效。
预期在跑前写,不事后合理化。实得少须逐条分清不覆盖此变异或自指/恒真;多也须查是否越界,越界变异无效。**不要求预期与实得相等,要求差异归因**,结论随六元组给出。
〔守护:**软+硬投影**·变异真实性靠对手官,六元组与差异归因为完成义务,不冒称已有 lint〕
### 9.4 验证条件与分支上下文解耦
**验证条件不得耦合承载分支**:changed-path 门若只在修改该门的真实树测试,会恰落在可通过的一侧,同分支加用例无法排除。须换上下文核验。
〔守护:**软+硬投影**·changed-path 门的测试至少在命中闭包/不命中闭包两类分支各跑并给读数〕
### 9.5 head/base 与远端状态独立性
各 CI 作业通过 `ci-entry.sh` 使用固定事件候选。PR 检出 `GITHUB_SHA=M`,核对双父与第二父为触发 PR head,第一父 `B=M^1` 只供 delta 和路径判定读数据。push 核对 `HEAD=GITHUB_SHA=event.after`,按完整 `event.before→event.after` 端点差异判断 hit;初始 push 的全零 before 使用当前树路径。schedule/dispatch 也核对 HEAD 与 GITHUB_SHA。取得所需固定对象后移除 remote 与 remote refs;坏身份或缺失对象显式失败,不猜移动分支。
check-current 只检查候选最终树,不读 base、不消费工程阶段证据。check-delta 必须显式传 `--protected-base`,非理论变更还须 `--candidate-lean-report`;无报告仅适用 spec A22 的纯理论文件/容量检查。base 不 checkout、不编译执行。非理论 push 不运行 delta。独立测试入口验证真实 TRX;compile-proof 验证预期编译拒绝,都能单独运行。
`detect` 作业按 workflow 内的单元白名单一次决定各单元是否命中,不产生跨作业计划或执行证据。候选缓存按自身 PR 隔离范围运输,缓存命中不代替实际程序退出码。所有检查只执行候选代码,其它修订只按固定输入角色读数据;不在判词中查询 latest 分支。PR 检查时 M1 与落地 M2 的差别由 dev push 检测,不许可 strict。
移除 remote 只剥夺按名解析能力,固定对象与显式网络 URL 仍可达;这不证明远端完全隔离。候选可以修改 workflow,本文不提供 base 侧 workflow 文本保证。实际事件、权限、缓存与部署版本须按 §8.12 真跑核验,不新增 workflow 文本形状测试(§8.13)。
### 9.6 测试时间、确定性与接线边界
**功能/架构判词只依被测输入与注入时间,不依挂钟/机器性能**:时间只能是显式输入、fake clock/virtual time或钉住生产常量;真实等待仅 infrastructure-hang-guard,不承判词。性能实验分离,禁以 elapsed/重试次数/N 秒完成/宿主负载判红绿。
**符号硬门**:三个 xUnit 判词项目以 `BannedSymbols.Determinism.txt` 的 RS0030 精确禁 DateTime.Now/UtcNow、DateTimeOffset.Now/UtcNow、Environment.TickCount/TickCount64、System.Random、Thread.Sleep(Int32|TimeSpan)、Task.Delay(Int32)、Task.Delay(Int32,CancellationToken)、Task.Delay(TimeSpan)、Task.Delay(TimeSpan,CancellationToken)、Task.Delay(TimeSpan,TimeProvider)、Task.Delay(TimeSpan,TimeProvider,CancellationToken)、System.Diagnostics.Stopwatch;编译失败证明逐 marker 对齐 RS0030。
**hang guard/TRX**:`TestProcessRunner`/watchdog 行为测试把已路由子进程 guard 钉为 SkipException;`make -C tools test` 构建只引用 Engine 的 `StrataLint.TestEvidence`,经其 `TestResultEvidence.Load` 读 TRX,reason 以 `infrastructure-hang-guard expired` 开头即独立 INFRASTRUCTURE_UNRESOLVED、非零退。`list-test-owner-assemblies`、`verify-trx` 与 `compile-proof` 的实现均由该工具持有,CLI 通过项目引用转发这些命令。
**能力桥与时长**:`TestScratchRoot.cs` 只放一个具名 TestEnvironmentBridge,架构测试按路径/每能力各一次钉住;是否滥用为性能判词靠评审。tracked tools/tests/**/*.cs 时长集中唯一 TestBudgets.cs,成员各标 pinned-production-constant 或 infrastructure-hang-guard,这是**全软约定**,本地检查 绿不证明来源完备。
**不造时长语义门**:字面扫描可被别名/静态导入/构造/派生绕过;严格 AST spine 既有 false-known(含 selector 夹带额外读取),又把既有合法多 Where/tuple/Sum 管线从 admit 翻成 unknown,违保守扩展。当前无 D 机器,verify-conservative/base-candidate 对/证书已退役;收紧翻旧真、放宽漏判是当前词汇盲核,撤机器判据,不继续补 matcher。
**两维反例**:①别名、静态导入、显式/目标类型构造、常量派生、default(TimeSpan)、DateTime 相减、外部 helper、dynamic/反射、source generator、P/Invoke、shell/Make/Python 时间源、未列 timed-wait API,以及具名 budget 被用于性能判词。②pragma disable RS0030、NoWarn/editorconfig、条件假 PackageReference/AdditionalFiles、MSBuild 排除源码/不编 architecture、CI/plan 不执行、未接线新项目。符号门不完备,接线也须审计,不可 lint 不豁免。
**保留确定性实现**:report-supervisor.sh lock/build deadline 注入 `STRATALINT_SUPERVISOR_CLOCK`,夹具持久步进 clock+FIFO/sentinel 推进,真实让步等待不判结果。#261 disk/fd 耗尽有案,resource-observation-lib.sh 留 disk free/fd soft limit,supervisor 留 fd/RSS peak,只写 RESOURCE_OBSERVATION,采集失败不改业务退出码。无功能判词的 perf ledger/elapsed comparator/预算/汇总/report 命令已删除。判错征自查:同输入换慢机器会变红绿即违规;flaky 隔离不替根因修复。
*成熟锚*:hermetic/deterministic tests、virtual time/fake clock、避免 sleep 同步、性能/功能分离。〔守护:**硬门+硬投影+软约定**·硬仅接线项目列明 RS0030 符号及 TRX fail-closed;桥位置/marker 对齐为硬投影,时长集中/未覆盖语义与接线形状全软,靠评审及变异〕
### 9.7 依赖闭包增量与全量读取的分界
**检测放本次变更的依赖闭包,不全仓重算;漏项就补闭包(含反向依赖),禁全量兜底。** 理由为归纳:空仓一致,每次增量保持一致,重验已守历史不增信息,同于第 4.4 条的时间投影。
**禁全量派生作门,不禁全量读取建索引**;索引可补增量闭包。全量重算作为一次性对齐/迁移 producer 合法,不得挂准入门。第 8.16 条显式登记权威范围内仍以该条为准。
改实现便传 changes=null、只按路径前缀而非被依赖值唤醒、有 delta 入口却让门走全量,均违规。路径改名而 statement_id 集不变不得冒成所有边状态变更;派生读 base/diff 时,搬到其计算状态又使值翻转会形成无可满足位置的自锁,不能用全量兜底解决。
*成熟锚*:归纳不变量、最小重算集、写入时数据库约束、禁重放已入账、引用透明/记忆化。〔守护:**半硬**·入口及退全量分支、唤醒输入是否读依赖值可机器判;闭包完备性不可 lint,靠对手官/判例,漏一类补一类〕
## 10. 容量、缓存输入、账本与查询
### 10.1 静态容量的三型与派生契约
- **量腹而食,度身而衣**(淮南子·说林训)——**性能裸常数案;度身=静态,非饱否。** 反事实域:语义不变,仅变进程 vCPU 或内存配额;派生式须有类型、可机械求值并声明合法域。容量变即重算,字节可不变。并发、槽、worker、驻留批量、owner 明定「有界工作量÷版本化吞吐」等待预算在域。锁租约、协议活性、API、网络 deadline、正确或安全上限、测试夹具、格式、SL-003 目录容量在域外;参数名含 timeout/memory/batch/性能者,**不因名入域**。
三型按产物择一:①`capacity-derived` 产容量值,声明同单位静态 `C_i`、属主单任务 `r_i` 及输入约束,同输入同值;②`relation-derived` 只证已分类端点关系,不产或赦免容量末值,依赖图无环,无未分类端点或未具名裸叶;③`policy-override` 明报「这不是派生值」、日期、域、正反读数、永久案号、owner、退出条件或复审触发,非永久。无号明写 `open(案号待开)`,不得以「待收口」代替。无源未报=违规第四形;常函数掏空分型仍属硬编码。owner 只定任务画像、具名保留、超配系数、规则选择;裁末值或平台界仍裸。
`C_i=min_j U_{i,j}-R_i`,`U_{i,j}`=同单位适用上限,`R_i`=该维具名静态保留;`q_i=floor(C_i/r_i)`,`N=min_i q_i`。CPU上限:在线 vCPU、cpuset/affinity、核数化 `cgroup cpu.max`、runner CPU `allocatable`/`request`/`limit`;内存上限:宿主总内存、cgroup/容器 `memory.max`、runner memory `allocatable`/`request`/`limit`;两维禁混同一 `min`。无上限不入 `min`;`request`、`limit` 须入字段名,禁混称。`r_i`=属主具名强限(`-j K`/cgroup limit)或隔离、可复现、版本化峰值基准收据。具名 `r_i` 只能按 workload 身份或版本选择;按容量承载体(平台/runner/profile 等同时决定 `U` 的键)选择 `r_i`,即归③`policy-override`,须带案号、owner、退出条件。`min`/`floor` 是跨机结构,余为数据;缺一即 `open`/不可派生,禁以漂移量、RSS 时点或裸数补。容量反事实只许`U_{i,j}`变;`r_i`、`R_i`、工作量、吞吐收据、超配系数、舍入规则、合法域及一切遮蔽上限须定版且逐字节不变,不得反读`U`/`C`/`q`/`N`/当前配额派生。上述叶固定后求合法域内未受其它资源瓶颈或遮蔽上限的`q_i`相邻商边界,检查受控参数的有效末值按舍入规则变化,不查证据或元数据字段。每一遮蔽上限(平台/workload-local/harness-local)须归入三型之一:正确性/安全上限须点明域外分类依据;否则归③并带案号、owner、退出条件,不得以「独立分类」自豁免。`N<1` 即报容量不足,禁 `max(1,…)`;批量/timeout 各声明量纲、公式、合法域与边界判据。
依数据流划界:启动现读且两读必等的 vCPU、总内存、cgroup、cpuset、容器配额、runner 规格;禁 loadavg、CPU idle/utilization、free/available memory、memory_pressure、cgroup 当前用量、运行队列、进程数、排队时长、近期耗时或吞吐流入该前馈式。后者只入性能账作 observation/诊断/离线标定;**可观测,不可控制**;禁 observation→该取值或启动后回写。第 8.4 条「直接读 CPU idle% + memory_pressure,判过载只认它」属过载诊断,不受本禁;有具名状态、稳定性契约、失败边界的动态反馈属另类机制,不受本条约束。机判:定 `C_i`/`r_i`,扰动漂移量输出逐字节不变;上限变即重算;商边界见〔守护〕④。固定事实须测;漂移值禁冒现值。**启动期静态默认派生禁负载观测进入前馈求值。**
**违例判据**:无案试数是裸数,idle↑加 worker/久排扩槽是漂移反馈,RSS 代峰值是代理冒真值,复刻容量读取是双真源,按名字入域是作用面泄漏。**当前 override 的有界证据(2026-09-12 复核)**:`tools/scripts/report/report-supervisor.sh` 默认 `STRATALINT_LEAN_MAX_CONCURRENCY:-5`,守卫身份为 `ReportSupervisorLeanSlotTests.DefaultLeanSlotCountAdmitsConcurrentProducers`;这是 policy-override,永久 #1910,owner=仓库 τ=0 owner,复审触发为 #1910 关闭或静态 C_i/r_i 收据齐备,届时派生或撤销。脚本头注的内存算术仍是“外推不是实测”,memory_pressure 仅作异常诊断,不参与默认值。旧 perf-event-lib.sh 已由 `807f1db05d` 删除,supervisor 已不读 CPU,静态 CPU 现役读者在该复核为零,不能再称双真源。锁/协议关系的 relation-derived 守卫只示范②形状,属容量域外,不证明默认 5 派生;旧 1 的问题是无案而非数小。性能/效率核非同质,无具名单任务强限/峰值收据时不得偷渡 r_i 或以 idle 算槽。引用用身份锚,不靠漂移行号(第 4.3 条)。
*成熟锚*:Kubernetes allocatable/request/limit 多资源 bin-packing;cgroup v2(`cpu.max`/`memory.max`/`cpuset.cpus.effective`);前馈 capacity planning≠反馈 autoscaling;Parnas 信息隐藏/SSOT。
〔守护:**软(当前)+未现役硬投影**·当前无 lint/test/resolver;本地检查 绿不证本条。未现役:①域内默认值禁裸数;②依赖闭包限静态容量/任务契约且与漂移零交;③定 `C_i`/`r_i` 扰动漂移量后输出逐字节不变;④非容量叶冻结且不得反读容量后,合法域每个未受其它瓶颈或遮蔽上限的相邻商边界均使受控参数有效末值按声明舍入规则变值。第 8.5 条:**「尚未 lint」不构成豁免**。〕
### 10.2 Lean 构建成本的两个坐标:缓存与证明项
**跑得久,先去看缓存,别熬**。裸 `lake` **拦不住**——第 8.3 条 那条禁令是软守,全仓无任何机器规则(实测 `BareLake`/`LakeInvocation` 零命中)。拦不住的东西就别假装拦得住,改为给出**症状→诊断**的映射:**症状**=`make lean` / `make lean-report` / `lake build` 跑过几分钟仍未完。**别做的**=等下去,或据「已用时间」推断题难(第 8.4 条:判定看退出码不看已用时间)。**该做的**=读 `LEAN_CACHE` 收据——ensure 每次都打,字段自带答案:`status`(`seeded` 播种成功 / `present` 已在 / `degraded` 降级)、`method`(`clonefile` 本机 donor / `cache-get` 公共供给 / `none`)、`project_olean_state` 与 `mathlib_olean_state`(`warm`/`cold`)、`archive_status` 与 `archive_skip_reason`。**`project_olean_state: cold` 就是「接下来要全量重编内容层」的事前信号**,不必等它编完才知道。**参照点(2026-08-23 实测,同日同机)**:有热 donor 的新 lane = **13 秒**(`status=seeded, method=clonefile`,内容层 1430 + 依赖层 8550,两层 warm);无 donor 走 release 归档 = **6.5 分钟**(取 5m08s 走 `mode=prefix` + 补编 1m18s,重编 19/1513 个模块)。⟹ **本地任何 Lean 构建超过约 10 分钟,先怀疑缓存,不要先怀疑数学。** **本条不给「冷编译要多久」的参照值,因为没有可信的**:2026-08-15 CI 两键全未命中的 17m51s 被用作冷编译代价是无效推断,**该数不可用**——当时 D5 仅 773 个 `.lean`(对照树为 1562),且 `LeanCacheBudgetPolicy` 注释里 1656s 的最贵子图(`TribonacciPeriodicElevenDistinct` / `NodupAssembly`)**2026-08-18 才进树**,那次根本没建它;而该 job 自己的日志里 `Built` 行为 **0**,建了什么亦无证据。**凡引「冷编译要多久」,须同时说明测于哪棵树、含不含那个枚举子图**,否则该数不承重。〔守护:**全软**·不可 lint —— 裸 `lake` 无机器规则,这正是本条存在的理由,不得因此豁免(第 8.5 条 同形);硬投影仅一条=凡声称「构建慢是因为数学难」,须同时贴出该次的 `LEAN_CACHE` 收据,收据缺失即该归因无效〕
**Release 内容层快照供本地 `lean-cache-ensure` 取回;CI 构建使用 Actions 种子,不从 Release 播种。** macOS 与 Linux 的 arm64 按 `tools/scripts/worktree/lean_cache.py` 的 `SHARED_SEED_PLATFORMS` 共用项目 buildDir 中的 `.olean`/`.ilean`/IR;原生产物由 Lake 按平台重新 trace 并重建。取回只在同依赖分区、同报告格式与同显式执行环境的同族快照中按发布时间选最新;发布与五份快照保留清理仍按生产者本平台分区。x64 不在共享族内;新增共享族须先验证相应编译产物与原生重建边界。
本地与定时 CI 使用同一 `make lean-cache-to-github-without-mathlib` 入口。入口先完成当前树的规范报告生产,再校验工作树干净、HEAD 属于 GitHub 上受保护 dev 的提交、完整报告收据与严格读取器、以及从本地树派生的分区和 key;校验和打包共持项目缓存读锁。发布不校验作者、bot、workflow 归属或事件类型。CI run/attempt 和本地 HEAD/UTC 时间只用于唯一后缀,不决定复用。构建失败保留退出码,内容校验失败返回非零;可选传输或清理失败按现有收据报告。显式 integration 验证使用独立命名空间与固定源校验,仅验证本次上传的完整快照,不作为 CI 构建种子。
**坐标二:缓存正常仍付不起时量证明项,不抬预算**。症状为`LEAN_CACHE` 收据显示两层 `warm`、本地 make lean 成功且远低于10min而 CI `Build candidate Lean project` 失败/被杀,或同类40–44s而该模块数分钟;不能只沿冷缓存诊断。本地绿只报成败,不报 kernel checked 时间/峰值内存,也不证明 runner 能承受。
先经 `/usr/bin/time -l lake env lean -Dprofiler=true -Dtrace.profiler=true -Dtrace.profiler.threshold=1000 <模块>.lean` 量 checked 秒数与 maximum resident set size,按声明找主成本,每改一处重量,PR 给前后读数(第 2.8 条)。
**三类已实测的病因与处方(2026-09-10,`CrimGrundyRefutation`,同一模块同一台机)**:①**一次性 `decide +kernel` 判一个大集合** —— 内核要把全部状态的归约中间项同时驻留,峰值即其和;处方是先 `reduce`、`simp only` 拆合取、`repeat' apply And.intro` 分解,再 `all_goals decide +kernel`,每次只驻留一项。②**证书用线性表** —— `List.lookup` 在内核归约里是二次代价(377 个位置各查一次、平均走一半);处方是换成平衡树的归纳类型,降到对数级。③**伞形 `import Mathlib.Tactic`** —— 载入整个 tactic 库的环境;处方是精确导入,并把无限制的 `simp` 换成 `simp only [具名引理]` 配 `omega`。配置比较:
| 配置 | 墙钟 | `checked` | 峰值内存 |
| --- | --- | --- | --- |
| 原始 | 100.4 s | 87.1 s | 22.7 GB |
| ① 拆分逐项归约 | 87.2 s | 68.0 s | 3.2 GB |
| ② 证书换平衡树 | 29.3 s | 11.2 s | 3.0 GB |
| ③ 精确导入 | 19.2 s | 11.6 s | 1.5 GB |
同批一个**负结果**一并入账:把证书展开成显式 `cons` 链,`checked` 72.1 s 对 68.0 s,**无改进,丢弃**。CI 侧该模块的构建由被杀变为 68 秒通过。**不冒领**:本地峰值内存由 22.7 GB 降到 1.5 GB **不证明**先前那次 SIGTERM 的成因就是内存耗尽 —— runner 侧证据未取,该归因记 `ASSUMED-UNVERIFIED`(第 2.9 条:不确定须带排除项)。已排除的替代解释在该案里是逐条有读数的:非 job timeout(限 45 min 而 job 只跑 7 min 22 s)、非并发取消(`concurrency.group` 为 `ci-<PR 号>`,不跨 PR,且该分支仅一个 run)、非该步自身 timeout(它没有 `timeout-minutes`)。
**两条红线**:①**agent 不得擅自抬 `timeout-minutes` 或计算预算,不得靠重跑碰运气**(第 7.8 条:检测绝不降级,不以抬预算掩盖失败);普通 `current` 与 `ci-unit` 依 SPEC A22 使用 120 分钟(2 小时)累计计算预算,缓存/准备包与工具依赖下载准备不计入;外层 job 平台挂钟上限为 360 分钟,不承诺无限下载。独立长 producer 360 分钟、定时 Release 120 分钟保持各自范围;agent 不得自行抬计算预算或平台上限。②**不得为了快而削掉逃逸见证**(第 3.2 条)—— 把待判的常数直接写进定理、用 `native_decide` 把成本挪到别处、砍掉证书的完整性检查,都是把模块掏空;**一个被掏空的模块过了门也是假的过**,宁可它暂时进不去。改动只许落在 tactic 脚本、私有数据表示与 import 面上,**公开陈述的 `statement_id` 应当不变**;若确实变了,冻结 pin 须重做(SL-008 会以 `pin mismatch: stored=… actual=…` 判红,那是**先冻结后改源码**的必然后果,正序是实施 → 评审 → 修复 → deposit)。
*成熟锚*:先测量再优化、Amdahl 定律(先找真正占大头的那一项)、性能预算(budget 是约束不是可调参数)、开发机与生产环境的资源差异(works on my machine)、数据结构选择决定渐近代价。
〔守护:**软 + 硬投影,诚实分栏**·「有没有在提交前量过」不可 lint,靠对手官评审与本款。**硬投影两条**:①凡 CI 的 Lean 构建步失败或被杀,其归因**必须引用该模块的 `checked` 秒数与峰值内存读数**,只写「太慢」「太重」者按第 2.9 条判无效;②凡以「优化编译成本」为由改动既有模块,PR 说明须给出**改前改后两组读数**(与第 2.8 条同形),缺失即判该优化未经论证。**诚实边界**:`import Mathlib.Tactic` 词法可 grep,但**不设禁令** —— 确有模块需要多个 tactic,一刀切会误伤(第 7.10 条:防的必须是发生过的事,且付得起自己的代价);峰值内存**当前无任何机器门**,`RESOURCE_OBSERVATION` 只在 report-supervisor 级聚合输出 `rss_peak_kb`,**不分模块**,故本款不得声称已有机器保证。未来若升硬,须由候选判官内的消费者读取逐模块的绑定 HEAD 的成本读数,并以变异证明「成本回升会使具名检查变红」〕
### 10.3 一事不再理与内容寻址记忆化
**一事不再理**(既判力;ne bis in idem):同一输入已判不再判。纯函数 f(输入)按输入内容地址记忆化,重算即重审;禁 commit 作 key,它不是内容的最小充分集。旧保守重放未记忆化的重复成本仅是 inactive 反例,不作复建指令。
*成熟锚*:引用透明、内容寻址缓存(Nix/Bazel)、res judicata。〔守护:**软+硬投影**·纯函数性/key 靠评审,命中率/耗时可测〕
### 10.4 cache key 与权威增量补编
本地报告种子的兼容性只由成功收据中的报告格式标识表达,没有判官语义版本。完整种子须保留报告、四个 sidecar 与成功收据;缺失或无法读取该标识须先恢复,恢复后仍无相符种子则拒绝隐式完整提取。格式相符不表示整份报告输入相同;收据输入差量仍交给 Lake 编译依赖 trace 和 utility 输入驱动增量,不另添程序字节或全局内容摘要作为兼容条件。入口策略、恢复边界与版本归属统一见 [spec A22](docs/develop/spec/golden-ledger-repo-spec.md#a22-ci-cache-flow) 及其 A14.9 引用;普通报告入口 `fetch-or-fail`、独立手动/PR/自动 producer 与 Release publisher 的 `reuse-or-build` 均保留严格输入、编译和 publication 失败判词。`REBUILD_REPORT_CACHE=1` 只绕过整份收据,仍可复用原生模块产物,不等于历史登记无缓存重评。
报告工件的复用由 Lake 编译依赖 trace、utility 输入与报告格式标识决定。模块 H(m) 当且仅当编译产物中自有 Registration、TemplateEnrollment、RootCatalog 或 Seal 输入,类型头与 owner 规则复用 Contract.Discovery;只 import 他人登记不取得 owner 身份,失败不得当空。小型输入事实只保存类型、owner 与名字投影,按编译闭包复用。每个模块报告 trace 包含自身编译闭包、utility 输入与报告格式标识;模块行与 origin 不含判官语义版本。origin 保存实际生成来源与输入投影,整份复用收据绑定报告格式、报告模块、配置和显式执行环境。接口契约源码登记在现有 `config_inputs`,使整份收据不能绕过接口变化;配置身份归聚合报告;enrollment 原始输入是其 owner 模块的编译产物;原始数学义务及其证明可由契约携带并在 Reg 编译期经内核检查;checked plan、join、assessment、判词与报告收据不得成为可导入的评定权威。判官从原始输入重建结构关系并消费契约中的数学字段;plan identity 不保存源文件字节摘要或 manifest 派生值;复用验证器只查结构与工件自身完整性,禁止重算当前仓库文件摘要与缓存内保存值比较来决定模块报告复用。判官实现或规则改动不使报告失效,不回溯重判未改动登记;需要重判历史登记时显式生成不带缓存的完整报告。新增或改动的登记经编译依赖变化交给当前判官评定。契约接口改动须同一次交付迁移全部用法、删除旧路径,由受影响 Reg 的编译闭包自动重编并重评,不做历史兼容。声明、公理闭包、statement identity 等提取语义或报告格式变化须更新报告格式标识;严格读取器拒读旧格式,全部模块重提取。
Release 名为 `lean-cache-v2-<resolved-mathlib>-<platform>-report-<format>-env-<execution-sha256前12位>-<publication-id>`。`format` 从 `tools/scripts/report/lean-report-selection.py` 的 `REPORT_FORMAT` 单源读取;发布与取回共用此来源。显式执行环境沿用报告收据采集器:工具由声明的 toolchain pin 标识,摘要投影包含去首尾空白后的 pin、声明工具集合、归一化平台族、声明环境变量值;平台与架构别名归一化,同族 arm64 的系统差别不再成为环境摘要差别。报告模块、配置全集摘要及程序字节均不进入名字。manifest 的 `cache_key` 保存格式与完整执行摘要,前缀筛选后先核完整 key,匹配才下载构建归档。旧名与旧 manifest 不双读。
| 名字段 | 来源与用途 | 改变它而所复用产物不变是否可能 |
| --- | --- | --- |
| `lean-cache-v2` | 项目 buildDir 的打包协议命名空间 | 可能;是容器地址,不是 Lean 值输入;协议不变时不改前缀 |
| resolved mathlib | `lake-manifest.json` 唯一 mathlib 的已解析 rev | 单个模块可能不受影响;保留既有依赖种子分区,差量由 Lake trace 判 |
| platform | 生产者归一化 OS/架构 | 同族 arm64 的共享产物可不变;取回接受整个已声明族,原生差量交给 Lake |
| format | 报告 `schema` 的显式兼容标识 | schema 字段与接受格式随标识改变;实现改动本身不改此标识 |
| execution 摘要 | 报告收据中显式执行环境的上述投影 | 空白或平台别名改变可不变,已剔除;工具链与语义环境改变保留为兼容输入,不追求单模块最窄地址 |
| publication-id | `ci-<run>-<attempt>` 或 `local-<HEAD前12位>-<UTC含微秒时间>` | 可以;只确保发布地址唯一,取回忽略此后缀的来源,HEAD 不进入 key |
- **cache key 恰好覆盖能改变被复用值的输入,不多不少;目标不是完全命中,是不假失效**——承上条:「一事不再理」要求按内容地址记忆化,而**地址取错范围,两个方向都出病**。key **少了**能改变值的输入 ⟹ **假命中**(复用了不该复用的东西;#1201 判据管这一侧:「缓存 key 必须覆盖所有能改变被复用值或其接受语义的输入,或复用后存在独立等价重证」);key **多了**不改变值的输入 ⟹ **假失效**(命中率被一个零信息的字节归零),**本条管这一侧,二者是同一条判据的两端**。
**判据(逐条可查)**:①对 key 的**每一项输入**问一句「**改变它而产物不变,可能吗**」——可能,它就不该整份进 key,只有它**影响产物的那部分字段**才进;②**不追求完全命中**——下游若本身是增量构建系统(lake / Bazel / dotnet),cache 的职责只是**把它送到一个近似的起点**,剩下的差量由该系统自己算;为「命中即完全正确」而把整个配置文件哈希进 key,买到的是 100% 失效,卖掉的是构建系统本就具备的增量能力;③**宽 key + 差量补编** 优于 **窄 key + 全量重来**,前提是差量由**权威的增量机制**判定(不是我们自己写的启发式);④凡 key 的某项输入是**一个文件的全文**,先问它是不是「配置文件里只有几个字段影响产物」的情形。**cache 不是真源(第 4.4 条)**,故 key 宁可宽而由下游增量兜底——取宽只损失时间,取窄损失的是正确性,二者不对称。
**两层反例(2026-09-07,macOS ARM 隔离热树)**:`tools/scripts/worktree/lean-cache-input.sh` 的 config_sha256 哈希 lean-toolchain/lake-manifest.json/lakefile.toml 全字节,tag=(toolchain,os,arch,config_sha256,sources_sha256)。双 warm donor 树只改 lakefile keywords:cache key 变、精确及前缀均 miss;同树 make lean 的 Built=0(12392 jobs,10.30s),未改基线亦 Built=0(41.60s)。这是对产物无影响的 metadata 导致假失效,关联 #5994;不靠加缓存层/容量/重试或预种/tag/dispatch 绕行掩盖 key 范围错误。
已编 olean 的有效性受 `[[require]]` mathlib rev 与 `[leanOptions]` 影响;name/version/keywords/defaultTargets/lean_lib roots|globs 不影响已编 olean。样本仅测试 metadata-only,leanOptions/mathlib rev 改动的重编规模未测,ASSUMED-UNVERIFIED;它回答 lake 重编语义,不外推 CI 时长。全文/目录进 key 须证明相关字段,commit SHA 同样违反最小充分输入原则。
*成熟锚*:Bazel 的 action key 只含真正的 input(而非整个 workspace)、Nix derivation 的输入闭包、增量构建的最小重算集、over-approximation 的成本 vs under-approximation 的风险、cache 不是真源。
〔守护:**软 + 硬投影**·「某项输入是否影响产物」不可 lint,靠对手官评审与本条;硬投影有二:①凡 key 的输入含**某文件全文**,PR 说明须写明「该文件的哪些字段影响产物、哪些不影响」,写不出即判该 key 未经论证;②凡以「命中率低 / 缓存失效」为由改动缓存机制,须附**两层读数**——cache 层的命中或 key 变化,与下游增量层的重算规模(如本判例的 `Built` 计数),**只给其一者按第 2.9 条禁模糊措辞判无效**〕
**【永久禁令·τ=0 owner 裁决】程序字节不得作数据产物的复用条件。** 报告、种子、收据等数据产物的复用资格只由真正决定产物字节的数据输入(Lean 源、构建配置、显式执行环境)与工件格式标识决定。禁止把程序文件、程序目录或其内容哈希放进复用条件或 cache key;评审见即拒,已有者见即删。**inspector 也是程序**:`tools/lean-inspector/**` 的 Lean 判官库、Inspector 可执行、`native.py`/`publication.py`/`materials.py` 等脚本与 C# 生产者同属程序,不是数据。判官实现或规则改变不使历史报告失效;契约接口改变通过 Reg 编译依赖自动重评;声明清单、公理闭包、statement identity 等提取语义或工件格式改变时更新报告格式标识,严格读取器拒读旧报告并全部重提取。逐模块报告工件的 trace 只含该模块自身的编译闭包、utility 输入与报告格式标识,判官驱动与 inspector 可执行文件只等待其构建、不混入 trace。判官实现改动复用有效报告;Reg/D5 编译闭包不含实现包,故不因实现改动而重编。**报告复用与程序构建分责**:整份报告收据只绑定报告格式、报告模块、配置和显式执行环境。程序编译由 inspector 入口的默认目标或显式 `STRATALINT_LEAN_BUILD_TARGETS` 决定;报告命中仍执行选中的 Lake 增量构建,未命中时与 `:report` 共用一次 Lake 调用。空目标的命中路径无需恢复重缓存;无目标参数的直接入口执行 inspector 默认程序目标。选中程序编译失败必须返回非零,不得被报告缓存覆盖;未改变 canonical 报告时保留成功收据和 base,已准备的生产失败保持无收据。〔守护:**硬投影**·`test_producer_program_bytes_never_gate_reuse` 钉住收据文件全集只含报告模块与配置、生产程序字节或 mode 改动不失效、报告格式改变必失效;其余缓存键靠评审按本款拒绝,不可 lint 不豁免〕
报告批次在评定前固定由多个目标共享且依赖闭合的导入基座,utility claim 与 enrollment 导入计入目标闭包。规划只保留自有名字与输入标志,并释放规划读取的编译区域。常量与 owner 索引使用 Lean 既有 staged map:共享基座保留哈希表,目标与伴随声明插入使用持久哈希阶段,不复制基座桶数组;模块位置与来源分类索引按依赖顺序随编译输入加载建立,评定上下文直接读取,不保存计划、判词或新鲜度状态。每个目标的其余编译区域、常量表、元数据、评定、表达式/公理缓存与报告行限于该目标作用域;材料写出确认、报告行 flush 后先析构引用,再逆序显式释放区域,下一目标开始前不保留已完成目标的非共享大对象。跨目标生成名索引须拥有名字字符串,不借用目标区域。共享基座可常驻至进程退出,profile 将其规模与逐目标释放后的根计数、RSS 分列。native 批次打包、报告聚合与聚合验证逐模块消费,只允许成员、来源摘要、材料地址与偏移等小索引累积;批大小保持 100,观测不进入报告格式或复用条件。下游 C# 准入读取器读取一份已完成的报告,并保留各模块模板载荷与材料归档对象,不在报告生产的逐目标循环范围内。
### 10.5 git 已入账事实与重放禁令
**已入 git 的信息完全信任,禁止为验证它而重算/重放/重建**:OID 已定字节,再证明仍是原值零信息。
①冻结成员身份取 `Golden/Frozen/state/<module>.lean.json` 的存在;状态片仅存 `statement_id` 与有序唯一的声明名称键/种类清单。SL-008 将 pin 与声明清单同当前报告比较;覆盖核对将模块 pin 同当前报告重算的模块陈述摘要比较,声明解析使用当前报告。这是当前树一致性检查,不是重建旧环境。②OID 存在/类型验证只做 base→candidate 增量,base 已验者跳过。③纯判词 f(账本)按内容地址记忆,不全量重放。④依赖由当前 Lean 源码 import 解析,不持久化到状态片。⑤升级后不得 build 旧版本取事实;旧侧声明根取受保护基线状态片,新侧取候选范围报告,不存或比较旧公理闭包。
*成熟锚*:git/Merkle、引用透明、增量构建、既判力。〔守护:**软+硬投影**·重放识别靠评审;状态 schema 与当前范围报告一致性由现役读取器和 SL-008 检查〕
### 10.6 重放验证与必要查询
**重放验证与重复查询处方不同**:结果只与 git 已存值比对,相等放行不等报错,即零信息重放,删验证;结果真正进入后续判词输入则是查询,合法但重复同纯函数时按内容地址记忆。只有一次计算就无缓存收益,不得买椟还珠。
**必要查询例**:`FrozenStateCatalog.Load` 读取模块成员、pin 与声明清单;当前声明解析使用当前范围报告,依赖使用 `LeanImportAdjacency.BuildFromSources`。登记或重新钉定模块 M 只写 M 的状态片;内容相同不写,不重写冻结下游,不要求整库报告或全账闭包检查。必要的当前树查询不以事件历史或旧环境重建为输入。
### 10.7 账本强度、许可集与升级门 open
**账本冻真值、强度不退化;保证在门,不在存档。** 强度是给定 toolchain/pin 下的公理闭包。登记 Closed 模块须有当前 Lean 范围报告与标准公理闭包。mathlib 升级授权保留有效 pin 变化、源码命题等价(源码比较的已实现保证限于可解析的仓内命题及其定义依赖;真实 toolchain/mathlib pin bump 后的外部语义一般等价与外部 import 语义分别保留 spec A14.4 的 `open(EXTERNAL-PIN-BUMP-SEMANTIC-EQUIVALENCE)` 与 `open(EXTERNAL-IMPORT-SEMANTICS)`)和候选标准公理闭包条件:旧侧声明根取受保护基线状态片的 `declarations`,新侧取候选范围报告,全部受保护成员的候选闭包仍在许可集才放行。
第 10.5 条只要求保留未来判词需要的输入;状态片不存旧公理闭包、逐声明摘要、依赖边或动作历史。公理闭包这一比较维度只比较候选闭包与许可集,不比较新旧闭包;升级授权还须满足上述有效 pin 变化与源码命题等价条件。
**许可集红线**:唯一真源,测试钉死成员恰为该集合,任何放宽走 τ=0 贵路;否则先放宽再写弱节点仍绿,保证消失。
**逐字段分层**:真源=树上无物可重导、断言当时事实,必守;加工产物=原料哈希且携权威,存值为地址,重算验证即重放;纯投影=同值第二名,消除。可机器判①升级的公理闭包比较只比许可集;②许可集单一且加公理变异有具名红测试;③写入无绕门入口。
〔守护:**软+硬投影**·目的靠评审,许可集/变异、源码等价、有效 pin 变化及候选公理闭包由现役授权入口检查;跨环境的通用数学不退化保证仍 open〕
## 11. 古典不动点与成熟锚
### 11.1 求真
古训是同一批规则的成熟锚,〔守护〕仍按各条边界。
- **实事求是**——结论据可核验事实,不据记忆/权威/美感/推测;能验先验,证据在前、主张在后。
- **知之为知之,不知为不知,是知也**——诚实标 open/ASSUMED-UNVERIFIED,不冒领(第 2.2、2.4 条)。
- **毋意,毋必,毋固,毋我**——不臆测、武断、固执、自证,自信也交独立机器(第 5.7 条)。
- **兼听则明,偏信则暗**——异模型破相关先验(第 5.8 条)。
- **述而不作,信而好古**(第 3.7 条)。
### 11.2 待人
- **己所不欲,勿施于人**(恕道)——交付须是下游愿收的:账平、可复现、诚实;收尾清理,不留坑。约束人=约束 AI(第 7.4 条)。〔守护:**软+硬投影**·对手官与反思守,SL 判账平,遗留问题只留有用结果(第 2.10、5.10 条)〕
- **己欲立而立人,己欲达而达人**(忠道)——harness 服务下级程序(第 4.1 条)。
- **君子求诸己,小人求诸人**——出错先查自身/harness,不甩锅(第 2.2 条)。
- **言必信,行必果**——完成承诺须有新鲜验证;过而不改,是谓过矣——失败保留可复用教训,不重走死路(第 5.10 条)。
### 11.3 规矩与利器
- **不以规矩,不能成方圆**(孟子·离娄上:"离娄之明,公输子之巧,不以规矩,不能成方圆")——单点再聪明也须规矩;先定义再处理(第 5.7、7.3 条)。方圆=真值 DAG,规=门(义务守恒、声明与消费分 PR),矩=器(本地检查/ingest/GID);加固规矩也付 τ 成本,无后门。〔守护:**元准则**·新类无定义标“未实例化(案号)”,不即兴〕
- **欲速则不达**——诚实>速度,打地鼠反慢(第 2.1 条)。
- **工欲善其事,必先利其器**——器律见第 8 章。
### 11.4 俭约与自然
- **磨刀不误砍柴工**——器 bug 最高优先修,胜于赶路;修器同门、无免费捷径(第 7.2、7.8 条)。
- **过犹不及**——只在会说谎处设门,不过度、不镀金(第 2.5、4.8 条)。
- **大道至简**——唯一真源、规范最简、程序/数据递归(第 4.2 条)。
- **为学日益,为道日损;损之又损,以至于无为**(老子·四十八)——harness 成熟应变小;消病因即删补偿面(第 4.2 条)。判据是净行数下降且合并与仪式耗时下降,不数新机器。〔守护:**软+硬投影**·行数/耗时可测,何时减靠评审〕*成熟锚*:奥卡姆、YAGNI、负代码量、精益。
- **买椟还珠**(韩非子·外储说左上)——楚人卖珠,饰以木兰之椟、缀以珠玉;郑人**买其椟而还其珠**。动手先问是在做椟还是取珠,不可只建补偿/验证机器而不消病因。〔守护:**软**·对手官;硬投影=净行数判据〕
- **因其固然**(庄子·养生主:「依乎天理,批大郤,导大窾,因其固然」)——庖丁十九年而刀刃若新发于硎,顺天然关节下刀。门设在性质可能被破坏处:确定性属生成程序,触发应为生成程序闭包变更,非每次内容变更(第 2.5、7.8 条)。〔守护:**软+硬投影**·路径闭包可判,关节选择靠评审〕*成熟锚*:Bazel/Nix 增量触发、变更影响、不变量断言。
- **无为而治;道法自然;上善若水,利万物而不争**——稳态自主、算法定址、harness 服务下级不争特权(第 7.16、4.2、4.1 条)。
### 11.5 度身与既判力
- **量腹而食,度身而衣**(第 10.1 条)。
- **一事不再理**(第 10.3 条)。
### 11.6 砺与生于忧患
- **"故天将降大任于是人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,行拂乱其所为,所以动心忍性,曾益其所不能。"**(孟子·告子下)——磨难增益能力;每次失败留下可复用判据/回归用例,长成新规则或方法教训(第 2.10、5.10、5.7、7.2、7.8 条)。**"生于忧患,死于安乐"**:exit-3 短路、假绿、不亲验则亡,异常入账、亲跑亲核、对抗评审则生。〔守护:**软**·实际审计工件与自觉;SL-013 不执法散文,失败是燃料非耻辱柱〕
> **格言是伦理语言的不动点,SL 是机器语言的不动点,同一个。** 可机器判者归 SL,其余靠古训与对手官;古今同守诚实。
## 12. 导航与收束
### 12.1 操作导航
操作细节的入口:
- **地图 / GID 文法 / 风格**:`agents/CONTEXT.md`(≤2K token,有限上下文唯一必读)
- **完整律法**:`docs/develop/spec/golden-ledger-repo-spec.md`(单一 spec,原位演进)
- **理论源**(参考输入;补充按第 3.8 条):`docs/develop/theory/`(PZG–BEDC 内核卷、GICT 卷)
- **八官宪章**:`agents/{scout,prover,numericist,librarian,adversary,scribe,theorist,gate}.md`
### 12.2 发现、逻辑、账与美
本文件给工作的不动标架,具体操作查上述地图与 spec。
> **发现尽可能多的真相,把真相连接成网;逻辑只有对错;账,必须平;而美,是幸存下来的形状。**
>
> 仓库可以无人值守,诚实不能。账,平——每次构建平一次。