@sema-agent/client-core 0.97.0 → 0.98.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.
Files changed (281) hide show
  1. package/CHANGELOG.md +429 -0
  2. package/README.md +74 -36
  3. package/dist/adapt/arms.d.ts +1 -0
  4. package/dist/adapt/arms.js +128 -34
  5. package/dist/adapt/ids.d.ts +12 -1
  6. package/dist/adapt/ids.js +59 -8
  7. package/dist/adapt/instanceLedger.d.ts +50 -0
  8. package/dist/adapt/instanceLedger.js +147 -0
  9. package/dist/adapt/textStream.d.ts +1 -0
  10. package/dist/adapt/textStream.js +24 -7
  11. package/dist/adapt/toolCards.d.ts +27 -5
  12. package/dist/adapt/toolCards.js +39 -6
  13. package/dist/adapt/wireShapes.js +6 -2
  14. package/dist/adapt.d.ts +2 -0
  15. package/dist/adapt.js +8 -3
  16. package/dist/adapter/activeRunSelfHeal.d.ts +5 -0
  17. package/dist/adapter/activeRunSelfHeal.js +51 -28
  18. package/dist/adapter/downstream/eventToSdkMessage.d.ts +2 -5
  19. package/dist/adapter/downstream/eventToSdkMessage.js +27 -34
  20. package/dist/adapter/downstream/terminalToSdkResult.js +11 -4
  21. package/dist/adapter/downstream/turnUsageToModelUsage.d.ts +5 -2
  22. package/dist/adapter/downstream/turnUsageToModelUsage.js +2 -0
  23. package/dist/adapter/runStream.js +29 -13
  24. package/dist/adapter/types.d.ts +4 -4
  25. package/dist/agentSession/backgroundView.js +2 -1
  26. package/dist/agentSession/engineAgentRegistryRead.d.ts +2 -2
  27. package/dist/agentSession/engineAgentRegistryRead.js +12 -13
  28. package/dist/agentsWireCaps.d.ts +8 -6
  29. package/dist/agentsWireCaps.js +177 -162
  30. package/dist/approvalDecidedByCapability.d.ts +0 -4
  31. package/dist/approvalDecidedByCapability.js +0 -6
  32. package/dist/approvalsStreamLiveCapability.d.ts +0 -4
  33. package/dist/approvalsStreamLiveCapability.js +0 -6
  34. package/dist/assistantInbox.d.ts +34 -0
  35. package/dist/assistantInbox.js +118 -0
  36. package/dist/centerWiringCapability.js +9 -1
  37. package/dist/clientSlice.d.ts +0 -9
  38. package/dist/clientSlice.js +0 -3
  39. package/dist/cloudConfigWireCaps.d.ts +4 -2
  40. package/dist/cloudConfigWireCaps.js +81 -61
  41. package/dist/compensations.js +1 -1
  42. package/dist/connectorStatus.d.ts +21 -0
  43. package/dist/connectorStatus.js +112 -0
  44. package/dist/controlRouter.d.ts +14 -1
  45. package/dist/controlRouter.js +68 -17
  46. package/dist/coreValuePorts.d.ts +3 -3
  47. package/dist/decideReceipt.d.ts +2 -2
  48. package/dist/decideReceipt.js +5 -2
  49. package/dist/declared/supportFloorDeclared.js +3 -3
  50. package/dist/deviceExecutorManagementCapability.d.ts +0 -4
  51. package/dist/deviceExecutorManagementCapability.js +0 -6
  52. package/dist/deviceRebind.d.ts +49 -1
  53. package/dist/deviceRebind.js +221 -3
  54. package/dist/displayUntrusted.d.ts +1 -0
  55. package/dist/displayUntrusted.js +250 -76
  56. package/dist/engineAgentAbsence.d.ts +1 -1
  57. package/dist/engineAgentPanelStore.d.ts +5 -4
  58. package/dist/engineAgentPanelStore.js +3 -12
  59. package/dist/engineCapReader.d.ts +0 -4
  60. package/dist/engineCapReader.js +1 -5
  61. package/dist/engineCapsCache.d.ts +4 -0
  62. package/dist/engineCapsCache.js +17 -12
  63. package/dist/engineClosedSets.d.ts +1 -0
  64. package/dist/engineClosedSets.js +4 -1
  65. package/dist/engineErrorCodes.d.ts +9 -2
  66. package/dist/engineErrorCodes.js +9 -1
  67. package/dist/engineIdentity.d.ts +1 -0
  68. package/dist/engineIdentity.js +8 -0
  69. package/dist/engineRowRef.d.ts +28 -0
  70. package/dist/engineRowRef.js +111 -0
  71. package/dist/engineSessionMessages.d.ts +67 -0
  72. package/dist/engineSessionMessages.js +364 -0
  73. package/dist/engineToolDirectory.d.ts +18 -0
  74. package/dist/engineToolDirectory.js +85 -0
  75. package/dist/engineUrl.d.ts +18 -0
  76. package/dist/engineUrl.js +52 -0
  77. package/dist/env/uiLanguage.d.ts +9 -0
  78. package/dist/env/uiLanguage.js +35 -0
  79. package/dist/eventLeg.d.ts +92 -0
  80. package/dist/eventLeg.js +285 -0
  81. package/dist/executionLaneCapability.d.ts +0 -4
  82. package/dist/executionLaneCapability.js +3 -16
  83. package/dist/fileHistoryCaptureCapability.d.ts +0 -4
  84. package/dist/fileHistoryCaptureCapability.js +5 -7
  85. package/dist/fleet/fleetLedger.d.ts +0 -3
  86. package/dist/fleet/fleetLedger.js +21 -36
  87. package/dist/fleet/fleetProjection.d.ts +2 -2
  88. package/dist/fleet/fleetProjection.js +10 -8
  89. package/dist/frameBinding.d.ts +5 -0
  90. package/dist/frameBinding.js +23 -0
  91. package/dist/gateFailureCodes.d.ts +2 -0
  92. package/dist/gateFailureCodes.js +15 -0
  93. package/dist/gateOutcome.d.ts +3 -1
  94. package/dist/gateOutcome.js +25 -6
  95. package/dist/gateVocabulary.d.ts +5 -0
  96. package/dist/gateVocabulary.js +64 -2
  97. package/dist/generated/engineAskFaceTables.js +2 -2
  98. package/dist/generated/engineFactTables.d.ts +6 -3
  99. package/dist/generated/engineFactTables.js +22 -4
  100. package/dist/generated/engineNoticeTables.js +9 -0
  101. package/dist/generated/toolNameTables.d.ts +1 -0
  102. package/dist/generated/toolNameTables.js +1 -0
  103. package/dist/hitl/allowRuleShadow.d.ts +6 -1
  104. package/dist/hitl/allowRuleShadow.js +21 -17
  105. package/dist/hitl/approvalCardReading.d.ts +15 -0
  106. package/dist/hitl/approvalCardReading.js +154 -0
  107. package/dist/hitl/approvalCardReasons.d.ts +13 -0
  108. package/dist/hitl/approvalCardReasons.js +120 -0
  109. package/dist/hitl/approvalHolds.d.ts +47 -15
  110. package/dist/hitl/approvalHolds.js +134 -28
  111. package/dist/hitl/approvalResolution.d.ts +51 -26
  112. package/dist/hitl/approvalResolution.js +86 -122
  113. package/dist/hitl/approvalsFeed.js +6 -18
  114. package/dist/hitl/askClassPair.d.ts +2 -0
  115. package/dist/hitl/askClassPair.js +1 -0
  116. package/dist/hitl/askGateWire.d.ts +20 -2
  117. package/dist/hitl/askGateWire.js +49 -1
  118. package/dist/hitl/askParkRowRouting.d.ts +5 -0
  119. package/dist/hitl/askParkRowRouting.js +32 -1
  120. package/dist/hitl/askSettlementLine.d.ts +18 -0
  121. package/dist/hitl/askSettlementLine.js +79 -0
  122. package/dist/hitl/automaticAnswerVerdict.d.ts +1 -1
  123. package/dist/hitl/automaticAnswerVerdict.js +21 -5
  124. package/dist/hitl/crashConverged.d.ts +11 -20
  125. package/dist/hitl/crashConverged.js +56 -0
  126. package/dist/hitl/crashConvergedNotice.d.ts +3 -1
  127. package/dist/hitl/crashConvergedNotice.js +48 -11
  128. package/dist/hitl/decisionConflict.js +3 -10
  129. package/dist/hitl/decisionRefusal.d.ts +40 -1
  130. package/dist/hitl/decisionRefusal.js +199 -42
  131. package/dist/hitl/frameRouter.d.ts +5 -2
  132. package/dist/hitl/frameRouter.js +20 -16
  133. package/dist/hitl/gateLedger.d.ts +2 -0
  134. package/dist/hitl/gateLedger.js +50 -13
  135. package/dist/hitl/hitlBridge.d.ts +1 -2
  136. package/dist/hitl/hitlBridge.js +10 -7
  137. package/dist/hitl/livePendingAsk.d.ts +3 -3
  138. package/dist/hitl/livePendingAsk.js +7 -18
  139. package/dist/hitl/parkResolver.d.ts +2 -24
  140. package/dist/hitl/parkResolver.js +61 -97
  141. package/dist/hitl/persistedRulesWire.d.ts +24 -0
  142. package/dist/hitl/persistedRulesWire.js +122 -2
  143. package/dist/hitl/planReviewWire.d.ts +26 -13
  144. package/dist/hitl/planReviewWire.js +112 -78
  145. package/dist/hitl/refusedToolNameProse.d.ts +0 -1
  146. package/dist/hitl/refusedToolNameProse.js +0 -3
  147. package/dist/hitl/replayedApproval.d.ts +4 -3
  148. package/dist/hitl/replayedApproval.js +7 -4
  149. package/dist/hitl/sessionPolicyDeliverable.js +2 -4
  150. package/dist/hitl/sessionPolicyWire.d.ts +32 -20
  151. package/dist/hitl/sessionPolicyWire.js +162 -52
  152. package/dist/hitl/standingRows.d.ts +20 -2
  153. package/dist/hitl/standingRows.js +69 -8
  154. package/dist/hitl/toolApprovalWire.d.ts +87 -152
  155. package/dist/hitl/toolApprovalWire.js +591 -380
  156. package/dist/hookMatcherVerdict.d.ts +6 -1
  157. package/dist/hookMatcherVerdict.js +14 -7
  158. package/dist/hooksWireCaps.d.ts +2 -2
  159. package/dist/hooksWireCaps.js +59 -55
  160. package/dist/i18n/messages.en.d.ts +121 -0
  161. package/dist/i18n/messages.en.js +119 -0
  162. package/dist/i18n/messages.zh.d.ts +3 -0
  163. package/dist/i18n/messages.zh.js +120 -0
  164. package/dist/i18n/translate.d.ts +25 -0
  165. package/dist/i18n/translate.js +127 -0
  166. package/dist/index.d.ts +53 -18
  167. package/dist/index.js +38 -10
  168. package/dist/inheritEnvCapability.d.ts +31 -0
  169. package/dist/inheritEnvCapability.js +104 -0
  170. package/dist/liveModelCatalog.d.ts +1 -2
  171. package/dist/liveModelCatalog.js +2 -6
  172. package/dist/liveQuestionStore.d.ts +2 -21
  173. package/dist/mcpLiveness.d.ts +2 -1
  174. package/dist/mcpProbeWire.d.ts +6 -1
  175. package/dist/mcpProbeWire.js +1 -1
  176. package/dist/mcpWireCaps.d.ts +13 -2
  177. package/dist/mcpWireCaps.js +48 -0
  178. package/dist/memoryEntriesWire.d.ts +4 -9
  179. package/dist/model/modelSupplyRules.d.ts +0 -2
  180. package/dist/model/modelSupplyRules.js +3 -12
  181. package/dist/model/modelsPolicy.d.ts +0 -5
  182. package/dist/model/modelsPolicy.js +6 -36
  183. package/dist/model/subagentModelWord.d.ts +31 -0
  184. package/dist/model/subagentModelWord.js +261 -0
  185. package/dist/notifications.d.ts +6 -0
  186. package/dist/notifications.js +71 -23
  187. package/dist/outputStyleSeatCapability.d.ts +0 -3
  188. package/dist/outputStyleSeatCapability.js +0 -3
  189. package/dist/ownKey.d.ts +15 -0
  190. package/dist/ownKey.js +60 -3
  191. package/dist/panelReduce.d.ts +15 -9
  192. package/dist/panelReduce.js +680 -549
  193. package/dist/panelStateHolder.d.ts +3 -7
  194. package/dist/panelStateHolder.js +14 -130
  195. package/dist/peerLaneCapability.d.ts +0 -4
  196. package/dist/peerLaneCapability.js +0 -6
  197. package/dist/permissionRulesWriteCapability.d.ts +0 -4
  198. package/dist/permissionRulesWriteCapability.js +0 -6
  199. package/dist/permissionWireCaps.d.ts +2 -2
  200. package/dist/permissionWireCaps.js +2 -0
  201. package/dist/permissionsAllowGrantCapability.d.ts +0 -4
  202. package/dist/permissionsAllowGrantCapability.js +0 -6
  203. package/dist/permissionsDeclaration.d.ts +0 -11
  204. package/dist/permissionsDeclaration.js +60 -53
  205. package/dist/pluginHooksWire.d.ts +1 -1
  206. package/dist/pluginHooksWire.js +3 -6
  207. package/dist/preemptWire.d.ts +44 -0
  208. package/dist/preemptWire.js +83 -0
  209. package/dist/printToolResultFrame.js +15 -4
  210. package/dist/replayBody.d.ts +3 -0
  211. package/dist/replayBody.js +14 -0
  212. package/dist/request/taskRequest.d.ts +0 -1
  213. package/dist/request/taskRequest.js +0 -3
  214. package/dist/resumeRefusalCopy.d.ts +2 -1
  215. package/dist/resumeRefusalCopy.js +38 -2
  216. package/dist/retryStatus.d.ts +8 -0
  217. package/dist/retryStatus.js +106 -1
  218. package/dist/rewindArchiveCapability.d.ts +0 -4
  219. package/dist/rewindArchiveCapability.js +2 -10
  220. package/dist/rewindArchiveReading.d.ts +0 -1
  221. package/dist/rewindArchiveReading.js +0 -3
  222. package/dist/runCancelContext.d.ts +2 -1
  223. package/dist/runCancelContext.js +4 -2
  224. package/dist/runReattachPolicy.d.ts +31 -0
  225. package/dist/runReattachPolicy.js +46 -0
  226. package/dist/runTerminal.d.ts +3 -6
  227. package/dist/runTerminal.js +8 -9
  228. package/dist/sandboxWire.d.ts +3 -1
  229. package/dist/sandboxWire.js +76 -27
  230. package/dist/scenarioWire.js +1 -1
  231. package/dist/seam.d.ts +24 -2
  232. package/dist/seam.js +15 -3
  233. package/dist/seatContract.d.ts +53 -10
  234. package/dist/seatContract.js +132 -81
  235. package/dist/sessionPolicyCapability.d.ts +0 -4
  236. package/dist/sessionPolicyCapability.js +0 -6
  237. package/dist/sessionSyncFileHistoryCapability.d.ts +0 -3
  238. package/dist/sessionSyncFileHistoryCapability.js +0 -3
  239. package/dist/skillToolListsCapability.d.ts +0 -3
  240. package/dist/skillToolListsCapability.js +0 -3
  241. package/dist/sqlEngineCapability.d.ts +0 -4
  242. package/dist/sqlEngineCapability.js +0 -6
  243. package/dist/steerPriorityCapability.d.ts +0 -3
  244. package/dist/steerPriorityCapability.js +0 -3
  245. package/dist/streamDrainingLegs.d.ts +4 -0
  246. package/dist/streamDrainingLegs.js +6 -1
  247. package/dist/subagent/engineCompactWire.d.ts +0 -1
  248. package/dist/subagent/engineCompactWire.js +7 -5
  249. package/dist/subagent/engineTaskHandleWire.js +4 -7
  250. package/dist/subagentContentStore.js +1 -11
  251. package/dist/submitReopen.d.ts +24 -0
  252. package/dist/submitReopen.js +75 -0
  253. package/dist/terminalStatuses.d.ts +3 -0
  254. package/dist/terminalStatuses.js +10 -2
  255. package/dist/toolResult.d.ts +10 -1
  256. package/dist/toolResult.js +34 -6
  257. package/dist/toolRoster.d.ts +0 -2
  258. package/dist/toolRoster.js +0 -2
  259. package/dist/turnFailurePresentation.d.ts +28 -0
  260. package/dist/turnFailurePresentation.js +205 -0
  261. package/dist/userInvokedSkillsCapability.d.ts +0 -3
  262. package/dist/userInvokedSkillsCapability.js +0 -3
  263. package/dist/webSearchBackendCapability.d.ts +0 -4
  264. package/dist/webSearchBackendCapability.js +0 -6
  265. package/dist/wireErrorTriage.js +5 -24
  266. package/dist/wireFailureShape.d.ts +62 -5
  267. package/dist/wireFailureShape.js +105 -5
  268. package/dist/wireRefusalCopy.d.ts +12 -2
  269. package/dist/wireRefusalCopy.js +50 -52
  270. package/dist/workflowsJournalCapability.d.ts +0 -4
  271. package/dist/workflowsJournalCapability.js +0 -6
  272. package/dist/writeProtectionCapability.d.ts +0 -4
  273. package/dist/writeProtectionCapability.js +0 -6
  274. package/docs/INTEGRATION-CLIENTS.md +1305 -46
  275. package/package.json +5 -4
  276. package/dist/attachmentSeatCapability.d.ts +0 -12
  277. package/dist/attachmentSeatCapability.js +0 -23
  278. package/dist/hitl/approvalOutcomeNote.d.ts +0 -10
  279. package/dist/hitl/approvalOutcomeNote.js +0 -29
  280. package/dist/sessionReadRedactionCapability.d.ts +0 -13
  281. package/dist/sessionReadRedactionCapability.js +0 -35
package/CHANGELOG.md CHANGED
@@ -49,6 +49,435 @@
49
49
  > 挡住 ⇒ 本批把它机械化——④a0 对 `pending` 行**要求段头已是日期形**(`(未发布)` 直接红),阶段一
50
50
  > commit 漏转在发布前就红,不再靠人记。
51
51
 
