共享策略位置: docs/DISCOVERY.md、docs/WORKFLOW.md、
docs/LAUNCH-MIGRATION.md、docs/STANDALONE-ENTRY.md、docs/PROCESS.md、docs/using/README.md 和 docs/using/mirrors.md 属于已解析的 Hatsu 插件根目录,而不是消费仓库。在已安装的表面上,使用 ten 打印的绝对根目录读取这些文件(如果不可用,则通过该技能重新解析)。下面的相对链接标识了源位置;缺失的消费者 docs/ 副本不是缺失的策略,不得触发重复的归档。切勿在目标仓库中复制或创建第二个策略。
Ren — 一个请求,一个回合,每次如此
没有固定模式。 Ren 是一个组合运行:模式取决于 请求 本身——
Enhancer 用于产品代码,Conjurer 用于规范,Transmuter 用于机制——在回合期间保持,并在回复中命名,Manipulator 在其运行报告的步骤中与其并列命名。命名当前使用的模式,说明何时切换以及原因,并且永远不要在一个标题下混合两种模式(claude/agents/kurapika.md)。
接受请求。如果这是第一个,则预热;编写它、验证并提交它;处理启动;向我展示报告;响铃一次。然后等待。
Ren 是本地平面中 普通工作的形态。它不是批量运行器,也不是监视器:一次调用就是一个请求,一个请求就是一个回合。 循环是下一个请求开始下一个回合,预热步骤已被消耗。
此文件是组合文件。它不重新指定。 下面的每个步骤都是另一个技能的步骤,已命名和链接,其过程、退出代码反应、拒绝和残留都在那里。如果您在此处找到一条实际上是该技能的规则,那么它放错了文件——去它编写的地方阅读它,因为在两个地方重新陈述的规则会在其中一个中偏离。
1. 调用
P1 — 此次运行以 $ten ren 开始(ten § 6 以自己的名称处理此阶段缺失的先决条件;此运行调用的阶段跳过其自身的先决条件)。
$ren <request> [--profile fast|standard|thorough]
nen parse ren --grammar "<request> [--profile <profile:fast|standard|thorough>]" \
--line "<the request, minus the $ren prefix>"
profile: (clause absent) 意味着 profile.default(§ 2a);请求中的 "fast turn" 或 "thorough turn" 被视为相同的覆盖。
在 v0.3.0(docs/ab/ren.md § 2.1)实际验证:一个请求行解析为 request: <the whole line> 并返回退出码 0,空行以退出码 2 拒绝——" 是必需的,但该行未提供"——并打印更正后的行。永远不会从会话上次正在做的事情推断出没有请求的回合——它会作为自由文本被询问:请求是维护者的话语(行 missing-maintainer-choice,通过 nen stop answer 记录,docs/WORKFLOW.md § 4 维护者的话语永远不是推导出来的),因此会话建议的任何读取都作为参考列出,没有星号,也没有选择器选项,并且回合会在维护者输入的内容上运行。
Ren 也是默认形态,而不仅仅是显式调用。 在 nen/workflow.json 描述了此循环的仓库中,来自维护者的普通请求就是一个 ren 回合;在第一个上这样说,这样没人会对报告和末尾的响铃感到惊讶。
2. 回合,按顺序
| # | 步骤 | 拥有它的技能 | 为什么在这里 |
|---|---|---|---|
| 1 | 预热 | $breath | 在 Ten 追赶或突变之前,在每次进入时绑定/重新验证隔离,依据 WORKFLOW § 工作树所在位置;在该检出中每个新的努力预热并证明一个新鲜的分支一次——在观察到的钩子拒绝(HR-374)时,会话自己的 harness 工作树。显式延续仅重用已验证的努力拥有的工作树。红色的基是作者之前的 G5;其构成本身检查中的冲突子句也是如此(breath § 4a),在此步骤的分类账条目上记录 |
| 2 | 编写更改 | $rasengan | 编写维护者要求的内容,在此仓库声明的堆栈上:编辑、旁边的测试、其约定所欠的文档和变更日志——声明的 iteration.checks 在作者面前工作时作为作者自己的反馈运行 |
| 3 | 验证并提交 | $kokusen | 每一个廉价的 iteration.checks 动词和声明的聚焦测试在 完成的 树上运行,红色拒绝;然后分类,询问标记的内容,一个形状化的提交——仅本地 |
| 4 | 启动 | $amaterasu | 一个隔离的努力报告 dry-run 命令并记录 core launch deferred; explicit maintainer call required,然后不询问继续,即使是串行。无目标 → no launch target declared; skipped。核心启动永远不会将编写或交付移出其绑定的工作树 |
| 5 | 报告 | $spiritual-message as turn | 页面:已完成、挑战、未交付、架构、截图、确切的启动命令、决策 |
| 6 | 响铃 | $jutaisho(§ 1 决定页面的询问是否使其成为停止点) | 工作流声明的梯级——并且仅当真正需要时才会停止 |
步骤 2 就是更改本身,它在 2026-09-10 停止使用半编号。 此表过去包含一个步骤
1.5——"工作",没有技能拥有——旁边是一个称为构建的步骤 2,它将rasengan理解为运行构建命令而不是构建事物。维护者的裁决(docs/ROSTER.mdHR-55)解决了这个问题:rasengan就是编写阶段,因此工作有了一个技能,六个整数又是六个技能,编译在提交之前与准备树的阶段一起进行。
顺序在五个地方是承重的,并且这五个是 ren 唯一断言的:
- 1 在 2 之前——在没有经过验证的基础上不能编写。 Breath 从
origin/<branch.base>的新抓取提示符处切分分支,并证明其声明的检查,因此更改的第一行落在一个已知已构建的树上,任何人在那里看到的第一个红色都是此努力引起的。红色的基础提示符是一个 G5 停止点,在写入一行之前发生;它永远不会在此努力内部被修复。breath § 4a 的构成本身检查也是如此,其 gate breath § 6 已说明(WORKFLOW.md§ 构成本身检查)。 - 2 在 3 之前——没有在此回合中编写并在此回合中验证的内容不会被提交。 Rasengan 编写更改并保持其内部循环诚实;kokusen 然后在 完成的 树上运行声明的检查,并在红色时拒绝提交。两次运行不是重复:树在作者最后一次检查之后写入的每一行时移动,因此提交可以依赖的唯一运行是由持有索引的阶段进行的。在回合迭代(编写、检查、再次编写)的地方,它是步骤 2 与自身迭代,并且步骤 3 只进入一次。
- 3 在 4 之前。 启动处理遵循已提交的结果;隔离不授权核心启动。延迟的命令不是对此努力树的演示。
- 4 在 5 之前。 报告区分延迟的 dry-run 命令与实际运行的 argv。
- 5 在 6 之前。 响铃携带报告链接。在页面存在之前响起的铃铛会将维护者引导至虚无。
此组合调用的阶段跳过它们自己的 ## 0. Standalone entry 部分。 docs/STANDALONE-ENTRY.md 是手动输入到任意检出中的阶段的契约;从此处到达的阶段继承此运行的 P1–P4——预热、定向、更改集和每个派生参数——重新派生它们将产生对此组合已解决的问题的第二个答案。每个阶段都说明是哪个组合在持有它。
在步骤 1 内部,每个分类的努力运行一次 $direct——对于命名了一个问题(请求中的 <CODE>#<N>)或已有标签的文本分类的努力——使用此会话的 --surface、--model 和 --effort(在 harness 隐藏一个的情况下为 unread),正如 build § 2b 所做的那样;其 § 6 拥有比较和一次询问,并且键入的 $ren 已经是决定在此工作的决定,因此它永远不会阻塞。其答案 B 结束此 回合,而不是循环:步骤 5 和 6 仍然运行,并且报告命名重新启动的行。没有 job/ 标签的努力是 undirectable,一行,然后回合继续。它不是第七个步骤,并且不声明自己的顺序:它在预热内部读取,最多询问一次,不编写任何内容——并且其 § 7 发布步骤不在此处运行:Ren 不能离开机器(§ 3),因此裁决留在报告和本地分类账中,并且 direct.publish 仅在 build、file(一旦 filed)或 standalone 下起作用。
预热每个努力运行一次;每次进入都检查检出选择。 后来的回合和 PR 阶段在步骤 2 或任何追赶之前,在 $hatsu_root/docs/WORKFLOW.md § 工作树所在位置下重新验证绑定的绝对努力路径。报告路径、原始提示豁免状态以及 Breath 是预热还是仅重新验证。延续从不绕过隔离。
除非调用者显式继续当前努力,否则新请求是新努力。 坐在来自先前努力的干净功能分支上不是延续(zheref/hatsu#60;$breath § 2a)。Breath 仍然运行,仍然抓取配置的基础,并且仍然切分一个新渲染的分支。仅当明确"继续" / "相同努力" / "在此分支上",或对于步骤 1 已在此会话中切分了此分支的循环的第 2 个及之后的回合时,才重用。
当此努力的后来的回合,或 $mukai,重新进入 $hanten 时,它重用相同的周期分类账——.nen/hanten/<branch-slug>.cycle.json。修复不会重置审阅者计数。Breath 切分新分支是唯一的新周期(zheref/hatsu#63;hanten § 2a)。
2a. 配置文件和阶段分类账
nen/workflow.json 中的 profile.default 塑造回合(缺席时为 standard);§ 1 的 --profile 覆盖它,profile.allowed 之外的值会再次被询问,允许列表作为选择器的选项,并且回合的第一行命名当前使用的配置文件。
| 配置文件 | § 2 中什么改变了 |
|---|---|
fast | 步骤 1 验证绑定;预热仍然运行一次;声明的步骤 2 和 3;步骤 4 跳过,启动行 deferred by profile fast; isolation still requires an explicit maintainer core-launch call;步骤 5 渲染 --variant turn-fast |
standard | 今天的回合,如上表所述 |
thorough | standard,并且在步骤 3 之后,在每个回合上运行 kotoamatsukami 的影响的套件 |
配置文件决定哪些步骤运行以及步骤 5 渲染哪个变体,从不决定步骤内部发生什么。 步骤 2 和 3 在每个配置文件下都按照其技能所说运行。在 fast 下,影响的套件不运行(它们是 mukai 的,步骤 4 那里);在 thorough 下,kotoamatsukami 的影响的套件在步骤 3 之后运行,ren 是该技能的第三个调用者。启动被跳过,而不是移动:mukai 没有启动步骤,并且 amaterasu § 1a 说明了如何对待跳过的启动。覆盖率不由任何 ren 配置文件捕获;那是 byakugan 的,在 mukai 处。
一次 landing(mukai)始终以 thorough 运行,无论之前的回合如何命名。
每个步骤是一个分类账条目(WORKFLOW.md § 努力的分类账拥有机制;属于 ren 的是哪些步骤以及何时)。在一个步骤之前:nen phase begin --effort <branch> --phase <step-name> --surface <s> [--model <reported-model>] --dial <level>;如果模型是 harness 报告的已服务 ID,则添加 --note "model-kind=served; registry alias <alias>"(WORKFLOW § 努力的分类账);在第一个阶段记录时,使用 harness 的标题/id(当暴露时)运行 nen session record,每个会话一次;在一个步骤之后:nen phase end --effort <branch> --phase <step-name> --exit <code>,因此 .nen/phases/<effort>.json 每个阶段携带一个有时间戳的条目,包括被拒绝的步骤。步骤 1 的 end 携带 breath § 4a 的记录作为其 --note,与步骤 1 开始的注释组合,因为 end --note 替换它(脚本的 --begin-note;WORKFLOW § 构成本身检查,步骤 3、5 和 6,拥有这些形式)。检查不是它自己的条目,因此六个步骤仍然是六个条目(HR-58)。使用条目在步骤 5 记录:nen usage record --effort <branch> --surface <s> [--model] --dial <level> [--input] [--output] [--cache-read] [--cache-write] [--minutes] 来自表面自己的成本读数,对于不暴露成本的表面使用 --not-reported。
恢复的努力在写入之前读取(zheref/hatsu#444, zheref/hatsu#445;nen 0.28,固定点)。分支已有阶段分类账或 PR 的努力是恢复:首先,在存在 PR 的地方——打开的 PR:后继者的编号,而不是基础删除关闭的 PR(en § 6)——nen pr ledger read --target <owner/name> --pr <n> --effort <branch> --repo <checkout> --json,仅当 nen phase show 未找到本地分类账时添加 --restore;然后 nen phase show --effort <branch> --json。WORKFLOW § 努力的分类账、持久切片,拥有裁决和一个跳过行形式;跳过的 breath 条目的注释在步骤 2 之前读取(WORKFLOW § 构成本身检查,步骤 7)。按顺序,每个阶段:以退出码 0 结束 → **
…
[截断以进行翻译]