role-os 2.7.1 → 2.9.0

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
@@ -89,9 +89,22 @@ Runs persist to disk (`.claude/runs/`), so interrupted sessions resume cleanly.
89
89
 
90
90
  Role OS can consult a local **Token Budget Analyst** for each dispatch step and attach an advisory spend forecast to the manifest — opt-in (`ROLEOS_BUDGET_CONSULT`), advisory (it never blocks a dispatch), and fail-open to a deterministic baseline. Off by default; the forecast is local and free to run. See the [handbook](https://mcp-tool-shop-org.github.io/role-os/handbook/specialist-budget/).
91
91
 
92
+ ## Tool-call oversight
93
+
94
+ Role OS verifies and gates tool calls at the `PreToolUse` seam — deterministically, with no model on the hot path:
95
+
96
+ - **Conformance watcher** (advisory, fail-open) — a deterministic schema + computable-contract floor checks a proposed call against its catalogued tool-contract and attaches an advisory verdict on a *proven* nonconformant call; it never blocks. An opt-in LLM ceiling (`ROLEOS_CONFORMANCE_CONSULT`) handles the genuinely-semantic residue.
97
+ - **Capability gate** (fail-closed, opt-in `ROLEOS_CAPABILITY_GATE`, default OFF) — deterministic least-privilege on *irreversible* actions (npm/PyPI publish, `gh release`, `git push`, repo edits, Pages deploy). A gated action is denied unless the director granted its capability in `.claude/role-os/capabilities.json`, so a wrong step — an honest mistake or an injected one — can't trigger an unauthorized irreversible action. The preventive complement to the named-compensator rule. See the [handbook](https://mcp-tool-shop-org.github.io/role-os/handbook/).
98
+
99
+ ## Crew dossier
100
+
101
+ Every role has a **dossier** — a character sheet that doubles as run-time config. Six aptitudes (Rigor, Pace, Range, Skepticism, Autonomy, Candor) map to real dispatch knobs; an eight-archetype **disposition** layer (Skeptic, Builder, Investigator, Maverick…) carries a behavioral instruction; and each role has a painted portrait and a grade. Browse the whole crew as a gallery (`dossier/dossier.html`) — each role's radar shows its tuned build against its canonical ideal.
102
+
103
+ When a role has a dossier, dispatch injects an **Operating Posture** — the disposition's behavioral instruction plus a posture line from the role's aptitudes — so the sheet actually configures the role. Opt-in and additive: roles without a dossier behave exactly as before. See the [handbook](https://mcp-tool-shop-org.github.io/role-os/handbook/crew-dossier/).
104
+
92
105
  ## Org rollout state
93
106
 
94
- Org-wide rollout state (queue, decisions, audit records, per-repo lock packets) lives in a separate private repo: [`role-os-rollout`](https://github.com/mcp-tool-shop-org/role-os-rollout). This repo is the product; that repo is operational state.
107
+ Org-wide rollout state (queue, decisions, audit records, per-repo lock packets) lives in a separate **private**, org-internal repo (`role-os-rollout`). This repo is the product; that repo is operational state.
95
108
 
96
109
  ## Memory and continuity
97
110
 
package/README.pt-BR.md CHANGED
@@ -89,9 +89,22 @@ As execuções são persistidas em disco (`.claude/runs/`), para que as sessões
89
89
 
90
90
  O Role OS pode consultar um **analista de orçamento de tokens** local para cada etapa de despacho e anexar uma previsão de gastos consultiva ao manifesto — opcional (`ROLEOS_BUDGET_CONSULT`), consultiva (nunca bloqueia um despacho) e com fallback para uma linha de base determinística. Desativado por padrão; a previsão é local e gratuita. Consulte o [manual](https://mcp-tool-shop-org.github.io/role-os/handbook/specialist-budget/).
91
91
 
92
+ ## Supervisão das chamadas de ferramentas
93
+
94
+ O Role OS verifica e controla as chamadas de ferramentas no ponto `PreToolUse` — de forma determinística, sem nenhum modelo no caminho crítico:
95
+
96
+ - **Monitor de conformidade** (aconselhamento, falha aberta) — um esquema determinístico + verificações de contrato computável avaliam uma chamada proposta em relação ao seu contrato de ferramenta catalogado e anexam um parecer consultivo sobre uma chamada *comprovadamente* não conforme; nunca bloqueia. Um limite opcional do LLM (`ROLEOS_CONFORMANCE_CONSULT`) lida com o resíduo genuinamente semântico.
97
+ - **Controle de capacidade** (falha fechada, opcional `ROLEOS_CAPABILITY_GATE`, padrão DESLIGADO) — privilégio mínimo determinístico em ações *irreversíveis* (publicação no npm/PyPI, `gh release`, `git push`, edições do repositório, implantação de Páginas). Uma ação controlada é negada, a menos que o administrador tenha concedido sua capacidade em `.claude/role-os/capabilities.json`, portanto, um passo errado — um erro honesto ou um erro intencional — não pode acionar uma ação irreversível não autorizada. O complemento preventivo da regra de compensação nomeada. Consulte o [manual](https://mcp-tool-shop-org.github.io/role-os/handbook/).
98
+
99
+ ## Dossiê da equipe
100
+
101
+ Cada função tem um **dossiê** — uma ficha de personagem que também serve como configuração para o tempo de execução. Seis aptidões (Rigor, Ritmo, Alcance, Ceticismo, Autonomia, Franqueza) correspondem a parâmetros reais de distribuição; uma camada de **disposição** com oito arquétipos (Cético, Construtor, Investigador, Rebelde…) contém uma instrução comportamental; e cada função tem um retrato pintado e uma classificação. Veja toda a equipe como uma galeria (`dossier/dossier.html`) — o radar de cada função mostra sua configuração ajustada em relação ao seu ideal canônico.
102
+
103
+ Quando uma função tem um dossiê, a distribuição injeta uma **Postura Operacional** — a instrução comportamental da disposição mais uma linha de postura das aptidões da função —, para que a ficha configure efetivamente a função. Opcional e aditivo: as funções sem um dossiê se comportam exatamente como antes. Consulte o [manual](https://mcp-tool-shop-org.github.io/role-os/handbook/crew-dossier/).
104
+
92
105
  ## Estado de implantação em toda a organização
93
106
 
94
- O estado de implantação em toda a organização (fila, decisões, registros de auditoria, pacotes de bloqueio por repositório) está armazenado em um repositório privado separado: [`role-os-rollout`](https://github.com/mcp-tool-shop-org/role-os-rollout). Este repositório é o produto; aquele repositório é o estado operacional.
107
+ O estado do lançamento em toda a organização (fila de tarefas, decisões, registos de auditoria, pacotes de bloqueio por repositório) está armazenado num repositório **privado** e interno da organização (`role-os-rollout`). Este repositório é o produto; esse repositório contém o estado operacional.
95
108
 
96
109
  ## Memória e continuidade
97
110
 
package/README.zh.md CHANGED
@@ -13,16 +13,16 @@
13
13
  <a href="https://mcp-tool-shop-org.github.io/role-os/"><img src="https://img.shields.io/badge/Landing_Page-live-brightgreen" alt="Landing Page"></a>
14
14
  </p>
15
15
 
16
- 一种多 Claude 操作系统,它对员工进行管理、分配任务、验证并执行工作,通过 61 个专门的角色合同进行。它创建任务包,从经过评分的角色匹配中组建合适的团队,在执行之前检测中断的任务链,当工作被阻止或拒绝时自动进行恢复,并且要求在每个结论中提供结构化的证据。它包括用于处理大规模任务的动态调度——一个包含 10 个组件的仓库自动变为 28 个审计步骤,而不是 6 个。
16
+ 一种多 Claude 操作系统的解决方案,它对员工进行管理、分配任务、验证结果并执行工作,通过 61 个专门的角色合同来完成。它创建任务包,从经过评分的角色匹配中组建合适的团队,在执行之前检测出流程中的问题,当工作被阻止或拒绝时自动调整恢复方案,并且要求在每次决策中提供结构化的证据。它包括动态调度功能,可用于处理大规模的任务——一个包含 10 个组件的仓库会自动扩展到 28 个审核步骤,而不是 6 个。
17
17
 
18
- ## 它的作用
18
+ ## 它的作用是什么?
19
19
 
20
- 角色操作系统是使用多 Claude 的专业方法。它可以防止通用 AI 工作流程产生的一些特定问题:
20
+ 角色操作系统是使用多 Claude 的专业方法。它可以防止通用 AI 工作流程中出现的一些特定问题:
21
21
 
22
- - **漂移**——角色保持在各自的领域内。产品不会重新设计。前端不会重新定义范围。后端不会决定产品方向。
23
- - **虚假完成**——“完成”的定义是具体的。隐藏漏洞、跳过验证或解决不同问题的任务将被拒绝。
24
- - **污染**——分支或继承的项目会带有身份残留。角色操作系统检测并拒绝项目中术语、视觉效果和思维模式的跨项目漂移。
25
- - **基于感觉的进度**——每次交接都是结构化的。每个结论都与证据相关联。“感觉完成了”不是一个有效状态。
22
+ - **偏离**——各个角色各司其职。产品不会重新设计。前端不会重新定义范围。后端不会决定产品的方向。
23
+ - **虚假完成**——“完成”的定义是明确的。那些掩盖漏洞、跳过验证或解决不同问题的任务将被拒绝。
24
+ - **污染**——分叉或继承的项目会带有身份残留。角色操作系统检测并拒绝项目中术语、视觉效果和思维模式方面的差异。
25
+ - **基于感觉的进度**——每次交接都有结构化的流程。每个决策都与证据相关联。“感觉完成了”不是一个有效状态。
26
26
 
27
27
  ## 它的工作原理
28
28
 
@@ -44,13 +44,13 @@ roleos start "something completely novel"
44
44
 
45
45
  **备用方案:**
46
46
 
47
- 1. **任务**——当任务与经过验证的重复工作流程(错误修复、处理、功能发布、文档、安全、研究、头脑风暴、深度审计、内部测试)匹配时。已知的角色链、工件流程、升级分支和明确的部分定义。
48
- 2. **包**——当任务属于已知类别但不是完整的任务时。10 个经过校准的团队包,具有自动选择和不匹配保护功能。
49
- 3. **自由路由**——当任务是新的、混合的或不确定的。对所有 61 个角色根据任务包的内容进行评分,并组建一个动态链。
47
+ 1. **任务**——当任务与经过验证的重复性工作流程(bug 修复、治疗、功能发布、文档、安全、研究、头脑风暴、深度审核、内部测试)匹配时。已知的角色链、工件流程、升级分支和明确的部分定义。
48
+ 2. **包**——当任务属于已知类别,但不是完整的任务形式时。10 个经过校准的团队包,具有自动选择和不匹配保护功能。
49
+ 3. **自由路由**——当任务是新的、混合的或不确定的。对 61 个角色中的所有角色根据任务内容进行评分,并组建一个动态链。
50
50
 
51
- 该系统绝不会强行将工作通过错误的抽象层进行。它会解释为什么选择每个级别,并提供替代方案。
51
+ 该系统绝不会强行将工作通过错误的抽象层执行。它会解释为什么选择每个级别,并提供替代方案。
52
52
 
53
- **一个命令即可激活执行:**
53
+ **只需一条命令即可开始执行:**
54
54
 
55
55
  ```bash
56
56
  roleos run "fix the crash in save handler"
@@ -67,7 +67,7 @@ roleos report # Generate completion report
67
67
  roleos friction # Measure operator touches
68
68
  ```
69
69
 
70
- **当出现问题时进行干预:**
70
+ **当出现问题时采取的措施:**
71
71
 
72
72
  ```bash
73
73
  roleos retry 0 # Retry a failed step
@@ -77,52 +77,65 @@ roleos block 2 "waiting for API spec"
77
77
  roleos reopen 0 "found issue in review"
78
78
  ```
79
79
 
80
- 运行结果会持久保存到磁盘(`.claude/runs/`),因此中断的会话可以干净地恢复。每个步骤都包含操作员指导:要生成的内容、必需的部分和停止条件。
80
+ 运行结果会持久保存到磁盘(`.claude/runs/`),因此中断的会话可以干净地恢复。每个步骤都包含操作员指导:需要生成的内容、必需的部分和停止条件。
81
81
 
82
- **路由完成后:**
82
+ **在路由完成后:**
83
83
 
84
- 1. **每个角色都会生成一个交接**——结构化的输出,其中包含证据项目,以减少对下一个角色的歧义。
85
- 2. **审核者根据合同进行审核**——基于结构化的证据(而不是印象)进行接受、拒绝或阻止。
86
- 3. **恢复路由自动进行**——被阻止或拒绝的工作会被路由到正确的解决者,并附带原因、恢复类型和必需的工件。
84
+ 1. **每个角色都会产生一个交接结果**——结构化的输出,其中包含证据项目,以减少下一个角色的歧义。
85
+ 2. **审核者根据合同进行审查**——基于结构化证据(而非印象),接受、拒绝或阻止。
86
+ 3. **恢复路由自动进行**——被阻止或拒绝的工作会被路由到正确的解决者处,并附带原因、恢复类型和所需的工件。
87
87
 
88
88
  ## 考虑预算的调度
89
89
 
90
- 角色操作系统可以在每个调度步骤中咨询本地**令牌预算分析师**,并将建议的支出预测附加到清单中——可以选择启用(`ROLEOS_BUDGET_CONSULT`),为建议性(它绝不会阻止调度),并回退到确定性的基线。默认情况下禁用;预测是本地的并且可以免费运行。请参阅[手册](https://mcp-tool-shop-org.github.io/role-os/handbook/specialist-budget/)。
90
+ 角色操作系统可以在每个调度步骤中咨询本地“令牌预算分析师”,并将建议的支出预测附加到清单中——可以选择启用(`ROLEOS_BUDGET_CONSULT`),为建议性功能(它绝不会阻止调度),并且在默认情况下会回退到确定性的基线。默认禁用;预测是本地的,并且可以免费运行。请参阅[手册](https://mcp-tool-shop-org.github.io/role-os/handbook/specialist-budget/)。
91
+
92
+ ## 工具调用监督
93
+
94
+ 角色操作系统会在 `PreToolUse` 阶段验证并控制工具调用——以确定性的方式进行,并且不会在关键路径上使用模型:
95
+
96
+ - **一致性观察器**(建议性,允许失败)——一个确定性的模式 + 可计算的合同下限,检查提出的调用是否符合其编目的工具合同,并附加关于*已证明*不一致调用的建议性结果;它绝不会阻止。可选的 LLM 上限(`ROLEOS_CONFORMANCE_CONSULT`)处理真正具有语义残留的情况。
97
+ - **能力门控**(失败时关闭,可选 `ROLEOS_CAPABILITY_GATE`,默认关闭)——对*不可逆*操作进行确定性的最小权限控制(npm/PyPI 发布、`gh release`、`git push`、仓库编辑、Pages 部署)。除非主管在 `.claude/role-os/capabilities.json` 中授予了该操作的能力,否则会拒绝已门控的操作,因此错误的步骤——无论是诚实的错误还是注入的错误——都无法触发未经授权的不可逆操作。这是命名补偿规则的预防性补充。请参阅[手册](https://mcp-tool-shop-org.github.io/role-os/handbook/)。
98
+
99
+ ## 船员档案
100
+
101
+ 每个角色都有一个**档案**——一份角色信息表,同时也是运行时配置。六种能力(严谨性、速度、范围、怀疑精神、自主性、坦诚度)对应着实际的调度参数;一种包含八种类型的**性格**层(怀疑者、建设者、调查员、特立独行者……),其中包含行为指令;并且每个角色都有一个绘制的肖像和一个等级。将整个船员团队以画廊的形式浏览(`dossier/dossier.html`)——每个角色的雷达图显示其当前的配置与理想状态之间的差异。
102
+
103
+ 当某个角色拥有档案时,调度系统会注入一个**运行姿态**——即该性格的行为指令加上来自该角色能力的一行姿态描述——因此,该信息表实际上用于配置该角色。可以选择启用或添加:没有档案的角色将表现得与之前完全相同。请参阅[手册](https://mcp-tool-shop-org.github.io/role-os/handbook/crew-dossier/)。
91
104
 
92
105
  ## 组织推广状态
93
106
 
94
- 组织范围的推广状态(队列、决策、审计记录、每个仓库的锁定包)存储在单独的私有仓库中:[`role-os-rollout`](https://github.com/mcp-tool-shop-org/role-os-rollout)。这个仓库是产品;那个仓库是运行状态。
107
+ 整个组织范围内的部署状态(队列、决策、审计记录、每个仓库的锁定数据包)都存储在一个独立的**私有**组织内部仓库中(`role-os-rollout`)。这个仓库是产品;那个仓库是运行状态。
95
108
 
96
109
  ## 内存和连续性
97
110
 
98
- 角色操作系统不拥有或复制内存层。在 Claude 项目内存存在的地方,它就是规范的连续性系统——仓库事实、决策、未完成的任务和处理历史记录都存储在那里。
111
+ 角色操作系统不拥有或复制内存层。在 Claude 项目的内存存在的地方,它就是规范的连续性系统——仓库事实、决策、未完成的任务和治疗历史都存储在那里。
99
112
 
100
- 角色操作系统与 Claude 项目内存集成。它不会取代它。
113
+ 角色操作系统与 Claude 项目的内存集成。它不会取代它。
101
114
 
102
- ## 完整的处理和发布检查
115
+ ## 完整的治疗和发布检查
103
116
 
104
- 完整的处理是 Claude 项目内存中定义的规范的 7 阶段协议(`memory/full-treatment.md`)。角色操作系统使用角色合同、交接和审核门来路由和审核处理——它不会重新定义协议。
117
+ 完整的治疗是 Claude 项目内存中定义的规范的 7 个阶段协议(`memory/full-treatment.md`)。角色操作系统使用角色合同、交接和审核门控来路由和审查治疗过程——它不会重新定义该协议。
105
118
 
106
- **发布检查**是在完整处理之前运行的 31 项质量门。在开始任何处理之前,必须通过 A-D 强制门。规范参考:`memory/shipcheck.md`。
119
+ **发布检查**是在进行完整治疗之前运行的包含 31 个项目的质量闸。在开始任何治疗之前,必须通过 A-D 这四个硬性闸。规范参考:`memory/shipcheck.md`。
107
120
 
108
- 顺序:首先进行发布检查,然后进行完整处理。如果没有通过强制门,则不能发布 v1.0.0
121
+ 顺序:首先进行发布检查,然后进行完整的治疗。如果没有通过硬性闸,则不能发布 v1.0.0 版本。
109
122
 
110
123
  ## 10 个包中的 61 个角色
111
124
 
112
125
  | 包 | 角色 |
113
126
  |------|-------|
114
- | **Core** (3) | 协调者、产品策略师、审核者 |
115
- | **Engineering** (7) | 前端开发人员、后端工程师、测试工程师、重构工程师、性能工程师、依赖性审核员、安全审核员 |
116
- | **Design** (2) | UI 设计师、品牌守护者 |
117
- | **Marketing** (1) | 发布文案撰写者 |
118
- | **Treatment** (7) | 仓库研究员、仓库翻译员、文档架构师、元数据管理员、覆盖率审核员、部署验证员、发布工程师 |
119
- | **Product** (3) | 反馈综合者、路线图优先级排序者、规范撰写者 |
120
- | **Research** (4) | 用户体验研究员、竞争分析师、趋势研究员、用户访谈综合者 |
121
- | **Growth** (4) | 发布策略师、内容策略师、社区经理、支持优先级排序负责人 |
122
- | **Deep Audit** (4) | 组件审核员、测试真值审核员、接缝审核员、审核综合者 |
123
- | **Swarm** (7) | 蜂群协调员、蜂群后端代理、蜂群桥接代理、蜂群测试代理、蜂群基础设施代理、蜂群前端代理、蜂群综合者 |
124
-
125
- 每个角色都有完整的合同:任务、何时使用、何时不使用、预期输入、必需输出、质量标准和升级触发器。每个角色都可以进行路由——`roleos route` 可以根据任务包的内容推荐任何角色。
127
+ | **Core** (3) | 协调员、产品战略家、审核者 |
128
+ | **Engineering** (7) | 前端开发人员、后端工程师、测试工程师、重构工程师、性能工程师、依赖关系审计员、安全审查员 |
129
+ | **Design** (2) | UI 设计师,品牌守护者 |
130
+ | **Marketing** (1) | 发布文案撰写员 |
131
+ | **Treatment** (7) | 仓库研究员、仓库翻译员、文档架构师、元数据管理员、覆盖审计员、部署验证员、发布工程师 |
132
+ | **Product** (3) | 反馈综合分析员、路线图优先级排序者、规范编写者 |
133
+ | **Research** (4) | 用户体验研究员、竞争对手分析师、趋势研究员、用户访谈结果综合分析员 |
134
+ | **Growth** (4) | 发布策略制定者、内容策略制定者、社区经理、支持问题分流负责人 |
135
+ | **Deep Audit** (4) | 组件审计员、测试真实性审计员、接口审计员、审计综合分析员 |
136
+ | **Swarm** (7) | 蜂群协调员、蜂群后端代理、蜂群桥接代理、蜂群测试代理、蜂群基础设施代理、蜂群前端代理、蜂群综合分析员 |
137
+
138
+ 每个角色都有完整的合同:任务、适用时机、不适用时机、预期输入、所需输出、质量标准和升级触发条件。每个角色都可以通过 `roleos route` 命令进行路由,系统可以根据数据包内容推荐任何一个角色。
126
139
 
127
140
  ## 快速入门
128
141
 
@@ -163,56 +176,56 @@ roleos mission list
163
176
  roleos packs list
164
177
  ```
165
178
 
166
- ## 何时不使用角色操作系统
179
+ ## 何时不使用 Role OS
167
180
 
168
- - 单行修复、错别字或明显的错误
169
- - 没有明确输出的探索性研究
170
- - 可以在 5 分钟内在一个人的脑海中完成的工作
171
- - 需要在审查流程完成之前发布的紧急补丁
172
- - 你希望速度比结构更重要的项目
181
+ - 单行修复、拼写错误或明显的 bug
182
+ - 探索性研究,没有明确的输出
183
+ - 可以一个人在 5 分钟内完成的工作
184
+ - 需要在审查流程完成后立即发布的紧急补丁
185
+ - 您希望速度优先于结构的项目
173
186
 
174
187
  ## 证据
175
188
 
176
- Role OS 已在两个结构不同的仓库中的三个测试环境中得到验证:
189
+ Role OS 已在两个具有不同结构的仓库中的三个试验中得到验证:
177
190
 
178
- **测试 001 — 功能开发**(人员筛选、星际货运)
179
- - 7 个角色链,45 个测试场景,0 个角色冲突
180
- - 防止来自分支祖先的污染,捕获内联发明,发现真实的障碍
191
+ **试验 001 — 功能开发**(Crew Screen、Star Freight)
192
+ - 7 个角色的链条,45 个测试场景,0 个角色冲突
193
+ - 防止来自分支祖先的污染,发现内联发明,揭示了实际的障碍
181
194
 
182
- **测试 002 — 集成工作**(CampaignState 连接,星际货运)
183
- - 5 个角色链,解决了架构缝隙,没有使用备用方案
184
- - 反备用方案测试证明了实时路径是真实的,而不是占位符
195
+ **试验 002 — 集成工作**(CampaignState 连接、Star Freight)
196
+ - 5 个角色的链条,解决了架构接口问题,而无需使用虚假信息
197
+ - 反向回退测试证明了实时路径是真实的,而不是占位符
185
198
 
186
- **测试 003 — 身份工作**(污染清除,星际货运)
187
- - 6 个角色链,51 个测试场景,包括持久的 CI 污染防御
188
- - 修复了继承的虚构漂移,而没有导致广泛的重新设计
199
+ **试验 003 — 身份工作**(污染清除、Star Freight)
200
+ - 6 个角色的链条,51 个测试场景,包括持久的 CI 污染防御
201
+ - 修复了继承的虚假信息漂移,而不会导致广泛的重新设计
189
202
 
190
- **可移植性测试**(角色一致性,传感器幽默)
191
- - 相同的核心,不同的语言/领域/堆栈
192
- - 仅采用上下文更改——没有核心合同修改
203
+ **可移植性试验**(角色一致性、sensor-humor)
204
+ - 相同的骨干结构,不同的语言/领域/堆栈
205
+ - 只需进行上下文更改即可采用,无需修改核心合同
193
206
 
194
207
  **完整处理 FT-001**(portlight-desktop)
195
- - 7 个阶段的 staffed 处理,使用处理包角色
196
- - 已验证 Shipcheck 门控,零角色冲突
208
+ - 使用 Treatment Pack 角色的 7 个阶段的 staffed 处理流程
209
+ - 已证明 Shipcheck 门控有效,没有角色冲突
197
210
 
198
211
  **完整处理 FT-002**(studioflow)
199
- - 相同的处理包,结构不同的仓库(创意工作区与游戏)
200
- - 处理包可移植——无需合同修改
212
+ - 使用相同的 Treatment Pack,但仓库结构不同(创意工作区与游戏)
213
+ - Treatment Pack 可移植——无需修改合同
201
214
 
202
- **头脑风暴黄金测试**(MCP 服务器市场主题)
203
- - 9 个角色链,4 个分析师并行工作,交叉审查 + 反驳争议图
204
- - 提出了 4 个挑战,缩小了 3 个主张,1 个未解决——健康的压力,而不是僵局
205
- - 16+ 个跟踪链接,从渲染的工件追溯到真相层原子
206
- - 已验证完整的责任链:真相 → 原子 → 争议 → 综合 → 扩展 → 评估 → 渲染 → 跟踪
215
+ **头脑风暴黄金流程**(MCP 服务器市场主题)
216
+ - 9 个角色的链条,4 名分析师并行工作,交叉检查 + 反驳争议图
217
+ - 提出了 4 个挑战,缩小了 3 个主张范围,1 个未解决——健康的压力,而不是僵局
218
+ - 16+ 条追溯链接,从渲染的工件追溯到真相层原子
219
+ - 已证明完整的责任链:真相 → 原子 → 争议 → 合成 → 扩展 → 判断 → 渲染 → 追溯
207
220
 
208
221
  ## 核心属性
209
222
 
210
- 这些是不可谈判的。如果更改削弱了任何一个,请拒绝它。
223
+ 这些是不可谈判的。如果任何更改削弱了它们,请拒绝该更改。
211
224
 
212
- - 角色边界保持
225
+ - 角色边界保持不变
213
226
  - 审查具有约束力
214
227
  - 升级过程保持诚实
215
- - 数据包保持可测试
228
+ - 数据包可以进行测试
216
229
  - 可移植性需要上下文调整,而不是核心手术
217
230
 
218
231
  ## 项目结构
@@ -255,54 +268,54 @@ role-os/
255
268
 
256
269
  ## 安全性
257
270
 
258
- Role OS 仅在**本地**运行。它复制 Markdown 模板并将数据包/判决文件写入到你的仓库的 `.claude/` 目录。它不访问网络、处理密钥或收集遥测数据。没有危险的操作——所有文件写入默认使用“如果存在则跳过”。有关完整策略,请参阅 [SECURITY.md](SECURITY.md)。
271
+ Role OS **仅在本地运行**。它会复制 Markdown 模板并将数据包/结果文件写入到您的仓库的 `.claude/` 目录中。它不会访问网络、处理密钥或收集遥测数据。没有危险的操作——所有文件写入默认使用“如果存在则跳过”的方式。有关完整策略,请参阅 [SECURITY.md](SECURITY.md)。
259
272
 
260
273
  ## 操作系统
261
274
 
262
- | | 它的作用 | 状态 |
275
+ | 层级 | 它的作用是什么? | 状态 |
263
276
  |-------|-------------|--------|
264
277
  | **Routing** | 根据数据包内容对所有 61 个角色进行评分,解释建议,评估置信度 | ✓ 已发布 |
265
- | **Chain builder** | 从评分后的角色中组装出按阶段排序的链,偏向于数据包类型,而不是模板锁定 | ✓ 已发布 |
278
+ | **Chain builder** | 从已评分的角色中组装出按阶段排序的链条,侧重于数据包类型,而不是模板锁定 | ✓ 已发布 |
266
279
  | **Conflict detection** | 四次验证:硬冲突、序列、冗余、覆盖差距。修复建议。 | ✓ 已发布 |
267
- | **Escalation** | 自动将阻塞/拒绝/拆分的工作路由到正确的解决者,并提供理由 + 所需的工件 | ✓ 已发布 |
268
- | **Evidence** | 具有角色意识的结构化证据,包含在判决中。充分性检查。12 种证据类型。 | ✓ 已发布 |
269
- | **Dispatch** | multi-claude 生成执行清单。每个角色的工具配置文件、系统提示、预算。 | ✓ 已发布 |
270
- | **Trials** | 完整的测试已完成:30/30 个黄金任务 + 5/5 个负面测试。7 个包测试已完成。 | ✓ 已完成 |
271
- | **Team Packs** | 10 个经过校准的包,具有自动选择、不匹配保护和自由路由备用方案。 | ✓ 已发布 |
272
- | **Outcome calibration** | 记录运行结果,根据结果调整包/角色权重,调整置信度阈值。 | ✓ 已发布 |
280
+ | **Escalation** | 自动将被阻止/拒绝/拆分的工作路由到正确的解决者,并提供理由 + 所需的工件 | ✓ 已发布 |
281
+ | **Evidence** | 基于角色的结构化证据,包含在结果中。充分性检查。12 种证据类型。 | ✓ 已发布 |
282
+ | **Dispatch** | 生成用于 multi-claude 的执行清单。每个角色的工具配置文件、系统提示和预算。 | ✓ 已发布 |
283
+ | **Trials** | 完整的角色阵容已得到验证:30/30 个黄金任务 + 5/5 个负面测试。7 个包试验完成。 | ✓ 已完成 |
284
+ | **Team Packs** | 10 个经过校准的包,具有自动选择、不匹配保护和自由路由回退功能。 | ✓ 已发布 |
285
+ | **Outcome calibration** | 记录运行结果,根据结果调整包/角色权重,并调整置信度阈值。 | ✓ 已发布 |
273
286
  | **Mixed-task decomposition** | 检测复合工作,将其拆分为子数据包,分配包,并保留依赖关系。 | ✓ 已发布 |
274
- | **Composite execution** | 以依赖顺序运行子数据包,并进行工件传递、分支恢复和综合。 | ✓ 已发布 |
275
- | **Adaptive replanning** | 在运行过程中,范围更改、发现或新的需求会更新计划,而无需重新启动。 | ✓ 已发布 |
276
- | **Session spine** | `roleos init claude` 创建 CLAUDE.md、/roleos-route、/roleos-review、/roleos-status。`roleos doctor` 验证连接。路由卡证明参与度。 | ✓ 已发布 |
287
+ | **Composite execution** | 按照依赖顺序运行子数据包,进行工件传递、分支恢复和综合处理。 | ✓ 已发布 |
288
+ | **Adaptive replanning** | 在运行时对范围更改、发现或新需求进行更新,而无需重新启动计划。 | ✓ 已发布 |
289
+ | **Session spine** | `roleos init claude` 会生成 CLAUDE.md、/roleos-route、/roleos-review、/roleos-status 文件。`roleos doctor` 验证连接。路由卡证明参与度。 | ✓ 已发布 |
277
290
  | **Hook spine** | 5 个生命周期钩子(SessionStart、PromptSubmit、PreToolUse、SubagentStart、Stop)。建议性强制执行:路由卡提醒、写入工具门控、子代理角色注入、完成审计。 | ✓ 已发布 |
278
- | **Artifact spine** | 每个角色的工件合同。包交接合同。结构验证。链完整性检查。下游角色永远不会猜测他们收到了什么。 | ✓ 已发布 |
279
- | **Mission library** | 9 个命名任务(feature-ship、bugfix、treatment、docs-release、security-hardening、research-launch、brainstorm、deep-audit、dogfood-swarm)。每个任务都声明包、角色链、工件流程、升级分支、诚实的部分定义。 | ✓ 已发布 |
280
- | **Mission runner** | 创建运行,逐步执行,并使用跟踪状态完成/失败,并进行诚实报告。阻塞步骤传播、链外升级警告、最后步骤重新打开。 | ✓ 已发布 |
281
- | **Unified entry** | `roleos start` 自动决定任务与包或自由路由。具有置信度分数、替代方案和复合检测的备用方案。 | ✓ 已发布 |
282
- | **Persistent runs** | `roleos run` 创建基于磁盘的运行。`resume`、`next`、`explain`、`complete`、`fail`。干预措施:重新路由、升级、重试、阻止、重新打开。步骤本地指导。摩擦测量。 | ✓ 已发布 |
283
- | **Brainstorm** | 双层架构:真相(角色原生模式、来源原子、交叉审查争议图)+ 渲染(5 种不同的声音、词汇禁令、辩论记录)。跟踪链接证明每个渲染的声明都映射到真相原子。黄金测试已完成。 | ✓ 已发布 |
284
- | **Deep Audit** | 清单驱动的代码仓库审计:将代码仓库分解为组件,从依赖关系图中调度 N 名审计员 + M 名测试真实性审计员 + K 名接口审计员,并将结果综合成排序后的结论和行动计划。动态调度会根据代码仓库的大小进行调整(公式为 2N + K + 3)。在每个步骤中,都会进行运行器原生验证。 | ✓ 已发布 |
285
- | **Dogfood Swarm** | 多阶段收敛:三个健康阶段(漏洞/安全积极改进人性化),然后进行功能交付。独占的文件所有权,在每个阶段之后进行构建门控,用户检查点。领域自动检测会生成清单。证据桥接至内部测试实验室。 | ✓ 已发布 |
291
+ | **Artifact spine** | 每个角色的工件合同。包交接合同。结构验证。链完整性检查。下游角色永远不会猜测他们收到的内容。 | ✓ 已发布 |
292
+ | **Mission library** | 9 个命名的任务(功能发布、错误修复、处理、文档发布、安全加固、研究启动、头脑风暴、深度审计、内部测试)。每个任务都声明了包、角色链、工件流程、升级分支以及诚实的部分定义。 | ✓ 已发布 |
293
+ | **Mission runner** | 创建运行,逐步执行并跟踪状态,完整/失败时进行诚实的报告。阻塞步骤的传播、链外升级警告、最后一步的重新打开。 | ✓ 已发布 |
294
+ | **Unified entry** | `roleos start` 会自动决定任务与包或自由路由之间的关系。带有置信度评分、替代方案和组合检测的回退层级。 | ✓ 已发布 |
295
+ | **Persistent runs** | `roleos run` 创建基于磁盘的运行。`resume`(恢复)、`next`(下一步)、`explain`(解释)、`complete`(完成)、`fail`(失败)。干预措施:重新路由、升级、重试、阻止、重新打开。步骤本地指导。摩擦力测量。 | ✓ 已发布 |
296
+ | **Brainstorm** | 双层架构:真相(角色原生模式、来源原子、交叉审查争议图)+ 渲染(5 个不同的声音、词汇禁令、辩论记录)。跟踪链接证明每个渲染的声明都映射到一个真相原子。黄金运行已验证。 | ✓ 已发布 |
297
+ | **Deep Audit** | 基于清单的代码仓库审计:将代码仓库分解为组件,分派 N 个审核员 + M 个测试真相审核员 + K 个接口审核员,从依赖关系图中进行合成,生成排序后的结论和行动计划。动态分派的规模与代码仓库的大小成比例(公式为 2N + K + 3)。在每个步骤中都进行工件验证,并且是针对运行器的原生支持。 | ✓ 已发布 |
298
+ | **Dogfood Swarm** | 多阶段收敛:三个健康阶段(错误/安全主动人性化),然后是功能发布。独占的文件所有权、每个阶段后的构建门控、用户检查点。领域自动检测生成清单。证据桥接至内部测试实验室。 | ✓ 已发布 |
286
299
 
287
300
  ## 9 个任务
288
301
 
289
302
  | 任务 | 包 | 角色 | 何时使用 |
290
303
  |---------|------|-------|-------------|
291
- | `feature-ship` | 功能 | 5 | 完整的功能交付:范围 → 规范 → 实现 → 测试 → 审查 |
292
- | `bugfix` | 错误修复 | 4 | 诊断根本原因,修复,测试,验证 |
293
- | `treatment` | 处理 | 4 | 代码检查 + 优化 + 文档 + CI 验证 + 审查 |
304
+ | `feature-ship` | 功能发布 | 5 | 完整的特性交付:范围 → 规范 → 实现 → 测试 → 审查 |
305
+ | `bugfix` | 错误修复 | 4 | 诊断根本原因、修复、测试、验证 |
306
+ | `treatment` | 处理 | 4 | 代码检查 + 润色 + 文档 + CI 验证 + 审查 |
294
307
  | `docs-release` | 文档 | 2 | 编写/更新文档,发布说明 |
295
- | `security-hardening` | 安全 | 4 | 威胁建模,审计,修复漏洞,重新审计,验证 |
296
- | `research-launch` | 研究 | 4 | 提出问题,进行研究,记录发现,做出决定 |
297
- | `brainstorm` | 头脑风暴 | 9 | 结构化的多视角探究,具有可追溯的异议和结论 |
298
- | `deep-audit` | 深度审计 | 5(等级) | 清单驱动的代码仓库审计——工作者数量根据代码仓库图通过动态调度进行调整 |
299
- | `dogfood-swarm` | 集群 | 8(等级) | 多阶段收敛:健康 A → 健康 B → 健康 C → 功能 → 最终综合 |
308
+ | `security-hardening` | 安全 | 4 | 威胁建模、审计、修复漏洞、重新审计、验证 |
309
+ | `research-launch` | 研究 | 4 | 提出问题、进行研究、记录发现、决定 |
310
+ | `brainstorm` | 头脑风暴 | 9 | 结构化的多视角探究,具有可追溯的意见分歧和结论。 |
311
+ | `deep-audit` | 深度审计 | 5(等级) | 基于清单的代码仓库审计——工作者数量通过动态分派与代码仓库图成比例。 |
312
+ | `dogfood-swarm` | 内部测试 | 8(等级) | 多阶段收敛:健康 A → 健康 B → 健康 C → 功能 → 最终合成 |
300
313
 
301
- 每个任务都包含诚实且部分完成的定义——当工作停滞时,系统会记录已完成的内容和剩余内容,而不是虚报完成情况。
314
+ 每个任务都包含诚实的部分定义——当工作停滞时,系统会记录已完成的内容和剩余内容,而不是虚报完成情况。
302
315
 
303
316
  ### 头脑风暴任务
304
317
 
305
- 不是“AI 头脑风暴”。头脑风暴任务是**在法律框架下的专业角色,具有可追溯的异议和产生结论的输出。**
318
+ 不是“AI 头脑风暴”。头脑风暴任务是**在法律框架下的专业角色,具有可追溯的意见分歧和产生结论的输出。**
306
319
 
307
320
  ```bash
308
321
  roleos run "explore product directions for a developer tool discovery platform"
@@ -310,19 +323,19 @@ roleos run "explore product directions for a developer tool discovery platform"
310
323
  # Chain: 4 Analysts (parallel) → Normalize → Cross-Examine → Rebut → Synthesize → Expand → Judge
311
324
  ```
312
325
 
313
- **使其与众不同之处:**
326
+ **它与众不同之处:**
314
327
 
315
- - **第一层(真相):** 四位分析师输出角色相关的模式(上下文图、用户价值图、机制图、定位图)——而不是共享的散文。每个角色都强制执行盲点:禁止的短语、禁止的主张类型、过滤的输入分区。原子携带来源信息。定向的交叉询问图会产生有针对性的挑战。原始分析师在压力下进行辩护、缩小范围或撤回。
328
+ - **第一层(真相):** 四位分析师发出角色原生模式(上下文图、用户价值图、机制图、定位图),而不是共享的散文。每个角色都强制执行盲点:禁止使用的短语、禁止的主张类型、过滤后的输入分区。原子携带来源信息。一个有向的交叉审查图生成针对性的挑战。原始分析师在压力下进行辩护、缩小范围或撤回。
316
329
 
317
- - **第二层(呈现):** 五种不同的声音(边界备忘录、现场笔记、系统草图、主张摘要、交叉询问记录),并具有词汇限制,以防止声音融合。综合会消耗真相,而不是呈现的散文。两层始终可用。
330
+ - **第二层(渲染):** 五个不同的声音(边界备忘录、现场笔记、系统草图、主张摘要、交叉审查记录),并带有词汇禁令,以防止声音融合。合成消耗真相,而不是渲染的散文。两层始终可用。
318
331
 
319
- - **责任链:** 每个呈现的句子都可以追溯到真相层中的原子。综合方向引用原子。交叉询问的目标是真实的声明 ID。争议图是产品,而不是散文。
332
+ - **责任链:** 每个渲染的句子都可以追溯到真相层的原子。合成方向引用原子。交叉审查的目标是真实的声明 ID。争议图是产品,而不是散文。
320
333
 
321
- **已验证:** v0.4 黄金运行——已验证完整的责任链。有关完整工件链,请参见 [`examples/golden-run.md`](examples/golden-run.md)
334
+ **已验证:** v0.4 黄金运行——完整的责任链已验证。请参阅 [`examples/golden-run.md`](examples/golden-run.md) 以获取完整的工件链。
322
335
 
323
336
  ### 深度审计任务
324
337
 
325
- 不是表面扫描。深度审计任务**将代码仓库分解为有界组件,并根据代码仓库自身的依赖关系图调度专门的审计员。**
338
+ 不是表面扫描。深度审计任务**将代码仓库分解为有界组件,并根据代码仓库自身的依赖关系图分派专家审核员。**
326
339
 
327
340
  ```bash
328
341
  roleos run "deep audit this repo" --manifest=audit-manifest.json
@@ -330,19 +343,19 @@ roleos run "deep audit this repo" --manifest=audit-manifest.json
330
343
  # Steps: Component Auditor ×6 + Test Truth Auditor ×6 + Seam Auditor ×8 + Synthesizer + Action Plan + Critic = 23 steps
331
344
  ```
332
345
 
333
- **使其与众不同之处:**
346
+ **它与众不同之处:**
334
347
 
335
- - **动态调度**——工作者数量不是固定的。一个包含 10 个组件和 5 个边界集群的代码仓库会产生 28 个步骤(2×10 + 5 + 3)。一个包含 3 个组件的代码仓库会产生 12 个步骤。缩放公式为 `2N + K + 3`,其中 N = 组件,K = 边界。
336
- - **清单驱动的包**——`audit-manifest.json` 定义组件(包含文件路径、行数、描述)和边界(从/到,包含接口描述)。每个审计员仅接收其包。
337
- - **四种角色原型**——组件审计员(每个模块的代码真相)、测试真实性审计员(证明测试与现有测试)、接口审计员(来自依赖关系图的集成边界)、审计综合器(来自所有包的排序结论 + 行动计划)。
338
- - **在每个步骤中进行工件验证**——`validateArtifact()` 在两个执行路径中的每个步骤完成后都会触发。结果附加到步骤对象。系统知道每个工件是否满足其合同。
339
- - **诚实且部分完成**——当预算或范围阻止完成时,每个组件的发现都是单独有效的。系统会根据已完成的内容进行综合,而不是虚报完全覆盖。
348
+ - **动态分派:** 工作者数量不是固定的。一个包含 10 个组件和 5 个边界集群的代码仓库会产生 28 个步骤(2×10 + 5 + 3)。一个包含 3 个组件的代码仓库会产生 12 个步骤。缩放公式为 `2N + K + 3`,其中 N = 组件数,K = 边界数。
349
+ - **基于清单的包:** 一个 `audit-manifest.json` 定义了组件(带有文件路径、行数、描述)和边界(从/到,带有接口描述)。每个审核员只收到自己的包。
350
+ - **四种角色原型:** 组件审核员(每个模块的代码真相)、测试真相审核员(证明的测试与存在的测试)、接口审核员(来自依赖关系图的集成边界)、审计合成器(所有包的排序结论 + 行动计划)。
351
+ - **在每个步骤中进行工件验证:** `validateArtifact()` 在两个执行路径中的每个步骤完成后都会触发。结果附加到步骤对象。系统知道每个工件是否满足其合同。
352
+ - **诚实的部分:** 当预算或范围阻止完成时,每个组件的发现都是单独有效的。系统会从已完成的内容中进行合成,而不是虚报完整的覆盖范围。
340
353
 
341
- **已验证:** 运行器原生证明运行——针对真实清单进行了 18 个测试,并验证了完整的生命周期,包括升级重新打开和部分失败。已验证 3/6/10/15 组件清单的缩放公式。
354
+ **已验证:** 针对运行器的原生证明运行——对真实的清单进行了 18 个测试,并验证了包括升级重新打开和部分失败在内的完整生命周期。缩放公式已针对 3/6/10/15 组件的清单进行验证。
342
355
 
343
- ### 内部测试集群任务
356
+ ### 内部测试任务
344
357
 
345
- 不是一次性代码检查器。内部测试集群任务**运行一个多阶段收敛协议,该协议通过三个健康阶段和迭代的功能交付,将代码仓库从“可用”状态转变为“生产就绪”状态。**
358
+ 这不是一个单次检查的静态代码分析工具。该“蜂群”任务**运行一个多阶段收敛协议,通过三个健康阶段和迭代的功能交付,将仓库从“可工作”状态提升到“生产就绪”状态。**
346
359
 
347
360
  ```bash
348
361
  roleos swarm
@@ -351,20 +364,20 @@ roleos swarm
351
364
  # Domain agents: 3-5 parallel per wave (exclusive file ownership)
352
365
  ```
353
366
 
354
- **使其与众不同之处:**
367
+ **它与众不同之处:**
355
368
 
356
- - **三阶段健康检查**——第一阶段修复漏洞和安全问题(循环执行,直到 0 个 CRITICAL 级别 + 0 个 HIGH 级别的问题)。第二阶段应用主动加固措施(用户审核结果)。第三阶段优化代码库——提供帮助用户的错误消息、重新连接反馈、加载状态和可访问性。每个阶段都是一个独立的视角,而不是重复的扫描。
357
- - **独占文件所有权**——每个域代理通过 `swarm-manifest.json` 拥有特定的文件。没有两个代理编辑同一个文件。没有合并冲突。没有协调开销。
358
- - **构建门禁**——每次迭代后,必须通过代码风格检查、类型检查和测试。系统自动检测构建系统(Node、Rust、Python、Go),并运行相应的命令。
359
- - **用户检查点**——健康检查 B 阶段和功能测试阶段需要在执行前获得明确的用户批准。系统呈现结果,用户决定构建什么。
360
- - **迭代收敛**——各阶段与迭代循环交替进行,直到满足退出条件或达到最大迭代次数。每个迭代都从头开始重新审核,以发现之前修复引入的回归问题。
361
- - **域自动检测**——`roleos swarm manifest --generate` 检测仓库类型(CLI、Web、桌面应用、MCP、单仓库),并生成不重叠的域分配。
369
+ - **三阶段健康检查**——第一阶段修复错误和安全问题(循环直到 0 个 CRITICAL + 0 个 HIGH)。第二阶段应用主动加固措施(用户审查结果)。第三阶段使代码库更人性化——提供帮助用户的错误消息、重新连接反馈、加载状态、可访问性。每个阶段都是一个不同的视角,而不是重复相同的扫描。
370
+ - **独占文件所有权**——每个领域代理通过 `swarm-manifest.json` 拥有特定的文件。没有两个代理编辑相同的文件。不会发生合并冲突。无需协调开销。
371
+ - **构建门禁**——每次迭代后,必须通过代码风格检查 + 类型检查 + 测试。系统自动检测构建系统(Node、Rust、Python、Go),并运行相应的命令。
372
+ - **用户检查点**——健康检查 B 阶段和功能交付需要明确的用户批准才能执行。系统会呈现结果,用户决定要构建的内容。
373
+ - **迭代收敛**——各阶段与迭代循环交替进行,直到满足退出条件或达到最大迭代次数。每个迭代都会从头开始重新审核,以捕获先前修复引入的回归问题。
374
+ - **领域自动检测**——`roleos swarm manifest --generate` 检测仓库类型(CLI、Web、桌面应用、MCP、单体仓库),并生成不重叠的领域分配。
362
375
 
363
- **已验证:** claude-collaborate2026-03-28)——35 个测试增加到 129 个,修复了 106 个健康问题,发布了 v1.1.0 版本。协议 v2.0,包含 9 个阶段。
376
+ **已验证:** claude-collaborate (2026-03-28) 35→129 个测试,修复了 106 个健康问题,发布了 v1.1.0 版本。协议 v2.0 包含 9 个阶段。
364
377
 
365
378
  ## 状态
366
379
 
367
- 稳定且已发布。请参阅 [CHANGELOG](CHANGELOG.md),以获取完整的版本历史记录以及每个版本中发生的变化。
380
+ 稳定且已发布。请参阅 [CHANGELOG](CHANGELOG.md) 以获取完整的版本历史记录以及每个版本中发生的变化。
368
381
 
369
382
  ## 许可证
370
383
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "role-os",
3
- "version": "2.7.1",
3
+ "version": "2.9.0",
4
4
  "description": "Role OS — a multi-Claude operating system where 61 specialized roles execute work through contracts, conflict detection, escalation, and structured evidence. 10 team packs, 9 missions including dogfood swarm (multi-pass convergence), deep audit with manifest-scaled dynamic dispatch, and brainstorm with traceable disagreement.",
5
5
  "homepage": "https://mcp-tool-shop-org.github.io/role-os/",
6
6
  "bugs": {
package/src/dispatch.mjs CHANGED
@@ -18,6 +18,7 @@ import { join, resolve } from "node:path";
18
18
  import { resolveBlocked, resolveRejected } from "./escalation.mjs";
19
19
  import { TOOL_PROFILES } from "./tool-profiles.mjs";
20
20
  import { renderKnowledgeBlock, knowledgeManifestSummary } from "./knowledge/render-knowledge-block.mjs";
21
+ import { renderDossierBlock } from "./dossier-block.mjs";
21
22
 
22
23
  // ── Default role config ─────────────────────────────────────────────────────
23
24
 
@@ -45,6 +46,7 @@ export const EXEC_STATES = [
45
46
 
46
47
  function buildRolePrompt(roleName, packetContent, chainContext, packetKnowledge) {
47
48
  const knowledgeBlock = renderKnowledgeBlock(packetKnowledge);
49
+ const dossierBlock = renderDossierBlock(roleName);
48
50
 
49
51
  return `You are operating as ${roleName} in a Role-OS managed chain.
50
52
 
@@ -58,7 +60,7 @@ ${packetContent}
58
60
  You are step ${chainContext.stepNumber} of ${chainContext.totalSteps} in this chain.
59
61
  ${chainContext.previousRole ? `Previous role: ${chainContext.previousRole} (${chainContext.previousStatus})` : "You are the first role in this chain."}
60
62
  ${chainContext.nextRole ? `Next role: ${chainContext.nextRole}` : "You are the last role before Critic review."}
61
- ${knowledgeBlock ? `\n${knowledgeBlock}\n` : ""}
63
+ ${knowledgeBlock ? `\n${knowledgeBlock}\n` : ""}${dossierBlock ? `\n${dossierBlock}\n` : ""}
62
64
  ## Handoff Requirements
63
65
  When you finish, produce a structured handoff:
64
66
  1. Summary of what you did
@@ -0,0 +1,74 @@
1
+ /**
2
+ * dossier-block.mjs — opt-in "Operating Posture" prompt block from a role's dossier.
3
+ *
4
+ * Mirrors render-knowledge-block.mjs: a pure function returning string | null. When a role
5
+ * has a dossier (src/role-dossiers.json, compiled by dossier/build-runtime.mjs), it injects
6
+ * that role's disposition behavioral instruction + a posture line derived from its tuned
7
+ * six-axis aptitudes. No dossier -> null -> the prompt is byte-identical to before. This is
8
+ * how a role's character sheet actually configures the role at dispatch time.
9
+ */
10
+ import { dirname, join } from "node:path";
11
+ import { fileURLToPath } from "node:url";
12
+ import { readFileSafe } from "./fs-utils.mjs";
13
+
14
+ const HERE = dirname(fileURLToPath(import.meta.url));
15
+ const AXES = ["rigor", "pace", "range", "skepticism", "autonomy", "candor"];
16
+
17
+ const HIGH = {
18
+ rigor: "reads exhaustively and demands quoted evidence",
19
+ pace: "moves fast with few iterations",
20
+ range: "explores divergent options",
21
+ skepticism: "challenges hard and withholds acceptance until proof is shown",
22
+ autonomy: "runs to completion before escalating",
23
+ candor: "explains its reasoning and frames choices contrastively",
24
+ };
25
+ const LOW = {
26
+ rigor: "works at a deliberate skim",
27
+ pace: "works deliberately, iterating",
28
+ range: "converges and executes the brief as given",
29
+ skepticism: "extends good faith and takes the contract at face value",
30
+ autonomy: "escalates early when uncertain",
31
+ candor: "stays terse and results-only",
32
+ };
33
+
34
+ let _dossiers = null;
35
+ function loadDossiers() {
36
+ if (_dossiers) return _dossiers;
37
+ const raw = readFileSafe(join(HERE, "role-dossiers.json"));
38
+ if (!raw) { _dossiers = {}; return _dossiers; }
39
+ try { _dossiers = JSON.parse(raw); } catch { _dossiers = {}; }
40
+ return _dossiers;
41
+ }
42
+
43
+ function toId(roleName) {
44
+ return String(roleName || "").toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "");
45
+ }
46
+
47
+ function postureLine(aptitudes) {
48
+ if (!aptitudes) return "";
49
+ const parts = [];
50
+ for (const ax of AXES) {
51
+ const v = aptitudes[ax];
52
+ if (v >= 4) parts.push(HIGH[ax]);
53
+ else if (v <= 1) parts.push(LOW[ax]);
54
+ }
55
+ return parts.join("; ");
56
+ }
57
+
58
+ /**
59
+ * Render the Operating Posture block for a role, or null if it has no dossier.
60
+ * @param {string} roleName display name, e.g. "Backend Engineer"
61
+ * @returns {string|null}
62
+ */
63
+ export function renderDossierBlock(roleName) {
64
+ const d = loadDossiers()[toId(roleName)];
65
+ if (!d) return null;
66
+ const dispo = d.disposition || {};
67
+ const lines = ["## Operating Posture"];
68
+ if (dispo.active && dispo.prompt_delta) {
69
+ lines.push(`Disposition — **${dispo.active}**: ${dispo.prompt_delta}`);
70
+ }
71
+ const posture = postureLine(d.aptitudes);
72
+ if (posture) lines.push(`Tuned profile: ${posture}.`);
73
+ return lines.length > 1 ? lines.join("\n") : null;
74
+ }