52
+ ## 0.98.0(2026-10-16)
53
+
54
+ > 主题:句表单源 —— 同一件事在三端各写一份的人话,收成包里的键表,三端只渲(CC-663 持久规则来源词 / 作用域 / 撤销结局 · CC-665 出身词静默表与规则候选缺席句 · CC-666 崩溃遗留逐行句与成因句 · CC-612 结局成因一行句表 / 受理句 / 停驻重开接替卡面句 · CC-623 `policy` 出身句补模式默认半边 · CC-628 持久规则 `match` 九词读口)。每张新表都是键表(`satisfies Record<闭集型, …>` 挂在表字面量自己身上,上游加词而句子没跟 ⇒ 编译红),表外词一律中性句、不回显原词。接入文档 **§126**。
55
+ > 主题:门卫生族扫余项 —— 门脚本里手写的「注释识别 / 注释剥离 / 调用头切分」全部换成语法层读器,可移植门的门脚本族扫由两形扩为四形(CC-559 / CC-594)· run 行「还在飞」词表单源(CC-724)· 工具结果卡的「未执行」位读不出不再读成正常结局(CC-723)· 退出码 137 的归因句按已知事实出、不再按退出码猜内存(CC-714)· `CoreValuePorts` 两件成员在严格档下装得进引擎原件(CC-716)。接入文档 **§126**。
56
+ > 主题:引擎地址一处真源(CC-664)· 流式提交在绑 run 之前连接关闭 ⇒ 同键有界重开一次(CC-568)· 订阅腿排空收场账上根入口(CC-600)。
57
+ > 主题:抛出物读法单源 —— 协议类名兜底改比字面协议名(CC-722)· 四处机读位读法收进自有数据位(CC-727)· 失败句取句口上根入口(CC-676)· turn 失败呈现与在飞 run 重连预算的单一真源(CC-667 第一程)· 沙箱降级句按宿主分段(CC-720)。本段以下是这一组的行(接入文档 **§126 TH-1 – TH-6**);同版其它条目由各自的行并入。
58
+ > 主题:转录身份 —— 本包交出的转录行 / 投影信封 / 段身份 / attachment 事件 id 按引擎事件身份确定性派生,同一组 wire 事件重投(两个进程、无游标重连、resume 重放、桌面端重放)得同一串 id;行上一个引擎引用位 `_sema_engine_ref` 只在投影口铸一处、行只抄;「是不是同一件引擎事」两只读口(CC-190 / CC-455)。本段以下是这一组的行(接入文档 **§126 ID-1 – ID-5**);同版其它条目由各自的行并入。
59
+ > 主题:能力位单源余项 —— 代理能力判定改读总缓存、登记读口与任务句柄停止门读同一把证据键、中心接线缓存读数不带按身份成立的那一位(CC-624)· 跨 realm 普通记录判据单源(CC-726)· 执行车道隔离位读就抛 ⇒ 整格畸形(CC-639)· `inheritEnv` 能力词读器与交互车道意图判定归包(CC-747)· 能力重置过渡口到期退役。本段以下是这一组的行(接入文档 **§126 CP-1 – CP-9**)。
60
+ > 主题:HITL 决断链 —— 一只审批一个持有者(持有表三臂 + 宿主登记动词 + 对偶查,CC-607)· 人答一个载体、一只装配口(CC-610)·「不再询问」三档读判官同一份读数(CC-611)· 迟到决断结局五档一只读口(CC-673)· 重放卡帧收口收进确定结局与文件历史拒句订正(CC-725)· respond 三词上根入口(CC-679)。本段以下是这一组的行(接入文档 **§126 HL-1 – HL-14**)。
61
+ > 主题:座位契约卫生 —— 出站门全族判「普通记录」一只判据(CC-656)· 模型配置回执 `reason` 收成闭集并给人话句单源(CC-728)· 三端零读点的座位死位与占位读器退役(CC-737,型面 BREAKING)· 桌面端自写的流式分片线形与会话历史投影收成包内一口(CC-668)。本段以下是这一组的行(接入文档 **§126 ST-1 – ST-5**);同版其它条目由各自的行并入。
62
+ > 主题:三端公共判定收进包里(第二批)—— 跨 run 统一收件箱读器(CC-566)· 优雅让位编排口与回执句(CC-567)· 设备注册三动词与身份不符读法(CC-573)· 续读位置读口上根入口(CC-571)· hooks matcher 对编不过的正则判拒(CC-717,🔴 型面 BREAKING)· 页脚 fleet 列表并集判定登已知限制、不入包(CC-599)。本段以下是这一组的行(接入文档 **§126 UP-1 – UP-7**);同版其它条目由各自的行并入。
63
+ > 主题:开发依赖换钉 sdk `^22.0.3`(这一步写下时 peer 地板仍为 `>=21.1.0`;同版随 §126 PN-2 抬到 `>=23.0.2`)与它在本包的四处落点 · MCP http 声明的断言头(`assertionHeader`)两条腿原样过境、并说出「过境不等于生效」(CC-735)· 影子 models 文档写出数据副本(CC-736)· 会话镜像地址读引擎地址单源口(CC-746)· 两行到期退役(settings-schema 10 一代 models 输入臂 / 在线目录 id 形老键)。本组行带 **§126 PK-n**。
64
+ > 主题:有端抄的上收 —— 外来体窄读工具集四口(CC-680)· 通知 XML 单条回读口(CC-682)· `context_usage` 唯一窄读口与工具结果行的门记录视图 `_sema_gate`(CC-670)· 计划审阅卡「已呈档位」读口(CC-681)· `reopenPlanReviewCard` 同步重载退役(RL-116)。本段以下是这一组的行(接入文档 **§126 LF-1 – LF-7**);同版其它条目由各自的行并入。
65
+ > 主题:收紧约束原样上体(CC-378)—— 设置桶的 deny / ask(含命令行 deny)与代理定义的工具清单 / 名长 / `maxTurns` 不再被本包扣下、剔掉、截断或丢键,只做等价改写,能不能收由受理它的那一代服务端答(编不出 ⇒ 整请求 422 / 400 点名);报告口两张预言表退役;装配口与代理就绪门的失败带机读拒装身份,宿主只对这一类「这一发不提交」;座位 `error` 事件带上 turn 失败的呈现判决。本段以下是这一组的行(接入文档 **§126 TK-1 – TK-12**);同版其它条目由各自的行并入。🔴 型面 BREAKING 与行为变,先读 §126y。
66
+ > 主题:HITL 面一件事一个读法 —— 停驻主角身份一只读法(带身份的停驻上同族兄弟分得开)· 会话放行回退只认专属码 · 计划审阅重开复用同 id 与注入投递互斥(🔴 型面 BREAKING)· 悬挂 ask 跟踪器「先盲后全」臂退役(🔴 型面 BREAKING)· 子代判别只认显式位 · 待决清单坏形一个判官 · 入参快照一张表 · fleet 压制集老名退役 · 门记录视图自带「在场读不出」证据、臂标记退役 · 工具输出文字读法一只(CC-625 / CC-627 / CC-395)。本组行带 **§126 HM-n**。
67
+ > 主题:HITL 一次决断一个值 —— 审批决断三条车道直接交回 `ApprovalResolution`,旧三张结局形与派生口零别名退(🔴 型面 BREAKING;CC-77 第二步)· 拒绝读数在铸点判一次、唯一的 `cause` 读法、唯一的送达判点(先验证据表 × 路由),计划审阅与压缩口改读它 · 工具行终态随执行腿:被停驻扣住的调用不铸终态行、`tool_parked` 臂、续跑认领要见证(CC-613)· 停驻挪动族 +2 码与续跑预检永久形(CC-768)。本组行带 **§126 HM-R1 – HM-R6 / HM-T1 – HM-T4**。
68
+ > 主题:转录行侧挂位与自愈分诊复证 —— 提交幂等重放的事实位与唯一提示臂(CC-686)· 工具结果行四件行级事实归包一只铸口、转录行侧挂键表(CC-675)· 适配面双读与成文例外余项(CC-626:重试倒计时锚一位 · 抛出物状态位一只读法与终局读法判序 · `contextWindow` 占位缺席位 · 停止冲突只认机读码)· 自愈分诊复证之后只读复证态(CC-760)。本段以下是这一组的行(接入文档 **§126 SC-1 – SC-15**);同版其它条目由各自的行并入。
69
+ > 主题:同一件事实一种读法、一句人话一处住 —— 消息目录席位(CC-586 第一批:目录、终端词表逐字节上提、界面语言解析链;本包既有铸点句迁入目录分后续各批)· 子代理模型词解析口(CC-587:请求体交规范拼写的原词,档位落点只预览)· 判活语义单源(CC-605:成文例外常量与宿主 verb 槽 `probeHealth` 退役,🔴 型面 BREAKING)。本段以下是这一组的行(接入文档 **§126 TX-1 – TX-6**);同版其它条目由各自的行并入。
70
+ > 主题:重试行人话单源(CC-775)—— 重试行那一句话收成包里的一只纯函数口 `retryStatusNotice`:按判词 × 状态码 × 次数选句,等首 token 一句(方向不是错误)、终态一句、恢复一句,并给机读出路 `recourse`(`switch_model` / `wait` / `fix_request`),三端壳只拼动作词与模型名。本段以下是这一组的行(接入文档 **§126 RT-1**);同版其它条目由各自的行并入。
71
+ > 主题:事件腿组合器 —— 从 sdk 事件流到 `runStream` 之间三端各自手抄的那条腿链(会话 / run 采纳 · 子代属主盖章 · 流内 HITL 三族 · 问答桥续流 · 空闲分诊)收成包里一张腿表 + 一只组合器 `composeEventLeg`,宿主只注端口;「这一帧属于哪条引擎 run」按帧对象记、一条读法 `frameBindingOf`,问答桥换挂后转录引用位、属主盖章与持久化端口读同一帧的同一个值(CC-477)。本段以下是这一组的行(接入文档 **§126 LG-1 – LG-3**);同版其它条目由各自的行并入。
72
+ > 主题:与 sdk 同名的公面型就是 sdk 那一只(CC-589;🔴 型面 BREAKING)—— 根入口二十三个与 sdk 同名的型改为再导出 sdk 的同一符号(其中问答帧三型与活卡帧型此前形已漂开);本包自铸、与 sdk 同名而形不同的三只读数改名带后缀 `Reading`;`WireRuleOffer` 零别名退;新门对根入口型名 × 运行期上游型名求交,同名即须同一符号。本组行带 **§126 TS-1 – TS-5**。
73
+ > 主题:sdk 23 / 引擎 7.51 一代的读法(CC-733 / CC-732 / CC-718 / CC-674;🔴 型面 BREAKING 与行为变)—— 开发依赖换到 sdk `^23.0.2` / 引擎 `^7.51.2`、peer 地板 `>=23.0.2`(服务端支持底线这一组不动;同版另一组 RD 抬到 7.129.1,见 Changed 底线条);生成表按引擎 7.51.2 重生成;会话规则写口两新码有具名读法、命令桶退出桶名集合、带认不得的桶的记录不回写;respond 回执的首决回放臂;「为什么没有『不再询问』」两新词;卡面只读卡上的引擎卡词;续跑启动失败按引擎成因分句;`--scenario` 用法句改真。本组行带 **§126 PN-1 – PN-11**;同版其它条目由各自的行并入。🔴 先读 §126y。
74
+
75
+
76
+
77
+
78
+ ### Removed
79
+
80
+ - 已知限制 KL-722 / KL-723 删行(CC-559 / CC-594 收口;另新增 KL-761 记 CC-716 的双变代价,见 Fixed):门脚本里按行或按片段读注释的写法(pure 套的行级去注释与 web 分类器表行尾剥离、G-HW10 的「找签名之后第一条非注释行」、退役登记的行首记号归一)和能力位读点普查的「正则找调用头 + 括号配平 + 按引号配对切实参」都已换成语法层读法,不再有成文例外。
81
+ - **会话规则命令桶 `commandAllow` / `commandDeny` 退出桶名集合**(CC-733;**§126 PN-6**;🔴 型面 BREAKING,随 sdk 23 `SessionPermissionRules`):`SESSION_POLICY_RULE_FIELDS` 五只 → 三只;读改写口不再读、不再写这两只桶。服务端 7.129.0 起规则条目文法 `Bash(rm:*)` 取代命令桶(`commandDeny: ["rm"]` 的新写法是 `toolDeny: ["Bash(rm:*)"]`)。
82
+ - **卡面的宿主事实 `StandingRowsHostFacts.cardFace`、名册读数 `ToolRosterRenderHintsView.approvalCard` 与 `ToolShim.approvalCard`**(CC-718 / CC-674;**§126 PN-8**;🔴 型面 BREAKING):「这一问渲在哪张卡上」只读卡自己带的引擎卡词 `ApprovalCardRequest.approvalCard`(帧 / 待决行同一把窄读);名册那一位按工具给、卡上那一位按调用给,同一问两个来源 ⇒ 名册那一位退出本包读数。
83
+ - **随 peer 地板越过 sdk 22.x 执行的五处过渡读法**(**§126 PN-10**):`status` 臂六位改类型面直读(结构视图删)、`task_started` 回到 switch 的一条 `case`、强制词表钉的 sdk 滞后登记删、MCP 断言头改请求面型直读、「谁拒的」词表钉的 sdk 退役声明登记删(sdk 23 删了 `plan_mode`)。运行期读法与读数逐字不变。
84
+ - **`resetManualCompactCapability` 退出根入口**(到期退役;**§126 CP-9**;型面 BREAKING,三端零调用):0.95.0 起它就是空调用 —— `/compact` 的能力读数只在总缓存里、只随 `invalidateEngineCaps(baseUrl, probe)` 换代;引擎温切处只调后者。能力失效从不动 `/compact` 的待发台账。
85
+ - 已知限制 KL-729 / KL-730 删行(CC-607 收口;**§126 HL-1**):跨腿单一持有只查一个方向、宿主自己的卡不进持有登记两条成文例外 —— 今天每一条开卡的路在同一张持有表登记、按同一只对称匹配律互相看见。
86
+ - **悬挂 ask 跟踪器的「先盲后全」升级臂退役**(CC-625;**§126 HM-4**;退役登记 RL-148;🔴 型面 BREAKING):`SuspendedAskDelta` 去掉 `upgraded`,`ingest()` 只报 `appeared` / `gone`。服务端 7.87.0 起悬挂行上 `frame` 恒在(条目上的必填格),支持底线 7.126.0 ⇒ 「先出盲卡、后来帧到了」不可达;`frame` 缺席今天只按坏形出一次盲卡。读 `delta.upgraded` 的代码编译红,删那一段即可(运行期没有 `upgraded`,跳过类型检查直接读它会抛)。
87
+ - **会话放行回退的「无机读码 400」臂退役**(CC-625;**§126 HM-2**;RL-146):带 `remember: "session"` 的那一发失败后,只在服务端以 remember 专属五码拒时去掉 remember 重发一次纯批准(`rememberRefusalOf` 那一只判官);无机读码的 400(支持底线以下老服务端不认该键的形)与其余失败同处置 —— 结局 `failed`、不自动补发。
88
+ - **子代判别的 `sourceTaskId` 回落退役**(CC-625;**§126 HM-5**;RL-147):`isFromSubagent` 只认 `fromSubagent === true`。服务端帧与卡上 `sourceTaskId` 与 `fromSubagent: true` 一起铸,受支持的服务端上只有坏帧 / 注入面会只带 `sourceTaskId`,它们不再判子代(徽章 / 委派链随之不出)。
89
+ - **fleet 行描述压制集去掉老名 `Task` / `Fork`**(CC-627;**§126 HM-9**;RL-149):公面 `CONTROL_TOOL_VERBS` 少两员。引擎 5.0.0 起旧工具名不再解析,底线引擎不以这两个名挂工具;部署自挂同名工具时那是真工作工具,其描述不再被压掉。
90
+ - **臂标记 `_sema_denial_unclassified` 退役**(CC-395;**§126 HM-10**;RL-150):`tool_end_result` 臂不再带它;「在场但读不出」的证据改由门记录视图自己带(见 Added)。
91
+ - **审批决断旧结局形零别名退**(CC-77 第二步,🔴 型面 BREAKING;**§126 HM-R1**;退役登记 RL-152):型 `FsApprovalOutcome` / `ToolApprovalFrameOutcome` / ask 腿的 `GateOutcome`(本包,与 sdk 同名型同名不同义)/ `ApprovalLegOutcome` / `StreamApprovalOutcomeNote` / `ToolApprovalRespondRefusal` / `HitlFailureStage`,运行期 `approvalResolutionOf` / `approvalOutcomeNoteOf` / `readToolApprovalRespondRefusal`。三条决断车道直接交回 `ApprovalResolution`;`'unresolved'` 不再是决断词。
92
+ - **🔴 型面 BREAKING:`reopenPlanReviewCard` 的同步重载删除**(RL-116 / CC-396,退役账 retireBy 0.98.0;接入文档 **§126 LF-6 / 126y**):不带 `presentationReceiptMs`、直接回判决本体的 0.30.0 形删除 —— 现在恒返回 `Promise<ReopenCardVerdict>`,`ReopenPlanReviewOpts.presentationReceiptMs` 由可选改必填(不带的调用编译红一次)。纯 JS 宿主 / 手搓对象不带它(或带的不是数)⇒ **不呈卡**、resolved `{ reopened: false }`(闭合方向:没有回执窗就没有「卡上屏了」的证据)。公面名不动(`reopenPlanReviewCard` 仍在基线)。内部铸卡链的同步半场(发布即登记、即回 `{ reopened: true }`)一并删,同步形撞「用户关卡」记号即拒的那一支随之退役(自动触发撞记号一律走读门实例的判定)。三端读点:终端 `sema/planReviewReopen.ts:145` 已带回执窗(零改码);网页端 `ui/lib/engine/engine-self-heal.ts:273` 是同步形的生产调用方(编译红必改一处,126y);桌面端零调用。
93
+ - **`resolveEnginePanelTaskId(wireTaskId, parentToolCallId?)` 的第二参**(CC-556;**§126 PL-3**;🔴 型面:传了第二参的调用方编译红一次,删掉那一参即可;三端零调用点):委派卡不再参与「这一帧属哪只子代」—— 上游一张卡下可以有多只子代(工作流一次调用 fan-out 的全部代理共用调用 id,复活是一只多卡),按卡反查是把一只的事实标到另一只身上的来路。读口现在只按转录锚 / 行 id 尾段解析。
94
+ - **报告口 `permissionsDeclarationReport(...).unchecked` / `.unreachable` 与型 `PermissionsUncheckedRule` / `PermissionsUnreachableRule`**(CC-378;**§126 TK-2 / TK-3**;🔴 型面 BREAKING):前者是「投出了但编译器答不上来的 deny / ask」—— 收紧桶不再问编译器,表恒空;后者是本包对「服务端会不会收这一条」的预言,与服务端 422 的点名是同一问的两个答案。读这两只位的宿主编译红;发出前要提示用户改写的,读公面判官 `ruleToolNameVerdictOf`。
95
+ - **`MAX_AGENT_TOOLS` / `MAX_AGENT_TOOL_NAME_CHARS` / `MAX_AGENT_NAME_CHARS` / `MAX_AGENT_MAX_TURNS`**(CC-378;**§126 TK-6**;🔴 型面 BREAKING):服务端受理口常量的手抄,本包不再用它们剔截代理工具清单,也不再按名长或轮数丢弃 / 剪除定义(超限原样上体,由服务端 400 点名字段);端拿它们自己截就又是一份判断。后两个是前两个的同轴孪生(包内同样零读点,此前仍在根入口),同批删。`MAX_TASK_AGENTS` 随 32 只帽截断暂留(到服务端给出每请求代理上限的新语义)。公面运行期导出 −4。**硬破坏三句**:① 删了这四个根入口常量;② 按名 import 或读它们的宿主编译红一次 —— 终端 `src/sema/agentsWire.test.ts:21`(`MAX_AGENT_NAME_CHARS`)与 `:24`(`MAX_AGENT_TOOLS`)在同一条具名 import 里,`:129` 还拿 `MAX_AGENT_NAME_CHARS + 1` 造超长名;除编译红外,后两名的读点还是运行期红 —— 名字取不到值、造不出超长名,`:148–153` 四格运行期红(按终端测试源推断,未实跑);网页端 / 桌面端零读点;③ 删掉这些读点即可,不需要替代 —— 超长名 / 越界 `maxTurns` 本包原样上体,服务端 400 点名 `agent.name` / `agent.maxTurns`。
96
+ - 已知限制 KL-414 删行(被规则吸收:收紧桶不再问编译器,「编译器答不上来的 deny / ask 照发未经校验」不再是一种单独的形;远端编不出的整份请求 422 点名,与别的编不出形同一条)。
97
+ - **settings-schema 10 一代的 models 输入臂退役**(型面 BREAKING;**§126 PK-7**;退役登记 RL-95):云配置投影(`projectEffectiveBody` / `cloudModelsToDoc`)与本地池删除判定(`computeDeleteBlockers` / `computeDeleteWarnings`)不再读 `models.default` 结构键与 `atModelAllowlist` —— 两把键到达不读,带 / 不带它们的回体逐字节同答。`CloudModelRefIssue.reason` 少一员 `shadowed`(唯一产出形是 10 形回体里两把缺省模型键同在);`DeleteWarningsInput.doc` 去掉 `atModelAllowlist`、`DeleteBlockersInput.doc` 去掉 `default`;「10 形名单删空 = 全部可 @」那句后果与「`default` 读不懂 ⇒ unreadable 阻断」那一格随之删除(整份文档读不出仍阻断)。
98
+ - **在线目录的 id 形老键 `LiveModelCatalog.default` 退役**(型面 BREAKING;**§126 PK-8**;退役登记 RL-107):`readLiveModelCatalog` 不再要求、也不再把它带进目录;读数原因词 `default_missing` 退出闭集;座位 `listModels` 出站门不再要求它。缺省模型照旧读 `liveDefaultModelOf`(只读 `defaultModel`)。
99
+ - **座位死位与占位读器退役**(CC-737;**§126 ST-3**;🔴 型面 BREAKING):删 `LocalSessionEvent` 的 `hasPreClearSession` / `data` / `messages` / `permissionMode` 四位(型、键集 `LOCAL_SESSION_EVENT_KEYS` 18 → 14、出站门判据、覆盖表同批摘 —— 桌面端 36 处事件站点零发、网页端零读、终端无座位 lane,位保留只为「与 CC 同形」);删附件席位能力位占位读器 `noteEngineCapsForAttachmentSeat` / `observedAttachmentSeat` / `__resetAttachmentSeatReadingsForTests` 与型 `AttachmentSeatReading`(整个 `attachmentSeatCapability` 模块;恒 `not_reported`,三端除终端一处空转调用与随之的测试外零读点)。公面运行期导出 −2 函数、测试钩 −1。**硬破坏三句**:① 终端 `liveClient.ts` 的一处具名 import 与一处调用编译红一次(删两行;其测试与登记行随删),带那四个事件键的对象字面量或读那四位的代码编译红(三端实测零命中);② 退役后旧宿主若仍带这几个事件键,出站门不再判它们、整条事件照过;③ 附件席位到货时按到货的键名新写一只读器,不再靠占位位置等它(`encodeHumanTurn` 的分流本来只读入参 `caps`,行为零变)。入站词表 `PERMISSION_MODE_INTENTS` 不动。
100
+ - **判活语义的成文例外退役**(CC-605;**§126 TX-1**;退役账 RL-155;🔴 型面 BREAKING):公面常量 `PROBE_HEALTH_DIVERGENCE`、`ClientSliceLike.probeHealth()` 成员与 `CLIENT_VERBS` 的 `probeHealth` 行(表 13 → 12 行)退出。判活只有一种读法:本包原样转口的 sdk `probeHealth(baseUrl)`,`alive ⇔ HTTP 2xx ∧ body.status === "ok"`;本包唯一调用点 `probeEngineAlive` 本来就是这一语义,运行期零变化。「能不能接活」是就绪问题(`/readyz`、`/health` 的 `ready` / `reasons`),不是存活问题。`import { PROBE_HEALTH_DIVERGENCE }` 与给 `ClientSliceLike` 写 `probeHealth` 成员的对象字面量编译红(三端零引用)。
101
+ - **`RunTerminalRead.replay` 退役**(CC-686;🔴 型面 BREAKING 一处;**§126 SC-3**):终局读数上的重放位只读重放体一形(漏掉同进程在飞合流:那一份帧上带位、`result` 是首答逐字),且与帧上的位「不是一回事」要靠一段说明兜着。`readRunTerminal` 对重放体的读法不变(先读嵌套引擎结果、没有才读行状态),读数上不再有 `replay`。「这条终局是不是这次提交真跑出来的」改读结果帧 / 合成终局行 / 派生行上的 `_sema_replay`(`isReplayMarked`)与 chrome 臂 `result_replayed`。三端零读点。
102
+ - **`WireRuleOffer` 退出公面**(CC-589;🔴 型面 BREAKING;**§126 TS-1**):wire 上的一条规则候选就是 sdk 的 `RuleOffer`;此前本包另有一份与它只差成员数组 `readonly` 的手写形。无别名。
103
+ - **根入口不再以 `RuleOffer` / `MemoryEntryOriginMark` / `CrashConvergedRow` 三个名出境**(CC-589;🔴 型面 BREAKING;**§126 TS-2**):三者都是本包的读数,与 sdk 的同名型不是同一个形(端从本包与从 sdk 各取一个同名型会拿到两种形);新名见 Changed。无别名。
104
+ - **设置来源 `mcp_tool` hook 条目只剩一种处置**(RL-117 / CC-396,退役账到期执行;**§126 HK-1**):不传计划的老调用口(无参 `hooksForWire()`)此前在引擎点亮的事件上照发 `mcp_tool` 条目、由引擎整份拒收请求;现在任何调用口都是同一处置 —— 任何事件上都不上请求体,计划里逐条记进 `settingsDropped`(`mcp_tool_unsupported`),本端也跑不了的进开机清单;不传计划那一路同版随 **§126 RC-2** 删除(无参 `hooksForWire()` 已不存在,RL-118 已退役,调用必带 `{ plan }`)。**硬破坏三句**:① 删了包内判定件的 fail-loud 形参与「老调用口在引擎事件上留 `mcp_tool` 条目」那一臂(判定件不在根入口,公面与型面零变化);② 本条自身没有宿主编译红;依赖「带 `mcp_tool` hook 的设置让请求整份被拒」的宿主,请求现在照常发出、只少这类条目(三端零读点:终端产品源只走 `{ plan }`,三端测试零 `mcp_tool` 夹具);无参 `hooksForWire()` 的调用方另见 **§126 RC-2**(必带计划,无参 / 坏形立即抛 `TypeError`;终端测试与验证脚本约 35 处、桌面端一道门脚本);③ 要让用户看见哪些 hook 不跑,用 `hooksWirePlan()` + `hooksForWire({ plan })` 并渲 `hooksNotRunNotice(plan)`。
105
+ - **🔴 型面 BREAKING:`taskRequestOmissionCausePhrase` 退出根入口**(RL-119 / CC-396,退役账到期执行;**§126 HK-2**):省略成因的从句口(只交「为什么」那半句、小写起头无句点)删除;整句口 `taskRequestOmissionCauseNotice(cause)` 与整句表 `TASK_REQUEST_OMISSION_CAUSE_NOTICES` 不变,四句与表外兜底句逐字节同上一版。公面运行期导出 −1。**硬破坏三句**:① 删了 `taskRequestOmissionCausePhrase(cause)`;② 按名 import 或直调它的宿主编译红一次(三端生产与测试源零调用);③ 换读整句口 `taskRequestOmissionCauseNotice(cause)` 或整句表 `TASK_REQUEST_OMISSION_CAUSE_NOTICES` —— 要接在自家「没发出去」行形之后的,直接渲整句。
106
+ - **🔴 型面 BREAKING:能力位读器的十九只探测闭包 tee 口退出根入口**(RL-113 / CC-344,退役账到期执行;**§126 RB-1**):`noteEngineCapsForApprovalDecidedBy` / `noteEngineCapsForApprovalsStreamLive` / `noteEngineCapsForDeviceExecutorManagement` / `noteEngineCapsForExecutionLane` / `noteEngineCapsForFileHistoryCapture` / `noteEngineCapsForOutputStyleSeat` / `noteEngineCapsForPeerLane` / `noteEngineCapsForPermissionRulesWrite` / `noteEngineCapsForPermissionsAllowGrant` / `noteEngineCapsForRewindArchive` / `noteEngineCapsForSessionPolicy` / `noteEngineCapsForSessionSyncFileHistory` / `noteEngineCapsForSkillToolLists` / `noteEngineCapsForSqlEngine` / `noteEngineCapsForSteerPriority` / `noteEngineCapsForUserInvokedSkills` / `noteEngineCapsForWebSearchBackend` / `noteEngineCapsForWorkflowsJournal` / `noteEngineCapsForWriteProtection`。0.95.0 起它们就是空调用 —— 读数只从总缓存的落地派生;读器工厂的写口同批删除。公面运行期导出 −19。**硬破坏三句**:① 删了这十九只函数(连同读器工厂的写口);② 按名 import 或直调任一名的宿主编译红一次(TS2305 / TS2724),ES 模块宿主若绕过类型检查直接具名 import,模块加载即失败(不是静默空调用)—— 终端 `sema/liveClient.ts` 的 19 处 import 与探测闭包里的 19 处调用、十一只壳侧转口模块的转出、测试三文件 11 处;另有五只终端测试按正则读 `sema/liveClient.ts` 的源码、断言这些 tee 调用在场(`sema/engineCapsRespawnArm.test.ts:364-367` · `sema/engineOwnedReminderRetire.test.ts:484` · `sema/rewindCaptureLive.test.ts:179` · `sema/wiringManifestArm.test.ts:1670` · `commands/doctor/doctorEngineCaps.test.ts:907-908`),删掉 `liveClient.ts` 里的调用之后这几格**运行期红**(不是编译红),要同批改成断言「探测闭包里没有这些调用」或删格;网页端只在注释里提到一名、桌面端零;③ 删掉这些调用即可,不需要替代:`observed*` 读口的读数与上一版逐字节同,探测闭包里同拍要用读数的宿主读手上这一发的投影 `project*Capability(caps)`。
107
+ - **🔴 型面 BREAKING:能力位读器的十四只测试钩退出根入口**(RL-114 / CC-344,退役账到期执行;**§126 RB-2**):`__resetApprovalDecidedByReadingsForTests` / `__resetApprovalsStreamLiveReadingsForTests` / `__resetDeviceExecutorManagementReadingsForTests` / `__resetExecutionLaneReadingsForTests` / `__resetFileHistoryCaptureReadingsForTests` / `__resetPeerLaneReadingsForTests` / `__resetPermissionRulesWriteReadingsForTests` / `__resetPermissionsAllowGrantReadingsForTests` / `__resetRewindArchiveReadingsForTests` / `__resetSessionPolicyReadingsForTests` / `__resetSqlEngineReadingsForTests` / `__resetWebSearchBackendReadingsForTests` / `__resetWorkflowsJournalReadingsForTests` / `__resetWriteProtectionReadingsForTests`。它们只清读器自己的记忆表、从不改读数;读器工厂的记忆表重置口同批删除(记忆表按落地记录记忆化)。测试钩 59 → 45。**硬破坏三句**:① 删了这十四只测试钩(连同读器工厂的重置口);② 按名调用的测试编译红一次 —— 终端测试五文件 39 处、十只壳侧转口模块的转出;网页端 / 桌面端零;③ 只为让读器重新投影而调的那几处直接删掉;要清空读数的测试调 `__resetEngineCapsCacheForTests()`(连落地一起清,之后要再落地才读得到)。
108
+ - **🔴 型面 BREAKING:「门已决」三只拼装件退出根入口**(退役账 RL-103 / CC-354,按裁定硬退;**§126 RC-1**):扫失败文字的词表判定 `isAlreadyResolvedGateReason` 与两只码判官 `isGateStandingErrorCode` / `isCodeClassifiedGateFailure` 不再从根入口导出。「这一问的门是否已决」在公面上只剩 0.95.0 起四臂合一的那一只判官 `isAlreadyResolvedFailure(failure)`(入参是 catch 到的抛出物,或决断腿交回的结局 —— 两形同一只判据:码优先,码说清了处置就不再扫文字;没有任何机读位时才落词表);三只在包内照用,判据逐字不变。公面运行期导出 −3。**硬破坏三句**:① 删了三只的根入口导出;② 按名 import 或直调它们的宿主编译红一次(桌面端会话宿主 `session-host.ts:37` 一处 import 与 `:1593` / `:4875` 两处直调;终端与网页端零调用)。`:4875` 在「4xx 且不是已决」的例外分支条件里,换读 `isAlreadyResolvedFailure(e)` 后判据先看机读码(码说清了处置就不再扫文字),修前只扫 `e.message` 文字 —— 同一只 4xx 抛出物上这一支的判定结果可能翻、分支走向随之变,不是纯机械替换,换读后要核这一支的预期;③ 换读 `isAlreadyResolvedFailure(e)` —— 把 catch 到的**整只抛出物**交给它(不是 `e.message`;只交一段失败文字它答 `false`),或交决断腿的结局。
109
+ - **🔴 型面 BREAKING:`hooksForWire` 只收 `{ plan }`**(退役账 RL-118 / CC-396,按裁定硬退;**§126 RC-2**):`HooksForWireOptions.plan` 由可选改必填;不传计划那一路(现算一份不含插件条目的设置来源投影)删除,请求体 `settings.hooks` 只有 `hooksWirePlan()` 的计划这一条来路,`hooksForWire({ plan })` 原样交 `plan.wire`。纯 JS 宿主不传 / 传 `null` / `plan` 缺席或不是本包计划形 / 计划按位置传 / 读 `opts.plan` 就抛 / 判形中宿主值抛 ⇒ 抛固定文案的 `TypeError`(错误文本只报形状、点名 `hooksWirePlan()`,不回显值;外来抛出物不外抛、不转串、不进日志;与宿主日志口无关 —— `installHost` 没给 `log` 或 `log` 抛错时照样抛)—— 修前这几形静默按「不传」现算(按位置传的计划被认作计划)。随之退场:不传计划时按「设置端口 × 事件 × 原因」的那条 warn —— 被拿掉的设置来源条目只经计划的 `settingsDropped` 与 `hooksNotRunNotice(plan)` 可见。**硬破坏三句**:① 删了无参调用形与坏形入参的两条宽容读法;② 无参 `hooksForWire()` 编译红一次(三端产品源零无参调用;终端测试与门脚本、桌面端门脚本里的无参调用编译红或运行期抛);③ 换 `hooksForWire({ plan: hooksWirePlan(opts) })`:不给引擎事实的计划 `hooksWirePlan()` 上,设置来源条目与修前无参调用逐字节同 —— 例外一形:端口的插件读数报了旧位 `suppressedByStartupMode: true` 而没报启动模式词,计划读得到旧位、按安全模式只投 policy(修前无参那一路不读插件口、照投五源);计划每轮读一次插件读口,端口没实现它会收到一次「插件读口缺席」告警。
110
+ - **让位披露老两键不再读值**(退役账 RL-59 / CC-401,按裁定硬退;**§126 RC-3**;🔴 型面 BREAKING 一处):活卡帧顶层 `persistedRuleShadowed` 与待决行 `riskDescriptor.shadowedRule`(服务端 7.116.x 及更早、与那时停驻的老行)不再读成让位披露 —— `readApprovalAllowRuleShadow` / `approvalAllowRuleShadowed` / `allowRuleShadowSentence` 对只带老键的载体答缺席(不铸 `persisted` 成员、不出句);只认 `allowRuleShadowed`。归一形 `ApprovalAllowRuleShadow.source` 收成单值 `'allow_rule_shadowed'`。删读法不走放宽方向:老键的**在场**(只认在场、不读值)仍算「看见了、读不出」—— 本包三条卡腿把载体上在场、却没读进卡的老键记进读不出登记 `unreadableEvidence`(与别的证据键同一条登记;待决行的 `riskDescriptor` 在原型链上 / 是取值器同样认),没经卡腿的裸卡 / 裸活卡帧上的老键由 `automaticAnswerVerdict` 同一只在场判据接住;这样的卡各条车道都答 `unknown`(`card_unreadable`)、`standingRowsOf` 不给持久行 —— 老行从「读成披露、规则车道必问」变成「读不出、不替人答、照常出卡」。**硬破坏三句**:① 删了老两键的读法与老来源词;② 按 `source === 'legacy_shadowed_rule'` 比较的宿主编译红一次(三端零命中);拿老键喂读口、断言出披露的测试夹具升级后读不到披露(终端与网页端测试里有这一形);③ 夹具换成新键同形 `allowRuleShadowed: [{ member: 'persisted', entries: [原串] }]` —— 读数与句子与修前老键逐字同答。
111
+ - **会话历史读面脱敏位的读器整只退役**(退役账 RL-92 / CC-540,按裁定硬退;**§126 RC-4**;🔴 型面 BREAKING,三端零读点):`projectSessionReadRedactionCapability` / `observedSessionReadRedaction` / `sessionReadRedactionAdmitted` 与型 `SessionReadRedactionReading` 删除。能力位 `sessionReadRedaction` 是布尔,答不了「哪些叶已与 live 面同一只脱敏」(服务端 7.123.0 起 assistant `errorMessage` 叶同一只脱敏而位值不变);布尔读法删了之后读器只剩「恒答不知道」一种读数。服务端出「真正过了脱敏的叶名表」之前,本包不出历史读面的脱敏读数 —— 不答已脱敏、不答未脱敏、不编叶;到货后按到货的键名与成员新写读器。公面运行期导出 −3。**硬破坏三句**:① 删了三口一型;② 三端零读点 ⇒ 零编译红;行为上不再对任何服务端答「已脱敏」(修前位恰为 `true` 时答 present);③ 端回放会话历史时,推理 / 工具输出 / `errorMessage` 一律按「未证明已脱敏」处置(过展示出口 `displayUntrusted`)。
112
+ - **🔴 型面 BREAKING:面板旧事件订阅口 `subscribeEngineAgentPanel` 退出根入口**(RL-89 / CC-114,退役账到期硬退;**§126 RA-1**):行差分口 `subscribeEnginePanelRows` 是面板唯一的出口;包内件里旧事件投递(单 listener + 合并缓冲)一并删除,归约口铸出的事实流只供折叠。公面运行期导出 −1。**硬破坏三句**:① 删了 `subscribeEngineAgentPanel(fn)`;② 按名 import 或调它的宿主编译红一次 —— 终端 `sema/overrides/chrome-agentprogress.tsx:623`(面板桥主订阅)与五个测试文件、网页端 `ui/lib/engine/bg-task-probe.ts:40`;桌面端零调用;③ 换订 `subscribeEnginePanelRows(fn)`:按 `canonicalId` 维护行表 —— `upsert` 逐键合并展示位(`created` 建行 / `revived` 新一代,清掉上一代的终态与用量)、`usage_delta` 直接赋值(累计口径)、`terminal` 结行、`remove` 删行;订阅即按当前行表回放快照(取代旧口的缓冲回放),陈旧终态与同代重复终态在包内判完,不再交给消费端自判。
113
+ - **🔴 型面 BREAKING:缺席订阅口 `subscribeEngineAgentPanelAbsence` 与测试钩 `__resetEngineAgentPanelAbsenceForTests` 退出根入口**(RL-90 / CC-114,退役账到期硬退;**§126 RA-2**):缺席只经行差分口交出;包内件里缺席投递(单 listener + 按键缓冲)一并删除。发布口 `publishEngineAgentPanelAbsence` 与载荷型 `EngineAgentPanelAbsence` 不变。公面运行期导出 −1、测试钩 −1。**硬破坏三句**:① 删了 `subscribeEngineAgentPanelAbsence(fn)` 与 `__resetEngineAgentPanelAbsenceForTests()`;② 按名 import 或调它们的宿主编译红一次 —— 终端 `sema/overrides/chrome-agentprogress.tsx:136`(import)/ `:1092`(缺席臂订阅)与两个测试文件;网页端 / 桌面端零调用;③ 换读行差分口的 `upsert{ fields.absence: { lastSeenAtMs, absentForMs } }`(行回来 ⇒ `fields.absence: null` 撤标;真终态 ⇒ `terminal`,终态行不再是缺席行),落标仍经 `engineAgentAbsenceMarkOf(row, fields.absence)`,停表 / 回收 / 措辞读口不变。
114
+ - **🔴 型面 BREAKING:fleet 账本的兼容入口 `ledger.applyFrame`、宿主自报连接位 `ledger.setConnected` 与状态键 `FleetLedgerStatus.connected` 删除**(RL-105 / CC-348,退役账到期硬退;**§126 RA-3**):帧只经 `ledger.issueStream()` / `issueSnapshot()` 发的 ingress 进账;「这条流连着没有」由账本自判、只有一条读法 —— 在飞读面 `readEngineActiveBgTasks[For]().fresh`:当代 stream ingress 落过帧且未收 ⇒ `true`;领了 ingress 而首帧未到、已 `close()`、旧 ingress 的迟到帧、一次性快照落账、账本已 `dispose()` 都是 `false`。状态面不再留同义的 `connected` 键(两把键答同一事实 = 两条读法,且宿主写入换成账本自判的同名换义会让读旧义的端静默变味)。快照闸的「有没有活流」只看流模式(开着一只 stream ingress)。**硬破坏三句**:① 删了 `FleetLedger.applyFrame(frame)`、`FleetLedger.setConnected(v)` 与 `FleetLedgerStatus.connected`;② 调 / 读它们的宿主编译红一次 —— 终端 `sema/fleetClient.ts:419` / `:450` / `:527` / `:552` / `:554` 五处 `setConnected`、`:613` 读 `status().connected`(经自家 `status()` 喂「fleet stream disconnected · reconnecting…」断流陈述读面),以及三个测试文件里直喂账本的 13 处(生产代码对兼容入口已零调用,`:523` 走 `ingress.applyFrame`);网页端 / 桌面端零调用;③ 删掉 `setConnected` 那五行,`:613` 换读 `readEngineActiveBgTasks().fresh`(`false` = 出断流陈述;终端的消费循环本来就是「每条流领一只 ingress、首帧到才算连着、`finally` 里 `close()`」),测试直喂改成 `const ing = ledger.issueStream(); ing.applyFrame(frame)`。**行为变**:① 换会话 / 换目标重开流的那一窗(旧流已收、新流首帧未到)此前终端自报仍是「连着」,现在读 `false` —— 在飞读面在这一窗答「不知道」,不再把空表当成确知空闲;终端的断流陈述在这一窗可能闪现约一秒(按终端代码推断,未实跑);② 默认槽宿主的 `own_root` 锚由「每帧现读默认槽会话」变为「开流那一刻捕获的会话」(与 keyed 宿主同一条);③ 一只快照 ingress 落过一次账即自收(此前同为一次性,由账本写序号兜着);④ 「连着」认的是当代 stream ingress 落过任何首帧(含只带 meta 的帧 / 坏形 / 未知 `type` / `task_remove`;`null` 帧抛 `TypeError` 前读位已置)—— 只送坏帧的流也读「连着」;默认槽两本账任一连着 ⇒ `fresh: true`。
115
+ - **🔴 型面 BREAKING:代理投影的扣送开关 `ProjectAgentsDeps.withholdRefusedDenyLists` 与 deny 侧告警句退役**(退役登记 RL-142;**§126 RD-2 / 126y**):`deny` 表(定义文件键 `disallowedTools`)有判得出的拼法问题时「整只代理不送」那一支删除 —— 按裁定删臂,deny 名单里的大小写孪生 / 退役拼法的拦截交服务端受理面(7.131.0),本包不在客户端留过渡臂;终端侧曾有投影缓存晚一拍(扣送在出站上晚一轮才生效)。代理照送、条目原样上体(名册在手时判官给了现名的整名退役名照旧改写成现名、照旧告一句);deny 侧拼法问题不再出告警句(修前 deny 侧两句告警都退),机读读数照旧在 `toolListFlaws`。**硬破坏三句**:① 删了 `ProjectAgentsDeps.withholdRefusedDenyLists` 位、扣送分支与 deny 侧告警句;② 交它的对象字面量编译红一次(终端 `src/sema/agentsWire.ts:239`、桌面端 `src/main/agents-wire.ts:587`;网页端零读点),纯 JS 宿主多交的这一位被忽略(运行期不报错、代理照送);读告警原文判断「这只代理没送 / 这一条藏不住」的端读不到那几句(三端零读点);③ 删掉这一位即可,不换读 —— 宿主侧那只判定件(终端 `engineAgentDenyGeneration.ts`)可一并删;要给用户摆 deny 侧拼法问题的端读 `toolListFlaws`(`list: 'disallowedTools'`)。
116
+ - **代理 `tools` 里判官判得出的问题条目不再单条省掉**(退役登记 RL-143;**§126 RD-3**;🔴 行为变):`Task` / `KillShell` / `bash` 一类退役拼法、大小写孪生、无前缀 `__` 名、段铸不出的协议名原样投进 `agents[].allowTools`,由引擎答(底线那一代对 allow 表这几类只告不拒;这一跑恰有同名工具〔挂载 / 委派池〕时它照给);本包告警判得出与判不出同一句条件式「sent as written; tool names are matched exactly, so this entry gives the agent nothing unless this run has a tool with exactly that name」(不再说「it is omitted」,也不断言效果)。**硬破坏三句**:① 删了 allow 侧判官省略与「it is omitted」那一句;② 没有宿主编译红;读告警原文判断「这一条省掉了」的端会读不到那几个词(三端零读点);③ 拼法问题的机读读数照旧在 `toolListFlaws`(判官不变),要给用户摆「这一条大概什么都不给」的端读它。
117
+ - **🔴 型面 BREAKING:代理清单的目录省略两半、`ProjectAgentsDeps.toolDirectory` 与 run 级判官 `excludeToolsAgainstDirectory`(连同型 `ExcludeToolsAgainstDirectory`)退役**(退役登记 RL-144;**§126 RD-4 / 126y**;撤销 §125 AD-1 / AD-4 / G-AD6 的契约,见 §126z):`tools` / `disallowedTools` 里服务器不在本跑声明里的 `mcp__` 条目不再省掉、读数不在手也不再出「could not be checked」那一行;run 级 `excludeTools` 交引擎原样判。读口 `engineToolDirectoryOf` 与型 `EngineToolDirectory` / `EngineToolDirectorySource` **保留**(本跑声明集这一件事实的唯一读法)。公面运行期导出 −1。**硬破坏三句**:① 删了 `excludeToolsAgainstDirectory`、型 `ExcludeToolsAgainstDirectory` 与 `ProjectAgentsDeps.toolDirectory` 位;② 按名 import 或调用 `excludeToolsAgainstDirectory` 的宿主编译红(三端零调用),给投影交 `toolDirectory` 的对象字面量编译红一次(终端 `src/sema/agentsWire.ts:240`、桌面端 `src/main/agents-wire.ts:591`〔内联在交给 `projectAgentsForWire` 的对象字面量里的 `engineToolDirectoryOf(...)` 调用〕;网页端零读点),纯 JS 宿主多交的这一位被忽略;③ 删掉那一位与那一次调用即可 —— 支持底线那一代引擎对无应答的 `mcp__` 名只告不拒,原样交它是对的;还想给用户看「这个服务器没声明」的,读 `engineToolDirectoryOf` 自己比。
118
+ - **🔴 型面 BREAKING:会话规则写口老码 `rules.legacy_tool_name` 的读法退役、零别名**(退役登记 RL-164;**§126 RD-5 / 126y**):根入口常量 `RULES_LEGACY_TOOL_NAME`、失败臂 `legacy-tool-name`、收紧 / 撤销两只结局的 `legacy_tool_name` 臂与其两句人话删除;`legacyToolNameFailureNoteOf` 只认准备期那一码(`config.legacy_tool_name` 那句逐字节不变)。公面运行期导出 −1。服务端 7.129.0 起这一码退役、同一族名字落 `rules.inert_entry`(本包读法 = `inert-entry` / `inert_entry` 臂,§126 PN-1);底线以下的老服务端仍发它时落「引擎带码答了」那一臂(失败分类 `error`,收紧结局 `unknown` / `write_refused`、撤销结局 `write_refused`)—— 确知没写,不编具名原因。**硬破坏三句**:① 删了 `RULES_LEGACY_TOOL_NAME`、`SessionPolicyFailure` 的 `legacy-tool-name` 臂、`SessionPolicyTightenOutcome` / `SessionPolicyRemovalOutcome` 的 `legacy_tool_name` 臂;② 按名 import 这一常量、或对两只结局 `kind` 穷尽 `switch` 且写了 `'legacy_tool_name'` 分支的宿主编译红(三端生产源零 `'legacy_tool_name'` 分支读点:终端只在注释与自家消费清单里写着它);③ 删掉那一支 —— 同一件事在支持范围内的服务端上走 `inert_entry` 臂(本包已有一句人话)。
119
+
120
+
121
+
122
+
123
+
124
+ ### Added
125
+
126
+ - **持久规则治理行的人话五口**(CC-663 / CC-628 ⑥;接入文档 **§126 WD-1 / WD-2 / WD-3**):`persistedRuleAddOriginLabel(origin)`(来源词级口,与下一口读同一张键表)· `persistedRuleOriginsLabel(rule)`(来源:`user` ⇒ `added by you` · `imported-cc` ⇒ `imported` · `starter` ⇒ `preset`,`adds` 是真集合,保序去重用 ` + ` 连;读不出 ⇒ `unknown origin`;表外来源词 ⇒ 中性句,不回显)· `persistedRuleScopeLabel(scope)`(`global` ⇒ `all projects`,`project:<root>` ⇒ root,只切第一个冒号;其余 ⇒ 中性句)· `persistedRuleRevokeOutcome(ruleText, result)`(撤销 200 体 `status` × `stillLive` 的 3 × 3 全表,屏上句与变更清单行同一张表一次铸两句;表外 / 缺席状态是第三种结局 `unknown-status`,一个字不说删没删;存活词只认 `yes` / `no` / `unknown`,布尔时代的词读作 `unknown`)· `persistedRuleMatchLabel(ruleOrMatch)`(`match` 九词含服务端 7.118.0 起的 `name` / `name_prefix`;老 worker 行没有该键 ⇒ `an unreported match form`,不冒充 `exact`)。此前终端与网页端各持一份且互异:同一出处词一端说 `added by you`、另一端说 `approved on a card`(单步写口落的行同样铸 `user`,那条路上没弹过卡);撤销结局两张表(网页端对「什么都没写、规则仍活」说 `nothing to remove`);作用域逐字两份。取舍:撤销结局取终端那张经过逐格核对的 3 × 3 表,规则文本进句时放进引号。
127
+ - **卡面三行说明的读口**(CC-665;**§126 WD-2**):`askOriginNoteOf(origin)`(出身一行:静默表读口 + 句子读口合一;静默 `content_question` / `ask_rule` / `policy` 三词答 `undefined`,其余答包的出身句;**`ancestor_marked` 不静默**;缺席零占位;表外词答不带词的中性句)· `ruleOffersAbsenceDetail(reason, { deploymentListSessionRow? })`(「为什么没有『不再询问』这一格」:`shadowed` / `lane_cannot_speak` 各一句,`shadowed` 对部署名单问另有一句;`mandated` 答 `undefined`,由 `mandatedApprovalDetail` 一个说话人说)· `ruleOfferUncoveredDetail(reason)`(`redirection` / `no_rule_form` / `cap_overflow` 三词短语)。静默表是全键表(出身词闭集加一词而没表态 ⇒ 编译红)。
128
+ - **崩溃遗留的逐行句与成因句**(CC-666;**§126 WD-3**):`crashConvergedRowSentence(projection, row)`(逐行半句,入参是投影 + 行,**桶归属只信投影**;与整行口 / 计数句口读同一张键表:没开始的行说 `had not started … did not mark it as safe to re-run`,不说副作用可能落了一半;`resumeSafe` 桶的行带着任何形态的 `needsHumanReason`、或行自己的记录位不互证 ⇒ `undefined`,正向的「可重跑」不给矛盾形)· `crashConvergedCauseSentence(cause)`(两个成因词各一句,有序关停的行不说崩了)。网页端此前对每一条需人工的行都说 `was already approved and may have partially run`,含从未开始的行。
129
+ - **结局成因一行句表 / 受理句 / 停驻重开接替卡面句**(CC-612;**§126 WD-6**):新模块 `hitl/askSettlementLine`:`askEndingCauseClause(cause)`(结局成因十四词 → 半句,键表)· `askSettlementLine({ cause, toolName, parked? })`(「引擎没等到人答就结束了这张卡」整句,点名工具、不说 denied、成因缺席 ⇒ `undefined`;**转停驻的结局帧不是结局**:`parked` 真 ⇒ `undefined`)· `askAcceptedLine({ decision, taskId?, late?, follow?, executed? })`(决断被受理那一行:只证送达,不断言执行 / 继续 / 端的卡状态)· `askParkedCardNote(form, toolName?)`(停驻 / 重开 / 接替卡面说明:窗关接替卡与停驻行重开卡同一句,审批卡 / 问题卡 / 队列行无 deadline 三形)。决断尝试被拒的判官不另立(`decisionRefusalAskReading` 只此一只)。
130
+ - **`toolKillCauseAcrossEngineIdentity(before, after)` + 型 `ToolKillCause` + 适配上下文位 `AdapterContext.toolKillCause`**(CC-714;**§126 GT-2**;根入口运行期导出 +1〔1641 → 1642〕、型 +1):`ToolKillCause` = `'engine_restarted' | 'memory_pressure'`;`AdapterContext.toolKillCause(call)` 是宿主的成因读口(`call` = `{ toolCallId, toolName }`,返回 `ToolKillCause | undefined`,缺席 = 说不出成因);`toolKillCauseAcrossEngineIdentity` 是「引擎在这只调用跑着时换代了」这一条读数的薄壳 —— 两侧代际锚(`/health` 体或 `engineIdentityOf` 视图)按 `engineIdentityVerdict` 判 `changed` ⇒ `'engine_restarted'`,相同 / 无锚可比 / 坏形 / 读不出 ⇒ `undefined`(判不出不说重启),永不抛。「换代了没有」的判法仍只有 `engineIdentityVerdict` 一处。
131
+ - **`approvalCardFactsOfFrame(frame, opts?)`**(CC-657;接入文档 **§126 AC-1**):活卡帧(`tool_approval`)→ 卡入参事实的纯投影出口,与 `approvalCardFactsOfV1` 同一只投影核(冻结、永不抛、一位读就抛只丢那一位并记进 `unreadableEvidence`)。出参带作答通路位 `allowSessionCarried`、授予绑定 `grantBinding` 与读不出登记 —— 自己从活卡帧拼卡的端可以直接喂 `standingRowsOf`。`opts` = 宿主两件:流上入参 `streamArgs`(对象)、悬挂 ask `argsUnavailable`。本包活卡帧腿交给卡口的卡,事实位就是这一只的出参。
132
+ - **`approvalCardFactsOfGeneric(card)`** 与卡入参位 **`cardPayloadUnreadable?: true`**(CC-659;**§126 AC-2**):未知形呈卡帧(`approval_request` 认不出版本)的 `card` → 通用卡入参事实。同一只投影核、同一批读器,只读与版本无关的几位(工具名 / 入参 / 调用 id / 双向字符 / 限额回落 / 报价缺席词 / 问类两位 / 引擎原文 / 授予绑定);不盖 `allowSessionCarried`;盖 `cardPayloadUnreadable`。自动作答判定 `automaticAnswerVerdict` 对这样的卡三车道都答 unknown `card_unreadable`,放宽三行随之全关。
133
+ - **`approvalWindowKeysOf(carrier, { windowIsCurrent, receivedAtMs, unknownShape? })`**(CC-658;**§126 AC-3**):审批卡窗三键 + 本地锚的唯一读器 —— 非负有限数才认(上游 `expiresInMs = max(0, expiresAtMs − serverNowMs)` 的铸点域);`windowIsCurrent !== true` 整族不转;本地锚由装配点交入(帧到手那一拍),只在 `expiresInMs` / `expiresAtMs` 至少一键在场时盖;`unknownShape: true`(未知形信封)⇒ 三键同在、两个绝对时刻 > 0、合恒等式(容差 1s)才认。
134
+ - **`probeCauseRowsOf(card)`**(CC-713;**§126 AC-4**):入参是卡(`Pick<ApprovalCardRequest, 'probeCause'>`,活卡帧 / v1 卡 / 通用卡原样可交,与 `askProbeReasonDetail(card)` 同形),口内读自有数据属性 `probeCause`;探针结构因由的 `roots` / `further` 两行(`roots: a, b (+N more)` / `further: …`;`shown` 为空 ⇒ `roots: N total`;至多点名 8 员;每员经 `displayUntrusted` 单行形)。形按服务端 `ProbeCauseSchema` 窄读(只认自有数据属性),任一不合 ⇒ `undefined`(整只不渲、不猜)。
135
+ - **`approvalCardReasons(card, { maxLines? })`**、**`APPROVAL_CARD_REASON_SOURCES`**、**`APPROVAL_CARD_REASONS_DEFAULT_MAX_LINES`**、**`denialLimitFallbackDetail(v)`** 与卡入参位 **`message?: string`**(CC-608;**§126 AC-5**):卡面「为什么问你」那一格的单一聚合口 —— 九只单句铸点(同调用前卡 / 强制 / 强制词 / 出身 / 限额回落 / 探针 / 规则清不掉 / 分类器没判 / 批了还授予什么)加引擎问句原文按序出行,每一行逐字等于它那只铸点的输出;同文去重;每行经不可信文本出口;行预算缺省 4(超出 ⇒ 最后一行说还有几条没显示)。出身 `content_question` / `ask_rule` / `policy` 不出行;限额回落读得出时出身 `denial_limit_fallback` 不另出行;引擎原文恰是回落问句 `approval required for "<卡上工具名>"`(只复述卡头)不出行。限额那一句本版起由包铸(`denialLimitFallbackDetail`)。引擎问句原文 `message`(活卡帧 / v1 卡 / 未知形卡同一只读器:自有数据属性 ∧ 非空白串 ⇒ 原文字节)上卡,只进这一格,不当题干。
136
+ - **`readRequiresRealApproval(carrier)`**(CC-669;**§126 AC-6**):「这一问要真人」的唯一读器 —— 顶层 `requiresRealApproval === true`(活卡帧 / 待决行 / 卡请求)∨ `risk.requiresRealApproval === true`(v1 卡);宽读;两处取或(一处读就抛不抹掉另一处读出的 `true`),都没读出 `true` 且有一处读就抛 ⇒ 原样外抛。包内各读点(活卡帧 / v1 / 待决行三条卡腿、悬挂行两处、自动作答判定)全改读它。
137
+ - **`countOwnedPendingRows(listed, deps?)`**(入参型 `OwnedPendingListView` = `approvals.list` 回体的 `pending` 位,sdk 回体原样可交)与 **`pendingRowIsOwnedAndDecidable(row, deps?)`**(CC-669;**§126 AC-7**):属主待决行计数(`ActiveRunSelfHealDeps.listOwnedPendingApprovals` 的计数半)—— 入参 = `approvals.list` 回体;回体 / `pending` / 某一行 / 会话真源读不出 ⇒ 抛(不折 0;计数谓词同律外抛);逐行 = 归属(`pendingRowIsOwnedByThisSession`)∧ 本客户端呈得出这张卡(门种腿 `durableDecideLegOf` + 问答臂要有问句)。
138
+ - **`normalizeEngineBaseUrl(raw)` / `engineUrlTransportVerdict(url)` + 四型 `EngineBaseUrlReading` / `EngineBaseUrlRefusalReason` / `EngineUrlTransportVerdict` / `EngineUrlTransportRefusalReason`**(CC-664;接入文档 **§126 TP-1 / TP-2**;根入口运行期导出 +2):用户给的引擎地址「收不收、存成什么串、非本机能不能走明文」此前终端与桌面端各写一份,两份在两处判法相反(`http://127.0.0.2`:终端拒、桌面端收;带 query 的地址:终端收、桌面端拒)。现在只有这一对口:规范化裁掉外层空白、去掉全部尾斜杠(保留用户的拼写),拒绝五个原因(`empty` / `scheme` / `unparseable` / `userinfo` / `query_or_fragment`,闭集);传输闸 `https:` 恒过、`http:` 只在主机是本机时过(`plaintext_remote` / `not_http_url` 两个拒因,通过时照实报 `loopback`)。出参不含消息正文、不回显入参,句子与脱敏归各端;永不抛,返回物冻结。本机判定只有一条读法 —— 设置契约 `isLoopbackAuthHost`(窄:只认 `127.0.0.1` / `localhost` / `::1` / `[::1]` 字面),与出站凭证围栏同一只;不读「连接路由」那只宽谓词。
139
+ - **`submitStreamWithBoundedReopen({ client, request, options })` + 型 `SubmitStreamReopenDeps` / `SubmitStreamOptions` / `SubmitStreamReading` / `BoundedSubmitStream`**(CC-568;**§126 TP-3**;根入口运行期导出 +1):流式提交在**绑 run 之前**连接关闭 ⇒ 用**同一枚** `Idempotency-Key` 重开恰一次。本口自己调 `client.tasks.stream`:键由包铸、两发同一枚,`x-task-id` 响应头的读取钩子由包装;宿主交请求体与它自己的那份 `tasks.stream` 选项(`transientOk` / `signal` / `headers` / `heartbeatGraceMs` …,没有 `idempotencyKey` 这一位;它自己的 `onResponse` 接在包的钩子之后调),取消信号只走 `options.signal`。重开要五位同时成立,任何一位读不出都按不重开处置:这一发还没绑上 run(没有非空 `x-task-id` 头,也没交出过任何一帧;头读不出算已绑)· 信号没取消(`aborted` 读不出算已取消)且消费方没对帧流调过 `return()` / `throw()`(调用那一刻即记下)· 失败不是引擎的答复(`transportFailureScene` 的 `status` 缺席)· 现场读得出 · 失败是连接断了没答复(`noAnswer` 为 `connection-lost`)。分类之后、第二发之前再核一遍取消。第二发再失败原样抛第二发的错误,没有第三发;已绑 run 之后断开、引擎答了(503 / 429 / 409 同键异体 …)、连接被拒、静默撕裂、取消、时限都不重开。读数 `reading()` 报 `{ idempotencyKey, attempts, reopened, replay }`:终帧是同键命中的那一条(帧上或 `result` 上严格 `replay === true`,两个来源各自读)读 `replay: true` —— 「这一发已受理、接回既有 run」。计数层:sdk 流式腿构造即单发,「至多两发」按提交口这一层计;sdk 同步腿(`tasks.submit` / `runs.create`)另有它自己的同键重试,不在本口。需要服务端 7.125.0+(同键再投读到那一行作答;支持底线 7.126.0 在其上)。
140
+ - **`createStreamDrainingLegs()` + 型 `StreamDrainingLegs` 上根入口**(CC-600;**§126 TP-4**;根入口运行期导出 +1;KL-732 删行):订阅腿以排空终帧正常结束 ⇒ 按梯重开同一条订阅、连着到顶交读者失败路径,这套账此前只在包内四条订阅腿用;自己读 run 事件的端此前只能用 `isInStreamDrainingEnd` + `streamDrainingDecision` 自写一份连续计数。现在读同一只账(每条订阅一只,互不串账)。
141
+ - **`isDiagnosticValueWord(value)`**(CC-683;接入文档 **§126 DU-8**):展示出口诊断词闭集的判定口 —— 凭据标签值位上的这个值是闭集里的诊断 / 功能词(`missing` / `none` / `undefined` / `not` / `basic` …;不分大小写,尾标点与前导点不算进词)或剥完为空 ⇒ `true`(展示出口原样留它),否则 `false`;读的就是展示出口自己用的那一张表。非串入参 ⇒ `false`。端侧自持的同一张诊断词表改读它即可删。公面运行期导出 +1。
142
+ - **`wireFailureTextsOf(e)` / `WIRE_FAILURE_UNRENDERABLE_TEXT` 上根入口**(CC-676;接入文档 **§126 TH-3**):抛出物 → `{ reason, log }`,失败句的唯一取句口(包内七个出口一直用它,此前只在内部 `.d.ts`,根入口与 `exports` 都不开;终端自写的「异常 → 文本」把 `{}` 渲成 `[object Object]`、空 Error 渲成空串)。`reason` 是可直接上屏的一句:抛出物自带的非空 `message` ⇒ 它;抛出物本身是非空串 / 数 / 布尔 / bigint ⇒ 它的文本;其余(`{}`、空 Error、带类名而 `message` 为空的错误、`null` / `undefined`、`message` 取值器抛、转换钩子抛、Symbol / 函数 / 数组)⇒ 固定句 `the call failed with an error this client could not render`。永不空串、永不是类名或 `[object Object]`;`log` 只给宿主日志(`String(e)`,截 300 字,转换钩子抛 ⇒ 占位串),不上屏。永不抛。
143
+ - **`turnFailurePresentation(err)`**(CC-667 第一程;**§126 TH-4**):一次 turn 失败的呈现判定,建在 `classifyTurnWireError` 之上,只读线上事实(状态码 / 机读码 / 自有数据位 `retriable` / 服务端等待窗)。返回冻结读数 `{ category, kind, status?, errorCode?, detail, headline?, name?, retry: { offer, basis }, waitSec? }`:`category` 十个闭集词(`auth` / `billing` / `rate_limited` / `invalid_request` / `capability_unavailable` / `timeout` / `server_error` / `connection_lost` / `parked` / `internal`;列表常量 `TURN_FAILURE_CATEGORIES`);`retry.offer` 要不要给「再试一次」—— 服务端自述 `retriable: true` ⇒ 给(`basis: 'wire'`;「卡仍 pending」族的码除外:那一族上它读作「这张卡还能再决」,不是重发许可),其余按类别缺省(瞬时类给,确定性类〔含 sdk 传输层重试臂按码豁免的确定性 5xx 码〕不给);浏览器宿主的 fetch 拒绝说法(`Failed to fetch` / `Load failed` / `NetworkError …`)归连接断;`waitSec` 只在服务端真给等待窗时在场(头源 `retryAfterMs` 优先,其次体源 `retryAfterSec`,再次配额 `detail.retryAfterSec`),一律上取整、最小 1、不渲 0;`headline` 是连接断 / 流静默 / park / 客户端内部错四种非 http 失败的宿主中性一句话(连接错措辞单源)。结构化拒绝的补充句链与配额文案的编排仍在终端,不在这一程。
144
+ - **`runReattachPolicy(budget, event)` / `REATTACH_MAX_TRIES` / `REATTACH_BUDGET_FRESH`**(CC-667 第一程;**§126 TH-5**):在飞 run 的流断了之后「要不要重新挂回去、等多久、预算怎么花」的纯函数决策,预算是调用方持有的显式状态。普通预算 5 次(掉线与流帽共花;网页端与桌面端此前各写的同一个数);掉线等待 = 提交前被排空实例拒收 ⇒ 包的排空退避、其余 `1000 × 第 n 次` 毫秒,流帽立即重挂;排空终帧不花普通预算(等待与连续次数归 `streamDrainingDecision`),**排空梯用尽后按一次普通流帽处置**(此前网页端放弃、桌面端当流帽,两端分叉);调用方报的「有进展」(排空事件的 `madeProgress`,只指推进了耐久游标的帧)是自述,所以排空终帧另有总次数上限(`drainingTotal`,15 次,用尽后同样按一次普通流帽处置),最坏 20 次重挂就放弃;放弃只有 `no_run_id` / `budget_exhausted`(结局未知,不是失败判决)与坏入参 `bad_input`。
145
+ - **`sandboxDegradeHint(err, host?)` 第二参宿主位**(CC-720;**§126 TH-6**;型 `SandboxHintHost` = `'terminal' | 'web' | 'desktop'`,闭集常量 `SANDBOX_HINT_HOSTS`):五臂的句子分「事实段 + 出路段」,事实段宿主无关,出路段按宿主铸 —— 图形端的句子里没有 `--sandbox` / `sema cloud …` 一类终端出路。缺席 ⇒ 终端(五臂逐字节同 0.97.1);给了而认不出的词 ⇒ 只给事实段。
146
+ - **`engineToolDirectoryOf(source)`**(CC-730;**§125 AD-3**):本跑声明的 MCP 服务器读口,三态 `not_landed` / `unreadable` / `{ state: 'directory', mcpServerPrefixes }`(前缀由引擎自己的命名函数铸出,冻结集;空集 = 本跑一只都不声明)。`source` 两半:`requestMcpServers`(本请求自带的 `mcpServers`)与 `deploymentMcpServers`(部署自己声明的服务器 —— `readMcpCapabilities` 读出的 `face.servers` 行可原样交;宿主自己起、没给它配 MCP 的引擎交 `[]`);任一半缺席 ⇒ `not_landed`。
147
+ - **`excludeToolsAgainstDirectory(exclude, directory)`**(CC-730;**§125 AD-4**):run 级 `excludeTools` 的判官,返回 `{ send, omitted, verdict: 'directory_absent' | 'filtered', disclosure? }` —— 服务器不在本跑声明里的 `mcp__` 名省掉(排除一只挂不上的工具是无操作),别的一律照发;`exclude` 不是数组 ⇒ `TypeError`。本包不改请求装配口的 `excludeTools` 语义。
148
+ - **`ProjectAgentsDeps.toolDirectory`**(可选;CC-729):`projectAgentsForWire` 读它做上面那条过滤;与 `excludeToolsAgainstDirectory` 交同一份读数。
149
+ - **座位 chrome 词表 +6 词(additive)**:`CHROME_EVENT_KINDS` 由六词增为十二词,逐词显式新增 `retry_status` / `context_usage` / `last_turn_usage` / `bgshell_register` / `bgshell_settle` / `memory_saved`(既有六词序不动,新词在末)。进词判据 = 渲染层已有消费臂且义务是呈现;修前座位出站门(`checkSeatChromeEnvelope`)拒这六词,按词表转发 chrome 事件的宿主一只都转不出 ⇒ 座位 lane 上没有重试横幅、上下文环与用量节恒空、后台命令在面板上不可见、没有「Saved N memories」行(都不报错,只是不出现)。新词照旧要真 `laneProof`。公面导出名零变;`ChromeEventKind` 联合 +6 字面量(对它做穷举 `switch` / `Record<ChromeEventKind, …>` 的宿主编译红一次)。宿主若按 `CHROME_EVENT_KINDS.includes(event.kind)` 转发,升级后这六种事件自动开始过境。
150
+ - 各词的缺席语义不变(沿用各臂臂注):`retry_status` 的 `status: null` = 清横幅,不是「没在重试」的证据;`context_usage` 各键缺席 = 引擎没报,不是零;`last_turn_usage` 带 `usageMissing` 时同行用量不是已知的账;`bgshell_register` 缺席 = 面板看不到这条后台命令(不是没有后台命令);`bgshell_settle` 缺席 ≠ 还在跑;`memory_saved` 缺席 ≠ 没写记忆。
151
+ - 🔴 **`workflow_notification_enqueue` 刻意不进座位词表**:它的义务是投递(把 `message` 裸入完成通知队列、空闲时喂模型),投递者只许一个 —— 持有该会话空闲自动提交、装着 `NotificationQueuePort` 的宿主进程。交给渲染层会出两种错:渲染层的队列收不到服务端回声的清扫(`dropQueuedNotificationsForRun` 只清装好的那条队列)⇒ 服务端已注入后再提交一遍;宿主自发的空闲回合里铸出的这只臂渲染层收不到,而本包发臂前已记「已通知」⇒ 永不重投。座位上它的缺席语义 = 宿主进程已入队。按词表转发的座位宿主须在进程侧自己接这只臂。
152
+ - 仍不过座位的其余 required 臂:`plan_review_park` / `approval_request` / `approval_revoke`(座位审批走 `tool_permission_request` 通路)、`task_ledger_sync` / `inline_task_stats`(渲染层无对应载体)。门 `run-seat-contract-keys-test` 新增 M 段:六词带真车道证明过门、无 / 空车道证明仍拒;真适配器铸出的 `retry_status` / `context_usage` / `memory_saved` 原样过门,真铸出的 `workflow_notification_enqueue` 被拒(负控);每只 `required: true` 臂的座位去向成文(在座位词表里,或在归宿主表里带理由)—— 新加一只 required 臂而没裁它过不过座位,门当场红。
153
+ - **`CHROME_ARMS` 的 `required: true` 臂集合有了冻结下限(型面零变、运行期零变)**:下限名单声明在 chrome 臂表自己的类型上(`satisfies`)—— 把一只既有 required 臂改成 `required: false` 编译红,新加 required 臂不同批登进下限也编译红;门 `run-seat-contract-keys-test` M6 读同一份声明,对运行期 `CHROME_ARMS` 再判一次「required 集合 ⊇ 下限」。此前把既有臂降级为可选编译过、门全绿,宿主按本表自检时那只臂的义务就悄悄消失。
154
+ - **事件腿组合器 `composeEventLeg(source, leg, ports)` + 腿表 `EVENT_LEG_KINDS` / `EVENT_LEG_TABLE`**(CC-477;**§126 LG-1**;根入口运行期 +3、型 +25):三腿(`live` / `durable` / `continuation`)× 五级(内 → 外 `bindRun` · `stampOwner` · `hitlFrames` · `askBridge` · `idleTriage`);帧级三级的帧类型域两两不相交(编译期钉在域表自己的型上,组合器按域表分派;零加载期副作用),在每条流上(源流与问答桥开的每条续流)各过一次;流内 `question*` / `elicitation*`(问答桥不在场时连 `tool_approval*`)交端口后吞掉、不进转录,三只 HITL 端口必注(缺 ⇒ 组装期同步抛,错误带自有位 `code: 'host_port_missing'` 与 `ports` 点名);持久化端口 `run.onBound`(绑定值变化:`open` / `frame` / `handoff`)· `run.onTerminal`(每个离开腿的 `done` / `failed` 恰一次,问答桥吞掉的停驻终帧不调)· `run.onRefused`(这次提交没有建成 run:409 在跑拒收 `busy` / 开流之后被拒 `not_created`,带开流时交过的候选 run id 供宿主撤回;拒收帧不登绑定)· `run.isCurrent`(会话切走后三只持久化端口一律不调,帧照放;在场但读不出 / 不是函数同判不是当前代);身份成对取自同一来源(活流上终帧的 run 为准 —— 建行那一刻才命中的幂等重放,头 / `meta` 交的是没建成的候选);问答桥依赖只替换续流腿与审批窗两位,其余每一位按宿主对象原样读(取值器接收者、自有属性描述符不变);只读抽头 `taps`、每流装饰过渡位 `perStream`;`report()` 读缺注的持久化端口 / 端口出错计数 / 投递失败的 HITL 帧数。
155
+ - **按帧绑定两口 `frameBindingOf(frame)` / `inheritFrameBinding(from, to)`**(CC-477;**§126 LG-2**;根入口运行期 +2):绑定住在包内弱表(帧上不加键);组合器登记过的帧(或继承过的新帧)答 `{ taskId, sessionId? }`,别的帧答 `undefined`(说不出,从不拿最近一帧补)。投影端把 `frameBindingOf` 原样交给 `EmitContext.boundRun`;宿主在组合器之外改写帧用 `inheritFrameBinding` 包一行。问答桥九个产出新帧对象的出口(拒绝盖章 / 中断改写 / 分类器拒绝 / 答案卡 / 终帧 run id 修正 / 连坐标记 / 收场真因信封 / 收场合成 `failed` 两处)一律从来源帧继承;合成帧的来源是引发停驻的那一帧(停驻那条 run,换挂后即新 run)。不改调组合器的宿主零变化。
156
+ - **会话规则写口两新码的读法**(CC-733;**§126 PN-1**;服务端 ≥ 7.129.0 / 引擎 7.51.0):`rules.inert_entry`(理由词不是 `earlier_grammar`)⇒ 失败臂 `inert-entry`(体源 `field` / `entry` / `reason` / `verdict` / `currentName` 各自窄读,`reason` 按引擎七词表);收紧与撤销两只结局各加 `inert_entry` 一臂(什么都没写、不重试;收紧侧带 `alreadyInRecord`),各有一句人话;型 `SessionPolicyInertEntryRefusal` / `SessionRuleInertReason`。`rules.invalid_shape` 并进「形不对」的 `request-rejected`(与老服务端同一处置)。臂序:`earlier_grammar` 那一臂先判。
157
+ - **respond 回执的首决回放臂**(CC-733;**§126 PN-4**;sdk 23 `ToolApprovalRespondAck` 判别联合):`readToolApprovalRespondAck` 读两臂(applied / 回放),判别口 `isToolApprovalRespondReplayed(ack)`;活卡决断撞上回放 ⇒ 结局 `decided` 的 `decision` = 回放体里的首决(人按「批」、早先那一决是「拒」⇒ 报拒),`ack` 是回放臂,伴随通知与拒绝归因不出;回放体读不全 ⇒ `approvalId` 对得上且决断词读得出时报那一决、不带 ack,否则未落定;回放体点名别的卡 ⇒ 未落定(不报这一发按的词)。
158
+ - **续跑启动失败按引擎成因分句**(CC-733;**§126 PN-5**;引擎 7.51.0 `RESUME_STARTUP_CAUSES` / 服务端 ≥ 7.129.0 转出):`ParkedResumeStartupDetail.startupCause` 收成五词闭集(型 = sdk `ResumeStartupCause`;表外 ⇒ 缺席),`parkedResumeStartupContent` 有词按词一句(环境没起来 / 会话没了 / 工具不可用 / 部署配置拒 / 决断本身被拒),无词照旧两句。
159
+ - **`inheritEnv` 能力词读器 + 交互车道意图判定 + 告知句**(CC-747;**§126 CP-8**):`observedInheritEnvOwnCredentialsWithheld(baseUrl?)`(能力词 `inherit_env.own_credentials_withheld` 在 `GET /v1/capabilities` 顶层的读数,经总缓存按键读口:`confirmed` / `absent` / `declined`(带值形)/ `unreadable`(落地在手而这一位读不出)/ `unobserved`(没落地;与能力位读器族同一律))· `inheritEnvIntentOf({ lane, projectContextConfirmed, ownCredentialsWithheld, serviceIdentityVerified })`(四件齐 ⇒ `{ send: 'all' }`,否则 `{ send: 'omit', reason }`,成因六词闭集)· `inheritEnvNotConfirmedNotice(lang?)`(那一句,函数形;缺省 / 未知 `lang` ⇒ 英文原句)· `inheritEnvNoticeOf(intent, lang?)`(只在三个能力成因出句)。支持底线服务端不铸这把键 ⇒ 今天读数恒 `absent`、交互车道恒 omit。
160
+ - **`connectorStatusOf({ name, mountFace })` / `connectorStatusLine(reading, lang?)` / `CONNECTOR_STATUS_UNKNOWN_WHYS` + 型 `ConnectorStatusInput` / `ConnectorStatusReading` / `ConnectorStatusUnknownWhy` / `McpDeploymentOutcome`;契约型 `ReaderMintedStatus` / `ReaderMintedState` 自 `@sema-agent/connectors-contract` 原样转出**(CC-520;接入文档 **§126 CS-1 – CS-3**;根入口运行期导出 +3;新运行依赖 `@sema-agent/connectors-contract` `^0.1.1`,本包只用其类型):连接器状态里只由读者铸的两态。`mountFace` 交 `readMcpCapabilities` 的结局原样(这台部署缺省场景的 MCP 服务器名单,逐台现拨);该口的返回型收窄为 `McpDeploymentOutcome`,face 臂多一个出处位 `declaredBy: 'deployment'`(仍可当 `McpProbeOutcome` 用),`probeMcpServers` 的结局(调用方自带的申报)型上交不进、运行期读不出;名单读完而名字不在上面 ⇒ `{ kind: 'reader', status: { state: 'unmounted' } }`;恰在一行而引擎对它的活性观察是 `unreachable` ⇒ `unreachable`;恰在一行而 `reachable` ⇒ `{ kind: 'self_reported', state: 'unknown' }`(授权与否归连接器自己报,本包今天不读);其余 ⇒ `{ kind: 'unknown', why }`,六个成因(名字读不出 / 名单读不出 / 同名多行 / 没有活性读数 / 活性记录读不懂 / 引擎试过看不出)。拨号判词 `status` 不参与 —— `failed` 里有服务器答了的失败(协议错、401),按它判会把这类连接器说成够不着。读不出永不读成没挂上;永不抛。`connectorStatusLine` 给三端同一句英文(十句,不带名字;`lang` 今天只有英文;没挂上那一句写明是缺省场景的名单)。
161
+ - **`claimApprovalCard(identity, signal?)` + 型 `ApprovalCardClaim` / `HostApprovalCardHold`**(CC-607;接入文档 **§126 HL-1**):宿主自己的开卡路(问车道 / 悬挂 ask / 404 重出)开卡前的**登记动词** —— 已结表有这一问且不转停驻 ⇒ `joined`;表上有同一只审批的持有者(活卡 / 停驻行 / 别的宿主路,同一只对称匹配律:同 approvalId,或同 run + 同调用 + 同一件事〔问类集 / 出身 / 强制词〕且持有者还在等人)⇒ 等它放手,结算了 ⇒ `joined`、没结算(含停驻行回执说重开)⇒ 再查一轮;都没有 ⇒ 当拍登记 ⇒ `held`(查表与登记之间无让出)。`held` 的句柄:决断出站前 `sending()`(翻 `respond` 相位),落定 `release(settled?)`(幂等;只在确定结算时给 `'answered'` / `'interrupted'`,带 `approvalId` 时记进进程级已结表)。
162
+ - **卡入参 `supersedes?`(`ApprovalCardSupersedes`)与句口 `approvalSupersedesDetail(card)`**(CC-607;**§126 HL-2**):同一调用上同一件事再呈一张 = 接替卡,由同一调用卡账本派生;`parked` 读已结表的转停驻位;`priorAnswer` = 被接替那张卡上没被引擎收下的答复词(只披露,不预选、不自动送)。
163
+ - **卡入参 `parkRow?`(`ApprovalCardParkRow`:`taskId` / `gatedCallId?` / `deadlineMs?`)**(CC-607;**§126 HL-3**):停驻行腿铸的卡带它(在场 ⇔ 停驻行卡);SLA 墙经 `parkRowDeadlineState` 判,与活卡窗三键两个字段不合并。
164
+ - **`approvalParkingNoticeText(retryAfterMs?)` 上根入口**(CC-607;**§126 HL-4**):停驻告警的函数形,无参与基句常量逐字同。
165
+ - **`answerPayloadFor(answer, lane, caps?)` + 型 `AnswerPayloadLane` / `AnswerPayloadCaps` / `RespondAnswerPayload` / `DecideApprovePayload` / `DecideDenyPayload` / `DecideAnswerPayload`;放行臂 `ApprovalCardAllowDecision.note?`**(CC-610;**§126 HL-5**):人答 → 决断体基形的唯一装配口(respond:决断词 / 编辑后入参 / 拒因备注两道门;decide:`approve` + `remember: 'session'` / `deny` + 截到上限的拒因);包内两条决断腿的基形改由它取。放行备注不上 wire。
166
+ - **`answerCarriage(card)` + 型 `AnswerCarriage`**(CC-610;**§126 HL-6**):`{ allowNote: 'model' | 'none' }`,放行反馈位到货前恒 `'none'`。
167
+ - **`observeApprovalAnswerCommitted(listener)` + 型 `ApprovalAnswerCommitted`**(CC-610;**§126 HL-7**):每张卡的人答在第一发出站之前恰一次(重发 / 去键重发 / 去 remember 回退不再发;撤卡 / 中止 / 卡口失败不发;监听器抛不打断决断)。
168
+ - **`rememberOfferable(card, host?)` + 型 `RememberOffer` / `RememberOfferable`**(CC-611;**§126 HL-8**):「不再询问」三档的三态,读 `standingRowsOf` 同一份读数(两张 `satisfies` 钉在表上的映射表);记不住位 ⇒ 会话档 / 名单会话档 `refused`、持久规则档 `unknown`。
169
+ - **`localAllowRuleEnforceable(rule, caps, host?)` + 型 `LocalAllowRuleEnforcement` / `LocalAllowRuleHostFacts`**(CC-611;**§126 HL-9**):本地 allow 规则写下去会不会被执行 = 宿主阶梯 ∨ 装配判官会把它随请求发给引擎;读不出 ⇒ 不可执行。
170
+ - **`lateDecideOutcomeOf(reply, opts?)` / `LATE_DECIDE_OUTCOMES` + 型 `LateDecideOutcome` / `LateDecideOutcomeReading` / `LateDecideReply`**(CC-673;**§126 HL-10**):迟到决断回包 → 五档闭集(词与终端现形同),收割码读包常量,「别处已决」读唯一判官的机读证据,三只「仍待决」读口先判;respond 腿的 202 停驻中体 ⇒ `unknown`。
171
+ - **`RESPOND_DECISIONS` 上根入口**(CC-679;**§126 HL-13**):冻结元组 `['allow', 'allow_session', 'deny']`。
172
+ - **门记录视图自带「在场读不出」证据**(CC-395;**§126 HM-10**):`GateOutcomeView.unreadable?: readonly GateRecordSeat[]`(`GateRecordSeat` = `'settlement' | 'cause' | 'classifier'`)—— 裸记录上在场、视图里读不出的那几座(按此序、冻结、非空才铸;成形记录上整键缺席,与修前逐字节同)。门记录读器对视图再读时把它并进「在场」判据:`ccToolDenialKindForToolEnd` 对臂与对裸帧同判,`gateOutcomeOf(视图)` 与视图相同。
173
+ - **计划审阅重开参数两臂型**(CC-625;**§126 HM-3**):`ReopenPlanReviewOpts` = `ReopenPlanReviewFreshOpts | ReopenPlanReviewReuseOpts`(公共部分 `ReopenPlanReviewSharedOpts`);见 Changed。
174
+ - **`ApprovalResolution` 成为三条决断车道的返回值**(CC-77;**§126 HM-R1 – HM-R4**):`surfaceFsApprovalAndDecide` / `surfaceToolApprovalFrameAndRespond` / `surfaceSuspendedAskAndRespond` 与停驻解析的问答腿交回同一个值,三臂(`decided` / `not_sent` / `unsettled`)+ 臂外共有位 `lane`(`APPROVAL_RESOLUTION_LANES`:`respond` / `decide` / `ask`)/ `gatedCallId` / `joinedInFlight`;拒绝的宿主事实收进 `decided.deny`(`ApprovalDenyFacts`:`settledBy` / `reason` / `attributionKey`);join 拿持有者那一个值。句子口 `approvalResolutionDetail(r)`:`not_sent` 八词各一句(撤卡 / 编辑被拒两句与原便签逐字同),`unsettled` 为码 · 原文,拼不出 ⇒ `undefined`。
175
+ - **拒绝读数 `readDecisionRefusalReading(err, context?)` / 型 `DecisionRefusalReading` / `RefusalRouteContext`**(CC-77;**§126 HM-R2 / HM-R5**):决断失败的事实(状态码 / 机读码 / 拒句 / retriable / 协议名 / 成因与席位 / 折叠原码 / 指路键 / 归因键拒绝)与判官结论(这一问是否已决 / 门已走 / 续读提示 / 送达判决 / 瞬时 / 409 分码)在决断腿铸点对原抛出物判一次,冻结进 `unsettled.refusal`;判官四口(`classifyDecisionRefusal` / `decisionRefusalAskReading` / `decisionRefusalSaysAskGone` / `isAlreadyResolvedFailure`)收到联合只读存值。`classifyDecisionRefusal` 多一个可选 `{ route }`。`HitlSafetyError` 带标准 `cause`(引擎答了的绑定不符:原 409;本地拦下的不带)。
176
+ - **chrome 臂 `tool_parked`(必接)与 `AdapterContext.continuesPark`**(CC-613;**§126 HM-T1 / HM-T2**):被停驻扣住、还没结算的那只调用摘卡那一拍恰一枚(`toolUseId` + 开始行 `rowUuid`);座位 chrome 词表 +1。宿主在投影续跑流时声明 `continuesPark` ⇒ 同 id 的续跑帧认领原卡(身份由包核对);`exportLedger` / `importLedger` 带停驻行登记 `parkedToolRows`(退役登记 RL-153:上游帧见证到货即退)。
177
+ - **停驻挪动族 +2 码**(CC-768;**§126 HM-R6**):`DECIDE_PARK_MOVED_CODES` 加 `conflict.not_resumable` / `gate_not_tool_approval`(两只 409,门已不在原处 ⇒ 判官「门已走」、宿主可收卡),各带一句「发生了什么」。
178
+ - **转录身份两只读口 `engineRefOf(row)` / `sameEngineRef(a, b)` + 型 `EngineRowRef` / `SameEngineRefVerdict` / `EngineBoundRun`,超集键 `_sema_engine_ref`,投影上下文可选位 `EmitContext.boundRun?(frame)`**(CC-455;接入文档 **§126 ID-2 / ID-3**;根入口运行期导出 +2):投影信封 / 转录行 / `-p` 工具结果帧顶层多一键 `_sema_engine_ref: { eventId?, taskId?, sessionId? }` —— `eventId` = 开场那一帧的引擎事件身份原值,`taskId` / `sessionId` 只取宿主经 `boundRun(frame)` 交的**这一帧**的绑定(入参是正在投影的那一只帧本身);每位知道才带,整键缺席 = 说不出(无事件身份的事件 / 宿主行 / 终局行 / 旧行)。只在投影口出口铸一处(每个带事件身份的帧读一次事件身份、问一次 `boundRun`),行只抄开场那一帧的。`engineRefOf` 只读自有数据位、逐位隔离、永不抛、每次交新对象;`sameEngineRef` 答 `same` / `different` / `unknown`,只有两边都有 `eventId` 才可能答 `same`。去重不读它(去重只读行 `uuid`)。
179
+ - **外来体窄读工具集四口**(CC-680;接入文档 **§126 LF-1**;根入口运行期导出 +4、型 +1):`readOwnDataNonEmptyString(obj, key)`(自有数据位的非空串)· `readOwnDataFiniteNumber(obj, key)`(自有数据位的有限数;`0` 是真值,`NaN` / `±Infinity` / 数字串 / 布尔 / `null` 缺席)· `guardedRead(read)`(读就抛 ⇒ `undefined`;代理陷阱 / 已撤销代理上的读由它收成「缺席」)· `wireFailureCoreOf(e)` + 型 `WireFailureCore`(抛出物的 `{ status?, errorCode?, message }` 三位核:`status` 数才在场、`errorCode` 串才在场、`message` 恒在且永不空串,取句与 `wireFailureTextsOf(e).reason` 同一只函数;永不抛;入参型 `{} | null | undefined`,catch 里的 `unknown` 可直接传)。取代端上各写一份的 `shapeOf(e)`(终端两份、网页端一份,逐字同形;`message` 缺席时退 `String(e)`,对象渲成 `[object Object]`)与 `typeof o.x === 'string' && o.x !== ''` / `Number.isFinite` 的单位读法。读法只有一条:自有数据位,取值器不执行,原型链上的位不算(执行自有访问器的孪生读法仍是包内私有)。不出带 `unknown` 位的 `isPlainObject` / `asRecord` 守卫(类型棘轮不许新增 `unknown` 位;端上改经读口读字段)。
180
+ - **转录通知 XML 单条回读口 `readTaskNotificationXml(xml)` + 型 `TaskNotificationXmlRead`**(CC-682;**§126 LF-2**;导出 +1、型 +1):`{ taskId?, status?, external }` | `undefined`(串里没有通知块)。取串内第一个 `<task-notification …>` 块;`taskId` / `status` 反转义后非空才在场(不 trim),块在场而两位都读不出 ⇒ 只有 `external`;不跳到第二个块。批量口 `parseTranscriptNotificationSeeds` 改调同一个**线性**块解析器(读数对 0.97.1 的整串正则实现逐形不变;未闭合开标签 / 带空白无 `>` 的开标签 / 同名前缀候选不再平方)。终端 `engineTaskNotification.ts` 对单条入队载荷自写的线性回读让位于它。
181
+ - **`context_usage` 载荷唯一窄读口 `contextUsageReadingOf(载荷)` + 型 `ContextUsageReading`**(CC-670;**§126 LF-3**;导出 +1、型 +1):载荷可以是 wire 原始帧、内部臂或 chrome 事件 —— `{ usedTokens?, windowTokens?, compactAtTokens?, sections? }` | `undefined`。三标量各自独立 finite 门(缺席永不折 0);`sections` 逐行 `{id 非空串, tokens 有限数}` 必填门、坏行逐条丢、全丢光 ⇒ 键缺席(不铸 `[]`);四位都缺席 ⇒ `undefined`;只读自有数据位,永不抛;单次至多读 1024 行。投影口与 chrome 臂都经它(窄读只在这一处);终端 `-p` 旁观者自写的三标量门与网页端 `readSections` / `readContextUsage` 让位于它。🔴 `sections[].tokens` 与 `usedTokens` 不同坐标系,禁相减。
182
+ - **超集键 `_sema_gate`:工具结果行的门记录视图**(CC-670「门拆分投影」;**§126 LF-4**;根入口零新名):交互转录的工具结果行与 `-p` 工具结果帧的信封顶层多一键 `_sema_gate`,值 = `gateOutcomeOf` 的视图(处置〔放行 / 被哪一层拒〕+ 结算十四词 + 出身),present-iff 视图读得出(`gate` 读就抛 ⇒ 只缺这一键,结果行与帧照出);不进 `tool_result` block。此前 `deniedBy` 的十个细分词与结算词止步于卡之前(只折成 7 值 `_sema_denial_kind`),网页端于是在 `adapt()` 之前截裸 `tool_end` 帧读 `gate` —— 现在对 `row._sema_gate` 调包内判官(`isDeniedGate` / `gateDeniedBy` / `isDenialLimitAutoDeniedGate` …)与对裸帧调同一判官答案逐帧相同。缺席不带语义,不许反推「放行过」;`settlement.who.approver` / `note` 是 UNTRUSTED-for-display。
183
+ - **计划审阅卡「已呈档位」读口 `planReviewOfferedModeOf(卡 | 帧 | questionId)` + 型 `PlanReviewOfferedMode` / `PlanReviewCardLike`**(CC-681;**§126 LF-5**;导出 +1、型 +2):`'three_choice'`(两个 Yes 各带一档批准后模式)| `'two_choice'`(老两选)| `'unknown'`(没有正面证据),只由正面证据给出。证据序:卡面标签(含 Auto / Manual 的 Yes 之一而无老 Yes ⇒ 三选;含老 Yes 而无那两个 ⇒ 两选;自相矛盾 / 都没有 ⇒ 看 id)→ `questionId`(非计划卡 ⇒ `unknown`;`#reopen-` 重开身份 ⇒ 两选;其余查本包的**已呈档位台账**:包发布这张卡时记、作答后不清、有界 64、重放重呈沿用在场卡原档、卡被关 / 作答后再 arm 是新卡按新声明记)。终端 `planReviewModeAfterOffer.ts` 自记的 taskId → 档位台账与「重开身份恒两选 / 台账缺席落两选 / 在场卡不被重放改写」整套复算让位于它。已呈档位对应的标签集 = `planReviewCardOptions(mode === 'three_choice')`;`unknown` 按保守读域(老两选)处置。
184
+ - **面板行差分口三个可选位**(CC-556;**§126 PL-2**;型面 additive):`PanelDelta` 的 `remove` 臂 `supersededBy?: string`(这一行被证实与另一行是同一只子代、已并进那一行 —— 附属账请移过去,别丢);`usage_delta` 臂 `final?: { totalTokens?: true; toolUses?: true }`(逐键:这一计数来自引擎标了终态的那一帧;从不铸 `false`;数值不变而最终性变了也出一条只带它的差分);`EngineAgentPanelEvent` 的 `fleet-row` 臂入参 `final?`(同形,本包的 fleet 投影对终态行帧只给那一帧上在场的计数置位;旧事件口不带这一位)。
185
+ - **拒装机读身份 `assemblyRefusalOf(x)` · `ASSEMBLY_REFUSAL_CAUSES` · 型 `AssemblyRefusal`**(CC-378;**§126 TK-10 / TK-11**):`permissionsDeclaration` / `permissionsDeclarationReport` 的每一处抛(端口缺席 `ports_missing` / 判官答不上来 `judge_unanswerable` / 入参坏形 `input_malformed`)与代理就绪门的失败结局(`agents_projection_failed` / `agents_not_ready`)带两只自有数据位 `code: 'assembly_refused'` + `detail.cause`;抛出的类与句子不变。读口只读自有数据位(不 `instanceof`、不读类名、不执行取值器),压缩包里同判;`cause` 是这一版不认得的词 ⇒ 读作 `'unknown'`、仍是拒装;不是拒装 ⇒ `undefined`(不是「可以照发」的证据)。装配口里外来抛出物(值级端口自己抛 / 入参取值器抛 / 原始值)一律包一层本包铸的 `Error` 带上身份(`cause` 指回原物;不改别人的对象,就地加位也不可信)。
186
+ - **座位 `error` 臂超集键 `_sema_turnFailure` · 唯一铸点 `seatTurnFailureOf(err)` · 唯一读口 `readSeatTurnFailure(event)` · 型 `SeatTurnFailure`**(CC-378;**§126 TK-9**):turn 失败的呈现判决随座位事件过境 = `turnFailurePresentation` 读数的五位 Pick(`category` / `retry` / `waitSec?` / `headline?` / `errorCode?`;文本在 `error`、状态码在 `code`)。读口只在 `type === "error"` 的普通对象上读自有数据位,坏形 / 类别词不在闭集 ⇒ `undefined`(渲染端只渲 `error` 文本);出站校验器对这一键只登键、不加拒臂(拒掉整条 error 事件会让失败轮被渲成完成);访问器形照座位通用访问器围栏拒(与其它键同律),铸点出的恒是纯数据。
187
+ - `AgentToolListFlaw.rewritten?: true`(CC-378;**§126 TK-4**):`projectAgentsForWire` 的 `toolListFlaws` 里,这一条 deny 已在 wire 上改写成 `currentName` 的那一行带它(只在宿主交了名册、名册里没有这个退役名、条目是整名时)。
188
+ - **`readMcpHttpIdentityHeaders(transport)` + 型 `McpHttpIdentityHeaders`**(CC-735;**§126 PK-2**):MCP http 声明上两个身份头(`principalHeader` / `assertionHeader`)的唯一读法 —— 非空串才算在场;两位同在 ⇒ `{ kind: 'both_set' }`(这一条不进请求面);否则 `{ kind: 'ok' }` 带在场的那几位。云配置腿与本地 `.mcp.json` 腿读同一只;每个键只读一次。
189
+ - **`mcpAssertionHeaderNotSentNotice(specs)`**(CC-735;**§126 PK-3**):请求面 spec 里声明了 `assertionHeader` 的服务器 ⇒ 一句披露(点名前 5 个、余下 `+N more`),没有 ⇒ `undefined`。`cloudEffectiveNotices` 的入参可带投影的 `mcp`(可选位;缺席 ⇒ 不出这一句),出同一句(`warn`)。
190
+ - **`McpConfigLike.principalHeader?` / `assertionHeader?`**(CC-735;**§126 PK-2**):本地 `.mcp.json` 腿开始读这两位(读法同上)。
191
+ - **出身词 `plan_review` 的一句 + 静默表一格、持久规则匹配形 `host` / `subdomain` 两句**(**§126 PK-1**):sdk 22.0.0 声明的新词;两张出身表与匹配形句表的键型取词表属主 core 的闭集(上游再加词而句子没跟 ⇒ 编译红;不取 sdk 的转录,因为这一步写下时 peer 区间里 21.1 与 22 两代 sdk 的词数不同)。
192
+ - **重试行的人话单源**(CC-775;接入文档 **§126 RT-1**):`retryStatusNotice(status, ctx?)` 是重试行那一句话的唯一铸点 —— 入参是 `mapBrainStatusToRetry` 的结果(含它对引擎直报恢复给的 `null`),出 `{ line, recourse?, phase }`。`line` 按 `providerCondition`(引擎闭集 `PROVIDER_CONDITIONS`:`overloaded` / `throttled` / `quota_exhausted` / `stop_other` 各一句,`unknown`、表外词与缺席同读 —— 不编原因,只渲状态码与次数)× `errorStatus`(在场才渲 `(HTTP n)`)× `attempt` / `maxRetries`(同在渲 `attempt n of m`,只一位渲那一位)选句,例:`The model service is overloaded (HTTP 503) — retrying, attempt 2 of 10`;等首 token 是单独一句(`Waiting for the model's first token — 45s so far, limit 5m 0s`),零 error / retry 字样,已等过天花板一半且壳交了模型名时附 `keep waiting or switch model`;终态 `Stopped …`(引擎的 `gave_up` 同时盖住用尽与取消,首句不下结论);恢复 `Recovered — continuing`;壳交的 `modelName` 在场则句首 `<model>: `。`recourse` 让壳按它摆动作词(`switch_model` 壳拼 `/model`),缺席 = 没有可给的出路;`phase` 说这一行描述的相。纯函数、永不抛、位按键隔离读、结果冻结;`RetryStatus` 投影不长第二份字段。公面运行期导出 +1(`retryStatusNotice`)、型 +1(`RetryStatusNotice`)。
193
+ - **模型配置回执 `reason` 闭集与人话句单源**(CC-728;**§126 ST-2**;🔴 型面 BREAKING,见 Changed):`APPLY_MODEL_CONFIG_REASONS`(冻结,五词 `shadowed_by_models_json` / `cheap_provider_unsupported` / `invalid_request` / `write_failed` / `unavailable`)· 型 `ApplyModelConfigReason` · `applyModelConfigReasonDetail(reason)`(每词一句人话只在这里铸;表外词 / 非串 / 空串 / `undefined` 同一句中性句、不回显入参)。前两词此前是桌面端、网页端各写一次的私有字面量,前两句是网页端句表的搬入(逐字同,零体验变化)。
194
+ - **座位流式分片的线形常量、铸口与读口**(CC-668;**§126 ST-4**):`SEAT_STREAM_DELTA_TYPE_OF_CHANNEL`(`text` → `text_delta` / `thinking` → `thinking_delta`)· `seatStreamDeltaMessage(event, { uuid, sessionId })`(适配层 `stream_delta` 臂 → 放在 `message` 事件 `message` 位的消息体,字节与桌面端旧构造逐字同含键序,读不成答 `undefined`)· `readSeatStreamDelta(message)`(四态 `delta` / `unknown_event` / `malformed` / `not_stream_event`,内层表外词丢弃而不是当 committed 消息映射)· 型 `SeatStreamEventMessage` / `SeatStreamDelta` / `SeatStreamChannel` / `SeatStreamDeltaType` / `SeatStreamDeltaSource` / `SeatStreamDeltaIds` / `SeatStreamReading`。事件名 `stream_event` 不是分片的载体。
195
+ - **引擎会话历史 → CC 转录消息的唯一投影口 `projectEngineSessionMessages(rows, { sessionId })`**(CC-668;**§126 ST-5**;新模块 `engineSessionMessages`):user 行的引擎前置内容按行上的**出身元数据**(`engineMinted` / `engineSegments` / `enginePrefixChars`)剪掉 —— 元数据划界、绝不看文本形状,元数据缺席 ⇒ 原文留下(用户自己写的形似提醒的标签不剥;老会话行见 KL-771)、`toolResult` 收成 `user` 腿的 `tool_result` 块、引擎块词汇(`toolCall` / `thinkingSignature` / `mimeType` …)映成 CC 块词汇、`tool_use.input` 与表外块型走 JSON 快照(夹函数 · 取值器 · 环的块丢并记账)、入参数组只读自有数据位、时间戳只取行上真有的(缺席不造)、读不出的行 / 块进跳过账(`unreadable` / `unknownRole` / `noVisibleContent` / `droppedBlocks`)、`uuid` = `restored-<引擎会话 id>-<产出序号>`(重建幂等);型 `EngineHistoryProjection` 等 14 个。取代桌面端「只收 user / assistant、`content` 原样、不剪引擎前置、丢 toolResult、时间戳全盖重建那一刻」的自写口径。
196
+ - **消息目录**(CC-586 第一批;**§126 TX-2 / TX-3**):`EN_MESSAGES`(英文原句,也是键闭集;型 `MessageKey` 由它派生)/ `ZH_MESSAGES`(`Record<MessageKey, string>`:缺键 / 多键编译红),两表冻结;`translate(lang, key, params?, ledger?)` / `createTranslator(lang, ledger?)` / `createMissLedger()` / `uiMissLedger` 与终端同名同形(终端词表 110 键按终端用户实际看到的字节上提 —— 两键里的配置目录路径取终端产物里改写后的形 `~/.sema/local/claude`;另加两句「缺省来源」);语言是实参、不是模块态;表外语言与原型链上的名不再抛错(终端原件会抛;改为英文 / 空串并记台账),宿主传入的台账自身出错也不打断出句。包内铸点的构造口 `msg(key, params?)` / `renderMessage(ref, lang?, ledger?)`:参数里嵌套的 ref 按外层同一语出句;`lang` 缺省 = `DATA_FACE_LANGUAGE`(`'en'`,数据面 —— 进失败原因 / stderr / 模型面的句子不传 `lang`)。型 +6:`MessageKey` / `MessageParams` / `MessageParam` / `MessageRef` / `Translator` / `MissLedger`。本包既有的铸点句(系统提示行、审批卡注 …)本版仍只出英文,迁入目录分后续各批。
197
+ - **界面语言解析链**(CC-586;**§126 TX-4**):`resolveUiLanguageFrom({ saved?, hostTags? })` ⇒ 冻结的 `{ language, source: 'saved' | 'host' | 'default' }`:保存值是 `en` / `zh` ⇒ 用它;否则宿主按优先级排好的 locale 标签里第一个非空串定终(`LC_ALL=C` 盖住后面的 `LANG`)⇒ `pickUiLanguage`;都没有 ⇒ `en` / `default`。只吃值,不读环境、不认设置键名;入参按不可信读、永不抛。型 +2:`UiLanguageSource` / `UiLanguageResolution`。
198
+ - **子代理模型词解析口**(CC-587;**§126 TX-5 / TX-6**):`resolveSubagentModelWord({ word, liveCatalog?, local? })` ⇒ 冻结的 `{ kind, model?, landing?, problem?, label? }`,永不抛。`model` = `agents[].model` 该交的词:目录名原样;档位词 / CC 别名 / `best` 交小写原词,由目标引擎按它自己的档位表展开(本包不改写成落点名);上游模型 id ⇒ 目录行名;只差大小写的唯一键 ⇒ 规范拼写;多义 ⇒ 不带。宿主断言「本进程亲起的引擎」并交该引擎配置的活动档位组(`local`),且这台引擎的目录也读得到(在线目录,或 `local.pool`)时,另给落点预览或落不了点的成因(`tiers-inert` / `chain-unbound` / `binding-not-in-catalog`,此时不带 `model`);档位表或目录读不出就按不知道处置(交原词、不预判),不折成「没绑」;预览不改请求体。`subagentModelWordProblemLine(word, reading, lang?)`:落不了点三因与多义各一句,经消息目录两语出句。型 +6:`SubagentModelWordInput` / `SubagentModelLocalEngine` / `SubagentModelWordReading` / `SubagentModelLanding` / `SubagentModelWordKind` / `SubagentModelWordProblem`。
199
+ - **提交幂等重放的事实位 `_sema_replay` 与唯一提示臂 `result_replayed`**(CC-686;**§126 SC-1 / SC-2 / SC-4**):服务端在流式终帧上标了「同一把幂等键命中了更早的一次提交」(`done.replay: true`),或终局体是重放体 ⇒ 结果帧、合成终局行(`API Error:` / `Run stopped:` / `Model output error:` / `Outcome unknown:`)以及由二者派生的转录行末尾多 `_sema_replay: true`(事实位;读口 `isReplayMarked(message)`,只认顶层自有数据位严格 `true`、永不抛);每个这样的终局恰发一条 chrome 臂 `result_replayed { text }`(零行 / 一行 / 多行都一样,在终局臂全部产出之后),`text` 只说「这次没有新跑」:`No new run was started: this request's idempotency key matched an earlier submission.`。🔴 该臂 `required: true`、进必接臂冻结下限、进座位词表(12 → 13 词):空正文成功与停驻的重放终局零转录行,它是这一轮唯一的可渲染产出。包内三条「是不是重放」读法(流内错配账直读帧位 · 提交编排口私有件 · 终局读数的体位)收成一只(帧位只认自有数据位 ∨ 体位,各自受保护读),`SubmitStreamReading.replay` 同读。真跑的 run 一个字节不变。
200
+ - **工具结果行的四件行级事实与读口**(CC-675;**§126 SC-5 / SC-6**):交互转录的工具结果行与 `-p` 工具结果帧在既有 `_sema_not_executed` 那一格之后多至四个信封键 —— `_sema_collateral_abort`(同批被连坐中止的旁观者;只在宿主跑本包问答桥时可能在场)· `_sema_interrupted_never_started`(引擎说开始前就被中断;单码等值,`interrupted_outcome_unknown` 不算)· `_sema_approval_window_expired` · `_sema_denial_limit_window_expired`(门记录结算词)。两车道同一只铸口、同一读法,只上信封、不进 `tool_result` 块。读口 `toolResultRowFlagsOf(row)` + 型 `ToolResultRowFlags`(四个布尔,逐位隔离、永不抛、新冻结对象;`false` 不是反面)。「未执行」照旧读 `readToolCardOutcome`。
201
+ - **`TRANSCRIPT_ROW_SIDECAR_KEYS`**(CC-675 / CC-686;**§126 SC-7**):本包在交互转录 `user` / `assistant` 行与 `-p` 工具结果帧顶层会铸 / 抄的全部 `_sema_` 键(十四个),冻结元组;按白名单重建行对象的宿主展开它即保住全部行级事实(包加键宿主零改码)。普查门两向钉:漏登红、多登红。
202
+ - **`ModelUsage` 两格占位的缺席位**(CC-626 ④;**§126 SC-10**):`modelUsage[*]` 行(per-turn 镜像与终帧)同行带 `_sema_context_window_absent: true` / `_sema_max_output_tokens_absent: true` —— 同行的 `contextWindow: 0` / `maxOutputTokens: 0` 是 CC 形必填 number 的占位,不是窗口大小 / 输出上限(真值在模型目录 `/v1/models`)。与 `_sema_cost_absent` 同一条两键合读纪律;只读这两格数值的旧消费者行为不变。四只缺席位的超集部分具名为型 `SemaModelUsageAbsenceBits`(`SemaModelUsage = ModelUsage & SemaModelUsageAbsenceBits`,结构不变)。
203
+ - **自愈分诊新结局 `ask-run-settled { taskId, status }`**(CC-760;**§126 SC-14**):宿主证出「待决行已不在」后,本包一手复核(卡前,或两选卡之后的复证)读回终态词 ⇒ 那条 run 已经结束:不出卡、不 cancel、不自动重发(锁可能还没落地释放),上屏句说「已结束、再发一次即可」。修前落 `ask-reopen-failed`(「在等你决定、卡重开不了」)。处置档 `not-delivered`。
204
+ - **跨 run 统一收件箱读器 `readAssistantInbox(assistant, opts?)`**(CC-566;接入文档 **§126 UP-1**;additive):`GET /v1/assistant/inbox` 的三态读数 —— `present`(`entries` 次序逐位等于服务端次序,**包不排序也不重排**;严重度缺席的行读作缺席,不是 0 / 最低档;`true` 型位只认字面 `true`,`hasBidiControls` 缺席不是「已确认干净」;坏形行逐行丢并计 `dropped`)/ `unavailable`(`unauthorized` · `unreadable`〔回体没有数组形 `inbox`、或数组长度读不出 / 不是非负整数,不默认成 0、不渲成空清单〕· `failed`)/ `not-reported`(车道自己答 501,或宿主没交 `assistant` 切片 ⇒ **整臂不渲**)。车道在不在只问这一发自己的答复,不读能力位;后台视图 assistant 腿与本口共用内部判官 `isAssistantLaneAbsent`(不上根入口)。公面 +1 函数 +4 型(`AssistantInboxVerb` / `AssistantInboxEntry` / `AssistantInboxReading` / `AssistantInboxUnavailableReason`)。
205
+ - **优雅让位 `ControlRouter.preempt(opts?)` 与回执句 `preemptReceiptLine(outcome)`**(CC-567;**§126 UP-2**;additive):`POST /v1/assistant/tasks/:id/preempt` 的编排与结局读口 —— 十一形结局(恒是值、绝不抛);🔴 202 不等于让位成功(判别位是回体 `status`:`preempting` = 收下,下一个干净 turn 边界才挂起;`running` = 这条 run 不可让位、什么都没动);至多一次(判类与 steer / cancel 同一把尺);车道不可用(这一口自己答 501,或客户端没有 `assistant` 切片)**缺省回落 cancel**(硬停,不可续跑,结局 `cancelled-instead`),`onUnavailable: 'report'` 则不动 run(任何非 `'cancel'` 的值含 `false` / 拼错都落这一侧);回落取消的是**入口捕获的那一只 run**,等答复期间新一轮 `submit` 换了在飞 run 也不会误停新任务;每个结局恰一句宿主中性的回执句。公面 +1 函数 +4 型(`PreemptOutcome` / `PreemptParkedStatus` / `PreemptOptions` / `AssistantPreemptLike`);`ControlClientLike` 多可选位 `assistant`。
206
+ - **设备注册三动词发射口与身份不符读法**(CC-573;**§126 UP-3**;additive):`issueEnrollToken` / `enrollDevice` / `revokeDevice` 经 sdk 客户端 `devices` 切片发(与换绑三口同一份拒码闭集与至多一次尺,结局恒是值、绝不抛;一次性令牌只在签发口 `ok` 结局里出现,不进别的结局 / 呈现句 / 日志;引擎返回的每个字符串位〔拒句 / 机读码 / 错误类名 / 成功回体 id〕含令牌就整位不进结局);`deviceIdentityMismatchOf`(`device.identity_mismatch` 的机读码腿与工具错误正文前缀腿收一只读口,`boundDeviceId` 只读结构化位、不从散文里抠)· `deviceIdentityMismatchLine` · `deviceRegistrationOutcomeLine(verb, outcome)`(三动词非 `ok` 结局的一句话)。`deviceId` 的身份形判官住在 sdk 的 `device` 子路径,宿主经 `acceptDeviceId` 交进来。终端设备面网络豁免随换读整撤。公面 +6 函数 +10 型。
207
+ - **续读位置读口 `durableSeqOf(ev)` 上根入口**(CC-571;**§126 UP-4**;additive,读法收紧一处见 Fixed):桌面端主进程自带的 `durableEventId` 与包内读法对同一帧答案不同(数值 `id` · 坏形 `id` 遮住有效 `seq` · 串 `seq` · 三种代际号事件体的 `seq`,共九形),同一件事两条读法;现在只有包里这一只,桌面端换读并删自算。公面 +1 函数。
208
+ - **内建子代理名表 `BUILTIN_SUBAGENT_TYPES`(根入口)**(CC-748;**§126 BA-1**;additive):默认部署不自带 agent 定义也接受的 `subagent_type` 词 —— 两个内建定义 `Explore` / `Plan` 与两条内建路由 `fork` / `general-purpose`(同名的部署定义会顶替内建项),逐词逐序同引擎;冻结字面元组,成员型取 `(typeof BUILTIN_SUBAGENT_TYPES)[number]`。构建期取自引擎包根同名常量(名随引擎),编译期对引擎型 `BuiltinSubagentType` 两向钉;引擎包根没有该名(`≤ 7.51.1`)⇒ 生成器拒生成,不回落手写。宿主渲染类型选择器、判「这个类型词引擎认不认」读它,不再自抄一份。`worker` 不是引擎词,不在表里。公面 +1 常量。
209
+
210
+
211
+
212
+
213
+
214
+ ### Changed
215
+
216
+ - **`policy` 出身句补「模式默认的问」半边**(CC-623 ⒜;**§126 WD-4**):`askOriginDetail('policy')` 由 `this deployment’s permission policy asks about this call` 改为 `this deployment’s permission policy, or the permission mode’s default, asks about this call`(引擎侧该词本就覆盖部署策略的 ask 与模式缺省的 ask 两种机制)。出包句改口,同批动门;读到这句原文的端注意。
217
+ - **崩溃遗留通告的因由句表改键表**(CC-666):`crashConvergedNotice` / `crashConvergedNeedsHumanSentence` 的输出**逐字节不变**(门里冻结了重构前基线的金样),内部由「函数表」改为 `satisfies Record<…>` 键表(`one` / `many` 两形),逐行句读同一张表。
218
+ - 已知限制档删行(内部档,不在发布清单内):KL-122 —— 前提「`rule_store_unavailable` 的 call 形按必问收」随旧判定口退役已不成立:判定口 `automaticAnswerVerdict` 对带 `requiresRealApproval` 的真帧,规则 / 钩子两车道答 `must_ask`(真人位),姿态车道按问类行读(0.98.0 PN-2 起 `rule_unreadable` 对姿态车道同样不免疫于必问 ⇒ `must_ask` / road `ask_class` / askClass `rule_unreadable`;0.97.1 答 `may_answer` 带 `releaseReason`,本版改口见 §126 NG-2 / G-WD10);门里三车道读数各一格。条数帽(CC-628 ⑤)不在本包铸 1000 镜像:帽只在服务端一处,本包 `permissionsDeclaration` 不截断(门里源码零数值常量 + 1001 条不截),提交前知道上限的需求改挂受理上限表到货当版读。
219
+ - **活卡帧腿的卡入参事实改由同一只投影核铸**(CC-657;**§126 AC-1**):帧上 `toolName` 不是串 ⇒ 卡上 `toolName` 为空串(与 v1 同一读器;此前回落 `'Write'`);帧上读就抛的键只丢那一键、记进 `unreadableEvidence`、卡照常呈出(此前整只活卡失败、不 respond)。
220
+ - **活卡帧腿窗三键的本地锚改为帧到手那一拍**(CC-658;**§126 AC-3**):`receivedAtMs` 在本包收到这只帧、任何等待之前取(此前在卡装配时取)。
221
+ - **v1 投影口读卡顶层的 `requiresRealApproval === true`**(CC-669;**§126 AC-6**):此前只读 `risk.requiresRealApproval`;方向只往「要真人」收紧。自动作答判定口同样读 `risk` 子树。
222
+ - **自动作答判定 `automaticAnswerVerdict` 读卡上的读不出登记 `unreadableEvidence`**(**§126 AC-1 / AC-6**):登记里有「记不住位 / 候选」之外的任一键(治理 / 真人 / 强制 / 强制词 / 出身 / 报价缺席词 / 让位证据 / 问类),或登记位不是串数组 ⇒ 三车道都答 unknown `card_unreadable`。此前不读:投影口按键隔离丢掉的必问证据在判定口读成「没有」。
223
+ - **`ApprovalCardRequest.probeCause` 的呈现归包**(CC-713;**§126 AC-4**):此前成文「内部结构的窄读、消毒与呈现全部归端」,今天 `roots` / `further` 两行由 `probeCauseRowsOf` 渲。
224
+ - **引擎地址判法统一(行为变,§126 TP-1 / TP-2 / 126y)**:取两端旧答里更严的一边 —— ① `http://127.0.0.2` 一类非字面本机的明文地址拒(桌面端旧答是收);② 带 query 或 fragment 的地址拒(终端旧答是收;sdk 的请求地址是串拼接,带 query 的基址会把路径拼进 query,请求打到别的资源)。换读前两端各自的旧判法不动。
225
+ - **展示出口在分号紧贴的值上多遮**(CC-721;**§126 DU-1**;行为面收紧):标签 / 方案词的裸值停在 `;` 上而其后紧跟词字符(不是空白 / 停字符 / 下一对 `名=` `名:` / 凭据词)时,值跨过它续扫 —— `api_key=<值>;owner@corp.example.com` 这类紧贴片段连同值一枚记号(KL-760)。连接串与 Cookie 一类「分号 + 下一对键值」照旧止在下一对之前;逗号的读法不动(单数标签后是散文或下一对键值,复数标签后逐项读)。
226
+ - **配置地址展示口(`displayConfiguredUrl`)与上传判据(`queryCarriesCredential`)按「整串一条地址」读**(CC-731;**§126 DU-4 – DU-7**):URL 片段延到串尾(停字符与空白不再截断它),多一只删 TAB / LF / CR 之后的解析器读面;以 `/` `?` `#` 起头的相对引用按地址切分、query 值逐值遮;authority 恰是 `host[:端口]` 时主机名不再被读成「标签 + 值」。自由文本出口(`displayUntrusted`)读法不变。
227
+ - **重试倒计时锚 = `RetryStatus.deadline` 一位**(CC-626 ①;行为变;**§126 SC-8**):产生者的 `retryAtMs` 是有限数且与本机现算值(`now + 剩余量`)相差 ≤ 5 s ⇒ `deadline` 取它,否则取本机现算值(相差更大 = 跨机器时钟偏移 / 单位漂移 / 畸形值占主导)。修前 `deadline` 只给本机现算值、`retryAtMs` 旁挂「端自己选」⇒ 一端在渲染行里自带同一只二选一,另两端只读 `deadline`。`retryAtMs` 照旧原样透传。只读 `deadline` 的宿主倒计时锚改善(差 ≤ 5 s),零改码。
228
+ - **终局读法:park 词先于因由座判**(CC-626 ②;**§126 SC-9**):`readRunTerminal` 对「顶层 `status` 是 park 词(`suspended` / `needs_review`)而 `terminal` 读不出」的体由 `unknown` 改读 `paused`(带 `flatStatus`、不编门),与 sdk `SyncSubmitResult` 文档的三代通用读法同判序。真服务端不铸这一形(因由座成形时两者早已同判)。
229
+ - **任务停止 409 分类只认机读码**(CC-626 ⑥;**§126 SC-11**):`classifyTaskStopConflict` 不再在 `errorCode` 缺席时从 `message` 里按子串认 `stop.*` 码 —— 码缺席 ⇒ `unknown_conflict`(处置与五形相同:行不翻)。sdk 与宿主自带连线的 client 都带 `errorCode`。
230
+ - **三只读数改名带后缀 `Reading`**(CC-589;🔴 型面 BREAKING;**§126 TS-2**):`RuleOffer` → `RuleOfferReading`(= sdk `RuleOffer` 两臂各交叉本包铸的 `offerIndex`,batch 臂的 `uncoveredDetail` 保持只读数组;`readRuleOffers` / `readRuleOfferSupply` 的返回元素与卡入参 `ruleOffers` / `ruleOffersReadOnly` 的元素型)· `MemoryEntryOriginMark` → `MemoryEntryOriginMarkReading`(一行外源标记的三态读数;sdk 的同名型是标记对象本身)· `CrashConvergedRow` → `CrashConvergedRowReading`(收敛行 + 本包铸的 `needsHumanReason`;sdk 22 起导出的同名 wire 行型没有这一位)。形不变,只换名;运行期零变化。
231
+ - **二十三个与 sdk 同名的型改为再导出 sdk 的同一符号**(CC-589;型面;**§126 TS-3**):`ToolApprovalFrame` · `QuestionFrame` · `QuestionAnswer` · `AskQuestion` · `AskQuestionOption` · `RuleOfferMatch` · `RuleOfferBatchMember` · `RuleOfferUncoveredDetail` · `RuleOfferUncoveredReason` · `AskOrigin` · `RuleOffersAbsence` · `DenialLimitKind` · `DenialLimitFallback` · `PersistedRuleAnchor` · `RunDeathVerdictCode` · `AbortCause` · `PromptBlockCause` · `McpLivenessState` · `McpServerSpec` · `PermissionMode` · `StampedAgentEvent` · `FleetTaskStatus` · `MemoryErasedBinding`。十九名形不变(此前是派生别名或同形手抄);四名的形改为 sdk 的形:`ToolApprovalFrame`(此前把十位上游闭集写成宽串 / `unknown`,且缺 sdk 帧型上的 `ruleSuggestions` / `classifierUnavailable` / `ruleStoreUnreadable` 三只退役键)· `AskQuestionOption.description` 必填(此前可缺)· `AskQuestion.multiSelect` 可缺(此前必填)· `QuestionFrame.outcome` 两词 `answered` / `unanswered`(此前宽串)且多 `serverNowMs` 与索引签名。这些型从此跟着消费端装的 sdk 走(peer 地板 `>=23.0.2`)。运行期一字节不变:帧是不可信面,各读口照旧按开集窄读。
232
+ - **开发依赖与地板**(CC-733;**§126 PN-2**):sdk `^23.0.2`、引擎 `^7.51.2`;peer 地板 `>=23.0.2`、支持底线 sdk 一项 23.0.2(服务端 / 引擎两项不动)。生成表重生成:通告码册 90 → 93(`config.read_deny_swapped` / `tool_result.media_refused` / 服务端自铸 `permission.entry_mode_clamped`);仲裁表 −`governance_unavailable`(并进 `rule_unreadable`)、`rule_unreadable` 改为 bypass 免疫、`unverifiable_delete` 不再给分类器;放行理由表只剩 `target_unresolved`;条目惰性理由 +`earlier_grammar`;新生成两张表(通知终态 / 续跑启动成因),`CORE_TASK_NOTIFICATION_TERMINAL_STATUSES` 改取生成物(值不变)。
233
+ - **「为什么没有『不再询问』」与规则车道判定口**(CC-733;**§126 PN-3**;引擎 7.51.0 把 `shadowed` 拆成 `allow_outranked` / `ask_rule_matched`):`ruleOffersAbsenceDetail` 两新词各一句,部署名单问那一句挪到 `ask_rule_matched`;判定口规则车道第 7 行改按唯一反面词判 —— 缺席词在场且不是 `lane_cannot_speak` ⇒ 必问(两新词、老服务端的旧词、比本包新的词同一条)。
234
+ - **会话规则记录里有本包认不得的桶 ⇒ 读不懂、不回写**(CC-733;**§126 PN-6**):认得的桶与 `rev` / `gen` / `grammar` 之外的自有键(可枚举与否同读),值是数组(空数组也算)或读不出 ⇒ `malformed` / `rule_field`,收紧 / 撤销一个写都不发(整份替换下带不回去的桶 = 回写即清掉);非数组的认不得的键照旧当元数据放过。老服务端(7.126 – 7.128;同版起低于支持底线)上带命令桶的会话因此收紧不了、旧名也撤不掉,运营方先清掉那两只桶(Known limits KL-796,同版退出射程:服务端 7.129.0 起店对这一形读回「坏」)。
235
+ - **`routePairingVerdict('ok:unpinned')` ⇒ `unknown`**(CC-733;**§126 PN-7**;引擎 7.51.0 #1531 退役这一姿态,那一形的部署在新引擎上每个请求拒为 `broken:credential_mismatch`):原词照带。
236
+ - **崩溃收敛行读数 `CrashConvergedRowReading` 的 wire 半改从 sdk `CrashConvergedRow` 派生**(**§126 PN-11**;`extends Readonly<CrashConvergedRow>`,本包只多铸 `needsHumanReason`;形不变)。同批:能力词 `inherit_env.own_credentials_withheld` 的键名型改钉在 sdk 能力词表 `EngineCapabilityWord` 上(sdk 23.0.0 到货;运行期字节不变)。
237
+ - **代理能力判定(`capabilities.taskAgents`)改读总缓存**(CC-624 ①;**§126 CP-1**;行为变):准备口不再自持一份探测出的判定 —— 宿主的探测落地了就零额外请求;同一地址失效换代后跟着新引擎走 —— 准备口按「地址 × 能力代际」认世代,同址换代后再准备即起新的一代(修前旧判定永久固化:同址重启的新引擎收代理也不带、或明说不收还照带);同步读面当拍按缓存判定(确证不收 ⇒ 不带)。单发口 `engineSupportsTaskAgents` 经同一条无键读法、同一张判定表:回体不是普通记录(含 `null`)⇒ `undefined`(修前非对象答 `false`);位读不出(访问器)照旧 `undefined`。
238
+ - **`readEngineAgentRegistry(client, sessionId, capsBaseUrl, opts?)` 第三参换成能力证据键**(CC-624 ③;**§126 CP-2**;型面 BREAKING):读总缓存里这把键上的 `background.listFace`,不再读宿主另交的 caps 对象;这把键上没落地 / 能力位读不出 ⇒ 新成因 `capability_unknown`(不发请求;修前访问器形读作 `read_failed`)。`EngineAgentRegistryUnavailableWhy` +1 词。
239
+ - **任务句柄能力只有一只判官**(CC-624 ⑥;**§126 CP-3**;行为零变):读输出 / 停止两只动词的宿主连线形改经 `engineTaskHandlesCapable`(修前另有两处直读能力位);连线形没点名证据键照旧不判、不发。
240
+ - **`observedCenterWiring` 的读数不再带 `caller`**(CC-624 ⑦;**§126 CP-4**;行为变):按地址的缓存答不了按身份的问题 —— 配了租约时对缓存读数调 `callerQuotaLease` 答 `unknown`;要调用方租约,对这个身份自己取的回体直调 `projectCenterWiringCapability`(照带 `caller`)。
241
+ - **`/rewind` 纪元位没报的那一句不再说引擎版本**(CC-624 ⑧;**§126 CP-5**):`rewindRestoreFilesEpochDetail` 的 `not_reported` 句去掉 `(older engine)`(支持底线以上的服务端恒铸这一位,缺席不是版本信号)。
242
+ - **能力回体的普通记录判据只有一只**(CC-726;**§126 CP-6**;行为变,收窄到别的 realm):别的 realm(vm 上下文 / iframe)解析出来的回体与本 realm 同一份 JSON 逐读器同答(修前附件席位读器对别的 realm 的 `{}` 答 `unreadable`、本 realm 答 `not_reported`)。
243
+ - **执行车道 `isolated` 位读就抛 ⇒ 整格畸形**(CC-639;**§126 CP-7**;行为变,收紧方向):自有访问器 / 描述符陷阱抛不再按位降级成 `isolatedAbsent: 'unreadable'` 而整格 present —— 读口答 `unreadable`、`toolsRunHereFromExecutionLane` 答 `false`、本机无沙箱判定答 `unknown`;值不是严格布尔仍按位记 `unreadable`。
244
+ - **活卡入口与停驻行腿对偶查持有表**(CC-607;**§126 HL-1**;行为变):停驻行卡在屏时,同 run 同调用的活卡帧不再呈第二张卡、不再发 respond(等停驻行落定,join 它的结局并在本帧的审批 id 下记已结表);两边都看得见宿主经 `claimApprovalCard` 登记的卡。`joinApprovalHolder` 同读三臂(修前只看活卡),本版起是过渡口(复核期 0.99.0)。
245
+ - **`replayedApprovalClosesCardFrame` 收进确定结局**(CC-725 ②;**§126 HL-11**;成文改口):本进程已结(`answered` / `interrupted` / `closed_by_engine`)且不转停驻的处置答 `true`(修前 `false`);处置 `decided` 臂多一个可选位 `parked?: true`(转停驻的收口帧,present-iff)。
246
+ - **`ToolApprovalRespondDecision` 改为 sdk `ToolApprovalDecision` 的别名**(CC-679;**§126 HL-13**;值域恒等)。
247
+ - **停驻带调用身份时,连坐判别直接认它**(CC-625;**§126 HM-1**;行为变):`done{suspended}.result.toolCallId` / 耐久 `suspended.toolCallId` 在场 ⇒ 这一批 abort 帧里它就是主角,其余**宿主车道**、收口帧没有指向别的门的扣留帧盖 `_sema_collateral_abort`(同族兄弟、主角起跑拼写不在族表里、主角是后起的那一只,都分得开;子代车道的帧与收口帧上 `gatedCallId` 指向别的调用的帧可能是另一张门的主角,不盖)。修前这一位在 wire 上也不读,同族两只并列 ⇒ 整批不标(屏上 N 行同文红字)。身份缺席(服务端成文的缺席形)⇒ 推断臂不变。真引擎录下的帧上,新盖位的旁观帧与引擎在它自己收口帧上铸的 `gatedCallId` 同指主角。
248
+ - **计划审阅重开:复用同 id 与注入投递互斥**(CC-625;**§126 HM-3**;🔴 型面 BREAKING):`mintFreshQuestionId: false` 那一臂上 `deliverDecision` / `wire` / `onOutcome` 是 `never`;无型宿主同给 ⇒ 当场拒(`{ reopened: false }` + error 留痕、零帧)。修前同给时在复用分支「不生效、debug 留痕」、在铸新分支又生效。三端今天零调用这一组合。
249
+ - **待决清单 `pending` 段的坏形只有一个判官**(CC-625;**§126 HM-6**;行为变):整段读不出 ⇒ 先发「不知道」、再逃逸(轮询腿连续逃逸到上限诚实转 idle;逃逸不记 `listErrors`);可读行 + 读不出的行 ⇒ 提交可读行、快照带 `pendingDropped`(与 `livePending` 段同律);**不完整的快照(任一段有丢弃行)不清偿「失败之后要再完整读一次」的欠账** —— push 模式下照旧退避重取,读到完整的那一发才销账(修前半坏形清偿欠账,之后只有心跳时那几行没人补读)。修前另靠「修前摘要会不会抛」决定逃逸与否,`[{}]` 这类整段读不出只记一次失败不进熔断、「可读行 + `null` 行」整次逃逸。
250
+ - **`tool_start` 入参快照一张表**(CC-625;**§126 HM-7**):gated 调用的快照首写即冻结、不被在飞容量淘汰、不随收口删;非 gated 条目照旧有界、收口即删。可见差异:一只 gated 调用之后又有很多只调用起跑时,它被分类器拒绝的现场仍带得到入参(修前在飞那一份会被挤掉)。
251
+ - **工具输出文字读法一只**(CC-627;**§126 HM-11**;行为变):`coerceOutput`(子代内容账本的结果位)对数 / 布尔 / 对象形答 `undefined`(读不出 = 缺席),与 `flattenWireOutput` / 转录投影同一只读法(`toolEndOutputText`);修前它对这几形出 JSON 正文,主转录卡上同一只结果是空正文。裸串与块数组不变。
252
+ - **面板行第一次绑定即定**(CC-625;**§126 HM-8**):行为不变,规则成文 —— 同一子代行先后点名两张卡时仍绑第一张。
253
+ - **cause 两张表**(CC-77;**§126 HM-R3**):`not_sent` +`wrong_gate`(行在等、门不对;修前读成 `fetch_failed`)+`safety_stop`(本地发送前拦下的安全停,修前住 `unsettled`);`unsettled` 由读数投影 `engine_refused` / `engine_error`(5xx 可能已落库)/ `no_answer`,`respond_failed` / `decide_failed` / `safety_stop` 出表;202 停驻体读不出或点名别的卡读成 `unreadable`。
254
+ - **决断失败带状态码时不再按失败文字扫「门早已决」词表**(CC-77;**§126 HM-R3**;行为面收紧):停驻解析与端的重开挂点读的 `isAlreadyResolvedFailure` 对决断结局按存好的读数判 —— 状态码在场 = 服务端判决已读,失败文字不顶替它;修前决断腿的拍平结局丢了状态码,带 422 / 409 的失败若原句里恰有 `already` / `resolved` / `not found` 一类词,会被读成「门已决」、空转一轮续读。无状态码且码不被任何表认领的老形照旧扫词。
255
+ - **唯一送达判点**(CC-77;**§126 HM-R5**):「引擎拿这一发怎么了」只按状态码 + 先验证据表(`corrupt` 500 × 计划审阅 / 审批决定 / 活卡答复路由 ⇒ 处理前就拒)判。计划审阅:503 + `capability.*` / `feature.*` 由「没生效」变「未确认」、501 无码由「未确认」变「没生效」;手动压缩:501 无码由「失败」变「被拒」、503 + `capability.*` 由「被拒」变「失败」,引擎答 5xx 的失败带 `unconfirmed: true`(说不准,不是「没压」)。审批面读数不变。
256
+ - **工具行终态随执行腿**(CC-613;**§126 HM-T1 – HM-T4**):被停驻扣住的那只调用(`gate.parked` 且 `gatedCallId === toolCallId`)不再铸「Operation aborted」终态行(交互转录与 `-p` 流同一判据),它的终态由执行腿的结果铸;续跑帧只在带见证(宿主声明 / 问答桥在同一次投影里拼进来的续跑)时接回原行,否则按一次新调用出一行。停驻卡上按 Esc(包自发中断拒绝)那一行照旧落「Interrupted」,并带分类词 `_sema_denial_kind: 'interrupted'`。问答桥排水不再把被扣主角记已收口(之后到达的执行腿结果不被吞)。
257
+ - **续跑预检拒的永久形**(CC-768 ②;**§126 HM-R6**):`resume.preflight_rejected` 拒体带机读结算位(`detail.settledBy` / `detail.rowStatus`)⇒ 按位读「门已走」;两位都缺席时 `retriable` 严格非 `true` ⇒ 门已走(过渡读法,退役登记 RL-154),`retriable: true` 照旧「稍后再试」。
258
+ - **🔴 转录 / 信封 id 值形变更:有引擎事件身份的出口对象按身份确定性派生**(CC-190;接入文档 **§126 ID-1 / 126y**):投影口出口在事件带 `eventId` 时给信封铸确定的 `uuid`(不再取随机值);由信封派生的转录行、段身份、attachment 事件 id、每响应 `message.id` 因而在同一组 wire 事件重投时同值(增量腿的文本 / 思考行按开场帧 + 收口帧派生:切点相同同值,切点不同不同值 —— 同 `uuid` 恒同正文);`done` 帧带 run 身份时结果帧与两只合成终局行按它派生;压缩分割线在 `compacted` 带 `eventId` 时确定。工具结果行的 `uuid` 照旧取引擎 `eventId`(跨版本同值)。升级边界:0.97.x 与本版投同一段事件得两套 id(工具结果行与 `memory_saved` 事件的 `id` 除外),旧转录不迁移。
259
+ - **段身份去窗口序号**(CC-190;**§126 ID-1**):`_sema_segment_id` / `text_segment_end.segmentId` 由「窗口锚 + 从流开场数的窗口序号」改为「窗口锚 + 固定标签」⇒ 从段界之后中途接上的投影与全量投影段身份相等;durable 整条消息腿的内容帧同样当窗口锚(此前那一形落宿主铸号)。
260
+ - **`-p` 工具结果帧的 `uuid` 改取与交互转录工具结果行同一只身份**(CC-190 / CC-455;**§126 ID-1**):引擎 `eventId`,缺席按调用 id 稳定派生;此前骑内部臂信封的 id,两车道同一次结果不同值。帧上多 `_sema_engine_ref`(与行 `uuid` 同源时带)。
261
+ - **🔴 型面 BREAKING:`deriveTranscriptId` 入参去 `seq` 键**(CC-190;**§126 ID-4 / 126y**):SSE `id:` / 事件序号是续流游标、不是身份;只带 `seq` 的帧改得宿主铸号(`ctx.uuid()`),不再两个 run 的同一 `seq` 撞同一 id。帧 `id` / `toolCallId` 两档答案一字不变。
262
+ - **`context_usage` chrome 臂的 `sections[]` 逐行重建**(CC-670;**§126 LF-3**;行为变):修前臂只判 `Array.isArray(sections)` 就整只透传,直喂 `adapt()` 的毒行(注入的键、非有限 `tokens`、`null` 行)原样进 chrome;现在与投影口同律 —— 坏行逐条丢、注入的键不过境、全丢光 ⇒ `sections` 键缺席、四位都缺席 ⇒ 零 chrome。经投影口的 JSON 形帧读数不变(投影口本来就逐行滤);读法同时收紧为只读自有数据位(原型链上的位、自有访问器不再被读),`sections` 单次至多读 1024 行(修前无上限)。读法收紧到自有数据位:只在原型链上的位与自有访问器不再被读。
263
+ - **转录通知 XML 批量口的解析改为线性块解析器**(CC-682;**§126 LF-2**;读数不变):见 Added。
264
+ - **`ContextUsageSectionView` 改为类型别名**(CC-670;零编译变化):与 `contextUsageReadingOf` 读数里的行同一个型。
265
+ - **`ReopenPlanReviewOpts.presentationReceiptMs` 由可选改必填**(RL-116 退役的型面一半;**§126 LF-6**):见 Removed。
266
+ - **面板归约口:每只子代恰一条记录**(CC-556;**§126 PL-1**;🔴 行为变,126y):此前实现粒度是「每把被观测到的键一条」—— 先按 UUID 上屏的那一形,同一只子代有两条记录(尾段一条、UUID 一条,靠所有权字段互指),委派卡经两类别名参与身份。现在:一张身份索引(fleet 行 id 尾段与子运行 id 共一个键空间);同一帧上同时说出两把 id(行帧 `{id, transcriptId}` / 锚帧)才绑定,两把分属两条记录 ⇒ 合并(差分口 `remove{败者, supersededBy: 幸存者}`,旧事件口不发任何新东西);委派卡只是属性;消费端键第一次交出时冻结 —— 复活(含换转录锚)落在那一把键上;用量在同一 (记录, 已知代际) 内单调取最大,有 `cycleSeq` 的子代上 tick(不带代际)不碰用量,无 `cycleSeq` 的子代上行帧把同一尾段绑到新的子运行 id = 换代,终态只冻结阶段不冻结用量;首见终态行只在本进程从没见过这只子代(没跑过 / 没结过 / 消费端没见过,且委派卡也没见过)时才缓,缓住的那条只由解析到同一条记录的终态事实放出;本代绑在本 turn 开着的委派卡上的子代,投影看到的终态行只交用量、终态归关卡腿(只有它带得出最终报告);常驻标与转录锚是那只子代记录上的一个位(尾段 / UUID / 消费端键读同一个);有界按整条记录(8192,先让行已结的,按最近最少被帧命中的序)。
267
+ - **设置桶 deny / ask / 命令行 deny 原样上请求体**(CC-378;**§126 TK-1**;🔴 行为变):`~/` 开头的路径规则、规则编译器拒收的、括号写坏 / 无前缀 `__` / 不完整协议名 / 段铸不出 / 无现名的退役名(及其内容形)不再被扣下 —— 修前是「扣下 + 报告口点名 + 请求照跑」,只调投口的宿主以为在场的 deny 实际没发。现在每一条非空规则串都上体,只做等价改写(退役名 → 判官现名〔现名须过名字关〕、`X(*)` / `X()` ⇒ `X`、整服务器 / 整 peer ⇒ `__*`、去两端空白);报告口 `kept` 在这两桶只剩 `empty_rule` / `duplicate`。后果:本机引擎与沙箱、声明了家目录的远端车道上 `~/` 规则开始生效;其余每一形整请求 422 点名那一条。allow 桶逐字节不变(安全投影只罩 allow)。
268
+ - **`projectAgentsForWire` 收紧约束不删不截不丢**(CC-378;**§126 TK-4**;🔴 行为变):工具清单条目不再按长度剔、按条数截;`tools` 写了(任何数组,含 `[]` / `['']`)⇒ `allowTools` 恒在场(读剩空 ⇒ `[]` = 什么都不给;修前回落继承全部);名长 / `maxTurns` 定义写什么上什么(`isolation` 非 `"worktree"` 照旧丢键 + 一行:wire 型只有这一个值,KL-781)。超帽 / 越界由服务端整请求 400 点名字段。deny 里判官给了现名的退役名**只在宿主交了名册、且名册里没有这个名**时改写成现名(改写过的条目不再触发扣送;告警点名改写)。本版不动:超 32 只照旧截断 + 一行(随上游到货再退,KL-777);扣送开关、`tools` 里判官问题条目与目录省略的单条省三处同版随支持底线抬到 7.129.1 退(RL-142 / RL-143 / RL-144,见 Removed)。
269
+ - **`awaitTaskAgentsWire()` 回结局**(CC-378;**§126 TK-12**;型面改口 `void` → `{ ok: true } | { ok: false, refusal }`):本代投影抛 ⇒ `agents_projection_failed`;到点仍无结论 ⇒ `agents_not_ready`;引擎确证不收代理 / 未 prepare ⇒ `{ ok: true }`。修前投影失败只在调试开关下出声、到点照放 —— 那一发不带自定义代理,内置同名代理顶掉用户的覆盖。失败的那一代下一次就绪门重投一次;到点时就绪门踢一次后台刷新(一次失败 / 挂住不锁死后续每一发)。只 `await` 不读回值的调用点不编译红,行为上仍放行 —— 要 fail-closed 必须读回值。
270
+ - 座位 `LocalSessionEvent.errorCategory` 改口(CC-378;**§126 TK-9**):只给**非 turn 失败**的宿主类别;turn 失败用 `_sema_turnFailure`(两键同在 ⇒ 以新键为准)。
271
+ - `PERMISSIONS_KEPT_REASONS` 值不变、射程改口:`home_relative_path` / `compile_refused` / 名字关四词 / `unminted_protocol_segment` 只在 allow 桶出现(CC-378;**§126 TK-1**)。
272
+ - **开发依赖 sdk `^21.1.0` → `^22.0.3`**(**§126 PK-1**;这一步写下时 peer 地板仍为 `>=21.1.0`,同版随 §126 PN-2 抬到 `>=23.0.2`,下面的过渡读法随之由 §126 PN-10 执行):出身词 `plan_review`、匹配形 `host` / `subdomain` 补句;委派子代起跑帧 `task_started` 在投影入口按类型守卫认出(地板一代 sdk 21.1 的类型里没有它,守卫两代都编得过)。源码对 peer 区间每一代 sdk 都编得过(21.1.0 与 22.0.3 两份见证零诊断),所以三处只在地板一代上成立的写法留着、退出条件改按支持底线:强制词表对 sdk 声明的滞后登记(21.1 仍声明改名前旧词)、`status` 帧四位(`retryAtMs` / `errorStatus` / `elapsedMs` / `timeoutMs`,sdk 22 已声明、21.1 未声明)的结构视图读、`task_started` 守卫;断言头披露句按结构读 `assertionHeader`(21.1 的请求面型上没有它)。三张句表 / 静默表的键型改取词表属主 core(peer 区间跨 21.1 / 22 两代 sdk,键型取 sdk 只能对一代编得过),所以消费端装 sdk 21.1 时 `plan_review` 照样有它的一句、照样静默(它只是不在 `ASK_ORIGIN_WORDS` 里 —— 那是消费端 sdk 的数组);卡上 `host` / `subdomain` 规则候选的窄读按消费端 sdk 判,装 21.1 仍被丢掉(与 0.97.x 同)。强制词表对地板那一代 sdk 的声明滞后登记留着,退出条件改为 peer 地板越过 sdk 22.0.0(同版 peer 地板抬到 `>=23.0.2` 即越过,这些留着的写法已按退出条件执行,见 §126 PN-10)。
273
+ - **MCP http 声明的 `assertionHeader` 原样过境**(行为变;CC-735;**§126 PK-2 / 126y**):云配置腿此前把它剥掉,本地 `.mcp.json` 腿此前两个身份头都剥掉;现在两条腿都按 `readMcpHttpIdentityHeaders` 带上在场的那一位,两位同在的条目不进请求面(服务端 7.128.0 起对同设整只请求答 400)。过境不等于生效:服务端 7.126.0 / 7.127.x 剥掉它、7.128.0 起只承载不发送(7.129.1 同)—— 见 `mcpAssertionHeaderNotSentNotice`(句子射程随支持底线同版改说「up to 7.129.1」)。
274
+ - **`task_started` 帧的丢帧分类由 `unknown_arm` 改为 `unsupported_arm`**(**§126 PK-1**):类型面认得它、它带用户可见内容(子代起跑),本包今天没有消费口;每类型一行的留痕与此前同。
275
+ - **卡面原因格(`approvalCardReasons`)的出身一行改读 `askOriginNoteOf`**(**§126 PK-6**):静默表与卡面一行口同一张(+`plan_review`);表外出身词那一行不再回显线上的词。
276
+ - **会话镜像地址(`cloudExecutionToPolicy` 的 `sessionMirror.engineUrl`)改读 `normalizeEngineBaseUrl`**(CC-746;**§126 PK-5**):合形地址与此前逐字节同;外层空白裁掉;规范化口拒的地址原样交出、`required` 照旧(不把整只镜像折成 `null`)。
277
+ - **座位出站门全族改判「普通记录」一只判据**(CC-656;**§126 ST-1**;行为面收紧):25 处出站判点(记录行 / 审批请求 / 事件 / 上传回执 / 模型配置回执 / 在线目录 / 发送回执 / 三只裸回执 / 转录信封 / 搜索信封与行 / 会话态 / 聚焦态 / 能力表,及嵌套的队列行 · 命中行 · 绑定对 · 车道证明 · chrome 信封)与能力表读口 `seatCapability` 由「是对象」改判 `isPlainRecord`(对象、非数组、原型是 `null` 或「原型自己的原型是 `null`」—— 任一 realm 的 `Object.prototype`,另一个 vm 上下文里的普通对象照过):`Date` / `Map` / `Set` / 数组 / 类实例 / 自定义原型带合法自有位此前过门、宿主经结构化克隆送出时这些位丢失(门读到了、送出去的没有),现在拒并点名;在线目录 `listModels` 的行与缺省位同判。0.96.0 的三形与 0.97.0 的入站判官此前比本 realm 的 `Object.prototype`,同批放成跨 realm。三端实测不发这类载荷。射程:判原型链形状、不判内部槽,刻意改过原型的内建对象判不出(KL-770)。
278
+ - **`ApplyModelConfigResult.reason` 由自由串收成闭集型,新增可缺位 `detail`**(CC-728;**§126 ST-2**;🔴 型面 BREAKING):`reason?: string` → `reason?: ApplyModelConfigReason`;自由文本细节挪进 `detail?: string`(仅展示、不可据以分支);出站门拒表外词、拒 `ok:false` 缺 `reason`、拒非串 `detail`。**硬破坏三句**:① 把任意 `string` 当 `reason` 构造回执的宿主编译红(桌面端 `model-config.ts` 的两条自由文本回执改发 `invalid_request` / `write_failed` + `detail`),只读 `reason` 当 `string` 的端不红;② 自由文本 `reason` 的回执现在被出站门整条拒(运行期必改,不是只改类型);③ 桌面端 / 网页端各写一次的私有词字面量与网页端句表删,改读包常量与句口。
279
+ - **🔴 型面 BREAKING:`hookMatcherVerdict` 对「整串编不过的正则」判拒**(CC-717;**§126 UP-6**):服务端 7.126.0 起对编不过的正则形整请求拒(`400 request.field_invalid`),此前本口答「不判」(弱于服务端,用户到提交才知道)。现在 `refused` 臂按 `reason` 分两形 —— `alias_without_canonical`(带别名对,同前)与 `invalid_regex`(编不过,不带别名对);`HookMatcherUnjudgedReason` 去掉 `invalid_pattern`;事后读口 `hookMatcherRefusalFromError` 的读数变判别联合,理由词多 `invalid_regex` / `over_budget`(带组下标,后者另带服务端时限)。**求值超时那一半本口仍答「不判」**:服务端判据是墙钟,本口只有静态上界,而上界会圈进服务端实际受理的形(夹具实读五个),升成判拒等于对会被受理的 matcher 说「会被拒」;门 B 段逐形对拍钉死「服务端会拒的不答受理、本口判拒的服务端同因拒」。**编译红必改**:在 `v.kind === 'refused'` 上直接读 `v.alias` / `v.canonical` 的点先按 `v.reason` 窄化;键型含 `invalid_pattern` 的表 / `case 'invalid_pattern'` 删;读 `HookMatcherRefusal` 的 `alias` / `canonical` 前先按 `reason` 窄化。**行为变**:编不过的正则由「没核」变「会被拒」。**零动作**:不读这两个口的宿主。
280
+ - **兼容入口 `ledger.applyFrame` 与 `connected` 判活读法本版不退**(退役登记 RL-105,留登记行):终端生产代码已改走 ingress,但仍调 `setConnected` 并读 `connected`、测试文件仍喂兼容入口;「连接态由谁定」是未设计的双读,到货判据写在接入文档 §126 UP-7。 🔁 本版改为硬退,见 Removed(连接态由账本按当代 stream ingress 自判;§126 RA-3)。
281
+ - **`LocalSessionRecord.parked` 头注定三值语义**(**§126 LP-1**;文档位,类型 / 出站校验零改;网页端 [10744] 请托):`true` = 开着且 registry 背书的停驻卡;`false` = 写端已对账、确知无待决闸(读失败 / 列表不全即撤回为缺席;引擎查实没有停驻设施 —— 能力位 `approvals: false` / 501 `capability.checkpoint_store_required` / 404 `not_found.route` —— 也算确知);缺席 = 未知(含还没对账、读不出引擎有无停驻设施)。不写 `false` 的写端一律读作未知;读端对缺席既不渲停驻也不渲安全。座位记录门加三格(G-LP1)。
282
+ - **`sanitizeToolUseBlock` 的 `subagent_type` 过滤改读引擎内建四词**(CC-748;**§126 BA-2**;行为面变化):修前手写 `fork` / `general-purpose` / `worker` 三词放行、其余一律摘;现在放行 `BUILTIN_SUBAGENT_TYPES` 四词加 `worker`(宿主自己的编队角色词,不是引擎词)。可见差别只有一处:`Agent` / `Task` / `Fork` 调用入参 `subagent_type` 为 `Explore` / `Plan` 时不再被摘 —— 引擎按内建定义实跑它们,摘掉等于卡头缺了说实话的那个词。表外词(含部署自定义的 agent 名 —— 本函数不持名册,修前即如此)与大小写 / 空白近邻照旧被摘;非串值与非子代理工具上的同名键不动。
283
+ - **🔴 minor:支持底线抬到服务端 7.129.1 / 引擎 7.51.2,收回对服务端 7.126.0 – 7.129.0 的支持承诺**(**§126 RD-1**):`SUPPORT_FLOOR` / `supportFloorOf('server' | 'core')` 答 `7.129.1` / `7.51.2`(sdk 一项不动,`23.0.2`);`engineVersionTier('7.126.0' … '7.129.0')` 由 `engine` 变 `legacy`、`coreVersionTier('7.49.5' … '7.51.1')` 同理。低于底线的服务端本包不再见证;为它们而在的四处过渡读法同版退役(见 Removed:RL-142 / 143 / 144 / 164)。底线依据:规则文法戳 `grammar` 与写口码 `rules.inert_entry` 是会话规则读改写口不改一行文法(CC-771)的前提;终端表态抬([10742])。
284
+
285
+
286
+
287
+ ### Deprecated
288
+
289
+ - **`STOP_CONFLICT_CODES`(根入口)**(CC-626 ⑥;**§126 SC-11**):它唯一的用途是上面那条已删的子串认码兜底(「长码优先」的顺序也只对它有意义),0.98.0 起包内零读者、三端零读点;0.99.0 删根入口导出(退役登记 RL-151)。
290
+ - **`recordSubagentOwnerFromProgress` · `diagnoseSseIdleTear` · `bridgeAskUserQuestionGates`(根入口)与端口位 `EventLegPorts.perStream`**(CC-477;**§126 LG-3**):三只级函数今天只有终端手组的腿链在调,组合器到货后包内自用;终端改调 `composeEventLeg`、删掉直接调用之后的下一个本包版本退出根入口(包内照用;退役登记 RL-157 / RL-158 / RL-159)。`perStream` 自出生登过渡:审批卡口单路径落地、终端删掉 `perStream` 注入之后的下一个本包版本删本位(RL-156)。
291
+ - **会话规则写口老码 `rules.legacy_tool_name` 的读法**(失败臂 `legacy-tool-name`、收紧 / 撤销两只结局的 `legacy_tool_name` 臂)(CC-733;**§126 PN-1**):服务端 7.129.0 起退役、同一族名字落 `rules.inert_entry`;支持范围内的老服务端仍发,照读。支持底线越过服务端 7.129.0 之后的下一个本包版本退役、零别名(RL-164)。
292
+
293
+
294
+
295
+ ### Fixed
296
+
297
+ - **Bash 失败卡对退出码 137 固定追加 "possibly out-of-memory; consider lowering build parallelism"**(CC-714;接入文档 **§126 GT-2**;🔴 行为变):137 = 128 + SIGKILL,被谁杀、为什么杀,退出码答不出;引擎重启时它的子进程被一并杀掉同样是 137,屏上却劝用户降并行度。现在句子按**宿主给的成因事实**出:`engine_restarted`(引擎在这只调用跑着的时候换代了)⇒ `Command was killed when the engine restarted (exit 137)`;`memory_pressure`(宿主有内存证据)⇒ 才提内存与降并行度的劝告;缺省 ⇒ 中性句 `Command was killed by signal 9 (exit 137)`。读口 = 交互车道 `AdapterContext.toolKillCause`(下一节 Added),只在这张卡退出码恰为 137 时才问;读口抛 / 回表外词一律当缺席。退出码恰为 137 的失败卡一律经同一只句子铸点 —— 含只有结构化退出码、正文反解不出框架槽的溢写卡(修前这一支没有归因句)。`-p` 帧里 `tool_result` 的正文是模型面原文,本来就不带这一句,不受影响。
298
+ - **工具结果卡的 `_sema_not_executed` 位读不出时被读成正常结局**(CC-723;**§126 GT-1**):`readToolCardOutcome` 对这一位的读法是「读不出与没有同答」,位是自有访问器、或读描述符的代理陷阱抛时,卡读成 `normal`(带占位标记的卡读成占位成因),而这只调用可能根本没执行。现在读不出 ⇒ `unreadable`(不知道跑没跑,不下结论);位读得到而值不是字面 `true`(`false` / 串 / 数 / `null` / 对象 / 数组)仍是「没有这个正证据」。读法单源 `readFrameTrueMarkReading`(三态 `marked` / `absent` / `unreadable`;原布尔口 `readFrameTrueMark` 就是它的 `=== 'marked'`,铸键点读不出就不铸,行为不变)。
299
+ - **`CoreValuePorts.combinePolicies` / `validatePermissionRules` 在 `strict: true` 下装不进引擎原件**(CC-716;**§126 GT-3**;型面:两成员由函数型属性改成方法签名):镜像入参型(不透明句柄 / 视图)比引擎原件的入参型宽,函数型属性在 `strictFunctionTypes` 下按入参逆变拒,各一条 TS2322(`strict: false` 才成立)。现在两成员是方法签名(参数位双变),门 `core-value-ports` 的完整型装配格三档编译都判 —— `strict: true`、`strict` + `exactOptionalPropertyTypes` + `noUncheckedIndexedAccess`、`strict: false` —— 引擎包根十六件原样装进零错;宿主为此写的型断言可删。代价记已知限制 KL-761(双变放过参数位收窄的替代品;装配根传引擎包根原件,不传替代品)。
300
+ - **取消成因判定的「run 还在飞」词表自抄一份**(CC-724;**§126 GT-4**;行为变一处):`classifyRunAbortCause` 的 `run_still_live` 读一个手抄的四词集(`running` / `queued` / `suspended` / `needs_review`),其中 `queued` 既不在 sdk `RunStatus` 也不在服务端的 run 状态类里;会话锁持有表 `CLAIM_HELD_STATES` 另抄一遍 `running` + park 两词。现在两处都读属主模块 `terminalStatuses` 的在飞表(`running` + park 两词,编译期钉在 `RunStatus` 减终态分区上),`CLAIM_HELD_STATES` 就是同一个对象(公面名不变、成员不变)。状态词 `queued` 的记录读成 `unknown`(不再说「run 还活着」)。
301
+ - **凭据值以分号起头、或值中夹分号时,余段原样上屏**(CC-721;**§126 DU-1**):`PGPASSWORD=;<值>` 修前值为空、`PGPASSWORD=sk-…;<尾>` / `token=<值>;<尾>` 修前尾段原样;现在整只一枚记号。
302
+ - **花括号 / 尖括号包着的凭据值原样上屏**(CC-721;**§126 DU-1**):`PGPASSWORD={<值>}` / `Bearer <<值>>` 现在遮括号里那一只(括号留在记号外;括号里夹分号 / `@` 的值同样整只遮,四种括号同判);文档 / 模板占位(`<token>` / `<access_token>` / `{api_key}` / `{API_KEY}`)照旧原样(KL-383 收窄)。
303
+ - **env 赋值形的值恰是 `Basic` / `Bearer` 时原样上屏、并把下一个赋值当载荷遮**(CC-721;**§126 DU-2**):`PGPASSWORD=Basic` ⇒ `PGPASSWORD=«redacted:secret»`;`PGPASSWORD=Basic PGHOST=db.example`(同行或换一行)⇒ 遮 `Basic`、`PGHOST=db.example` 原样(修前反过来)。只有尾部 `=` 填充的 token68 载荷(`AUTHORIZATION=Basic QUI6QQ==`)不算「下一个赋值」,照旧按载荷遮;换行之后跟的不是赋值 ⇒ 方案词与下一行的载荷都遮。诊断句 `password: basic` 照旧原样(KL-757 收窄)。
304
+ - **`Authorization: Bearer <普通英文词>` 的载荷原样上屏**(CC-721;**§126 DU-3**):方案词 `bearer` / `basic` 是凭据标签的值时,其后一词不再按「普通英文词」放行(`Authorization: Bearer configuration` ⇒ 遮);`Bearer undefined` / `Bearer null` 这类诊断词照旧原样,无标签的散文(`Bearer configuration is missing`)读法不变。
305
+ - **配置地址展示口四形外溢 / 多遮**(CC-731;**§126 DU-4 – DU-7**):① 凭据值里的停字符(`"` `<` `>` `` ` `` `|` `\` `^` `{` `}`)之后的尾段原样上屏 —— query / 片段 / 路径段参数 27 格修前外溢 21 格(词级面开)/ 27 格(只开结构面),现在 0 格;路径里凭据标签之后夹停字符时余段整段换记号;② TAB / LF / CR 切开的已知前缀令牌(`https://h/s<TAB>k-…/../sse`)原样上屏;③ 相对地址(`/download?sig=<值>`)整串原样;④ 主机名像标签的地址(`https://my-api-key:443/status`)端口与路径被吞成一枚记号 —— 现在逐字节原样(只在 authority 恰是 `host[:端口]` 时;端口不是 1–5 位不超 65535 的数字、带 `@`、带停字符、冒号是百分号编码的 `%3A` 的照旧遮)。路径里凭据标签之后夹停字符的余段遮盖认粘连名(`PGPASSWORD=` / `dbPassword=`),计量单位标签(`max_tokens=`)不算。另修一处既有不幂等:首部带 TAB 的单斜杠写法(`<TAB>http:/h/?x=<值>`)第一遍不遮、第二遍才遮 —— 判 scheme 改看解析器读面。
306
+ - **「码被剥掉时按 sdk 类名兜底」那一族在压缩生产包里按构建分叉**(CC-722;**§126 TH-1**):sdk 的 `APIError` 族把实例 `name` 设成 `new.target.name`,消费端生产包经压缩器改写类名后,真实例的 `name` 是单字母短名;决断拒收分码判官 / 安全停绑定判官 / steering 判别位 / 取消 404 与 409 判官 / 删会话 409 判官 / 提交面 429 判官 / 决断拒收三类名臂,都拿字面协议名去比它 —— 同一只抛出物在终端(不压缩)里命中、在网页端与桌面端渲染层(压缩)里不命中。现在:类名只对**重建形**(码被剥掉、只剩 `name` 的普通对象)当族证据,比的是一张闭集表里的字面协议名(十六个字面串只住一处,各判官经唯一读口 `protocolErrorNameOf` 比);**真 sdk 实例一律按机读码 / 状态码认**,名字不是证据 —— 不压缩 / 压缩 / 压缩加 keepNames 三种构建读数逐位同;安全停判官遇到「结构上像 sdk 实例而没有机读码」的抛出物按身份确认不了处置(原错上抛、恰一发,不进瞬断重试)。sdk 把 core 的原码 `checkpoint.invalid_outcome` 也铸成绑定不符类:这一形此前靠实例类名认(压缩包里不认),现在安全停判官按**码**认。
307
+ - **抛出物机读位读法 F8 射程外四处仍沿原型链普通取值**(CC-727;**§126 TH-2**):`effectiveWireErrorCode`(外层码)· 场景拒读口 `scenarioDenyFromError`(状态码与外层码)· `readBlockedBy`(顶层位与 `extra` 袋里的位)· `denyAttributionRefusalFromError`(状态码与码)改为只认**自有数据位**(与判官同一条读法):原型链上的值不信,自有访问器 / 读描述符抛 ⇒ 读不出,取值器一次不执行;同函数族里同形的 `cancelConflictFromError` / `sessionDeleteConflictFromError` / `usageWindowExhaustedFromError` / `toolDeclarationRefusalFromError` / `fleetLeaseUnavailableFromError` / `sandboxDegradeHint` 的状态与码位一并收口。真 sdk 错误上这些位都是实例自有数据位,读数不变。
308
+ - **代理定义点名未声明的 MCP 服务器的工具时,每一发请求都被拒**(CC-729;接入文档 **§125 AD-1**):`tools` / `disallowedTools` 里的 `mcp__<server>…` 条目(含整服务器形 `mcp__<server>` 与 deny 的内容形)原样投进 `agents[].allowTools` / `denyTools`,服务器不在这一跑的声明里时引擎拒整发 —— 不带代理参数的请求也一样拒(代理定义随每一发上 wire)。现在宿主交了 `toolDirectory`(见下)时,服务器不在本跑声明里的条目省掉并披露一行(`agents wire: agent "<name>" <list> entry "<entry>" names no tool this deployment answers to — omitted: …`):deny 省掉 = 没有东西可藏,allow 省掉 = 没有东西可给,这一跑里任何一腿能用的工具都不变。声明了但没连上的服务器照投(引擎按声明受理,重连后它的工具真会出现)。allow 清单省到一条不剩时发 `allowTools: []`(什么都不给),不回落成缺席(缺席 = 继承全部工具)。宿主没交读数(或读数读不出)时照投,每条 `mcp__` 条目披露一行「could not be checked」。普通名与 `a2a__` 名不判、照投(引擎的全集还含它自己的整份工具目录与委派池,客户端在提交前没有这两份)。
309
+ - **代理 `tools` 里的旧拼法 / 大小写孪生条目让每一发请求都被拒**(CC-729;**§125 AD-2**):引擎 7.49.0 起 allow 清单里没有工具应答的拼法(`Task` / `KillShell` / `bash`,或与已挂工具只差大小写)同样整发拒,而本包此前只告警照投。现在引擎工具名判官判得出的这几类 allow 条目省掉并披露(告警句改成「no tool answers to this entry; it is omitted」);判官判不出(值级端口没装)的照投、原告警不变;deny 侧的拼法问题仍由 `withholdRefusedDenyLists` 处置(省掉会放宽:`bash` 要藏的 `Bash` 真在)。拼法预判读数 `toolListFlaws` 不变。
310
+ - **自愈分诊复证之后只读复证态**(CC-760;**§126 SC-13 / SC-14 / SC-15**):① `not-parked` 结局自己带门事实 `pendingGateKind`(只在一级分诊、状态与门出自同一份 409 时铸;状态是本包自己读来的新鲜读数就不铸),现状行与其「决断入口 / 治理出身」两半句只读这一位,没有这一位时按状态词说话(park 词 ⇒「停在一道决定上」,running / 表外词 ⇒「在跑」)—— 修前读信号上 409 当拍的 `pendingGate`,陈旧 park 臂复证读回 running 时说「waiting on a human decision — it will not finish on its own」;一级分诊读到终态词 ⇒ `running-settled`(修前 `not-parked`);两选卡卡后复证读回 running ⇒ 零动作 `not-parked`(修前 `ask-reopen-failed` 带旧决断入口);② 陈旧 park 臂卡前 / 卡后复证读回终态 ⇒ `ask-run-settled`(上一条);③ running 三选卡选了 cancel ⇒ **开枪前**再读一发真态(与两选卡的卡后复证对称):撞 404 ⇒ `running-not-found`、终态 ⇒ `running-settled`、park ⇒ 交对应重开臂、读不出 / 已中止 ⇒ 零动作 `not-parked`,仍在跑才 cancel。修前用户看卡期间 run 跑完 / 停到门上,cancel 照打,落 cancel-failed / cancel-timeout 或替用户否掉一道新门。存活对账腿与开枪前复证读同一张「新鲜读数 → 臂」表。
311
+ - **幽灵 404 判定读抛出物状态位的唯一读口**(CC-626 ②;**§126 SC-9**):陈旧 park 臂 / 存活对账腿的 `runs.get` 失败只读 `status`(取值器照执行)⇒ 改读 `readThrownStatusSlot`(`status` 缺席退 `statusCode`、自有数据位、取值器不执行)。修前 `{ statusCode: 404 }` 在这里判「没答上来」、在失败分类里判 404。
312
+ - **流式终帧的 `replay` 位是会抛的取值器时 `runStream` 不再整条流抛出**(CC-686;**§126 SC-4**):错配账修前直读 `ev.replay === true`;改走受保护的唯一读法后读不出 = 没有重放证据。同批:只带重放体、帧上没有位的终局不再被错配账记成一次新 run(「连续第 N 次」不再多报)。
313
+ - **`--scenario` 用法句改真**(**§126 PN-9**):修前说「unknown names fall back to the default scenario」,两版引擎实测对表外名整发拒 `400 scenario_unknown` ⇒ 改为「unknown names are refused by the engine (scenario_unknown)」。
314
+ - **respond 回执的首决回放不再读成「没有回执」**(**§126 PN-4**):修前回放体(`idempotent: true`,无 `delivery`)读不出、结局落成这一发按的词 —— 首决与这一发相反时报反了。
315
+ - **会话规则读改写把无戳旧记录里的括号形 allow 条目静默升成放行规则**(CC-771;接入文档 **§126 GR-1 – GR-4**;🔴 安全面 · 行为变):`tightenSessionPolicy` / `removeRefusedSessionRules` 读回记录时丢掉服务端 7.129.0 起行上的规则文法戳 `grammar`、再整份回写,而写下的行盖当前文法 —— 一行在当前文法之前存下的记录(无戳;引擎按旧文法读,`toolAllow` 里写成工具自己规则形的条目如 `Bash(git:*)` 什么都不放行)被这一写变成了真放行规则:普通身份被方向门拒,**运维身份写成**。现在:读口 `present.grammar?` 带回行的戳(缺席 = 存量无戳行,不补 0 / 1);回写原样带同一个戳;无戳且要带回去的本行 `toolAllow` 有括号形条目 ⇒ 一个写都不发,两只结局联合新臂 `{ kind: 'refused', why: 'earlier_grammar_rows', entries }` 点名那几条(两种身份同答);引擎按回传的戳拒(`400 rules.inert_entry` + `reason: earlier_grammar`)⇒ 同一只结局;戳在场却读不成非负整数 ⇒ 读不懂位置 `grammar_stamp`、不写;回执对账多核一件 —— 送出去带戳而回执丢戳 / 戳退回旧代 ⇒ 不答已写(`write_receipt_mismatch`,可能已生效、先重读)。对这几只联合做穷尽 `switch` 的端编译期红(126y)。
316
+ - **文件历史拒句对报了词的引擎说「没报」**(CC-725 ③;**§126 HL-12**;出包字面量变):读到一个本端不认识的捕获词(含老一代 worker 铸过的「捕获且关不掉」那个词)时,拒句修前是 `this engine did not report whether it can stop recording file history`,现在是 `this engine reported a file-history capture mode this client does not recognize`;判定不变(仍拒)。
317
+ - **工具结果行在收卡帧 `eventId` 为空串时 `uuid` 落成空串**(CC-190;**§126 ID-1**):空串当缺席,依次取开卡帧 `eventId`、再按调用 id 稳定派生。
318
+ - **短命子代的最终用量在终态之后到时被丢**(CC-556;**§126 PL-1**):关卡 / 通知的终态先到、终态行帧后到 ⇒ 行差分口此前零差分(旧事件口却有那一帧,两口答法不同),快照停在倒数第二拍;现在同一代的最终数照交(带逐键 `final`)。
319
+ - **tick 到过之后同一代后台子代的用量冻在那一拍**(CC-556;**§126 PL-1**):此前同代内 tick 一到,行帧的用量整代不进;现在同一已知代际内取各载体的最大值。
320
+ - **只带委派卡、不带转录锚的行帧被改写到同卡另一只子代的键上**(CC-556;**§126 PL-1**;两个订阅口都受影响):工作流 fan-out 下,一只的失败会标到同卡先上屏的另一只身上;现在它走自己的尾段、自己的一行。
321
+ - **只带委派卡的短命子代终态行被当历史行永久缓住**(CC-556;**§126 PL-1**):这张卡本进程见过 ⇒ 照发成它自己的一行(行帧 + 终态,两个订阅口都看得到)。
322
+ - **同一只子代两行、其中一行永远在跑**(CC-556;**§126 PL-1**):尾段无锚先上屏、tick 等满节拍按 UUID 上屏,之后行帧说出两把 id ⇒ 现在合并成一行(`remove{UUID 键, supersededBy: 尾段键}`),不再留一条永不结的重复行。
323
+ - **复活之后迟到的前代 tick 把新一代的用量改成前代的数**(CC-556;**§126 PL-1**):有 `cycleSeq` 的子代上 tick 不再碰用量;工作流代理重试(换会话)时,旧会话迟到的 tick 判前代、不进。
324
+ - **影子 models 文档写出的 `roles` 与模型条目就是入参对象本身**(CC-736;**§126 PK-4**):入参事后被改,已写出的文档跟着变;`model` 取值器留在文档里(写文档时读一次,文档里还是那只活取值器)。现在写出的每一位都是写盘 JSON 形的数据副本、每个键只读一次(条目数组位、`roles` 整位、每个角色的首读都只一次),`{model}` 形角色的 `model` 钉在首读那一次;丢弃账(`droppedModels`)与文档出自同一次读。进程内对象(JSON 回体上不可达)读不出或写不成 JSON 形 ⇒ 那一个角色记 `unreadable`、`roles` 整位读不出记 `roles · models · unreadable` 并出一句、那一条模型条目按拒收处置,投影不抛;只有「回体里有条目、却一条都写不成」时投影抛(交出空目录会让宿主改用环境目录、丢掉上一份)。
325
+ - **会话镜像地址的尾斜杠规范化在中段长串斜杠上回溯成平方**(CC-746;**§126 PK-5**):中段一长串斜杠、不以斜杠结尾的地址,此前耗时随长度平方增长,现在线性。
326
+ - **子代代际号能把续读位置拉回去**(CC-571;**§126 UP-4**):账本的续读位置读法在事件没有 `id` 时回落读体里的 `seq`,而 `task_progress`(子代代际号)· `task_notification`(停止周期批号)· `task_started`(同一代际号,服务端 7.127.0 起)的体 `seq` 是另一条轴 —— 游标已到 `157`,一帧 `task_progress { seq: 2 }` 就把它拉回 `2`,之后的重挂从陈旧位置重放。现在这三种事件的体 `seq` 不再当游标(名册在包内,门对已装 sdk 的事件声明逐臂核对,sdk 再加一种代际号事件而名册不知道 ⇒ 门红)(带 `id` 的同帧照常推进;其余事件的数值 `seq` 照旧)。
327
+ - **会话规则收紧的入参里带表外桶时被静默丢掉、仍答「已写」**(**§126 FX-1**):`tightenSessionPolicy` 的 `add`(与并集口 `tightenedSessionRules` 的两侧)上,桶名与元数据键(`rev` / `gen` / `grammar`)之外的自有键(含不可枚举的;例:已退出桶集的 `commandAllow` / `commandDeny`、空数组也算)此前被丢掉,编排照样整份回写并答 `written` —— 要的限制一条没写。现在抛 `TypeError`(点名那一键,非标识符形不回显),一个请求都不发;与读回体「记录里有认不得的桶 ⇒ 读不懂」同一条律。原型链上的键与符号键不算记录的一部分(不变)。
328
+ - **事件腿把附着 run 上的残缺失败终帧读成「提交没建成」**(**§126 FX-2**):`composeEventLeg` 的 `run.onRefused` 只在活流(提交腿)上判,且「没建成」只认完整的失败三键(`status: 'failed'` ∧ 非空串 `errorCode` ∧ 非空串 `errorMessage`、无 run id / 统计 / 因由座 / 占锁位)。此前只看 `status: 'failed'`,耐久附着腿上的残缺失败帧会触发 `onRefused(not_created)`、终帧失去绑定 —— 宿主据此撤回的是实际已附着的 run。耐久 / 续流腿上的任何失败终帧(含两种拒收形)现在照登绑定、不调 `onRefused`。
329
+ - **让位回执把认不出的状态词说成「run 已结束」**(**§126 FX-3**):202 回体的 `status` 只有 run 行终态闭集里的词(`completed` / `failed` / `blocked` / `timeout`,判官 `isSdkRunTerminal`)才读成 `already-ended`;空白、乱码、未来词、别的属主的终态词(`cancelled` / `killed`)⇒ `unconfirmed`(`unreadable-answer`)。`already-ended` 的 `status` 随之恒在、型收窄为 `SdkRunTerminalStatus`;回执句只点名闭集确认的词。
330
+ - **重试行出路在未知臂上照给「换模型 / 改请求」**(**§126 FX-4**):`retryStatusNotice` 对未知 `kind` 与非对象入参,任何状态码 × 判词下都不给 `recourse`(句子与 `phase` 照旧按默认臂读);此前判词与 5xx / 429 两支排在臂判之前,与本口「未知臂 ⇒ 没有可给的出路」相反。
331
+ - **迟到决断:活卡答复口的首决回放被说成「这一决生效了」**(**§126 FX-5**):`lateDecideOutcomeOf(…, { lane: 'respond' })` 上,200 回体是首决回放(自有位 `idempotent` 严格 `true`,与 decide 腿同一只回执读口)⇒ `settled-elsewhere`(那一问在这一发之前已决),不再答 `resumed`。
332
+ - **重试行句口把清行说成「恢复了」**(**§126 FX-6**):`retryStatusNotice(null)` 改答 `{ line: '', phase: 'cleared' }`(无 `recourse`、不带模型名前缀);`RetryStatusNotice.phase` 闭集里的 `recovered` 改为 `cleared`。投影铸 `null` 的地方不止引擎直报恢复(turn 开场、中止收尾也铸),句口分不出,就不说原因。
333
+ - **面板:绑卡子代失败而关卡那条腿没来时显示成正常结束**(**§126 FX-7**):绑在本 turn 委派卡上的子代,fleet 行报了非成功终态(`failed` / `killed`)而关卡腿没到(流截断 / 中止,turn 末只剩 sweep)⇒ 行差分口的 sweep 终态沿用 fleet 行自报的失败位(`isError: true`);关卡腿到了仍以它为准;fleet 行没报过终态的行照旧按 `false` 收。
334
+ - **活流上同一只审批绕过宿主持卡、又开一张卡又发一次**(**§126 FX-8**):本包活卡入口给持有表的身份里,非子代帧的 run / 会话以帧自己的绑定(`frameBindingOf`,由事件腿登记)为准,调用方给的 run 只是没登记的帧的回落。活流上宿主已按「同 run + 同调用」经 `claimApprovalCard` 持卡时,后到的同一只审批帧现在 join 持有者,不开卡、不发决断(此前活流腿交不出 run,持有表认不出)。
335
+ - **连接断开一律说「没运行、再发一次」**(**§126 FX-9**):`turnFailurePresentation` / `seatTurnFailureOf` 的 `connection_lost` 臂只在可证没送出(建连前失败的码 / 本包「没送出」标记)时才说没运行、给原样重发;其余连接断(收到工具结果之后断流、浏览器不带成因的 fetch 拒绝)说结果未知、指去查 / 续接原 run,`retry.offer` 为 `false`。两口加可选第二参 `{ bound?, reopened? }`:宿主知道这一 turn 已绑 run 或提交重开过 ⇒ 即使最后那只抛出物可证没送出也说结果未知。
336
+ - **接替卡把没确认的上一答说成「没到引擎」**(**§126 FX-10**):接替位 `ApprovalCardSupersedes` 多 `priorAnswerOutcome`(present-iff `priorAnswer`):`not_sent`(包一个字节都没发)/ `not_accepted`(引擎答了没收下:202 停驻中 / 带码拒绝)/ `unconfirmed`(5xx、发出后没拿到答复、回体读不出、还没落定 —— 可能已经生效);`approvalSupersedesDetail` 按它三句,去向缺席或表外 ⇒ 第三句。此前只要上一张卡没落定就说「Your earlier answer … did not reach the engine」。
337
+ - **发版修复的验证轮四条(修后唯一一轮)**(**§126 FX-2 / FX-5 / FX-7 / FX-10** 验证轮追记):① 活流上已有执行痕迹(头 / `meta` / 终帧之外的任何帧)之后再来的拒收信封(完整拒收形 / 忙拒收形)不再判「未创建」—— `onRefused` 零次、终帧按普通终帧走、绑定保留(撤回候选 run 的契约不许撤掉一条已经跑过工具的 run);② respond 腿的首决回放位**独立**读(自有数据位、受保护):回执别的键是访问器 / 读就抛时只丢那一键,不再整份读不出而退成 `resumed`;回放位只认自有数据位,访问器 `idempotent` 不执行、不算(`readDecideReceipt` 同一把读法);③ 绑卡行失败位的留底与归一漏斗同一把水位判 —— 另一把会话键迟到的前代行(更小 `cycleSeq` / 已换掉的子运行)不再把失败位写到当代记录上;④ 接替卡的去向只往「更不确定」走 —— 同一件事两腿乱序落定(停驻卡 decide 先失败、活卡 respond 后回 202)时,已记 `unconfirmed` 的不被迟到的 `not_accepted` / `not_sent` 盖回。门:EL-C11i..k / HL4-13g..h / PR-I21f / HL1-14g(红先,修前逐格复现)。
338
+ - **「以后别问」的本地整工具一行在引擎没说「这一调用没有可绑定的授予」时照给**(CC-660;接入文档 **§126 RE-1 / RE-2**;🔴 放宽方向 · 行为变):卡上没有授予绑定摘要时,授予绑定三态 `grantBinding` 此前按工具名推(非技能工具 ⇒ `none`),不读引擎在卡上说的 `boundGrantAbsence` —— 引擎说 `unreadable`、没说、或说了表外词时也答 `none`,`standingRowsOf` 据此给出本地整工具规则一行,而服务端 7.129.1 对同一张卡答读不出、不许记住。现在与服务端同一律:没有摘要 ⇒ 只有自有数据位 `boundGrantAbsence` 恰 `not_bindable` 才 `none`,其余一律 `unreadable`(工具名不参与;技能工具带 `not_bindable` 也是 `none`,与服务端同答);服务端看得见的问类里有部署名单那一问的类时,服务端还可能改按工具名判,本包两种判法都答 `none` 才 `none`;放宽方向的 `none` 另要自有数据位与普通取值两种读法同答(代理 / 取值器上两读说两样 ⇒ `unreadable`)。v1 呈卡帧的卡契约两样都不带 ⇒ 真 v1 卡恒 `unreadable`。公面与型面零变。 🔴 技能工具例外(core #1938 到货前):`Skill` 调用在本跑零技能时引擎盖 `not_bindable`、服务端与本包都答授予绑定 none,但裸的按工具名 `Skill` allow 规则会代答之后带授予的技能激活 ⇒ 本包对 `Skill` 恒不给「以后别问」整工具行(理由词 `grant_binding`;门 R7 钉)。 读取期间证据变化(JS 宿主自造的带副作用问类迭代器 / 取值器在分流读问类时改掉摘要或词)⇒ 分流读完复核一次,两读不一致即 `unreadable`、不给整工具行(门 R9e)。
339
+
340
+
341
+
342
+ ### Gates
343
+
344
+ - 新门 1 道(包侧投影门三件:门 / gates-manifest 登记 / README Guards 行):`run-sentence-tables-projection-test.mjs`,156 格(T 每张表同一套判据:表字面量自己挂 `satisfies Record<闭集型, …>`、键集与上游运行期值逐词相等、读口函数体真引用它的键表、表外词 / 缺席 / 非串不回显、取值器 / 代理 / 原型链上的位不抛不执行 —— 含返回合法值的计数访问器十五位,调用次数为零 · P 持久规则人话五口 · O 静默表与候选缺席句 · C 崩溃遗留逐行句(含重构前基线金样;桶归属只信投影) · K 结局一行句表(含真帧 outcome × parked × cause 组合) · M `match` 九词与条数帽不铸镜像 · R `policy` 句 / RULED-1 / KL-122 退役与手拼卡 + 生产产帧入口两路真帧三车道读数)。公面运行期导出 1641 → 1655(+14)。
345
+ - 扩既有门:`run-gate-vocabulary-test.mjs`(`policy` 句改口格 + 上游逐字出处)· `run-rules-side-test.mjs`(G10:列举面真产物 → 四口)· `run-crash-converged-projection-test.mjs`(G12:真投影行 → 逐行句)· `run-hitl-words-readout-test.mjs`(G-HW11:结局帧 → 成因 → 句)。
346
+ - **可移植门 ④d(门脚本族扫)由两形扩为四形**(CC-559 余项②):A 形不再认正则的「写法」(修前只认 `[\s\S]` / `[^]` / `.`+`s` 三种拼写,换成 `[\w\W]` / `(?:.|\n)` / 经典 CSS 注释正则就整条漏过),改看**对构造好的探针实跑的答案** —— 正则(字面量或 `new RegExp(串字面量)`)能把一条块注释整条圈住即红;新增 A2 形(能盖住行注释记号 `//` 的正则,含剥离正则与行首前缀判据)与 C 形(对串调 `startsWith` / `endsWith` / `includes` / `indexOf` / `split` / `search` 且首实参是注释记号字面量);B 形(手写引号配对词法器)照旧登记制、存量为空。对「圈住一切」的正则(`/.*/`)有对照文本挡掉误报;`_gate-lib.mjs` 是 C 形唯一的家,带反空转格。尺子自证植入块形 10 种写法、行形 7 种、记号字面量形 6 种。
347
+ - **十处手写注释识别迁到 `_gate-lib` 的记号层读器**(CC-559 余项①③,逐只植入验证旧尺子会漏或假红,红先后绿):pure 套三处(域词表-09 普查的行级去注释;web 分类器表读法改读语法树元素;A-004.4 铸点抽取先过记号层)、`display-untrusted-projection` 的控制符字符类单源普查、`engine-cap-snapshot-readers` 的 tee 调用普查、`hitl-words-readout` G-HW10(改读函数体第一条语句是不是 `try`)、`retirement-ledger` 的退出条件原句核对(改读注释正文,原句只剩在串字面量里不再算对上)、`fixture-flat-done-ratchet` 的行注释定位(容错读法)、`park-decision-layer` 判别探针、`decision-refusal-standing` 里一处已无意义的跳注释子式。记号层读器新增 `lexMaskComments`(注释换空格、行列与原文逐位对齐)、`lexCommentTexts`(注释正文)、`lexCommentRanges`(注释位置,容错版,读语法错的恢复树照读)三只。
348
+ - **`run-engine-caps-ledger-test.mjs` 的能力位读点普查改语法树读**(CC-594):调用头 / 第 2 实参 / `*_CAP` 常量 / `caps.<键>` / 窄形 cast / `(caps, '键')` 五形全读节点,不再「正则找调用头 + 括号配平 + 按引号配对切实参」。真树上与旧普查逐键同(32 个读点键、6 个经读口的键);新增植入 6 形(串里的右括号、含括号与逗号的正则字面量、带 `)` 的模板串、可选调用、含逗号与两种引号的串、写在串里的调用字样)与「整类抽掉」正控。
349
+ - `run-tool-card-outcome-test.mjs`:H6 改口(读不出 ⇒ `unreadable`,四形 × 两种底卡)+ K 段(退出码 137 归因句三读数 / 宿主读口抛与回表外词当缺席 / 只在 137 时才问 / `structured.exitCode` 同判 / `-p` 车道正文不带这一句 / 薄壳与 `engineIdentityVerdict` 逐输入一致)。`run-terminal-table-provenance-test.mjs` 新增 F3 – F5(在飞表 == `RunStatus` 减终态分区、`CLAIM_HELD_STATES` 同一个对象、`classifyRunAbortCause` 与在飞谓词对每个状态词恒等、取消成因模块零状态词字面量)。`run-core-value-ports-test.mjs` 完整型装配格由一档改三档,并对两件方法成员各做负控(无关形状 / 只错返回型三档皆红)与 KL-761 的事实钉。
350
+ - `run-tick-model-and-config-drift-test.mjs` D 段:壳内判据副本 `engineConfigDriftGate.ts` 已随终端 1.0.147 退役(修前该段在壳源码不在盘时静默跳段),改成「副本不许复活」+「参照树的生命周期源码从包根 import 并调用 `configDriftVerdict`、喂三键输入、本地不再定义同名判据」(语法树读,带植入四形自证)。
351
+ - `run-client-core-diff-test.mjs`:参照树装的包 < 0.98.0 时,「bash 失败 exit137」两条夹具的块正文里旧一代那句 OOM 提示按中性句还原后再逐字比(只改参照侧,三条件全中,带正向对照)。
352
+ - 新门 1 道(包侧投影门三件:门 / gates-manifest 登记 / README Guards 行):`run-approval-card-reading-projection-test.mjs`(F 活卡帧出口与活卡帧腿逐事实键同答 · G 通用卡与 v1 口同一读器、子集外不读、判定口不放、放宽三行全关 · W 窗三键读器判据 / 新鲜度 / 锚 / 未知形恒等式 + 活卡帧腿同答 · P 两行渲口形与消毒 · R 原因格顺序 / 逐字等于铸点 / 去重 / 行预算 / 隔离 · Q 真人位读器与包内各读点同答 · O 属主行计数读不出即抛与两把闸)。
353
+ - `run-approval-card-v1-projection-test.mjs` 扩 V8(v1 / 活卡帧 / 通用卡三条路逐键同答)、`message` 落位、V3 卡顶层真人位改判;`run-approval-frame-keys-test.mjs` 卡键台账 `message` 由不带改为带、卡入参「可选 ∧ 恰 true」名册 +`cardPayloadUnreadable`;`run-durable-card-display-keys-test.mjs` ⑨ 行上 `risk.requiresRealApproval` 形改判为上卡(真人位单读);`run-upstream-tables-test.mjs` SA8 转译接线补判定模块的新 import。
354
+ - 登记物:公面运行期导出 1641 → 1652(+9 函数 +2 常量);index 闭包上限 310 → 311(+2 文件 `src/hitl/approvalCardReading.ts` / `src/hitl/approvalCardReasons.ts`,吃掉原有 1 格余量);导出签名 unknown 出境不变(591;新入参位一律具名窄型);模块级单例清单 +3(均 low)。
355
+ - 新门 2 道(包侧投影门三件:门 / gates-manifest 登记 / README Guards 行):`run-engine-url-transport-test.mjs`(EU0 公面 · EU1 规范化逐形 · EU2 传输闸逐形 · EU3 两例判据 + 真 sdk 证 query 拼接 · EU4 本机判定一处真源〔AST 读点名册 + 一张主机表上与已装设置契约原件逐样本同答〕· EU5 永不抛 / 冻结 / 闭集 / 病态输入线性 · EU6 与终端 / 桌面端旧实现在 14.3 万条生成语料(含反斜杠 / 全角 / IDN / 制表符换行等会让解析器改写主机的写法)上逐例对拍:包收 ⟺ 两端旧答都收,分歧只落登记的两类;并核主机不变式:收下的串、sdk 拼出的请求地址与原串指向同一个协议 + 主机 + 端口,传输闸在两个串上同答)、`run-submit-reopen-test.mjs`(真 sdk `tasks.stream` + 假 fetch:R1 同键重开 · R2 已绑负控 · R3 有界 · R4 引擎答了 · R5 别的失败 · R6 取消 · R7 重放判别 · R8 键归包 · R9 sdk 单发层 · R10 帧透传 · R11 消费方半路 throw / return)。
356
+ - `run-run-events-drain-reopen-test.mjs`:E0′ 由「账不在根入口」翻成「根入口与模块内件同一只函数」,+E0″(d.ts 两只名)+E0‴(账彼此独立)。
357
+ - 公面运行期导出 1641 → 1645。
358
+ - 扩门 `run-display-untrusted-projection-test.mjs` DU 段(743 → 765 格):五类零泄漏语料 15 形 × 12 出口 · 机读口读法定形 16 形(含逗号读法现状钉 3 形,KL-760)· 不该动的形 24 形 · 邻形族扫四族(Unicode 空白 / 控制串 / 不可见单元 / 方案词)+ 只开一网出口 · 幂等 · 65 KB 线性界 8 形 · 诊断词判定口与出口同表 · 补充外露形 9 形(token68 填充 / 换行后的载荷 / 包裹值里夹分号与 `@`)· 主机名像标签只在配置地址口放行(自由文本出口照遮)。现状钉成文改口五格:H7(尖括号里不像占位的值改遮)· NF4c(`PGPASSWORD=Basic` 改遮)· K26 / H9(分号紧贴的片段并进记号)· Y32 一形(`token:<口令@db>` 整只一枚记号)。
359
+ - 扩门 `run-display-credential-reach-test.mjs` DW 段(72 → 90 格):停字符 27 格 × 5 出口零外溢 · 修后形 · 路径标签 + 停字符 · 自由文本口不动 · 解析器读面 · 相对地址 · 主机名像标签逐字节与闭合失败负控 · 幂等 · 上传判据同读 · 补充外露形(路径粘连名 / 编码冒号 / 首部 TAB)· 百分号解码出的冒号不当端口分界 · 线性。
360
+ - 新门 4 道(包侧投影门三件:门 / gates-manifest 登记 / README Guards 行):`run-protocol-name-reads-test.mjs`(三份真 esbuild 打包〔不压缩 / 压缩 / 压缩加 keepNames〕× 真实例 / 字面重建形 / 码被剥掉的真实例 × 八个判官出口逐位对拍,字面协议名单一住处与已装 sdk 类名同值)· `run-thrown-data-reads-test.mjs`(六只读口 × 触发形 × 位 × 五种位置的生成池:自有数据 / 原型链 / 访问器回值 / 访问器抛 / 读描述符陷阱;函数体零普通取值)· `run-turn-failure-presentation-test.mjs`(失败句缺席语义逐形 · 呈现判定 · 重连预算,含与网页端 / 桌面端两份循环的参照实现对拍)· `run-sandbox-hint-host-test.mjs`(五臂 × 三宿主 + 认不出的宿主位 + 判型不变,终端缺省与 0.97.1 原句逐字节对拍)。公面运行期导出 1641 → 1649。
361
+ - 新门 1 道(包侧投影门三件:门 / gates-manifest 登记 / README Guards 行):`run-agents-wire-directory-test.mjs`(AD1 读口三态 · AD2 代理 × 读数在手 × deny / allow 逐形 · AD3 读数不在手照投 + 未核行 · AD4 空读数 · AD5 方向 · AD6 allow 侧拼法问题 · AD7 excludeTools 判官 · AD8 真 sdk 形正控 · AD9 公面 · AD10 与安装着的引擎判官逐条对拍:省掉 ⟺ 引擎答无应答拒)。公面运行期导出 1639 → 1641。
362
+ - 负控套:影子豁免登记表 `entries` 为空时,「挑一行活行改判」的两枚负控(`layering-shadow-export-proof-wiring` / `layering-shadow-export-review-hash`)按 N/A 报进总结行(表上再有活行即自动恢复演练);表非空却挑不到合格行仍响亮抛。0.97.0 发布树上该表随终端 1.0.148 删尽同名声明后清空,这两枚曾因此中断整套。
363
+ - `run-fleet-view-keys-test.mjs`:壳「声明了、包已不产」的两条过渡台账行(`FleetTask.queuedCount` / `FleetWorkflow.errorCode`)随终端 1.0.148 删掉声明与读臂后收账,两表回空(等值门 E1 / E3 点名;删行期限按成文 = 终端删掉声明之后的下一个本包版本)。
364
+ - 新门 1 道(包侧投影门三件:门 / gates-manifest 登记 / README Guards 行):`run-row-sidecar-projection-test.mjs`(175 格:RY 重放 —— 三种重放形结果帧 / 补差行末键 · 失败与结局不知道两只合成行 · 稀疏负控十三形 · 追加律 · 类型检查器判接收者的读法单源〔植散读证尺子会响、三处调用点同一声明〕· 型钉 · 读口逐形 · 错配账 · 每个带键终局恰一条臂〔零行 / 一行 / 多行 / 真跑 / 中断〕· 身份射程 · 续读负控 · 句子 · 必接登记 / 冻结下限 / 座位去向 / 参考宿主拿掉即报缺且渲 0 行 · 夹具:服务端只在重放腿铸帧位;RF 工具结果行四件 —— 两车道同键同值 · 单码不对称 · 两只窗与停驻形 · 稀疏负控与手搓臂 · 两处展开解析到同一声明 · 块不变 · 读口逐位隔离 · 收扫关零键 · 并存 · 权威事件重投 ≡ 首投 · 键位;SK 键表形)。
365
+ - 扩既有门:`run-cc-message-key-census-test.mjs`(⑧ SK1 键表两向等值 + 三枚判别力自证;去向表四行改值)· `run-selfheal-reopen-test.mjs`(G-SR 段:复证之后的分诊、终态四词卡前 / 卡后、开枪前复证正控 + 终态四词 + 404 + 读不出 + 中止 + park,幽灵 404 读法)· `run-terminal-cause-projection-test.mjs`(X1g park 词先判)· `run-additive-key-passthrough-test.mjs`(G4c 改口 + 边界六形)· `run-cost-absence-projection-test.mjs`(W 段)· `run-client-core-pure-test.mjs`(B6 G13 改口 + 062⑦ 改口)· `run-server-7125-pick-test.mjs`(R1 – R12 改口 + R13r)· `run-seat-contract-keys-test.mjs`(词表 13 词)· `run-terminal-identity-copy-test.mjs`(新结局进样本表)· `run-client-core-message-branching-test.mjs`(B8 站点 7 → 6,ALLOW 一行随站点销)· `run-engine-account-keys-projection-test.mjs`(S4 / S4c 改口:未执行位只在唯一铸口里读一次)· `run-tool-card-outcome-test.mjs`(U2 import 判据放宽到合并 import)· `run-terminal-cause-projection-test.mjs` G-BD7f(与上一发布产物对拍:坏因由座 + park 词那一类登记为有意差分)· `run-fixture-flat-done-ratchet-test.mjs` 位点注(本版新门里三处扁平形是拒绝体 / 重放体本形)。
366
+ - 登记物:公面运行期导出 1711 → 1714(`isReplayMarked` / `toolResultRowFlagsOf` / `TRANSCRIPT_ROW_SIDECAR_KEYS`);超集键台账 +6 键(`_sema_replay` / 三只工具结果行键 / 两只占位缺席位)、`_sema_collateral_abort` 行改写;必接 chrome 臂 +1;退役登记 +1 行(RL-151);导出签名 unknown 出境不变。
367
+ - **新门 `run-upstream-type-shadow-test.mjs`**(CC-589;包侧门三件:门 / gates-manifest 登记 / README Guards 行;**§126 TS-5**):根入口型名 × 运行期上游型名(上游清单由 package.json 的 `dependencies` ∪ `peerDependencies` 派生,含各自 `exports` 的类型子路径,通配子路径按盘上文件展开)求交,同名的根入口符号必须解到上游同名导出的那一只(再导出;解到上游的另一个符号同样红),否则须登记;另判根入口源码零处对运行期上游的模块增补。登记只收一种「上游挡路」—— 属主领先(本包型 ≡ 词表属主包的同名型,属主须是已声明依赖里的外部包、那一只的声明真在属主包里;转录它的上游型落后),前提每次由门重证、倒下即红,按 (名, 上游入口) 逐对覆盖,另有到期 / 地平线 / 死行 / 行形。型恒等 = 两向可赋值 ∧ 结构指纹相同(多一只可缺键、只读修饰、调用签名返回形多一位都算不同)。登记 1 行:`BrainStatusPhase`(sdk 的同名型缺引擎闭集里的 `waiting_first_token`;到期 0.100.0)。尺子自证:合成语料逐形说话 + 真上游名集上的两只植入件必抓 + 上游 / 根入口型数地板。
368
+ - 登记物:根入口型名与 sdk 同名的自铸型 27 → 1(登记行);typeshape unknown 出境按实测降数(活卡帧型的三只 `unknown` 位随本包那份接口删除)。
369
+ - **§126 PN 组**:会话规则写口(`run-session-policy-wire-test` PN1a – PN1i / R5 – R5f;`run-session-policy-grammar-test` G-GR10 改口、G-GR13d 真引擎 7.129.1、G-GR15d 空种子首写)· 撤销动词(`run-session-policy-refused-removal-test` R1e 新;R1b / R3 / R5r 成文改口)· 回放臂(`run-approval-respond-parking-test` G-PK2e1 – G-PK2e8,含 G-PK2e4b / e4c)· 缺席词判定(`run-automatic-answer-verdict-test` A7b / A7c)· 续跑启动成因(`run-parked-resume-startup-test` U8 改口)· 卡面单源(`run-standing-rows-test` R7 / R11c)· 代理工具清单三路同答(`run-agents-wire-directory-test` AD5c;判据另一头取还会拒的那一代引擎)· 翻译口新一代写口读数(`run-session-policy-deliverable-test` E2c)· 能力账认 `extends` 头与能力词(`run-engine-caps-ledger-test`)· 帧键门按夹具代际放行(`run-approval-frame-keys-test`)· 通告码册九十三与服务端自铸码起始版(`run-engine-notice-catalog-test`)· sdk 地板见证 ②d-7(`run-sdk-floor-test`)。成文改口逐条见 §126y。
370
+ - `layering-shadow-export` 差分格 +1 `requires-real-approval-reader`(四类分歧:顶层取值器抛掩盖 `risk` 真值 / 只读顶层 / 缺席写成 `undefined` / 不读 `risk` 故不抛);影子豁免表三行(终端与网页端同名 `readRequiresRealApproval` 两份实现、桌面端 `engineIdentityOf` 同名不同物;dueBy 0.99.0)。`layering-direction`:`isGateStandingErrorCode` / `isCodeClassifiedGateFailure` 下沉到第 0 层新叶 `gateFailureCodes`(名与判据不变,`parkResolver` 转口);`absence-fold-census` 登记 `submitReopen` 两处闭合方向的 `catch ⇒ true`。
371
+ - 新门 1 道(包侧投影门三件:门 / gates-manifest 登记 / README Guards 行):`run-inherit-env-intent-projection-test.mjs`(CC-747;S 公面 / R 读器四态逐形〔含原型污染、访问器零执行、失效〕/ J 判定全组合真值表 180 格 + 坏读数 + 入参按键隔离 / N 放宽方向负控十形 / T 告知句逐字节与 `lang` 坏值 / F 支持底线服务端发布包零铸点)。
372
+ - 扩既有门:`run-engine-caps-single-source-test.mjs`(G-SB16 例外表清空;T 段 G-SB30 – G-SB38:任务句柄判官恰一处 · 中心接线缓存读数不带 caller · 登记读口第三参型面 · 代理能力判定读总缓存三格 · 同址换代后再准备三格;G-SB13 随退役删格,退役名由退役台账门钉)· `run-engine-caps-landing-projection-test.mjs`(V 段:本 realm / vm realm 逐读器差分 + 类实例负控 + 源码单判据钉)· `run-execution-lane-capability-test.mjs`(S6o – S6r 翻面、S6q2 对照)· `run-engine-cap-snapshot-readers-test.mjs`(读器表执行车道有效值带 `isolated` ⇒ G-CR12 逐位覆盖到它)· `run-engine-agent-absence-projection-test.mjs`(B8 / BF-R1 改用证据键,B8b2 / B8d / B8e)· `run-store-center-wiring-capability-test.mjs`(S7c 改口、S7c2)· `run-rewind-archive-capability-test.mjs`(S5d)· `run-client-core-pure-test.mjs`(B6 / R6j 随能力重置口退役改口)。
373
+ - 新门 1 道(包侧投影门三件:门 / gates-manifest 登记 / README Guards 行):`run-connector-status-projection-test.mjs`(S 公面 · J 契约 JSON 真字节:读者铸出集合与契约枚举两向相等、读者臂合契约定义 · T 挂载面 × 探测面 × 拨号判词全组合 840 格与拨号判词无关性 · N 放宽方向负控与尺子自证 · K 坏形逐键 · L 句口十句 · E 真 sdk 客户端端到端与出处(探测口结局读不出、消费方真编译:探测口结局交不进) · D 单一真源结构 · F 支持底线服务端与引擎的铸点);公面运行期导出 +3;index 闭包 +1 文件(`src/connectorStatus.ts`)。
374
+ - 新门 1 道(包侧投影门三件:门 / gates-manifest 登记 / README Guards 行):`run-session-policy-grammar-test.mjs`(运维 / 普通两种身份 × 有戳 / 无戳 / 显式戳 0 × 括号形 / 纯形真值表,手写引擎桩与服务端 7.129.1 真写判官 + 真错误映射两种引擎各跑一遍 —— 修前读数:运维身份 `written` 且回传体无戳、普通身份 `loosen_forbidden` · 撤销同律 · 坏戳十一形 / 访问器 / 按键抛错代理 / 原型污染 · 并发键 · 失败分类窄读 · 「写者必须声明文法」的两种候选拒形 · 措辞 · 声明面 · 生成语料对真引擎的超集关系)。`run-session-policy-wire-test.mjs` 成文改口:收紧结局枚举 17 → 18 句、读失败句 16 → 18 句(失败分类 +`earlier-grammar`、读不懂位置 +`grammar_stamp`)、与上一发布产物对拍的池剔除这两臂并单钉(RN7c)。
375
+ - 新门 2 道(包侧投影门三件:门 / gates-manifest 登记 / README Guards 行):`run-approval-hold-scope-test.mjs`(HL1 段 42 格:宿主登记 × 活卡入口 / 停驻行卡 × 活卡入口两向对偶查、相位、同调用另一件事不并入、耐久回执说重开不算结算、转停驻之后宿主作答可推进、中止走开、零身份、`joinApprovalHolder` 三臂、接替位、停驻行位、停驻告警函数形)· `run-hitl-answer-outlets-projection-test.mjs`(HL2 / HL3 / HL4 / HL6 段 56 格:两腿决断体基形矩阵、放行备注不上 wire、人答出站事件恰一枚、三档投影与判官逐卡同答、本地规则可执行性与装配判官同答、迟到结局五档与终端现形冻结副本差分、202 停驻中体、async 监听器拒绝零外溢、拒因只读一次)。
376
+ - 扩 / 改既有门:`run-replayed-approval-disposition-test.mjs` RC3 成文改口(已结且不转停驻 ⇒ `true`)+ RC3b – RC3e(转停驻 / 坏形 / 端到端两向);`run-file-history-tighten-test.mjs` R2 / U3 / U4 成文改口 + R2b(不认识的词专句);`run-hitl-wave2-test.mjs` G-HW2-6e 的语法树尺子改扫活卡入口三只函数的并集(入口拆成公面入口 + 查表持有 + join 别的路)。
377
+ - 新门 1 道(包侧投影门三件:门 / gates-manifest 登记 / README Guards 行):`run-hitl-single-reading-projection-test.mjs`,60 格(HM-1 – HM-11:真桥上带身份停驻三形的连坐判词与身份缺席对照、宿主与子代混流 / 自报属于别的门的帧不盖 · 真取件腿上的回退次数 · 重开组合的运行期拒与出包型编译诊断 · 跟踪器 delta 键集与型面 · 子代判别 · 真订阅口上半坏 / 整段坏两形与熔断、「失败 → 半坏 → 完整」只有心跳时照旧补读 · 非默认槽复用拒 · 入参单表的行为与源码结构 · 面板首绑定 · 压制集 · 门记录视图证据的三态、幂等与去证据失判别 · 两只文字读口七形同答)。
378
+ - 改口的既有门:`run-hitl-gate-honesty-test.mjs`(F4-b / F4-d③ / F4-e8 / F6-e11 / F6-e13 / F6-e14 · F8-S3 注)· `run-additive-key-passthrough-test.mjs`(G2d)· `run-client-core-pure-test.mjs`(压制集表 · `#307` · B6 · B7 子代判别与委派链 · ⑨b′ · L-69⑨①d / ②b)· `run-approvals-feed-unknown-test.mjs`(U5c / U10f / U11b / U11c)· `run-live-pending-ask-test.mjs`(S4n / S4o / S4p)· `run-selfheal-reopen-test.mjs`(G6⑦)· `run-plan-review-injected-wire-test.mjs`(W8g)· `run-permission-denial-projection-test.mjs`(M0d / M4 / M5c – M5f / M8a′ · O8a – O8c)· `run-cc-message-key-census-test.mjs`(删一行)· `run-engine-vocab-floor-test.mjs`(⑦)· `run-approval-card-v1-projection-test.mjs`(V2 正形)· `run-tool-result-content-projection-test.mjs`(S2)。
379
+ - 新门 1 道(包侧投影门三件):`run-tool-row-terminal-projection-test.mjs`(工具行终态随执行腿:规则 1 / 规则 2 / 包内通道 / 桥拼续跑 / `-p` / 判官真值表 / 交接 / 配对法 / `tool_parked`;全部经真 `runStream → adapt`)。改写:`run-approval-resolution-test.mjs`(三车道真入口 × 联合 / 判官四口收联合 / 送达判点真值表 / 真 `HitlBridge` 三形 × 四入口 / 判点 × 计划审阅 × 压缩口跨入口对拍 / CC-768)。
380
+ - 登记物:公面运行期导出 −3 +3(1726 不变);退役登记 +1 当版退(RL-152)+2 过渡(RL-153 宿主续跑声明、RL-154 续跑预检反推);必接 chrome 臂 +1(`tool_parked`)、座位 chrome 词表 +1;内部臂表 +1(`terminal_fact`)。
381
+ - 新门 1 道(包侧投影门三件:门 / gates-manifest 登记 / README Guards 行):`run-transcript-identity-projection-test.mjs`(A 段 97 格:G-IDE 信封层 · G-ID1 同腿重投 · G-ID2 两进程 / 2b 断线重连 / 2c resume / 2d 桌面端无游标重放 · G-ID3 中途接上 · G-ID4 引用位与三态表 · G-ID5 形 · G-ID6 分割线 · G-ID7 `seq` 档退役 · G-IDT 终局 · G-IDP `-p` 工具结果帧 · G-IDU 唯一;B 段给上一版 dist 时逐行类登记跨版本值与正文不变量)。
382
+ - 扩既有门:`run-client-core-pure-test.mjs`(`seq` 档退役改格、段身份标签改格)· `run-memory-saved-projection-test.mjs`(M11 跨版本不变,独立参照 v5)· `run-text-segment-authority-test.mjs`(G5 段身份去序号五格)· `run-result-text-backfill-test.mjs`(GID 终答补差行按 run 身份派生三格)· `run-server-7125-pick-test.mjs`(RS1 经口计数纳入终局 run 身份读口 + RS1b 重放体读法)· `run-cc-message-key-census-test.mjs`(工具结果去向表:`eventId` → 两出口 `uuid`、`_sema_engine_ref` 行)· `run-additive-key-passthrough-test.mjs`(引用位登为非 wire 键)。
383
+ - 登记物:公面运行期导出 +2(`engineRefOf` / `sameEngineRef`);类型棘轮 B4 21 → 20、unknown 出境 591 → 590(`deriveTranscriptId` 入参去掉 `seq?: unknown` 一位);超集台账 +1 键(`_sema_engine_ref`)。
384
+ - 新门 1 道(包侧投影门三件:门 / gates-manifest 登记 / README Guards 行):`run-event-leg-compose-test.mjs`(**§126 LG-1 – LG-3**),55 格:EL-A 表闭集与窗列 · EL-B1 帧级域不相交(门内按语法树从源码重算)· EL-B2 继承闭集(类型检查器,「落点 → 来源」判法:桥侧模块〔`hitl` 含子目录〕里每个上下文类型可赋给 `AgentEvent` 的落点往回追来源,只许原样引用或 `inheritFrameBinding`;对象字面量、`new`、`Object.assign` / `structuredClone` 等范围外调用、推断返回型的帮助函数、帧子型字面量、本地对象属性逃逸、子目录文件九形植入各响一处,包上同形不冤枉;人口地板 85)· EL-C 绑定 / 身份成对与终帧为准(幂等重放 / 晚拒收 / 头与 meta 不一致)/ 持久化端口 / 拒收两臂 / 当前代闸(取值器抛、非函数)/ 终帧端口 · EL-D 属主盖章(含两腿交错并发不串号)· EL-F HITL 三族与组装期点名 · EL-G 续流逐级、审批窗闩(三键全缺)、换挂、中断改写 / 连坐 / 收场合成帧(换挂前后)的继承、桥收场终帧照调终帧端口、续流补会话、每流装饰、抽头、宿主改写继承与先登者胜、问答桥依赖按宿主原样读(车道取值器不执行 / 抛错不拆流 / 私有字段接收者)· EL-H 报告 · EL-I 非 HITL 帧零改写。
385
+ - 新门 5 道(包侧投影门三件:门 / gates-manifest 登记 / README Guards 行;每道先写期望格跑红、再修绿,变异各红在点名格):`run-task-notification-xml-read-test.mjs`(36 格;单条口三态逐形 · 与渲染口互逆 · 开标签后空白取 `\s` 全集 · 与终端旧回读的有意差逐条钉死 · 批量口对上一版整串正则实现〔门内冻结原文〕3 万条生成池逐形不变 · 四类对抗串 40 万候选线性 · AST 单源,11 枚变异)· `run-narrow-readers-export-test.mjs`(33 格;四口逐位 · 对端上旧三位读法〔冻结原文〕6000 条对拍 · 同一次快照每位只读一次 · 编译一段消费方 · AST,9 枚)· `run-plan-review-offered-mode-test.mjs`(67 格;三态读口 · 精确记录优先于按尾缀推断 · 台账刷新淘汰序 · 与终端自记台账冻结模型 160 步随机序列对拍 · 同步重载退役〔AST + 严格编译〕,12 枚〔含一枚退役词复活,由退役登记门抓〕)· `run-context-usage-projection-test.mjs`(26 格;唯一窄读口 · 投影口与直喂 `adapt()` 两入口等价 · 有界落在读取数上 · 对网页端旧读口〔冻结原文〕8000 条对拍 · AST,10 枚)· `run-tool-gate-view-projection-test.mjs`(30 格;行 / `-p` 帧 `_sema_gate` · 字面写死的独立期望值 · 缺席形整键缺席 · `gate` 读就抛只缺这一键 · 手搓臂视图形与裸 wire 形同值 · 视图幂等〔含分类器 / 模式放行账 / 问类字段的 600 条生成池〕 · 五只判官对行视图与裸帧同答 · 登记表,10 枚)。
386
+ - 迁移既有门(`reopenPlanReviewCard` 同步重载退役〔RL-116〕:重开调用一律带回执窗、改读回执形):`run-plan-review-dismissal-test.mjs`(135 格)· `run-plan-review-decision-ledger-test.mjs` · `run-plan-review-decide-verify-test.mjs` · `run-plan-review-injected-wire-test.mjs` · `run-selfheal-reopen-test.mjs` · `run-client-core-pure-test.mjs`;`run-cc-message-key-census-test.mjs`:`gate` 键去向行改为由工具结果行 / `-p` 帧认领 `_sema_gate`。
387
+ - 登记物:公面运行期导出 1682 → 1689(+7 名);模块级单例清单 +1(`offeredModeByQuestionId`,low);超集键登记表 `docs/type-superset.json` +1(`_sema_gate`);退役账 RL-116 由在册移入已退役(在册 29 / 已退役 71〔该组合并时的读数〕;RL-89 / RL-90 原留作在册,🔁 本版改为硬退(RA));导出签名 unknown 出境与可移植棘轮不变。
388
+ - 扩既有门 `run-panel-reduce-test.mjs` PR-I 段(90 → 118 格;包侧投影门三件之门 —— gates-manifest 该套描述与 README Guards 行由生成器同批重写):设计稿到达序 S1 / S2 / S3 / S5 / S9 / S10 / F1 / F2a / F2b / S6a / 工作流重试各一格(修前在 0.97.1 产物上逐格红)、逐键 `final` 四格、合并纯(两遍逐字节同 · 合并那一帧再喂零差分)、整条淘汰之后两把 id 都解析不到、语法树钉(记录上无所有权三件套 · 源码零类前缀别名字面量 · 身份索引值型不带代际);旧事件口两格(只带卡的行帧不改写到别人的键 · 只带卡的短命终态行照发)。改口格:PR-E1 状态键闭集(`alias` → `index` + `cards`)· PR-F1′ / PR-F9 / PR-H1 / PR-H1′ 按新规则改读。
389
+ - 改格 `run-panel-identity-normalization-test.mjs`(按卡归一的 N3 / N14d / N16 / N16b / N22b 改成「卡不桥接」;N18e / N18f 的边界改用转录锚;常驻标 N11 / N11b / N15c / N15f 改读「一只子代一个标、两把键同答」;复活 N24 / N28 / N29 / N30 / N32 改读「落在先发布的键上」;有界 N13b / N31e 改为整条记录 8192)与 `run-panel-cycle-identity-test.mjs`(S7 段整段换成「缓行只由解析到同一条记录的终态放出」;S1p / S1q 的溢出改为整条记录淘汰掉一只在跑的;S1α / S10d 改读)。
390
+ - 门 `run-permissions-declaration-test.mjs` 新段 TK(CC-378):TK1 – TK3 收紧桶 × 三列 × `~/` / 编译拒收池(从开发依赖引擎现算,≥ 13 条、码族 ≥ 3)/ 名字关池原样上体;TK4 等价改写冻结向量;TK5 报告口键集两向 never 编译期钉;TK7 allow 三形与修前冻结向量逐字节同;TK8 生成池 2400 串性质格;TK9 现役夹具服务端逐条受理读数(`~/` 无家目录拒、有家目录收;编译拒收 / 名字关两形都拒;改写串都收);TK13 拒装身份(三类抛 × 两只口、外来抛出物一律包一层〔含 defineProperty 假写成功的代理〕、读口坏形、esbuild 压缩包对拍);TK8b 改写表每行都是四种等价改写之一。V / MS / MW / R / MU / G-RR1 各格按「收紧桶照投、allow 桶不变、与发布产物比收紧桶只多不少」改口。
391
+ - 门 `run-agents-wire-directory-test.mjs` 新段 TK6 / TK14(CC-378):代理清单帽与名长 / `maxTurns` 原样上体并喂现役夹具受理判据点名字段(`isolation` 一位照旧丢键,KL-781);`tools` 五形;名册在手才改写退役名(含名册含该名 / 名册缺席 / 名册读不成三负控,真判官受理改写后的载荷);32 帽 / 扣送 / allow 侧省略的回归约束;就绪门结局五形 + 失败后重投自愈 + 挂住一次后下一次就绪(TK14⑦)+ 被取代世代迟到失败不污染当代(TK14⑧)。`run-client-core-pure-test.mjs` ⑰ / ⑰b 对应格改口。
392
+ - 门 `run-turn-failure-presentation-test.mjs` 新段 TS(CC-378):座位键铸点与 TH-4 六例逐位同、同类同码两对载荷不相等、读口十八形核形 + 嵌套访问器 / 原型链 / 三层已撤销代理(TS3c)、编译期键型 ≡ Pick 五位;`run-seat-contract-keys-test.mjs` F-TF0 / F-TF1(出站门只登键、五形恒过门)与 N1 / N2 键集改口。
393
+ - 扩既有门(**§126 PK**):`run-cloud-effective-projection-test.mjs` S7 改口(`assertionHeader` 由记账不过境转原样过境;两腿逐形同答 D1 / 公面读口同答 D1b;披露 E0–E7;身份头读一次 B6)+ S11(数据副本 15 格:嵌套位副本、`model` 首读非串、角色读抛 / `roles` 整位读抛不外抛、条目只读一次、全部条目写不成即抛)+ B6b(`principalHeader` 读一次)+ S12(10 一代键不读 8 格)+ S5 / S8 / S9 的 10 一代格改口或退役 · `run-engine-url-transport-test.mjs` EU7(会话镜像地址:合形逐字节同旧读法、拒的地址不折 null、外层空白、线性、单源 AST)· `run-gate-vocabulary-test.mjs`(两处 sdk 滞后登记按退出条件删)· `run-sentence-tables-projection-test.mjs`(静默表四词 / 匹配形九词)· `run-approval-card-reading-projection-test.mjs` R5b–R5d · `run-model-catalog-read-projection-test.mjs` M2 / M7 改口 · `run-client-core-pure-test.mjs` #318③c-d 改口。
394
+ - 新门 1 道(包侧投影门三件:门 / gates-manifest 登记 / README Guards 行):`run-retry-status-notice-test.mjs`(CC-775;S 公面与投影键集冻结 · T 臂 × 终态 × 条件词 × 状态码 × 次数 全格对独立预言机 + 字面整句 · W 等首 token 全格(零 error / retry 字样、阈值恰半边界)· A 缺席与非法值 · O 表外词 · R 出路 · M/D 模型名与引擎 detail · U 未知臂 ≡ 默认臂 · K 逐键抛错代理 / 每键至多读一次 / 冻结 / 纯 · V 句表键集 ≡ 引擎 `PROVIDER_CONDITIONS`(语法树)· L 句子卫生 · E 真管线端到端);扩既有门 `run-engine-vocab-floor-test.mjs`(G2-e:引擎判词词表 ↔ 句表逐词对账 + 行为分档)。
395
+ - 新门 2 道(包侧投影门三件:门 / gates-manifest 登记 / README Guards 行):`run-seat-apply-config-reason-test.mjs`(70 格:AR1 公面 + d.ts AST + 类型探针 / AR2 出站门 / AR3 人话句单源 / AR4 端到端;基树上红先 52 格红)· `run-seat-stream-history-test.mjs`(147 格:SH1 – SH4 分片公面 · 铸口 · 读口 · 对账与整链 / EH1 – EH8 历史投影公面 · 金样 · 普查分歧 · 确定性 · 敌意入参 · 对账 · 出身元数据判据 · 透传位 JSON 快照;基树上红先 102 格红,外部复核后补的格另红先 20 格)。
396
+ - 扩既有门:`run-seat-contract-keys-test.mjs`(H2:25 判点 × 七种非普通载体 + 跨 realm 普通对象正控 + 九处嵌套位与在线目录行 / 缺省位 + 读口、前提格证明结构化克隆真丢位 / N:事件四死位退役的键集 · 覆盖表 · d.ts AST · 编译错探针 · 旧宿主带畸形退役位逐位逐形仍放行)· `run-human-turn-encoding-test.mjs`(HT9 改钉退役:根入口无 `AttachmentSeat` 名、占位源文件不在盘、编码口不读总缓存里的席位位)· `run-retirement-ledger-test.mjs`(RL-41 提前退役钉)· `run-request-uplift-test.mjs` / `run-engine-cap-reader-factory-test.mjs` / `run-engine-cap-snapshot-readers-test.mjs` 随读器表删行改口(候上游行现无,F15 逐行循环空转,留给下一只候上游读器)。
397
+ - 登记物:公面基线 1680 → 1684(+5 运行期名 +1 `projectEngineSessionMessages`、−2 `noteEngineCapsForAttachmentSeat` / `observedAttachmentSeat`)、测试钩 60 → 59;`export-liveness` removed 账 0.98.0 键(三名);退役登记 RL-41 挪进 retired(`names` 四名账);单例清单 −1 +3;typeshape 棘轮 `unknownExport` 591 → 589(零松量,ledger 一行)。
398
+ - 新门 3 道(CC-586 / CC-587;包侧投影门三件:门 / gates-manifest 登记 / README Guards 行):`run-message-catalog-test.mjs`(MC0 – MC14:尺子自证、两语键集合与占位符、无空串、已译、键文法与域闭集、键不撞上游码、术语与反引号片段、过展示出口不变形、上提键对金样逐字节、冻结、`translate` 永不抛、嵌套 ref 同语并跨两份模块实例互认、台账坏了不打断出句、界面语言解析链对终端修前解析链 6000 格对拍)· `run-bare-sentence-ratchet-test.mjs`(裸英文句棘轮:先静态归并再数词 —— 字面量 / 模板 / `+` 链 / `.join` / 数组展开 / 跨模块 `const` —— 逐文件「摘要 → 次数」只降不升;基线 `scripts/bare-sentence-baseline.json` 167 个文件 2085 次、公面散文常量 40 个)· `run-subagent-model-word-test.mjs`(SW0 – SW15 + 问题句:落点预览对已装引擎的档位展开 2058 格差分,另证差分器抓得住五种已知错序;目录或档位表读不出时不作判决)。
399
+ - 扩既有门(CC-605):pure 套 B4 verb 格改口(表里没有 `probeHealth` 行、共 12 行)· `run-segment-authority-single-source-test.mjs` ④c(包源里没有一处串表达式在静态归并后拼得出 `/health` 路径 —— 拆开拼、模板插值、`const` 引用同样抓;`probeEngineAlive` 对六个真 HTTP 夹具 —— 200 degraded / 200 非 JSON / 503 / 200 · 201 · 299 配 `status:"ok"` —— 与 sdk 同答)· 退役账 RL-155(名字账 + 已删成员指纹)。
400
+ - 新门 4 道(包侧投影门三件:门 / gates-manifest 登记 / README Guards 行):`run-assistant-inbox-projection-test.mjs`(AI0 公面 · AI1 行投影逐位 · AI2 次序逐位等于线上次序、源码零排序调用〔语法树,尺子自证〕· AI3 不报 · AI4 不可用三因 · AI5 真 sdk 客户端端到端 + 与夹具处理器的键表和排序律对表 · AI6 车道判官与后台视图 assistant 腿同答)· `run-control-preempt-test.mjs`(CP0 公面 + 结局十一形声明解析 · CP1 202 回体读法〔`running` 不是让位成功〕· CP2 拒绝读法 · CP3 至多一次与判类单源〔一池抛出物逐只〕· CP4 车道不可用回落 cancel / 不回落 · CP5 在飞 run · CP6 回执句 · CP7 真 sdk 客户端端到端〔maxRetries 2 也恰一发〕· CP8 源码结构与 import 环冒烟 · CP9 夹具处理器铸点)· `run-device-registration-test.mjs`(DR0 公面 · DR1 – DR3 签发 / 注册 / 吊销 · DR4 令牌不外泄〔结局 JSON / 呈现句 / 零日志调用〕· DR5 身份不符两腿 · DR6 呈现句 · DR7 真 sdk 客户端端到端 · DR8 源码结构 · DR9 夹具铸点)· `run-durable-seq-reading-test.mjs`(DQ0 公面 · DQ1 读法逐形 · DQ2 与桌面端自算件逐形对拍〔门内冻结原件,分歧集登记〕· DQ3 桌面端树真函数〔缺席则跳段〕· DQ4 账本接线 · DQ5 单一声明)。
401
+ - 扩既有门 `run-hook-matcher-verdict-test.mjs`:池里 F23 / F32 期望改 `refused / invalid_regex`;V2 理由词闭集与各臂键集;R 段读数带 `reason`(R1 / R2b / R3)+ R5(服务端 7.126.0 真拒体:编不过 / 求值超时两条的机读位)+ R6(合成体:新理由词、`groupIndex` / `budgetMs` 判形、开集);S / N 段对拍按拒因分(编不过对服务端 `rej-form`);**新 B 段**:对夹具里服务端受理面的真判官 `toolMatcherIssue` 逐形对拍 —— 编不过 ⟺ 判拒、本口判拒的形服务端同因拒、服务端会拒的形本口一个都不答受理,并登记「静态上界超预算而服务端受理」的五个形(这是求值超时一半不升判拒的依据);A5(契约求值函数在 dist 副本里答 `"invalid"` / 非布尔 / 抛的三种结局);逐代读法表改锚到 §126 的 G-PK8c。
402
+ - 登记物:公面运行期导出 1680 → 1689(+9 函数);index 闭包上限 317 → 319(+2 文件 `src/assistantInbox.ts` / `src/preemptWire.ts`,零新外部包);导出签名 unknown 出境不变(591;新入参位一律具名窄型);模块级单例清单 +3 −1(均 low;减的一行是决断拒收句里原有的机读码词形正则,并入 `wireFailureShape` 的唯一判官);门清单 271 → 275;层表:两个新模块列入第 2 层(宿主面)。
403
+ - **§126 FX 组**:`run-session-policy-wire-test` U4a – U4n(U1g 改口:表外键 ⇒ 抛,不是丢)· `run-event-leg-compose-test` EL-C11a – EL-C11h(拒收只在提交腿、只认完整三键;放宽 `status` 判据的变异由 EL-C11h 杀)与 EL-C12a – EL-C12d(活流 + 宿主持卡 ⇒ join、不开卡不发送;次序与反控)· `run-control-preempt-test` CP1f – CP1h / CP6k(CP1e 两格改口:乱码状态 ⇒ 未确认)· `run-retry-status-notice-test` U8(未知臂独立预言机,1267 例)/ U9 / U9b(U2 / M4 改口:`null` ⇒ 清行)· `run-hitl-answer-outlets-projection-test` HL4-13 – HL4-13f · `run-panel-reduce-test` PR-I21a – PR-I21e · `run-turn-failure-presentation-test` TP11a – TP11f(TP10 改口:浏览器 fetch 拒绝 ⇒ 结果未知)· `run-approval-hold-scope-test` HL1-14a – HL1-14f / HL1-13c2(HL1-10c / HL1-13c 改口)与 HL1-18a – HL1-18d(帧登记的绑定 ≠ 调用方交的 run ⇒ 以帧为准;帧没登 ⇒ 回落调用方的 run;「调用方 run 压过帧绑定」的变异由 HL1-18a / HL1-18b 杀)。
404
+ - **能力位读器两族退役钉**(RL-113 / RL-114;**§126 RB**):`run-engine-cap-snapshot-readers-test.mjs` 的 G-CR30 – 32 改钉「两族前缀(`noteEngineCapsFor*` / `__reset*ReadingsForTests`)在 src 代码位(注释不算,尺子先植入自证)/ 根入口运行期键集 / 构建产物 `.js` 与 `.d.ts` 零出现;读器工厂交出的对象只有读口一个成员、工厂源码零处声明写口与重置口」,G-CR1 / G-CR7 随主语删除。`run-engine-cap-reader-factory-test.mjs`:F9 / F17k / F17s 随主语删除;判对象同一性的格(F0b / F6b·F8 / F15e′·F15f / F18)改钉投影次数与「同一落地上各读器互不连坐」,不再经逐只测试钩;读器表 `note` / `reset` 两列退役。`run-retirement-ledger-test.mjs` 新格 G11d(两行在已退役栏、名字账两族逐名齐)。单读器门十四道:导出名清单去掉两族、tee 不抛格只留失效口、读器级测试钩调用删除(它只换对象同一性,不换读数)。登记物:公面运行期导出 1744 → 1725、测试钩 59 → 45、导出签名 unknown 出境 581 → 562(十九只 tee 口各一处 `caps: unknown` 入参)、退役名账 0.98.0 +33。
405
+ - **接入文档 `## §NN` 标题卫生**(`run-integration-doc-freshness-test` ④c):每个 `## §NN` 标题按「·」切段零重复,在飞段标题 ≤ 1200 字。本版多条分支合并时对 §126 标题行做了行级并集,27 次合并把标题拼到 16 640 字、同一短语重复 51 遍且随包出门;标题已重写为去重一行,合并脚本改为段级并集;负控 = 复制一段主题 ⇒ 红。
406
+ - **四行退役的门**(**§126 RC-1 – RC-4**):`run-retirement-ledger-test.mjs` H 段新格 RL-103(三只拼装件根入口运行期 / 型面都不在、包内模块路径上仍是函数),RL-118 / RL-59 两行带包内名字账(构建产物零残留)、RL-92 带公面名字账;`run-plugin-hooks-projection-test.mjs` 新段 P9(十三种坏形入参一律 `TypeError`、错误文本点名正确调用形且不回显值、坏形调用零告警、宿主日志口在 / 缺席 / 抛错三态下同样抛(P9h – P9j)、产物零残留、型面上 `plan` 必填 —— 型面读 TypeScript 语法树),P6 / P7 / P7b / P8 / A1 / A8 / D 段与 G-HK28 的宽容读法格改判;`run-allow-rule-shadow-projection-test.mjs` 新段 RT(只带老键的载体:读口 / 证据口 / 句口缺席、三条卡腿记读不出登记、规则车道 unknown、持久行不给、产物零残留),R / L / B / F / V / WC 段老键格改判(B 段的「只收紧」不变量改按判定口读:上一发布产物上为证据的形,本版规则车道都不放);`run-engine-caps-ledger-test.mjs` 把 `sessionReadRedaction` 改登 not_read(零读点);能力位读器专门那道门随读器删(门名单 −1)。十三道门的扫词表 / 码判官格与 hooks 四道门的无参调用改读包内模块路径 / 计划路径,判据不变。
407
+ - **§126 RA 组(三行硬退)**:面板族门改读行差分口 —— `run-client-core-pure-test` ⑧ / ⑧b 由旧事件口的缓冲 / 合并 / 屏障 / 有界格改成「迟订阅快照折叠 ≡ 直发折叠」逐场景格(条数不变)、⑨ 段与 `run-panel-cycle-identity` / `run-panel-identity-normalization` / `run-notif-fleet-honesty` / `run-terminal-table-provenance` / `run-fleet-view-keys` / `run-panel-reduce` 断言折叠入参的格经包内件的事实流观察钩读、迟订阅格改读快照,`run-engine-agent-absence-projection` 端到端段改读 `upsert{ fields.absence }`,差分门 ⑩a 两侧同喂参照侧那一份包的漏斗、读行差分口;fleet 账本族门直喂账本的格统一改经 stream ingress,新增「连着由账本自判」六格(领流首帧未到 / 落帧 / 重连 / 旧 ingress 迟到帧 / 收流 / 快照落账)、快照 ingress 一次性格与账本面无兼容入口 / 状态面无 `connected` 键格(「连着」只读在飞读面 `fresh`);`run-retirement-ledger-test` 新增 G11d(三行在已退役栏、退役人取行上票号、note 首句带裁定)并由 H 段按名字账 / 词账判名真不在。
408
+ - **§126 RD 组**(支持底线 7.129.1 + RL-142 / RL-143 / RL-144 / RL-164):`run-agents-wire-directory-test` 改钉「原样上体」—— 目录省略那一路(AD2 – AD5 / AD7 – AD10)任何目录读数下投影逐字节同、零披露,判官 = 底线那一代(修前在 7.129.1 现役下整门跳过)、AD1 读口三态不动、根入口无 run 级判官(AD7 / AD9,退役名门内运行期拼);deny 侧格(AD6d / TK6c‴)改钉照送 + 零告警句(交了扣送位也逐字同答);allow 侧格(AD6a / AD6c / TK6f)翻成原样上体 + 条件式告警;新格 AD0e(allow 侧判据 = 开发依赖 core ≥ 声明底线 core)/ AD6g(挂载同名工具 / 委派池时引擎受理零告、本包 allow 告警只用条件式、deny 零告警)/ AD6h(懒挂载的合法协议名 `mcp__<server>__<tool>` / `a2a__*` 不在名册、服务器未声明 ⇒ 判官答 current、读数缺席、零告警、原样上体,名册在手 / 不在手 / 交扣送位三形同答)/ AD6h′(真近似名 `BASH` 照判 `case_twin`)/ AD11a – AD11b(告知 = 出站体差分:本门每一张投影的工具清单告警逐句、`toolListFlaws` 逐行对 `agents[]` 体核 —— 说照投体里必有、说省了体里必无、说改写成 Y 体里是 Y、说不送体里必无;专池五种宿主形含照旧交扣送位与判官端口缺席)· `run-rule-tool-name-judge-test` TN6e / TN6f(交了扣送位照送、读数照报、零告警句)· `run-server-7122-pick-test` T5 / T7(deny 侧零告警句;来源标签三格 T8′ – T8‴ 改喂 allow 侧条目、T9-0 自证要过词表的句子非空)· `run-rules-legacy-tool-name-projection-test` 整门改钉老码读法退役(老码 4xx ⇒ `error`、收紧 `write_refused`、撤销 `write_refused`、出路句只认准备期那一码;跨实例读法改钉现役臂)· `run-support-floor-projection-test` SF1f / SF1g / CT1a 改钉新底线、新格 SF6(README 与接入文档 §0a 的底线三数 ≡ 声明)· `run-session-policy-wire-test` PN1f / RN1 – RN2 · `run-session-policy-grammar-test` G-GR11 · `run-server-7124-pick-test` V 段样本抬到新底线 · `run-cloud-effective-projection-test` S7-E1 射程改说 7.129.1、新格 S7-E8(现役夹具真函数见证 7.129.1 不发送断言头)。夹具换代当天必翻的格:`run-server-7116-fixture-test` C3(按夹具在场的 `questionGrantBindingOf` 装事实)· `run-session-policy-deliverable-test` E 段(老一代夹具取 < 7.51.0 那一份)/ PS7(≥ 7.129.0 一档读引擎店写口)· `run-inherit-env-intent-projection-test` F 段按服务端代际分支(≥ 7.129.0 铸点在场、真函数回体经读器读值)。
409
+ - **三格补钉**:`run-support-floor-projection-test` SF6c(接入文档 §0a「peer:wire 契约」行写的 sdk 下界 ≡ `package.json` peer 范围的下界);`run-allow-rule-shadow-projection-test` RT10a / RT10b(判老两键在场的过程中抛 ⇒ 算在场:`has` 陷阱抛的 Proxy 卡 ⇒ 规则车道 `unknown` / `card_unreadable`;判据口直调时 `has` 陷阱抛 / `riskDescriptor` 取值器抛都答 `true`、不抛);`run-standing-rows-test` R9f(授予绑定读法在技能工具 + `not_bindable`〔卡律 `none`、调用律 `unreadable`〕下,问类成员数超上限〔65 员〕与 `length` 读成 1.5 的数组代理两形都答 `unreadable`);`run-client-core-pure-test` 的帽常量格同批改钉四个退役帽常量都不在根入口。
410
+
411
+
412
+
413
+
414
+
415
+ ### Known limits(本版新增)
416
+
417
+ - KL-770:座位出站门的「普通记录」判据看原型链形状、不看内部槽 —— 刻意改过原型的内建对象(`Date` 的原型改成 `Object.prototype` 一类)判不出;意外的类实例 / 内建对象带位都挡得住。
418
+ - KL-771:`projectEngineSessionMessages` 对出身元数据缺席的老会话 user 行原文留下 —— 引擎前置的提醒块会出现在重建转录的 user 气泡里(新会话不受影响;按形状剥会删用户字面写的同形标签)。
419
+ - KL-759:配置地址展示口「整串一条地址」读法的三处边界(不以 `/` `?` `#` 起头的相对路径按散文读;解析器读面上不叠百分号解码层;特殊 scheme 路径里的反斜杠按值的一截遮)。
420
+ - KL-760:分号紧贴的非凭据片段随值一起遮(多遮);逗号起头 / 逗号紧贴的尾段读法不动(余项)。
421
+ - KL-383 / KL-757 收窄(余项见各行)。
422
+ - KL-792:会话规则读改写口对无戳记录按括号形一律先拒 —— 服务端 < 7.129.0 上多拒、读成空的括号形条目理由偏(详见已知限制册)。
423
+ - KL-793:支持底线内的老服务端(7.126 – 7.128)仍发引擎 7.50 / 7.51 退役的四个词,读成表外词(中性句 / 通用句 / `unknown` / 判定口不知道);到期 = 底线越过 7.129.0。
424
+ - KL-794:v1 呈卡帧不带引擎卡词 ⇒ 这一腿上「以后别问」的本地整工具一行恒不给。
425
+ - KL-795:会话规则翻译口判能写的只文法不成名的串,在服务端 ≥ 7.129.0 的写口被拒 `rules.inert_entry`、整份收紧不写(结局点名那一条);升级判据已被底线 7.129.1 触发,实施归 CC-792(0.99.0)。
426
+ - KL-788:终端 `--resume` 之后,离开时还在等审批的那只调用的行不显示(读回滤掉无结果的 `tool_use`);批准并跟跑后以一条新开始行连同真结果出现。
427
+ - KL-789:按 `tool_use_id` 建卡 / 建索引的宿主(网页端转录 reducer、终端消息索引)在调用 id 被复用时会把新调用的结果写进旧卡;网页端截掉停驻终帧的路径不接 `tool_parked` 时,停驻期间工具卡停在「运行中」。
428
+ - KL-790:无见证的续跑(宿主没声明 `continuesPark`、每条腿一个新适配器实例)⇒ 同一调用两行(一行无结果、一行有结果)。
429
+ - KL-791:续跑认领原卡之后、真结果到达之前本地投影被中止,再用同一实例重接只带结果帧的那一段 ⇒ 结果接不回原行(开卡台账按一次投影存活,普通调用同此)。
430
+ - KL-762:同一 run 先 live 落盘、再 durable 全量重放时同一段回答两遍成行(两腿行结构不同、`uuid` 不同;候服务端 durable 文本按段落账并带与 live 段末同值的事件身份)。
431
+ - KL-763:切点不同的两份投影(idle 切分一只切一只不切 / 段中断流的半截与整段重放 / 段末权威全文改写了字节)各留一份行 —— 同 `uuid` 恒同正文,按 `uuid` 去重时重复一截、不丢正文。
432
+ - KL-764:`-p` 工具结果帧只看得见收卡那一臂,收卡帧不带 `eventId` 而开卡帧带时两车道这一行不同值(支持范围内引擎恒在收卡帧带 `eventId`)。
433
+ - KL-765:计划审阅卡「已呈档位」台账进程内、有界 64 —— 别的进程呈的卡 / 被挤出的卡 / 跨进程 resume 的卡读到 `unknown`,读作答的宿主按保守读域(老两选)处置(与终端旧自记台账同射程);带卡面标签调用不受影响。
434
+ - KL-784:只带委派卡、不带转录锚的 fleet 行帧(工作流代理日志回放那一路)与同一只子代的 tick 行显示成两行 —— 身份说不清时如实两行,不按卡猜。
435
+ - KL-785:有 `cycleSeq` 的后台子代,用量只由行帧驱动(tick 不带代际,说不出属哪一代);父 turn 开着时 tick 比行帧密,屏上的数按行帧的节拍走。
436
+ - KL-786:宿主不经治理直驱工作流并自带任务 id、或续跑腿带自己的任务 id 时,tick 的任务 id 与行帧的转录锚不相等 ⇒ 同一只子代两行。
437
+ - KL-773:服务端对一整份请求每次只点名先撞上的那一条编不出的规则。
438
+ - KL-774:`~/` 路径规则在没有家目录的远端车道上整请求 422,直到改写成绝对路径或声明车道家目录。
439
+ - KL-775:扣送开关暂留期间,覆盖内置名的代理 deny 表有问题 ⇒ 整只不送 ⇒ 内置版顶上。
440
+ - KL-776:代理 deny 退役名改写只看宿主交的名册,委派池里同名的旧工具看不见。
441
+ - KL-777:32 只代理帽暂缓期间,被截的若是覆盖内置名的定义,内置版顶上。
442
+ - KL-778:`tools: []` 的代理,引擎给模型的清单句写「All tools」而选择器给零只。
443
+ - KL-779:代理 `tools` 里的 CC 旧名本版仍省掉 + 一行;之后原样投时它什么都不给。
444
+ - KL-780:代理就绪门到点无结论 ⇒ 这一发不提交;代理目录读得慢的机器上更常见。
445
+ - KL-781:代理定义 `isolation` 写了 `"worktree"` 以外的值 ⇒ 照旧丢键 + 一行(wire 型只有这一个值,取舍候定)。
446
+ - KL-396 射程改写(allow 桶不发;deny / ask 原样上体由服务端判)。
447
+ - KL-782:工具结果行的连坐键只在宿主跑本包问答桥时可能在场 —— 不跑桥的宿主上,同批被连坐中止的旁观者行不带它(屏上仍是 N 行同文)。
448
+ - KL-783:同一会话转录里已有某 run 的首答(增量段行),再收到同一 run 的同键重放 ⇒ 多一份带重放提示的回答(补差行与段行投影形态不同、`uuid` 不同;重复,不丢)。
449
+ - KL-772:页脚 fleet 列表的「fleet 行 ∪ 只在面板 tick 臂里的行」并集判定只住终端一处,且是按上游到货退役的过渡臂(CC-599 关票出口;网页端 / 桌面端零读点)。
450
+ - KL-792:会话规则读改写口对无戳记录按括号形一律先拒 —— 读成空的括号形条目点名理由偏(已知并接受);「服务端 < 7.129.0 上多拒」那一形随支持底线抬到 7.129.1 退出射程(详见已知限制册)。
451
+ - KL-775:(同版随 RL-142 退役)扣送开关暂留期间,覆盖内置名的代理 deny 表有问题 ⇒ 整只不送 ⇒ 内置版顶上 —— 开关已删,这一形不再存在。
452
+ - KL-779:代理 `tools` 里的 CC 旧名原样上体(RL-143 同版退)—— 照跑而它什么都不给(除非这一跑恰有同名工具),本包与引擎各告一句。
453
+ - KL-797:拒装类抛出物的句子语言口径混用 —— 本版新铸的拒装抛出物句(`hooksForWire` 的 `TypeError` 等)是英文,既有的部分抛出物句仍是中文;宿主把 `err.message` 直接渲给用户时同屏中英混出(统一口径候 0.99.0 消息目录出句)。
454
+ - KL-798:接入文档已发段里住着活计数(§27 签名块里的表长数字,冻结账门要求它等于源码当前值,上游加词就得改已发段);候 0.99.0 把计数搬出冻结段。
455
+ - KL-799:`projectAgentsForWire` 的代理定义 `tools` / `disallowedTools` 不是数组(如未拆的 `"Read, Grep"` 串)时整键静默丢 ⇒ 代理继承全部工具(放宽方向;0.97.1 同形;三端都先拆串、型面要求 `string[]`,只有 JS 宿主手拼才触到);候 0.99.0 改 fail-closed(非数组 ⇒ 整只代理拒装并点名)。
456
+
457
+
458
+
459
+
460
+ ## 0.97.1(2026-10-14)
461
+
462
+ > 主题:代理工具清单只投这一跑里可能有工具应答的名(CC-729)· 本跑声明的 MCP 服务器读口与 run 级 `excludeTools` 判官(CC-730)。服务端 7.126.0(引擎 7.49.x)起,代理定义的 `tools` / `disallowedTools` 或 run 级 `excludeTools` 点名了一个这一跑里没有任何工具应答的名,整发请求在开跑前被拒(`config.agent.unknown_tool` / `config.tool_face_control`,原因 `unknown_name`);引擎 7.48 及以前只告不拒。
463
+
464
+ ### Fixed
465
+
466
+ - **代理定义点名未声明的 MCP 服务器的工具时,每一发请求都被拒**(CC-729;接入文档 **§125 AD-1**):`tools` / `disallowedTools` 里的 `mcp__<server>…` 条目(含整服务器形 `mcp__<server>` 与 deny 的内容形)原样投进 `agents[].allowTools` / `denyTools`,服务器不在这一跑的声明里时引擎拒整发 —— 不带代理参数的请求也一样拒(代理定义随每一发上 wire)。现在宿主交了 `toolDirectory`(见下)时,服务器不在本跑声明里的条目省掉并披露一行(`agents wire: agent "<name>" <list> entry "<entry>" names no tool this deployment answers to — omitted: …`):deny 省掉 = 没有东西可藏,allow 省掉 = 没有东西可给,这一跑里任何一腿能用的工具都不变。声明了但没连上的服务器照投(引擎按声明受理,重连后它的工具真会出现)。allow 清单省到一条不剩时发 `allowTools: []`(什么都不给),不回落成缺席(缺席 = 继承全部工具)。宿主没交读数(或读数读不出)时照投,每条 `mcp__` 条目披露一行「could not be checked」。普通名与 `a2a__` 名不判、照投(引擎的全集还含它自己的整份工具目录与委派池,客户端在提交前没有这两份)。
467
+ - **代理 `tools` 里的旧拼法 / 大小写孪生条目让每一发请求都被拒**(CC-729;**§125 AD-2**):引擎 7.49.0 起 allow 清单里没有工具应答的拼法(`Task` / `KillShell` / `bash`,或与已挂工具只差大小写)同样整发拒,而本包此前只告警照投。现在引擎工具名判官判得出的这几类 allow 条目省掉并披露(告警句改成「no tool answers to this entry; it is omitted」);判官判不出(值级端口没装)的照投、原告警不变;deny 侧的拼法问题仍由 `withholdRefusedDenyLists` 处置(省掉会放宽:`bash` 要藏的 `Bash` 真在)。拼法预判读数 `toolListFlaws` 不变。
468
+
469
+ ### Added
470
+
471
+ - **`engineToolDirectoryOf(source)`**(CC-730;**§125 AD-3**):本跑声明的 MCP 服务器读口,三态 `not_landed` / `unreadable` / `{ state: 'directory', mcpServerPrefixes }`(前缀由引擎自己的命名函数铸出,冻结集;空集 = 本跑一只都不声明)。`source` 两半:`requestMcpServers`(本请求自带的 `mcpServers`)与 `deploymentMcpServers`(部署自己声明的服务器 —— `readMcpCapabilities` 读出的 `face.servers` 行可原样交;宿主自己起、没给它配 MCP 的引擎交 `[]`);任一半缺席 ⇒ `not_landed`。
472
+ - **`excludeToolsAgainstDirectory(exclude, directory)`**(CC-730;**§125 AD-4**):run 级 `excludeTools` 的判官,返回 `{ send, omitted, verdict: 'directory_absent' | 'filtered', disclosure? }` —— 服务器不在本跑声明里的 `mcp__` 名省掉(排除一只挂不上的工具是无操作),别的一律照发;`exclude` 不是数组 ⇒ `TypeError`。本包不改请求装配口的 `excludeTools` 语义。
473
+ - **`ProjectAgentsDeps.toolDirectory`**(可选;CC-729):`projectAgentsForWire` 读它做上面那条过滤;与 `excludeToolsAgainstDirectory` 交同一份读数。
474
+
475
+ ### Gates
476
+
477
+ - 新门 1 道(包侧投影门三件:门 / gates-manifest 登记 / README Guards 行):`run-agents-wire-directory-test.mjs`(AD1 读口三态 · AD2 代理 × 读数在手 × deny / allow 逐形 · AD3 读数不在手照投 + 未核行 · AD4 空读数 · AD5 方向 · AD6 allow 侧拼法问题 · AD7 excludeTools 判官 · AD8 真 sdk 形正控 · AD9 公面 · AD10 与安装着的引擎判官逐条对拍:省掉 ⟺ 引擎答无应答拒)。公面运行期导出 1639 → 1641。
478
+ - 负控套:影子豁免登记表 `entries` 为空时,「挑一行活行改判」的两枚负控(`layering-shadow-export-proof-wiring` / `layering-shadow-export-review-hash`)按 N/A 报进总结行(表上再有活行即自动恢复演练);表非空却挑不到合格行仍响亮抛。0.97.0 发布树上该表随终端 1.0.148 删尽同名声明后清空,这两枚曾因此中断整套。
479
+ - `run-fleet-view-keys-test.mjs`:壳「声明了、包已不产」的两条过渡台账行(`FleetTask.queuedCount` / `FleetWorkflow.errorCode`)随终端 1.0.148 删掉声明与读臂后收账,两表回空(等值门 E1 / E3 点名;删行期限按成文 = 终端删掉声明之后的下一个本包版本)。
480
+
52
481
  ## 0.97.0(2026-10-14)
53
482
 
54
483
  > 主题:清账 + 提货 —— 支持底线抬到服务端 7.126.0 / 引擎 7.49.5 / sdk 21.1.0(团队编排四键删、审批卡词 `approvalCard`、提交幂等码、终局失败详情四臂、`allowTools`、目录候选被整拒读口;引擎改名表退役)· 单一真源收口余项(CC-688 / 689 / 696 / 704 / 705)· 座位契约余项(CC-699 / 703)· 能力位(CC-690 / 692)· 中心配置告示句与影子 models 文档(CC-693 / 702 / 708 / 719)· 舰队账本(CC-700)· 决断拒收判官取位与抛出物读法(CC-706 / 709 / 712)· 审批已结一处存(CC-632 / 710)· 展示封长记号(CC-707)· 工具卡退化空卡(CC-697)· 传输失败分类读口(CC-698);两同义行(`projectEngineRuleNames` / `describePrintLaneAllowKept`)在终端删掉壳侧实现之后删行。