|
1 | 1 | # 状态机细则(references —— 按需加载) |
2 | 2 |
|
3 | | -出处:主文件「状态模型」表(语义一行在表上,本表承载四个长状态的机制细则),做对应 |
4 | | -转换、放行或巡查的那一刻查阅;⛔ 不引用 issue 编号。 |
| 3 | +出处:主文件「状态模型」表,做对应转换、放行或巡查的那一刻查阅;⛔ 不引用 issue 编号。 |
| 4 | + |
| 5 | +## 通则 —— 跨状态不变量(判定以 `check-half-states.mjs` H29/H30/H31 为权威) |
| 6 | + |
| 7 | +- **六态 ONE-OF**:`pm:{queue,dispatched,blocked,on-hold,awaiting-maintainer}` + |
| 8 | + `needs-user-decision` 互斥;成因恒是半写的转换,故**一笔 replace**、⛔ 不 add。 |
| 9 | +- **`pm:queue` 腐化视界 3 天**:队列是唯一「等待不是一种状态」的态,越界即欠**一次显 |
| 10 | + 式转换**(派发 / 转 `needs-user-decision` / 停放 / 撤单 / 改写前提),⛔ 不是排期。 |
| 11 | +- **`needs:contract-review` 双载体**:卡与交付 PR 两边都挂好、挂与清各一笔、两向都读 |
| 12 | + 回(被剥不是红灯是放行);卡侧先挂而 PR 尚不存在是合法中间态,不是半写。 |
5 | 13 |
|
6 | 14 | ## `pm:on-hold` —— 重启条件、触发文件与放行双查 |
7 | 15 |
|
8 | 16 | - **合法性**:仅当正文或评论带机器可读行 `Restart-when: closed <owner/repo>#N`(由 |
9 | | - `Blocked-by:` 的同一遍解锁扫描点火、同双通道契约 —— 正文或评论任一即为行,评论停 |
10 | | - 靠的出口曾静默过期两天)或 `Restart-when: <一行可执行判据>` 时才合法;hold 评论带 |
11 | | - 日期、理由、出处(维护者裁或座位定级,⛔ 不设第二个标签区分)。 |
12 | | -- **机会主义重启的触发文件**走同族正典行 **`Restart-touch: <仓内相对路径>`**(一行 |
13 | | - 一路径,大小写敏感、行锚定,与 `Blocked-by:`/`Restart-when:` 同双通道 —— 正文或评 |
14 | | - 论任一,H17 兼读 hold 评论;反引号/bullet 可容忍、值须为 tracked 文件)—— 喂巡查 |
15 | | - H17 的触发文件索引;存量 hold ⛔ 不迁移、不产 finding,散文锚词抽取兜底旧卡。 |
16 | | -- **放行双查(两查皆机械、零判断)**:① 只对**最近一次** `pm:on-hold`/`pm:blocked` |
17 | | - 转换评论所载条件放行,⛔ 永不对线程里更早的 blocker —— 已放行过的条件是花掉的,再 |
18 | | - 点火就把过期前提立成现行;② 该转换评论之后卡上有**更新的 merged PR** ⇒ 拒绝放行 |
19 | | - —— 那是条件写下后卡已前进的信号(引用的事实可以为真而不再是现行条件)。 |
| 17 | + `Blocked-by:` 的同一遍解锁扫描点火)或 `Restart-when: <一行可执行判据>` 时才合法; |
| 18 | + hold 评论带日期、理由、出处(维护者裁或座位定级,⛔ 不设第二个标签区分)。 |
| 19 | +- **机会主义重启的触发文件**走同族正典行 **`Restart-touch: <仓内相对路径>`**(一行一 |
| 20 | + 路径,大小写敏感、行锚定,与 `Blocked-by:`/`Restart-when:` 同双通道;值须为 tracked |
| 21 | + 文件)—— 喂巡查 H17 的触发文件索引;存量 hold ⛔ 不迁移、不产 finding。 |
| 22 | +- **放行双查(两查皆机械、零判断)**:① 只对**最近一次** `pm:on-hold`/`pm:blocked` 转 |
| 23 | + 换评论所载条件放行,⛔ 永不对更早的 blocker —— 已放行过的条件是花掉的,再点火就把 |
| 24 | + 过期前提立成现行;② 该转换评论之后卡上有**更新的 merged PR** ⇒ 拒绝放行。 |
20 | 25 |
|
21 | 26 | ## `pm:blocked` —— 正典标记、完工停放(`Unlock-action:`)、上游已关 |
22 | 27 |
|
23 | | -- **正典标记 = 行首 `Blocked-by: #N`(跨仓 `owner/repo#N`)、无装饰**;2026-08-24 |
24 | | - 实测:四种普查拼法三种已解析,第四种句中提及**刻意拒收** —— 指令是行,提及是散文。 |
25 | | -- **工已完、PR 被外部门禁缺陷卡住的卡同用本态,⛔ 不设新标签**:`Blocked-by:` 指向 |
26 | | - 门禁缺陷卡,正文另加机器可读行 `Unlock-action: re-check PR #M` —— 解锁扫描据此把 |
27 | | - 解锁动作从「回队重派」换成「重查该 PR 落地」(回队前提检查见到已完工的 open PR 即 |
28 | | - 按落地工作处理,⛔ 永不给完工卡重派 dev);停放 PR 正文须点名门禁卡,让链路两端可读。 |
29 | | -- **上游已关 ⇒ 先重新推导再决定**:改判是否有**新**阻塞并改写该行,⛔ 不反射式放行; |
30 | | - 正文是正典家 —— 新 blocker 停评论、正文留已关旧目标,巡查报 stale 并要求迁回。 |
31 | | - |
32 | | -## `pm:awaiting-maintainer` —— 互斥与出口 |
33 | | - |
34 | | -与 `pm:queue`/`pm:dispatched`/`pm:blocked`/`pm:on-hold`/`needs-user-decision` **互 |
35 | | -斥**(并存即误标);出口 = 维护者完成该操作、座位摘标 + 证据评论同笔 —— **无机器出 |
36 | | -口,by construction**,在飞视图计停放库存(细节以 `check-half-states.mjs` 为权威)。 |
37 | | - |
38 | | -## `pm:retriage` —— 挂/摘两方机制 |
39 | | - |
40 | | -原定级在改判前仍是权威,并存让「排队但有异议」在列表上可见;挂标者 = 提出异议的席 |
41 | | -位,挂标与**异议评论同笔**(证据 + 建议定级),无证据评论的裸挂标不合法;摘标者 = |
42 | | -分诊 Routine,每 fire 高优先重判、重判后摘标 —— 挂/摘分属两方、各自的转换不相交,这 |
43 | | -是本行的安全性;标签须五仓存在(分诊五仓统一职责,首次应用时创建);老化兜底归 H18。 |
| 28 | +- **正典标记 = 行首 `Blocked-by: #N`(跨仓 `owner/repo#N`)、无装饰**;句中提及**刻意 |
| 29 | + 拒收** —— 指令是行,提及是散文。 |
| 30 | +- **工已完、PR 被外部门禁缺陷卡住的卡同用本态,⛔ 不设新标签**:`Blocked-by:` 指向门禁 |
| 31 | + 缺陷卡,正文另加机器可读行 `Unlock-action: re-check PR #M` —— 解锁扫描据此把解锁 |
| 32 | + 动作从「回队重派」换成「重查该 PR 落地」(回队前提检查见到已完工的 open PR 即按落 |
| 33 | + 地工作处理,⛔ 永不给完工卡重派 dev);停放 PR 正文须点名门禁卡,让链路两端可读。 |
| 34 | +- **上游已关 ⇒ 先重新推导再决定**:改判是否有**新**阻塞并改写该行,⛔ 不反射式放行;正 |
| 35 | + 文是正典家 —— 新 blocker 停评论、正文留已关旧目标,巡查报 stale 并要求迁回。 |
| 36 | + |
| 37 | +## `pm:awaiting-maintainer` 与 `pm:retriage` —— 出口、挂/摘两方 |
| 38 | + |
| 39 | +- **awaiting 出口** = 维护者完成该操作、座位摘标 + 证据评论同笔 —— **无机器出口, |
| 40 | + by construction**,在飞视图计停放库存(互斥归上面的 ONE-OF 行)。 |
| 41 | +- **retriage 挂/摘分属两方**:原定级在改判前仍是权威;挂标者 = 提出异议的席位,挂标与 |
| 42 | + **异议评论同笔**(证据 + 建议定级),无证据评论的裸挂标不合法;摘标者 = 分诊 Routine, |
| 43 | + 每 fire 高优先重判、重判后摘标;标签须五仓存在(首次应用时创建);老化兜底归 H18。 |
0 commit comments