M3(2/5): human-tool 与 release —— 卡协议与放行门
human-tool(L3): - 三规矩机检:调用必附上下文(裸调用拒发)/ 回传即留痕 / 完成只出自放行通过 - 工单两模式 + 对话卡族的形态校验与回传校验;驳回必附意见;补全卡「没法填」旁路; 决策卡自定义收尾项必附理由;已答不得再答(只增不改) - 到达面两路(负责人 → 任务对话流;他人 → 系统消息);驳回重答 = 新卡实例、原卡闭合 - 调人预算由基座在环外强制;落地失败卡 = 执行工单的 preset release(L4): - 落地预检五项(入参 schema / 工具可用与授权 / 连接可达 / 目标预校验 / 数据冲突) - 预检全过才发验收工单,卡面即已验证的动作清单;不过即打回环内,不发卡 - 放行写合并 + 幂等落地(任务 × 意向);落地收敛才发射输出口; 受阻走落地失败卡且 emittedPorts 恒空;已成动作留存不回滚 215 个测试通过,门禁五道全绿 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KeDBx2PHLavbURXB8LJJ7m
This commit is contained in:
co-authored by
Claude Opus 5
parent
146e9bbfad
commit
561a2474ae
@@ -0,0 +1,33 @@
|
||||
# module: human-tool
|
||||
|
||||
职责: 人类工具的卡协议与回传校验:工单两模式(执行 / 验收)+ 对话卡族(决策 / 补全 / 评价)、
|
||||
到达面两路、跨人卡、驳回重答、调人预算的环外强制、落地失败卡的预置形态
|
||||
不负责: 卡内容由谁决定(loop 临场判定 / flow 步序声明给定,见范式引擎)、
|
||||
落地预检与落地执行(见 release)、消息的存放与呈现(见 message,经 `MessageOutbox` 端口)
|
||||
|
||||
公开出口: index.ts
|
||||
- 类型:`HumanToolService` `IssueContext` `IssuedWorkOrder` `IssuedChatCard` `ReplyOutcome`
|
||||
`ArrivalSurface` `CardViolation`
|
||||
- 错误:`BareCallError` `ReplyRejectedError` `HumanCallBudgetExceededError`
|
||||
- 端口类型:`CardStore` `MessageOutbox` `MemoryRecorder` `HumanEventPublisher` `Clock` `IdGenerator`
|
||||
- 用例工厂:`createHumanToolService(deps): HumanToolService`
|
||||
- 纯函数:`checkWorkOrder` `checkChatCard` `checkWorkOrderReply` `checkChatCardReply`
|
||||
`arrivalOf` `producesCompletion` `allCriteriaGreen`
|
||||
- adapter:`createCardStore`;Drizzle 表:`workOrderTable` `chatCardTable`
|
||||
|
||||
层级: L3(编码规范 §4)
|
||||
依赖: @contracts;@shared/db;port:`MessageOutbox`(app 注入 message)、
|
||||
`MemoryRecorder`(app 注入 memory)、`HumanEventPublisher`(app 注入 event)
|
||||
被依赖: release(落地失败卡)、loop-engine、flow-engine、task、org(停用前置检查的待答卡)、app
|
||||
|
||||
不变量(人类工具三规矩,OS 05):
|
||||
- **调用必附上下文**:`basis` 为空即 `BareCallError` —— 无上下文的裸调用基座拒发
|
||||
- **回传即留痕**:每次回传都写任务记忆并以人事件抛回任务,无静默通道
|
||||
- **完成只出自放行通过**:`producesCompletion` 仅在验收工单 `verdict === 'pass'` 时为真;
|
||||
判据全绿只是可提交,认账永远是人的动作
|
||||
- **驳回必附意见**:驳回而无意见即 `ReplyRejectedError`
|
||||
- **只增不改**:已回传的工单 / 已作答的卡不得再答;驳回重答是新卡实例,原卡闭合
|
||||
- **到达面两路**:收件人 = 负责人 → 任务对话流;否则 → 系统消息(跨人卡不是责任转移)
|
||||
- **调人预算环外强制**:超过契约声明的打扰上限即 `HumanCallBudgetExceededError`,
|
||||
活动代码无从自查自守
|
||||
- **落地失败卡是执行工单的 preset**,不构成第五种卡
|
||||
Reference in New Issue
Block a user