@akagilnc/pi-workflow-roles 0.1.2336 → 0.1.2340

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @akagilnc/pi-workflow-roles
2
2
 
3
- Packaged workflow roles for [Pi](https://pi.dev): `judge`, `fixer`, `coder`, `reviewer`, `collector`, `doctor`, `merger`. 中文说明见 [README.zh-CN.md](https://github.com/Akagilnc/ak-pi-workflow-roles/blob/main/README.zh-CN.md)。
3
+ Packaged workflow roles for [Pi](https://pi.dev): `judge`, `fixer`, `coder`, `reviewer`, `collector`, `doctor`, `merger`, `notary`, `analyst`. 中文说明见 [README.zh-CN.md](https://github.com/Akagilnc/ak-pi-workflow-roles/blob/main/README.zh-CN.md)。
4
4
 
5
5
  ## Install
6
6
 
@@ -11,7 +11,7 @@ pi install npm:@akagilnc/pi-workflow-roles
11
11
  export PATH="$HOME/.pi/agent/npm/node_modules/.bin:$PATH"
12
12
  ```
13
13
 
14
- Update with `pi update npm:@akagilnc/pi-workflow-roles`—never a second global `npm install -g`. Inspect with `ak-role roles` and `ak-role help <role>`; set per-seat model defaults with `ak-role config set judge openai-codex/gpt-5.6-sol:high`; set or clear a persistent labor engine (callable roles) with `ak-role config set-engine <seat> <name>` / `ak-role config unset-engine <seat>`.
14
+ Update with `pi update npm:@akagilnc/pi-workflow-roles`—never a second global `npm install -g`. Inspect with `ak-role roles` and `ak-role help <role>`; set per-seat model defaults with `ak-role config set <seat> <provider/model[:thinking]>` (callable seats plus automatic `gatekeeper` / `inspector` / `navigator`); clear a Menxia officer override with `ak-role config unset <gatekeeper|inspector|notary>`; set or clear a persistent labor engine (callable roles) with `ak-role config set-engine <seat> <name>` / `ak-role config unset-engine <seat>`.
15
15
 
16
16
  ## Reading results
17
17
 
@@ -23,31 +23,41 @@ ak-role judge --attach ./plan.md "Review this plan." > result.txt
23
23
 
24
24
  Exit status reports lifecycle honesty, not business success: every lawful typed result (including `audit_escalation`) exits zero; a failure without a lawful result exits nonzero, and its Terminal carries the Error Artifact ref and original cause instead of a fabricated receipt.
25
25
 
26
- `ak-role resume <runId>` reopens that run's exact Pi session. Whether to resume is the caller's decision: the command does not require a typed HTTP 429 or a `resumable` state. Unknown run IDs and missing session principals are rejected. Collector and Doctor remain one-shot. The package never auto-switches providers; override the model for one run with the global flags.
26
+ `ak-role resume <runId>` reopens that run's exact Pi session. Whether to resume is the caller's decision: the command does not require a typed HTTP 429 or a `resumable` state. Unknown run IDs and missing session principals are rejected. Collector, Doctor, and Notary remain one-shot. The package never auto-switches providers; override the model for one run with the global flags.
27
27
 
28
28
  Judge, coder, fixer, reviewer, and merger also retry a non-lawful LLM call in place (same `runId` and session) up to `autoResumeLimit` times. Unset defaults to 2; `ak-role config set-auto-resume-limit <N>` writes the ceiling (`0` disables). Lawful typed terminals (`accepted`, `audit_escalation`, `no_receipt`) stop immediately. Manual `ak-role resume` stays available.
29
29
 
30
- Global overrides work before or after the role: `ak-role --model xai/grok-4.5:high resume <runId>`.
30
+ Global overrides work before or after the role: `ak-role --model <provider/model[:thinking]> resume <runId>`.
31
31
 
32
- Every run also prepares Navigator advice in the same Terminal. Configure it like any other seat:
32
+ Every run also prepares Navigator advice in the same Terminal. Configure seats like this:
33
33
 
34
34
  ```bash
35
- ak-role config set navigator openai-codex/gpt-5.6-luna:medium
35
+ ak-role config set judge <provider/model[:thinking]>
36
+ ak-role config set navigator <provider/model[:thinking]>
37
+ # Menxia officers (automatic on submission; not caller commands except direct notary)
38
+ ak-role config set gatekeeper <provider/model[:thinking]>
39
+ ak-role config set inspector <provider/model[:thinking]>
40
+ ak-role config set notary <provider/model[:thinking]>
41
+ ak-role config unset gatekeeper
36
42
  # persistent labor engine (callable roles; not navigator); one-shot override remains --engine
37
43
  ak-role config set-engine judge opus
38
44
  ak-role config unset-engine judge
39
45
  ak-role config set-auto-resume-limit 3
40
46
  ```
41
47
 
42
- `config set` stores the seat model default; `config set-engine` / `unset-engine` store or clear the persistent labor-engine name on callable roles (same seats as `--engine`; navigator refused — no independent activation). `config set-auto-resume-limit` stores the single-call auto-resume ceiling. Usage and refusal text are owned by `ak-role config` in the public CLI.
48
+ `config set` stores the seat model default. For Menxia officers (`gatekeeper` / `inspector` / `notary`) resolution is officer pin → province (`gatekeeper`) pin → inherit parent session; an explicit selection that fails is loud and does not fall back. `config unset` clears only those officer overrides. `config set-engine` / `unset-engine` store or clear the persistent labor-engine name on callable roles (same seats as `--engine`; navigator refused — no independent activation). `config set-auto-resume-limit` stores the single-call auto-resume ceiling. Usage and refusal text are owned by `ak-role config` / `ak-role help config`.
43
49
 
44
50
  Receipts are typed, so callers compose roles without parsing prose; ordering and stopping stay caller-owned. Programmatic consumers derive contracts from the exported schemas in `src/package-contracts/`, not from this guide.
45
51
 
52
+ ### Menxia submission gate
53
+
54
+ On completing-side submissions the package may spawn the Menxia province before the run settles: `gatekeeper` reads the subject and dispatches an officer (`inspector` or `notary`); existing auditor hooks stay where already wired. The gate runs inside the submission session; bounce means rewrite-and-resubmit in that same session — not role failure; the final receipt is the post-gate product. `planned` / `refused` / `unfinished` skip the province. Pointers only: [ADR 0067](docs/adr/0067-menxia-province-founding-jishizhong-fubaolang.md), [ADR 0072](docs/adr/0072-menxia-pre-pr-submission-hooks.md). Do not scrape session prose for gate status.
55
+
46
56
  When a labor-engine detour fails and the seat continues the labor on the main road, the typed receipt may carry a mechanical `engineLaborFallback` field: `{ engine, failure, laborBy: "seat" }`. It appears only after a real detour failure that fell back to seat labor—not on detour success or caller cancel. First failure wins for the activation; model-forged `engineLaborFallback` keys are stripped unless the package latch recorded one. Sole producer: `src/engine-labor-fallback.ts`; decision record: [ADR 0071](docs/adr/0071-engine-detour-failure-seat-fallback-declaration.md). This README only projects that contract.
47
57
 
48
58
  ## Call the roles
49
59
 
50
- Public option identity, aliases, requiredness, and mode faces live in the generated [Public CLI options](#public-cli-options-generated) table and in `ak-role help <command>` — both project the same typed source. The examples below are usage sketches, not a second flag contract. An instruction is optional for judge, collector, and doctor, and required nonblank for coder, fixer, reviewer, and merger.
60
+ Public option identity, aliases, requiredness, and mode faces live in the generated [Public CLI options](#public-cli-options-generated) table and in `ak-role help <command>` — both project the same typed source. The examples below are usage sketches, not a second flag contract. An instruction is optional for judge, collector, and doctor; notary admits no caller prompt or attachment; analyst is deterministic (see help). Required nonblank for coder, fixer, reviewer, and merger.
51
61
 
52
62
  ```bash
53
63
  # judge — adjudicate the supplied materials; infers its burden, no burden flag
@@ -79,6 +89,17 @@ ak-role doctor --issue 115 "Diagnose this retained case."
79
89
  # merger — resolve one merge already in conflict (start it first with Git’s ort)
80
90
  ak-role merger --project /path/to/worktree "Reconcile the active merge."
81
91
  # hands new intent/authority questions back instead of inventing authority
92
+
93
+ # notary — document-fidelity check on one retained source run; zero prompt/attachment; one-shot
94
+ ak-role notary --source-run <runId@role|path>
95
+
96
+ # analyst — deterministic metrics over the book (cwd git common-dir); bare = whole book
97
+ ak-role analyst
98
+ ak-role analyst --ticket <N>
99
+ ak-role analyst sweep --attach ./payload.md
100
+ ak-role analyst --cohort \
101
+ --group-a-label A --group-a-issues 1,2 \
102
+ --group-b-label B --group-b-issues 3,4
82
103
  ```
83
104
 
84
105
  ## Names
package/README.zh-CN.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @akagilnc/pi-workflow-roles
2
2
 
3
- 为 [Pi](https://pi.dev) 打包的工作流角色:大理寺(judge)、修内司(fixer)、将作监(coder)、御史台(reviewer)、门下省(collector)、太医署(doctor)、校书郎(merger)。English: [README.md](https://github.com/Akagilnc/ak-pi-workflow-roles/blob/main/README.md)。
3
+ 为 [Pi](https://pi.dev) 打包的工作流角色:大理寺(judge)、修内司(fixer)、将作监(coder)、御史台(reviewer)、通进司(collector)、太医署(doctor)、校书郎(merger)、符宝郎(notary)、太史(analyst)。English: [README.md](https://github.com/Akagilnc/ak-pi-workflow-roles/blob/main/README.md)。
4
4
 
5
5
  ## 安装
6
6
 
@@ -11,7 +11,7 @@ pi install npm:@akagilnc/pi-workflow-roles
11
11
  export PATH="$HOME/.pi/agent/npm/node_modules/.bin:$PATH"
12
12
  ```
13
13
 
14
- 更新用 `pi update npm:@akagilnc/pi-workflow-roles`——勿另起全局 `npm install -g`。查看能力:`ak-role roles`、`ak-role help <role>`;设席位模型默认:`ak-role config set judge openai-codex/gpt-5.6-sol:high`;设或清持久劳务引擎(可调用角色):`ak-role config set-engine <seat> <name>` / `ak-role config unset-engine <seat>`。
14
+ 更新用 `pi update npm:@akagilnc/pi-workflow-roles`——勿另起全局 `npm install -g`。查看能力:`ak-role roles`、`ak-role help <role>`;设席位模型默认:`ak-role config set <seat> <provider/model[:thinking]>`(可调用席位,以及自动出席的 `gatekeeper`/`inspector`/`navigator`);清除门下省官钉:`ak-role config unset <gatekeeper|inspector|notary>`;设或清持久劳务引擎(可调用角色):`ak-role config set-engine <seat> <name>` / `ak-role config unset-engine <seat>`。
15
15
 
16
16
  ## 读结果
17
17
 
@@ -23,31 +23,41 @@ ak-role judge --attach ./plan.md "Review this plan." > result.txt
23
23
 
24
24
  退出码报的是生命周期诚实,不是业务成败:一切合法 typed 终态(含 `audit_escalation`)退出零;无合法终态的失败退出非零,其 Terminal 携带 Error Artifact 引用与原始原因,不伪造回执。
25
25
 
26
- `ak-role resume <runId>` 重开该次运行的同一 Pi session。要不要续跑由调用者决定:不再要求 typed HTTP 429,也不要求 `resumable` 状态。未知 run ID、session 主体不在则拒绝。门下省、太医署仍为一次性,无 resume。包绝不自动换 provider;临时换模型用全局旗标。
26
+ `ak-role resume <runId>` 重开该次运行的同一 Pi session。要不要续跑由调用者决定:不再要求 typed HTTP 429,也不要求 `resumable` 状态。未知 run ID、session 主体不在则拒绝。通进司、太医署、符宝郎仍为一次性,无 resume。包绝不自动换 provider;临时换模型用全局旗标。
27
27
 
28
28
  大理寺、将作监、修内司、御史台、校书郎在单次调用内对非 lawful LLM 终态原地续跑(同一 `runId` 与 session),次数上限为 `autoResumeLimit`。缺键默认 2;`ak-role config set-auto-resume-limit <N>` 写入(`0` 关闭自动续)。lawful typed 终态(`accepted` / `audit_escalation` / `no_receipt`)立即停止。手动 `ak-role resume` 仍可用。
29
29
 
30
- 全局覆盖前后皆可:`ak-role --model xai/grok-4.5:high resume <runId>`。
30
+ 全局覆盖前后皆可:`ak-role --model <provider/model[:thinking]> resume <runId>`。
31
31
 
32
32
  每次运行游奕使自动出席,建议随同一 Terminal 给出。配置:
33
33
 
34
34
  ```bash
35
- ak-role config set navigator openai-codex/gpt-5.6-luna:medium
35
+ ak-role config set judge <provider/model[:thinking]>
36
+ ak-role config set navigator <provider/model[:thinking]>
37
+ # 门下省官席(交卷自动出席;除直调符宝郎外无独立命令)
38
+ ak-role config set gatekeeper <provider/model[:thinking]>
39
+ ak-role config set inspector <provider/model[:thinking]>
40
+ ak-role config set notary <provider/model[:thinking]>
41
+ ak-role config unset gatekeeper
36
42
  # 持久劳务引擎(可调用角色;不含 navigator);一次性覆盖仍用 --engine
37
43
  ak-role config set-engine judge opus
38
44
  ak-role config unset-engine judge
39
45
  ak-role config set-auto-resume-limit 3
40
46
  ```
41
47
 
42
- `config set` 存席位模型默认;`config set-engine` / `unset-engine` 在可调用角色上写入或清除持久劳务引擎名(与 `--engine` 同轴;拒收 navigator——无独立 activation)。`config set-auto-resume-limit` 写入单次调用自动续跑上限。用法与拒绝文案以公开 CLI 的 `ak-role config` 为准。
48
+ `config set` 存席位模型默认。门下省官席(`gatekeeper`/`inspector`/`notary`)解析顺序:官自钉 → 省钉(`gatekeeper`)→ 继承父 session;显式指定失败响亮、不回退。`config unset` 只清这三官的覆盖。`config set-engine`/`unset-engine` 在可调用角色上写入或清除持久劳务引擎名(与 `--engine` 同轴;拒收 navigator——无独立 activation)。`config set-auto-resume-limit` 写入单次调用自动续跑上限。用法与拒绝文案以 `ak-role config`/`ak-role help config` 为准。
43
49
 
44
50
  回执是 typed 的,调用者不必解析散文即可组合角色;顺序与停止归调用者。编程消费者从 `src/package-contracts/` 导出推导契约,不从本文。
45
51
 
52
+ ### 门下省交卷闸
53
+
54
+ 完成侧交卷时,包可能在本局结算前起门下省:`gatekeeper` 读受审物并派官(`inspector` 给事中或 `notary` 符宝郎);既有审刑院挂钩仍在原位。闸在交卷 session 内运行;封驳=当场重写重交,不是角色失败;最终回执即过闸产物。`planned`/`refused`/`unfinished` 不调省。指针:[ADR 0067](docs/adr/0067-menxia-province-founding-jishizhong-fubaolang.md)、[ADR 0072](docs/adr/0072-menxia-pre-pr-submission-hooks.md)。勿刮 session 散文当闸状态。
55
+
46
56
  当劳务引擎绕行失败、座席回到主路继续劳务时,typed 回执可带机械字段 `engineLaborFallback`:`{ engine, failure, laborBy: "seat" }`。仅在真实绕行失败并座席顶班后出现——成功绕行或调用方 cancel 不出现。同一次 activation 内先到先得;无包内 latch 时剥离模型伪造的 `engineLaborFallback` 键。唯一构造点:`src/engine-labor-fallback.ts`;决策记录:[ADR 0071](docs/adr/0071-engine-detour-failure-seat-fallback-declaration.md)。本文只投影该契约。
47
57
 
48
58
  ## 调用百官
49
59
 
50
- 公开 option 身份、别名、必填性与 mode 面以生成区 [公开 CLI 选项(生成)](#公开-cli-选项生成) 与 `ak-role help <command>` 为准——二者同源。下例只是用法速写,不是第二份旗标合同。指令对大理寺、门下省、太医署可省略,对将作监、修内司、御史台、校书郎必须非空。
60
+ 公开 option 身份、别名、必填性与 mode 面以生成区 [公开 CLI 选项(生成)](#公开-cli-选项生成) 与 `ak-role help <command>` 为准——二者同源。下例只是用法速写,不是第二份旗标合同。指令对大理寺、通进司、太医署可省略;符宝郎零 prompt/附件;太史为确定性命令(见 help)。对将作监、修内司、御史台、校书郎必须非空。
51
61
 
52
62
  ```bash
53
63
  # 大理寺——审断所供材料;自行推断举证责任,无 burden 旗标
@@ -63,7 +73,7 @@ ak-role reviewer --base main "Review the branch."
63
73
  # --base 为必填并钉住 fixed point;御史台不接受 --attach
64
74
  # completed ≠ 准行——findings 在 Terminal 里
65
75
 
66
- # 门下省——GitHub PR 收证;仅 github.com,需 gh 已认证;一次性
76
+ # 通进司——GitHub PR 收证;仅 github.com,需 gh 已认证;一次性
67
77
  ak-role collector --pr 42 --repo owner/repository
68
78
  ak-role collector --pr 42 --request-manifest ./requests.json
69
79
  # 无配置时仅观察;可选 request manifest 为 {requests:[{id,body}]};repo 默认取 origin
@@ -79,6 +89,17 @@ ak-role doctor --issue 115 "Diagnose this retained case."
79
89
  # 校书郎——雠校一个已在冲突的 merge(先用 Git ort 起动)
80
90
  ak-role merger --project /path/to/worktree "Reconcile the active merge."
81
91
  # 遇新意图/权限问题交回调用者,不捏造 authority
92
+
93
+ # 符宝郎——对一份留存 source run 做文书核验;零 prompt/附件;一次性
94
+ ak-role notary --source-run <runId@role|path>
95
+
96
+ # 太史——确定性指标(cwd 候簿=git common-dir);裸调=整簿
97
+ ak-role analyst
98
+ ak-role analyst --ticket <N>
99
+ ak-role analyst sweep --attach ./payload.md
100
+ ak-role analyst --cohort \
101
+ --group-a-label A --group-a-issues 1,2 \
102
+ --group-b-label B --group-b-issues 3,4
82
103
  ```
83
104
 
84
105
  ## 班子(唐宋官署命名)
@@ -93,8 +114,11 @@ ak-role merger --project /path/to/worktree "Reconcile the active merge."
93
114
  | **修内司** | fixer | **缮修旧物。** 面对已有问题,不急于表面修补,而是追寻问题根源,找到真正需要修整之处。既要修复眼前缺漏,也要防止同类问题再次出现。 |
94
115
  | **御史台** | reviewer | **察举百弊。** 置身事外,以旁观之眼审视成果,寻找其中的不妥、遗漏与隐患。只负责指出问题、陈明依据,不参与修改,也不替人作最终判断。 |
95
116
  | **大理寺** | judge | **审理定谳。** 承接各方意见与材料,依照既定规则逐项判断,辨明是非曲直。可以准行、退回或请示更高决定,但自身不参与建设与修改。 |
96
- | **审刑院** | judge-auditor/reviewer-auditor(无 CLI,共享内部接缝) | **复核成案。** 不重新争论事情本身,而是检查整个办理过程是否合乎规矩。关注是否有人越过职责、是否遗漏必要步骤、是否以错误方式得出正确结果。 |
97
- | **门下省** | collector | **承接百议。** 位于决策之前,收集各方反馈与意见,确认事情是否已经具备继续推进的条件。它不替人裁决,只负责让信息完整、状态清楚。 |
117
+ | **审刑院** | judge-auditor/reviewer-auditor(无 CLI,共享内部接缝) | **复核成案。** 不重新争论事情本身,而是检查整个办理过程是否合乎规矩。关注是否有人越过职责、是否遗漏必要步骤、是否以错误方式得出正确结果。直属陛下,不入门下省编制。 |
118
+ | **门下省** | gatekeeper(无独立 CLI;交卷自动出席) | **质量保证省。** 交卷时判断受审物、够不够审、该谁审,派给事中或符宝郎;省内政,不是外层编排器。规范见 [ADR 0067](docs/adr/0067-menxia-province-founding-jishizhong-fubaolang.md)、[ADR 0072](docs/adr/0072-menxia-pre-pr-submission-hooks.md)。 |
119
+ | **给事中** | inspector(无独立 CLI;可由门下省派发) | **复杂度与测试质量两轴质检。** 受审物是将作监/修内司完成侧交卷;封驳=当场打回重写,不是本局失败。 |
120
+ | **符宝郎** | notary | **引语真伪与票面对齐。** 受审物是大理寺拟判等文书;可被门下省派发,也可 `ak-role notary` 单独调。 |
121
+ | **通进司** | collector | **承接百议/收证。** 门下省下的收证衙门:收集外部 GitHub PR 材料与意见,只收不审、不替人裁决。canonical 键仍为 `collector`。 |
98
122
  | **校书郎** | merger | **雠校异文。** 面对不同来源的修改,负责整理、校合与调和。保留双方有价值的部分,解决彼此冲突;遇到无法自行决定之处,则留待重新裁量。 |
99
123
  | **游奕使** | navigator(无 CLI,自动出席) | **巡行问路。** 不掌具体事务,而是观察全局变化,结合当前局面提醒下一步方向。它提供建议与路径参考,但最终选择仍由执掌之人决定。 |
100
124
 
@@ -103,14 +127,15 @@ ak-role merger --project /path/to/worktree "Reconcile the active merge."
103
127
  | 席位 | 名 | 职掌 | 状态 |
104
128
  | --- | --- | --- | --- |
105
129
  | doctor | **太医署** | 单案诊断工厂机制,开 `keep|thin|delete` 方 | 已建 |
106
- | | **司天台** | 记候簿——只打点、只指针,不分析不执法 | **一期不是角色**([ADR 0047](docs/adr/0047-sitian-phase-one-mechanism-not-role.md):零 LLM 双面对账);席位形态属 [#67](https://github.com/Akagilnc/ak-pi-workflow-roles/issues/67) 素材,未定 |
107
- | — | **兰台** | 读档议制——耗时/缺口/冗余三条,上奏不执法 | 未建([#67](https://github.com/Akagilnc/ak-pi-workflow-roles/issues/67) 两席之一) |
108
- | — | **考功司** | 考具体效率——角色与档位的升档率、一次通过率、每票成本 | 留档,不属 #67,需要时另立票 |
130
+ | analyst | **太史** | 司天台分析席:只读司天记录、出高阶指标;确定性机制,非 LLM,可单独调用 | 已建([ADR 0068](docs/adr/0068-taishi-analysis-seat-reads-records-writes-sibling-home.md);机器面键 `analyst`,[#445](https://github.com/Akagilnc/ak-pi-workflow-roles/issues/445) 拼音清零) |
131
+ | — | **司天台** | 记候簿——只打点、只指针,不分析不执法 | **一期不是角色**([ADR 0047](docs/adr/0047-sitian-phase-one-mechanism-not-role.md):零 LLM 双面对账);分析席已由太史承担;机器面键 `archivist`([#445](https://github.com/Akagilnc/ak-pi-workflow-roles/issues/445) |
132
+ | — | **兰台** | 读档议制——耗时/缺口/冗余三条,上奏不执法 | 未建 |
133
+ | — | **考功司** | 考具体效率——角色与档位的升档率、一次通过率、每票成本 | 留档,需要时另立票 |
109
134
  | — | **主簿** | 合并后勾稽销案:核实确已合上、清理残留、报到达 | 未建 |
110
135
 
111
- **merge 按钮归调用者**,没有任何角色握不可逆权限:门下省把收证这件苦活做完并报收集终态,人(或 AI)自己判断、自己点,点完想调主簿就调、不调也可以。
136
+ **merge 按钮归调用者**,没有任何角色握不可逆权限:通进司把收证这件苦活做完并报收集终态,人(或 AI)自己判断、自己点,点完想调主簿就调、不调也可以。
112
137
 
113
- 上表**不规定调用顺序**——组合、顺序、重复次数归调用者([ADR 0010](docs/adr/0010-callers-own-role-composition-and-repetition.md))。御史台/大理寺/审刑院是**职责分立的类比,不是必经链**;审刑院也并非只跟在大理寺之后,大理寺、御史台、太医署各自都有一次。
138
+ 上表**不规定调用顺序**——组合、顺序、重复次数归调用者([ADR 0010](docs/adr/0010-callers-own-role-composition-and-repetition.md))。御史台/大理寺/审刑院是**职责分立的类比,不是必经链**;审刑院也并非只跟在大理寺之后,大理寺、御史台、太医署各自都有一次。门下省交卷闸是完成侧挂钩,不是调用者必经编排链。
114
139
 
115
140
  `拾遗补阙` 成对留档,待将来出现第二个进言席再启用。
116
141
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@akagilnc/pi-workflow-roles",
3
- "version": "0.1.2336",
3
+ "version": "0.1.2340",
4
4
  "description": "Soul-bound workflow roles for Pi",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
@@ -398,7 +398,7 @@ const YAMEN_LABELS: Readonly<Record<string, string>> = {
398
398
  coder: "将作监",
399
399
  fixer: "修内司",
400
400
  reviewer: "御史台",
401
- collector: "门下省",
401
+ collector: "通进司",
402
402
  doctor: "太医署",
403
403
  merger: "校书郎",
404
404
  marshal: "刑部",
@@ -808,7 +808,7 @@ const COLUMN_LABELS: Readonly<Record<string, string>> = {
808
808
  court: "大理寺 · 审票",
809
809
  coder: "将作监",
810
810
  marshal: "刑部",
811
- collector: "门下省",
811
+ collector: "通进司",
812
812
  done: "已完成",
813
813
  };
814
814