@sema-agent/client-core 0.100.0 → 0.102.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 (358) hide show
  1. package/CHANGELOG.md +452 -0
  2. package/README.md +172 -120
  3. package/dist/adapt/arms.js +51 -16
  4. package/dist/adapt/textStream.js +7 -4
  5. package/dist/adapt/toolCards.d.ts +2 -1
  6. package/dist/adapt/toolCards.js +28 -13
  7. package/dist/adapt.d.ts +1 -1
  8. package/dist/adapt.js +8 -2
  9. package/dist/adapter/activeRunSelfHeal.d.ts +24 -2
  10. package/dist/adapter/activeRunSelfHeal.js +108 -6
  11. package/dist/adapter/downstream/eventToSdkMessage.js +38 -79
  12. package/dist/adapter/downstream/terminalToSdkResult.d.ts +60 -1
  13. package/dist/adapter/downstream/terminalToSdkResult.js +209 -39
  14. package/dist/adapter/downstream/wiringManifestView.d.ts +1 -0
  15. package/dist/adapter/downstream/wiringManifestView.js +138 -0
  16. package/dist/adapter/runStream.d.ts +4 -4
  17. package/dist/adapter/runStream.js +158 -43
  18. package/dist/agentsWireCaps.d.ts +2 -7
  19. package/dist/agentsWireCaps.js +1 -2
  20. package/dist/approvalDecidedByCapability.js +2 -2
  21. package/dist/approvalFrameFamilies.d.ts +33 -0
  22. package/dist/approvalFrameFamilies.js +120 -0
  23. package/dist/approvalsStreamLiveCapability.js +2 -2
  24. package/dist/attachmentsWireCaps.js +41 -13
  25. package/dist/callerCwdCapability.js +2 -2
  26. package/dist/centerWiringCapability.js +2 -2
  27. package/dist/clockReading.d.ts +2 -0
  28. package/dist/clockReading.js +4 -0
  29. package/dist/cloudConfigWireCaps.d.ts +19 -5
  30. package/dist/cloudConfigWireCaps.js +193 -56
  31. package/dist/compensations.js +1 -1
  32. package/dist/coreValuePorts.d.ts +12 -2
  33. package/dist/coreValuePorts.js +9 -0
  34. package/dist/decideFailureNote.js +5 -3
  35. package/dist/decideReceipt.js +2 -2
  36. package/dist/deviceExecutorManagementCapability.js +2 -2
  37. package/dist/deviceFlowPolling.js +1 -1
  38. package/dist/disableSkillsWire.d.ts +1 -1
  39. package/dist/disableSkillsWire.js +4 -3
  40. package/dist/displayUntrusted.d.ts +9 -4
  41. package/dist/displayUntrusted.js +834 -104
  42. package/dist/engineCapReader.js +1 -1
  43. package/dist/engineConfigDrift.js +1 -1
  44. package/dist/engineErrorCodes.d.ts +14 -5
  45. package/dist/engineErrorCodes.js +27 -6
  46. package/dist/engineGenerationConvergence.d.ts +39 -0
  47. package/dist/engineGenerationConvergence.js +95 -0
  48. package/dist/engineGenerationPort.d.ts +61 -0
  49. package/dist/engineGenerationPort.js +144 -0
  50. package/dist/engineHealthFacts.d.ts +23 -0
  51. package/dist/engineHealthFacts.js +92 -0
  52. package/dist/engineIdentity.d.ts +4 -0
  53. package/dist/engineIdentity.js +11 -0
  54. package/dist/engineNoticeCodes.d.ts +2 -5
  55. package/dist/engineRowRef.js +4 -0
  56. package/dist/engineSessionMessages.js +2 -2
  57. package/dist/engineToolDirectory.js +2 -2
  58. package/dist/engineWireFor.d.ts +99 -0
  59. package/dist/engineWireFor.js +248 -6
  60. package/dist/engineWireTarget.d.ts +1 -0
  61. package/dist/engineWireTarget.js +8 -0
  62. package/dist/env/uiLanguage.js +1 -1
  63. package/dist/errorSupplementRoles.d.ts +3 -0
  64. package/dist/errorSupplementRoles.js +37 -0
  65. package/dist/executionLaneCapability.js +2 -2
  66. package/dist/fileHistoryCaptureCapability.js +3 -3
  67. package/dist/finalVerifyWire.d.ts +6 -3
  68. package/dist/finalVerifyWire.js +6 -23
  69. package/dist/flagInput.d.ts +4 -0
  70. package/dist/flagInput.js +24 -0
  71. package/dist/fleet/fleetLedger.js +5 -2
  72. package/dist/fleet/fleetProjection.d.ts +1 -0
  73. package/dist/fleet/fleetProjection.js +16 -3
  74. package/dist/gateVocabulary.js +3 -0
  75. package/dist/generated/engineFactTables.d.ts +7 -3
  76. package/dist/generated/engineFactTables.js +52 -0
  77. package/dist/generated/engineNoticeTables.js +12 -0
  78. package/dist/generated/settingsSchemaActiveTiers.d.ts +1 -0
  79. package/dist/generated/settingsSchemaActiveTiers.js +14 -0
  80. package/dist/generated/settingsSchemaCallerTextEcho.d.ts +1 -0
  81. package/dist/generated/settingsSchemaCallerTextEcho.js +8 -0
  82. package/dist/generated/settingsSchemaControlAndBidi.d.ts +1 -0
  83. package/dist/generated/settingsSchemaControlAndBidi.js +8 -0
  84. package/dist/generated/settingsSchemaDefaultModel.d.ts +11 -0
  85. package/dist/generated/settingsSchemaDefaultModel.js +25 -0
  86. package/dist/generated/settingsSchemaFns.d.ts +54 -0
  87. package/dist/generated/settingsSchemaFns.js +26 -1
  88. package/dist/generated/settingsSchemaMcpRequestEntry.d.ts +1 -1
  89. package/dist/generated/settingsSchemaMcpRequestEntry.js +1 -7
  90. package/dist/generated/settingsSchemaSafetyMergeSpec.d.ts +1 -0
  91. package/dist/generated/settingsSchemaSafetyMergeSpec.js +95 -0
  92. package/dist/generated/settingsSchemaSettingsSources.d.ts +1 -0
  93. package/dist/generated/settingsSchemaSettingsSources.js +58 -0
  94. package/dist/generated/settingsSchemaTables.d.ts +2 -0
  95. package/dist/generated/settingsSchemaTables.js +13 -0
  96. package/dist/generated/settingsSchemaUrlPattern.d.ts +1 -0
  97. package/dist/generated/settingsSchemaUrlPattern.js +183 -0
  98. package/dist/headlessPermissionModeWire.d.ts +18 -2
  99. package/dist/headlessPermissionModeWire.js +30 -19
  100. package/dist/hitl/allowRuleShadow.js +7 -5
  101. package/dist/hitl/approvalCardReading.d.ts +3 -0
  102. package/dist/hitl/approvalCardReading.js +17 -0
  103. package/dist/hitl/approvalCompleteParked.js +1 -1
  104. package/dist/hitl/approvalDelivery.d.ts +87 -0
  105. package/dist/hitl/approvalDelivery.js +193 -0
  106. package/dist/hitl/approvalResolution.d.ts +11 -0
  107. package/dist/hitl/approvalResolution.js +50 -11
  108. package/dist/hitl/askClassPair.d.ts +6 -0
  109. package/dist/hitl/askClassPair.js +30 -3
  110. package/dist/hitl/askParkAutoReopenBlock.d.ts +30 -0
  111. package/dist/hitl/askParkAutoReopenBlock.js +117 -0
  112. package/dist/hitl/askParkRowRouting.js +4 -1
  113. package/dist/hitl/attributionLadder.d.ts +42 -3
  114. package/dist/hitl/attributionLadder.js +79 -8
  115. package/dist/hitl/automaticAnswerVerdict.d.ts +6 -1
  116. package/dist/hitl/automaticAnswerVerdict.js +46 -11
  117. package/dist/hitl/crashConverged.js +2 -2
  118. package/dist/hitl/decisionConflict.d.ts +6 -2
  119. package/dist/hitl/decisionConflict.js +24 -9
  120. package/dist/hitl/decisionRefusal.d.ts +20 -10
  121. package/dist/hitl/decisionRefusal.js +99 -54
  122. package/dist/hitl/decisionSend.d.ts +3 -0
  123. package/dist/hitl/decisionSend.js +87 -103
  124. package/dist/hitl/frameRouter.d.ts +1 -0
  125. package/dist/hitl/frameRouter.js +9 -2
  126. package/dist/hitl/hitlBridge.d.ts +18 -6
  127. package/dist/hitl/hitlBridge.js +41 -37
  128. package/dist/hitl/livePendingAsk.js +4 -3
  129. package/dist/hitl/noAllowCause.js +1 -1
  130. package/dist/hitl/parkResolver.js +3 -2
  131. package/dist/hitl/persistedRulesWire.js +1 -0
  132. package/dist/hitl/planReviewWire.d.ts +4 -0
  133. package/dist/hitl/planReviewWire.js +59 -30
  134. package/dist/hitl/resumeRunningCard.d.ts +3 -2
  135. package/dist/hitl/resumeRunningCard.js +17 -11
  136. package/dist/hitl/sessionPolicyDeliverable.d.ts +5 -2
  137. package/dist/hitl/sessionPolicyDeliverable.js +62 -29
  138. package/dist/hitl/sessionPolicyWire.d.ts +13 -3
  139. package/dist/hitl/sessionPolicyWire.js +81 -16
  140. package/dist/hitl/standingRows.js +1 -1
  141. package/dist/hitl/toolApprovalWire.d.ts +9 -10
  142. package/dist/hitl/toolApprovalWire.js +72 -54
  143. package/dist/hookMatcherVerdict.d.ts +2 -0
  144. package/dist/hookMatcherVerdict.js +12 -0
  145. package/dist/hooksCompactTransition.d.ts +19 -0
  146. package/dist/hooksCompactTransition.js +41 -0
  147. package/dist/hooksWireCaps.d.ts +1 -1
  148. package/dist/hooksWireCaps.js +202 -203
  149. package/dist/host.d.ts +1 -14
  150. package/dist/host.js +0 -8
  151. package/dist/hostCallbackGuard.d.ts +1 -0
  152. package/dist/hostCallbackGuard.js +1 -1
  153. package/dist/hostSettingsSource.d.ts +172 -0
  154. package/dist/hostSettingsSource.js +675 -0
  155. package/dist/hostTurnSettings.d.ts +73 -17
  156. package/dist/hostTurnSettings.js +594 -97
  157. package/dist/httpHookPolicy.d.ts +37 -0
  158. package/dist/httpHookPolicy.js +176 -0
  159. package/dist/humanTurn.d.ts +2 -1
  160. package/dist/humanTurn.js +37 -7
  161. package/dist/humanTurnRead.js +4 -3
  162. package/dist/humanTurnSentences.d.ts +10 -0
  163. package/dist/humanTurnSentences.js +74 -0
  164. package/dist/i18n/messages.en.d.ts +222 -2
  165. package/dist/i18n/messages.en.js +225 -5
  166. package/dist/i18n/messages.zh.js +237 -5
  167. package/dist/i18n/translate.js +3 -3
  168. package/dist/index.d.ts +77 -15
  169. package/dist/index.js +50 -13
  170. package/dist/inheritEnvCapability.d.ts +3 -1
  171. package/dist/inheritEnvCapability.js +31 -17
  172. package/dist/inheritEnvWire.d.ts +2 -1
  173. package/dist/inheritEnvWire.js +11 -5
  174. package/dist/interactiveHalt.d.ts +3 -1
  175. package/dist/interactiveHalt.js +2 -0
  176. package/dist/interactiveInterrupt.d.ts +2 -0
  177. package/dist/interactiveInterrupt.js +15 -0
  178. package/dist/interactiveToolsWire.d.ts +4 -2
  179. package/dist/interactiveToolsWire.js +5 -5
  180. package/dist/jsonFaithful.d.ts +20 -0
  181. package/dist/jsonFaithful.js +152 -0
  182. package/dist/limitsWire.d.ts +7 -2
  183. package/dist/limitsWire.js +19 -13
  184. package/dist/liveInitToolFace.d.ts +6 -1
  185. package/dist/liveInitToolFace.js +5 -3
  186. package/dist/liveModelCatalog.d.ts +22 -0
  187. package/dist/liveModelCatalog.js +132 -18
  188. package/dist/mcpPanel.js +1 -1
  189. package/dist/mcpProbeCapability.js +2 -2
  190. package/dist/mcpStatusSupersetKeys.d.ts +24 -0
  191. package/dist/mcpStatusSupersetKeys.js +45 -0
  192. package/dist/mcpToolToggles.js +2 -1
  193. package/dist/mcpWireCaps.d.ts +39 -1
  194. package/dist/mcpWireCaps.js +254 -50
  195. package/dist/memoryComplianceCapability.js +2 -2
  196. package/dist/memoryOriginCapability.js +2 -2
  197. package/dist/model/catalogDefault.d.ts +24 -0
  198. package/dist/model/catalogDefault.js +4 -0
  199. package/dist/model/liveCatalogShape.js +5 -4
  200. package/dist/model/modelsPolicy.js +4 -3
  201. package/dist/model/onboardJudgement.d.ts +1 -0
  202. package/dist/model/onboardJudgement.js +1 -1
  203. package/dist/model/subagentModelWord.js +2 -2
  204. package/dist/modelCapabilityProbe.js +6 -6
  205. package/dist/modelIdentityResolvability.d.ts +10 -1
  206. package/dist/modelIdentityResolvability.js +62 -39
  207. package/dist/modsFace.d.ts +8 -0
  208. package/dist/modsFace.js +59 -0
  209. package/dist/modsKernelIdentity.d.ts +10 -0
  210. package/dist/modsKernelIdentity.js +103 -0
  211. package/dist/modsKernelTransit.d.ts +8 -0
  212. package/dist/modsKernelTransit.js +6 -0
  213. package/dist/notifications.d.ts +30 -12
  214. package/dist/notifications.js +241 -53
  215. package/dist/outputStyleSeatCapability.js +2 -2
  216. package/dist/ownKey.d.ts +12 -0
  217. package/dist/ownKey.js +179 -3
  218. package/dist/panelReduce.js +1 -1
  219. package/dist/peerFrames.d.ts +1 -1
  220. package/dist/peerFrames.js +6 -2
  221. package/dist/peerLaneCapability.js +2 -2
  222. package/dist/permissionModesCapability.js +4 -4
  223. package/dist/permissionRuleIssue.js +2 -0
  224. package/dist/permissionRulesWriteCapability.js +2 -2
  225. package/dist/permissionsAllowGrantCapability.js +2 -2
  226. package/dist/permissionsDeclaration.d.ts +43 -4
  227. package/dist/permissionsDeclaration.js +102 -35
  228. package/dist/pluginHooksWire.d.ts +20 -4
  229. package/dist/pluginHooksWire.js +92 -53
  230. package/dist/prepareRefusal.d.ts +3 -2
  231. package/dist/prepareRefusal.js +27 -9
  232. package/dist/printInitToolFace.js +2 -2
  233. package/dist/printModelStatus.js +1 -1
  234. package/dist/printToolResultFrame.js +1 -1
  235. package/dist/projectMemory.d.ts +32 -0
  236. package/dist/projectMemory.js +70 -0
  237. package/dist/promptBlockedCopy.d.ts +2 -1
  238. package/dist/promptBlockedCopy.js +2 -1
  239. package/dist/promptDelivery.d.ts +23 -3
  240. package/dist/promptDelivery.js +169 -30
  241. package/dist/providerRejection.d.ts +19 -1
  242. package/dist/providerRejection.js +75 -4
  243. package/dist/queuedDelivery.d.ts +48 -0
  244. package/dist/queuedDelivery.js +233 -0
  245. package/dist/reattachWindow.d.ts +94 -0
  246. package/dist/reattachWindow.js +127 -0
  247. package/dist/request/printNotification.d.ts +1 -1
  248. package/dist/request/printNotification.js +6 -2
  249. package/dist/request/submissionIdentity.d.ts +37 -0
  250. package/dist/request/submissionIdentity.js +65 -0
  251. package/dist/request/taskRequest.d.ts +33 -4
  252. package/dist/request/taskRequest.js +341 -156
  253. package/dist/resultFrameKeys.d.ts +1 -0
  254. package/dist/resultFrameKeys.js +4 -1
  255. package/dist/retryStatus.d.ts +8 -0
  256. package/dist/retryStatus.js +57 -9
  257. package/dist/rewindArchiveCapability.js +2 -2
  258. package/dist/rewindEngineAction.d.ts +2 -0
  259. package/dist/rewindEngineAction.js +23 -1
  260. package/dist/rowKind.d.ts +36 -0
  261. package/dist/rowKind.js +97 -0
  262. package/dist/ruleCompileVerdict.d.ts +18 -0
  263. package/dist/ruleCompileVerdict.js +67 -2
  264. package/dist/ruleReadings.d.ts +58 -0
  265. package/dist/ruleReadings.js +132 -0
  266. package/dist/ruleRefusalSentence.d.ts +4 -0
  267. package/dist/ruleRefusalSentence.js +9 -3
  268. package/dist/runCancelContext.d.ts +0 -1
  269. package/dist/runCancelContext.js +1 -2
  270. package/dist/runTerminal.d.ts +5 -0
  271. package/dist/runTerminal.js +52 -17
  272. package/dist/sandboxWire.d.ts +1 -1
  273. package/dist/sandboxWire.js +4 -6
  274. package/dist/scenarioRefusal.js +1 -1
  275. package/dist/scenarioSkills.d.ts +20 -0
  276. package/dist/scenarioSkills.js +72 -0
  277. package/dist/scenarioWire.d.ts +5 -2
  278. package/dist/scenarioWire.js +9 -9
  279. package/dist/sealedKeyCapability.js +2 -2
  280. package/dist/seam.d.ts +2 -0
  281. package/dist/seam.js +3 -3
  282. package/dist/seatContract.d.ts +68 -7
  283. package/dist/seatContract.js +84 -25
  284. package/dist/selfOrchestrationDenial.js +1 -1
  285. package/dist/sessionBackground.d.ts +165 -0
  286. package/dist/sessionBackground.js +781 -0
  287. package/dist/sessionBackgroundHandoff.d.ts +54 -0
  288. package/dist/sessionBackgroundHandoff.js +321 -0
  289. package/dist/sessionMap.js +4 -1
  290. package/dist/sessionPolicyCapability.js +2 -2
  291. package/dist/sessionRulesChildrenReadLive.d.ts +6 -0
  292. package/dist/sessionRulesChildrenReadLive.js +5 -0
  293. package/dist/sessionRulesNamespaceFormsCapability.d.ts +12 -0
  294. package/dist/sessionRulesNamespaceFormsCapability.js +29 -0
  295. package/dist/sessionSyncFileHistoryCapability.js +2 -2
  296. package/dist/settingsCredentialKeyPaths.js +55 -15
  297. package/dist/settingsHooksSalvage.d.ts +1 -0
  298. package/dist/settingsHooksSalvage.js +7 -1
  299. package/dist/settingsLayerAdmission.d.ts +4 -0
  300. package/dist/settingsLayerAdmission.js +16 -0
  301. package/dist/skillToolListsCapability.js +6 -5
  302. package/dist/skillsWireCaps.d.ts +14 -0
  303. package/dist/skillsWireCaps.js +47 -16
  304. package/dist/slashCommandGate.d.ts +24 -0
  305. package/dist/slashCommandGate.js +74 -0
  306. package/dist/slashCommandTable.d.ts +14 -0
  307. package/dist/slashCommandTable.js +99 -0
  308. package/dist/sqlEngineCapability.js +2 -2
  309. package/dist/steerPriorityCapability.js +2 -2
  310. package/dist/storePostureCapability.js +2 -2
  311. package/dist/subagent/agentStateDetail.js +1 -1
  312. package/dist/subagent/engineDelegatedPrompt.d.ts +9 -0
  313. package/dist/subagent/engineDelegatedPrompt.js +38 -7
  314. package/dist/subagent/engineRowStopGate.js +2 -2
  315. package/dist/subagent/engineSubagentResume.js +3 -3
  316. package/dist/subagent/engineTaskHandleWire.d.ts +1 -0
  317. package/dist/subagent/engineTaskHandleWire.js +10 -0
  318. package/dist/submitFailure.d.ts +8 -0
  319. package/dist/submitFailure.js +17 -0
  320. package/dist/supportFloor.d.ts +1 -0
  321. package/dist/supportFloor.js +7 -0
  322. package/dist/terminationIntent.d.ts +55 -0
  323. package/dist/terminationIntent.js +352 -0
  324. package/dist/thinkingLatch.d.ts +69 -0
  325. package/dist/thinkingLatch.js +255 -0
  326. package/dist/thinkingLatchWords.d.ts +7 -0
  327. package/dist/thinkingLatchWords.js +4 -0
  328. package/dist/toolHistoryMismatch.d.ts +8 -0
  329. package/dist/toolHistoryMismatch.js +37 -6
  330. package/dist/toolResult.d.ts +13 -3
  331. package/dist/toolResult.js +159 -32
  332. package/dist/toolResultContent.d.ts +13 -0
  333. package/dist/toolResultContent.js +82 -7
  334. package/dist/toolRoster.d.ts +18 -0
  335. package/dist/toolRoster.js +64 -0
  336. package/dist/turnFailurePresentation.js +27 -90
  337. package/dist/usageLimitAutoResume.d.ts +74 -0
  338. package/dist/usageLimitAutoResume.js +227 -0
  339. package/dist/userAttachmentEnvelope.js +1 -1
  340. package/dist/userAttachmentSeat.js +5 -5
  341. package/dist/userInvokedSkillsCapability.js +2 -2
  342. package/dist/webSearchBackendCapability.js +2 -2
  343. package/dist/wireErrorTriage.js +99 -50
  344. package/dist/wireFailureShape.d.ts +25 -1
  345. package/dist/wireFailureShape.js +92 -5
  346. package/dist/wireRefusalCopy.d.ts +24 -1
  347. package/dist/wireRefusalCopy.js +253 -32
  348. package/dist/wiringFleetDoctor.d.ts +3 -0
  349. package/dist/wiringFleetDoctor.js +21 -0
  350. package/dist/workflow.d.ts +2 -1
  351. package/dist/workflow.js +38 -1
  352. package/dist/workflowClient.d.ts +2 -7
  353. package/dist/workflowsJournalCapability.js +2 -2
  354. package/dist/writeProtectionCapability.js +2 -2
  355. package/docs/INTEGRATION-CLIENTS.md +907 -182
  356. package/package.json +14 -3
  357. package/dist/argvFlagValue.d.ts +0 -8
  358. package/dist/argvFlagValue.js +0 -37
package/CHANGELOG.md CHANGED
@@ -49,6 +49,458 @@
49
49
  > 挡住 ⇒ 本批把它机械化——④a0 对 `pending` 行**要求段头已是日期形**(`(未发布)` 直接红),阶段一
50
50
  > commit 漏转在发布前就红,不再靠人记。
51
51
 
52
+ ## 0.102.0(2026-10-28)
53
+
54
+ > 主题:0.102.0 会话送后台四读口归包(能力位读数 · 连线句柄与本包亲手开流 · 交接资格一只判官 · 交接动词与后台观看)接入文档 **§130 BG-1 / BG-2 / BG-3 / BG-4 / BG-5 / BG-6** · 会话级思考开关归包(状态机 + `reasoningEffort` 单铸点投影 + 座位动词 / 能力位 / 会话行位)接入文档 **§130 TL-1 / TL-2 / TL-3 / TL-4 / TL-5** · mods 三类用户面座位(注册卡 / 工具结果行旁拒句 / 代答句)与桌面装载座位的读口 / 句口 —— 零新臂、既有公面型零改动、`./mods` 子路径入口零改动;接入文档 **§130 MF-1 / MF-2 / MF-3 / MF-4 / MF-5 / DU-1 / DU-2 / DU-3 / PS-1 / PS-2 / PS-3 / PS-4**(DU / PS:配置地址展示口七臂、无方案 userinfo 与边界判据进通用网、展示口非串入参 · 配置地址路径段与 Slack webhook 锚定形、设置判官读同一只扫描、凭据面规则按版本的阶梯链) · 会话映射的引擎命名空间键含规范化路径(经中心中继的多台引擎同 origin 异路径不再串键)与出包文案卫生(两条出包串中性化、同形存量清理、卫生门词表扩形),接入文档 **§130 NK-1 / HY-1**。
55
+
56
+ ### Added
57
+
58
+ - **能力位读数 `readSessionBackgroundable(baseUrl?)`**(CC-983;**§130 BG-1**;根入口运行期 +2〔读口 `readSessionBackgroundable` + 同读器的投影函数 `projectSessionBackgroundable(caps)`,与能力位读器族同形、读器族门按名取它;宿主读只用读口〕,型 +1):`GET /v1/capabilities.sessionBackgroundable` 的五态读数 —— `advertised`(位为 `true`)/ `declined`(`false`)/ `not_reported`(键缺或自有值 `undefined`)/ `unreadable`(非布尔、`null`、自有访问器 —— 取值器不执行)/ `unobserved`(没有当代落地)。经既有能力缓存读,不另存、不另探;读数冻结、永不抛。只有 `advertised` 放行交接;交互流带不带 detach 头只把 `declined` 当否决。
59
+ - **连线句柄与本包亲手开流:`interactiveEngineWire(init)` / `retireInteractiveEngineWire(wire)` · 姿态预览 `interactiveDetachPosture(wire, input)` · 开流口 `streamInteractiveRun(wire, req, opts, input)`**(CC-983;**§130 BG-2**;根入口运行期 +4,型 +7;型面 additive):一代引擎一只句柄(生命周期属主声明 `self-spawned` / `external`,`tasks` / `runs` 给原样 sdk 口),代结束同步退役。宿主在**调 sdk `tasks.stream` 的那一处**改调开流口,再把交回的生成器喂给自己的变换管线;本包对请求体取一次顶层浅快照、对 `headers` 取一次快照(任何大小写拼法的 `x-detach-on-disconnect` 都被删掉,带头时放唯一规范值 `'true'`),交给传输的是本包新造的对象;带头那一发被精确 durable-off 400 拒且没钉幂等键时去头重开恰一次。姿态判序:句柄认不出 / 入参读不出 ⇒ 不带 · 句柄退役 ⇒ 不带 · `SEMA_HEADLESS_DETACH` 关 ⇒ 不带 · 车道接不回在别处跑的 run ⇒ 不带 · 能力位 `declined` ⇒ 不带 · 本机自起 ∧ 环回 ⇒ 带(不要求 `advertised`)· 外接 ⇒ 不带(候引擎受理回执)。每次调用建一条开流记录:`x-task-id` 到 ⇒ 绑定;首个带账本锚的帧(`id` 非空)且 `meta` 报了会话 ⇒ 开跑 —— 重放 / 会话占用拒收 / 店竞态 / 落点拒这几种「回了 run id 却没为这一发跑起来」的流结构上进不了开跑。
60
+ - **交接资格一只判官 `backgroundHandoffEligibility({ wire, sessionKey })` + 句口 `backgroundHandoffSentence(verdict, lang?)`**(CC-983;**§130 BG-3**;根入口运行期 +2,型 +3):读句柄上该会话最近一次开流的记录、能力位读数与审批持有表,15 行有序判序,三态闭合(`eligible` 带 run id / `ineligible` 带确定原因 / `unknown` 带判不出的原因);永久原因先于暂时原因(用户不会被叫「稍后再试」而重试也没用)。没开跑 ⇒ 「引擎还没开始输出」;流已不在最初的实时连接上(断线、终帧是停驻)⇒ 那一句;刚交出的提问 / 审批帧宿主还没处理完、本开流有未结未到期的提问、持有表有本 run 的持有 ⇒ 「先回答屏上的问题」;归属说不出的持有 ⇒ 不确定句。同步、永不抛、判决冻结。
61
+ - **交接动词 `handoffInteractiveRun(req)` 与后台观看(`BackgroundRun`:`openFrames()` / `settled` / `dispose()`)· 交接表 `handedOffRunsOf(wire)` / `forgetHandedOffRun(wire, taskId)` · 停止事实 `interactiveStopFacts(wire, taskId)` · 常量 `BACKGROUND_HANDOFF_ABORT_REASON`**(CC-983;**§130 BG-4**;根入口运行期 +5,型 +7):判官放行 ⇒ 同一拍撕本包开的那条流(**不发 interrupt、不发 cancel**)、登记交接、起后台观看、通知宿主(宿主回调抛不回滚,结局 `hostNotified: false`);否则留在前台并给一句。后台观看在同一只句柄上、带引擎 `meta` 帧报的会话,从耐久账本从头重读;断连按 300 秒窗与退避梯重开、读 run 行合成终帧;首个执行终局落定一次(`completed` / `failed` / `cancelled` / `parked`),窗尽 / `dispose()` / 句柄退役 ⇒ `observation-stopped`。交接表 `running` / `unconfirmed` / `unrecognized-wire` 都按「可能在飞」处置,删行只经 `forgetHandedOffRun`。交接之后到的帧不再交前台,前台那一拉干净结束。
62
+ - **消息目录 +22 键(域 `session.background.*`)**(CC-983;**§130 BG-6**):交接成功 / 宿主没收尾 · 十四条拒句与一条不确定句 · 五条后台落定句 · 同一对话撞上后台回答时的 `busy` 句(宿主按 409 的 `activeTaskId` 命中交接表时经 `translate(lang, 'session.background.busy')` 取,本包不另立句口)。
63
+ - **会话级思考开关:状态机与存取端口读写口 `readThinkingLatch(port)` / `writeThinkingLatch(port, event)` + 视图口 `thinkingLatchView(reading, ctx?)` + 句口 `thinkingLatchSentence(subject, lang?)`**(CC-971;**§130 TL-1**;公面运行期 +4,型 +8;型面 additive):开关三态 `on` / `off` / `unset`(未设 ≠ 关:未设在请求面不压档位 —— 档位设置说了算,没有档位时才交给引擎默认)与四事件 `on` / `off` / `toggle` / `clear` 的迁移表只在包里一份(未设时切换 ⇒ 关);宿主只实现一只同步存取端口 `ThinkingLatchStorePort { read(), write(stored) }`(存储形 `true` / `false` / 缺席;一只端口 = 一个会话,包内零模块状态)。读口永不抛、`read` 恰调一次:端口缺席 ⇒ `unset/no_port`、读抛 ⇒ `unset/unreadable`、回 `undefined` ⇒ `unset/never_set`、回非布尔 ⇒ `unset/malformed` —— 读不出一律当未设,不猜开 / 关。写口永不抛:回执 `saved` / `unchanged` / `not_saved`(`no_port` / `bad_event` / `write_failed`);写抛之后再读一次,`now` 只是此刻观察值(不证明存成);存储读不出时照迁移写(修复存储)。视图口给冲突:座位会话而座位能力 `thinkingLatch` 不可用 ⇒ `seat_cannot_carry`(任一开关态);开 × 在线目录行明说这只模型不思考 ⇒ `model_cannot_think`(只披露,不改请求)。句口七个目录键 en / zh(状态三句〔未设说「由档位决定、没有档位时交给引擎默认」〕· 「同一条消息同时带 Ultracode 与关闭思考,以哪个为准由引擎决定」· 模型不思考 · 读不出按未设 · 没存上);座位冲突句转调既有禁用句铸点(不另铸)。门:`scripts/run-thinking-latch-projection-test.mjs`(新)T1 – T3 / T8 / T9。
64
+ - **请求投影:装配口两个控制入参 `thinkingLatch?: 'on' | 'off'` / `reasoningFloor?: string`,产物恒在的投影读数 `assembleTaskRequest(...).thinking`,预览口 `thinkingTurnProjection(input)`**(CC-971;**§130 TL-2**;公面运行期 +1,型 +2;型面 additive):请求体上的 `reasoningEffort` 只由装配口一行铸出,值由一只投影核心算 —— 开关关 ⇒ `"off"`(压过档位词;与 `settings.ultracode` 互不干预:两项同在时照上体,先后由引擎定);开 ⇒ 只解除档位词 `"off"`,从不替用户选档;下限词只认六个非 `off` 档、只抬不降(开关关、或开关投影之后档位仍是 `off` 时不动;开关开先解除档位词 `off` 再按下限抬);旁路车道(`utility`)开关与下限都不参与。🔴 开关未设且不交下限词 ⇒ 请求体与上一发布版**逐字节同**(档位词原样透传,含表外词与非串值)。开关表外值 ⇒ 装配期 `TypeError`(「关」被打字错误吞掉 = 收紧声明丢失);下限词坏值不起作用、不拒。`reasoningEffort` 的门推迟到 `settings` 门之后、对要铸的那个值问一次(这一行三车道有座、不受 live 门 ⇒ 去向回执零变化)。投影读数 `{ word?, verdict: 'utility_lane' | 'off' | 'strength', latch, ultracodeStamped, floorApplied?, strengthOverruled? }` 是本地装配诊断,不上任何载体;预览口交与装配口同一组入参时逐格同答,只绑定一条具体的用户直发、是暂定提示。门:同上 T4 – T6 / T10(T6 对上一发布产物逐字节对拍;T10 对构建产物做语法树计数:装配口内写入点恰 1、投影核心定义 1 / 两口各调 1)。
65
+ - **座位:可缺动词 `setThinkingLatch(req)` → `OkAck`、能力位 `thinkingLatch`、会话行位 `LocalSessionRecord.thinkingLatch`(`on` / `off` / `unreadable` / `malformed`,缺席 = 从未设)+ 行位写法 `thinkingLatchRowWordOf(reading)` / 读回 `readSeatThinkingLatch(record, capability)` + 入站判官 `checkSetThinkingLatchRequest` / 守卫 `isSetThinkingLatchRequest`**(CC-971;**§130 TL-3**;公面运行期 +4,型 +2;🔴 型面 BREAKING(窄):实现 `LocalSessionsApi` 的宿主多一只成员 `setThinkingLatch`):座位会话的开关存在桌面宿主(它装配那个会话的全部提交;渲染端不存、不做乐观本地态)。动词回执复用既有 `OkAck`(`true` = 存成或本来就是,`false` = 没存上);「现在是什么」只读会话行(宿主写后推一次 `session_updated`)。行位四词让「桌面读不出」不被读回成「从未设」;能力不可用 ⇒ 读回恒 `unset/no_port`、不看行位。座位登记七处同加(接口 · 规格方法行与回包判官 · 方法名表 · 入站判官登记与守卫 · 能力名 / 管辖 / 能力态 / 禁用句 / 能力表判官 · 会话行键表与行判官 · 编译钉两向)。门:同上 T7 / T11 + 既有座位门扩格。
66
+ - **接入文档 §130**:TL-4 —— CC-474 ① 的 thinking 半张(开关 ⇒ `reasoningEffort` 的逐请求投影、开关存在哪个宿主)由本票吸收,隐身半张仍归 CC-474;TL-5 —— 与 CC 2.1.309 的偏离登记(130d,含「Ultracode × 关思考:语料未对位」一行与「档位需要思考」报错的射程)。
67
+ - **注册卡读口与句口:`modRowsOf(records)` · `readModRegistrationRefusedNotice(ev)` · `modCardSentence(input, lang?)`**(CC-1042;**§130 MF-1**;根入口运行期 +3):一条腿上每一只 mod 注册的受理结果(挂上 / 被拒两形)在三处出现 —— 回执段 `wiring_manifest.mods[]`、注册被拒通告 `mods.registration_refused` 的 `detail`、进程内内核总线的 `records` —— 现在只有一条读法:`modRowsOf` 对进程内记录与回执段数组同读(非数组 / 读不出 / 非空却零行幸存 ⇒ `undefined`,读不出 ≠ 零;`[]` ⇒ `[]`;坏行逐行丢),两形按成员在场判(`'refusedBy' in row`),不派生处置词(引擎记录分不出「只观察」,包不替它说)。`readModRegistrationRefusedNotice` 把注册被拒通告读成被拒行(码不对 / `detail` 读不成被拒形 ⇒ `undefined`,宿主照渲引擎原话);通告臂、回执视图型、`ChromeEvent` 一字不动。`modCardSentence(视图行)` 出卡句:挂上形「{name} is loaded」,被拒形「{name} was not loaded: {refusedBy} refused it — {reason}」(en / zh;外来串过展示出口)。读口全部永不抛、只读自有数据位(访问器不执行、原型链上的位不算)。
68
+ - **工具结果行信封超集键 `_sema_answered_by` 与行旁拒句 / 代答句**(CC-1042;**§130 MF-2**;引擎 7.56.0 `tool_end.answeredBy`;零新臂):扩展在 `tool.call` 站替一次调用作答(拒了它,或替工具给了结果、本体没跑)时,引擎记下那张注册的名。前层 `tool_end` 投影把它(自有非空串)原样上内部臂(不进转录);收卡唯一行铸口(交互收口与 `-p` 帧同一只)按一句判据铸信封键 —— 令 A := `answeredBy` 是自有非空串且不是引擎自身记号 `engine`(`tool.call` 站本身起不来时引擎记它:那是引擎自己闭合失败,不是某一只扩展 ⇒ 零句)∧ `notExecuted === true`:**拒格** = A ∧ 门记录最新处置 `denied` ∧ `deniedBy === 'hook'` ∧ `isError === true`;**代答格** = A ∧ 门记录不是 `denied` ∧ `isError === false`;门视图带 `unreadable` 先判零;其余一律不铸。判据只在铸口算一次,门视图与同一行信封 `_sema_gate` 是同一次读。`modCardSentence(工具结果行)` 按信封门视图分臂出「Refused by {by}」/「Answered by {by} in place of the tool」(en / zh;只说「被谁」,「没执行」照旧由 `readToolCardOutcome` 说);信封无此键 ⇒ 零句(classic 钩子拒 / `tool.check` 拒 / 政策拒 / 正常跑都没有它 —— 成员缺席零句,不改说「钩子或扩展」,不解析结果句)。键同批进 `TRANSCRIPT_ROW_SIDECAR_KEYS`(元组 +1 元素,型不变):按白名单重建行的端展开它即保住新键。🔴 服务端 7.138.0 之前刻意不投 `answeredBy` ⇒ 经服务端车道今天恒缺席、三端用户面零可见变化。
69
+ - **桌面装载座位:动词闭集 `MOD_LOADER_VERBS`(`list` / `load` / `unload` / `status`)与型 `ModLoaderVerb`;装载失败句 `modLoaderFailureSentence(name, error, lang?)`**(CC-1042;**§130 MF-3**;根入口运行期 +2、型 +1):`list` / `status` 读、`load` / `unload` 请求,集外拒(宿主按闭集判,不猜近义词)。失败句吃宿主 `catch` 到的抛出物原样(抛出物读法复用 `wireFailureTextsOf`):读得出话 ⇒「{name} could not be loaded: {reason}」,读不出 ⇒「{name} could not be loaded」。身份 = `(side, name)`(side 取内核 `ModBusSide`,经 `./mods`);去重契约:surface 侧被拒行按 `(总线, side, name)` 各渲一次,engine 侧拒句只由通告出。装载编排(何时重准入)与宿主自身状态(持久化的「想要」、已渲身份、装载过程 UI 词)归宿主,不进包。
70
+ - **消息目录 +9 键(域 `config.mods.*`)**(CC-1042;**§130 MF-4**):卡两形 `card.mounted` / `card.refused` · 行旁两句 `refusal.by` / `rewrite.resultInPlace` · 失败两句 `loader.failed` / `loader.failedNoReason` · 一条腿的注册计数三句 `card.none`(「No mods registered on this leg」)/ `card.counts`(「{n} mounted」,零被拒)/ `card.countsWithRefused`(「{n} mounted, {m} refused」,有被拒)—— 计数三句不另立句口,壳按 `modRowsOf` 结果里 `refusedBy` 在场的行数选键、经 `translate(lang, key, { n, m })` 取句。
71
+
72
+ ### Changed
73
+
74
+ - **配置地址展示口七臂**(CC-848 ①;**§130 DU-1**;公面零新增):`displayConfiguredUrl` 对「userinfo 与 query / 片段的边界判不准」的写法(方案之后、第一个 `/` `\` 之前,任何 `@` 之前先出现裸 `?` / `#` 而其后还有 `@`:`https://alice:<前半>?<后半>@host/x`,能不能解析都一样)与 http / https / ws / wss / ftp 打头、单斜杠 / 零斜杠写法又读不成带主机的地址、串里带 `@ ? #` 的写法整串显示一枚 `«redacted:secret»`(修前口令两段原样上屏);串首就是无方案 `user:pass@host` 的写法 userinfo 换 `«redacted:userinfo»`、主机与路径照示;无方案、无前导斜杠的相对请求地址(`oauth/callback?code=<值>`)路径留、参数值逐值遮;特殊方案 authority 里夹反斜杠的写法(`https://h\x;sid=<值>/sse`)原串读法与按解析出的组件重建的读法按位置对应取舍 —— 原串读法已遮住重建读法要遮的一切 ⇒ 照原串显示、与上一发布版同字节(`https://alice:\<口令>@host` 仍显示 `https://«redacted:userinfo»@host`;`https://h\x/v1` 原样;`https://h\x?sig=<令牌>` 只遮令牌);否则重建读法遮住原串读法遮住的一切 ⇒ 重建后显示(`https://h/x;sid=«redacted:query»/sse`);两头都不成立 ⇒ 整串一枚 `«redacted:secret»`。authority 之外的凭据记号或 `\uXXXX` 字面不改变读法(`https://h\x;sid=<值>/sse#«redacted:fragment»` ⇒ `https://h/x;sid=«redacted:query»/sse#«redacted:fragment»`),它们按原文位置留在所在组件里;authority 里带本出口写出的东西(整枚记号,或本出口会写的转义记号形 `\u202E` 一类)的写法照原串显示(那是展示过的 authority;KL-8484)—— 展示过的串再展示一遍逐字节不变。
75
+ - **无方案 userinfo 与边界判据进通用网**(CC-848 ①;**§130 DU-2**):URL 结构网开着的出口上(这两条归 URL 结构网),无方案 `user:pass@host` 的口令可以夹 `?` / `#` / `@`(多枚 `@` 取主机之前最后一枚)、主机后的端口不要求数字、主机之后可以是 `) , ; ! ]`;带方案的地址里「边界判不准」那一形整只地址词换一枚 `«redacted:secret»`(与配置地址口同一只判据)。放宽读法只多交候选:每枚 `@` 先按上一发布版的读法读、只有它推进扫描起点,同一段文本里不比上一发布版少遮(`Bearer :=@h)<口令>@h` 照旧整段 `Bearer «redacted:userinfo»@h`)。代价:时刻 / 构建标签形的 `12:30@office, agenda`、`build:release@runner:linux, ready` 也被读成 userinfo(KL-8482)。只开词级网与两网全关的出口逐字节不变。
76
+ - **展示口非串入参**(CC-848 ①;**§130 DU-3**):`displayUntrusted` / `displayUntrustedMarks` / `displayConfiguredUrl` 收到非串的对象 / 数组 / 代理 / 函数 / Symbol 时显示一枚 `«redacted:secret»`,不再调用它的 `toString` / `valueOf` / `Symbol.toPrimitive`(修前执行调用方代码:它抛则口抛、它答什么就上屏什么);数 / bigint / 布尔照旧出字面串,`undefined` / `null` 照旧出空串。选项对象的读法本版不变。
77
+ - **配置地址路径段名位 / 值位**(CC-849;**§130 PS-1**):配置地址口里非 `file:` 地址的每一个路径段,名位(`=` 之前)与值位(`=` 之后;没有 `=` 即整段)过 query 值那一只值判官(高熵形 / 已知凭据字面形 / 嵌套凭据结构):名位判中 ⇒ 整截一枚 `«redacted:secret»`,值位判中 ⇒ 只换值位(`PGPASSWORD=«redacted:secret»`)。网关路径里的钥匙、MCP 能力地址段(`/api/mcp/s/<令牌>/mcp`、`/<uuid>/github`)、RPC 地址的密钥段被遮;代价:账号 ID / UUID 资源段(Cloudflare AI Gateway 账号段等)在配置口也显示成记号(KL-8493)。自由文本里的地址路径段不按形判(与 CC 2.1.309 同)。
78
+ - **Slack webhook 锚定形**(CC-849;**§130 PS-2**):凡开着凭据网的出口,`hooks.slack.com/services|workflows|triggers/` 之后的尾段(带不带 `https://`、主机尾点写法、主机百分号编码都算;与 CC 2.1.309 `slack-webhook-url` 同一识别式,尾段 ≥ 40 字)换一枚 `«redacted:secret»`,主机与 kind 段照示;尾段里已经有一枚本包记号时不再核 40 字下限(整尾一枚)。截短的 webhook(尾段不足 40 字)不遮,与 CC 同。
79
+ - **设置判官与上传判据读同一只扫描**(CC-849;**§130 PS-3**):`settingsCredentialKeyPaths` 判「这串设置值装不装凭据」改为配置地址口的同一次扫描 —— 终态里被遮掉的原文落成凭据种类即装着(片段只在内容按 query 再判一次带凭据时算);修前另写一段「要有 `://`、只看 userinfo ∪ query」的读法。多报:无方案 Slack webhook、路径里的钥匙、单斜杠写法、片段里的 `access_token=`、散文串值里的 `token=<值>`;改口:值里只剩已遮记号的地址(`?token=«redacted:query»`)不再报(没有可漏的内容)。`queryCarriesCredential` 读同一条阶梯。
80
+ - **凭据面规则按版本的阶梯链**(CC-849;**§130 PS-4**):本版新增的两只判法(PS-1 / PS-2)只在旧规则(规则表之外的全部规则,含本版对既有规则的改读 DU-1 / DU-2)跑到帽内不动点之后再上,之后「旧规则 + 新规则」交替到不动点 —— 任何输入的凭据面终态遮盖(封长之前)⊇ 旧规则单独跑到不动点的遮盖(按构造:记号落地后不再解开);相对上一发布版本的「不回退」是冻结池上的实测(原文位置与值字节两把尺子皆 0),不是按构造的保证;同一串文本只收集一次候选、各阶共用。帽按阶计(每阶一帽)。射程:带 `max` 的出口,本版遮得更短时截断点后移,上一版截掉的尾巴可能进窗(那几个字节上一版不截也可见;KL-8495)。
81
+ - **Esc 发射口与停止判定**(CC-983;**§130 BG-5**;🔴 型面 BREAKING(窄)):`fireInteractiveInterrupt(runs, taskId, opts)` 的 `opts` 多可选位 `wire` —— 在场时先在句柄上记「停止已发起」(此后送后台答 `stopping`),这条 run 已在交接 / 已交接 ⇒ 不发 interrupt、答新臂 `{ kind: 'withheld' }`;`wire` 缺席 ⇒ 与上一版逐字同。`InteractiveHaltInterruptOutcome` 多一臂 `{ kind: 'withheld' }`、`InteractiveHaltReason` 多一词 `handed-off`,`planInteractiveHalt` 收到 `withheld` ⇒ `none` / `handed-off`(不升级,`parked` / `detachArmed` 在这一格不读)。对这两只型做穷举 `switch` 的端编译红一次(补一臂:不升级、不提示)。
82
+ - **回执段 `mods[]` 行读法升级为自有数据位读 + 逐键隔离**(CC-1042;**§130 MF-5**;🔴 只对非 JSON 输入可见):回执段投影改调 `modRowsOf`:原型链上的位不算在场、自有访问器不执行;必填位 / 判别位读不出 ⇒ 那一行丢,可选位(`observe` / `skipped`)读不出 ⇒ 只丢那一位、行照出(修前整行一个 try:无关位的取值器抛会连坐有效行,原型链上的位会被收)。JSON 帧无原型链位 / 无访问器 ⇒ 真实输入逐字节同。
83
+ - **出包字符串去帖号别形与修补批过程词;卫生门词表扩形**(CC-1056;**§130 HY-1**;文案卫生,无行为变化):两条点名的出包串改中性 —— 散文段边界臂的说明串去掉帖号别形与仓名,座位契约豁免说明串去掉修补批段号与三处测试脚本文件名(说法改为「本包纯测试套的投毒段」)。按新词表扫 dist 全树,同形存量五个源文件里各一条说明串一并删去帖号别形,对外 README 的两个表行同(表行由登记清单生成)。卫生门 `scripts/run-package-hygiene-test.mjs` 的词表本仓本地加三条:`#` 加 2–5 位纯数字且后面不是字母数字(帖号别形;放行 `CC-nnn`、`[nnnn]`、十六进制颜色码、`文件.md#锚`、HTML 实体)· `FIX` 加数字(含圈号数字)· `fix` 加数字再加「段」(修补批过程词);dist 与 README 全文扫,CHANGELOG 自首个版本段起至 0.101.0 段之前、接入文档 §130 起向前执法(已发段冻结)。纯数字的 2–5 位短色码与帖号别形不可分,命中时改写成颜色名或 `rgb()`;dist 内目前零此类。
84
+
85
+ ### Fixed
86
+
87
+ - **会话映射的引擎命名空间键含规范化路径**(CC-1055;**§130 NK-1**;🔴 行为变,只对带路径的连接目标可见;公面零增删):`engineNamespaceKeyFor(baseUrl)` 修前只取 `new URL(baseUrl).origin`,经中心中继的多台引擎(`https://c.example/api/v1/chat/w/<名>/engine`)同 origin 只差路径,算成同一把键,会话映射里 `engines[键]` 的任务号与同步水位互相串键。现在键 = 小写 origin + 规范化路径:去全部尾斜杠;路径大小写与百分号编码逐字保留(同一台引擎的两种百分号拼法是两把键 —— 分开是安全方向);query / fragment / userinfo 不入键;默认端口与点段由 URL 解析器归一。不变:自起引擎恒 `local`;异 origin 异键;坏串回原串小写。同批收的一形:origin 不透明的方案(`foo://a/x`、无方案的 `host:port`、`blob:`)修前全并成同一把 `null` 键,现在回原串小写。旧映射只有一种读法:路径为空的目标(`http://host:8790` 与 `http://host:8790/`)键仍是纯 origin = 旧键,旧条目原样读得到;带路径的目标不读旧 origin 条目(它可能是同 origin 的另一台引擎写的,读它就是串键),没有回落读法 —— 升级后该目标的水位与任务号按首次同步处理。宿主判「live 引擎与同步目标是不是同一台」时,改比包键(`engineNamespaceKeyFor(a) === engineNamespaceKeyFor(b)`)而不是各自取 origin(130y ②)。门:`scripts/run-session-namespace-key-test.mjs`(新)N / S / L / B / U / X。
88
+
89
+ ### Fixed
90
+
91
+ - **路径段首是一枚记号时整段遮盖不再劈开记号**(CC-849;**§130 PS-4**):段首去边停在记号里时整枚补回截内,`…/v1/«redacted:secret»Bearer%20<值>` 一类输出一枚完整记号(修前 `««redacted:secret»`)。
92
+ - **单斜杠 / 零斜杠写法的配置地址不再把口令显示成路径**(CC-848 ①;**§130 DU-1**;🔴 行为变,只多遮):`displayConfiguredUrl` 对 `https:/alice:\<口令>@host`、`https:\\alice:\<口令>@host`、`https:/alice:\<口令>%40host` 一类写法,上一发布版按解析器重建后显示 `https://alice/<口令>@host`(反斜杠把 authority 收短,口令落进路径原样上屏);现在原串读法遮住的每一段须整段、逐字节落在重建串的同一个组件里才重建,否则(解析器改写了那些字节,或把那一段切到主机 / 路径 / query 两个组件里)整串显示一枚 `«redacted:secret»`(KL-8497)。同一段字在地址里写两遍时按位置认来源,不借另一份的「在场」:`https:/alice:\<口令>@host#alice:\<口令>`(片段 / query / 路径里再写一遍)上一发布版显示 `https://alice/<口令>@host#«redacted:fragment»`,现在整串一枚。解析器没有改写它们的写法照旧重建(`https:/h.example/mcp?x=<令牌>` ⇒ `https://h.example/mcp?x=«redacted:query»`)。
93
+ - **设置键路径对口令藏在反斜杠 / 编码 `@` 后面的地址值报「装着凭据」**(CC-848 ① / CC-849;**§130 PS-3**):`https://alice:\<口令>@host`、`https://alice:\<口令>%40host`、`https:/alice:\<口令>@host` 一类值,上一发布版 `settingsCredentialKeyPaths` 不列出(机读口遮、上传判据判带);现在设置键路径、机读口、上传判据同答「装着凭据」—— 设置判官读配置地址的同一种读法,重建不在判官之前丢掉原串读法认出的口令。
94
+
95
+ ### Gates
96
+
97
+ - **`scripts/run-display-untrusted-phase-ladder-test.mjs`**(CC-849;**§130 PS-4**;包侧门):规则表只一张、行只收加性生成器、阶号只经行发射口;生产路径阶 0 与上一发布产物逐字节同(文本 + 来源表;不同的格只许是本版基础规则的改读、与「表置空」变体同答);不回退尺(可见原文下标 ⊆ 上一版、值字节 0);出口幂等七组 ≤ 上一版、六组逐行不回退;干净文本一次收集;折叠对照(本版行折进阶 0 的单链在构造行上露值);两读法格与嵌套判官三行;读法层不回退(本版配置地址读法与上一版不同的格只许整串扣下,或保住上一版原文读法遮住的每一个字节的重建);反例钉(原文读法遮得到东西的反斜杠 / `%40` / 主机形一族四只读法同答且配置口逐字节为期望、全池 userinfo 证据不在判官之前丢、放宽读法加性、两族洗两遍 = 洗一遍、控制串里的锚定形阶 0 原样);判不准 / 读不成的写法整串扣下不因值里出现记号 / 转义记号形而放开、反斜杠写法在原串读法已遮住重建读法要遮的一切时照原串;两读法遮盖对应的独立尺(黑盒位置对应:原文一个字换一个同类字、看重建串哪几位跟着变,不借本包的组件对齐)—— 重复子串一族与记号 / 转义记号形一族逐字节为期望且四面不露、全池每条配置地址的读法两种口径下成立(重建 ⇒ 原串读法遮住的字节在重建读法里仍遮,单斜杠 / 零斜杠写法遮住的段整段落在同一字段;反斜杠写法照原串 ⇒ 原串可见的字节在重建读法里不被遮);读法层不回退的格改成同一把独立尺(修前是本包判法的副本);本包的位置对应表与同一把黑盒扰动一致(代理对 / 非 ASCII / 主机大写 / 端口);控制串里的锚定形原字 / 展示转义 / 百分号编码三形阶 0 原样;门内负控九枚(阶 1 从原文重起 / 丢阶号 / 判官只用末阶答 / 锚定形撤认记号 / 控制串内容嵌套候选丢阶号 / 屏上与解码读面内容嵌套候选丢阶号 / 裸 query 段丢阶号 / 只让解码读面内容的嵌套候选丢阶号 / 反斜杠写法不先问原串读法)。
98
+ - **展示出口投影门 CF848 / CF849 / K6 段 · 基线差分门 B11 / B12 段 · 设置键路径门的地址支格**(CC-848 ① / CC-849;**§130 DU-1 – DU-3 / PS-1 – PS-3**):终端金样 L5 / L6 / L8 换读本包口、N1 / N2 / S-c 逐格、重建不改写原文读法遮住的字节的十一形与放宽读法加性三形(CF848h / CF848i,负控 ②:`scheme://` 写法不再两读法取舍、一律用重建串 ⇒ 红)、重复子串五形与记号 / 转义记号形六形(CF848j / CF848k)、上一版遮住的口令本版十五出口 + 配置口三面不露(B11e,不分大小写)、上一版配置口露口令 / 段参数值的六形本版三面零字节(B11f);路径段与锚定形四十余格;非串入参九形 × 三口;无方案 userinfo 登记分歧与邻接负例对上一发布产物;能力地址池按秘密片段零残留判;遍数读口改读 `collections`(另报 `passes`)。
99
+ - **`scripts/run-mods-face-projection-test.mjs`**(CC-1042;**§130 MF-1 – MF-5**;包侧投影门):K 进程内真内核(开发依赖内核经 `./mods` 真跑 `admitMods`,判官拒候选)→ 两形行 → 句;W-① 夹具服务端真投影的回执段 + 引擎真铸、夹具服务端真投影的被拒通告 → 读器 → 句;W-②③a 一句判据七格每格至少一帧 × 交互收口 / `-p` 帧两出口,铸口与信封 `_sema_gate` 同一次读,判据只在铸口(语法树),合形帧对开发依赖引擎 `tool_end` 型 `satisfies`(`answeredBy` 一员以开发依赖引擎 ≥ 7.56.0 为前提:之前那一段打 `SKIPPED-SECTION … PENDING-DEVDEP-CORE-7.56.0`,换钉当天自动转正);L 同一拒装经 K / W 两路读出相等 + 九键金样 + 展示出口;A 缺席语义;M 冻结的修前读法 × 既有样本 + 生成池逐字节对拍。负控一枚(读器收原型链上的 `name` ⇒ K 段红)。
100
+ - **`scripts/run-session-namespace-key-test.mjs`**(CC-1055;**§130 NK-1**;包侧投影门):N 键形(异路径异键且逐字 = 手写期望、写法差同键、路径大小写保留、自起、异 origin 异键)· S 同一台判据前置(同 origin 异路径按包键比较不是同一台、同一台的不同写法是同一台;两条目写进同一份记录互不覆盖、按另一路径的键读不到对方水位)· L 旧映射单一读法(路径为空键 = 旧键,旧条目读得到;带路径目标不读旧 origin 条目)· B 边界(IPv6 / 默认端口 / 点段与越根 / 百分号编码 / 双斜杠 / 空路径 / 不透明 origin / `blob:`)· U 导出集恰三名(无第二读法)· X 一批畸形串与随机串永不抛、键对 URL 形的键幂等。修前产物 20 格红;变异五枚全杀;负控一枚(键改回只取 origin ⇒ N1 红)。
101
+ - **`scripts/run-package-hygiene-test.mjs` 扩形**(CC-1056;**§130 HY-1**):帖号别形 / 修补批过程词三条;自检 15 条正样本命中 / 26 条反样本不命中(含颜色码、锚、实体、字中命中)+ CHANGELOG 与接入文档两处向前执法切片自证;旧词表对修前 dist 通过(尺子瞎)、新词表红 11 行(dist 九处 + README 两处),改中性后通过;负控 +2 枚(往 README 植帖号别形 / 植修补批过程词 ⇒ 门红且点名同一节)。
102
+
103
+ ### Known limitations
104
+
105
+ - 本机自起引擎上「撕流不杀 run」是有界信任假设(地址按主机名判环回、引擎不回执 detach 受理)(KL-9831)· 重连期间 / 停驻续流期间 / 接管轮上的回答不能送后台(KL-9832)· 交接那一拍还在网线上的提问 / 审批卡不阻交接、前台不渲(KL-9833)· 交接后同一对话在后台回答结束前不能续聊(KL-9834)· 外接引擎车道一律不交接(KL-9835)。
106
+ - 配置地址口:短 / 无数字令牌仍原样(KL-8491)· 自由文本里非 Slack 的 webhook 路径令牌照样可见(KL-8492)· 账号 ID / UUID 资源段被遮(KL-8493)· 路径里低熵的秘密不在射程(KL-8481)· 无方案 `host/路径?k=v` 按相对请求地址读、每个参数值都遮(KL-8483)· 时刻 / 构建标签形被读成 userinfo(KL-8482)· URL 结构槽「记号 + 标点 + 明文」按已洗(路径段名位 / 值位同 query 槽,KL-8494)· 封长出口的单调射程(KL-8495)· 设置告知多报(KL-8496)· 单斜杠 / 零斜杠写法里解析器改写了原串读法遮住的字节、或把它切到两个组件时整串一枚(KL-8497)· authority 里带凭据记号或本出口会写的转义记号形的反斜杠写法照原串显示(手写这种字面 / 记号的地址,解析器读法里的段参数值不遮,KL-8484)· 点形下 authority 只靠不可见字充当主机又夹反斜杠的写法两次显示不同(第二次只多遮,KL-8498)。
107
+ - **KL-971**:座位会话的组合句预览是暂定提示 —— 排队件以排空那一拍的开关为准,入队时的预览可能与实发不同;座位会话的权威投影读数留在桌面,不新增回传载体(§130 包侧缺口)。
108
+
109
+ ## 0.101.0(2026-10-27)
110
+
111
+ > 主题:0.101.0 提货引擎 7.54.0(开发依赖 W1 换钉 `^7.54.0` 与生成表重生成,后续 mods 内核车换钉 core `^7.55.0` / mods-kernel 7.55.0 同号;通告码册 96 → 98;`AllowDenyPolicyOptionsView.scope` 退出,🔴 型面 BREAKING)· MCP 服务器名独立判口 · 引擎名册按对端分组投影 · 收紧桶对端段 `*` 原样 · 值级端口第 19 件接入文档 **§129 VP-1 / RP-1 / TF-1 / GT-5 / UA-4 / SP-1 / TF-2 / TR-2 / PK-2 / HK-1 / MK-5 / TS-2 / FL-2 / PD-1 / PD-2 / PD-3 / HK-3 / HP-1 / EV-1 / PR-2 / PR-3 / HP-2 / ER-1 / HT-1 / KP-3 / HS-1 / HS-2 / HS-3 / HS-4 / HS-5 / HS-6 / HS-7 / UC-1 / UC-2 / UC-3 / UC-4 / UC-5 / UC-6 / UC-7 / XA-1 / XA-2 / XA-3 / XA-4 / XA-5 / XA-6 / XA-7 / XA-8 / XA-9 / UB-1 / UB-3 / UB-5 / UB-8 / SF-1 / XC-1 / XC-2 / XC-3 / XC-4 / XC-5 / XC-6 / XC-7 / XE-1 / XE-2 / XE-3 / XE-4 / XE-5 / XE-6 / XF-1 / XF-2 / XF-3 / XF-4 / XF-5 / XF-6 / XF-7 / XF-8 / XF-9 / XF-10 / XF-11 / XF-12 / XF-13 / XF-14 / XF-15 / XF-16 / XF-17 / XF-18 / RQ-1 / MI-1 / MI-2 / MC-1 / CZ-5 / CZ-6 / PK-3 / PK-4 / PK-5 / GN-13 / GN-14 / GN-15 / GN-16 / GN-17 / GN-18 / GN-19 / GN-20 / GN-21 / GN-22 / GN-23 / GN-24 / GN-25 / GN-26 / GN-27 / GN-28 / GN-29 / GN-30 / NA-1 / IE-1 / PE-1 / MN-2 / CD-1 / PM-1 / NS-1 / DR-1 / TK-5 / AF-1 / WS-1 / TH-4 / SR-1 / ME-1 / SK-3 / SK-2 / MC-2 / IE-2 / FB-1 / FB-2 / FB-3 / FB-4 / FB-5 / LG-1 / FV-1 / FV-2 / FV-3 / FV-4 / FV-5 / FV-6 / FV-7 / FV-8 / FW-1 / FW-2 / FW-3 / FW-4 / FW-5 / FW-6 / U11-1**(本版首批 四波已并:+ 跨边界污染读口 · mods 内核子路径转口 · toolFaces 两腿同判 · 会话规则尾句 · 成因薄壳之二 · 工具结果块两新臂;本版 提货引擎 7.55.0:通告码册 98 → 100 · 卡词 8 → 10 · 问类句表 `probe` 无行 · 持久规则 `match` 十词 · 发送前拒绝两码 · 规则拒因码 `invalid.name_ambiguous` · 设置契约 14.4.0 换钉)。
112
+
113
+ ### Added
114
+
115
+ - **请求面声明键 `settings.approvalFrameFamilies`:装配口据宿主交的能力读数铸「本包能渲的审批开卡帧族 ∩ 服务端呈的族」;能力位读口 `observedApprovalFrameFamilies(baseUrl?)` + 判口 `approvalFrameFamiliesDeclaration(reading)` + 装配口入参 `approvalFrameFamiliesReading?`**(CC-982;**§129 AF-1**;公面 +2,1978 → 1980;型面 additive):服务端 7.134.0 起,一条运行只在请求里声明了「本客户端渲得了哪些审批开卡帧族」(`settings.approvalFrameFamilies`,词数组)且含服务端呈的那一族时才开审批卡;没声明 ⇒ 这条运行上每一次需要审批的调用都走无人值守口(停驻或当场拒),审批卡永不到达 —— 0.100.0 及更早的包不发这个键。本版 `buildTaskRequest` / `assembleTaskRequest` 据宿主交的读数铸它(读数 = 服务端能力回体上的**两位**)(受理位 `taskSettings.approvalFrameFamilies`,7.134.0 起恒真,说这台服务端收这个键;值族位 `approvalFrameFamilies`,7.133.0 起,说它呈哪一族:`["approval_request"]` / `["tool_approval"]` / `[]`),两位都合格才铸「值族位 ∩ 本包能渲的族」(交集空也铸 `[]`,如实声明渲不了;去重、保服务端呈的次序)。🔴 触发位是**受理位**:7.133.x 有值族位而不收这个键(整条 400 `request.body_shape`),只凭值族位带键会让每一条请求都 400。受理位缺席(老服务端)/ 值族位缺席或坏形(非数组 / 表外词 / 非串元素 / 有洞 / 越长)/ 读不出 / 没落地 ⇒ **不铸键,请求体与修前逐字节同**(不猜、不铸空数组;唯一例外:手拼产物的 `settings.resolved` 快照里若带同名子键 `approvalFrameFamilies`,它按具名通道让位被剥,不再摊上请求体)。读数五态 `confirmed` / `absent` / `declined` / `unreadable` / `unobserved`;判口 `approvalFrameFamiliesDeclaration(reading)` ⇒ `{ field, withheld? }`(与能力位片段口同形;不给键的成因 `capability_absent` / `capability_declined` / `capability_unreadable`)。座位:交互与 `-p` 车道有座(live 门后),旁路车道无座;**读数只来自宿主交的 `approvalFrameFamiliesReading`**(宿主按**这一发要去的那台**引擎的地址读 `observedApprovalFrameFamilies(baseUrl)`、落定之后再交;交了 ⇒ 用读数,走常规去向门:旁路车道 `off_lane`、非 live `not_live`);宿主不交 ⇒ 不铸(装配口不读缺省引擎目标的能力位:多会话 / 多引擎宿主里缺省目标不一定是这一发的目标,按它铸键会让不认这一键的服务端整条 400;§129 FB-1)。入参 `settings` 上手填这个键 ⇒ 按「不认识的键」响亮拒。词表取服务端提交体判官的两词(值级串元组;sdk 24 的型面还没有族型,候型面带上后换钉);本包能渲的族 = 呈卡族(`approval_request` 卡帧经 chrome 路交宿主、宿主经 `claimApprovalCard` 登记开卡)与活卡族(`tool_approval` 帧经包内呈卡、等答、respond)。呈卡族的引擎侧消卡帧 `approval_complete` 本包今天还不读(CC-837 后续件,见 §129 包侧缺口)。 读器(值族位去重)与交集步重铸数组用「定义自有位」的口落位(与 MCP `allowTools` / 场景技能同一只助手 `appendOwnElement`),不用 `push` —— `push` 会命中原型链上被植入的下标访问器,把验过的族换成另一族而不披露(服务端只在声明含它呈的那一族时开卡,声明被换词 = 请求遗漏该族、审批转入无人值守口);落位口不改读数与产物。门:`scripts/run-approval-frame-families-declaration-test.mjs` 新 P4。
116
+
117
+ - **宿主设置源 `HostSettingsSource` 与它的四件**(CC-939;**§129 HS-2 – HS-7**;🔴 型面 BREAKING,运行期导出 +3 −2〔+`hostSettingsConsent` / `hostSettingsAcceptCurrent` / `hostSettingsSessionFollows`,−`hostSettings` / `hostSettingsFor`;信任三词的取值表 `WORKSPACE_TRUST_STATES` 0.101.0 期内撤回(未发布;宿主要值表请从 `@sema-agent/settings-schema` 取),**§129 U11-1**〕):`hostTurnSettings({ settings, identity, previous?, sources })` —— `settings` 是每回合显式交的设置源(或 `'none'`),六只成员必填、按方法调(`readLayer(layer)` 逐层原文 `{ enabled, doc, carriers: [{ id, status, emptyKind?, issues? }] }`、`workspaceTrust()` 上游三词、`managedPolicyReading()` 六词、`startupMode()`、`enabledPluginHooks()`、`sessionHooks()`);`identity` 必填(提交身份;交互面才「先问」);`previous` = 上一回合产物的 `session`。产物多 `session` / `held?` / `outputStyle`;`hooksWirePlan` 入参加必填 `settings`;计划多一个必填位 `settingsSources`(这一拍设置来源 hooks 准入的层),本端跳过口 `settingsHooksKeptLocally` 的组可交 `source`(交了 ⇒ 不准入的层本端不跑,与请求体同判)。新口:`hostSettingsConsent(product)`(`hold` → `send`,记同意键)· `hostSettingsAcceptCurrent(product, { version, deny, ask })`(用户确认「按此刻的设置文件来」,三条全中才给新状态)· `hostSettingsSessionFollows(stored, next)`(状态提交的一致性判据:`next.parent` 恰是存着的那一只的版本;宿主以自己存储的修订号做比较交换原子提交,判据同时为真)。一次读的捕获:同一只 JSON 忠实捕获件、记录层无原型、载体表与问题键按描述符按下标读一次、一次读共用 25 万单位工作量预算(值 / 键读 / 下标读各计一,读之前先扣)/ 同一对象第二次出现 ⇒ 坏形;会话状态预算 100 万单位(铸点量体,超出 ⇒ 这一回合拒、内容不前进,任何铸出的状态都能原样回交);逐成员降级(层 `unreadable` / 信任读不出 / 托管 `unreadable-uncovered` / 启动模式 `none` / hooks 读口 `failed`),成员缺席 ⇒ `TypeError`。门:`scripts/run-host-settings-source-test.mjs`(新)。
118
+ - **值级端口 `ANTHROPIC_DEFAULT_BASE_URL` 与读口 `anthropicDefaultBaseUrl()`**(CC-889;**§129 VP-1**;🔴 型面 BREAKING):`CoreValuePorts` 多一只必填成员 `ANTHROPIC_DEFAULT_BASE_URL: string`(引擎 7.53.0 起包根导出的 anthropic 车道缺省根常量,今天 `https://api.anthropic.com`;值级常量件,宿主原样交引擎同名导出),`CORE_VALUE_PORT_NAMES` 末位追加一名(十八 → 十九),`coreValuePortMisses()` 十九件。读口没装 ⇒ `undefined`(**不回落**官方根字面量),装了 ⇒ 装进来的原串原样(不 trim、不判形、不补斜杠,空串也原样)。要分「没装 / 装了」先问 `hasCoreValuePort('ANTHROPIC_DEFAULT_BASE_URL')`。**编译红必改**:按完整型 `CoreValuePorts` 建袋的装配根少这一件 ⇒ 编译红一次(点名它;补上引擎包根同名导出即绿)。**行为变**:无(新口)。**零动作**:传部分袋 / 取子集建袋的宿主;浏览器渲染层结构上装不了引擎,读口恒缺席,消费点按 `undefined` 走降级,不折成官方根。
119
+ - **`mcpServerNameVerdict(name, siblings?)` 与型 `McpServerNameVerdict` / `McpServerNameUnusableReason`(MCP 服务器名独立判口;CC-894;§129 MN-1)**:一个名字能不能逐字上请求面的独立读口 —— 不带容量、不碰条目的其余键。结果两态 `{ usable: true }` / `{ usable: false, reason }`(冻结的小对象,每次新铸),`reason` 四词 `name_blank` / `name_edge_whitespace` / `name_collides_after_trim` / `name_too_long`,与 `projectMcpConfigs().dropped[].reason` 的名字类四词同词同义;规则 = 0.100.0 整表口的名字读法原样(非空 ∧ ≤ 128 码元 ∧ 无首尾空白;不 trim、不截、不规范化)。撞名要 `siblings`(同一张表里的名字,任意可迭代,含不含 `name` 自己都行,只读一遍):去首尾空白后与逐字合形的另一名同名、或与另一条不同的空白变体撞上;🔴 **不传 `siblings`(或 `undefined` / `null`)⇒ 不判撞名**,只判空白 / 首尾空白 / 超长三因;非串 `name` ⇒ `name_blank`;`siblings` 不是可迭代对象 ⇒ `TypeError`。整表口 `projectMcpConfigs` 内部改调同一只判官(同表的名字索引一次建好,行为与披露序逐字节同 0.100.0),同一张表上两口逐名同答。此前要判一个名字只能造单条表 + 合形桩配置去借整表口。门:`scripts/run-mcp-wire-caps-test.mjs` MV1 – MV6。公面 +1(1821 → 1822)。
120
+ - **强制理由词 `cross_boundary_taint` 的一句话(§129 GN-2;引擎 7.54.0 起)**:`approvalMandateDetail('cross_boundary_taint')` 出一句「为什么这张卡必须问」(英文 / 中文各一句,与其余六句逐字互异):这次运行在部署信任边界之外的设备上、部署服务多个租户,所以对组织一侧的写入(或在从别处读取之后、指向该设备的调用)要对这一次调用单独确认。句子不说谁能答、不指人去写规则(同其余六句的律)。`APPROVAL_MANDATE_WORDS`(公面)六词变七词、`ApprovalMandateWord` 联合在末位加这一员 —— 公面值变、型加一员:对该联合写穷尽 `Record` / `switch` 的端编译红一次。表外词的读法不变。
121
+ - **引擎名册按对端分组投影**(CC-896;**§129 RP-1**):`projectEngineRosterPeers(roster, source)` —— 把名册里 `source` 恰等于调用方所给词的行(开集正判:`mcp` / `a2a` / 引擎今后加的词都行,大小写与空白异形不并)按**行自己说的对端名**(`origin.peer` 原字节,不归一化、不从工具名剥前缀)分组;读数 `{ groups, unattributed }`:组 `{ peer, declaredBy?, tools, count }`(`tools` 为 `{ name, aliases?, cardId? }` 名册序;`declaredBy` 是同一对端各行 `origin.declaredBy` 的去重升序集合,没有一行带则缺席),组按 `peer` 的 UTF-16 码元序升序(与区域设置无关);同 `source` 却没有声明名的行进 `unattributed`(名册序,不猜名)。缺席三档两两不合流:名册缺席 / 不是名册 / 任一行读不出 / `source` 入参不是非空串 ⇒ `undefined`(说不出);名册在而这一出处零行(含零行名册)⇒ `{ groups: [], unattributed: [] }`(明说零);只有 `unattributed` ⇒ 读数在场、`groups` 为空。永不抛。便捷口 `projectEngineA2aPeers(roster)` ≡ `(roster, 'a2a')`;MCP 一律经通用口 `projectEngineRosterPeers(roster, 'mcp')`(不另出 mcp 便捷口)。新型 `EngineRosterPeersView` / `EngineRosterPeerGroup` / `EngineRosterPeerTool`;公面运行期 +2。终端自家按铸名归一化的同名分组可改调 `projectEngineRosterPeers(roster, 'mcp')`(换读后 `a.b` 与 `a_b` 不再合流;行为差见 §129y)。
122
+ - **子路径入口 `@sema-agent/client-core/mods`:mods 内核包原样转口 + 自有读口 `modsKernelIdentity()`(CC-425;§129 MK-1 / MK-2 / MK-4;根入口零变化)**:新增第三个包入口(`exports` 的 `./mods`),原样转出 mods 内核包 `@sema-agent/mods-kernel` 根导出的 67 名(值 26 + 型 41;**内核 7.54.0 的固定承诺**:内核日后新增的名不会自动转出,扩名须先经本包评估、随版本加)—— 对象 / 函数值与内核包**同一引用**,不包装、不改名、不补默认值、不 `export *`;事件表 / 档 / 座位 / 失败与中止闭集、链规则、读法(`readOnSide` / `stationOn` / `expandModPattern` / `isModEventName`)、预算常量、准入与派发总线 `admitMods` 都经这一个入口读(CC-419 ③「事件 / 档 / 座位闭集随引擎包导出生成」由它承接,不另建生成批:运行期转出的那一张表就是真源)。内核包是**可选 peer**(`peerDependencies` `>=7.54.0` + `peerDependenciesMeta` 里 `optional: true`;本包第一次用可选 peer),开发依赖精确钉 7.54.0(不用 caret)。🔴 根入口**一个字节都没变**:根公面运行期导出数、根闭包、根声明都不引用内核,只用根入口的宿主不装内核照常运行、类型检查通过;import `./mods` 而没装内核 ⇒ **加载期失败**(响亮,不返回空对象、不降级;Node ESM 下 `ERR_MODULE_NOT_FOUND` 点名内核包,打包器 / PnP 的错误码随环境)。入口另有**唯一一只**本包自有读口 `modsKernelIdentity(kernel?)` → `{ contractVersion, tableDigest }`(内核契约号 + 事件表规范 JSON〔对象键升序、数组保序、无空白〕的 SHA-256 小写十六进制;不带参数读本入口转出的那一份内核,带参数读交进来的那一份 —— 宿主装配根拿自家消费点读到的内核模块对读数;第一参读不出契约号 / 事件表 ⇒ `TypeError`,不返回 `undefined` 或零读数)与两个型 `ModsKernelIdentity` / `ModsKernelSource`。🔴 「宿主整树只有一份内核」**不由本入口保证**(peer 结构对可选 peer 不保证唯一):本入口承诺的只是「转出它解析到的那一份」,唯一性由宿主装配根自证(`./mods` 的值与自家各消费点解析到的同名值**同一引用**;读数相等只证内容一致、不证同一实例);已验证的内核版本 = 转口门里逐代矩阵的列(今天 7.54.0),区间内其余版本是范围接受、未验证。
123
+ - **`toolFaces` 坏形 ⇒ 这一台服务器不起;值级端口第 20 件 `readToolFaces`、判读口 `mcpToolFacesVerdict(declared)` 与型 `McpToolFacesVerdict` / `McpToolFacesReadView`**(CC-898;**§129 TF-1**;🔴 型面 BREAKING + 行为变):引擎 7.54.0 起条目的 `toolFaces` 声明坏形在准备门整次被拒(`config.tool_face_invalid`),一台服务器的坏声明让每一发请求都失败;本包此前把 `toolFaces` 当透明键原样过境、不校形。`CoreValuePorts` 多一只必填成员 `readToolFaces(declared)`(引擎 7.54.0 起包根导出的 `toolFaces` 声明形判官,与 `readMcpToolAxes` 同形的兄弟件;宿主原样交引擎同名导出,入参型窄成 `{} | null | undefined`),`CORE_VALUE_PORT_NAMES` 末位追加一名(十九 → 二十),`coreValuePortMisses()` 二十件;读口 `readToolFaces(declared)` 没装 ⇒ `undefined`(不编 `{ ok: true }`)。判读口 `mcpToolFacesVerdict(declared)` 与 `mcpToolAxesVerdict` 同形同词三态:`ok`(合形,或没声明;带引擎判过的普通副本,声明读作「没声明」〔空记录 `{}`〕时副本缺席)· `bad`(`problem` = 引擎原句,点名哪个工具、哪个成员)· `unavailable`(端口没装 / 答了不认得的形:不判、不编 ok / bad)。装了端口的宿主上,`projectMcpConfigs` 对 `toolFaces` 坏形的条目:这一台不上 wire(单条出口 `null`),其余服务器照常,`dropped` 多一行 `reason: 'tool_faces_invalid'`(`problem` = 引擎原句)并给一句点名文件 / 服务器 / 键 / 引擎原句 / 改法的话;不剥键静默降级(`toolFaces` 是收窄声明,丢掉它 = 工具无面挂载、运维声明的保护静默失效);合形条目带引擎判过的普通副本;端口没装 ⇒ 不判、原样过境,与 0.100.0 逐字节同。**编译红必改**:按完整型 `CoreValuePorts` 建袋的装配根少这一件 ⇒ 编译红一次(补引擎包根同名导出即绿);`McpConfigDropReason` 多一员 `tool_faces_invalid`(对该联合穷举 `switch` / `Record` 的宿主加一臂)。**行为变**:见上(坏 `toolFaces` 条目不再上 wire);`toolFaces` 键本身读就抛的取值器(只有宿主交进来的对象才可能)按「读不出」处置,不再掐掉整张投影。**本版未做**:云配置腿 `cloudMcpToSpecs` 仍对 `toolFaces` 原样过境;披露行没有成员路径位(引擎读数只有一句 `problem`)。门:`scripts/run-mcp-wire-caps-test.mjs` TF 段、`scripts/run-core-value-ports-test.mjs` ⑫ 段。公面 +2(1824 → 1826)。
124
+ - **跨边界污染读口 `crossBoundaryTaintOf(carrier)` 与型 `CrossBoundaryTaintReading`(CC-215;§129 XB-1;引擎 7.54.0 起)**:一次运行在部署信任边界之外的设备上执行、部署又是多租户时,对组织一侧的写入(或离设备读取之后指向该设备的调用)由部署的审批人逐次确认 —— 这件事在线上只有两处载体:问类两位里的 `cross_boundary` 与强制词 `cross_boundary_taint`(引擎对两处出自同一个决定成员;真卡恒带真批准位,而带真批准位的问不盖强制词,所以**问类是主载体**)。读口对卡请求 / 活卡帧 / 待决行 / 座位请求同一把键名:任一处在场 ⇒ 冻结的 `{ taint: true }`,其余一律 `undefined`。🔴 **缺席 ≠ 没污染**:读数只有「在场」与「缺席」两态,**没有 `{ taint: false }` 这一臂**(型上就只有 `taint: true`)—— 引擎的污染位在每个载体上都是「真或缺席,从不写假」,线上没有任何一处会明说「没污染」;卡上没有这两处载体可能是老引擎不铸、服务端没带上线、读不出,或这张卡的因由是别的,端不得把缺席渲成「安全」。两处载体各自独立读(先取三只顶层键自有数据位的本地快照,自有访问器一次都不执行;一处读就抛 / 坏形,不抹掉另一处读得出的证据),复用既有窄读器(问类对的唯一成对读法、强制词的闭集精确字节),永不抛。线上没有承载的同族位(检查点状态的在场位 / 要求词 / 跟踪事件臂 / 决定成员)**不读** —— 审批 / 待决行 / inbox / 运行状态这几条投影在服务端 7.132.0 与 sdk 24.0.0 上都没有它们的承载,读它们等于读一个没人铸的键(§129 XB-3 与包侧缺口 XB;会话同步流里的 `engine:cross_boundary` 会话记录是另一条树级载体,不属审批读口)。公面运行期 +1。
125
+ - **`crossBoundaryTaintWayOutOf(carrier, lang?)`(跨边界污染的出路句;§129 XB-2)**:读口在场时「人能做什么」那一句(英文 / 中文各一句,消息目录键 `approval.mandate.wayOut.crossBoundaryTaint`):配置给的放行(放行一切的设置 / 策略自己的回答)对这次调用会被拒绝,所以由人在这里批准或拒绝来决定它;读口缺席 ⇒ `undefined`(不编出路)。以**读口为键**而不是以强制词为键 —— 真卡上强制词多半缺席。与强制词那一句「为什么必须问」(`approvalMandateDetail('cross_boundary_taint')`)并列不互替,句式律同强制词各句(零标识符、不指人去写规则、不说每次都问、不冒充「只有真人」、不说「没人能答」、与既有各句逐字互异)。公面运行期 +1。
126
+ - **`toolKillCauseFromGenerationEnd(input)` —— 退出码 137 归因的成因薄壳之二**(CC-901;**§129 GT-5**;根入口运行期导出 +1〔1828 → 1829〕):入参 `{ cause?: string; stopSignalDelivered?: boolean } | null | undefined`,答 `'engine_restarted' | undefined`。宿主手上有「某一代引擎是怎么结束的」这条成因时,用它得到 `AdapterContext.toolKillCause` 的答案(读口 `toolKillCause` 本来就是宿主自供:宿主有自己的代际结束成因就直接答,薄壳只是算法之一)。规则只有一条:**`cause === 'respawned'` 且 `stopSignalDelivered === true`** ⇒ `'engine_restarted'`;其余一切 ⇒ `undefined`(工具结果卡出中性句 `Command was killed by signal 9 (exit 137)`,不猜重启、不猜内存):缺席 / 开集里别的词(崩溃 · 判死 · 心跳换人 · 附着引擎先崩后确认重启……)/ 未送达 / 非布尔真 / 非对象入参。`cause` 是开集原词,本包只认 `respawned` 一个,逐字节比较(不折大小写、不裁空白);「送达」缺一不可 —— 换引擎的链可能在发停机信号之前就发现旧进程已经不在了(附着的引擎先崩、用户随后确认重启),那一代同样以 `respawned` 结束,却不是本端停掉的。与身份锚薄壳 `toolKillCauseAcrossEngineIdentity` 的分工:后者答「换了没有」(两侧代际锚正面观察到不同,分不出重启 / 崩溃 / 别处换掉),本函数答「谁换的」;两只各问各的、不互推。读两位只经自有数据位(访问器不执行、原型链上的不认、代理陷阱 / 已撤销代理 ⇒ 按缺席),永不抛。入参型无 `unknown`。门:`scripts/run-tool-card-outcome-test.mjs` K11 – K14。**勘误**(回指 §126,已发段冻结不改):§126 GT-2 与其缺席语义段把成因读口写成「由身份锚薄壳得」的形,没写「宿主自有成因可直接答」—— 以本条与 §129 GT-5 为准。
127
+ - **工具结果块「没送达」两形的闭集读数 `toolOutputMediaAbsenceOf(block)`、展示句 `toolOutputMediaAbsenceSentence(view, lang?)` 与型 `ToolOutputMediaAbsence`**(CC-907;**§129 TR-1 / TR-2**;根入口运行期导出 +2〔1829 → 1831〕,公面型 +1):sdk 24 的 `ToolOutputBlock` 在文本块与带 base64 的媒体块之外还有两臂 —— 媒体描述符 `{ type: 'image' | 'document', mimeType?, bytes, truncated: true }`(无 `data`;同一媒体块没随这一面送达:引擎的媒体总预算降级 / 账本与回放面 / 活面连接积压)与汇总块 `{ type: 'omitted', blocks, bytes, truncated: true }`(连描述符都放不下时,它与之后的每个媒体块折成一块)。修前两形都落「读不出的块」、被吞成末尾那条通用告知 `[unsupported content omitted]`,用户看不到「有媒体没送到」。现读口认这两形:`toolOutputMediaAbsenceOf(block: object | null | undefined)` ⇒ 冻结读数 `{ kind: 'descriptor', mediaType, mimeType?, bytes }` / `{ kind: 'omitted', blocks, bytes }`,读不出 ⇒ `undefined`,永不抛。判据:描述符 = `type` ∈ {`image`, `document`} ∧ 对象上没有 `data` 键(自有或原型链上都算有,与 sdk 对两形的区分同一把尺)∧ `bytes` 为 ≥ 0 的安全整数 ∧ `truncated === true`(`mimeType` 键不在 ⇒ 缺席不编;键在则须为串,取值器 / `undefined` / 非串 ⇒ 读不出,不折成缺席);汇总块 = `type === 'omitted'` ∧ `blocks` 为 ≥ 1 的安全整数 ∧ `bytes` 为 ≥ 0 的安全整数 ∧ `truncated === true`。任一不满足 ⇒ 仍是读不出的块(原处置:末尾恰一条通用告知,对全部读不出的块合起来一条;缺席 ≠ 0:计数位缺席 / 坏形不当 0)。`mimeType` 只回声可回声的记号(可见 ASCII、≤ 255 字符;含控制符 / 换行 / 方向控制符 / 非 ASCII / 全空白 / 空串 ⇒ 不回声,按缺席句出,不扔整块)。展示句 `toolOutputMediaAbsenceSentence(view, lang?)`(缺省英文;读数不合形 ⇒ 空串,永不抛)与卡上、文字读法里是**同一句**,取目录六键 `session.toolResult.media.*`(英 / 中):`[image not delivered: image/png, 2048 B]` / `[image not delivered: 2048 B]`(无 `mimeType`)/ `[1 media block not delivered: 9 B in total]` / `[3 media blocks not delivered: 7340032 B in total]`(`document` 同形)。读口与卡上渲染是叶 `toolResultContent.ts` 里的同一只判据,不留第二种读法。不回拉媒体、不按 `bytes` 猜「本来是什么」—— 句子只说「没送到」。带 base64 的媒体块行为零变。入参型无 `unknown`。门:`scripts/run-tool-result-content-projection-test.mjs` D 段。
128
+ - **`workflowRunDisplayStatusOf(run)` —— 一条 workflow run(或一条 agent 行)在 fleet 车道上渲哪个状态词的唯一判官**(CC-919;**§129 FL-2**;根入口运行期导出 +1〔1831 → 1832〕):入参 `object | null | undefined`,答 fleet 渲染词汇 `FleetTaskStatus`。一条 run 停在耐久审批门上有两种线上形,**两形都投 `awaiting approval`**:排空窗口内(一腿停驻、兄弟腿还在跑)`status` 仍是 `running`、带 `parked: true`;排空之后的终态是 `status: 'failed'` + `errorCode: 'workflow.agent_parked'`。判法:`parked` 位恰为布尔 `true` ⇒ `awaiting approval`;`status` 恰为 `failed` 且 `errorCode` 逐字节等于 `workflow.agent_parked` ⇒ `awaiting approval`;其余按 `status` 原词表(与旧口逐词同表,表外与缺席 ⇒ `idle`)。任一位坏形或缺席按缺席、不猜:`errorCode` 的大小写 / 前缀 / 首尾空白 / 空串 / 非串都不算;停驻码只在 `status` 恰为 `failed` 时算(别的词、表外词、缺席都不借这一臂);`parked` 不是布尔 `true`(`'true'` / `1` / `false` / 对象)不算;三位都只读自有数据位(访问器不执行、原型链上的同名位不算、读就抛按缺席),入参不是对象(含数组)⇒ `idle`,永不抛,入参不被改写。agent 行(`agent_runs[]`)同形同判:`failed` 行而码是别的(例如 spawn 被拒的 `workflow.agent_blocked`)仍是 `failed`。🔴 **缺席 ≠ 失败**:fleet 行的 sdk 型面与服务端 workflow 行投影今天只带 `status`,经 `projectWorkflows` 进来的 fleet 行读不到这两位(行为与 0.100.0 同);`/v1/workflows` 的 run 对象今天就带 `errorCode`,直接喂本口即得终态那一形。过渡位:这两条自判臂按引擎侧定谳语义自判,引擎 7.55.0 起包根导出对应的纯函数后改经值级端口调(退役登记 RL-198)。
129
+ - **规则条目是引擎不支持的形:读口 `unsupportedRuleRefusalFromError(err)`、一句话 `unsupportedRuleRefusalContent(detail, lang?)` 与型 `UnsupportedRuleRefusalDetail` / `UnsupportedRuleRefusalProblem`**(CC-916 ③;**§129 PD-3**;根入口运行期导出 +2〔1832 → 1834〕,公面型 +2):请求 `settings.permissions.deny` / `ask` 里引擎规则文法编不出生效规则的条目(例如参数不属于该工具的写法:`Edit(C:/x)`、`mcp__s(a)`;自服务端 7.135.0 起 `WebFetch(foo:…)` / `WebSearch(domain:…)` 一类也是 —— `WebFetch(domain:…)` 本身从 7.135.0 起是按主机生效的真规则、不被拒)整请求被拒 —— 提交口 `422 request.unprocessable` + 顶层 `field` + `detail.problems[]`(每条 `{ code, field, entry, reason }`,`reason` 是引擎规则文法的拒因码原样,如 `unsupported.param_unknown`);停驻任务的存量体续跑是 `409 resume_blocked_by_policy` + `blockedBy: request.unprocessable` + 同一份 `detail`;`detail.problems[]` 自服务端 7.133.0 起。此前本包在这一族上零出口(`unsupported.*` 只在规则拒因列表里有呈现表)。读口读这个体:取码走 `effectiveWireErrorCode`(折叠形按 `blockedBy`),`detail.problems[]` 里 `reason` 是**本包规则拒因呈现表里认得的 `unsupported.*` 码**的条目逐条读出(`{ code, field?, entry? }`,保服务端扫描序;开集:表外 / `invalid.*` / 服务端自铸的 `reason` 一条也不认领,全表外 ⇒ `null`,免得把别的原因说成「规则不支持」;夹着表外条目时只留表内的),不判状态,坏形 / 取值器抛 ⇒ `null`、永不抛,每个键各读各的、最多读 1000 条;折叠形读数带 `folded: true`。一句话 = 「引擎拒绝了这个请求,所以其中任何内容都没有生效」+ **点名是哪几条**(规则串转义封长,同一条规则只点一次,前 5 条 + `and K more`,条数 > 1 用复数句)+ 每条的规则拒因呈现表同一句 + 出路(删掉或改写;要整只拦下一个工具就只写工具名);折叠形另一句(生命周期中性:它续不下去 —— 改好后作为新请求重新提交,仍停着就先取消)。目录键 `notice.wireRefusal.unsupportedRule`(+ `.other` / `.stored` / `.stored.other`,英 / 中)。读口只认服务端真铸的两个体(上文),不认顶层 `errorCode: unsupported.*`(服务端不这样铸;源码与 7.134.0 发布包逐处核过)。折叠身份与有效码出自**同一次读取**:外层码读一次、`blockedBy` 至多读一次且只在外层码正是折叠码时读,码与 `folded` 同取自这一份读数(取码口 `effectiveWireErrorCode` 与本读口共用同一读口);普通 `request.unprocessable` 附带同名 `blockedBy` 不标折叠。门:`scripts/run-rule-refusal-sentence-test.mjs` 新 R9G。
130
+ - **托管层 http hook 两张名单在 hooks 计划装配口读、请求体出门前过(CC-601;§129 HP-1;🔴 行为变;根入口运行期导出 +1〔1834 → 1835〕,公面型 +2)**:管理员在托管设置里写的 `allowedHttpHookUrls`(URL 名单)与 `httpHookAllowedEnvVars`(变量名单)此前只在终端本端执行器上生效 —— 引擎侧的 hook 执行器不认这两张名单,交给引擎的请求体原样出门 ⇒ 名单外的 http hook 由引擎照发(终端先在自己的壳里后置筛了一层,另两端没有)。现在 `hooksWirePlan()` 装配请求体 hooks 段时读设置层文档的这两个自有数据位(哪几层见 §129 HP-2;托管层读与 `allowManagedHooksOnly` / `disableAllHooks` 同一份读数;名单读口自己不执行访问器,访问器位按坏形读;托管文档在更早一步已被 hooks 坏形判官整份读过,读到会抛的访问器 ⇒ 整条腿按治理读不出关闭),**请求体上每一只 `type: 'http'` 条目**出门前过名单 —— 设置来源组、`/goal`、插件组一视同仁(名单是条目级策略,不让组级授权替代它;托管层自己的 http hook 同过;留在请求体上的非引擎事件条目同样过,不靠事件表放行)。URL 名单的判法是设置契约放行出口 `urlAllowPatternMatches` 的构建期抄本(本包不写第二份;通配只在 URL 的一个组成部分内);变量名单对条目自己的 `allowedEnvVars` 取交集(保持条目自己的序)。**三态各自一条语义**:缺席(键不在 / 值 `undefined`)⇒ 不设限,请求体原样(同一个对象,零行);空数组 ⇒ URL 名单「一只 http hook 都不许」/ 变量名单「一个变量都不许」;坏形(在场但不是字符串数组:`null` / 非数组 / 含非串成员 / 稀疏数组 / 读不成数据的位)⇒ **按空数组读**(CC 同向:坏形名单 = 一个都不许)并点名这一张。名单外的条目不上请求体,一条一行记进计划的新键 `httpPolicyDrops`(行 `{ event, reason, layer, urlShown, notice }`,`layer` 点名是哪一层的名单动的;`reason` 四词 `url_not_listed` / `url_list_empty` / `url_list_malformed` / `env_list_malformed`〔本版后半 HP-2 增第五词 `layer_unreadable`〕,闭集常量 `HTTP_POLICY_DROP_REASONS`,型 `HttpPolicyDropReason` / `HttpPolicyDropRow`),`hooksNotRunNotice(plan)` 照列(消息目录键 `config.hooks.httpPolicy.*` 英 / 中各四句,HP-2 增第五句);`urlShown` 是不可信文本过展示出口后的展示形(userinfo / query / fragment 凭据打码、控制符可见化、封长),**`httpPolicyDrops` 的行与句子里没有原 URL**(请求体 `wire` 上留下的条目当然还带自己的 URL);变量名单坏形时条目照上、变量按空读、点名一行,合形的变量收窄不出句。**不改**:执行者判定(`verdicts` / `settingsVerdicts` 不动 —— 被拿掉的那只判给引擎的,引擎没收到、本端也不跑)、治理整条腿关停(关停时没有请求体、零行)、托管层读不出时整条腿关闭的既有处置(KL-737 的三维读数不扩)。`HooksWirePlan` 多一个必填输出键 `httpPolicyDrops`(判形口对缺这一键的老形计划照认,按空):只在 TS 里手拼完整计划字面量的宿主编译红一次(终端参照树 1.0.150 零手拼;网页端 / 桌面端未核,推断零)。**读哪几层**:见 §129 HP-2(本版后半:全部准入层 —— 层集由设置契约层准入判官的构建期抄本定,本包不手写层表;最初只读托管层的那一半限制已收口,KL-804 删行)。
131
+ - **每版发布带机读门证据 v1:全门 runner 新旗标 `--evidence <path>`、发布后补位工具 `scripts/release-evidence-fill.mjs`、自证门**(CC-908;**§129 EV-1**;不涉公面、不出包 —— 证据件住仓里 `release-evidence/<版本>.json`,随仓 tag 可读,不在 npm `files` 白名单):下游要的是「这一版全门跑出了什么」的机读读数,而不是自己重跑约 80 分钟的全门。`node scripts/run-client-core-all-gates.mjs --evidence <path>` 在全门跑完后写出一份 `release-evidence v1` JSON(不带旗标时与 0.100.0 逐字节同;开跑前就拒:目标已存在〔不覆盖〕、读不出被测提交〔不在 git 仓里时用环境变量 `SEMA_EVIDENCE_TESTED_COMMIT` 交真提交〕、未知参数,一律 exit 9、一只门都不起)。顶层 `contract`(恒 `release-evidence v1`)· `package` · `version` · `gitHead`(npm 发布提交)· `testedCommit`(门实际跑的提交;树不干净带 `+dirty`)· `integrity`(registry 的完整 sha512 SRI)· `distShasum` · `treeDiff[]` · `generatedAt` · `runner{ host, platform, node, fixtures, testedCommitSource, exit, skipRatchet }` · `gates[]` · `totals`;每道门一行 `{ name, class, exit, checks, skippedSections[], status }`:`class` 取自清单的负控类别;`checks` 只对 exit 0 的门从 stdout 尾部按「数字紧挨结论词」的通过口径(`N checks 全绿` / `N 格全绿` / `N 条断言全过` / `N passed` 等)解析,**解析不出记 `null`、绝不编 0**;`skippedSections` 收各门输出里 `SKIPPED-SECTION` 行的段名(一行一项,是行数不是段数);`status` ∈ `pass` / `fail` / `skip`(exit 3)/ `timeout`,人工标注可再加 `fail-accepted-by-ruling` / `fail-other-repos` 且必带 `failReason`;`totals` 含 `gates` / `pass` / `fail` / `skip` / `timeout` / `skippedSections` / `checksKnown` / `checksUnparsed` 与反空转下限 `minChecks`(= 本次 `checksKnown` 的十分之九向下取整,写进文件给下一版对拍)。`runner.exit` 是 runner 自己的收尾退出码(0 / 1 / 3),`runner.skipRatchet` 是它的 skip 棘轮违例名单 —— 棘轮红不落在任何一道门身上,不记就会从件里消失。`runner.fixtures` 只记白名单环境变量的 basename(夹具是哪一代),未设记 `null`,令牌类变量一概不读。发布前生成的件里 `gitHead` / `integrity` / `distShasum` / `treeDiff` 四位是 `null`(此时还没绑定任何产物),发布后由补位工具只填这四位、其余字节不动,与冻结账转正同一个提交进 tag:`testedCommit` 必须是 `gitHead` 的祖先,tag 提交是 `gitHead` 的**直接后继**,两者之差只有冻结账转正与证据文件本身(`treeDiff` 逐文件列出且限于这两件,冻结账所在的门脚本只许在冻结账表内改动)。0.100.0 随带的是 v0 手工件(只覆盖发布前的登记物门集,字段同名,不是全门读数;v0 只许这一份)。**行为变(工具面,窄)**:全门 runner 此前对任何命令行参数静默忽略,现在只认 `--evidence`,别的参数 exit 9。
132
+ - **停驻审批「被拒过、自动腿不再放回」一本账**(CC-361;**§129 XA-1**):成因闭集 `ASK_PARK_AUTO_REOPEN_BLOCKS`(`policy` = 引擎准入策略拒绝续跑 / `park_refused` = 这台引擎续不了这份停驻)· 唯一判别 `askParkRefusalBlockOf(err)` · 读口 `askParkAutoReopenBlockOf({ callId, sessionId? })` · 一账一句的认领口 `claimAskParkAutoReopenBlockNotice(gate, lane?, lang?)`(交 `{ kind, text, delivered() }`,上了屏再确认)· 句口 `askParkAutoReopenBlockedContent(kind, taskId, lane?, lang?)`(`policy` 两车道句进消息目录;`park_refused` 复用既有 `refusedParkBlockedContent`)· 清账口 `clearAskParkAutoReopenBlocks(sessionId?)`;型 `AskParkAutoReopenBlock` / `AskParkGate` / `AskParkAutoReopenBlockNotice`。账的写点在本包耐久决断出口(`HitlBridge` 的 `decideTool` / `answerQuestion` / 操作句柄),宿主零接线:2xx 删账、两种拒收记账、别的失败不动账、清账之前起的回答不写新账。自愈:`ActiveRunSelfHealDeps.reopenAskPark` 加可选第二参 `{ trigger }`(与计划臂同一映射);拒开判决位 `_sema_policyBlocked`(值 = 成因词)⇒ 结局 `ask-reopen-failed.policyBlocked` + 恰一句「不再自动放回 + 出路」。**编译红必改**:无(只收一参的宿主实现照样可赋值)。**行为变**:无(新口;宿主换读前一切照旧)。
133
+ - **决断拒收 409 分码第五词 `grant_changed` 与句口 `decisionGrantChangedContent(lang?)`**(CC-375 ③;**§129 XA-2**;🔴 型面 BREAKING):`resume_outcome_invalid` ∧ `field: "boundGrantDigest"`(卡绑定的技能授予摘要在卡呈出之后变了)⇒ 读数 `conflict: 'grant_changed'`;句子三段(发生了什么 · 状态 · 出路「拒掉这一请求、让模型重新激活那个技能」)进消息目录(`approval.decision.grantChanged`),决断出口失败文字同批补这一句。**编译红必改**:对 `DecisionRefusalConflict` 写穷举 `switch` 的宿主补一臂。行为变见 `### Changed`。
134
+ - **计划审阅单一判官三口**(CC-386;**§129 XA-3**):标签读口 `planReviewShownLabelsOf(questionId)`(这张卡展示过的那组标签;确切记录 → 仍武装的卡档 → 重开身份两选 → 没有展示证据 ⇒ `undefined`)· 完整选择判官 `planReviewAnswerChoiceOf(questionId, answer)`(批准带批准后档 / 拒绝带拒因)· 三值判官 `planReviewAnswerDecisionOf(questionId, answer)`;结局机读位 `_sema_planReviewOutcome.cause`(与回调载荷同;present-iff `still_parked` 的「再决不会生效」那一子形 `stored_form_unsupported`)。
135
+ - **发送机结局专属句口 `hitlDecisionOutcomeContent(outcome, lang?)`**(CC-864;**§129 XA-9**):只给两形 —— `settled_elsewhere` ∧ `contrary`(别处已拒 / 别处已批、你的那一个没生效,按首决两句之一)与 `unconfirmed{gone_after_retry}`(不知道有没有生效 · 先看任务状态);其余形 `undefined`(各有既有句口)。四句进消息目录。
136
+ - **结局 / 读数新可选位**:发送机结局 `parkingRetried`(**§129 XA-6**)· 拒收读数路由上下文 `RefusalRouteContext.afterRetry`(**§129 XA-7**)· 自愈结局 `plan-review-reopen-failed.reopenRefusal`(CC-863;**§129 XA-8**:计划审阅重开口拒开成因位投进结局,判定形在场时不投,行句不变)。
137
+
138
+ - **设置派生键改由包从那一次设置读算**(CC-939;**§129 HS-2 – HS-7**;🔴 行为变):① 合并 `disableAllHooks` 由包按 CC 合并序自算,有启用的非托管层读不全 ⇒ 按命中、只投托管层 hooks(修前宿主合并读口不抛时按剩余层合并)· ② 采纳闸:整栈不可信(截零 / 写盘窗口 / 新问题键 / 载体丢了 / 换源)⇒ 沿用上一份可信读,deny / ask 照发并记保护集,新 allow 等干净读;某层载体集合与上次干净准入不同 ⇒ 这一层 allow 历史清空 · ③ 托管读数六词:`remote-unknown`(远端托管冷启动未到)由整回合拒改「照发 + http 条目不带 + hooks 只跑托管 + allow 不发」,两种 `unreadable-*` 拒 · ④ 交互面整份没装上的非托管设置文件 ⇒ `hold_for_consent`(装配口抛,宿主请用户确认后经 `hostSettingsConsent` 转发;一次性面照发 + 一句)· ⑤ 输出风格名取设置读、安全模式不带、正文读不到不带名 + 一句 · ⑥ 🔴 `settings.resolved` 闭集 = 权限三桶,由包按层合并(每条规则过上游层准入判官;flag 层 allow 准入 —— 对终端放宽一格,只在干净读 ∧ 引擎放行能力开时;hooks 被判官整份拒的那一层 allow 不准入、deny / ask 照收),宿主快照里的别的键不再随它上请求体 · ⑦ http hook 名单层准入改交真信任读数(这一类目三个读数逐源同答,零行为变)· ⑧ 会话状态将超状态预算 ⇒ 这一回合受守卫的请求不发、状态内容不前进(🔴 比终端「沿用上一份续发」更严;读预算耗尽不是这一种拒,按成员读数坏形处置);状态回退不回退本拍 hooks 判定。
139
+ - **`printResultArmOf(input)` 与读口 `resultLimitOf(frame)`、结果帧错误信封超集键 `_sema_limit`;型 `PrintResultArm` / `PrintResultArmInput` / `PrintResultSuccessArm` / `PrintResultErrorArm` / `PrintResultLastRow` / `PrintResultLastRowBlock` / `PrintResultLastRowMessage` / `ResultLimitWord`**(CC-924;**§129 PR-2**;根入口运行期导出 +2〔1834 → 1836〕,公面型 +8):`-p` 结果帧「走 CC 哪一臂」收成包内一处判 —— 此前终端壳自带一份(只落了限额族一个子集),其余无终句停止(等审批停住 / 被拦下 / 结局不明 / 非限额执行失败)一律写 `success` + `is_error: true`,只读 `subtype` 的脚本把它们当成功。入参 `{ terminal, lastRow? }`(`terminal` = `readRunTerminal` 的终局读数或 `null`;`lastRow` = 末行读数,`type` / `_sema_api_error_message` / `message.content` / `message.stop_reason` / `salvagedText` 五个自有数据位),答 `{ subtype, is_error, stop_reason }`。判型表:读不出入参 ⇒ `error_during_execution` + `is_error: true`(结局不明臂,不看末行,绝不 `success`)· `completed` ⇒ `success` + `is_error: false` · `failed` 且引擎码在**上限表**内 ⇒ 表里那一行的 subtype + `is_error: true` + `limit` 词,**不看末行**(轮数 → `error_max_turns` · 美元预算 → `error_max_budget_usd` · 结构化输出重试 → `error_max_structured_output_retries`;墙钟与 token 两道 CC 没有对应子类,**不借名**,仍是 `error_during_execution`)· 其余一切(非上限的 `failed` / `blocked` / `paused` / 表外终态 / 终局记录缺席)走同一条**末行出身**规则:末行是 API 错误行或模型正文(含引擎抢救回的最终正文)⇒ `success` + `is_error: true`,否则 `error_during_execution` + `is_error: true`。`stop_reason` 按 agent-types 两臂的镜像必填(`string | null`),值取末行 `message.stop_reason` 的非空串否则 `null`,本包不替引擎铸词。上限表只有一张:结果帧铸点 `subtypeForErrorCode` 与本口读同一张。错误信封多一个 additive 超集键 **`_sema_limit`**(闭集五词 `wall_clock` / `tokens` / `turns` / `budget_usd` / `structured_output_retries`;present-iff:只在 `failed` 终局 / `failed` 事件的引擎码命中上限表时铸,缺席不是「没撞上限」的断言;读口 `resultLimitOf`,表外词 / 坏形 ⇒ `undefined`),墙钟与 token 同 subtype 靠它分;超集登记 `docs/type-superset.json`。**本包铸的结果帧就读本口定臂**(🔴 行为变,在包;见 `### Changed` 同号条):经 `runStream` 的非上限族失败 / 被拦下 / 结局不明帧由 `error_during_execution` 变 `success` + `is_error: true` + `result`,上限族与端直调(不交末行)不变,`errors[]` 这一版照留;判成败读 `is_error`,不读 `subtype`。
140
+ - **`resultWayOutOf(frame)` 与按位出句 `wayOutSentence(wayOut, lang?)`、结果帧错误信封超集键 `_sema_wayOut: { word, keySource? }`;型 `ResultWayOut` / `ResultWayOutWord`**(CC-925;**§129 PR-3**;CC-833 ③ 的出路词半场;根入口运行期导出 +2〔1836 → 1838〕,公面型 +2):服务商 4xx / 5xx 拒绝的终局上,错误信封多一个 additive 键 `_sema_wayOut`。`word` 闭集四词 = RT-4 出路词表(`apiErrorNotice` 的 `recourse`:`check_credentials` 401 / 403 · `switch_model` 额度 / 限流 / 过载 / 429 · 5xx · `fix_request` · `wait`;类型取自该读口),由同一条终局的(状态码,引擎判词)经唯一铸点给出 —— 状态码读法与交互车道的合成 API 错误行同一对(结果上的 `apiFailure.status` 优先,没有则取拒绝详情的 `status`),所以**两条车道对同一终局答同一个词**(经 `runStream` 来的结果帧用的就是合成 `API Error:` 行同一拍读出的同一份事实,没有 API 错误行的终局不铸)。`keySource` = 引擎自报的凭据来路旋钮词(拒绝详情 `route.credentialSource`,从不带钥匙值或 URL),**只随 `check_credentials` 出现**,本包不读宿主设置 / 环境、引擎没报就不写。键缺席 = **无出路**(状态码与判词都说不出出路 / 终局不是服务商应答 / 读不出),不是失败;读口 `resultWayOutOf` 对坏形 / 表外词 ⇒ `undefined`。`wayOutSentence` 按位出句(目录键 `notice.wayOut.*` 五键,中英同键):`check_credentials` 带来路 ⇒ 点名来路(过展示出口、封长 60),不带 ⇒ 只说核对凭据;别的词各一句、不吃来路。`-p` 的四面(stream-json result / json result / text stdout / stderr 端点上下文行)读同一个键、同一个句口。超集登记 `docs/type-superset.json`。
141
+ - **根入口型 `HostWebSearchSource` / `HostMemorySource` 与新命名型 `RawSettingsSection`;两个原料型里 `section` / `settingsMemory` 的型放宽到设置文件一段原文的 JSON 值形**(CC-926 D7;**§129 HT-1**;根入口运行期导出不变〔1839〕,公面型 +3):宿主自供项入口 `hostTurnSettings` 的两个源原料型此前只能经 `HostTurnSettingsSources[...]` 派生取到,且 `HostWebSearchSource.section` / `HostMemorySource.settingsMemory` 的型写成 `SettingsDocument`(对象)—— 而入口判官读的是设置段**原文**(非对象段判形错),型比入口窄,端要保住「形错」就得先把非对象段转成对象再交。现三个型在根入口按名可取;`RawSettingsSection` = `SettingsDocument | string | number | boolean | null | readonly RawSettingsSection[]`(递归具名别名;顶层与数组元素处的函数 / 符号 / `unknown` 编译红;**不写 `readonly unknown[]`**:新公面入参不开 `unknown` 位,类型面棘轮不松;🔴 对象分支沿用 `SettingsDocument`,对象里的值不逐层收紧 —— 与 0.100.0 同,收紧会打断按 `Record<string, unknown>` 取设置文档再交的既有调用)。非对象段原样交,入口按 0.100.0 同一读法判成形错(`webSearch` ⇒ `value_malformed` / `refuse_turn`,`memory` ⇒ `value_malformed` / `withhold_notice`);缺席与 `null` 同:没有这一段。运行期读法逐字同 0.100.0,变的只是型;端若曾对 `section` / `settingsMemory` 做过定向转换可删,用 `@ts-expect-error` 压过这处类型红的端编译红一次(TS2578,删指令即绿)。门:`scripts/run-host-turn-settings-intake-test.mjs` HI10a – HI10f。 🔁 **同版改口**(CC-939,§129 HS-2):设置段改取设置源那一次读 ⇒ `section` / `settingsMemory` 两位与 `RawSettingsSection` 在本版发布前退出(`webSearch` 源交 `{ env, apiKeyFor? }`、`memory` 源交 `{ flag? }`;两型仍在根入口)。
142
+ - **`resolveCatalogDefaultModel(models, has, fallback)`、型 `CatalogDefaultModel` / `CatalogDefaultSource` / `CatalogDefaultModelsInput`(「目录的缺省模型是哪一条」解析口转口)**(CC-329;**§129 UC-3**;公面 +1 名):没有指名模型时,目录里哪一条是缺省 —— 规则属主是设置契约包的一只纯函数(服务端与壳的本地池读口都该调它,不各写一份链);本包不自铸:公面函数是该纯函数的**构建期抄本**的薄包一层(生成器按 AST 从已装设置契约包原样抄,跨模块依赖〔活动档位组展开〕同样是抄本,新鲜度门逐字节重算并与原件逐样本同答),运行期零依赖设置契约包。规则逐字取原件:`roles.default` 是 `{ select }` 形 ⇒ 原样交回(`{ kind: 'select', select }`,不跳到命名链下一级);`{ model }` 或缺席 ⇒ 命名链取第一个可用候选 —— `roles.default` 的 `model` → 活动档位组的 `pro` → `flash` → `lite`(只向低档扫,绝不抓 `max` / `ultra`)→ 调用方兜底;点了名却不可用的各级记进 `dangling`,绝不静默指错;空串 `model` 当没点名。缺省角色档位阶梯的取值表 `DEFAULT_ROLE_TIER_LADDER` 0.101.0 期内撤回(未发布;宿主要值表请从 `@sema-agent/settings-schema` 取),**§129 U11-1**。**编译红**:无(新口)。**行为变**:无。**零动作**:壳的两份手写缺省链改调本口后可删(见 §129y ③)。
143
+ - **workflow 轮询投影多一行续跑结算 `resume: …`**(CC-532;**§129 UC-7**;行为变,窄):`projectWorkflowTaskOutput(jsonSrc, lang?)` 读轮询 JSON 的 `resume` 对象 —— 回放条数 `replayed` / 日志条数 `journal_entries` 与第一次回放停止位 `replay_stopped_at` / `replay_stopped_reason` —— 在 `agents:` 汇总行之后、per-agent 明细之前渲恰一行(措辞与引擎自己的完成通知正文同一读法:`replayed N of M journaled results`)。🔴 真 0 是读数:日志有条目而回放 0 条(文字承诺回放、实际一条没回放)渲「replayed 0 of M」+ 停止位,不折成缺席;日志零条且零回放 ⇒ 单独一句「没找到日志条目、整个脚本实跑」。缺席零行(`resume` 键缺席 / 不是纯对象 / 两读数都读不出 ⇒ 输出与此前逐字节同),每个读数各自独立在场,坏形(负数 / 小数 / NaN / 非数 / 回放数大于日志数的分母)按该位缺席,绝不编 0;停止原因是引擎原话 ⇒ 过展示出口并封长;`note` 尾仍逐字透传。句子进消息目录(en / zh 各七键 `session.workflowResume.*`),`lang` 缺省英文。
144
+ - **`ToolShim.aliases?`**(CC-424;**§129 UC-5**;型面 additive):端渲一只工具要用的面多一个可选成员 —— 名册行上这只工具的别名(行上有才有;空表如实带;副本)。引擎在权限判定前把工具名归一成名册正名,`tool_start` / `tool_end` / 转录取模型用的拼写;端拿拼写查面,别名不在面上就查不到。
145
+ - **`PROVIDER_REJECTION_KINDS` 尾插第六词 `quota_exhausted`**(CC-473;**§129 UC-6**;型面 additive,**编译红**见 §129y ①):终局「服务商拒绝」的分类词闭集多一员 —— 引擎判词 `providerCondition` 是 `quota_exhausted` 且状态落在「改了也不行 / 等一等也不行」几档(400 / 413 / 422 / 429 与表外状态如 402)时的类,前五词与顺序不动。
146
+ - 新门 `scripts/run-ask-park-auto-reopen-block-test.mjs`(**§129 XA-1**;CC-361):APB-0 公面 · APB-1 唯一判别 · APB-2 失败分类 × 三条真写点 · APB-3 两种完成序 × 清账在途 · APB-4 读口 · APB-5 一账一句认领 + 确认、按会话 / 全清 · APB-6 帽 64 · APB-7 自愈(trigger 同映射、恰一句、旧形按缺席)· APB-8 句子(目录 en / zh)· APB-9 按会话清账只作废那个会话的在途回答 · APB-10 同一成因再撞一次不作废已认领的那一句。
147
+ - 扩门 `scripts/run-hitl-decision-send-test.mjs`(**§129 XA-6 / XA-7 / XA-9**):新 P 段(停驻重投三轴:两发同体 / 第二发带截止 / 202 → 202 / 无邀请 / 超上限 / 等待中中止 / 预算尽 / 同门并发闩 / 重投回放相反 / 202 → 404 按第二发分类 / 202 → 409 · 5xx 耗尽 · 传输耗尽 / 传输断后 404 说不准 / 首发前传输断不影响 / 点名别的卡 / 物理发数上界 / 判官单处 / 等待期间预算已尽醒来不再发)与 OC 段(句口两形 / 其余形 `undefined` / 坏形不抛);DS-F8 成文改口(零重发 → 两发);DS-U1 / DS-U3 源码钉改口(活卡腿调投递段、投递段只在叶子里定义一处)。
148
+ - 扩门 `scripts/run-approval-respond-parking-test.mjs`(**§129 XA-6 / XA-7**):G-PK1c / 1j / 1k / 1o / 1p、G-PK4c、G-PK5a – 5e、G-PK8b 成文改口(停驻重投一次;重投体与最后真发出去的那只逐键同);新 LV 段(活卡腿传输断 ×4 ⇒ `transport_exhausted` / 传输断 → 404 ⇒ 读数说不准 / 首发 404 对照 / 503 → 200 落定 / 重发带截止 / 202 → 404 不借停驻 / 202 → 200 赎回落定 / 中断拒不经投递段 / 答复提交观察者在出站前中止信号 ⇒ 不落定)。`run-approval-resolution-test.mjs` AR-3e、`run-client-core-pure-test.mjs` B7、`run-hitl-wave2-test.mjs` G-HW2-1c(202)同批成文改口。
149
+ - 扩门 `scripts/run-decision-refusal-standing-test.mjs`(**§129 XA-2**):新 GC 段(分码词 / 不铸 transient / 不收口 / 句子 en / zh / 决断出口补句 / 读数口同答 / `field` 缺席与别的格仍不是这一词 / answer 臂正控);`scripts/run-user-invoked-skills-slot-test.mjs` 新 DS 段(两调用点同一只判定)。
150
+ - 扩门 `scripts/run-plan-review-outcome-verdict-test.mjs`(**§129 XA-3**):POV11(源码零「证得出」布尔、两形正控)· POV12(机读位与回调载荷 `cause`、present-iff)· POV13(400 两形按服务端判序分);`scripts/run-plan-review-offered-mode-test.mjs` 新 OM13 – OM16(读口判序六形含规范 taskId 自带 `#reopen-` / 判官与独立模型逐格同答 / 源码钉 / 确切记录被挤掉后仍武装的卡用武装档、以 `#reopen-` 打头的规范 taskId);`run-plan-review-decide-verify-test.mjs` ⑥a 与 `run-hitl-words-readout-test.mjs` G-HW6 成文改口。
151
+ - 扩门 `scripts/run-automatic-answer-verdict-test.mjs`(**§129 XA-4 / XA-5**):新 GV 段(差集恰一类 / 底线 core ≥ 7.47.0 / 本机读底线那一版引擎源码 / KL-659 删 / KL-810 在 / 判官零版本读数)与 SH 段(四位各自 ⇒ 非 `may_answer` 且归因对得上 / 两两同在 / 重叠证据判序表)。`scripts/run-selfheal-reopen-test.mjs` 新 G-RR 段(五词逐一投影 / 表外不投 / 判定形不投 / 行句不变 / ask 不投)。
152
+ - 登记物同批:`scripts/registry.json` 棘轮 `portability.index` 354 → 356(两只新叶)、`singleton.highRiskCeiling` 127 → 128(被拒账,各一条 ledger)· `docs/refactor/p1-scan/singleton-manifest.json`(两条随搬家改 file、+3 条、一条改名)· `scripts/bare-sentence-baseline.json` 两句改句不增次(两条 ledger)· 公面基线 `public-export-baseline.json` +11(1839 → 1850)· 消息目录 +6 键(`approval.decision.*` 四键 · `approval.askPark.autoReopenBlocked.*` 两键)。
153
+ - **三桶逐条规则读数 `ruleReadingsOf(input, caps, facts?)` 与型 `PermissionsRuleReading` / `PermissionsRuleReadings` / `PermissionsRuleWire`〔`PermissionsRuleWireSent` / `PermissionsRuleWireKept`〕/ `PermissionsRuleCompileReading` / `RuleReadingEntry`〔`RuleReadingEntryRow` / `RuleReadingEntryInert` / `RuleReadingEntryUnread`〕/ `RuleReadingEntryMode` / `RuleReadingFacts` / `RuleReadingBases`**(CC-484;**§129 UB-1**;根入口运行期导出 +1、公面型 +13;装配口 / 报告口产出逐字节不变):规则页、启动行、加规则预检要的「引擎怎么读这一条」归包。一条入参规则串一行冻结读数 —— 去向(读装配口同一只 `assemble` 的逐条行,与 `permissionsDeclarationReport` 同入参同答:投出的那一串 / 留下的理由,编译拒收一类带引擎的码与句)、出自哪只列 / 哪只桶 / 哪个来源、引擎条目读者(deny / ask 桶按 deny 读法、allow 桶按 allow 读法)的读数(读成一行真规则的文法族词 / 读成空的引擎原因词与「该写成的拼法」/ 没读到)、宿主交了路径基址时引擎规则编译器按这些基址的答案(相对基址 ⇒ `unsupported.path_base`,句子点名是项目根 / 工作目录 / 家目录哪一位)。交了工具名册时条目读者另读「写的工具名是不是挂着的某只工具的另一种拼法」(`near_miss`)。缺席全部显式且不变成动作:读者端口没装 / 抛 / 回坏体 ⇒ 该行 `unread`(端口没装,或有规则而每一行都读不到 ⇒ 整份 `entryMode: 'unavailable'`),**绝不据此扣下或拒收任何一条规则**;没交名册只读文法(`grammar_only`,读不出不是「没有近似名」的证据);没交基址行上没有 `compile` 键。读数是按本机装的引擎的诊断,不是对附着引擎结局的断言(KL-850);设计稿 §②-5 里列了而本版不出的字段(`anchor` / `auto_stripped` / `shadowed_by` / `generation` / `voided_by_wildcard`)见 KL-851。
154
+ - **规则层近似名一句 `ruleNearMissSentence(rows, lang?)` 与型 `RuleNearMissRow`**(CC-793;**§129 UB-8**;根入口运行期导出 +1、公面型 +1;消息目录键 `rules.nearMiss.sentence.one` / `.other` / `reason` 英 / 中各一句,条目与分隔 / 余量复用 `rules.refusal.*`):`settings.permissions` 的 deny / ask / allow 条目把工具名写成「挂着的某只工具的另一种拼法」(`BASH(rm:*)` 对 `Bash`)—— 引擎 7.52.0 起在开跑前拒这一跑,更早的引擎静默不命中(收紧规则等于没写)。本口把 `ruleReadingsOf` 的行里「已随请求发出 ∧ 引擎条目读者读出 `near_miss` 并给出该写的拼法」的那些按条聚合成**一句**(前 5 条点名、余量报数、同串一次;规则串与挂载名都过不可信出口转义封长),发出之前就让用户看到;措辞对两代引擎都成立(「永远匹配不上」)。**从不据此拒绝或扣下规则**(收紧方向的规则照发);读者端口没装 / 没交名册 / 读不出该写的拼法 ⇒ 不出句(不自带大小写表、不猜)。
155
+ - **逐问类原因句读口 `askClassReasonOf(askClass)` / `askClassReasonsOf(card)` 与型 `AskClassReasonRow`**(CC-609;**§129 UB-5**;根入口运行期导出 +2、公面型 +1;`askClassReasonOf` 不认得的类 / 缺席 / 非串 / 原型键 ⇒ `undefined`,不编句):引擎对每个问类有自己的原因句(core 包根 `SHADOW_REASON`,26 类),此前包里没有这张句表(引擎的句子只在某条 allow 规则被越级时拼进卡的 `message`;`requires_user_interaction` 的卡在端上渲出身词 `safety_tighten` 的通用句)。现在句表是构建期生成物 `CORE_ASK_CLASS_REASONS`(生成器第十九批,逐类逐句取自开发依赖引擎,键集与 `ASK_CLASSES` 不是同一组词即拒生成),读口按类取句;`askClassReasonsOf(card)` 读卡上问类对(与卡口同一只成对读法),认得的类按卡上序一类一行、**同一句只出一次**(`tool_marks_mcp` / `tool_marks_a2a`、`operator_forced` / `unstated` / `ordinary` 各共用一句)。句子是引擎自己的英文原句(数据面,不进消息目录、不翻译)。**本版不改 `approvalCardReasons` 的行集**(十二源、顺序、行预算原样):哪些类上屏、与出身句 / 强制词句是否并列是呈现决定,待终端点名(见 129a UB-5)。
156
+ - **`compareReleaseVersions(a, b)`:版本比较一只纯函数,与地板三口同一只读 / 比(CC-934;§129 SF-1;根入口运行期导出 +1;公面计数按合并后基线重算)**:签名 `(a: string, b: string) => -1 | 0 | 1 | undefined`。两边都是纯 `x.y.z`(整串、无前导零、无前后缀、无空白、每段是安全整数〔≤ 2^53 − 1〕,与 `engineVersionTier` 读版本串同一条读法)⇒ `-1`(`a` 低于 `b`)/ `0`(相等)/ `1`(`a` 高于 `b`);任一边不是 ⇒ `undefined`。🔴 `undefined` = **读不出**,不是相等,也不是 `0` / `false`;不猜、不抛、不拆箱(对象自己的 `toString` / `valueOf` 不被调);非串 / 预发布 `1.2.3-rc.1` / 构建元数据 `+build` / `v` 前缀 / 首尾空白 / 前导零 / 段数不是三 / 超界段一律 `undefined`,不去后缀再比、不剥 `v`。不带底线:拿一个版本串与某个历史发布的底线比大小(`engineVersionTier(version, floor)` 的 `floor` 只能抬不能降,判不了低于本包底线的门槛)取它。与三口同一对读 / 比原语,所以对同一对串答案不分叉 —— `engineSupportFloorEffective(floor)` 恰是 `floor` 与声明底线按本口取高,`engineVersionTier` / `coreVersionTier` 的三态恰是本口对「有效门槛」比较结果的翻译(`undefined` ⇒ `unknown`、`-1` ⇒ `legacy`、`0` / `1` ⇒ `engine`)。**零动作**:纯 additive,不动既有三口的答案。**端侧**:自带 semver 比较的消费端换读本口、删自带比较臂(§129y ③)。门:`scripts/run-support-floor-projection-test.mjs` CR0 – CR6 · CT4g – CT4j · VP4b – VP4c。
157
+ - **引擎换代收口的纯判定 `convergeEndedEngineGeneration(facts)`、卡窗余量读口 `approvalWindowLeftMs(keys, nowMs)`、常量 `ENGINE_GENERATION_WINDOW_MARGIN_MS` / `ENGINE_STOPPED_CALL_PHASES`**(CC-330;**§129 XC-1**;根入口运行期导出 +4,公面型 +8):引擎换代那一拍,屏上还挂着上一代的审批卡与调用行 —— 入参是事实(活卡清单 `{ callKey, toolCallId?, parkRow, windowLeftMs?, closedByEngine? }`、这一代里流出过的调用、已持相位的调用、刚结束的代号),出参是冻结的计划 `{ retract, phases }`。卡**撤**当且仅当不是停驻行铸的卡 ∧ 引擎没正面说过窗关 ∧ 离审批窗截止的余量**严格大于** 5 秒;窗已关 / 引擎不供窗位 / 余量不足 / 停驻行一律保留(那只 ask 可能已转进 durable 队列,迟到的决断可能在路上)。相位两词 `engine-stopped-awaiting-approval`(被撤卡所问的调用)与 `engine-stopped-before-result`(这一代流出过、此刻无相位的调用);已持相位的原样不动。零读钟、零副作用,入参逐项保护。终端带副作用的同名装配函数退成装配薄壳。 读口与判定的坏读数一律往「多留一张卡」的方向收:`approvalWindowLeftMs` 在此刻读数早于收卡锚(钟往回走过)、或读数 / 锚落在时间戳合法域(|t| ≤ 8.64e15 ms)之外时不供窗位;`parkRow` 事实缺席或不是布尔 ⇒ 按停驻行处置(留卡),只有明确 `parkRow: false` 才可能撤。
158
+ - **「错配之后历史已被服务商接受」会话级事实位:结果帧超集键 `_sema_tool_history_accepted: true`、读口 `readToolHistoryAcceptedKey(frame)` 与常量 `SEMA_TOOL_HISTORY_ACCEPTED_KEY`**(CC-357;**§129 XC-2**;根入口运行期导出 +2):会话历史 tool_use 错配之后,**第一只被服务商接受的终局**(完成,或停驻 —— 结果帧 `error_during_execution` 的 suspended / needs_review)的结果帧带本键;429 / 401 / 网络错误 / 被挡 / 结局不明不算接受、也不清位。与连续计数 `consecutive` 同一次记账、同一份判据(回放终局 / 重读认得的 run / 老流晚到的终局 / 无从归属的会话 ⇒ 不报不动),`consecutive` 读数一字不变。终端出路店据此清「预选坏轮」,删自家按终局种类清店的规则。键缺席 ≠ 历史没被接受。 会话键无从归属(回落的宿主 id、引擎从没回显过)的被接受终局不开口,位原样留着,之后一只可归属的被接受终局仍报(与连续计数「无从归属只会让别的段少报」同向)。
159
+ - **宿主引擎代际读口与读它的判定:`engineGenerationReadingOf` / `engineGenerationOfPort` / `engineGenerationEnded` / `approvalFrameGenerationVerdict` / `endedGenerationSettleStep` / `unreachableForSettle` / `awaitNextEngineInstalled`,常量 `REATTACH_RUN_STATES` / `REATTACH_AWAIT_NEXT_ENGINE_MS` / `AWAIT_ENGINE_INSTALL_POLL_MS`,型 `EngineGenerationPort` 等**(CC-362 ① ②;**§129 XC-3**;根入口运行期导出 +10,公面型 +12):交互重连件与审批帧流共用的「这一跑 / 这条帧流所属的那一代还在不在」只有一种读法 —— 代号读不出 ⇒ 不做代际判定(不折成数,也不往「已换代」倒);代号不同或新凭证已采纳 ⇒ 已结束;审批帧流的兜底判词 `'drop'` / `'admit'` 与它是同一个判据;那一代结束之后「问引擎一句 run 行」的收尾决策表(等下一只引擎 / 刷一次凭证 / 凭证被拒 / 交出终局 / park / 引擎停了)与等下一只引擎装上的有界轮询(钟与间隔可注入)。 判定入口自己也认外来体:`known: true` 而 `generation` 缺席 / 非有限数的伪「已知」读数同读不出(不判换代、不丢帧);`awaitNextEngineInstalled` 的有界另有一道不押在时钟读数上的拍数封顶(注入时钟静止 / 倒流也在预算量级内收口),谓词里同步触发取消当拍收口、不再读下一只谓词;时钟读数落在时间戳合法域之外同非有限数。
160
+ - **终止意图台账 `createTerminationIntentLedger`、被叫停 run 的有界等终态 `awaitInterruptedRunSettle`、判决句 `interruptedRunSettleRow`,自愈依赖面新可选键 `wasRecentlyTerminatedByUs`,自愈结局新增 `interrupted-settled` / `interrupted-still-finishing`**(CC-415;**§129 XC-4**;根入口运行期导出 +7,公面型 +8;🔴 `SelfHealOutcome` 联合 +2 员):用户 Esc 中断一个 turn 后立刻发下一条消息会撞 409「会话被占」,宿主此前弹三选卡问他要不要取消 —— 一句对他自己动作的失忆。台账记「这条 run 是我们刚叫停的」(时钟注入,窗 60 s 过期即忘;出身词开集,弱词 `esc-abort` 不盖强词、事实位自带时间戳;回滚 / 复位按版本比较),409 分诊在**最前面**问它,命中则有界轮询 `runs.get` 等终态:读回终态词 ⇒ `interrupted-settled`(授权宿主重投原消息,处置档 `resending`),预算打光仍在跑 ⇒ `interrupted-still-finishing`(零卡零重投,行说「没发出去 + 稍等再发」),`parked` / 读不出 / 用户中止 ⇒ 交回既有分诊。真定时器 + 截止信号进请求层(挂死的读口也在预算内收口),中止优先。新增两句中英措辞。 被明确拒绝的叫停不论拒绝到达的先后都不留证据(两发交错且都被拒 ⇒ 行清空;账内按版本记每笔写之前那一行,复位时连同版本一起复位);`restoreIf` 的快照参数是外来体,取值器抛 / 形不对 ⇒ 不抛,按复位到空处置;时钟往回走(行的时刻在将来)按过期处置;`wasRecentlyTerminatedByUs` 取值器抛时自愈短路当没命中。 系统注入形的拒收行随之多一句(「被叫停的较早回复仍在收尾 ⇒ 没发送、没重试、稍等再试」,目录键 `session.selfHeal.injected.interruptedFinishing`,消息目录 886 → 887 键两语);`interrupted-settled` 的注入形沿用「正在重发」那一句。
161
+ - **usage-limit(429 `quota_exhausted`)自动续航纯状态机 `autoResumeTransition` 与文案 / 选项投影,及 429 配额读口 / 人话:`initialAutoResumeState` / `autoResumeAtMs` / `autoResumeArmedRow` / `autoResumeNoticeRow` / `rateLimitOptionRows` / `autoResumeCopy` / `quotaExhaustedFromError` / `quotaExhaustedContent` / `quotaResetInstantText`,常量 `AUTO_RESUME_*`**(CC-416;**§129 XC-5**;根入口运行期导出 +14,公面型 +10):自终端逐字上收,终端 156 条向量原样进门,语义不改。`(state, event, nowMs) → { state, actions }`,零读钟 / 零定时器 / 零 IO;🔴 重投授权边界:`resubmit` 只可能由 `armed` + 到点 `tick` 产生,进 `armed` 只有 `menu-choice{auto-resume}` 一条路,熔断只认自动续跑打出去的那一拍。本版补的闭合性:时钟读数不是有限数时触顶 / 授权 / 到点原样不动;`detail` 非对象按空、`prompt` 非串按「重放不了」、表外选项臂不武装、非对象事件不动。配额读口与人话从补充句链挪进 `wireRefusalCopy`(与用量窗读口同一个模块读;人话逐字不变,读数多一位 `retryAfterSec`)。新增 19 句中英措辞(`notice.usageLimit.autoResume.*`)。 事件是外来体:每个位只读一次(取值器换答案也只有一个答案),取值器抛 ⇒ 原样不动;时钟读数落在时间戳合法域(|t| ≤ 8.64e15 ms)之外同非有限数;初态 / 每一步 / 状态 / 动作表整体冻结。
162
+ - **窗口式重连机的纯判定:`reattachWindowOpen` / `reattachWindowStep` / `reattachBackoffMs`,「引擎不认识这个 run」的连续确认,毒帧两振 `poisonFrameInitial` / `poisonFrameStep` / `malformedFrameErrorOf`,常量 `REATTACH_WINDOW_MS` 等**(CC-808,并入 CC-362 的毒帧项;**§129 XC-7**;根入口运行期导出 +12,公面型 +10):**按墙钟**的重连预算(与 `runReattachPolicy` 的按次预算并存):300 s 窗 · 1 s → 30 s 封顶的退避梯(`Retry-After` 取大)· 窗尽 ⇒ 停自动重试并披露「结局未知」;「引擎不认识这个 run」三条合取(判活连续三发 404 ∧ 自断连已过 10 s ∧ durable 尾也回 404;任何非 404 / 尾吐出一帧即清零)。毒帧:帧体解析失败 ⇒ 当流断、从最后一帧好帧的锚续,**同一位置**第二次仍坏才响亮报错(带锚与原文),永不悄悄跳帧。时钟由宿主交,与终端循环转写逐拍对拍(1500 条脚本)。 时钟读数落在时间戳合法域之外同非有限数(开窗得空窗、已开的窗遇之窗尽);事件 / 毒帧账上的取值器抛 ⇒ 账原样不动(不丢好帧锚与首振)。
163
+ - **合成行行种机读位 `_sema_row_kind`、读法三口与提交失败分类契约**(CC-286 (a) ① ② ③ ⑪;**§129 XE-1**):合成终局行(assistant 行,带行类旗 `_sema_api_error_message`)此前靠正文前缀认「这是哪一种」——铸点手里本来有这个身份,却压扁成一段前缀散文,下游各自再按前缀 parse 回来(渲染面四项、压缩面三项、信封归约、证据让位各抄一份析取,项数不同 = 活分叉;模型正文逐字以 `Run stopped:` 起头就能冒充)。现在**铸点盖位**:`runStream` 的合成终局行恒带顶层超集键 `_sema_row_kind`(落在 API 错误三机读位之后、重放位 / 归属位之前;已有键的相互次序不动),闭集六词 `api_error` / `governance_stop` / `model_output_error` / `outcome_unknown` / `session_busy` / `engine_link`,冻结表 `SEMA_ROW_KINDS` 逐员带属主(本包出的六员属 `client-core`;`engine_link` 是引擎连接状态说明行,本包终局臂不铸,词归本包、行文由宿主按包里既有的内容口〔如 `engineAliveIdleContent` / `activeRunSelfHealRow`〕铸)、键名常量 `SEMA_ROW_KIND_KEY`、型 `SemaRowKind`。身份就是终局臂已判出的那个:占锁 ⇒ `session_busy`、治理(`limits.*` 族 / `blocked`)⇒ `governance_stop`、模型输出坏了 ⇒ `model_output_error`、其余终局错误(含 `failed` 事件帧)⇒ `api_error`、「结局不知道」⇒ `outcome_unknown`。同行另有 CC 同名键 `error`(`SDKAssistantMessageError`):**只在 `api_error` 行、且服务商状态码落在本包唯一那张状态分档表里时铸**(400 / 413 / 422 ⇒ `invalid_request`、401 / 403 ⇒ `authentication_failed`、404 ⇒ `model_not_found`、429 ⇒ `rate_limit`、5xx〔含 529〕⇒ `server_error`;依据 CC 2.1.296 assistant 错误行的失败分类函数,**529 在 assistant 行上是 `server_error`,`overloaded` 是另一只分类器的词**);表外状态 / 没有状态 ⇒ 整键缺席(映射不确定不铸,不折 `unknown`);CC 同名键语义不改。`adapt()` 重建合成行时**三键同搬**(行种位 / `_sema_api_error_code` / `error`,经读口过滤:表外行种词、表外 `error` 词整键丢;没有行类旗的行不接力),键名进 `TRANSCRIPT_ROW_SIDECAR_KEYS`。读口三只(按名导出,全部只读**自有数据位**、取值器不执行、永不抛):`rowKindOf(row, { hostKinds? })`(闭集窄读、精确字节、表外 ⇒ `undefined`,**绝不回落正文**;宿主本地员经 `hostKinds` 入参扩)· `isSyntheticRow(row)`(行种位在场 ∨ 本包旗严格 `true` ∨ CC 名旗 `isApiErrorMessage` 严格 `true`)· `inferLegacyRowKind(row, { requireFlag? })`(**全仓唯一一份按正文认行种的规则**,只许转录读口 / 入口端口调用:旧转录里没有位的行按行首前缀并集一次推断,**只在正向命中时给位**——CC 原生哨兵行〔上下文超限 / 登录失败 / 超时〕不给位;`requireFlag` 缺省 `true`〔模型散文永不进推断〕,转录读口传 `false` 让无旗的旧行也推断;已有位的行不重推;`engine_link` 没有正文规则,不推断)。提交失败分类契约 `classifySubmitFailure(err)` ⇒ `{ kind: 'api_error' | 'model_output_error', errorCode?, ccError? }`:抛出物(不是包铸的终局行)的三处错误面从同一个结果投影;状态 / 引擎码全读自有数据位,`ccError` 与终局行的 `error` 读**同一张**状态分档表(一张表两个读口);状态 404 且带引擎码(`not_found.*` 一族)⇒ 不铸 `model_not_found`(表里那一档说的是服务商找不到模型)。**缺席语义**:行上没有行种位 = 不知道(老转录 / 模型行 / CC 原生行),不是「普通行」;`error` 缺席 = 状态说不出,不是「没出错」。**零动作**:不读新键的宿主逐字节照旧(新键落在 API 错误三机读位之后、重放位 / 归属位之前,已有键的相互次序与「重放位 / 归属位居末」不动)。同批把 `adapt()` 里「这是一条包铸的合成终局行」的判法六处内联比较收成一处读口(自有数据位 ∧ 字面 `true`;旗只在原型链上 / 取值器形的帧不再被当作合成行,不接力行专属键、不再洗正文、不重铸旗)。
164
+ - **`TASK_NOTIFICATION_TAG` 上根入口**(CC-286 (b) ⑥;**§129 XE-1**):任务通知外壳的标签词(`task-notification`)此前包内未导出、壳另有一份字面;现在包里这一份上根入口,`renderTaskNotificationXml` 与它同源。
165
+ - **排队输入的投递计划:`batchCompatible` · `planQueuedDelivery` · `humanTurnCapsOf` · `humanTextForKeywordScan`**(CC-297 余项 ④ ⑤ ⑥ ⑫;**§129 XE-2**):排队输入子系统有三个读点回答「这一拍队里这几条该怎么办」——回合中吸收腿(能不能插话)、输入框提示、轮末排空口(合不合批),三处各读各的,于是提示承诺的动作是空操作、合批让引擎只筛一次钩子。现在三个读点读同一份计划(纯函数、不读全局、返回值全新铸、坏条目 ⇒ 该条留队不抛)。`batchCompatible(head, follower, plan)`:轮末排空归批,**只判跟随者能不能加入队头这一批**(闭合失败方向):没有钩子计划 ⇒ 否;`UserPromptSubmit` 执行者(`userPromptSubmitExecutorOf` 按**同一份**计划读)为 `engine` / `unknown` ⇒ 否(引擎对整串 objective 只筛一次钩子);跟随者带 `@` 提及 / 带预筛结果或预筛未完 ⇒ 否;两条各自的执行归属都在场而不同 ⇒ 否;种类 / 注入类 / 藏否 / 意图键任一不同 ⇒ 否。`planQueuedDelivery(entries, run, caps, policy?)`:`steerNow`(现在就以插话发的条,载荷就是对同一条目 `encodeHumanTurn(…, 'steer')` 的答案、份额全满才发)+ `held`(留队的条,原因闭集六词 `barrier` / `share_incomplete` / `not_steerable` / `in_flight` / `attempted` / `no_run`)+ `canSendNow`(= `steerNow` 非空,提示与吸收腿读同一个答案);**保序屏障**(一条留队 ⇒ 其后全 `barrier`)、宿主「暂缓」标记被跳过(不进不挡)、**队头 `!` 行默认不挡后面的正文**(`policy.overtakeBashHead` 缺省 `true`,关闭则是屏障)、带 `@` 的条 `share_incomplete`(过渡期 `@` 文件不走插话,等轮末随附件发)。`humanTurnCapsOf({ model?, baseUrl?, catalog? })`:编码用的引擎事实,看图位三态读在线模型目录、请求层附件席位读数读能力读器族(未观测 ⇒ 编码器闸关);**不预铸尚未到货的位**(插话带图 / 每次调用带 `mode: 'all'`)。`humanTextForKeywordScan(items)`:供关键词扫描的人类正文(只取用户本人正文,不含信封 / 回显 / 种子)。型 `QueueEntry` / `QueueEntryKind` / `QueueShellBlock` / `QueuedHoldReason` / `QueuedDeliveryPlan`。 同批(⑧):`selfHealSteerEligible(items, caps)` —— 409 自愈臂的插话选项**呈不呈**的唯一读口(这一次被拒的提交恰好一条 ∧ 对这一条编 steer 载体 `ok` 且份额全满 ∧ 无 `@` 件才返回 `true`;批里不止一条 / 带图 / 上传件 / 缺失项 / 编码拒收 ⇒ `false`),宿主据此决定给不给 `attemptActiveRunSelfHeal` 的 `deniedMessage`(缺席 ⇒ 不渲插话选项,既有律);与吸收计划同律、同答。**读不懂不当缺席**:归批口对跟随者的每一位、吸收计划对条目的暂缓标记 / 插话状态 / 壳拦因 / 种类 / 本体 / 媒体数组位,凡读不出(取值器或描述符陷阱抛、撤销式代理)或是表外词 / 坏形 ⇒ 归批口答 `false`、吸收计划让这一条留队 `not_steerable` 并建屏障,永不抛。
166
+ - **人类提交编码结果的用户面句子与读数**(CC-409;**§129 XE-3**):`humanTurnRefusalSentence(answer, lang?)`(拒交句:`empty` / `malformed_*` / `duplicate_uuid` / `rider_collides_primary` / `oversize` 各一句,`steer_hold` 四因各一句并说明「留队、本轮结束后作为新消息发出」)· `humanTurnDegradedSentence(degraded, lang?, { modelName? })`(降级句:八种降级原因 × 单复数,按原因聚合、按首次出现序换行接起,看图位为否一类可点名被判的模型)· `printImageVisionSentence(vision, lang?, { modelName? })`(`-p` 看图位两句:为否 ⇒ 图没有发;说不清 ⇒ 图照发);句子全进消息目录(`session.humanTurn.*`,英 / 中)。`imageVisionReadingOf(model?, catalog?)`:`imageVisionOf` 的读数形,在三态之外交**被判那一行的模型名**(端此前只能自己再选一遍缺省行,与这里判的可能不是同一行)。`otherBodyBytesOf(request)`:`encodeHumanTurn` 入参 `otherBodyBytes` 的量法上收(除 `objective` / `images` / `attachmentIds` / `userAttachments` 四键外其余自有键的 `JSON.stringify` UTF-8 字节数,空对象 = 2;量不出 ⇒ `undefined`,不是 0;自有 `__proto__` 键照量,撤销式代理 ⇒ `undefined`);**射程**写明:量的是交进来的那一份对象,宿主 live 兜底层之后的增量要算进早判就把兜底之后的对象交进来,末道装配口对实际序列化体的终判不变。
167
+ - **投递事实账本加尝试级记录与三态读口**(CC-471 / CC-297 ⑦;**§129 XE-4**):账本此前 `a`(attempted)按 uuid 去重、`knownUndelivered = a ∧ ¬d`,把**在飞未到首帧**、**出站前被壳拒交**、**引擎明确拒收**压成同一格「确知没交出去」——前者其实说不清,重发会让正文到两次。现在一条消息可有多次尝试,每次有自己的尝试号:`attempted(批, { attemptId })` 开一次尝试(记 `{ u, s: 'a', n }`,同 uuid 每次尝试各一条)、两只 delivered 写口收可选 `{ attemptId }` 同时结算、新写口 `notDelivered(批, { attemptId, why })`(`why` 闭集 `pre_send` / `engine_rejected` / `encoder_refused`;记 `{ u, s: 'r', n, why }`,只结算这一发确实开着的尝试)。三态读口 `deliveryStateOf(uuid)` / `deliveryStateOfMessage(message)`:`delivered`(任一次送达,全部或部分份额)/ `refused`(至少一次尝试,且**每一次都确定没交出去**)/ `unknown`(其余:有未结算的尝试、只有 legacy 的 `a`、legacy 的 `d`、没走过提交路径)。进程内与读回走**同一只归约器**(写口落账与 `fromRecords` 都经它),与记录次序无关(结算行先于开始行到达按已结算收;送达压过拒收;两次尝试一发在飞一发被拒 ⇒ `unknown`)。**结算记录写失败按未结算读**:宿主没能把 `d` / `r` 行追加进旁车 ⇒ 读回只看到开始行 ⇒ `unknown`。同批:`attemptedItems(groups, opts?)` 按条目分组记一批(一组 = 一条的主 uuid + 随行 / 附件 uuid)、`batchGroupsOf(uuid)` 读回分组;型 `NotDeliveredWhy` / `DeliveryState`。旧读者对 `s: 'r'` 行当坏行跳过,对带 `n` 的 `a` / `d` 行剥键读成无 `n` 的行。**两条与次序无关的细则**:无来源位的老 `d`(送过、说不清份额)后面跟一条明确拒收仍读 `unknown`(不读 `refused`,重发会让正文到两次);结算行先于开始行到达时开始行也照记(`isAttempted` 与日志不因读回次序而异),尝试不重开。
168
+ - **提交身份 `{ surface, origin, tools }` 与请求车道的唯一派生 `requestLaneOf`;车道表来源轴与缺席成因 `off_origin`**(CC-476;**§129 XE-5**;🔴 型面 BREAKING 一处):「壳发起且带工具」的提交该走哪条车道,设计答复定为**不造第四车道**——装配入参收整只提交身份,车道是它的派生。公面:冻结闭集 `SUBMISSION_SURFACES`(`interactive` / `print`)· `SUBMISSION_ORIGINS`(`user` 用户所写 / `injected` 客户端注入件 / `shell` 客户端自发的旁路提交)· `SUBMISSION_TOOLS`(`full` / `none`),型 `SubmissionIdentity` / `SubmissionSurface` / `SubmissionOrigin` / `SubmissionTools`;`requestLaneOf(identity)`(**包内唯一**的车道派生:`print` 面 ⇒ `'print'`;壳出身 ∧ 零工具 ⇒ `'utility'`;其余含壳出身 ∧ 全工具 ⇒ `'interactive'`;坏形身份 ⇒ `undefined`,**不猜交互车道**)· `submissionOriginOf(identity)`(出身读口)· `submissionIdentityOf({ surface, kind, tools })`(由提交词派生出身,入参型 `SubmissionIdentityInput`)。三只装配口 `assembleTaskRequest` / `buildTaskRequest` / `taskRequestSeatOf` 的**第二参收 `RequestLane | SubmissionIdentity`**:对象形 = 提交身份(一次快照派生车道与出身,此后整次装配只用这一份,入参取值器 / 重入装配改不动它;坏形 ⇒ 响亮拒:`TypeError` 只报形状不回显值,装配口另带拒装身份 `input_malformed`,座位读数口同拒);**字符串形 = 旧入参位,来源轴不起作用,与 0.100.x 逐字节同**(并存一个 minor,退役登记 RL-223)。车道表行 `RequestFieldSpec` 多两个可选位 `origins?`(只在这些出身上有座;缺省 = 全来源)与 `whyOriginLimited?`(写了 `origins` 必配理由,装配口与座位读数口每次过自洽断言:非空、闭集内、不含全集、含 `user`、排除壳出身的行不占 `utility` 座);**四行**写了 `origins: ['user']`(`images` / `attachmentIds` / `userAttachments` / `userInvokedSkills`——只属于「用户本人写的内容」的位,依据是这四行的原有理由句;没有代码证据的位不臆造)。缺席成因闭集 `TASK_REQUEST_OMISSION_CAUSES` 在 `off_lane` 后加 `off_origin`(四 → 五;「身份形装配下,这一发的出身没有这把键的座」,与 `off_lane` 同形同句模板,三处句表〔接入方句 / 终端用户句 / 回执词〕各补一句、逐字互异):身份形装配时,注入件 / 壳旁路提交带来的这四把键被丢,装配回执记一行 `off_origin`。**编译红必改**:对 `TaskRequestOmissionCause` 写穷尽 `switch` / `Record` 的宿主少一词 ⇒ 编译红一次。钩子计划:`HooksWirePlanOptions` 多可选位 `identity?`,「这一发是不是用户写的」先读身份(`origin === 'user'`)、再读旧位 `promptAuthoredByUser`(退成派生值,并存一个 minor,退役登记 RL-222);两者同在而冲突 ⇒ **以身份为准** + debug 一行;身份坏形 ⇒ 当缺席 + debug 一行(回到旧位的既有读法,含 CC-287 的缺省「用户所写」);只缺身份 ⇒ 与 0.100.x 逐字节同。
169
+ - **提交前出身读口 `submissionProvenanceOf(kind)`、提交词闭集 `SUBMISSION_KINDS` 与「是不是用户写的」三形取值表**(CC-531 ① ②;**§129 XE-6**):宿主各自判「这一发是不是用户写的」= 三端三份判定,且判错的代价在钩子与自愈两条线上都真。现在宿主只报**提交词**(`SUBMISSION_KINDS`:`keyboard` 人敲〔含排队后再发〕/ `wake` 后台任务通知唤醒 / `schedule` 排程任务 / `plan_review_outcome` 计划复核结局注入件 / `shell_side` 客户端自发旁路提交),出身由一张表答:`submissionProvenanceOf(kind)` ⇒ 冻结单例 `{ kind, origin, authoredByUser, source?, selfHealOrigin? }`——`authoredByUser` 由 `origin === 'user'` **派生**(不另存);`source` = 引擎 `human_input` 帧上对应的来源词,**只列有证据的词**(`keyboard` ⇒ `objective`、`wake` / `schedule` ⇒ `resume_message`;没有证据的类别键缺席,开集不预铸);`selfHealOrigin` = 被 409 拒收时自愈臂要的被拒提交出身(`user` 才问人〔三选卡〕、`injected` 不问人直接插话;壳旁路不经自愈臂 ⇒ 键缺席)——**两个不同的问题两列**:唤醒 / 排程的正文算用户所写(用户钩子照筛)而被拒时屏幕前没人可问(按注入件处置),同一张表答,宿主不再各传一个词。**`promptAuthoredByUser` 成文三形取值表**(与 `authoredByUser` 列同一回事):`keyboard` / `wake` / `schedule` ⇒ 用户所写(**唤醒与排程要交 true 才过 `UserPromptSubmit`**,按 CC 2.1.291 形);`plan_review_outcome` / `shell_side` ⇒ 不是。**缺席语义**:读口回 `undefined` = 读不出(未知提交词 / 坏形 / 取值器 / 代理陷阱 / 原型链名),**不是**「用户所写」也不是任何别的出身——本模块从不回落;出身必须**随提交携带**(宿主铸这一发的那一刻就定提交词;端口 × 通道两轴映不出出身)。型 `SubmissionKind` / `SubmissionProvenance`。
170
+ - **后台 shell 通知与引擎同形:`renderTaskNotificationXml` 逐字节对齐引擎渲染器、`bgshell_register` 带 `toolUseId` / `outputFile`、输出读面带 `exitCode`、通知的结构化事实 `_sema_task_notification`**(CC-531 ③ + CC-286 (b) ⑤ ⑩ + (c) ⑦;**§129 XE-6 / XE-1**;🔁 行为变 + 公面新增):此前壳补的通知正文与引擎喂给模型的那份不同形(缺 `<task-type>`、标签次序不同、多渲几个引擎不渲的标签)。`renderTaskNotificationXml` 现在是引擎渲染器(`core/task-notification.js`)的**逐字节镜像**(对拍门对引擎包根真函数逐字节比,含各可选位缺席 / 在场的全组合、转义、外部来源帧的开标签、`result` / `recent-steps` 块):出 `<task-type>`、次序同引擎;**引擎不渲的四个事实 —— `stopped-by` / `partial` / `exit-code` / `output-lines` —— 不再进正文**,改放结构化事实(**不是丢**:宿主要渲这些行,读结构化事实);外部来源帧的开标签写法随引擎(`type="external"` 在场即写、`from-unverified="true"`、来源截 120 码点),值里的通知标签先拆火再转义,空串值渲空标签。结构化事实 `_sema_task_notification`(冻结的 `TaskNotificationFields` 副本;超集键)随三处出口:包铸的通知**队列项**(`NotificationQueuePort.enqueuePendingNotification` 的 `command` 多可选位;新口 `taskNotificationQueueCommand(fields)` 一处构造队列命令,宿主自补通知入队也走它)· 转录行 · `workflow_notification_enqueue` chrome 臂(新位 `notification`);读口 `taskNotificationOf(carrier)`(自有数据位、坏形 ⇒ `undefined`、永不抛)。`dropQueuedNotificationsForRun(taskId)` **先读结构化 taskId**(件上有结构化事实就只认它;坏形不删——删错件丢一条通知,不删只多喂一遍);没有结构化位的旧件才回落读正文 `<task-id>`(过渡臂,退役登记 RL-224)。`isTaskNotificationObjective(objective, kind?)` / `taskNotificationDeliverySupplement(objective, kind?, notification?)`:第二参提交词(`kind === 'wake'` ⇒ 通知轮,别的词 ⇒ 不是,**不嗅正文**;不传 ⇒ 旧读法,RL-225)、第三参结构化事实(状态只读它;不传 ⇒ 从正文 `<status>` 读,RL-226)。`bgshell_register` chrome 臂的登记多可选位 `toolUseId`(开卡的工具调用 id,在场才带)与 `outputFile`(读自后台脱离结果的结构化 `output_file`;**引擎的轮询应答里没有 `output_file`**,所以不在输出读面上而在登记上);输出读面 `EngineTaskOutputResult` 多可选位 `exitCode`(读自 `output.details.exitCode`,非有限整数 ⇒ 缺席,不折 0)。结果帧多超集键 `_sema_error_code_in_text`(present-iff:`errors[0]` 正文已含引擎码〔恰为码 / 以「码 + 换行」起头 / 含恰好的 ` (码)` 串〕,**一条规则在信封铸点**;壳据此删掉按 ` (码)` 后缀判「码说过没有」的匹配),读口 `resultErrorCodeInTextOf(frame)`。公面新增 `taskNotificationOf` / `taskNotificationQueueCommand` / `resultErrorCodeInTextOf` + 型 `TaskNotificationQueueCommand`。**零动作**:不读新位的宿主只多一份结构化事实可用。🔴 **行为变**:正文里不再有上述四个事实的标签 —— 终端的通知卡若从转录正文读 `<partial>` / `<exit-code>` / `<stopped-by>` / `<output-lines>`,升级后这些行消失,直到改读 `taskNotificationOf(row)`(见 129y ②)。**未做**:CC-286 (b)(c) ⑧(副句改行上单独座位)—— 副句是**宿主**铸在宿主自己的错误行上的(包里只出副句文案),包里没有那一行的铸点,座位待宿主给它独立字段之后 `splitApiErrorSupplement` 才能退;⑨(包内铸点对引擎原句的判改按码)—— 引擎对这一族**没有稳定的 `code`**(仍是 `provider.error`),但终局因由里有稳定的 `terminal.detail.kind === 'model_output_invalid'`(包的终局读器已读),建议 `isModelOutputErrorText` 的原句锚改成先按 `detail.kind` 判、锚只留给老服务端(需另立退役行,本版不改 —— 见 129 包侧缺口)。
171
+ - **`KEY_SLOT_PREFIX` 上根入口(CC-871;§129 XF-1)**:模型密钥槽环境变量的前缀常量 `'SEMA_MODEL_KEY_'`(此前是包内私有常量,端各自抄一份字面量)现在是根入口导出,与包里拼槽名 / 认槽名的是同一只。公面运行期导出 +1;值与形不变。
172
+ - **`readProviderRejectionResendKey(v)` 上根入口(CC-411 (a);§129 XF-2)**:合成终局行上 `_sema_provider_rejection_resend`(『改了重发』键)的读口:只认本包判定口会铸的读数(句子与档名经同一只铸句件重铸比对,逐字相等才交回新对象),别的一切(非对象 / 档与句不配 / 老行措辞已改 / 读就抛)⇒ `undefined`,永不抛。此前只在包内给重建合成行用,端要读转录里的这一键只能自抄判法。
173
+ - **`rewindConversationOnlyNotice(option, action, lang?, reading?)`(CC-411 (b);§129 XF-3)**:『合并回退』(对话 + 代码)选项被引擎能力读数降成只回退对话时给用户的那一句(英 / 中;分两形:引擎明说『只回退代码』也不能 ⇒ 不指那条路;否则指向『Restore code』)。只有选项恰是请求恢复文件的那一档 ∧ 动作是带 spec 的 `arm` ∧ spec 里没有字面 `restoreFiles: true` 才出句,别的一律 `undefined`(读不出不断言只回退了对话)。此前这句由终端壳自铸。
174
+ - **`hookMatcherUnjudgedWhy(reason, lang?)`(CC-411 (c);§129 XF-4)**:钩子 matcher『没核』理由的人话子句(六句:事件不判 matcher / 不是串 / 过长 / 用了本检查不判的正则特性 / 正则过费 / 读不出)。`over_budget` 一句改说『本检查没有对它求值』(此前壳里的措辞暗示求过值)。表外词落『读不出』一句,不回显。
175
+ - **`wiringFleetDoctorDetail(view, lang?)`(CC-411 (d);§129 XF-5)**:`wiring_manifest` 的 `fleet` 段读数 ⇒ doctor 一句(『后台子代转录』档位:`full` 承诺句柄跨引擎重启保留;`rows` / `none` 不承诺;表外档位说『未知档位、按不承诺读』并经转义封 64 回显)。读不出 ⇒ `null`(一个字都不渲)。
176
+ - **`readEngineHealthFacts(health)` 与型 `EngineHealthFacts` / `EngineHealthCenterFacts` / `EngineHealthAuthFacts` / `EngineHealthDrainingFacts`(CC-551;§129 XF-9)**:引擎 `/health` 回体里四件自报事实的窄读口 —— `center`(接哪个中心)· `auth`(认哪几种身份来源;`kinds` 开集)· `operator`(有无运维方)· `draining`(引擎说自己在排空;只读 `engineSignal.draining` 对象形,epoch 毫秒非负安全整数)。四件各自独立、逐位缺席;返回对象与每层冻结、每次新铸。**不读**扁平方言(顶层布尔 `draining` / `drainingSince`):设置契约把它们标成弃用(引擎态只在信号里读)。与契约包 `readEngineSignal` 的两处差别见 KL-841。
177
+ - **后台子代委派 prompt 的『拿不到』缺席因(CC-554;§129 XF-10)**:新常量 `DELEGATED_PROMPT_ABSENCE_CAUSES`(冻结五词:`not_owned_after_restart` / `not_in_store` / `forbidden` / `prompt_absent` / `unknown`)· 句口 `delegatedPromptAbsenceSentence(cause, lang?)`(五词五句,不说『没有 prompt』除了 `prompt_absent` —— 只有它看过正文)· 取件结局多一可选位 `absence = { cause, text }`(`skipped` / `unreadable` / `absent` 三态不变,成因按取件抛出的状态映射:无锚 ⇒ `not_owned_after_restart`;404 ⇒ `not_in_store`;401 / 403 ⇒ `forbidden`;读到却挑不出 ⇒ `prompt_absent`,定论后重复调用 `skipped` 带同一缺席因;别的 / 读不出 ⇒ `unknown`)。在飞的 `skipped` 不带缺席因(那不是缺席)。
178
+ - **`terminalPartsOfObserved(observed)` 与 `RunStreamHandle.observedTerminalParts()`(CC-456;§129 XF-11)**:中止一条 run 时,按本流内已观测的状态同步投影终帧部件(`permission_denials` / `_sema_permission_denials` / `_sema_permission_denials_absent` / `_sema_zero_output_denied` + `_sema_usage_lower_bound`),铸法与终局帧失败臂共用同一只(门 OP 段逐键对拍)。没有本流快照 ⇒ 只有 `permission_denials: []` 与判别位(不渲『零拒绝』);永不抛。`-p` 壳的信号帧(SIGINT / 开机窗)据此带上『截至中止已见』的拒绝。
179
+ - **压缩 hook 执行者状态转移口(CC-500;§129 XF-13)**:新 `compactHookTransition({ latch, leg })`(`latch` ∈ `COMPACT_LATCH_STATES` = `armed` / `fired` / `none`;`leg` ∈ `COMPACT_SUMMARY_LEGS` = `engine` / `local_fallback` / `local_fallback_unavailable` / `none`)⇒ 恰一个执行者 + 要不要撤销引擎侧那一跑 + 披露词(十二格矩阵);披露句 `compactHookDisclosureSentence(disclosure, lang?)`;`hooksWirePlan` 多可选入参 `compactionOnShell`(为 `true` 时压缩两事件的设置来源 hook 判给本端、请求体不带),计划理由词多一员 `compaction_local_fallback`(`PLUGIN_HOOK_REASONS` 22 → 23)。口形与命名待终端对口确认(KL-844)。
180
+ - **会话规则句按部署事实选句(CC-463 P2-a;§129 XF-14)**:新型 `SessionPolicyDeploymentFacts`(`operator?: 'present' | 'absent'` · `identityAttach?: 'available' | 'unavailable'`,取自 `readEngineHealthFacts`)作为 `sessionPolicyTightenNotice`(第四参)/ `sessionPolicyReadNotice`(第二参)/ `sessionPolicyRemovalNotice`(第二参)的**可选**入参:`operator: 'absent'` ⇒ 『needs an operator』一族句子(读 / 写规则库故障、放宽被拒)改成不指向不存在的人;`identityAttach: 'unavailable'` ⇒ 无属主那句不再劝人『Attach an identity』。缺席 / 正向值 / 坏形 ⇒ 原句逐字节同(缺席 = 说不出,不据缺席去掉出路)。
181
+ - **`settings.hooks` 帽拒转换件 `fieldLimitRefusalOfSettingsHooks(族读数)`(CC-463 P2-b;§129 XF-14)**:`settings.hooks` 的组数 / 命令字符帽拒把帽位放在 `detail` 里,由族读口 `settingsHooksRefusalFromError` 读;泛化帽读口 `fieldLimitRefusalFromError` 对这一形**仍不认领**(两族各一只读口,不串格,既有门 RX4 / AS9d 原样)。本版新增的是一只转换件:族读数 → 帽读数(`field` 带被拒那一处的坐标,形如 `settings.hooks.PreToolUse[0]…`,另带量纲 + 数),宿主把它交给 `fieldLimitRefusalContent` 就得到与 `mcpServers` 帽同一句人话(点名被拒的那一处、超了几条 / 几个字符,没截没丢,零机器码)。读口仍是两只,句子单源;不是帽词的族读数(matcher 别名拒 / 条目类型拒)/ 缺席 / 坏形 ⇒ `null`。补句链(`turnFailurePresentation` / `decideFailureNote`)本版**不变**,`settings.hooks` 帽拒在那里仍不出帽句 —— 要出这一句的宿主自行串这两只口(见接入文档 §129)。
182
+ - **错误补充句角色声明 `errorSupplementRoleOf(reader)` 与型 `ErrorSupplementRole` / `ErrorSupplementReader`(CC-463 P2-e;§129 XF-14)**:补在机器码行后的人话补句是『自足(replacement:自己说清发生了什么 / 什么没被动 / 能做什么,端可把机器码首行收进详情视图)』还是『只补一件事或依赖机器行(supplement)』,由句子属主(本包)声明,端不按句长猜。已声明二十只读口(十六 replacement + 四 supplement);按函数身份认(不是名字串);没声明的 / 非函数值 ⇒ `'supplement'`(机器行照旧在前),不抛。
183
+ - **斜杠命令门判官与命令桶表(CC-789;§129 XF-15)**:`judgeSlashCommand(命令参照, 能力位快照)` ⇒ 可用 / 降级(可见,宿主渲染缺口)/ 隐藏(仍可按名调用,不进 /help 与补全)/ 拒,理由七词闭集(`cc-availability` / `cc-isEnabled` / `config-deny` / `capability-absent` / `capability-degraded` / `hidden-from-help` / `allowed`);`SLASH_COMMAND_BUCKETS`(三桶 31 / 29 / 28 个命令名)· `slashCommandBucketOf` · `slashCommandOverrideOf`(69 条逐命令覆盖)· `SLASH_COMMAND_ROSTER_PIN`(`'CC 2.1.187'`)。能力位读法开集且闭合失败(快照缺席 / 位缺席 / 位为假都不当在场);宿主自己的两道门只收两个布尔(缺席 = 没判)。名册随判官一并从终端上收,三端只渲染。
184
+ - **`mcp_status` / `mcp_reconnect` 回应的两只超集键归包铸(CC-859;§129 XF-18)**:`mcpStatusSupersetKeys({ engineLeg, localClientType, localError? })` 铸 `_sema_engineLeg`(值 = `mcpEngineLegConnectionOf` 读数的冻结拷贝;只在引擎车道在场)与 `_sema_shellConnection`(`{ status, serves: 'prompts_resources', error? }`,`error` 只在 `status === 'failed'` 且非空串时带);`mcpReconnectSupersetKeys({ localClientType, localError? })` 只铸后一键。键名 / 值形 / 在场判据与终端此前自铸的逐位相同(门 MK1 对壳现形转写差分);本地状态词读不出 ⇒ 不铸壳连接键(缺席 ≠ 编造状态)。type-superset 台账 +2。
185
+ - **`-p` 车道 resolver 的新入参型与读口(CC-475;§129 XF-8)**:`HeadlessPermissionFlags`(`flag` / `missing` / `dangerouslySkipPermissions`)· `ScenarioFlag`(`flag` / `missing`)· `LimitsFlags`(`deadline` / `maxTurns` / `maxTokens`)· `HeadlessFinalVerifyFlags`(`noFinalVerify` / `finalVerify`)· `HeadlessInteractiveToolsStance`(`permissionMode`)· `LiveInitToolFaceFlags`(`scenario` / `permissionMode`);新口 `parseLimitsFlags(flags)`(显式限值旗的解析结果,喂 `explicitLimitFlagNames`)· `sandboxFromFlag(value?)` · 旋钮未投影读口 `readHeadlessPermissionModeKnob(env)`(三态 `absent` / `word` / `invalid` + 告知,不扫旗不投影,无一次性闩)· `headlessDontAskDowngradeWarning(permissionModes?)`(`dontAsk` 降档告知句独立导出)。详见 `### Changed` 与 `### Removed` 的 CC-475 条。
186
+ - **目录事实位 `catalogFacts` 与偏差读口 `modelIdentityCatalogDeviationOf(reading)`(型 `ModelIdentityCatalogDeviation`)**(CC-942;**§129 MI-2**;根入口运行期导出 +1〔1951 → 1952〕,公面型 +1):`LocalEngineModelIdentityReading` 多一个可选位 `catalogFacts?: { readonly listed?: number; readonly shapeRefused?: boolean }`,放宿主对本地模型目录的自有事实(`listed` = 目录里列了几条模型,`shapeRefused` = 引擎把这份目录的**形**整拒,例如只有备用网关、没有主网关)。规则一条:`shapeRefused === true` ∧ 采纳读数 `catalogAdoption` 为 `refused` ⇒ 目录一路的读数由事实派生 —— `listed` 为 > 0 的安全整数 ⇒ `partial`,否则 ⇒ `absent` —— 并**压过** `lanes.modelCatalogFile`(不论它报了什么、没报什么,键缺席也派生);其余情形照旧读 `lanes`。三态 / 措辞 / 向导决策走同一次分析(派生 `partial` 的句子就是「目录里列了模型,但引擎会把这份目录按现状整个拒掉」那一句)。读法只认自有数据位:整只 `catalogFacts` 不是非数组对象、`shapeRefused` 不是字面 `true` ⇒ 当缺席(访问器不执行、原型链上的不算、代理陷阱抛也只丢那一位,不连坐别的位);`listed` 缺席 / 负数 / 小数 / 串 / `NaN` / 超出安全整数 ⇒ 按 0 读(落 `absent` 臂,句子不断言目录里有东西)。远程拓扑与引擎已应答不读。两者同在且不一致时,偏差读口 `modelIdentityCatalogDeviationOf(reading)` 出冻结小对象 `{ kind: 'catalog_lane_overridden_by_facts', reported, derived }`(判决已按事实位判,这一读数只告诉宿主「你报的来路读数和你报的事实对不上」,可记日志 / 修采集);来路读数键缺席、两者一致(`complete` 在整拒下本就按 `partial`)、非本地 / 读数不成形 ⇒ `undefined`,永不抛。此前这一格由终端壳自判。零必改。
187
+ - **准备期拒句的宿主草稿位 `PrepareRefusalNoteFacts.draftKept`**(CC-940;**§129 RQ-1**;型 additive 一位,消息目录键 +1 −2):`prepareRefusalNoteOf(code, facts?)` 的可选事实多一位 `draftKept?: boolean` —— 宿主声明「这次被拒的提交,用户输入的草稿在宿主里留着」。**字面 `true`(自有数据位)才**在 `config.user_attachment_invalid`(点名第 N 件与总窗口预算两形)/ `config.user_invoked_skill_unknown` 两句里多一段「Your draft is kept」(位置在原因与出路之间,前后各一个 ` · `);缺席 / `false` / 串 `'true'` / 数 / 对象 / 原型链上的 / 访问器 / 读就抛 ⇒ 一律不带(缺席 ≠ 留着,也 ≠ 没留 —— 句子只是不说)。另五码不读它。半句取自消息目录新键 `notice.prepareRefusal.draftKept`(英 / 中两语),按位拼进英文句。
188
+ - **模型名 × 引擎目录的受理判官 `modelAcceptanceOf(model, catalog?)` 与告知句 `modelNotServedNotice(reading, lang?)`(型 `ModelAcceptanceReading`)**(CC-944;**§129 MC-1**;根入口运行期导出 +2〔1952 → 1954〕,公面型 +1,消息目录键 +2):远端引擎(服务端 7.133.0 起按目录校验请求里的 `model`)的目录里没有宿主本机配置的那个模型名,宿主若照盖进提交体,每一发请求都被 400 —— 「这个名字这台引擎受不受理」是三端公共的判定,住在在线目录模块里。`modelAcceptanceOf` 答一个按 `verdict` 判别的冻结读数:`accepted`(`why: 'listed'`)· `refused`(`why: 'not_listed' | 'disabled'`)· `unknown`(`why: 'model_absent' | 'catalog_absent' | 'catalog_unreadable' | 'catalog_incomplete' | 'reserved_word'`),另带 `model`(入参名字原样,非空串才带)与 `defaultModel`(这份目录的缺省模型名,读不出 / 目录没说 ⇒ 键缺席,不编)。名字的找行规则与别的行读口同一条(先 `name` 后 `id` 恰等,不 trim、不折大小写);行自带 `enabled: false`,或名字只出现在 `droppedEntries` 里一条**本包读口验过形**且 `identity.enabled === false` 的被丢条目上(验不过形的被丢行不是证据,算丢过行)⇒ `refused{disabled}`。🔴 **unknown 绝不折成 accepted 或 refused**:名字缺席 / 空串 / 非串 ⇒ `model_absent`;没有在线目录 ⇒ `catalog_absent`;目录不是普通记录(原型不是 `Object.prototype` / `null`:`Date`、类实例挂上 `models` 也不当目录)/ `models` 缺席或非数组或读不动 / 一行都读不出 / 读抛 / 没找到而某一行没有可读身份(`name` 非自有数据位的非空串,或 `id` 在场而非串)/ 按 `id` 找到而读不到规范名(`name` 是访问器)⇒ `catalog_unreadable`;目录读得出而**读法丢过行**(`models` 里有读不出的项或稀疏洞,或服务端报了被丢条目、被丢条目读不懂)且名字没在列 ⇒ `catalog_incomplete`(「不在目录」证不出;名字在列照常 `accepted`,停用照常 `refused{disabled}`;`droppedEntries` 缺席〔更早的服务端〕不算丢过);名字是引擎自己认的**保留词** —— 档位词(本包档位序 `TIER_ORDER`)、CC 档位别名(`CC_TIER_ALIASES` 的键)、`default` 别名 —— ⇒ `reserved_word`(引擎准入认它们,而 `GET /v1/models` 的行不列它们,「目录里没有」推不出「引擎不受理」;目录里恰好也列了同名行同样 unknown,按行解析归一之后也比一次;精确字节比较)。省略第二参取本进程在线目录单例,显式 `null` = 没有目录。告知句 `modelNotServedNotice(reading, lang?)` **只在 `refused`** 出句(英 / 中,消息目录 `model.notServed.withDefault` / `noDefault`):「模型 X 在这台引擎的模型目录里不可用,所以本次会话改用引擎的缺省模型 Y」(不在列与停用同一句,「不可用」两者都对),缺省模型缺席或自己被目录明说停用 ⇒ 另一形(「…把模型的选择交给引擎」,不说 Y);X / Y 过不可信文本嵌句引法(控制符可见化、凭据遮盖、成对引号);其余读数与读不懂的入参 ⇒ `undefined`。🔴 句子后半是宿主照读数**不盖 `model`** 之后的事实 —— 宿主没有不盖就不要渲这一句。零必改。
189
+ - **引擎卡词十词:`ApprovalCardWord` 型与读口放行 `skill` / `workflow`(§129 GN-14;🔴 型面变 + 行为变)**:引擎 7.55.0 起「这一问渲在哪张卡上」的词闭集由八词变十词(+`skill` · +`workflow`)。卡词读口 `readApprovalCardWord(carrier)` 的成员集修前取 sdk 的转录(开发依赖 sdk 24.0.0 仍八词、本版 sdk 地板不抬)—— 两个新词会被读成表外、卡上不带;现改读构建期生成物(`gen-upstream-tables` 第二十批,引擎包根 `TOOL_APPROVAL_CARDS`;强制词同一先例)。新公面型 `ApprovalCardWord`(生成元组的成员型,十词;sdk 的 `ToolApprovalCardWord` 是它的子集,编译期两向钉住引擎包根表);读口返回型与 `ApprovalCardRequest.approvalCard?` 改用它。**编译红必改**:对这两处的类型写穷尽 `Record` / 以 `never` 收尾的 `switch` 的端编译红一次,补 `skill` / `workflow` 两臂。🔴 **读口放行这两词当拍,端须已把两词映到专属卡(`faceComponent`),否则技能卡 / 工作流卡退通用卡**。在场条件 / 卡字段形全表见接入文档 §129 GN-14。路由不变(`question` ⇒ 问答臂,其余九词 ⇒ 工具臂;`skill` / `workflow` 修前按「卡词缺席」退回名字读法,也落工具臂)。运行期导出零变。
190
+ - **发送前拒绝两码:`MCP_TOOL_DECLARATION_CHANGED` / `MCP_TOOL_LISTING_UNREACHED`(§129 GN-18;公面 +2,1954 → 1956)**:已挂 MCP 工具的一次调用在发送前被拒(请求没发出去;同服务器其余工具照用),码落 `tool_end.errorCode` / `details.code`。`changed` = 该连接最新 listing 给这只工具铸出了别的闸门或不再列它;`unreached` = 该连接还没有 listing 到达它(重拨后的重列提前停,未变的工具也算)。与 `MCP_SERVER_REVOKED` 同族同形(开放面码,不是闭集加词)。门:`run-engine-vocab-floor-test` G3-d(对引擎铸点逐字对拍)、`run-client-core-pure-test` 0.101.0-c。
191
+ - **收紧桶 / 会话策略写口对域名形 deny / ask 随引擎读数走(§129 GN-23;🔁 行为变,零改码)**:引擎 7.55.0 起 `WebFetch(domain:…)` 的 deny / ask 是真行(规则命中)。收紧桶判官(`content_form_never_matches`)按装着的引擎的读数认出域名形,所以宿主装 7.55.0 的条目读者后这一类条目不再扣下、原样投;装老一代读者时另要目标服务端版本作证才扣(见 PD-1 条第四问);会话策略写口不再按读者预判。
192
+ - **规则拒因码表 +1:`invalid.name_ambiguous`(§129 GN-30;公面值 +1 + 新对外措辞一句)**:引擎 7.55.0 起 deny / ask 的名字规则折叠后落在这一腿所挂工具声明的多个取值上(取值只在大小写 / 空格 / 标点上不同)时编译即拒,铸这一码。`PERMISSION_RULE_ISSUE_CODES` 16 → 17 项(冻结数组,型不变),`permissionRuleIssueDetail` 对它出新句(目录键 `rules.issue.nameAmbiguous`,en / zh);老引擎不铸这一码,表外码仍落「比本客户端新」的兜底句。
193
+ - **持久规则 `match` 十词:`pattern` 的人话(§129 GN-16;新对外措辞一句)**:`persistedRuleMatchLabel("pattern")` ⇒ 英文 `command pattern match (a star placed anywhere in the command)` / 中文 `命令模式匹配(命令里带星号)`(新目录键 `rules.match.pattern`);修前该词读成表外中性句。`pattern` 是 `Bash` 命令形里带 `*` 的规则(`Bash(git * main)`),只出现在持久规则行上 —— 卡上的规则候选永不带它,`ruleOffers` 窄读仍按 sdk 九词。
194
+ - **通知载荷的入口一次采样**(CC-923;**§129 NA-1**;根入口零新导出,行为面零变):同一条通知载荷 —— 引擎的 `task_notification` 帧、`workflow_complete` 帧、fleet `bg_notification` 帧、宿主直调公面读口的入参、看守探针的回答、TaskOutput 的 structured 体、落盘转录 —— 此前在判定、归一、渲染、去重键、两只落账动词里被各读各的,每处对同一位读 2 – 4 次;对带取值器或代理陷阱的外来对象,同一条通知可以在判定处读到一个值、在渲染处读到另一个值。现在每个入口各采样**恰一次**,采样点早于该入口对载荷的第一次读取,其后只读那份深冻结快照;带包内品牌的快照再进任何入口**不二次采样**(原样复用)。入口表:① wire 投影口(`task_notification` / `workflow_complete` 两帧,帧型字按自有数据位读一次作选择器〔取值器不执行〕,随后整帧采样,类型分派与外层 `notification` 读取都读快照;帧型位是自有访问器或只在原型链上的帧,入口不识别为通知帧 —— 分派照旧读一次〔与修前同〕,通知臂在臂内补采,载荷仍只读一份快照;事件身份 `_sema_engine_ref.eventId` 也读快照,`boundRun(帧)` 仍拿原帧 —— 行身份按帧对象绑定)· ② `adapt()` 直送帧(绕过投影口;循环里第一次分派读取之前采样,否则复用品牌快照)· ③ `-p` 车道 `taskNotificationToPrintFrame`(归一后仍读的 `usage` / 残局两位 / `seq` / `injected` 读完整快照,出口帧上的对象就是快照上的子对象)· ④ 公面辅助口逐名:`renderTaskNotificationXml` / `taskNotificationOf` / `normalizeTaskNotification` / `taskNotificationDedupKeyFromWire` / `deriveNotificationResidualLines` / `enqueueBgChildNotification` / `enqueueEngineWorkflowNotification` / `classifyPeerNotification` · ⑤ fleet `bg_notification`(归属 / 状态 / 宿主回调 / 入队五处读点共用一份;帧外壳上的 `notification` 位按自有数据位读)· ⑥ 转录回植解析器 `parseTranscriptNotificationSeeds`(按函数保护,适配器 `importLedgerFromTranscript` 经它)· ⑦ 看守探针的回答(入队前要读 `terminal` / `status` / `summary`,回答对象在第一次读 `terminal` 之前采样,`completionId` 从同一份快照搬,「是否交接」与「交接哪个完成」来自同一次观察)· ⑧ TaskOutput 的 structured 体(收卡臂读取处与 `structuredToToolUseResult` / `wireOutputToBody` / `toolResultOutcomeOf` 入口,同一份快照贯穿;只对 `task-output` 一种卡型采样,其余卡型〔自有数据位的卡型字明确是别的词〕原样、不冻结;卡型位在场却读不出自有数据位的串的体〔访问器 / 只在原型链上 / 非串 / 代理陷阱抛〕同样采样 —— 访问器值消失,下游按「不是这张卡」处置;没有卡型位的体〔如结论上报的 `{ count, level, findings }`〕原样)。**排除行**:`hitl/askGateWire` → `hitl/gateLedger` 的上游续读游标读(外层 `id` / `type` / `seq`)明写不在采样射程 —— 它是续读位置,不是完成确认,行为同修前。口径(访问器值消失 · 代理陷阱键缺席 · 非普通原型按数据位抄 · 环截断 · 下游再改载荷失败)见 `### Changed`。
195
+ - **通知事实多两个可选位 `completionId` / `seq`;合成入队口与看守探针回答各多一个可选 `completionId`**(CC-923;**§129 NA-1**;型面 additive):`TaskNotificationFields` 多 `completionId?: string`(引擎逐完成铸一次的完成身份,同一次完成的通知帧 / fleet 通知 / TaskOutput 卡同值)与 `seq?: number`(**来源实际报告**的周期号:整数 ≥ 1,与周期判官同律,不 floor、不钳)。**只搬不判**:`normalizeTaskNotification`、转录行的 `_sema_task_notification`、`taskNotificationQueueCommand` 铸的队列件、fleet 入口入队的合成件(`enqueueBgChildNotification` 多可选入参 `completionId`)原样带(铸造口 `freezeTaskNotificationFields` 也守同一值域:收到 `seq` 1.5 / 0 / 串形 / 空串 `completionId` ⇒ 键不铸),`taskNotificationOf` 回读两位;缺席 = 引擎没报 —— 不补 0、不猜周期、不拿 `taskId` 顶替;`completionId` 值域 = 非空串,缺席 / 空串 / 非串 / 访问器抛 / 读失败一律不铸键。旧去重口接受的 `number | string` 兼容值(串形 `seq`、0、小数)不成为事实。两位不进模型面正文(`renderTaskNotificationXml` 逐字节不变),包不据它们做任何去重或落账判定(现有几把键与判定一行不动)。看守探针(`installBgTaskStatusProbe`)的回答多可选 `completionId`:宿主能报就报,包只搬进合成件的事实;看守车道自己观察的周期号**不**写进事实 `seq`(那是包的记账,不是引擎自述);回答上的取值器抛 ⇒ 当缺席,这次完成照交、不被吞。
196
+ - **TaskOutput 终态卡的 `_sema_completion_id`**(CC-923;**§129 NA-1**;超集键一枚,type-superset 台账 +1):TaskOutput 的结构化位自己带非空串 `completionId`、且自己的 `status` 属 core 任务终态闭集(两位按自有数据位读)时,投出的最终 `task`(`tool_use_result.task`)多一键 `_sema_completion_id`,值原样搬运;覆盖 `local_bash` / `local_agent` / 通用 task(工作流等)三个返回分支,同一读法。present-iff:非终态(运行中 / 停驻)、结构化位没带 `status`(状态词只能从文本回落解析)、引擎亲口说这次取回超时 / 未就绪、`completionId` 缺席·空串·非串·只在原型链上·访问器、文本回落路径(没有结构化位)⇒ 键不在(不补 `task_id`)。CC 的 `task` 形没有这一格,故 `_sema_` 前缀。
197
+ - **MCP 服务器名撞名的拒码常量 `CONFIG_MCP_SERVER_NAME_COLLISION` 与它的一句处置(`prepareRefusalNoteOf` 的第八个码)**(CC-897;**§129 MN-2**;公面 +1,1957 → 1958;型面 additive):为一跑声明的两台 MCP 服务器名被引擎认作同一个 —— 同名写了两次,或名字里引擎的工具名铸法不收的字符被换掉之后撞成同一前缀(`a.b` 与 `a_b` 同铸 `mcp__a_b__`)—— 引擎(7.55.0 把这一问定为「早已强制、本版无改动」)在挂载处**整对拒**,任何服务器被拉起之前、任何规则被读之前,终局 `failed` 带码 `config.mcp_server_name_collision`(引擎原句点名两种拼法)。**不是**「第二台不收」:两台都不挂。本包新增:① 根入口常量 `CONFIG_MCP_SERVER_NAME_COLLISION`(逐字 = 引擎的码;**手持** —— 它不在引擎通告码册、不在包根导出的任何闭集里,没有生成表可读;门逐字节对已装引擎的铸点,进了任何闭集那天先红);② `prepareRefusalCodeOf` / `prepareRefusalNoteOf` 的码 → 句表 七 → 八:四种载体(400 抛出物 / 终局因由形 / 终局扁平形 / 结果帧)与续跑折叠形取码同一码,句子进消息目录(`notice.prepareRefusal.mcpServerNameCollision`,en 数据面 / zh 同键)。句子只说引擎的事实 —— 两种成因(同名写两次 / 名字被换成同一前缀,例 “a.b” 与 “a_b”)、整跑被拒、同一请求再发同样被拒、改名或移除其中一台(部署声明的找运维引擎的人);**不说撞名之后「哪一台仍在用」**(引擎整对拒,没有部分结局),也不断言「没起来 / 没发给模型」。**包不判撞名**:本地 `.mcp.json` 腿 `projectMcpConfigs` / `mcpConfigsToSpecs` 对两台撞前缀的条目照投两台(名字逐字节同、序同、`dropped` 空),判官只有引擎一只。表外码(近形 / 兄弟码 `config.a2a_peer_name_collision` / 引擎别的 mcp 配置码)⇒ 句与取码 `undefined`、原码原样过境,补句链不借句。缺席语义:码在终局上缺席或读不出 ⇒ 无句(落通用句)。
198
+
199
+ - **进程级设置口 `SettingsPort`**(CC-939 BK-9;**§129 HS-2**;🔴 型面 BREAKING;退役登记 RL-252,直接删、不留双读):`installHost({ settings })` / `installHostFor(k, { settings })` 的 `settings` 位、`SettingsPort` 型、`hostSettings()` / `hostSettingsFor()` 读口、`hostPortMisses()` 的 `settings` 计数键、插件读数旧位 `suppressedByStartupMode`(启动模式只有设置源 `startupMode()` 一条读法)、`sources.*` 修前形(`hooks: { plan }` / `resolved: { snapshot }` / `webSearch: { section, env }` / `outputStyle: { name }` / `memory: { settingsMemory, flag }`;入口按「不再收」响亮拒)、本版未发布期新增的 `RawSettingsSection` 型(随设置段改取设置读退出;HT-1 那一条的 `section` / `settingsMemory` 两位同退)。
200
+ - **交互车道 `inheritEnv:"all"` 的值臂那一句 `inheritEnvValuesNotConfirmedNotice(lang?)`,与判定的三个值臂成因 `capability_values_absent` / `capability_values_declined` / `capability_values_unreadable`**(CC-868;**§129 IE-1**;公面运行期导出 +1〔1956 → 1957〕,消息目录键 +1〔`session.inheritEnv.valuesNotConfirmed`,英文 / 中文〕):引擎的第二个能力词 `inherit_env.own_credential_values_withheld`(0.100.0 起有读口 `observedInheritEnvOwnCredentialValuesWithheld`)管的是「值等于本部署凭据值的变量,不论叫什么名,都不进工具 shell」;第一个能力词(名臂)管不到同值换名的副本 —— 用户导出的 `OPENAI_API_KEY` 被别名成引擎的 `MODEL_API_KEY`,名臂只扣后者,`"all"` 下同值别名照进模型 shell。名臂已确证、只差值臂时用户要读到的是另一句话(名臂句里「引擎没有确认它不会把自己的凭据交给工具 shell」此时是假话),所以告知有两形:名臂句 `inheritEnvNotConfirmedNotice`(0.98.0,不变)与本版新增的值臂句(英文原句以 `The engine keeps its own credential variables out of tool shells but has not confirmed that it also keeps out copies of them under other names` 起头)。值臂句的尾巴写「直到引擎确认这一点」、不写「直到升级」:值臂位为 `false` 时(事实位:当前配置里有凭据值没进值臂 —— 空白 / 占位词 / 过短 / 是每个子进程都会拿到的变量的值)升引擎救不了。`inheritEnvNoticeOf(intent, lang?)` 的出句规则:名臂三成因 ⇒ 名臂句,值臂三成因 ⇒ 值臂句,其余(含 `identity_unverified`)⇒ `undefined`。
201
+ - **合成 API 错误行与结果帧的终态 `coded` 账本体 `_sema_coded_detail`,读口 `terminalCodedDetailOf(carrier)` / `runTerminalCodedDetail(read)` 与型 `RunTerminalCodedDetail`**(CC-937;**§129 CD-1**;超集键一枚,根入口运行期导出 +2〔公面计数按合并后基线重算〕,公面型 +1,转录行侧挂键表 +1,type-superset 台账 +1):一次失败的抛点写下的结构化详情 —— 终局因由 `failed.detail`(`kind: "coded"`),例如被拒的模型座位的 `{ field, reason }`(引擎 7.55.0 起 `config.unknown_role` 所有拒绝形都带)、不可用的回退边界的 `{ code: "restore_failed", permanence? }`(`rewind.restore_failed`:边界在但不可用)—— 终局读口早已读到,但本包铸的合成 `API Error:` 行与结果帧不带它,壳要认座位只能嗅句子。现在两处**顶层同一个键、同一份读数**:`runStream` 铸行时读的是同一拍的终局快照(本包为此给终局快照多拷 `coded` 臂的账本体),同一份随终帧投影器的第三参交入帧信封铸点 —— 账本体这一位行与帧不另读第二遍(帧的终局分流、码、句仍读它自己的终局读数,与出路位同律);端直调终帧投影器(没有行可对齐)按自己的终局读数自读。键值是账本体(JSON 纯值冻结快照,键集开集;键名与结构原样过境,**字符串叶经凭据网**〔与 `errors[]` / 合成行正文同一只 `washCredentials`,只洗字符串叶、幂等,数 / 布尔 / null 不动;不依赖上游已脱敏〕,不截不改词,`permanence` 缺席不猜、在场原值,字符串叶渲前仍过展示出口),码仍在 `_sema_error_code`(帧)/ `_sema_api_error_code`(行),`rewind.restore_failed` 与别的码同一条规则、不特判。行只在 `API Error:` 臂带(与行上另三只机读位同律),帧在任一 `failed` 终局带;交互车道的行经 `adapt()` 重建后同键同值(只接力行种位是 `api_error` 的合成行),`-p` / 工具车道直接是 `runStream` 的行与帧。**present-iff**:终局是 `failed` ∧ 详情种类是 `coded` ∧ 本体是至少有一个成员的 JSON 记录;无详情 / 别的种类 / 表外种类 / 本体缺·非记录·空记录·全是非 JSON 成员·超预算 / 完成·停驻·被挡 / 终局缺席 / `failed` 事件帧 / 扁平 409 占锁信封 / 读就抛 ⇒ 键不在(不是 `undefined` 值,不铸 `'unknown'` 占位串),**缺席不是「这次失败没有结构化原因」**。读口 `runTerminalCodedDetail(read)`:只认 `failed` 臂的 `coded` 详情,自有数据位,交冻结新快照;`terminalCodedDetailOf(行 | 帧)`:自有数据位、与终局读口同一只本体快照口,合形 ⇒ 冻结新对象,坏形 / 取值器 / 原型链 / 代理陷阱 ⇒ `undefined` 不抛。`subtype` / `is_error` / `errors[]` / 行文本一字不动;CC 的结果信封与 assistant 行都没有这一格,故 `_sema_` 前缀。
202
+ - **请求装配口新入参 `projectMemory`(`'disabled'` 单成员闭集)与清单读口 `projectMemoryOf`(三词 `on` / `disabled` / `absent`)**(CC-938;**§129 PM-1**;引擎 7.55.0 `TaskSpec.projectMemory` / `WiringManifest.projectMemory`;终端 `--safe-mode` / `--bare` 的请托):装配口 `buildTaskRequest` / `assembleTaskRequest` 的入参多一个可选 `projectMemory?: 'disabled'`(车道表新增一行,三条车道、live 门后;表示「这一发别读部署的项目上下文」)。**缺席(未给 / `undefined` / `null`)= 请求体不带这一键**(与不传逐字节同、不进回执),**本包绝不铸 `"on"`**;非 live 不带 + 回执 `not_live`;任何别的值(含 `false`、`'on'`、大小写变体)构造期 `TypeError`(只报形状、不回显值),`false` 不折成缺席。清单读口 `projectMemoryOf(manifest)` + 冻结三词表 `PROJECT_MEMORY_WORDS` + 型 `ProjectMemoryWord` / `ProjectMemoryManifestSeat`:精确三词才答,缺席 / 表外词 / 非串 / 读不出 ⇒ `undefined`(**不猜 `absent`**),只认自有数据位、永不抛。**能力位读器 `observedProjectMemoryCapability(baseUrl?)`**(服务端 7.135.0 起在 `GET /v1/capabilities` 顶层铸同名恒真位 `projectMemory: true`,服务端注「位缺席 = 老 server —— 壳见位才发顶层键」;五态 `confirmed` / `absent` / `declined` / `unreadable` / `unobserved`,经既有总缓存按键读口,只认自有数据位、严格 `true` 才 `confirmed`;型 `ProjectMemoryCapabilityReading`)+ **见位才发的片段口 `projectMemoryDeclaration(intent, reading)`**(与 `inheritEnvDeclaration` 同形同句式;型 `ProjectMemoryDeclaration` / `ProjectMemoryWithheld` / `ProjectMemoryWithheldCause`)+ 回执句口 `projectMemoryWithheldNotice(withheld, lang?)`(en / zh,消息目录键 +4):读数 `confirmed` 才给键 `projectMemory: 'disabled'`;`absent` ⇒ 空片段 + `capability_absent`;`declined` ⇒ `capability_declined`;读不出 / 没落地 / 认不出的读数 ⇒ `capability_unreadable`(没证据不发);意图缺席 ⇒ 空片段无回执;坏词先于读数响亮拒。不给键时项目指令文件**仍会送给模型**,句子说这一点。**包里没有版本地板**:能力位是上游的单一真源。公面运行期 +5。🔴 **服务端半场**:服务端 7.134.x 及以前的提交体顶层键闭集门对这一键**整条 400** `request.body_shape`(不是被忽略);服务端 7.135.0 窗起受理。宿主**应经见位才发的片段口**取值;装配口入参本身仍可直给(直给 = 自担老服务端的 400)。读器是值级读(sdk 24 的能力型面尚无这一位,型面带上它那天再加钉)(§129 PM-1 / 129y ③ / 包侧缺口 PM)。**编译红必改**:无。**行为变**:无(不交这一入参的宿主请求体与 0.100.0 逐字节同)。**零动作**:网页端 / 桌面端 / 管理台;终端按 129y ③ 接线。
203
+
204
+ - **`decide.row_unrevivable`(停驻的审批卡引擎复活不了)的读口:码常量 `DECIDE_ROW_UNREVIVABLE` + 严格等值判 `isDecideRowUnrevivableCode(code)` + 决断拒收读数的「没救」位 `unrecoverable: true` + 一句包句 `decideRowUnrevivableNotice(lang?)`**(CC-967;**§129 DR-1**;公面 +3,1965 → 1968;型面 additive):未起名的后台子代也会停驻、行上却不带名字(或行上没有根会话锚),服务端在认领之前对这样的卡一律答 409 `decide.row_unrevivable` —— 批准与拒绝**都不会生效**,再点同一个按钮只会再得到同一个 409;修前这个码在包里只有一行注释,决断拒收分类把它落成与「改参数再决」(400 `decide.parked_answer_required`)同样的 `refused-pending`、同样不瞬时,宿主分不出「没救」与「还能再决」,于是写回 pending 配一句「可以再试一次」、按钮照旧可点(无限循环)。本包新增:① 根入口常量 `DECIDE_ROW_UNREVIVABLE`(逐字 = 服务端铸点的码;**手持** —— sdk 把它落在 `DecideError` 基类、没有具名常量,也不在任何生成表里,门逐字节对已装服务端夹具的铸点)与严格等值判官 `isDecideRowUnrevivableCode(code)`(不按 `decide.` 前缀、不折大小写 / 空白;非串 ⇒ `false`);刻意**不进**停驻挪动族 `DECIDE_PARK_MOVED_CODES`(那一族的处置是「重取待决列表再决」);② 决断拒收分类 `classifyDecisionRefusal` 的读数(`DecisionRefusalClassified`)与公面读数口 `readDecisionRefusalReading` 的读数(`DecisionRefusalReading`)各多一个 present-iff 位 `unrecoverable: true`:铸点 `mintDecisionRefusalReading` 判一次(码严格等值 ∧ 引擎答了〔有判决〕),分类只读存好的位;抛出物 / 拒体(跨进程重建的普通对象)/ 结局(耐久 decide 腿与活卡 respond 腿铸出的 `ApprovalResolution`,以及发送机结局的 `refusal`)三种载体逐字同答;`standing` 仍是 `refused-pending`,收口判官 `decisionRefusalClosesOut` 的既有判决不变;码说没救的,拒体自称的 `retriable: true` 不再铸 `transient`(真 wire 体本就不带该位,只防重建形 / 敌意形);③ 包句 `decideRowUnrevivableNotice(lang?)`(消息目录键 `notice.decide.rowUnrevivable`,en 数据面 / zh 同键;`lang` 缺省 / 表外 ⇒ 英文):这张卡引擎已无法恢复、批准和拒绝都不会生效、只能在服务端清理(等待清理或联系运维这台引擎的人);**不说「再试一次」、不承诺重试、不复述引擎原句、零机器码**。缺席语义:码表外 / 近形 / 兄弟码 / 无码 / 无状态码 / 状态码不在 400–599 / 码在访问器 · 原型链 · 代理陷阱 · 非串位 ⇒ 位缺席(不铸 `false`、不猜);结果帧的 `_sema_error_code` 不是决断拒收的载体(无判决、无位)。本包只保证不撒谎、不诱导反复点;卡本身仍在服务端队列里,清理路径由服务端随版给出。
205
+ - **清单读口 `sessionRulesChildrenReadLiveOf(manifest)`:引擎对一条腿「派出去的腿会不会在每个工具关口重读这条腿的会话规则」的陈述(`true` / `false` / `undefined`)**(CC-966;**§129 SR-1**;引擎 7.55.0 `WiringManifest.sessionRules.childrenReadLive`;终端请托;§129 GN-25 的另一半,`projectMemory` 那一半见 PM-1):清单型上的 `sessionRules?: { childrenReadLive: boolean }` 是**布尔,不是词表** —— 本包没有词表常量、没有联合型,读数只有三种:`true`(这条腿自己执行会话规则层,并把会话的键交给它派出去的腿;会话里**之后**写下的规则,在代理的下一次调用就生效)/ `false`(这条腿没有会话规则层:没接存储,或任务没有会话 id;派出去的腿只带起跑时的规则)/ `undefined`(**缺席 / 非布尔 / 读不出;不猜 `false`**:老引擎或外部派生的清单没有这一段,引擎头注逐字「ABSENT = an older engine: assume nothing」)。两层都只认自有数据位(继承位不算、访问器不执行、代理陷阱 / 已撤销代理 ⇒ `undefined`、永不抛);`false` 是真读数,不折成缺席;非布尔(`'true'` / `1` / `null` / 装箱布尔 / 对象 / 数组)一律 `undefined`,不按真值折。与 `projectMemoryOf` 同一对只读法助手,不另写第二份读法。入参型 `SessionRulesManifestSeat`(段与位都可选,位的型 = 引擎型 `boolean`,门 K 段钉两向可赋值)。公面运行期 +1。只读**清单形**对象:壳手上若是视图形(接线回执的视图没有这一段)⇒ 读口 `undefined`,本包不替视图造这一段(§129 SR-1 / 129y ③ / 包侧缺口 SR)。**编译红必改**:无。**行为变**:无(新口,不交这一读口的宿主零变化)。**零动作**:网页端 / 桌面端 / 管理台;终端按 129y ③ 接线。
206
+
207
+ - **搜索来源读口 `webSearchSourcesOf(toolEnd)` 与 `web-search` 卡的 B 层臂(CC 2.1.296 `WebSearchOutput` 同形)**(CC-973;**§129 WS-1**;公面 +1,1973 → 1974;新型 `WebSearchSource` / `WebSearchSources`,型面 additive):引擎的 WebSearch 工具本就在 `tool_end.structured` 上带整张卡(`type: "web-search"`;命中是展示给模型的**全部**,不只模型引用到的),本包此前没有这张卡的 B 层臂(`structuredToToolUseResult` 十四臂不含它),卡落通用形(`tool_use_result` 是模型面正文串),三端要来源清单只能各自读 wire。本版:① `structuredToToolUseResult` 第十五臂 `web-search` ⇒ `tool_use_result` 是 CC `WebSearchOutput` 同形对象 `{ query, results, durationSeconds, searchCount? }`(`results` 项 = `{ tool_use_id, content: { title, url }[] }` 或字串〔CC 合法的模型评述〕;引擎自有的 `type` / `retryable`、命中上的 `snippet` 与别的键不进卡;`searchCount` 缺席时不编 —— CC 渲染自己按对象项计数);`query` 非串 / `durationSeconds` 缺席·非有限数·负数 / `results` 非数组 / 有项被丢却一条命中也没读到 ⇒ 掉通用形(`null`),**不补 0、不补 `[]`**;卡内容原样、不洗(与别的臂同一铸点,展示出口在宿主渲染处);交互车道与 `-p` 车道共用同一只铸口 ⇒ 同值,块 `tool_result.content` 不变;本臂在通用前导之前自判卡型、全程只读自有数据位(对读就抛的取值器 / 陷阱代理不抛;其余十四臂的前导不动)。② 新读口 `webSearchSourcesOf(toolEnd)` ⇒ `WebSearchSources | undefined`(冻结的 `{ title, url }[]`,拍平 `results[].content[]`、序不变):只读 `toolEnd.structured` 的自有数据位(访问器不执行、原型链不算、永不抛;有界:至多读 1024 项 / 4096 命中,数组 `length` 不是 0 ..= 2^32 − 1 的整数〔伪造值〕⇒ 该数组读不出);**不是这张卡 / `structured` 缺席 / `results` 不是数组 / 有项被丢却一条命中也没读到 ⇒ `undefined`(不猜空数组)**;引擎自己的空(`results: []`、条目 `content: []`,含失败卡)⇒ 真空 `[]`;条目逐条隔离:`title` 非串 / `url` 非串或空 / 超长的命中与坏形项只丢那一条,个数记在数组上不可枚举的 `droppedCount`(随数组对象走,展开 / 序列化即失);`title` 与 `url` 过展示出口 `displayUntrusted`(单行、凭据两网全开),**产物是呈前形、不是跳转目标**(KL-900)。🔴 **与请托原写法的两处差异**(以引擎铸点与 CC 接口声明为准):命中**不是**平铺的 `{ title, url }[]`,而是嵌套的 `results[i].content[j]`(读口把它拍平);读口入参是 `tool_end` 帧(或内部臂),不是单独的卡。**行为变**:`web-search` 卡上信封 `tool_use_result` 由模型面正文串变 CC 形对象(接入文档 §129 129y ②)。门:`scripts/run-web-search-sources-projection-test.mjs`(新)。
208
+ - **场景卡部署技能清单读口 `scenarioSkillsOf(card)` 与恒真能力位读器 `observedScenarioSkillsCapability(baseUrl?)`**(CC-583 ②;**§129 SK-2**;服务端 7.135.0 起;公面运行期 +2、公面型 +2〔`ScenarioCardSkill` / `ScenarioSkillsCapabilityReading`〕;新口、零必改):服务端 7.135.0 的场景卡 `GET /v1/capabilities/scenarios/:name` 恒在场 `skills: [{ name, description, source }]` —— 这个场景交进每个 run 的部署技能,`source` 恰两词 `factory`(本部署的技能目录)/ `center`(配置源交来的,盖掉出厂同名的也是它),不带正文,请求体自带的 `skills` 不在内;`GET /v1/capabilities` 顶层同批铸恒真位 `scenarioSkills`(缺席 = 老服务端,卡上没有这一键)。读口 `scenarioSkillsOf` 答冻结的 `{ name, description, source }[]`(`source` 为 `factory` / `center` / 本包的 `unknown-source`)或 `undefined`:🔴 `skills` 缺席 / 不是数组 / 读不出(自有访问器、只在原型链上、代理陷阱)⇒ `undefined`,**绝不铸 `[]`**(`[]` 是服务端明说「这个场景没有部署技能」,与老服务端的卡上没有这一键是两回事);条目逐条隔离,坏形(不是对象 / `name` 不是非空串 / `description` 不是串 / 读就抛 / 数组洞)只丢那一条、兄弟照读;`source` 按精确字节认两词,表外 / 缺席 / 非串 ⇒ 该条标 `unknown-source` 而**不丢**(名字仍可点名);数组非空而一条都读不出 ⇒ `undefined`(不把「列了而没读懂」说成「没有技能」);长度超过遍历预算(10 万;`new Array(2 ** 32 - 1)` / 代理报出的巨大长度)按读不出 ⇒ `undefined`;读后重铸的条目数组用 `defineProperty` 落自有数据位(原型链上植入下标 setter 偷换不了条目);入参型 `object | null | undefined`(sdk 的 `ScenarioDetail` 直接喂得进);缺省地址解析在保护体里(装的引擎目标读 `baseUrl` 就抛 ⇒ 读口仍答 `unobserved`);名字 / 描述逐字节(不 trim、不去重、不排序,序即服务端的序),读数与每条冻结、不牵连入参;**不读**引擎注入进提示的 `<skills>` 清单文字(非契约),也不读卡的任何文字键。能力位读器 `observedScenarioSkillsCapability`(`confirmed` / `absent` / `declined` / `unreadable` / `unobserved` 五态,经既有总缓存按键读口,只认自有数据位、严格 `true` 才 `confirmed`;sdk 24 的能力型面还没有这一位,值级读)只作「服务端这一代会发」的证据,**不是读卡的前置**:位缺席时卡上有 `skills` 照读。票面写过的条目可选位 `whenToUse` 在服务端 7.135.0 零铸点,本口不读、读数里不带。点名走既有 `userInvokedSkillsDeclaration`(0.99.0)。门:`scripts/run-scenario-skills-projection-test.mjs`。
209
+
210
+ - **transport-only 判口 `mcpTransportVerdict(entry)`(与型 `McpTransportEntryLike` / `McpTransportVerdict`):一台服务器声明的传输那一半能不能上请求面**(CC-984;**§129 ME-1**;公面运行期 +1〔1974 → 1975〕,公面型 +2,消息目录键 +5〔en / zh 同键〕):给「逐台判、不走文件名册」的调用方(agent 内联的 MCP 配置、`mcp_set_servers` 这类整表入参)。只读 `type` / `command` / `args` / `env` / `url` / `headers` 与 http 的两位身份头(它们是请求面 http 传输上的键,判官一并判;两位同设属于传输坏形),**不含名判、不含整表合并律、不读** `toolAxes` / `toolFaces` / `elicitation` / `allowTools` / `startupTimeoutMs`(读它们就抛的条目照答),每个键只读一次。答 `{ kind: 'ok', transport, lost }`(`transport` = 判官交出的副本,与整表口 `specs[].transport` 逐字同;`lost` = 判官交副本时丢掉的可选子键,与整表口 `degraded[].lost` 同,不回显值)或 `{ kind: 'bad', key, detail }`(`key` = 点名的键路径,例 `transport.command`;身份头两位同设 ⇒ `transport`;传输类别请求面不承载〔`sse` / `ws` 一类〕⇒ `transport.kind`;条目不是对象 / 读不出 ⇒ `transport`;`detail` = 原因,判官原句只说形与种类、不回显值)。与整表口 `projectMcpConfigs` 对同一台的传输是**同一只判官**(包内 `transportOf`:整表口的条目拼装与本口各调它一次,没有第二份判法;条目的位不随读取而变〔数据位 / 不带副作用的取值器〕时,同一条目两口逐字同答)。纯函数、不改入参、任意入参(含 `null` / 原始值 / 数组 / 代理陷阱 / 嵌套值是已撤销代理)都不抛,结果冻结。入参窄型 `McpTransportEntryLike` 是 `McpConfigLike` 的传输键子集(整条 `.mcp.json` 条目直接递也行,多出来的键不读)。不涉及云配置腿:`cloudMcpToSpecs` 的候选传输键名不同(`envRefs` / `headerRefs`),本版不并。
211
+ - **`HooksWirePlan.settingsWithheld` + 型 `SettingsLayerWithheldRow`:层准入判官扣下的设置来源层(写了 hooks 而没上请求体)按层写进计划**(**§129 FB-2**;公面类型 +1,计划必填输出键 +1,消息目录 +1 键〔en / zh〕;型面 additive):宿主如实报 `workspaceTrust() === 'no_trust_step'`(没有信任步骤:网页端 / 桌面端 / `-p` 一类)时,仓库可控的项目层 / 本地层 hooks 不上请求体 —— 这一行为变(0.100.0 的设置口只交「跳不跳 hooks」一位布尔,`false` ⇒ 五层全投)此前未声明、计划行也没有披露(只留一行 debug 日志)。现在计划一层一行 `{ source, cause: 'trust_withheld', notice }`(成因词取上游层准入判官原词;只在这一层真写了 hooks、且没被治理收窄成只投托管层时有行),`hooksNotRunNotice(plan)` 照列那一句(「…hooks will not run — this client has no workspace-trust step…」)。🔴 **语义不改**:哪些层的 hooks 上体仍由上游判官定。要项目层 / 本地层 hooks 上体:宿主经自己的信任步骤让 `workspaceTrust()` 报 `accepted`。`hooksWirePlan` 的判形口认带这个键 / 不带这个键(老形)的计划,键在而不是数组 ⇒ 不是计划。
212
+ - **装配产物 `approvalFrameFamiliesWithheld`:包铸的帧族声明键这一发有座却没铸时记成因;成因闭集 `ApprovalFrameFamiliesWithheldCause` +`reading_absent`**(**§129 FV-6**;型面 additive:装配产物多一个可选位、成因联合三 → 四词;运行期导出 0;请求体字节不变):交互 / `-p` 车道 ∧ live、而 `settings.approvalFrameFamilies` 没铸时,`assembleTaskRequest(...).approvalFrameFamiliesWithheld` = `{ cause }` —— 宿主没交 `approvalFrameFamiliesReading` ⇒ `reading_absent`;交了而判官不给键 ⇒ 与片段口同词(`capability_absent` / `capability_declined` / `capability_unreadable`)。此前这一形静默:宿主忘了交读数与服务端不收,在宿主侧看不出区别(服务端 ≥ 7.134.0 上不声明 = 审批走无人值守口)。铸了 / 没座 / 非 live ⇒ 缺席。对该联合写穷尽 `switch` 的端编译红一次。
213
+
214
+ ### Changed
215
+ - **断言头告知句射程改说 7.134.0**(§129 MR;措辞;0.99.0 定律「射程 = 现役见证那一版」):`mcpAssertionHeaderNotSentNotice` 的句子由「server versions up to 7.132.0 …」改「up to 7.134.0」—— 现役夹具服务端 7.134.0 真函数实跑证明仍在铸引擎 spec 前剥掉 `assertionHeader`、不发送;按原句字节匹配这句的读者要改,按 `assertionHeader` 词判的不受影响。
216
+ - **已知限制 KL-659 删行**(CC-553;**§129 XA-5**):「姿态车道按构建期表放行、不随引擎代际」的触发条件(服务端 < 7.122.0 ⇔ 引擎 < 7.47.0)在支持底线之下;支持范围内每一台引擎都按面放(门钉)。前向余项见 `### Known limits` KL-810。
217
+
218
+ - **开发依赖换钉(§129 PK-1)**:`@sema-agent/core` `^7.53.0` → `^7.54.0`(已装 7.54.0;锁文件只动这一件);`@sema-agent/sdk` / `@sema-agent/settings-schema` 不动,peer 地板与支持底线不动。
219
+ - **生成表重生成读数(§129 GN-1 / GN-2)**:`ENGINE_NOTICE_CODES` 96 → 98(+`config.cross_boundary_posture_undeclared` · +`config.cross_boundary_record_unwritten`,包根元组序紧跟 `config.credential_not_withheld`)· 受众表 +2(两码都是 `operator`)· 铸方表 +2(两码都是 `engine`)—— 公面三张值变、型不变,新码按引擎受众分流;问类闭集 +`cross_boundary`(在 `requires_user_interaction` 之后、`operator_forced` 之前)· 仲裁表 +1 行(`cross_boundary`:绕过免疫、不归分类器、无沙箱准入、无规则能清、无钩子地板)· 强制词闭集 +`cross_boundary_taint`(末位)—— 后三者在包内生成物里;问面表与工具名表只换头注版本串,其余生成表(设置契约 / sdk 源)零动。
220
+ - **自动答判定口对问类 `cross_boundary` 的读法(§129 GN-2;🔴 行为变,窄)**:卡上问类集带 `cross_boundary`(引擎 7.54.0 起,仅在多租户部署里目标设备外写入 / 离设备读取后回设备的调用上出现)⇒ `automaticAnswerVerdict` 三条车道都答 `must_ask`(`road: 'ask_class'`、`askClass: 'cross_boundary'`;这类真卡恒带真批准位,规则 / 钩子两车道上先答 `road: 'requires_real_approval'`);钩子车道的类依据与规则车道同一列(`ruleMayClear`),不读仲裁表的 `hookAskFloor`(见 `### Fixed` 的 CC-899 条);修前该词是表外类:卡上没有先行必问证据(真批准位 / 治理位 / 强制位 / 出身词)时三条车道都答 `unknown`(`class_not_in_table`)。老引擎不出这个词,读法零变;只带强制词 `cross_boundary_taint`、问类集缺席的卡,姿态车道仍答 `unknown`(`classes_absent`,同表外强制词),规则 / 钩子车道仍按「强制」答 `must_ask`(`road: 'mandated'`)。问类对读法的「已知成员按引擎规范序出现」随之把 `cross_boundary` 纳为已知成员。
221
+ - **附件信封里「需要先问人」那一因的固定句改成与规则来源层无关**(CC-900;**§129 UA-4**;措辞变):`approval-required`(文件与 MCP 资源同用)的固定英文句由 `this deployment's rules require approval before it is read, so the client did not attach it without asking` 改为 `a read-approval rule applies to it, so the client did not attach it without asking`。修前句把规则来源说成部署,而用户层 / 项目层的读取询问规则同走这一因,模型面据此会把来源说错;新句不点部署、不点层,`it` 指被挂的那一件(文件 / 目录 / 路径 / MCP 资源四种目标共用这一因,不说「这个文件」)。描述符的原因词是闭词、不带规则来源层,本版不加位。中文无此句(信封只对模型面出英文)。按原句字节匹配这句话的读者要改;按原因词判的不受影响。
222
+ - **会话规则「已保存」句:对「这一会话第一条规则写入之前起跑的工作」多一段尾段(四位事实 + 保守措辞 + 常驻句)**(CC-904 改托;**§129 SP-1**;措辞变,窄):`sessionPolicyTightenNotice(outcome, lang?, facts?)` 的可选第三参 `facts` 由单位形扩成**四位**:`{ agentsStartedBeforeFirstRule?: number; workflowsRunning?: number; untrackedBackgroundItems?: number; inFlightUnreadable?: true }`(后台子代数 / workflow 数 / 客户端已放弃跟踪的后台条目数 / 「在跑清单读不出」)。原句「从这个会话的下一道工具门起生效」对一类仍在跑的工作失实 —— 引擎侧(在核的缺陷):后台子代的祖先规则层只为 spawn 时父会话**已有**的规则条目建,父会话那时一条规则也没有 ⇒ 这些子代永远读不到之后写的规则;spawn 前已有任意一条 ⇒ 子代每道门现读、下一门即拒。**各位独立**:三个计数位是 **≥ 1 的安全整数**才计,缺席 / 0 / 非数 / 负 / 小数 / NaN / ±Infinity / 超安全整数 / 串 / 布尔 / 非对象一律不计(缺席 = 宿主说不出,不是「没有在跑」,更不是「在跑 0 个」);`inFlightUnreadable` 严格 `=== true` 才算。**读不出单列一形、不与计数句并出**(有读不出,计数不全,不拿残缺的数当事实);否则按在场的计数位**组一句**(固定序 子代 → workflow → 放弃跟踪;en:`Still running, and possibly started before this session's first rule: 2 background agents, 1 workflow and 4 background items this client stopped tracking. Anything that started before that first rule keeps running without this one — to make the rule apply to it now, stop it.`;zh 同义)。**措辞保守**:只说「可能在第一条规则之前起跑、仍在跑」,**不再担保「之后起跑的子代会遵循新规则」**(排队中的子代与它们再起的子代读不到,壳给不了这个保证);**只要加了尾段就恒带一句常驻句**「起跑还没报到本客户端的工作可能也读不到」(en:`Work whose start has not reached this client yet may not read this rule either.`)。**四位全缺席 / 0 / 坏形 ⇒ 不加尾段,句子与 0.100.0 逐字节同。**个数由宿主壳按壳时钟保守计入(规则记录与写回执都不带引擎时刻,本包不编、不读任何运行态)。只加在 `written` 一臂,别的结局臂不读 `facts`;每一位只认自有数据位(访问器不执行、原型链上的不认、代理陷阱 ⇒ 只那一位按缺席,不连坐别的位),永不抛。目录键:退 `rules.sessionPolicy.tighten.writtenBeforeFirstRule.one` / `.many`(0.101.0 未发布期内的单位形,零消费方),新 `rules.sessionPolicy.tighten.writtenBeforeFirstRule.*` 十一键(`.counts` 一句模板 + `.agents` / `.workflows` / `.untracked` 各 `.one` / `.many` 六片段 + `.list.two` / `.list.three` 两连接 + `.unreadable` + `.unseen`,英 / 中)。公面运行期零变(既有函数的可选末位参加三个可选位);新公面型 `SessionPolicyTightenFacts`(命名第三参的形,不计运行期导出)。过渡位:core 支持底线到 7.55.0 之后的下一个本包版本,第三参与各键同批退出、句子回原形(退役登记在册:条件由「引擎修复到货」改挂支持底线 —— 远端可连更老的受支持引擎,修复到货不等于底线抬过)。门:`scripts/run-session-policy-wire-test.mjs` SP 段。
223
+ - **收紧桶:引擎读成「内容形不支持」且目标服务端永不命中的条目不再原样投(判官合一;会话策略写口不预判)**(CC-916;**§129 PD-1**;🔴 行为变,窄;`PERMISSIONS_KEPT_REASONS` 14 → 15 词):请求体 `settings.permissions.deny` / `ask`(含命令行 deny)里的内容形条目此前一律原样投、不问任何读者;会话策略写口对新增侧 `toolDeny` 同样原样搬运;而引擎的条目读者(deny 读法)对 `WebFetch(domain:…)` 这类条目读成「内容形不支持」—— 被受理却永不命中(服务端 7.126.0 – 7.134.0 静默;7.135.0 起域名形在服务端按主机真生效,见 GN-23)。同一问题三处各答各的(会话规则可送判定问读者、另两处不问)。现收成**一只判官**(包内读法叶;**四问全中**才算:引擎条目读者按 deny 读法读成「内容形不支持」**且**同一串在引擎自己的 allow 读法下读成域名文法的一行〔host / subdomain 拼写,今天只有 `WebFetch(domain:…)`;域名语法只有 allow 拼写〕**且**规则编译器收 —— 受理而静默的那一类 —— **且**目标服务端自报版本读得懂、不低于支持底线且低于 7.135.0〔第四问;装配口新可选位 `serverVersion`,宿主交 `engineCapString(baseUrl, 'version')`,经 `engineVersionTier` 读〕):① 请求体收紧桶:这类条目**不投**,报告口 `kept[]` 点名新理由 `content_form_never_matches`,死规则一句 `ruleRefusalSentence` 认它为第七个理由(出路:只写工具名整只拦);**不交 `serverVersion`(缺席 / 读不懂 / 低于底线 / 不低于 7.135.0)⇒ 一律照投,与 0.100.0 逐字节同** —— 前三问问的是宿主装着的读者,答不了受理它的那台服务端会不会命中(宿主装 core ≤ 7.54 读者、目标是 7.135+ 时前三问全中,而目标按主机真拦),所以要扣下就得交版本;② 会话策略写口(`tightenedSessionRules` / `tightenSessionPolicy` 的新增侧 `toolDeny`):🔴 **不预判、不抛** —— 这类条目原样搬运,判归服务端(7.134.x 及以前 400 `rules.inert_entry` ⇒ 结局 `inert_entry` 臂;7.135.0 起真生效);③ 会话规则可送判定读同一只条目读数(`inertReason` 对位不变)。🔴 判官**不是**「串里有括号」的字面判据,也不是条目读者单独一问:`Bash(git push:*)` / `Read(//etc/**)` 引擎读成真行,照投;泛型参数规则(`TaskStop(task_id:…)` / `Agent(run_in_background:…)`,甚至 `WebFetch(prompt:…)`)条目读者同答「内容形不支持」、但引擎策略运行期真匹配,照投(门用引擎真策略证);编译器拒收的(`Task(x)` 一类)仍原样投、由服务端 422 点名;无括号的整工具名、allow 桶(域名形 allow 有拼写)零变;**读者或编译器答不上来(端口没装 / 抛 / 回体坏形)⇒ 照投,与 0.100.0 逐字节同**(扣下一条 deny 是放松方向)。型面:`PermissionsKeptReason` 多一员 `content_form_never_matches`(对该联合写穷尽 `Record` / `switch` 的端编译红一次);`PERMISSIONS_KEPT_REASONS` 多一词(冻结数组,位置在 `content_form_not_grantable` 之后);`PermissionsDeclarationInput` 与 `hostTurnSettings` 的 `sources.resolved` 各多一个可选位 `serverVersion`;公面运行期零变。门:`scripts/run-permissions-declaration-test.mjs` PD 段 · `scripts/run-session-policy-wire-test.mjs` PDW 段 · `scripts/run-session-policy-deliverable-test.mjs` G-SP8。
224
+ - **披露行:域名形 deny / ask 在服务端 7.126.0 – 7.134.0 静默不命中**(CC-916;**§129 PD-2**;文档,零代码):请求体 `settings.permissions.deny` / `ask` 里的 `WebFetch(domain:…)` 等带限定符的条目被受理却永不命中 —— 对该主机的取数照常放行(会话策略 `toolDeny` 的新增侧不是这一形:服务端经引擎条目读者判写口,读成无物 ⇒ 400 `rules.inert_entry`,响的拒)。缓解 = deny 整只 `WebFetch`;服务端 ≥ 7.135.0(引擎 7.55.0)域名形 deny / ask 按主机真生效(见 GN-23),本披露随之退;同版把参数不属于该工具的写法(`WebFetch(foo:…)` / `WebSearch(domain:…)`)拒成 422(PD-3 读口认得)。本包从 0.101.0 起在发出前挡一道(PD-1;宿主装了老一代引擎条目读者、交了目标服务端版本、且那一台是受理而不命中的一代时);服务端 7.135.0 到货且支持底线抬到它之后本披露退。已知限制账 KL-803。
225
+ - **云配置腿对 `toolFaces` 同调引擎判官**(CC-905;**§129 TF-2**;🔴 行为变 + 型面加员):`cloudMcpToSpecs` 对 registry 下发条目的 `toolFaces` 此前原样过境、不校形,而本地腿(§129 TF-1)已按引擎判官判 —— 同一问题两种读法。现与本地腿问**同一只**判读口 `mcpToolFacesVerdict`:判官不在(值级端口 `readToolFaces` 没装 / 装的那一只答了不认得的形)⇒ 原样过境、不编 ok(与此前同);合形 ⇒ 过境的是引擎判过的普通副本(空记录 `{}` 读作没声明、键不铸);坏形(含 `null`、读就抛的取值器)⇒ **这一台不起**(不剥键降级)、其余服务器照常,`droppedServers` 记一行 `reason: 'tool-faces-invalid'` 并带引擎原句 `problem`(读不出的取值器 ⇒ 本包的「这项设置读不出来」句),`cloudEffectiveNotices` 出一句 `warn`(点名服务器与 `toolFaces`;不带成因词与引擎原句)。条目上的 `toolFaces` 键只读一次(判读与上体同一读)。多坏同在的序与本地腿同:传输硬坏形 → `toolAxes` → `toolFaces` → `elicitation`。**型面**:`CloudMcpDropReason` 八词变九词(+`tool-faces-invalid`;对该联合写穷尽 `switch` / `Record` 的端编译红一次);`CloudMcpDroppedServer` 多一个可选位 `problem?: string`(只在 `tool-faces-invalid` 行上有,同 `path` 只在 `transport-invalid` 行上有;其余成因行键集不变)。成因词的分隔符按各腿既有写法(本地腿 `tool_faces_invalid`、云腿 `tool-faces-invalid`,与 `toolAxes` 的两腿一致)。公面运行期零变。**行为变**:装了 `readToolFaces` 端口的宿主上,registry 下发的坏 `toolFaces` 条目不再上 wire(此前原样上 wire,引擎准备门整次拒、之后每一发请求都被拒);合形条目的 `toolFaces` 由原对象变为引擎判过的普通副本,空记录 `{}` 不再上 wire。没装端口 ⇒ 与此前逐字节同。门:`scripts/run-cloud-mcp-dropped-notice-test.mjs` M12 段 + `scripts/run-mcp-wire-caps-test.mjs` TF12 段(同一坏声明两腿同判对拍)。
226
+ - **工具结果卡:媒体描述符 / 汇总块由通用告知改为各自一句**(CC-907;**§129 TR-2**;🔴 行为变,窄,只对这两形):含这两形的 `tool_end.output`,其转录 `tool_result.content` 与文字读法(`toolEndOutputText`、`flattenWireOutput` / `flattenToolOutput` / `coerceOutput`、子代最终报告、错误卡文字串、信封 `tool_use_result`)里,这两形不再折成末尾那条通用告知 `[unsupported content omitted]`,而是**在块的原位**各变成一条该句的文本块(数据面英文;两车道同值);通用告知只对其余读不出的块出,合起来恰一条、在末尾。含这两形的块数组不再折成串(同带图像块的规则);纯文本块数组仍是拼成的串。带 base64 的媒体块、带 `data` 的 `document` 块与别的读不出的块行为零变。按原句字节匹配这两形的通用告知的读者(回放金样 / 活体门)要改。
227
+ - **八个与 sdk 同形 / 同名的公面名,声明来源改为 sdk 的同形型 / 同一对象**(CC-917;**§129 TS-2**;公面名一个不变,形与值零变;按名使用它们的类型位置零变化,另有两处窄的源码级差异,见本条末):① 五个换名同形型改为派生别名 —— `AskAnswer` = sdk `QuestionAnswerItem` · `FinishReasonUnknownFactsView` = sdk `FinishReasonUnknownDetail` · `TaskAgentWireSkill` = sdk `SkillSpec` · `ToolApprovalDelegation` = sdk `ApprovalCardDelegation` · `WorkflowParkRowView` = sdk `WorkflowRunPark`(此前各是本包一份手写声明,与 sdk 逐字段同形、同可选,sdk 下一次改形就漂;五个 sdk 型在 peer 地板 sdk 23.1.0 上都在、形同);按名 import 的端在类型位置上没有变化,发布的 `.d.ts` 多几条对 sdk 同名型的 type-only 引用(别名在消费方解析到消费方安装的 sdk 的那个型)。② 三个运行期常量 `ABORT_CAUSES` · `RUN_DEATH_VERDICT_CODES` · `STATUS_DERIVED_COARSE_CODES` 改为根入口对 sdk 包根同名常量的**再导出(同一只冻结数组)**:此前是本包构建期生成的另一只同词数组,端从本包取与从 sdk 取拿到两只。词与序逐位不变、仍冻结;包内读点(适配内核闭包,零外部包,不能做运行期 import)仍读构建期生成物快照 `SDK_*`,不再导出同名常量。**版本偏斜下的一处读法差**:装了比本包构建时更新的 sdk 时,这三个公面常量跟着已装 sdk(同名成员型 `AbortCause` / `RunDeathVerdictCode` 早已如此),包内判读(例:`readAbortCause` 的 `known` / `unrecognized`)仍按构建期快照 —— 已装 sdk 新增的词,公面常量里看得见、包内判读读作「本版不认识」。**两处窄的源码级差异**(两向可赋值、结构指纹同,但 TypeScript 对接口与字面对象型别名的待遇不同):(a) `TaskAgentWireSkill` 此前是字面对象型别名(带隐式索引签名),现在是 sdk 接口 `SkillSpec` 的别名(接口没有隐式索引签名):把它赋给 `Record<string, unknown>`、或传给约束为 `Record<string, unknown>` 的泛型参数,会编译红一次;改法 = 展开成新对象 `{ ...skill }`,或把约束放宽成 `object`;(b) `AskAnswer` · `FinishReasonUnknownFactsView` · `ToolApprovalDelegation` · `WorkflowParkRowView` 此前是接口,现在是型别名(型别名不能声明合并):宿主若用模块增补(`declare module '@sema-agent/client-core' { interface AskAnswer { … } }`)往这四个型里加成员,会编译红;改法 = 在宿主自家声明扩展型(`interface Mine extends AskAnswer { … }` 或交叉型)。其余(按名 import、作字段型 / 参数型 / 返回型使用、`extends` / `implements` / `keyof`)无差异。
228
+ - **旧口 `coerceWorkflowStatus(s)` 是新判官的单参特例;`projectWorkflows` 的行状态读整条 wire 行**(CC-919;**§129 FL-2**;🔴 行为变,窄,只对这两形):`coerceWorkflowStatus(s)` 现在就是 `workflowRunDisplayStatusOf({ status: s })`(公面名保留,判官只有一只,旧口不再有自己的词表;对任何入参的答案逐词不变)。`projectWorkflows` 的行 `status` 原先只读 `r.status`,现在交整条行给新口:行上带 `parked: true` 的行(修前按 `status` 词,窗口内是 `running`)与 `failed` + `workflow.agent_parked` 的行(修前 `failed`)渲 `awaiting approval`;其余输入逐词同旧。视图行型不长新键(`parked` / `errorCode` 只是判读输入)。按状态词 `failed` 判「这条 run 是否出过错」的读者,对停驻终态的 run 不再命中(它不是故障,是一次待决审批;要区分读 `errorCode`)。
229
+ - **托管层 `hooks` 被判官剔件的告知句改口:说「这一回合请求不发」,不再说「余下照装」(CC-920;§129 HK-3;措辞变,窄:只改托管层这一格)**:`settingsHooksSalvageNotice(salvage, 'policySettings', doc)` 与计划行 `settingsSalvage[].notice` / `hooksNotRunNotice(plan)` 里,托管层 `loaded-partial`(剔了件)修前沿用非托管层那一句 `…was ignored. The rest of this file's hooks are applied.` —— 而装配产物(`hostTurnSettings`)对托管层剔件早已判 `refuse_turn`(托管文件坏形 ⇒ 不发,不让托管守卫静默丢,§126 AS-2),句子与结局相反。现在**按层出句**:托管层剔件 ⇒ `Managed settings: <点名的坏件>. Because these are managed hooks, requests are not sent until the managed settings are fixed; ask your administrator to fix them.`(目录键 `config.hooks.salvage.managedPartial`,英 / 中各一句;坏件的点名短语与非托管层同一张表,事件名过展示出口、零值回显;**选语气与装配产物的拒发判断读同一只内部判定 `layerNotAppliedRefusesTurn`**,句子与结局不各说各话);**四格里「余下照装」只出在非托管 × 剔件**(非托管剔件、非托管整份拒、托管整份拒三句逐字不变)。「句只在与最终结局一致的格出」:托管层剔件 × 托管 `disableAllHooks`(整条腿按治理关停、计划不记托管行、装配产物不拒)这一格没有句。壳侧不再需要为托管剔件自铸 hooks 文案(对位终端的请托)。
230
+ - **开发依赖换钉(§129 HP-2)**:`@sema-agent/settings-schema` `^14.1.0` → `^14.3.0`(已装 14.3.0;锁文件只动这一件,完整性哈希与 registry 一致);peer 地板与支持底线不动(设置契约是构建期抄本来源,不是运行期 peer)。14.2.0 / 14.3.0 对已有生成物的影响(生成器同批吸收,公面零变):① 14.2.0 起请求面 MCP 条目判官的回显口径抽成上游包内私有叶子模块 —— 生成器同批登记回显叶子两组抄本(一行回显剥除集 · 外来串有界回显),MCP 判官的第三个注入名绑它,抄本里原先自带的三件退出(逐字节与新上游同);② hooks 坏形判官抄本随上游的注释改动重生成(代码逐字节不变);③ 生成物十一 → 十五只。
231
+ - **http hook 两张名单读全部准入层,多层取交(CC-601 后半;§129 HP-2;🔴 行为变,收紧方向)**:此前(HP-1)只读托管层文档里的名单;用户层 / flag 层写的名单只在终端本端执行器上生效、交给引擎的请求体不过它们。设置契约 14.3.0 把信任阶梯词表做成纯常量 `MIN_TRUST_WORDS`(`isAtLeast → trustRank` 闭包零 zod,唯一全局),层准入判官 `layerAdmission` 的构建期抄本因此抄得动(经 importInject 绑信任阶梯 / 成员准入 / 契约表三件抄本;链上无别的不自含闭包),本包 **hooks 计划装配口改读全部准入层**:层集 = 层准入判官在 `httpHookAllowlists` 类目上答 `admitted` 的层(今天托管层 / 用户层 / flag 层;项目层 / 本地层在地板之下 —— 仓库可控的一个 `[]` 会让用户自己的 http 守卫 hook 不发出 = 守卫失效),本包不手写层表、不写信任档;判官要的工作区信任读数交收紧词 `declined`(端口只交一位布尔;该类目上三个读数逐源同答,门钉)。**合并律 = 跨层取交**(每一张准入的名单都必须放行;上游契约表该行 `denyFirst` / `setNarrower` 与 `httpHookUrlVerdict` / `httpHookEnvVarsAllowed` 同律 —— CC 是逐层拼接,会让用户层往托管名单里加 URL 绕过管理员):URL 名单逐层问,第一张拦下的那一层被计划行点名;变量名单取交、坏形点名第一个坏形的准入层。各层缺席 / 空 / 坏形语义逐层同托管层(缺席 ≠ 空名单)。**行为变(收紧方向)**:用户层 / flag 层写的 `allowedHttpHookUrls` / `httpHookAllowedEnvVars` 现在也管交给引擎的请求体 —— 名单外的 http hook 不再随请求体出门,`allowedEnvVars` 收窄成交集。计划行 `httpPolicyDrops[]` 多必填位 `layer`(`HookSettingsSource`),四句目录句多 `{layer}` 位(取设置来源措辞单源表的用户面名)。读法:托管层读治理门那一拍读过的同一份文档,其余准入层读设置来源遍历读过的同一份快照(每个源每份计划至多读一次),请求体上没有 http 条目时不为名单读任何层的文档;读某一层文档抛 ⇒ 这一层的名单读不出,请求体上每一只 http 条目都不上(新原因词 `layer_unreadable`,行点名那一层;别型 hook 不受影响 ——「限制未知」不折成「没有限制」);层准入判官抛 ⇒ 整条腿按治理读不出关(排在托管 `disableAllHooks` 等已定结局的门后面)。名单键 / 元素是访问器或含空洞按坏形读(比上游更保守)。公面常量 `HTTP_POLICY_DROP_REASONS` 四 → 五词,公面型 `HttpPolicyDropReason` 多一员,消息目录键 +1 对(`config.hooks.httpPolicy.layerUnreadable`)。**终端壳里的后置筛整臂可退**(两半名单现在都由本包接管;退役条件与两点方向不同的差异见 §129y ③:包取交〔更严〕、不读项目 / 本地层〔更松于壳〕)。公面运行期导出零变,公面型零增(`HttpPolicyDropRow` 多必填位 `layer`)。
232
+
233
+ - **结果帧的 CC 臂只有一种答法:铸点读 `printResultArmOf`**(CC-924;**§129 PR-2**;🔴 行为变,在包):`subtypeForErrorCode` 此前自带成本 / 轮数两张码集合与一条 `output.invalid` 比较,现与新口读同一张上限表(`src/engineErrorCodes.ts`;表住在适配内核闭包里已有的文件中,可移植性棘轮不抬),五码的 subtype 逐码同 0.100.0(轮数 `error_max_turns` · 预算 `error_max_budget_usd` · 结构化输出重试 `error_max_structured_output_retries` · 墙钟 / token `error_during_execution`),唯一的新增是帧上按位的 `_sema_limit`。`headlessReconnectWire.ts` 里「`timeout` 分到 `error_max_turns`」的旧注释订正(`timeout` 行读成 `unknown` 终局、`error_during_execution` + `_sema_outcome: 'unknown'`;早于 core 5.8.0 的写法)。🔴 **行为变(在包)**:本包铸的每一只结果帧(`doneToSdkResult` / `failedToSdkResult`,两车道的 `runStream` 都经它们)交「终局读数 + 本流转录末行」问 `printResultArmOf` 一次,`subtype` / `is_error` / `stop_reason` 只读它;铸点自带的映射 `subtypeForErrorCode` 删。`runStream` 把本流主线程最后一条 `assistant` / `user` 行(含合成终局行;其后流过的主线程正文算一行模型正文;子流身份三键 `parentToolCallId` / `sourceTaskId` / `bgAgentId` 任一在场的段末帧 / 流式正文 / 聚合正文不算,**§129 FV-2**)经 `observed.lastRow` 交铸点;结局不知道那一行出流后重判一次。臂是 `success` + `is_error: true` ⇒ 帧按 CC 成功臂铸:必填 `result` = 末行正文(读不出 ⇒ `errors[]` 换行拼接);`errors[]` 这一版照留(CC 成功臂没有这一键 ⇒ 过渡一版,0.102.0 删;按 `errors[0]` 出失败句的端改读 `result`),码 / 成因等超集键照留。落点:非上限族的 `failed` / `blocked` / 结局不明在 `runStream` 上恒先出合成终局行 ⇒ 由 `error_during_execution` 变 `success` + `is_error: true` + `result`;停驻且末行是工具调用 ⇒ 仍 `error_during_execution`;上限族与端直调(不交末行)不变。判成败读 `is_error`(或 `terminalReasonForResult`),不读 `subtype`(交互 / 网页 / 桌面 / `-p` 四车道同一只帧)。停驻 ∧ 末行是模型正文那一形帧走成功臂,`-p` 停驻出路句只在过渡键 `errors[0]` 上(KL-1031)。交互车道 `adapt()` 不因 `result` 多渲(与已上屏末行同一段)。CC 2.1.296 结果帧子类闭集内,不铸表外词。
234
+ - **设置文档凭据判官对齐终端壳原判据:串值补表单编码读法、`isCredentialConfigKey` 名判补两读**(CC-927;**§129 KP-3**;🔴 行为变,两向都是多判出 —— 判官更严;签名与型零变):`settingsCredentialKeyPaths` 的串值判据在展示出口那张网(`looksLikeKnownSecret`)之外,对原串与至多三层百分号解码的**每一层**补三读(每层读两份:本层与它的字节边界读法 —— 非 ASCII 的转义是词界,`%FFBasic+dTpw` / `%C2%A0Bearer+abc` 的方案词只在边界读法里与前面的字节断开) ——「加号读作空格」再问一次展示网(`Bearer+<令牌>` / `Basic+<令牌>` / `%2B` 解出的加号 / `-----BEGIN+RSA+PRIVATE+KEY-----`)、方案词 `bearer` / `basic` 后紧接编码空格(`+` 或 `%20`)再接任意一个非空白记号(不设散文用的 8 字符下限:`Basic+x`、`x-Bearer%20abc`)、解到第三层之后仍解得动 ⇒ 归一化没走完,按凭据算(判不清不当干净);`100%` / `%s` / `a+b` 这类单个 `%` 或加号的普通值不命中;URL userinfo / 查询串两支照留。与设置契约的 `containsSecretToken` 在门里逐格同答(自造 216 格语料:修前包假而契约真 71 格 ⇒ 0,两向 0 不同)。🔴 **没有**直接读契约判官(票面原写「改读」):契约包只是本包开发依赖(`package.json` 不动,运行期不可 import),判官的闭包落在契约包的包内私有模块里,构建期抄本生成器只读包根出口、抄不了 —— 同答由门保证,到货形见接入档 §129 包侧缺口。名判:`isCredentialConfigKey` 在「最后一词 / 结构化词尾正则」之外补 ① 旧切法(只切小写 / 数字后接大写)的最后一词 —— 缩写词界(0.100.0)把 `APIkey` 切成 `ap` / `ikey` 而漏掉终端判中的 `apikey`,「终端旧判据判中的名字本口一定判中」按构造成立;② 整名压扁(去 `_` `-` `.` 空白、小写)后以长凭据词收尾(`apikey` / `token(s)` / `secret(s)` / `password` / `passwd` / `credential(s)` / `cookie(s)` / `authorization`;裸 `key` / `pass` / `pin` / `auth` / `session` / `cert` / `salt` 不进尾表:`monkey` / `bypass` / `obsession` 不误中)—— `APIkey` / `apikey` / `XAPIKEY` 命中,`apiKeyHelper`(命令,不藏)/ `monkey` 仍不命中。读数(终端壳判据的 14824 名格):终端判中而包不中 1 名(`APIkey`)⇒ 0;包判中而终端不中 113 ⇒ 561(新增 448 全是 `<词><凭据词>` 无分隔压扁形,取宽方向);`isCredentialEnvName`(`envDiff` 143 名,方向全是包更宽)不在本版,只记读数;终端 kpdiff 金样的 `kpDiff` 0 与票面「15 格差分 12 格包漏」的出入在接入档 §129 KP-3 逐条列出。后果:同一份设置文档上命中的键路径只增不减(告知 / 收紧写出权限位 / 设置工作副本藏值三处读点都会多命中)。门:`scripts/run-settings-credential-key-paths-test.mjs` K12(含三枚门内负控)。
235
+ - **派发前重判 `refilterHostSettings` 规则由「只做减法」改口「只能更紧」;结局 `send` 臂多必填位 `tightened`;`HostSettingNoticeId` 多一员 `HS-FILEHISTORY-RESTORE`**(CC-928;**§129 HS-1**;🔴 行为变 + 型面加位,运行期导出不变):装配之后、派发之前用户才关上自动记忆 / 文件检查点(就绪门等待 + 外层重发复用同一份请求)时,0.100.0 的重判口「其余宿主键一律不动」让这两个顶层键无处可落,请求照原样出站。现在:此刻的产物 `memory` 行带 `'off'` 而请求没带 ⇒ 补 `memory: 'off'`;此刻 `fileHistory` 行带 `'disabled'` 而请求没带 ⇒ 补 `fileHistory: 'disabled'`(两枚字面就是装配口的单成员闭集字面,不另写);只补本车道有座的键(与装配口同一只车道射程判官:`fileHistory` 在 utility 车道无座 ⇒ 不补不拒)。补上的键记进结局的 `tightened`(产物键序;没补 ⇒ `[]`)。🔴 补 `fileHistory` 时请求已要还原文件(`restoreFiles: true` / 非空串 `rewindFilesTo` / 退役 `rewindFiles: true` 任一,与服务端受理门同一读法;值 `false` / 空串 / 非串不算)⇒ **不补、拒**(同体带两者上游 400 `request.field_conflict`,在本地说清;新通告 `HS-FILEHISTORY-RESTORE`,`turn` 面,目录键 `session.hostSettings.fileHistoryRestoreConflict`,英 / 中);此刻判不出文件检查点能不能关且车道有座 ⇒ 拒(既有路径,句同 `fileHistoryUnjudgedRefusal`,本版加门格)。请求已带同键同词 ⇒ 不动;请求带了而此刻不带 ⇒ 不动(不放宽);请求上同键是别的值(手造请求体)⇒ 换成产物的那一词(单成员闭集,只会更紧);hooks 取交照旧,与补键同一次重判完成;有补或有删 ⇒ 新请求(浅拷),都没有 ⇒ 原样返回同一只请求;永不改入参;请求上要用到的键是访问器 / 抛错代理 ⇒ 拒(判与带不是同一次读,判不清不发,句 `HS-PROJECTION`;此刻不要的键不碰)。**编译红一次**:手造 `HostSettingsRefilterResult` 的 `send` 臂字面量的端(通常是测试桩)补 `tightened: []`;对 `HostSettingNoticeId` 写穷举 `Record` / `switch` 的端补一臂。`src/hostTurnSettings.ts` 与 `refilterHostSettings` 的头注同批改口(「只做减法」→「只能更紧」)。门:`scripts/run-host-turn-settings-intake-test.mjs` HI9(含四枚门内负控)。
236
+ - **停驻「问答 / 工具」两臂对「是不是问答」先读引擎卡词**(CC-424;**§129 UC-5**;🔴 行为变,窄):durable 停驻上「这是不是一只问答」此前有两条读法 —— 待决行(`askParkRowArm`)与流内停驻门(公面 `isToolApprovalGate` 背后的判定口)各自先看工具名、再看门种,两处各写一份名字判据。引擎 7.49.0 起在停驻门与待决行上铸一个卡词 `approvalCard`(`question` ⇔ 引擎保留的问答工具):现在两条臂读**同一只**判官(卡词在场 ⇒ `question` 走问答臂、其余七词走工具臂,不再看工具名、行上有没有问句载荷),卡词缺席 / 表外 / 坏形(7.49.0 之前停驻的存量行、服务端没把门上卡词过境的流)⇒ 退回既有的名字 + 门种读法,逐格同修前(引擎不回推,本包也不回推);门种判官仍在先,门种在审批腿之外的载体卡词管不到。🔴 射程如实说:引擎只按**正名**铸保留卡 —— 一只调用方工具若正名就是 `AskUserQuestion`,引擎同样铸 `question`,这一格今天无从区分真假问答工具(既有缺口,非本版引入);所以对真引擎,卡词在场时的读数与修前的名字读法一致,本版的收益是**单一读法**(两处不再各自按名字认)与名字读不出 / 被改写的载体(例:待决行上工具名缺席的 `human` 行,卡词 `generic` ⇒ 工具臂,修前落问答臂)按引擎的话读。卡词窄读口 `readApprovalCardWord` 的定义挪进叶模块(根入口名与值不变)。回落读法登记退役 RL-251(复核期 0.102.0)。
237
+ - **终局「服务商拒绝」的重发句读引擎判词**(CC-473;**§129 UC-6**;🔴 行为变,窄):合成终局行尾那一句「改了重发 / 稍后再试」此前只看状态码,与同一条终局的出路机读位和重试句口(都早已读判词)说的相反 —— 额度耗尽的 429 仍说「rate-limiting … wait and try again」、额度类的 400 仍说「shorten it or remove an attachment」。现在引擎判词是 `quota_exhausted` 且状态在判词压得过的几档(400 / 413 / 422 / 429、表外状态)⇒ 分类词 `quota_exhausted`、`resend` 恒 `not_by_editing`、句 = 额度句(点名状态码、账号在有人处理或用量窗口重置前服务不了、出路 = 查账号或换模型;服务商回声不进句;额度半句与重试句口里同一句逐字相同,门钉);401 / 403(状态压判词,出路词读作 `check_credentials`)与 404 / 5xx 不变;别的判词(`throttled` / `overloaded` / `stop_other` / `unknown` / 表外 / 缺席)一个字节不动。接力读口(`adapt` 重建行)认额度键,伪造 / 与状态不配的整键丢。重试行的 `rateLimits` 自 0.93.0 起恒 `null`(额度判词在重试帧上只作顶层判词位原样透传、不进 `rateLimits`;引擎对额度耗尽通常一次请求就停、判词在终局上,服务商明示可重试的应答头能压过判词),本版不变。
238
+ - **`allowRuleShadowed` 的 `hook` 成员 `entries` 现在是放行这次调用的扩展注册名**(CC-419;**§129 UC-4**;零码改,门钉):引擎 7.52.0 起该成员的条目不再恒空,带放行它的注册名;读口对 `hook` 一视同仁(串数组即可,空表仍是读数、两种形都算让位证据),句口按「成员词: "名"」成句(不可信文本一律引起来并过展示出口)。本版订正读口注释里「`hook` 恒空表」的旧话并加门钉(活卡帧 / 耐久行两腿端到端)。mods 内核波① 在本包的其余足迹对表:通告码 `mods.registration_refused`(码册 98 内,受众 `user`)· 接线回执第十四段 `mods`(0.100.0)· `./mods` 子路径转口均已在位,闭集(座 / 档 / 事件表)不另生成 —— 转口原样转出内核包同值。
239
+ - **审批族 202 停驻有界重投恰一次,两条腿同一只判官**(CC-861;**§129 XA-6**;🔴 行为变):服务端 202 `parking_in_progress` 体写「这一发没生效;等 `retryAfterMs` 重试一次(落停驻赎回臂)」⇒ 发送机审批族与活卡腿都在体点名这张卡 ∧ `retryAfterMs` 是有限非负数 ∧ 不超过 5 s ∧ 整次投递预算还够 ∧ 没中止时等**恰** `retryAfterMs`、同体重投一次;第二次回答按它自己分类(仍 202 ⇒ 停驻结局与停驻句恰一次 · 200 ⇒ 落定 · 回放 ⇒ 别处先决 · 404 / 410 ⇒ 按「不在待决」分)。**成文改口**:0.93.1 起「审批 202 零重发」(接入文档历次 PK-1 段与 §128 包侧缺口 DS ① 的「待定」)作废,以本条为准。
240
+ - **活卡腿整段改调发送机的投递段**(CC-862;**§129 XA-7**;🔴 行为变):活卡 respond 的发送与发送机审批族共用一只投递段(归因阶梯 × 有界传输重试 × 停驻重投);读体段不变。活卡腿新得有界传输重试(首发 + 3 次、8 s 墙钟,只在没拿到服务端判决与 5xx〔501 除外〕时):重试耗尽 ⇒ `unsettled{transport_exhausted}`(与耐久腿同词;修前一发即落 `no_answer`);重发过之后撞 404 / 410 ⇒ 读数 `standing: 'ambiguous'`(上一发可能已落地,不说没生效;与发送机 `unconfirmed{gone_after_retry}` 同一只判官)、结局 `unsettled{engine_error}`;撞的那一只是绑定不符安全停包装(404 / 410 在它的 `cause` 上)⇒ 读数同样 `ambiguous`,结局 `unsettled{engine_refused}` 带 `safetyCode: 'binding_mismatch'`。卡被中止的那一发中断拒绝不经投递段(即发即弃,不变)。本包安全停在场时不做这一重试(含 5xx 形):宿主在答口抛本包安全停包装(`HitlSafetyError`,码在本地闭集 `GATE_FAILURE_CODES` 里:`binding_mismatch` / `no_pending` / `wrong_gate` / `binding_missing` / `empty_answer` / `bad_plan_edit` / `bad_plan_mode`),`cause` 是断网 / 串 / 5xx,或同名对象自带 5xx ⇒ 两条腿各 1 发停 —— 活卡:绑定不符 `unsettled{engine_refused}` 带 `safetyCode: 'binding_mismatch'`(0.100.0 同),别的本地码按那一次读数铸、不带安全停码(`cause` 是断网 / 串 ⇒ `unsettled{no_answer}`,`cause` 是 5xx ⇒ `unsettled{engine_error}`;同名对象自带 5xx ⇒ `no_pending` 为 `unsettled{engine_refused}`〔本地码答「已决」〕、其余 `unsettled{engine_error}`,另带对象 / 函数形的非答复 `cause` ⇒ `unsettled{no_answer}`(载体指到那只 `cause`;串形 `cause` 不改载体,同只自带 5xx))(0.100.0 这几形 1 发 `not_sent{no_pending}` / `not_sent{wrong_gate}` / `not_sent{safety_stop}` 带码);发送机 1 发 `unconfirmed{transport}`(5xx 形 `unconfirmed{server_error}`)、不带安全停码 —— 这两个结局词的闭集义是「重试用尽」,这里只发了 1 发,成因词与安全停码的余项随 CC-1015(0.102.0)。安全停要的是重新给人看(修前两条腿同体重发、第二发落地即 `decided` / `applied`,每发都抛则 4 发 —— 断网 / 串形活卡 `unsettled{transport_exhausted}`、发送机 `unconfirmed{transport}`,5xx 形活卡 `unsettled{engine_error}`、发送机 `unconfirmed{server_error}`;0.100.0 发送机同)。射程:这一位只看顶层与答了的那一层 —— 安全停包装在顶层、或它自己就是答了的那一层(自带状态)才让位;夹在成因链中间(被普通包装再包一层而自己不带状态:`new Error('…', { cause: <安全停包装> })`)⇒ 不让位、照常重试(首发失败、重发成功时活卡与发送机 2 发、第二发落地,每发都失败则重试用尽 4 发;活卡相对 0.100.0 是回归 —— 0.100.0 活卡没有这一重试,这一形 1 发;归因阶梯的去键 / 换名重发同样不让位,见 §129 FW-3 条;中间层的身份位读法随 CC-1014,结局词随 CC-1015)。决断桥自己的 decide 瞬断重试按走读走到的层上的实例判让位(自身起至多四层,先取得瞬断证据即停)—— 普通包装没先给出瞬断证据时挡得住更深的安全停实例,这一形在那里不重发(耐久腿 1 发);反过来,同名字段而非实例的仿形包装(普通对象)它不挡 —— 走读取得瞬断证据时耐久腿照重试(重发成功即落地),码不在闭集的安全停类实例它挡、这一位不挡(两读法合一随 CC-1014)。
241
+ - **`grant_changed` 不按瞬时放回、不收口;装配期新拒一形**(CC-375;**§129 XA-2**;🔴 行为变):技能授予摘要变了的批准拒体照带 `retriable: true`,读数不再铸 `transient`(修前读成瞬时、卡被放回让人再批再撞同一 409),`decisionRefusalClosesOut` 对它答 `false`(卡仍可拒)。`buildTaskRequest` / `applyLiveRequestDefaults` 在 `disableSkills: true` 与非空 `userInvokedSkills` 同在时按名响亮拒(契约写明这一组合引擎必拒启;名字对不对仍归引擎判)。
242
+ - **计划审阅:宿主可见点按卡上展示的标签判决断性;400 体形门不再说「仍在等」**(CC-386;**§129 XA-3**;🔴 行为变,收紧方向):记账口 `notePlanReviewAnsweredIfDecisive` 与两只 responder 同调一只判官 —— 两选卡上的「auto」标签修前在记账口算决断性,现在 `dismissed`;没有展示证据的卡在两只 responder 那里一律非决断(记账口只推代、不投递,按本包任一卡形的标签判)。`still_parked` 只在正面证据上铸(内部第二读法删):非批准带批准后档撞 400 `request.field_conflict`(服务端载入待决计划之前的体形门)改落 `not_applied`,正文不再说「the plan is still waiting for review」;批准 + 自动接受编辑那一拒照旧 `still_parked`。
243
+ - **自动答复判官上收余项与姿态车道代际证明**(CC-435 / CC-553;**§129 XA-4 / XA-5**;零行为变):宿主阶梯前自判四位与 `automaticAnswerVerdict(card, 'standing_rule')` 等价(门格 + 判序表,宿主可收成一次调用);姿态车道按面放行由支持底线结构证明(底线引擎 ≥ 按面放行引入版 7.47.0),运行期不按版本分支。
244
+ - **「不再询问」缺席词句表的键集改取词表属主的生成物**(CC-541;**§129 UB-3**;型面零变、行为零变):`ruleOffersAbsenceDetail` 的句表(`mandated` / `allow_outranked` / `ask_rule_matched` / `lane_cannot_speak` 四词)此前键集钉在 sdk 的转录上(sdk 滞后引擎一代是已发生过的事:强制词 CC-606)。现在生成器第十九批把引擎包根 `RULE_OFFERS_ABSENCES` 生成为 `CORE_RULE_OFFERS_ABSENCES`(只进生成物、不上根入口),句表字面量 `satisfies Record<CoreRuleOffersAbsence, …>` 钉在它上面,sdk 转录与它**两向钉**(任何一边多 / 少一词,编译当场红);旧词 `shadowed` 处处不在。拆词本体(两新词各一句、名单问换到 `ask_rule_matched`、规则车道第 7 行按唯一反面词判)0.98.0 已交付(CC-733 / §126 PN-3);老服务端遗留的 `shadowed` 无专臂 —— 落表外词的中性句(不回显、不猜两义里的哪一义),自动答判定对它按「必问」(支持底线服务端 7.129.1 不再发它,门 ask-class-reason L3)。同时订正 `hitl/toolApprovalWire.ts` 两处陈旧注释(sdk 8.3.0 的三词表、含 `shadowed` 的互斥帧例子)。
245
+ - **传输失败成因链:三份读法并入同一只走读口(分诊判型随之读到同一张码表;决断桥重发判型与修前按类对拍)**(CC-417;**§129 XC-6**;🔴 行为变,窄):成因链上的读(层数上限 / 先读本层再读 `cause` / 受保护读法)只有 `walkCauseChain` 一只;瞬断码表(十二词)并进 `engineWireFor`。审批决断桥的超时判型与修前逐例同判;重发判型与修前只在三类上分歧(状态位在场却不是数 / 域外的数 / 只有旧槽 `statusCode`,见 FV-4;门内嵌 0.100.0 逐字抄本作预言机,45 104 例按类计数、类外 0);`isWireTransportError` / `classifyTurnWireError` 的 transport 臂在成因链上只在两类里分歧(顶层状态位的两形见 FV-4):① 成因链上更深一层带数字 `status`(或该位读不出)而修前凭「`cause` 在场」判 transport ⇒ 现在不判 transport:那一层的 `status` 是数且顶层状态位缺席 ⇒ 落 **`http` 臂**(状态 / 码读答了的那一层;呈现 / 座位 / 提交失败分类与顶层同一状态同答 —— 包了一层的 5xx ⇒ `server_error`、给重试);读不出 ⇒ `internal`;② 成因链上某层的 `code` 在瞬断码表而修前判 internal ⇒ 现在判 transport。`AbortError` 这类只有名字的错分诊不拿名当证据;`cause` 在场仍判 transport 的起点规则不变。模型探针证据文字展开同形存量一并改读走读口(展开出的文字逐字同旧)。 分诊对最外层 `status` 只读一次(快照),链读数不再读第二次。 **本包的 HITL 决断发送机受影响**(`sendHitlDecision` 与活卡腿共用的投递段)—— 包了一层的 503 与顶层 503 同律(4 发、`unconfirmed{server_error, status: 503}`;0.100.0:4 发 `transport`),4xx / 501 读答了的那一层的码(车道关回落、停驻轮询、归因阶梯同)。
246
+ - **补充句链的配额读口与人话挪进 `wireRefusalCopy`**(CC-416;§129 XC-5;公面零变于出句):原先私有在补充句链里的 `quotaDetailOf` / `quotaExhaustedLine` / `quotaResetInstant` / 月份表,改为公面 `quotaExhaustedFromError` / `quotaExhaustedContent` / `quotaResetInstantText`;补充句链出的配额句与公面口的整句逐字相同(两种语言)。
247
+ - **看图位单源:粘贴图与 `@` 图片过同一条读法**(CC-409;**§129 XE-3**;🔁 行为变):`encodeHumanTurn` 在明知模型不能看图(`caps.vision === 'no'`)时,**粘贴图同样不入座**(份额记 `vision_no`、进 `degraded`,不占张数与字符座位;修前只有 `@` 图片过这一条,粘贴图无条件入座 = 同一事实两种处置);说不清(`unknown` / 缺席)⇒ 粘贴图也照发并在答案的 `notices` 里记一项(`HumanTurnNotice.ref` 型从 `string` 放宽成 `string | number`:`@` 图片是附件 uuid、粘贴图是它在该条 `images` 里的下标,与份额项同一约定);只有图没有正文而图被看图位扣光 ⇒ `empty`(响亮拒,不发空 objective)。`imageSentOnUnknownVision` 的两条目录句去掉「`@` 提及」限定(现在也说粘贴图)。**编译红必改**:无(型只放宽);**行为变**:对看图位为否的模型,此前随消息发出的粘贴图现在发不出去,宿主应渲 `humanTurnDegradedSentence` 的那一句。
248
+ - **合成终局行铸点的行首前缀常量真源挪进叶子 `rowKind.ts`、三只正文谓词 `@deprecated`**(CC-286 (a) ④;**§129 XE-1**):`RUN_STOPPED_MESSAGE_PREFIX` / `RUN_BLOCKED_MESSAGE_PREFIX` / `MODEL_OUTPUT_ERROR_PREFIX` / `OUTCOME_UNKNOWN_ROW_PREFIX` 的定义挪到叶子(经 `adapter/runStream` 照旧转出,公面名字与值不变);`isGovernanceStopRowText` / `isModelOutputErrorRowText` / `isOutcomeUnknownRowText` 标 `@deprecated`,行为逐格不变(与 `inferLegacyRowKind` 读同一张前缀表,门钉两者在语料上逐格同答);**终端删掉对它们的 import 之后的下一个本包版本**退出根入口(退役登记 RL-220)。新代码读 `rowKindOf` / `inferLegacyRowKind`。
249
+ - **自愈结局行「只有文字交出去」句改成条件句**(CC-297 ⑧;**§129 XE-2**;🔁 措辞变):`session.selfHeal.row.steered.textOnly` 从事实句「a steer carries no attachments, so any images in that submission were NOT sent」改成「if that submission also had images or attachments, they were NOT sent」(中文同改)—— 句子不再断言「插话不带附件」(插话带图的席位到货之后那句事实就不成立了),只说「若那次提交还有图片或附件,它们没有送出」。四种已交结局(applied / queued / parked_for_wake / unknown)的行都带这一句,字节随之变(其余字节不变);目录金样 `catalog-migration-golden/cc751.json` 的 `changed` 登记 31 条。
250
+ - **投递账本的老两态读口 `@deprecated`**(CC-471;**§129 XE-4**):`knownUndelivered` / `knownUndeliveredMessage` / `withoutUndelivered` / `promptKnownUndelivered` / `withoutUndeliveredPrompts` 读数逐格不变(`a ∧ ¬d`),但把「在飞 / 结算没写进旁车」与「确定没交出去」混成一格;改读 `deliveryStateOf` / `deliveryStateOfMessage`(三态)。**终端改读三态口之后的下一个本包版本**退出(退役登记 RL-221)。
251
+ - **请求装配口三只的第二参放宽、缺席成因词表四 → 五、`RequestFieldSpec` 加两个可选位**(CC-476;**§129 XE-5**;🔴 型面 BREAKING):见 Added 的提交身份条。字符串车道形的装配 / 座位 / 表外键三读数与 0.100.x(0.88.0 金样)逐字节同(门钉);车道表哈希把 `attachmentIds` 行新增的两键投影掉再对金样。
252
+ - **`-p` 车道八只 resolver 改收值、不收 argv(CC-475;§129 XF-8;🔴 型面 BREAKING)**:`resolveHeadlessPermissionMode(flags, env?, permissionModes?)` · `scenarioForPrint(flag, env?)` · `limitsForPrint(flags, env?)` · `resolveHeadlessFinalVerifyDetail(flags, env?, hooks?)` / `resolveHeadlessFinalVerify` · `resolveHeadlessInteractiveTools(stance, env?)` · `resolveLiveInitToolFace(flags, env, opts?)` 的首参由 `argv` 数组改成终端 commander 解析之后的**值**小对象(上面 `### Added` 的新入参型),包里不再按旗名扫命令行 —— 一份命令行只有终端壳一个读者,网页端 / 桌面端没有 argv。**`-p` 车道零行为变化**(在宿主按下述两条纪律交值的前提下):门 `run-argv-values-equivalence-test` 把 1100+ 个 argv 向量 × 三组环境经终端 commander 的替身翻成值,七只 resolver 的整套结局与取自 0.100.0 的金样逐条相同。缺值语义:权限旗 `missing: true` ⇒ 当没给旗(继续看 `dangerouslySkipPermissions` 与环境旋钮);场景旗 `missing: true` ⇒ 响亮拒;沙箱 / 限值旗在场无值 ⇒ 交 `''`(响亮拒);限值 / 沙箱 / 场景旗要交**命令行原文串**(数字化之前),在场却不是串 ⇒ 响亮拒;`noFinalVerify` 是负旗『出现过』(任一次出现恒赢),终端的正负旗成对注册会丢它,须自己保留(KL-849)。`resolveHeadlessInteractiveTools` / `resolveLiveInitToolFace` 的『要不要交互门』改收立场模式值(恰为 `plan` ⇒ 不 stamp)。设计稿票面写的 `tools` / `allowedTools` / `disallowedTools` 三位 `resolveLiveInitToolFace` 从不读,不收。**编译红必改**:传 `argv` 数组的调用全部编译红,改法:把壳里 commander 已解析的取值交进来。
253
+ - **`SEMA_ATTACHMENTS` 的值形似凭据 ⇒ 响亮拒绝(CC-411 (e);§129 XF-6;🔴 行为变,窄)**:`attachmentsForRequest` / `attachmentsSubmitVerdict` 对点名退役键必拒、对单 token 未登记词却按历史契约静默当默认 —— 把钥匙贴错变量既没被拦下、那把钥匙也留在不该有它的环境变量里。现在单 token 且是展示出口凭据判官认的已知凭据字面形 ⇒ 抛 `AttachmentsSpecRefused`(不抛的口 `ok: false`,`refusedKey` 缺席),拒句点名『凭据』并给出路;清单里夹凭据形的项(`key=<凭据>`〔等号右侧那一形也过判官〕/ 前导 `+` `-` / 退役键名带 `=<值>` 的写法)仍拒,抛出物的 `token` 位换成遮盖记号、`message` / `why` / 句子零原值。非凭据的单词(`notAKey` / `1` / `on` …)与已知词逐字节同(KL-840)。
254
+ - **`WIRE_RULE_TRUST_ORDER` 改由设置契约信任阶梯派生(CC-489;§129 XF-7)**:五个设置文件来源按契约生成物 `SETTINGS_IS_AT_LEAST` 的档排(并列者按既有先后),`cliArg` 紧跟 `policySettings`、`session` 紧跟 `flagSettings` 两个表外显式行;手写七词序数组(包私有常量 `RULE_TRUST_ORDER`)退役(RL-231)。派生结果与 0.100.0 的序逐项相同(门里 19 × 19 = 361 对两向全积对拍);导出常量的类型由七元组放宽成 `readonly WireRuleOrigin[]`(值与顺序不变)。`session` 的位置按旧序保留(契约阶梯排最低,见 KL-843)。
255
+ - **交互车道句子不再带裸 HTTP 路径(CC-463 P2-d;§129 XF-14;🔴 行为变,措辞)**:`resumeAttachReplayDisclosure(taskId, lane?)` 与 `resumeRunningCancelUnconfirmedRow(taskId, lane?)` 多可选 `lane`,会话占用终局行按 `ctx.lane`,会话占用自愈行(陈旧停驻两句 / 非停驻降级句)的默认『结束那条 run』半句:交互车道(含未声明车道)由 `GET /v1/runs/<id>` / `POST /v1/runs/<id>/cancel` 改成只陈述事实 —— 『the engine's own record of run <id>』/『its real state lives on the engine, under run <id>』/『end run <id> on the engine』(终端用户敲不动一条裸路径:base URL / 凭据 / 身份头一样都没人告诉他);`lane: 'print'` / `'utility'` 保留带路径原句;headless 面机读指路 `resumeRunningNoUiGuidance` 不变。宿主 `endRun` 槽照旧优先。目录键 `session.selfHeal.endRun.engineInteractive` / `….noId` 中英同键。
256
+ - **子代起跑帧的 `agentType` 进『开始』事件(CC-106 ②;§129 XF-16;行为变,窄)**:`task_started` 帧带的 `agentType` 记进 fleet 行类型台账(workflow 车道不记),首个 tick 的 `subagent_lifecycle` 开始事件据此带 `agentType`(原串);此前开始事件只在 tick 自带类型时才有。没有起跑帧 ⇒ 键缺席(不拿展示名冒充)。
257
+ - **`PLUGIN_HOOK_REASONS` 22 → 23(CC-500;§129 XF-13)**:新员 `compaction_local_fallback`(『这次压缩在本端本地摘要,设置来源的压缩 hook 由本端在摘要之前跑』)—— 对该联合写穷尽 `Record` / `switch` 的端编译红一次。
258
+ - 🔴 **准备期拒句默认不再说「草稿留着」**(CC-940;**§129 RQ-1**;行为变,措辞删):附件被拒(两形)与技能未载入两句,此前无条件带「Your draft is kept」—— 那是**宿主**的行为(终端两条车道提交后都不留草稿:交互车道提交即清输入框、`-p` 没有草稿),包不该替宿主说。现在默认不带,宿主声明 `draftKept: true` 才带(见 `### Added`)。补句链 `turnFailurePresentation` 的 notes 与两个派生窄视图 `userAttachmentRefusalContent` / `userInvokedSkillRefusalContent`(入参里没有宿主事实位)恒不带这半句;要带的走 `prepareRefusalNoteOf(code, { draftKept: true })`。0.100.0 删掉的「Nothing was started」不回来(同码在同步腿 200 + failed 上是前几轮已做过工作的那一形)。**编译红**:无(可选位)。**改法**:此前靠壳持有臂不渲这两句的宿主,持有臂可退,直接渲包句。
259
+ - 🔴 **目录一路的可解析证据改读采纳读数;旧位 `engineAcceptsCatalogDefault` 退出读数型**(CC-941;**§129 MI-1**;🔴 型面 BREAKING + 行为变;退役登记 RL-183 执行):本包支持底线(服务端 7.129.1)以上的引擎恒接受「目录缺省代替启动时的模型名」(引擎自 7.101.0 起 env 模型名或目录缺省任一在场即可启动),所以目录一路的证据只有一个合取:目录读数 `complete` ∧ 采纳读数 `catalogAdoption` **不是 `refused`** ⇒ `resolvable`;`refused`(引擎必把这份目录整拒)⇒ 按 `partial`(措辞不变)。修前(0.83.3 – 0.100.0)这一路另要宿主按自己钉的引擎版本报一只布尔位 `engineAcceptsCatalogDefault`:位 `true` ⇒ 可解析、`false` ⇒ `partial`、缺席 / 非布尔 ⇒ 判不出 —— 宿主停写那一位后,「目录 `complete` × 采纳读数缺席 / `undetermined`」会无端退成判不出。现在采纳读数缺席 ≠ 接受,也 ≠ 整拒(只是没有「会被整拒」的证据,仍按支持底线的承诺读成可解析);目录读数不是 `complete`、又没有 `shapeRefused: true` 的事实位(见 `### Added` 的 `catalogFacts`)时,采纳读数完全不读(采纳位的取值器不执行)。旧位在场(JS 宿主 / 类型断言)一律忽略:取值器不执行、不报错、不改任何答案(含「旧位 `true` 救不回 `refused`」「旧位 `false` 拖不垮 `complete`」)。三段旧位措辞(位没报 / 位读不懂 / 引擎报不接受目录缺省)随之删除,可解析句与整拒句逐字不变。**编译红必改**:读数字面量仍写 `engineAcceptsCatalogDefault`(或读该成员)的宿主编译红一次(多余属性 / 成员不存在);删掉那一行即绿。**行为变**:目录 `complete` 且采纳读数缺席 / `absent` / `undetermined` / 表外词的读数,此前答 `unknown`(位缺席)或随位变,现在恒答 `resolvable`。支持底线以下的引擎本包不承诺(低于 7.101.0 的引擎启动时只认环境里的模型名)。
260
+ - **目录事实位派生的目录读数压过来路读数**(CC-942;**§129 MI-2**;行为变,窄,只对带 `catalogFacts` 的读数):见 `### Added`。不带 `catalogFacts` 的读数一个字节都不变;带了而前提不成立(`shapeRefused` 不是字面 `true` / 采纳读数不是 `refused`)同样与不带逐字同答。
261
+ - **座位 chrome 词表 `CHROME_EVENT_KINDS` 十四 → 十七词:+`compaction_started` · `compaction_outcome` · `engine_notice`(CC-947;§129 CZ-5 / CZ-6;🔴 行为变)**:渲染端早已把压缩两臂喂 `createCompactionStatusTracker`(「Compacting session…」及其未落地的收口)、把 `engine_notice` 渲成引擎通告行,但座位出站门不认这三词 ⇒ 按词表转发的座位宿主转不出,座位 lane 上「正在压缩」永不亮、引擎的会话级通告恒静默。现在三词追加在词表末(既有十四词序不动),出站门放行(信封只核 `kind` 与 `laneProof`;各臂载荷键 `pass` / `trigger` / `startedAt` / `outcome` / `reason` / `code` / `message` / `detail` 等原样过境,不核形不改写;`code` / `outcome` / `trigger` 开集原词照过);类型 `ChromeEventKind` 同增三员。宿主若按 `.includes(event.kind)` 转发,升级后这三种事件自动过境,端上要有消费臂;对 `ChromeEventKind` 写穷举 `switch` / `Record` 的宿主编译红一次(补三臂)。座位 lane 上这几臂缺席 = 宿主用的包 < 0.101.0,不是「没压缩」/「一切正常」。同批把座位去向收成**一张表**:`ChromeEvent` 每一臂恰在『过座位』或『仅宿主环』之一,编译期两向钉(新臂不分类、表里写了不存在的臂都编译红),座位词表由该表派生(不再是第二份手抄名单);表是包内私有,公面名不增。
262
+ - **开发依赖换钉(§129 PK-3)**:`@sema-agent/core` `^7.54.0` → `^7.55.0`(已装 7.55.0;锁文件动引擎与内核两件;`@sema-agent/mods-kernel` 开发依赖由精确 `7.54.0` 改精确 `7.55.0`〔转口门要求内核与引擎开发依赖精确同号;两个内核包逐字节同,除版本串〕,可选 peer `>=7.54.0` 不动);`@sema-agent/sdk` 不动,peer 地板与支持底线不动。
263
+ - **开发依赖换钉(§129 PK-5)**:`@sema-agent/settings-schema` `^14.3.0` → `^14.4.0`(已装 14.4.0;锁文件只动这一件;包 `peerDependencies` 里没有设置契约,无地板可抬)。14.4.0 的唯一变化是云端 manifest 技能条目 `SkillSpec` 多两只可选工具名单 `allowedTools?` / `disallowedTools?`;生成物里设置契约源的十二只头注版本串换 14.4.0,表值零差。本包云端腿 `cloudSkillsToSpecs` 本版仍读不到这两位(云端腿读口与门格另票,等服务端过境),到货前不自造位。
264
+ - **生成表重生成读数(§129 GN-13 / GN-14 / GN-15 / GN-17)**:`ENGINE_NOTICE_CODES` 98 → 100(+`route.seat_detached` 〔`operator`〕· +`advisor.not_attached` 〔`user`〕,包根元组序依次紧跟 `route.classifier_unroutable`)· 受众表 +2 · 铸方表 +2(都是 `engine`)—— 公面三张值变、型不变;`CORE_ENGINE_CARD_TYPES` 46 → 47(+`advisor`,公面 `STRUCTURED_DETAIL_TYPES` 多一员);逐问类原因句表 26 → 25 行(`SHADOW_REASON` 失 `probe` 行);新生成物 `CORE_TOOL_APPROVAL_CARDS`(十词)· `CORE_ASK_CLASSES_WITHOUT_REASON_ROW`(`["probe"]`);问面表与工具名表只换头注版本串。生成器两处改(包内工具件):问类句表允许登记在册的「无行问类」(名单之外的缺席仍拒)、新增第二十批卡词闭集。
265
+ - **逐问类原因句读口对 `probe` 类答缺席(§129 GN-15;🔴 行为变,窄)**:引擎 7.55.0 起 `probe`(「关于这一次调用本身的发现」的问类)的原因是读站对那条发现的自述(问上的 `probeReason`),引擎句表不再存一句。`askClassReasonOf("probe")` 由修前的一句变 `undefined`,`askClassReasonsOf` 对含 `probe` 的问类集不再为它出行(邻类照出;只带 `probe` 的卡 ⇒ 空数组)。`probe` 卡的原因看卡上 `probeReason`(本包两条腿早已读)。强制词 `probe_mandate` 的固定句(`approvalMandateDetail`)本批不动(另票)。
266
+ - **码表归类与注释(§129 GN-19 / GN-20)**:引擎 7.55.0 起回退落到「边界在但不可用」以 `rewind.restore_failed`(点)到、`terminal.detail` 为 `coded` 账;`isRewindFamilyCode` 的可自解族(`resume_at.` · `rewind_snapshot.`)**不吸收**它(存储侧故障,不是操作错误)—— 修前这一形以 `rewind_snapshot.unresolvable` 到、一起落在可自解族里;现分家,失败行 message 后不再附这个码。检查点错误 `detail.field` 的词 +`feedback`(注释更新,读口开集读、零代码)。
267
+ - **入口采样的冻结语义契约**(CC-923;**§129 NA-1**;行为面零变 —— 只换读的对象并新增可选位):正常 JSON 域逐值保真(键序、`__proto__` 自有键、整数形键、`-0`、空容器、菱形引用);**访问器值消失**(取值器一次都不执行,该键缺席)· **代理陷阱键缺席**(`getOwnPropertyDescriptor` 陷阱抛 ⇒ 该键缺席;`ownKeys` 陷阱抛 ⇒ 整只对象缺席,入口按「读不出」处置:无 `task_id` 丢弃 / fleet 计 `droppedMalformed` / 无 `runId` 整臂不动作)· **非普通原型按数据位抄**(只抄自有可枚举数据位,原型链上的键不算,类实例与 null 原型抄成普通对象)· **环截断**(回到祖先的键缺席;超深子树同,且同一子对象的结果不取决于遍历先后)· **数组保位**(读不出的位留洞,声明长度与读失败 / 访问器位造成的尾部洞在最后一个存活下标之后最多保留 1024 位;自有下标 ≥ 2^20 的位不抄 —— 敌意稀疏下标不撑大快照)· **共享图有重走预算**(深度截断使一个共享件不能入记忆、别名再到达时要重走;累计重走超 2048 次之后的到达按缺席处置 —— 敌意的指数共享图不拖垮入口,树形载荷与深度内的共享图零重走)· **下游再改载荷失败**(每层深冻结,严格模式下写入抛 `TypeError`)。读两次可能读到不同值的输入(取值器 / 有状态代理)此后以第一次采样为准。对非对象入参更柔:`normalizeTaskNotification` / `taskNotificationToPrintFrame` 非对象 ⇒ `null`,`taskNotificationDedupKeyFromWire` ⇒ 空 `taskId` 段,`classifyPeerNotification` ⇒ `null`,`deriveNotificationResidualLines` ⇒ `[]`(修前这几口对 `null` / 原始值入参抛 `TypeError`);`parseTranscriptNotificationSeeds` 对非数组入参 ⇒ 空读数。
268
+
269
+ - **`inheritEnvIntentOf` 改两位闸:名臂 ∧ 值臂都 `confirmed` 才放开 `"all"`**(CC-868;**§129 IE-1**;🔴 型面 BREAKING + 行为变;裁定 [10682] §四 走 A):判定由「四件齐」(交互车道 ∧ `projectContext` 确证 ∧ 名臂 `confirmed` ∧ 身份已核)改「五件齐」(+值臂 `confirmed`)。入参 `InheritEnvIntentInput` 多一只必填位 `ownCredentialValuesWithheld`(取 `observedInheritEnvOwnCredentialValuesWithheld(baseUrl)` 的读数原样交);`InheritEnvOmitReason` 六词变九词(+`capability_values_*` 三个)。成因次序 `lane → project_context → capability_*(名臂)→ identity_unverified → capability_values_*(值臂)`:身份先于值臂,是因为值臂那一句断言「引擎已把自己的凭据变量挡在 shell 外」,这是名臂读数说的,身份没核时名臂读数可能是同址上一台引擎的,不拿它做肯定断言。🔴 **只认自有位**(同批收紧,两臂与五个入参位一律):入参的五位与读数的 `kind` 只认对象**自有**的位,只在原型链上的同名键(继承来的入参 / 继承来的 `kind` / 原型污染)当缺席 ⇒ 闭合失败(修前 `fieldOf` / 读数归类按原型链取值,名臂也一样 —— 一只被污染的 `Object.prototype.kind` 能把任何空对象读成 `confirmed`;自有访问器照旧在 try 里执行,读就抛只作废那一位)。🔴 **缺席 = 宿主说不出 ⇒ 不放开**:入参里没有 `ownCredentialValuesWithheld` 这一位(JS 调用方的老写法四键入参)、取值器抛、读数认不出、只在原型链上,一律按「读不出」处置 ⇒ `omit`(`capability_values_unreadable`),绝不静默得到 `all`。**编译红必改**:在 TS 里手拼完整入参字面量的宿主编译红一次(补这一位);对 `InheritEnvOmitReason` 写穷尽 `switch` / `Record` 的宿主再红一次。**行为变**:此前名臂 ∧ 身份等四件齐就 `all` 的组合,值臂缺席(服务端 ≤ 7.131.x,或这一词没接线)/ 位为 `false` / 读不出时现在 `omit`,交互车道的模型 shell 拿到的是过滤后的环境(用户自有的 `GH_TOKEN` 一类变量在其中不可见 —— 裁定 [10682] §四 的已知代价)。0.100.0 的成文「意图判定只闸首词、不读第二词」(§128b IV-1)作废。门:`scripts/run-inherit-env-intent-projection-test.mjs` J1 – J9 / N4 / N5 / T7 – T12 / V3 – V6(见 `### Gates`)。
270
+ - **会话规则可送判定凭能力位放开三形命名空间覆盖形:读器 `observedSessionRulesNamespaceForms(baseUrl?)` · 选项 `namespaceForms` · 第八成因词 `namespace_covering_unconfirmed`**(CC-227;**§129 NS-1**;🔴 行为变 + 型加一员):服务端 7.135.0 起在 `GET /v1/capabilities` 顶层铸布尔 `sessionRulesNamespaceForms` —— 会话规则记录把协议命名空间的覆盖形读成「一组工具」、且写口真收时为 `true`(依据是同时问了引擎覆盖匹配器与写口读者,不是版本号)。本包此前对这三形一律扣下:整对端 `mcp__srv` / `a2a__peer` 落 `peer_wide`,工具段通配 `mcp__srv__*` 与 glob `mcp__srv__get_*` 落 `wildcard`(按精确名比对的老引擎上写进去一条都拦不住,端上却会渲「已保存」)。现在:读器 `observedSessionRulesNamespaceForms(baseUrl?)` ⇒ `{ kind }` 五态冻结单例 —— `confirmed`(顶层键是自有数据位且字面 `true`)· `absent`(键不在,含服务端 ≤ 7.134.x)· `declined`(键在而不是 `true`)· `unreadable`(自有访问器,取值器不执行)· `unobserved`(没落地);同步、不探测、永不抛。`sessionPolicyDeliverable(behavior, rules, { namespaceForms })` 的新可选位收这个读数:**读数 `confirmed` 才**把恰好三形放成可送 —— 整对端 `<前缀>peer`、工具段恰为 `*` 的 `<前缀>peer__*`、工具段为「非空字面前缀 + 末位一个 `*`」的 `<前缀>peer__get_*`(`mcp__` 与 `a2a__` 各一份);放开只绕开「通配 / 整对端」两步串级扣下与名册那一步(覆盖形不是工具名,名册里永远没有),引擎判官 / 条目读者 / 编译器三步照走(对端段铸不出的 `mcp__github.com__*` 仍以 `not_a_tool_name` 扣下)。其余一形不放,成因词与此前逐字相同:`*` · `Bash*` · `mcp__*` · `mcp__*__x` · 对端段的部分通配 · 尾分隔 `mcp__srv__` · 带括号的串 · 首尾空白 · 工具段里别的 glob(`mcp__srv__*_user` / `mcp__srv__get_*_x` 等 —— 位的射程之外)。交了读数而没肯定(其余四态或认不出的形)⇒ 这三形改以**新成因词** `namespace_covering_unconfirmed` 扣下(成因闭集七词 → 八词,新词在末位;句子在消息目录 en / zh,`sessionPolicyWithheldNotice(why, lang?)` 多可选末参 `lang`,其余七句不变);**不交读数 = 与 0.100.0 逐字节同答**(三形仍落 `peer_wide` / `wildcard`)。🔴 放宽方向,闭合失败:位缺席 / `false` / 非 `true` / 读不出 / 没落地一律不放开;不按版本号猜;选项里的读数只认自有数据位上字面 `'confirmed'` 的 `kind`(访问器 / 原型链上的 `kind` / 别的词 / 大小写变体都不放开)。🔴 型加一员:成因联合 `SessionPolicyWithheldWhy` 多 `'namespace_covering_unconfirmed'`,对该联合写穷尽 `Record` / `switch` 的宿主编译红一次,补一臂。公面运行期 +1(1971 → 1972)。
271
+ - **登记物到期收口(§129 LG-1;不上公面,除 `### Removed` 的一名)**:① 退役登记:RL-180 执行退役(见 `### Removed`);RL-179(`hookMatcherRefusalFromError`)· RL-184(`planReviewDecisionInFlight` / `planReviewPendingReadMark`)· RL-185(`HitlBridgeOptions.onDecideOperation` 与 `DecideOperation*` 六型)按「消费端删掉包装之后的下一个本包版本」续到 0.102.0 —— 终端 1.0.152 仍读,读点坐标写在登记行里,首次承诺窗 0.101.0 留史、只追加;到期挂链首的行(14 行)逐行核过前提,今天都未到货,留在链首(`BLOCKED-DUE` 读数逐行可见)。② 端侧同名影子豁免表:终端 1.0.152 已不再声明的 12 行删除(其中 9 行是本版到期的、3 行是 0.102.0 窗的凭据判官三行 —— 终端已换读本包口,留着即死行);仍声明的消息目录 6 行(`EN_MESSAGES` / `ZH_MESSAGES` / `translate` / `createTranslator` / `createMissLedger` / `uiMissLedger`)续到 0.102.0;v0.100.0 之后新进公面、与终端同名的 31 个导出逐条登记(窗 0.102.0):11 个常量用差分格逐值比,20 个函数 / 表以声明哈希钉住(其中 5 行是同名不同物,15 行是同一件事的第二份实现、语义差分格未建)。
272
+
273
+ ### Removed
274
+
275
+ - **`AllowDenyPolicyOptionsView.scope`(根入口型的一个可选键)**(引擎 7.54.0 起不再认;**§129 PK-2**;🔴 型面 BREAKING):`createAllowDenyPolicy` 的入参镜像删 `scope?: 'grant' | 'narrowing'`(0.90.0 加入;引擎 7.54.0 起 `allow` 名单只是范围、不是同意 —— 命中的工具不被反对、也不被同意,同意写在 allow 层 `RunnerDeps.allowedTools` / `TaskSpec.allowedTools`;传 `scope` 即在构造时按名拒 `config.deps_retired_key`)。**编译红必改**:入参对象字面量写了 `scope` 的端编译红一次 —— 三端源码零写者(终端只传 `allow` / `deny` / `onInvalidName` / `onInvalidNameIssue`,网页端 / 桌面端零 import),预期零编译红。**改法**:删掉这个键;要表达同意改写 allow 层。**行为变**:无(端口层对仍被传来的 `scope` 原样过境,引擎响亮拒,不静默丢键)。
276
+ - **已知限制 KL-634 删行**(CC-899):钩子车道的类列不再只读 `hookAskFloor`,「卡上只带不拦钩子列的那几类、却不带真人位 / 强制位 / 治理位时,钩子车道答可放」不再成立(现在读 `ruleMayClear`,见 `### Fixed` 的 CC-899 条)。(0.94.0 段 `### Known limits` 里的 KL-634 行与接入档 §121 的同句是已发段、冻结不回改,以本条为准。)
277
+ - **根入口常量 `CONFIG_STRATEGY_FIND_LIMIT_INVALID` / `CONFIG_STRATEGY_MAX_SIZE_INVALID`(策略库两枚配置拒绝码)**(CC-171;**§129 UC-2**;🔴 型面 BREAKING,运行期导出 −2;退役登记 RL-250):引擎 7.49.0 起整个策略库族已删,这两枚码不再被铸(引擎与 sdk 包产物全树零命中),端侧词级零命中。常量退出根入口;`isConfigRefusalCode` 按 `config.` 前缀判、识别不退化(更老的引擎若仍发,落配置拒绝族通用臂)。同批订正 `CONFIG_LIMIT_INVALID` 注里已不存在的「团队讨论累计额」旧话。**编译红**:import 这两名的宿主(今天各端词级零命中)。结局读面 `leaderConflict`(4 值 + 4 型)分拣为存疑、本版维持:端侧零消费,但服务端的 leader 资源没有随引擎退役波退役,退役点由服务端定(已知限制 KL-860)。
278
+ - **审批决断桥与模型探针里的私有成因链读法(退役,无薄壳别名)**(CC-417;§129 XC-6):决断桥的超时类递归判型、瞬断类递归判型与十二词瞬断码表(码表并入 `engineWireFor` 的 `TRANSIENT_TRANSPORT_CODES`,冻结),模型探针证据文字展开自带的 4 层循环;全部改走同一只走读口。补充句链私有的配额读口 / 人话 / 月份表同批退出(CC-416,挪进 `wireRefusalCopy`)。退役登记在册(RL-210 – RL-213),门钉不复活。
279
+ - **argv 扫描读口族退役(CC-475;§129 XF-8;RL-230;🔴 型面 BREAKING)**:共用叶 `lastFlagValue`(0.74.3 上公面)及其型 `FlagValue` / `OnMissingFlagValue`,与六只依赖它的 argv 读口 `permissionModeFromArgv` · `planModeExplicitlyRequested` · `parseLimitsArgv`(改 `parseLimitsFlags`)· `parseScenarioArgv` · `parseSandboxArgv`(改 `sandboxFromFlag`)· `parseNoFinalVerifyArgv` 一并退出根入口(`src/argvFlagValue.ts` 删除)。公面运行期导出 −7 +4。**编译红必改**:三端源码对这七名的读点随升本版同窗改(终端的 `cliArgv` 交包点换成交值;网页端 / 桌面端未核,推断零)。
280
+ - **包私有常量 `RULE_TRUST_ORDER` 退役(CC-489;RL-231)**:见 `### Changed` 的信任序并一条;不上公面。
281
+ - **旧位 `LocalEngineModelIdentityReading.engineAcceptsCatalogDefault`**(CC-941;**§129 MI-1**;🔴 型面 BREAKING;退役登记 RL-183 执行,门钉不复活):读数型与判法同时退出,见 `### Changed`。同批退出两条无铸点的消息目录键 `notice.wireRefusal.userAttachment` / `notice.wireRefusal.userInvokedSkill`(CC-940;**§129 RQ-1**;`MessageKey` 联合收窄,按这两个键名字面量取句的宿主编译红):0.100.0 起这两句的铸点早在码 → 句表(`prepareRefusalNoteOf`),目录里留的是上一代措辞(还断言「Nothing was started and your draft is kept」),留着是第二处措辞真源;参照树 1.0.150 与另两端源码按键名 grep 零命中(非穷举)。
282
+ - **`settingsPermissionBucketRefusalFromError`(根入口函数;设置权限三桶超帽 / 坏项的窄读口)**(CC-843;**§129 LG-1**;🔴 型面 BREAKING,运行期导出 −1;退役登记 RL-180 执行,门钉不复活):0.100.0 起它是帽的拒泛化读口 `fieldLimitRefusalFromError` 的派生窄视图(同一只抛出物两口同答),本版退出根入口。读设置三桶超帽 / 坏项的拒体改读泛化口:读数的 `field`(`settings.permissions.allow` / `deny` / `ask`)取代旧读数的 `bucket`(桶 = `field` 末段),`reason`(`over_cap` / `bad_entry`)与 `count` / `cap` / `index` / `folded` 位同名同义;泛化口另认 `too_long` 与桶外的 `field`(技能 / 代理 / 宿主路径清单),要只处理三桶的宿主自己比 `field`。三桶那一句仍由 `settingsPermissionBucketRefusalContent` 出,泛化句口 `fieldLimitRefusalContent` 对三桶原样转交该句(句子逐字不变)。**编译红必改**:import 这一名的宿主编译红(运行期调它 ⇒ `TypeError`)—— 终端 1.0.152 的补充链已换读泛化口(对这一名零代码读点),网页端 / 桌面端本机快照零读点(推断,未 fetch)。公面 1980 → 1979。
283
+
284
+ ### Fixed
285
+
286
+ - **收紧桶里对端段恰为 `*` 的 `mcp__*` / `a2a__*` 原样投,不再补成 `mcp__*__*`(CC-886;§129 PR-1;🔴 行为变)**:`permissionsDeclaration` / `permissionsDeclarationReport` 对 deny / ask / 命令行 deny 里的整服务器(整 peer)写法补 `__*`;对端段是 `*` 时补出来的 `mcp__*__*` 是用户没写过的一串 —— 引擎开跑前对铸不出的对端段拒收并点名它(`config.legacy_tool_name`,判官答 `unmintable_segment`),用户看到的拒句点名了一个自己没写过的名字。修后这一格原样投用户写的那一串(含整工具形 `(*)` / `()`;两端空白也原样),报告口 `rewritten[]` 不再有这一行,与显式 `mcp__*__*` 并存时两条都投(不再折叠成一条);整 MCP 语义收不收由引擎定形,本包不在包内把 `mcp__*` 展开成服务器清单,引擎「收」与「仍拒」两种定形下投出同字节。allow 桶读法不变(一条不投,`kept` 理由词仍是 `unminted_protocol_segment`,零放宽);其它对端段(含 `**` / `*x` / `x*`)的改写行为零变。门:`scripts/run-permissions-declaration-test.mjs` MS3i-1 – MS3i-6(`MU1b` 按新产出改)。
287
+
288
+ - **自动答判定口的钩子车道不再读仲裁表的 `hookAskFloor` 列(CC-899;§129 HK-1;🔴 行为变,只收紧、不放宽)**:`automaticAnswerVerdict(card, 'permission_request_hook')`(0.94.0 起)把仲裁表 `hookAskFloor` 当「钩子这类自动作答者能不能替人答」读。那一列在引擎里只回答一件事 —— `dontAsk` 下钩子提出的问旁边有没有规则 / 安全检查提出的问兜底(引擎全树唯一的读点是 `arbitrateByMode` 的 `dontAsk` 臂),与钩子的允许会不会被引擎收无关。引擎对钩子 / 策略(`settledBy: 'policy'`)答的允许**只在这一问带真批准位 `requiresRealApproval` 时拒**(工具不执行、拒句点名「answered by policy」),其余照收 —— 连 `hookAskFloor` 为 true 的 `ask_rule` 类也照收。真批准位随 `org_rule` / `rule_unreadable` / `denial_limit_fallback` / `classifier_no_ruling` / `cross_boundary` / `policy_rra` 这六类一起铸,而这六类的 `hookAskFloor` 恰好都是 false:卡上没带真批准位(合成卡 / 位在途中丢了)时,修前钩子车道对它们答 `may_answer`、`permissionRequestHookScope` 答 `allow_or_deny`,可引擎会拒这个允许。**修后**钩子车道读 `ruleMayClear`(与规则车道同一列,引擎判「门类」的同一读法):类集里任一类规则清不掉 ⇒ `must_ask`(`road: 'ask_class'`),只有 `unstated` / `ordinary` 两类可放;出身六词(`content_question` / `org_unavailable` / `org_rule` / `hook` / `ask_rule` / `denial_limit_fallback`)也都按这一列算钩子车道的出身证据(`org_rule` / `hook` / `denial_limit_fallback` 等修前不算)。**没有任何一类从必问变可放**(放宽方向没有引擎源码证据就不放):修前拦的 `hookAskFloor` 为 true 的十类照拦,引擎照收的 `ask_rule` 类本包也仍问;`foldModeArbitrationRow` 与仲裁表 `MODE_ARBITRATION` 照旧折叠、照旧带 `hookAskFloor`(返回型与公面不变,只是没有车道读它)。真引擎铸的卡(带真批准位 / 强制位 / 出身词)答案的 `kind` 不变,`permissionRequestHookScope` 恒 `skip`;只有出身词为 `org_rule` / `org_unavailable` / `hook` / `denial_limit_fallback` 的卡,钩子车道的必问原因由 `requires_real_approval` / `mandated` 变为 `origin`。门:`scripts/run-automatic-answer-verdict-test.mjs` HK1 – HK4 / HK6 改按 `ruleMayClear` 重写,新 HK1a – HK1d、HK10a – HK10g(引擎真链路:带真批准位的问上钩子 / 策略的允许被拒、不带的照收;同一张真卡去掉真批准位后钩子车道仍问;引擎守卫策略自然铸出的四个删除 / 转录类真卡同判)。
289
+ - **云配置腿:被声明类判读丢掉的条目,它缺的环境变量名不再记进 `missingEnv`**(CC-905 补;**§129 TF-2**;行为变,窄):`cloudMcpToSpecs` 此前在 `toolAxes` / `elicitation` 判读**之前**就把条目 `envRefs` / `headerRefs` 里解析不出的环境名记进 `missingEnv`,这两条路径(与本版新增的 `toolFaces` 路径)丢掉条目时名字已经记了进去 —— 宿主的「缺环境变量」告警会点名一个属于已被丢掉的服务器的变量,与传输类丢弃路径(丢掉的条目不报它用不上的环境名)不一致。现在缺的环境名随条目**最终获准**才记;获准的条目照报。门:`scripts/run-cloud-mcp-dropped-notice-test.mjs` M13。
290
+ - **工具结果块读口:读某一块时抛(自有取值器 / 代理陷阱 / 已撤销代理)不再连坐整条投影**(CC-907;窄行为变,只对宿主喂的非 JSON 形对象,JSON 形 wire 上不会发生):该块当「读不出的块」,邻块照留、通用告知仍只一条;修前整条转录投影与文字读法(`toolEndOutputText` 及三个展平读口)随之抛出。门:`scripts/run-tool-result-content-projection-test.mjs` D3d。
291
+ - **`REQUEST_FIELD_MATRIX` 里 `fileHistory` 行的 `why` 字串不再引用已退出公面的片段口 `fileHistoryDeclarationField`**(CC-926 D8;**§129 HT-1**;运行期一格字符串变):原写「值由片段口 `fileHistoryDeclarationField` 唯一铸出」(该口 0.100.0 起退出公面),改「值由装配产物 `fileHistory` 行铸出(AS-4)」;车道表其余 45 行与本行的 `lanes` / `live` / `whyUtilityLane` 逐字同。门:HI10h(这一行)· HI10i(全表零引用已退役片段口名、无悬空的 `…DeclarationField` / `…Declaration` 引用)。
292
+ - **0.100.0 接入档文档勘误**(CC-926 D2 – D6 / D9 与 AS-7 原句;**§129 ER-1**;文档,零代码、零公面、零行为):cli 帖 [11222] §七逐条核过字节,订正七条、驳回 0 条 —— RF-4 终端读点「不编译红」实为编译红(`HookMatcherRefusal` 的 `budgetMs?` 只在 `over_budget` 臂,`budget_exceeded` 臂带 `totalMs?`)· AS-4 / AS-6 终端读点清单是抽样不是穷举(三端编译红行从 §129y ① 起一律带射程限定词)· 0.100.0 包侧缺口四条(CC-878 / CC-879 / CC-876 / KL-802)补入包字节 · DU-5「登记条件本版满足」撤回(0.100.0 只交付了 S-d)· §126 HM-T2 终端列「跟跑口声明 `continuesPark`」作废(接续口新形 = 引擎帧见证,CC-930)· AS-7「只做减法」随 HS-1 改口 · D5 发车帖括注错位。逐条「原句 → 改句 + 字节证据」在接入档 §129z;§126 / §128 是已发冻结段,一字不动。
293
+ - **第三方凭据形不再随 `AttachmentsSpecRefused` 的 `message` 出门(CC-411 (e);§129 XF-6)**:见 `### Changed` 该条 —— 抛出物的 `token` / `message` 此前会原样带出被拒项原文(含贴错的钥匙),现在形似凭据的项换成遮盖记号。
294
+ - **`prepareRefusalNoteOf` 的事实袋 `index` 位只认自有数据位**(CC-897;**§129 MN-2**;行为变,窄):修前 `facts.index`(附件拒句「第几件」)按普通属性读 —— 原型链上的 `index` 照认(`Object.create({ index: 2 })` 会得到「attachment 3」)、自有访问器的取值器还会被执行一次(对任何码都一样,包括本版新增的撞名拒码);现在与同袋的 `draftKept` 位同一口径:访问器不执行、原型链上的不认、读就抛(代理陷阱)⇒ 当缺席,句子落到不点名第几件的那一句。自有数据位的非负整数照旧(`userAttachmentRefusalFromError` 交出的 `{ index }` 是普通对象,读点不受影响)。
295
+ - **hooks 计划入口读宿主位时,抛出物字符串化再抛不再逃出入口**(CC-939;§129 HS-2;行为变,窄):`hooksWirePlan` 读 `shellHookTypesByEvent` / `promptAuthoredByUser` 时宿主抛出的值要写进一行 debug —— 抛出物的 `toString` / `name` 位再抛时,修前这一次字符串化把异常带出入口(整份计划失败);现在与宿主设置源的一次读同用包内唯一的留痕格式化(字符串化抛 ⇒ 固定占位),读位照旧按缺席 / 坏形处置。
296
+
297
+ - **百分号编码的 YAML 块标量 / 块序列里的凭据,展示出口三口不再外露**(CC-869;**§129 PE-1**;安全类,只多遮):块头 `>` / `|` 编码成 `%3E` / `%7C`、行断编码成 `%0A`(`password%3A%20%3E%0A%20%20<值>` —— 对一份多行 YAML 做 `encodeURIComponent` 即得此形)时,块的范围此前只在原文字节上判,解码读面把标签后的值按单行读:`>` 形整块原样上屏,`|` 形只遮了块标记一个字符、其后缩进行全露,编码的块序列只遮第一项(0.99.0 §127 包侧缺口 DU ③)。修后同一只块判官(不另写第二只)在每一层百分号解码串上再读一遍(层内坐标),遮盖经层映射映回原文的编码字节、屏上字节不解码:块头连同整块换**一枚**记号,标签与分隔 `password%3A%20` 逐字节留着,块后的下一对键值(`%0Anext%3A%201`)逐字节留着;块序列每一项都遮。覆盖三只出口(机读口 `washCredentials` 同读法 / 公面默认口 / 只凭据面 `displayUntrusted(t, { controls: false, bidi: false, foldLines: false })`)、二次与三次编码(解码层数上限仍是 3,四层照旧不遮,KL-749)、半编码混合(只编块头 / 只编行断 / 只编缩进 / 只编冒号)、表单编码(`URLSearchParams` 一类编码器把空格写成 `+`:缩进是 `++`,层里有加号的另读一份「加号读作空格」的 1:1 变体)、JSON 转义行断(字面 `\n`)的块、坏百分号序列(0.100.0 CC-866 的字节边界读法层:坏序列读成空白、合法 UTF-8 整串解)在块里 / 块头旁 / 紧贴块值。大量编码块(14 万块 ≈ 6 MB)不抛(候选表批量并入逐项推入,不展开入参)。**行为变(只多遮)**:此前被放过的这类输入现在遮;没有行断的解码层不读,单行输入读数与 0.100.0 逐字节同(基线差分整池零「旧遮新露」)。设置凭据键路径 `settingsCredentialKeyPaths` 的 YAML 块一支本就与明文形同答(已知字面形判官与 query 判官都先解码),只加同答守卫(K13);串值里「标签 + 低熵值」的块(明文也)不命中仍是既有边界(KL-870)。同批补一处同族缺口:串值的 URL 那一支(userinfo / query)改**逐层读**(原串 + 至多三层百分号解码)—— 整条地址被编码(`https%3A%2F%2Fu%3Ap%40h%2F`)时原串里没有 `://`、修前整条放过;现在与明文形同命中(只多命中、不少命中,编码但不带凭据的地址仍不命中)。门:`scripts/run-display-credential-reach-test.mjs` DY0 – DY13 · `scripts/run-display-untrusted-baseline-diff-test.mjs` B10 · `scripts/run-settings-credential-key-paths-test.mjs` K13。
298
+ - **`turnFailurePresentation` 不传 `ctx` 的读数,文档句订正(CC-965;§129 TH-4;文档,零代码、零公面、零行为)**:接入档 §127 TH-3 的四处句子与本沿革 0.99.0 的 TH-3 条把「不传 `ctx`」写成「不传上下文 = 修前读数」「`notes` 为空数组、无 `waitNote`」「读数与 0.98.0 逐字节同」「读数不变,传了才有 `notes` / `waitNote`」—— 与行为不符:补句链各认领臂只读抛出物,`ctx` 只供四个宿主位(`nowMs` 缺省取本机时钟 · `sentRequest` / `requestedScenario` / `modelCatalog` 喂依赖它们的几句)。不传 `ctx` 时配额 / 用量窗 / 租约 / 续跑拒 / 坏存档照出句、限流类照出 `waitNote`;缺 `sentRequest` 时 inheritEnv 400 与设置面 400 两句整句缺席、宿主姿态拒句仍出(落「读不出归因」一形),缺 `requestedScenario` 时场景拒句仍出(不点名场景),缺 `modelCatalog` 时配置整拒句缺席。行为自 0.99.0 起如此(非回归;已发 0.100.0 的字节逐场景同读)。已发段冻结不回改:订正在接入档 §129 的 129b TH-4 与 129z TH-4(逐条「原句 → 改句 + 字节证据」)。门:`run-turn-failure-presentation-test` TN11 – TN11c。
299
+ - **§127c G-NT1 判据补前提(CC-965;§129 TH-4 / 129z NT-1 判据前提;文档,零代码)**:「两进程各投一次同一串字节 ⇒ `eventSeq` / `eventId` / 臂 `uuid` 同值」只在帧体里带引擎铸的 `eventId` 时成立(臂 `uuid` 由它确定性派生);只有 SSE `id:` 行、帧体无 `eventId` 时 `eventSeq` 同值、`eventId` 两进程都缺席、臂 `uuid` 是投影层随机铸的(两进程各一枚、不同)。与接入档「缺身份 = 诚实缺席,不造」相容,漏写的只是判据句的前提。门 `run-additive-key-passthrough-test` G3c-6 钉的本来就是带 `eventId` 的那一形。
300
+ - **MCP 条目 `allowTools` 写坏不再静默放全:本地腿与云配置腿读同一只判官 `mcpAllowToolsVerdict`**(CC-977;**§129 MC-2**;🔴 安全类,只多拒、不多放;🔴 行为变 + 型面加员;公面运行期 +1):`allowTools` 是收窄声明(引擎:写了 `[]` = 这台一只工具都不挂,缺席 = 全挂)。修前本地腿(`mcpConfigToSpec` / `projectMcpConfigs`)只在 `Array.isArray` 时上体、非数组(`"ping"` / `null` / 对象 / 数 / 布尔)静默省键 —— 那一台**全部工具照挂、零披露**;云配置腿 `cloudMcpToSpecs` 同样对非数组省键,并把非串成员静默滤掉。修后:非数组 / 含非串元素 / 稀疏数组(洞)/ 读不出(取值器抛、下标位访问器、数组代理陷阱)⇒ **这一台服务器不起**(条目 `allowTools` 位的取值器本身抛 ⇒ 按同版 ME-1 记 `entry_unreadable` 行、不点名键)(其余照常;与 `toolFaces` 同律),披露行 —— 本地腿 `McpConfigDropReason` 多一员 `allow_tools_invalid`、云腿 `CloudMcpDropReason` 多一员 `allow-tools-invalid` —— 带 `path`(条目内键路径 `allowTools` / `allowTools[2]`)与 `problem`(点名 `mcpServers.<名>.allowTools[2]`〔云腿 `config.mcp.servers.<名>.…`〕的一句话,只说形与下标、**不回显值**),本地腿 `notice` 与云配置通告句各一句(en / zh;消息目录 +7 键);`[]` 照旧上体(一只都不挂),缺席 / 显式 `undefined` 照旧省键;上体的是判官**读时拷出的副本**(不再是调用方的同一只数组;拷贝用 `defineProperty` 落自有数据位,原型链上植入下标 setter 偷换不了名字),名单长度超过遍历预算(10 万;代理报出的巨大长度)按坏形处置(`config.mcp.allowToolsTooMany`),`allowTools` 恰读一次(取值器形的对象第二次读到别的东西 ⇒ 判读与上体不是同一份 = 放宽);多坏同在的披露序 = 传输硬坏形 → `toolAxes` → `toolFaces` → `elicitation` → `allowTools`;不受理的传输(sse / ws)上写坏 `allowTools` 仍是既有的静默跳过。判官 `mcpAllowToolsVerdict(read, keyPrefix?)` 上根入口(两腿读同一只,宿主预扫声明也读它;`read` 是恰被调用一次的取值函数,它抛 ⇒ `bad`)。**编译红必改**:对 `McpConfigDropReason` / `CloudMcpDropReason` 写穷尽 `switch` / `Record` 的宿主各加一臂。0.99.0 注释里「只在缺席 / 非数组时省」的后半句作废。门:`scripts/run-mcp-allow-tools-fail-closed-test.mjs`。
301
+ - **`projectAgentsForWire` 对代理 `disallowedTools` 里整名退役名的改写不再以宿主交了名册为条件(CC-979;§129 TK-5;🔴 行为变,P1 回归修复)**:修前(0.98.0 起)只有宿主交了名册(读得成)且名册里没有这个名时,才把 `Task` → `Agent` 一类整名退役名改写成判官现名;而名册只随一次成功开跑的流到达(按会话盖戳,清会话即读成没有),引擎 7.52.0 起对 deny 里原样的退役名开跑前整跑拒(`config.agent.unknown_tool`)—— 名册前那一发被拒 ⇒ 名册永不到 ⇒ 之后每一发同拒(代理定义 `disallowedTools: ['Task']` + 清会话 = 会话卡死)。修后名册缺席(不交 / `null`)与读不出 = 宿主声明的自挂名空集,同样按判官退役名表改写,与权限臂对 deny 桶整名退役名的改写是同一只判官、同一读法;名册到位且里有这个名(行名 / 别名;部署自挂了同名工具)⇒ 不改写、原样、零告警(现行为保留);`toolListFlaws` 行 `rewritten: true` 的出现条件随之放宽,改写告警句在名册前的第一发就出。allow 臂(`tools`)零变(放宽方向不替用户做),内容形 / 判官没给现名的退役名 / 协议名 / 无前缀名原样。公面零新增、型面零变。门:`scripts/run-agents-wire-directory-test.mjs` TK5a – TK5i(新)、TK6c‴ / TK6c⁗ 由「不改写」翻成「改写」、AD6d / AD6d′ / AD6g / AD6i / AD10 随之改口;`scripts/run-server-7122-pick-test.mjs` T5 / T7 改口。
302
+
303
+ - **云配置腿的技能两张工具清单 `allowedTools` / `disallowedTools` 不再在包边界被静默剥掉:两腿问同一只判官,合法逐字过境、坏形这一条技能不上 wire**(CC-970;**§129 SK-3**;安全类,只多过境 / 只多拒;型面只加不减,公面运行期 +1):设置契约 14.4.0 起云端 manifest 的技能条目可带这两张清单,而云配置腿按手写键(`name` / `description` / `contentHash`)建技能 —— 名单落不到请求面;`disallowedTools` 丢了 = 比作者所写更松(技能激活后本该拒的工具照跑)。修后 `projectEffectiveBody(body, bodies, env, rosters?, opts?, skills?)` 多一个**可选第六入参** `skills: { skillToolLists?: SkillToolListsReading }`(`cloudSkillsToSpecs` 多同形可选第三入参),与本地腿 `skillCommandsToSpecs` 的选项**同一个位、同一种读数型、同一条规则**:读数经唯一能力位判官答 yes 才带;**选项缺席 = 宿主没接这一位**,两张清单一次都不读、产物逐字节同 0.100.0。判官收成**一只入口 `skillToolListsVerdict(source, reading)`**(新增根入口导出,及型 `SkillToolListsVerdict` / `SkillToolListKey`):值形 / 能力位 / 读次数 / 产物形只在这一处,本地腿原来私有的值形读移入它(文本逐字不变:本地腿遇 `bad` 仍抛同一句 `TypeError`)。云配置腿只处置判决 —— `ok` ⇒ 清单原样并进产物(缺席 = 不带键、`[]` 照带 `[]`、顺序 / 重复 / 空串 / 条目内容一概不判、数组是新数组);`bad`(不是串数组 / 含非串项 / 稀疏洞 / 读就抛的取值器 / 报不出合法长度的外来数组)⇒ **这一条技能不上 wire**(不剥键降级、不抛、兄弟技能照上;名字在判之前占位,同名后来者不顶上),`CloudProjection.droppedSkills` 记一行 `{ name, reason: 'tool-list-invalid', path }`(`path` = 设置契约读腿同形的坐标 `skills[<i>].allowedTools` / `skills[<i>].disallowedTools`,只有某一项不是串才多带 `[<j>]`;不回显条目),`cloudEffectiveNotices` 多一句 `warn`(点名技能与键路径;位读不出 ⇒ 一句「读不出」;句子进消息目录 en / zh;入参型的可选几位〔`mcp?` / `degradedMcpServers?` / 本版 `droppedSkills?`〕抽成具名型 `CloudEffectiveNoticesOptionalInput`,结构不变)。多处同坏的序与本地腿同(先 `allowedTools` 后 `disallowedTools`)。门:`scripts/run-cloud-skill-tool-lists-test.mjs`(两腿同答矩阵 · 坏形 fail-closed · 单源词法扫 · 真 manifest · 服务端过境点字节见证)。 读口两处加固:① 能力位判官 `skillToolListsAvailable` 对宿主交来的读数只认**自有数据位**的 `kind`、读法受保护 —— 自有访问器不执行、只在原型链上的 `kind` 不算、代理陷阱抛 / 已撤销代理 / 非对象 ⇒ 当「读数不是读数」⇒ `unknown`、两表不过境、不抛(若裸读 `reading.kind`,取值器 / 代理抛会直接穿透进两条腿,原型链上被植入的 `kind: 'present'` 会被认成「服务端会读两表」);② 两张清单的读口加**遍历预算** 100000(安全阀,不是产品上限;与 MCP `allowTools` / 场景技能同量级):合法数组长度可以大到 4294967295,代理报这个长度就把同步线程拖进数十亿次读取,现超预算 ⇒ 坏形、不逐项读、不放行 —— 本地腿抛 `TypeError`(句子进消息目录 `config.skills.toolListTooMany`,en / zh),云配置腿这一条不上 wire + 一行披露(键路径同其它坏形)。🔴 行为变(窄,只多拒):长度超过 100000 的真数组此前照过境,现被拒。门:`scripts/run-skill-tool-lists-projection-test.mjs` 新 C3(读数位自身的坏形)/ C4(读取预算),`scripts/run-cloud-skill-tool-lists-test.mjs` 新 B2 / B3。 已知限制 KL-905 – KL-908(见 `### Known limits`)。
304
+ - **`projectMcpConfigs` / `mcpConfigsToSpecs` / `mcpConfigToSpec` 遇不是对象的条目(`null`、串、数、布尔、数组……)不再抛 `TypeError`,该台记一行披露、其余台照投**(CC-984;**§129 ME-1**;行为变,窄:修前抛的输入今天不抛,修前答 `transport_invalid` 的原始值 / 数组条目今天改答新词 `entry_not_object`;合法表的请求体逐字节不变):`.mcp.json` 里写了 `"srv": null`,修前整张投影在读 `toolAxes` 时抛 `Cannot read properties of null`,好台一台都出不来、也没有披露行。修后:`McpConfigDropReason` 九 → 十一词 —— `entry_not_object`(条目本身不是对象:`null` / `undefined` / 原始值 / 数组 / 函数;名字可用才答它,名字不可用的条目先答名字成因,与修前同)· `entry_unreadable`(条目是对象、但读它自己的位就抛 —— 取值器 / 代理陷阱 / 已撤销代理;整表上这一位的读就抛同记它。传输一侧的任何结局〔不受理的传输类别仍静默跳过 / 传输硬坏形 / 身份头两位同设〕先答,传输本身可上才是「条目读不出」;`env` / `headers` / `args` 里嵌套的外来值是已撤销代理时判官的形判会抛,同「读不出」记 `transport_invalid`〔点名整份 `transport`〕;**引擎判官端口自己的抛不被吞**,仍原样上抛;整表入参本身读不出〔键枚举就抛〕仍抛,没有条目可记)。两新词与名字类四词互不相干,披露句各一句(en / zh):点名服务器与宿主标签、说清条目应写成什么、说这一台没起而其余照常、给改法,不带机读词、不回显抛出物。单条出口 `mcpConfigToSpec(name, c)` 对这类条目答 `null` 不抛(与整表口同一只判读处)。附带:传输以外的四个键(`toolAxes` / `elicitation` / `allowTools` / `startupTimeoutMs`)改为入口各读一次(修前 `allowTools` / `startupTimeoutMs` 各读两次),取值器抛的条目不再掐掉整张投影;读序随之变:`allowTools` / `startupTimeoutMs` 的取值器现在对不受理 / 传输坏形的条目也会执行(修前只在上体时才读;JSON 解析出来的条目没有取值器,不受影响)。
305
+
306
+ - **`inheritEnvRefusalFromError`:拒体机读位点名了别的字段时不再出 inheritEnv 的猜测句;点名了 `inheritEnv` 时出肯定句**(CC-985;**§129 IE-2**;行为变,窄:只在拒体带机读字段位时;公面运行期零新增):修前读口见请求带 `inheritEnv: "all"` 且拒体没有「帽」的机读位就认领 `request.field_invalid`,而 `settings.hooks` 预算拒这一类 400 带着 `field` 却不是帽形 —— 同一次 400 的屏上既有那一只拒自己的话、又有 inheritEnv 的条件猜测句(终端为此在壳里加了互斥位)。现读口先看拒体的机读字段位(顶层与 sdk `extra` 袋的 `field`、`detail.field`、`detail.problems[].field` 三处,同一只包内读口,只认自有数据位、逐处隔离、坏形当缺席),四分支:① 点名了别的字段 ⇒ `null`(整句缺席,链上其它臂各说各的);② 点名了 `inheritEnv` ⇒ 读数多可选位 `field: 'inheritEnv'`,`inheritEnvRefusalContent` 出肯定句(消息目录新键 `session.inheritEnv.refusalNamed`,英 / 中);③ 没有机读位(含坏形机读位)∧ 请求带 `"all"` ⇒ 与 0.100.0 逐字节同(条件句,键 `session.inheritEnv.refusal` 不变);④ 请求不带 `"all"` ⇒ `null`(同)。0.100.0 的「帽读口让位」那一行并入新读法(帽拒必带 `field`,被 ① 覆盖),不留第二条读路。服务端对 `inheritEnv` 这一只拒今天(7.134.0)没有机读位,所以真服务端上这一只仍走条件句。门:`scripts/run-inherit-env-wire-test.mjs` IE0b – IE9c · `scripts/run-turn-failure-presentation-test.mjs` IE-T0 – IE-T4。
307
+ - **`settings.approvalFrameFamilies` 的读数只来自宿主交的 `approvalFrameFamiliesReading`,装配口不再读缺省引擎目标的能力缓存**(**§129 FB-1**;🔴 行为变,窄:只改「缺省目标合格而宿主不交读数」这一形;0.101.0 未发布 ⇒ 无已发布面受影响):修前不交读数时装配口按缺省会话的引擎目标读能力位 —— 多会话 / 多引擎宿主里缺省目标不一定是这一发要去的那台(缺省会话指服务端 ≥ 7.134.0、另一会话指 7.133.x 时,发往后者的请求带了它不收的键,整条 400 `request.body_shape`),与 `buildTaskRequest` 头注「本层不读能力(零全局状态)」也自相矛盾。现在不交 ⇒ 不铸键(请求体与 0.100.0 逐字节同、不进去向回执 `omitted`);要声明 ⇒ 宿主按这一发的引擎地址取 `observedApprovalFrameFamilies(baseUrl)` 交入参(单引擎宿主同样要交)。公面、型面、消息目录零变。
308
+ - **`no_trust_step` 下项目层 / 本地层 hooks 不上请求体,如实声明并披露**(**§129 FB-2**;🔴 行为变的方向是 0.100.0 → 0.101.0;语义取自上游层准入判官,本包不改):见 `### Added` 的 `HooksWirePlan.settingsWithheld`。网页端 / 桌面端 / `-p` 宿主:要项目层 / 本地层 hooks 上体须经信任步骤(`workspaceTrust()` 报 `accepted`);§129 HP-2 里「端口只交一位布尔、本包交收紧词 `declined`」的旧句按 `httpHookPolicy` 现读法(取设置源那一次读的真读数)改正。
309
+ - **能力位读器 `observedProjectMemoryCapability` 的缺省读锚入受保护读;云配置腿 `cloudMcpToSpecs` 对「条目读不出」与本地腿同律**(**§129 FB-3**;行为变,窄:只对宿主喂进来的非 JSON 形对象;公面类型 0〔`CloudMcpDropReason` 联合 +1 员 `entry-unreadable`〕,消息目录 +1 键〔en / zh〕):① 宿主装的引擎目标读 `baseUrl` 就抛时,`observedProjectMemoryCapability()` 修前外抛,现答 `unobserved`(同族另三只新读器本来如此)。② 云配置腿修前:`allowTools` 位的取值器抛记 `allow-tools-invalid` + 路径(本地腿同一输入记 `entry_unreadable`,两词),`toolAxes` / `elicitation` / `name` / `enabled` / `transport` 位的取值器抛或条目是已撤销代理 ⇒ 整张云投影抛。现在:行级位与那三位的读就抛 ⇒ 只这一台记新成因 `entry-unreadable`(不带 `path` / `problem`、不回显抛出物)、其余台照投、整张投影不抛;次序同本地腿(传输一侧的结局与「已停用」先答;`toolFaces` 读不出仍 `tool-faces-invalid`);云配置通告句 +1。传输一侧的最后一次判官调用也受保护(候选里的 `env` / `headers` / `args` / 身份头成员是已撤销代理 ⇒ 这一台记 `transport-invalid`、路径 `transport`,其余台照投;修前整张云投影抛,本地腿早已如此)。条目不是对象仍记既有的 `missing-field`(行为同律,词不同)。合法输入的请求体逐字节不变。
310
+ - **自有数据位读法只有一份:五个叶子里的手写副本改调 `ownKey.ts` 的助手**(**§129 FB-4**;行为变,窄:只在 `Object.prototype` 被植入 `value` 的进程里可见;公面 0):行种(`rowKind`)、人轮句(`humanTurnSentences`)、提交送达账(`promptDelivery`)、队列吸收(`queuedDelivery`)、模型身份可解析性(`modelIdentityResolvability`)各自手写了一份「取描述符、判是不是数据位」的读法,其中的 `'value' in 描述符` 在 `Object.prototype.value` 被植入后对访问器描述符也成立 —— 行上挂取值器的 `_sema_row_kind` 被读成 `api_error`、`ctx.modelName` 取值器被读成植入的模型名进句子、提交送达账的尝试号被伪造、队列跟随者的 `hidden` 取值器被读成合批。现在五处都走同一只助手(取值器零执行、读抛 ⇒ 缺席),其余两处同文件里 `'value' in` 的写法改自有判。全仓 `'value' in` 剥注释后的计数进门棘轮(67 → 61,只降)。
311
+ - **公面孤儿型 `ManagedPolicyReading` 登退役账**(**§129 FB-5**;零代码行为、公面 0;退役登记 RL-290,期限 0.102.0):宿主设置源的 `managedPolicyReading()` 返回同形的 `HostManagedPolicyReading`,旧型随进程级设置口退役后包内零读点,经 `export *` 留在公面;终端回调返回标注换成 `HostManagedPolicyReading` 之后的下一个本包版本,本型退出根入口(型面 BREAKING,届时写硬破坏三句)。本版不删(不在发布前一刻加型面 BREAKING)。
312
+
313
+ - **描述符判「是不是数据位」全包只有自有判一种写法**(**§129 FV-1**;行为变,窄:只在 `Object.prototype` 被植入 `value` 的进程里可见;公面 0):五十九处 `'value' in d` 改成自有判,姿态车道放行依据 `settingsAskRuleMatched`(`automaticAnswerVerdict`)与宿主设置入口的权限源各位(含目标服务端版本 `serverVersion`)改调共用的自有数据位读口。修前访问器描述符在植入 `value` 后被读成数据位:宿主事实是访问器 × 植入 `false` ⇒ 卡被答 `may_answer`(0.100.0 起即有);目标版本位是访问器 × 植入 `'7.134.0'` ⇒ 域名形 deny 被扣下。现在读不到(`host_not_reported` / 照投)。同形另五处(座位能力位读口 `seatCapability` 的 `"value" in`、四处以 `'get' in` / `'set' in` 判访问器)同改 —— 座位能力位是取值器 × 植入 `value: true` 时此前读成「报了、能」。托管「只认托管规则」开关与 `clientOwnedServers` 坏形判改为同一次读取。
314
+ - **「这一发谁答了、答了几」只有一只读口;turn 失败呈现读分诊判决带出的快照**(**§129 FV-3**;🔴 行为变,窄;公面 0):分诊 `classifyTurnWireError` / `isWireTransportError` 与 HITL 决断发送机同读一只(包内件),呈现层不再走读成因链。读数变化:顶层只有旧槽 `statusCode` 的抛出物分诊落 `http` 臂(0.100.0:`transport` / `internal`,发送机按 `statusCode` 判决 —— 两种答案);顶层 `status` 在场却不是数(`'503'` 一类)⇒ `internal`(0.100.0:成因在场即 `transport`);`isWireTransportError` 对这两形答 `false`。成因链的取值器前后两次答不同的层时,`turnFailurePresentation` 的句子 / 码 / 重试判决同出一层(此前句子与码可出自两层,一只确定性码被换成可重试码);类别判据不再对抛出物重读码。HITL 决断发送机的判类(谁答了 + 是不是传输失败)出自同一次读取,投递段上抛之后结局铸口复用这一次投递抛出那一刻的读数(并发投递不串);顶层 `cause` 位一次判决只读一次。
315
+ - **成因链每一层与顶层同一只状态读法 + HTTP 状态域**(**§129 FV-4**;🔴 行为变,窄;公面 0):包了一层的 `statusCode: 501` ⇒ HITL 决断发送机 1 发判决、分诊 `http` 501(0.100.0:4 发 `transport`);可调用对象形的错误与普通对象同读状态位;状态域 100 – 599 整数之外的数(子进程退出码 `1` / `0`)不算对端答了 —— 包了一层的 ⇒ 4 发、`unconfirmed{transport}`(与 0.100.0 同),顶层的 ⇒ 不再读成「对端答了 1、决断被拒」;包了一层的 `status: '503'` ⇒ 阻断(不重发、分诊 `internal`),审批决断桥的重发判型同读;链上答了的那一层状态位读不出 ⇒ 同阻断(此前顶层名字像中止时发送机按传输失败重发 4 次)。 顶层两形相对 0.100.0:串形 status(如 `'500'`)⇒ 读不出、阻断(分诊 `internal`、发送机 1 发;0.100.0 当没有 status);`NaN` 等域外的数 ⇒ 不发言(带成因 ⇒ `transport`;0.100.0 落 http 臂、状态码 `NaN`)。审批决断桥的重发判型相对 0.100.0 分歧三类:状态位在场却不是数、只有旧槽 `statusCode` 的一层 ⇒ 不再补发;域外的数(子进程退出码)之后有瞬断证据 ⇒ 多补发一次。
316
+ - **技能两张工具清单重铸的拷贝落位不走 `[[Set]]`**(**§129 FV-5**;行为变,窄:只在原型链被植入下标 setter 的进程里可见;公面 0):`skillToolListsVerdict` 修前 `push` 验过的条目 —— `Array.prototype` 被植入下标 setter 时,`disallowedTools: ['Bash']` 能被换成 `['Read']` 上 wire(两条腿同受;0.100.0 起即有)。
317
+ - **帽的拒 / 场景拒读口:外层码只读一次**(**§129 FV-7**;行为变,窄:只对两次读答不同的抛出物;公面 0):`fieldLimitRefusalFromError` / `scenarioDenyFromError` 的码与折叠身份出自同一次读取(与规则拒因读口同一只);修前两次读之间换答案的对象能把直接的字段拒标成 `folded`、或让非折叠的 409 被认成场景拒。真 sdk 错误与普通 JSON 拒体逐字节不变。
318
+ - **能力位读口的缺省读锚受保护**(**§129 FV-8**;行为变,窄:只对宿主装的取值器 / 代理目标;签名与公面零变):三十一只 `observed*(baseUrl?)` 的默认参数此前在函数体保护之前求值 `engineWireTarget()?.baseUrl`,宿主装的目标 `baseUrl` / `principal` 取值器一抛读口就抛(`observedSkillToolLists()` / `observedApprovalDecidedBy()` 等;0.100.0 起即有);现在读锚读抛 ⇒ 当没装目标、答 `unobserved`。缺省读锚全包只有一种取法(包内件)。
319
+ - **权限规则投影失败 ⇒ 这一回合不发,不论托管在否**(**§129 FW-1**;🔴 行为变:放宽方向的回归修;公面 0):宿主设置入口的权限臂在投口抛(值级端口缺席 / 判官答不上来)或按层合并抛时,托管不在曾落 `withhold_notice` —— 判决 `send`、请求体一条权限规则都不带(会话 / 命令行 / 设置文件里的 deny / ask 静默丢),同时挂一句「这一发不发」;现在 `projection_failed` / `refuse_turn`(与成因表同一格),装配口抛的 `HostSettingsRefused` 以 `cause` 带出投口那一只拒装(`assemblyRefusalOf(e.cause)` 读得出成因与点名);判形口与装配口另核「投影失败的行只许落拒发」。HS-PROJECTION 句进消息目录,主语由「hooks」改为「设置」(同一句用于三处:hooks 判不清 / 权限投影失败 / 派发前重判判不清);权限投影失败那一形的句子点名成因:拒因是本包在**这一次投影**里铸的 `ports_missing`(按这一次投影的令牌认,不按铸出先后;唯一读口同时核拒装身份仍读作 `ports_missing`)⇒ 句子点名缺的那几只值级端口(同一句的点名形,英 / 中两份;产物判决句与装配口抛出句同一句);拒因读作 `judge_unanswerable`(装上的判官端口自己抛 / 答不上来)⇒ 点名判官故障的那一形(英 / 中两份;不说「重新载入设置」);其余(别的拒装成因 / 原始值 / 宿主抛出的同形身份 / 早先那一只端口缺席拒装被再抛 / 宿主端口重入的另一次投影铸的那一只被外层再抛)⇒ 不点名的那一句,不编造端口名。网页端 / 桌面端「零动作」的前提:装了五只规则判据端口(没装而有任一非空规则 ⇒ 每一回合拒发)。
320
+ - **结果帧的本流末行按消息收口**(**§129 FW-2**;行为变,窄;公面 0):主线程轮末(铸 `turn_usage` 的那一拍)收口上一条助手消息,它只作回落;修前一个回合里两条助手消息被拼成一段当 `result`,交互车道随即误报 `result_text_diverged`;轮末之后迟到的段末帧仍归上一条消息,没出正文的轮末(空轮界)不关这一窗口(两次空轮界之后迟到的段末帧曾被算成当前消息);「这条消息出了正文」两层同一判法(去掉首尾空白后非空;最后一条消息只有空白时修前交互车道误报一次)。
321
+ - **HITL 决断发送机只读分诊那一次的码读数**(**§129 FW-3**;行为变,窄:只对两次读答不同的抛出物;公面 0):停驻轮询、车道关回落、结局分码不再回抛出物重读码;归因阶梯的重发判词、结局上的拒收读数判官与活卡腿的失败铸口收那一次读数作显式入参(状态与码只读它,其余体位读原抛出物,抛出物身份不换);答了的那一层与它的码同一只铸口、不可分;归因阶梯去键 / 换名只认那一次读数正面确立的状态与码。修前码位首读读不出、再读读出停驻码 / `settled_by_not_in_proof` 的对象会起一轮重发,第四次读出 `conflict.ask_decided` 的对象被判「别处先决」;另四形同收:卡上答复那一拍调用方信号已中止(拒绝 + 中断)⇒ 活卡读数丢码(410 `gone.ask_parked` 读成别处已决、409 `conflict.ask_decided` 读成仍在等、绑定不符的安全码消失);停驻信号名的包装 ⇒ 结局「被拒、仍在等」;状态位首读读不出、再读 400 ⇒ 阶梯去键重发(活卡拒收读数同一形再读出 409 `conflict.ask_decided` ⇒ 「别处已决」;现在不出判决);宿主错误类的 `toString` 用私有字段 / 冻结抛出物的码位不是串 ⇒ 别处已决读成「被拒、仍在等」;那一次读数的层不是判官要读的那一只(宿主自造的同名安全停包装)⇒ 码按读不出。
322
+ - **码 / 体读口与状态读法同一「对象或函数」判**(**§129 FW-4**;行为变,窄:只对函数形错误;公面 0):函数形 409 `conflict.ask_decided` 修前落 `not_applied{refused}`(丢掉别处先决与首决),现在与对象形同答 `settled_elsewhere`;拒体顶层 `field` 那一读同判(函数形 409 `resume_outcome_invalid` + `field: "answer"` 的分码与「改答案再发」补句、绑定席的分码与对象形同答);归因阶梯的拒收判词与决断拒收公共管线(`decisionRefusalAskReading` / `classifyDecisionRefusal` / `readDecisionRefusalReading`,含安全停包装的 `cause`)同判(修前函数形 400 `settled_by_not_in_proof` 不去键重发、决断没落地)。射程只到接入文档 FW-4 行清单内的读口;展示面读口约四十处仍只认对象(CC-1003)。
323
+ - **外来体读数落数组只经自有落位**(**§129 FW-5**;行为变,窄:只在原型链被植入下标 setter / `Object.prototype.value` 的进程里可见;公面 0):全包读后重铸数组的 `push` / 下标赋值改经 `appendOwnElement`(`allowTools` 快照修前可被换词后照样上 wire);权限 / 工具面 / hooks 所经八个文件(含插件 hooks 投影:修前上 wire 的命令可被原型链上的下标 setter 换掉而判定仍是 `projected`)整文件零 `push`;描述符 `?.value` 直读改调自有数据位读口。
324
+ - **按会话键取的读锚受保护**(**§129 FW-6**;行为变,窄:只对宿主装的取值器 / 代理目标;签名与公面零变):`subagentResumeAvailable` / 行停止门能力判官 / 留存审计口在那一槽目标取值器抛时答「没有」,不再外抛。
325
+ - **决断拒收读数的状态与码同一次读取;投递那一次说不出答复层就不回落现读**(**§129 FW-3**;行为变,窄:只对两次读答不同的抛出物、只带旧槽 `statusCode` 的抛出物;公面 0):活卡腿与发送机结局附带的拒收读数,状态与码整只取投递段那一次读数,交给「这一问是否已决」/ 送达判点 / 重试后不在待决与 409 分码判官。修前码取那一次读数而状态从抛出物再读三次:状态位首读 400、后读 409 的拒体在活卡读数里铸出 409 专属分码 `row_integrity`,首读 409、后读 503 的附带读数状态 503 而结局 409;那一次读数没有答复层(传输失败 / 本地错)时码也回抛出物再读,后读读出的 409 `conflict.ask_decided` 被判成「别处已决」(同一只抛出物发送机答 `unconfirmed{local_error}`)。现在三处状态同为首读值;那一次读取里没有读到答了的那一层 ⇒ `unsettled{no_answer}`、读数无状态 / 判决(不回抛出物再读状态),码(机读码与那一层的本地闭集码)取那一次读到的,「是否已决」据此与铸点读一次的协议名判 —— 码被剥掉的 `AskDecidedError` 重建形读作已决,与公面读口同答,那一次之后才出现在错误上的状态 / 码不算;答复层状态位读不出,或那一次读的那一层不是判官要读的那一只(宿主自造的同名安全停包装)⇒「是否已决」读作 `unreadable`。「读事实的是哪一只」只认一次:投递段对它决定过的每一只(顶层、答了的那一层)读一次唯一的 `cause` 读法(本地码取那一层读数里同一次读到的;顶层包装自己不是答了的那一层时,它的本地码在投递段决定上抛时读一次),失败铸口、拒收读数(活卡与发送机)与归因阶梯都沿用(修前失败铸口与铸点各再读一次本地码:码在几次读之间换答案时,引擎答了的绑定不符被铸成零字节的 `not_sent`,发送机读成别处已决),不出自投递段的在铸点读一次;协议名铸点读一次,读数的 `protocolName`、「是否已决」与 409 分码同用;读数、码记录与投影出的码位上缺席的位不借原型链(修前无码的 409 遇被植入的 `Object.prototype.errorCode` 会带上编出来的码并铸「没救」);投递段与分诊的读数记录(两只捕获位、链读数的答复层、走读读过的顶层 `cause` 与本地码、唯一 `cause` 读法的本地码、投递事实的停驻重投位、停驻读数的重投邀请位)、投递账、失败铸口的入参袋与拒收读数的判决位投影上 present-iff 的位同律,只经一只自有数据位读法(修前按键读:被植入的 `Object.prototype.answered` 让状态读不出的投递读成「别处已决」、普通本地错铸成 409 `settled-elsewhere`,植入 `true` 让未决读成读不出);停驻读数的重投邀请位进发送机结局与活卡上屏句的那两处投影、拒体指路键 `currentPending` 与它的 `boundInputHash` 同律;收口判官 `decisionRefusalClosesOut` 读的 `transient` / `conflict` / `standing` 三位按机读位读法(自有数据位,取值器不执行;只在原型链上 ⇒ 缺席,自有访问器 / 读描述符就抛 ⇒ 读不出 ⇒ 不收口 —— 修前与 0.100.0 按键读:取值器被执行、按它答的值判,只有取值本身抛才不收口:读描述符就抛而取值照答的代理、取值器答 `undefined` 的自有访问器修前照常收口;不是自有位、只在取值时才抛的修前不收口,今天按缺席照常判)(修前按键读:被植入的 `Object.prototype.retryAfterMs` 让发送机停驻结局凭空带 `retryAfterMs`、活卡停驻句念「引擎建议等约 4 s」,被植入的 `transient` 让该收口的拒收不收口,被植入的 `currentPending` 进了拒收读数与公面直读)。没有一层答的形里与答复层在更深处时,顶层自有 `code` 一次投递只读一次,读数与投递段决定上抛哪一只都用成因链走读读到的那一份(修前读两次、判官取第二次:首读缺席、再读 `no_pending` ⇒ 活卡「已决」,0.100.0 未决)。出自投递段的失败,「入参是一只结局联合」的捷径不再先行 —— 入参就是那一次读过的失败载体(修前载体在那一次读之后才长出 `kind` / `refusal.ask` 也被当成结局读:409 码表外读成「别处已决」;0.100.0 起即有)。只带旧槽 `statusCode` 的错误仍是两读法:活卡读数按那一次读到的状态判,公面读口只认 `status`。
326
+ - **活卡腿的答口抛本包安全停包装 ⇒ 结局带安全停码**(**§129 FW-3**;行为变:相对 0.100.0 的回归修;公面 0):答口经本包决断桥出站、抛出带引擎 409 `cause` 的 `binding_mismatch` 安全停包装时,包装身份随投递段那一次读数交给失败铸口(答复层照常上抛:拒收读数、归因阶梯与发送机都读答复层)—— 引擎答复在包装的 `cause` 上、或隔着普通包装更深一层都一样,深一层的结局与拒收读数与深 1 层逐字同(修前中间多一层就丢安全停码,0.100.0 带);绑定不符包装套带归因键的 400 `settled_by_not_in_proof`(不论深几层;包装自带那只 400、包装套自带 400 的同名内层同此)按安全停处置、不去键重发:两条腿各 1 发,活卡 `unsettled{engine_refused}` 带 `safetyCode: 'binding_mismatch'`、发送机 `not_applied{refused}`,拒收读数不带归因拒收分类 `denyAttributionRefusal`(那一类给的出路是去键再发,安全停的出路是重新给人看 —— 阶梯判词与读数同一只判官,同时让位)(包装套 400 的几形结局词与安全停码与 0.100.0 活卡同,0.100.0 的拒收读数另带 `denyAttributionRefusal`;修前两条腿去键重发、第二发落地即 `decided` / `applied` —— 安全停要的是重新给人看,没经人就生效了;包装自带 400 那一形 0.100.0 也去键重发);耐久拒腿(不经投递段)的阶梯同一条让位(决定口抛自带 400 `settled_by_not_in_proof` / `request.body_shape` + `field: "settledBy"` 的绑定不符安全停形 ⇒ 1 发、结局带安全停码;修前与 0.100.0 都去键 / 换名重发、落地);阶梯读本包安全停形与失败铸口是同一只直交读口(先只读 `name`,是同名包装才分诊一次,包装头取分诊那一次读到的 `code`),读过的那一次(包装头 + 分诊读数)整只交给失败铸口沿用 —— 铸口照样按投递段同一只读口铸同形读数,`name` / `code` / `cause` / 状态槽不读第二次;阶梯判词的状态 / 码也只取那一次分诊读数(不回抛出物再读),投递段读法给了而读数缺席 ⇒ 不去键 / 换名(闭合失败,不回落现读);别的直交车道(耐久批准腿 / 问答车道 / 耐久拒腿去键之后那一发)在格式化失败文字(按键读 `message`)之前用同一只直交读口读这一次,交给失败铸口;拒收读数的归因拒收分类与阶梯判词同一只判官、同一条让位 —— 判官同、喂的载体不同(阶梯喂抛出物自己,铸口以上抛的答复层为载体),「安全停在场」两支同问一位(见本段「本包安全停不重试」):宿主自拼的别种本地码安全停包装(`no_pending` / `wrong_gate` / …)套 / 自带带归因键的 400 `settled_by_not_in_proof` ⇒ 活卡 / 耐久拒腿 / 发送机各 1 发、拒收读数不带「去键再发」那一类;射程:不经投递段的失败铸口只在顶层是本地闭集码的同名包装时铸带这一位的那一份读数(批准腿 remember 回退 / 问答车道的结局安全停码同此:活卡带、耐久腿不带,随 CC-1014)—— 顶层是码不在闭集的同名包装、答了的那一层才是本包安全停(自带带归因键的 400)时,耐久拒腿的拒收读数仍带「去键再发」那一类,活卡不带(两腿都 1 发;既有,直交路径收成一只门随 CC-1014);码不在闭集的同名包装不是本包安全停 —— 只是不因安全停而阻断,重不重发照阶梯判词(投递段按答了的那一层;耐久拒腿的直交支以抛出物自己为载体,400 在更深处时不去键)(读事实的是哪一只,随 CC-1014)(修前阶梯只交包装头,铸口见到它就跳过同形读数:绑定不符包装套普通包装 / 无状态对象再套 409 / 410 时,耐久拒腿的拒收读数没有状态 / 码 / 判决〔批准腿与活卡带〕;自带 / 包装套带归因键的 400 那几形,耐久拒腿的拒收读数照带 `denyAttributionRefusal`〔活卡不带〕)。只给这一形:别种本地码的包装带着引擎答复的 `cause` 照旧按引擎答复铸(对象形与可调用形同),不读成零字节的 `not_sent`;本地码包装只在**不带 `cause` ∧ 状态位证明缺席**时铸零字节的 `not_sent`(包装契约:本地拦下的安全停不带 `cause`、没有状态)—— 「不带 / 没有」只认缺席证明,两槽皆证明缺席才算,两槽问法不同 —— 状态槽(`status` / 旧槽 `statusCode`)经包内唯一的三态读法 `slotPresenceOf` 问两问(自有数据位在 ⇒ 在场;自有数据位不在且 `k in o` 为假 ⇒ 证明缺席;只在原型链上 / `has` 陷阱抛 / 自有访问器 ⇒ 读不出,取值器不执行;证明与状态值出自同一次描述符读取),`cause` 槽经唯一读法 `causeSlotReadOf` 问三问(一次观察:证明与值出自同一次自有描述符读取,数据位的值取自那一次描述符、不再按键取值;证明说读不出 ⇒ 不取值;缺席要描述符缺席、`in` 为假、按键取值答 `undefined`〔值不取〕三问一致,任一不一致〔如描述符与 `has` 说没有、代理的取值陷阱却答了东西〕⇒ 读不出)。状态槽没有第三问:描述符与 `has` 说没有、代理的取值陷阱却答了状态 ⇒ 状态槽按缺席判(第三问的去留随 CC-1014)。自有 / 原型链上的取值器不执行 —— 例外:`has` 陷阱撒谎的代理(`in` 答假,却把读取转发给带 `cause` 访问器的目标)藏起的那只取值器在 `cause` 槽缺席第三问执行 1 次、值不取,它答 `undefined` 即按缺席判(不执行地识别撒谎代理无解,见 KL-1093);出自投递段的在分诊那一次读取时记进读数,不出自投递段的(直交:耐久腿 / 问答车道 / 不出自投递段的活卡失败)对本包安全停形按投递段同一只读口铸一份同形读数、并以投递段会上抛的那一只为读事实的对象,载体判、零字节判与拒收铸点共读那一份 —— 包装头每位只读一次(先只读 `name` 判形;`code` 取分诊那一次读取,成因链走不走也按它;包装头据此交给上抛判与载体判),顶层 `cause` / 状态槽每槽只读一次(环形成因链上每只对象同:走读按对象身份去重,重访即收场),直交与投递段逐位同(深层答复同:修前直交读包装那一层答 `no_answer`,投递段读答复层;本地码包装套着答了的 `cause`〔与包装契约相悖〕直交也按答复层判「是否已决」,修前直交按包装的本地码答未决、投递段按答复层;修前直交三处各读:`cause` 两读并执行自有 `cause` 取值器一次、状态三读;两次读答不同的描述符,直交铸零字节 `not_sent` / 按后读的 409 铸 `engine_refused`,投递段答 `no_answer`;这一形直交的拒收读数状态读法随之与投递段同:旧槽 `statusCode` 同认、HTTP 状态域外的数不带);那一次读取把它判成传输失败(原话命中网络词等),或这一发之前有过一发可能已落地的重发(首发传输失败、重发才撞本地安全停)⇒ 也不说零字节(直交没有投递,仍按包装契约)。带着 `cause`(含串 / `null` / 数这类原始值、自有位为 `undefined`、`cause` 读不出、只在原型链上)/ 带状态(含 `null`、域外的数)/ 状态读不出 ⇒ 按读数铸 `unsettled`、不说零字节(修前「载体就是包装自己」被当成没带 `cause`、「没有 HTTP 答复层」被当成没有状态:原始值 `cause` 的包装、读一次就删掉自己的 `cause` 取值器、原话 `fetch failed` 的包装都先发 4 发再铸零字节,`cause` 读不出与状态 `0` 也铸零字节);本地码包装带着非答复的 `cause`(串 / 无状态对象 / 无状态 `Error` / 瞬断码对象)时,分诊照起点规则按传输失败判,结局不说零字节;**本包安全停不重试(含 5xx 形)**:「是不是本包安全停」是上抛读数上的一位 —— 顶层包装或答了的那一层是同名包装(自有 `name === 'HitlSafetyError'`)且那一次读数捕获的码在本地闭集(`GATE_FAILURE_CODES`:`binding_mismatch` / `no_pending` / `wrong_gate` / `binding_missing` / `empty_answer` / `bad_plan_edit` / `bad_plan_mode`);五处自动再发只问这一位,在场都不发:投递段的有界传输重试与 5xx 重试、归因阶梯的去键 / 换名重发、流内问族的 425 `parking.ask_retry` 停驻轮询、发送机安全停臂(结局 `not_applied{refused}`,不按答复层宣告别处已决 / 不在待决 / 幂等冲突 / 停驻 / 车道关 —— 答复层是停驻时,停驻臂随带的 `sessionId` 也不随外层词带出)与随它的车道关回落审批族;另两只「附带愿望」回退(耐久批准腿 remember 专属码 ⇒ 去掉 remember 补发纯批准;计划复核 400 `request.field_conflict` ⇒ 去掉 `permissionModeAfter` 再发)问同一位、本包安全停在场即不补发(不经投递段:按投递段同一只读口铸那一份上抛读数再问 —— 顶层或答了的那一层是本包安全停都算,只在回退资格命中之后读;资格命中的普通拒为此付一次分诊〔答了的那一层只有分诊认得出〕与顶层 `name` 一次〔直交读口:顶层是同名包装 ⇒ 那一次读取随让位交给失败铸口,码不在闭集的同名顶层让位时失败铸口也不再分诊第二次〕;remember 回退判过的那一份读数整只交给失败铸口沿用、不再铸一次 —— 结局的安全停码与判它让位的是同一次读取,答了的那一层 `name` 不多读 —— 射程:顶层是本地闭集码的同名包装时;顶层不同名或码不在闭集、答了的那一层才是本包安全停 ⇒ 失败铸口照载体现读、守卫那一份不用,结局不带答了的那一层的安全停码、那一层 `name` 多读一次,随 CC-1014「直交路径一只门」收)—— 宿主自拼的别种本地码安全停包装包着 / 自带带归因键的 400、包着 425 / 501 ⇒ 活卡 / 审批族 / 流内问族 / 耐久拒腿各 1 发、不去键、不落地(修前只有投递段按七码让位,另四处只认 `binding_mismatch`:400 形三腿 2 发落地〔活卡 `decided`、发送机 `applied` 去键;0.100.0 活卡 1 发 `not_sent` 带码〕,自带 400 耐久拒腿 2 发,425 问族 2 发 `applied`,501 问族回落审批族再发一发落地,409 `conflict.ask_decided` 问族 `settled_elsewhere`);投递段这一处(让位判与上抛同用一份读数;包装头 `name` 只在那一次读数捕获到本地闭集码时读,普通 503 / 断网零增 —— 捕获到闭集码却不是同名包装的仿形抛出物每一次重发前多读一次 `name` 描述符,见 KL-1093):本包安全停包装的 `cause` 是断网 / 串 / 5xx / 码被剥掉的无状态重建形,或同名对象自带 5xx ⇒ 活卡 / 发送机 / 流内问族各 1 发 —— 活卡:绑定不符 `unsettled{engine_refused}` 带 `safetyCode: 'binding_mismatch'`(0.100.0 同),别的本地码按那一次读数铸、不带安全停码(`cause` 是断网 / 串 ⇒ `unsettled{no_answer}`,`cause` 是 5xx ⇒ `unsettled{engine_error}`;同名对象自带 5xx ⇒ `no_pending` 为 `unsettled{engine_refused}`、其余 `unsettled{engine_error}`,另带对象 / 函数形的非答复 `cause` ⇒ `unsettled{no_answer}`(载体指到那只 `cause`;串形 `cause` 不改载体,同只自带 5xx);0.100.0 1 发 `not_sent` 带码);发送机 1 发 `unconfirmed{transport}`(5xx 形 `unconfirmed{server_error}`)、不带安全停码 —— 这两个结局词的闭集义是「重试用尽」,这里只发了 1 发,成因词与安全停码的余项随 CC-1015(0.102.0)(修前两条腿同体重发、第二发落地即 `decided` / `applied`,没经人就生效了;每发都抛则 4 发,断网 / 串形活卡 `unsettled{transport_exhausted}`、发送机 `unconfirmed{transport}`,5xx 形活卡 `unsettled{engine_error}`、发送机 `unconfirmed{server_error}`;0.100.0 发送机同);射程:这一位只看顶层与答了的那一层 —— 安全停包装在顶层、或它自己就是答了的那一层(自带状态)才让位;夹在成因链中间(被普通包装再包一层而自己不带状态:`new Error('…', { cause: <安全停包装> })`)⇒ 不让位,投递段的传输 / 5xx 重试与归因阶梯的去键 / 换名重发两半都照常进行(首发失败、重发成功时活卡与发送机 2 发、第二发落地;活卡相对 0.100.0 是回归 —— 0.100.0 活卡没有传输重试、阶梯读顶层,这一形 1 发;耐久腿 1 发;中间层的身份位读法随 CC-1014,结局词随 CC-1015);决断桥自己的 decide 瞬断重试按走读走到的层上的实例判让位(自身起至多四层,先取得瞬断证据即停)—— 普通包装没先给出瞬断证据时挡得住更深的安全停实例,这一形在那里不重发;反过来,同名字段而非实例的仿形包装(普通对象)它不挡 —— 走读取得瞬断证据时耐久腿照重试(重发成功即落地),码不在闭集的安全停类实例它挡、这一位不挡(两读法合一随 CC-1014);顶层的绑定不符包装套着另一只同名包装时,顶层的安全停码优先,结局 `unsettled{engine_refused}` 带 `safetyCode: 'binding_mismatch'`(0.100.0 同;修前包装被拆成 `cause` 上抛,安全停码丢失,以它判「重取 + 重新呈现」的宿主不会把已变的卡重新给人看)—— 这条优先级只住共用拒收铸口那一份有效载体读数:活卡结局、发送机结局(审批族与流内问族)与它附带的拒收分类、公面直读同答 `refused-pending` / 未决,发送机这一形 `not_applied{refused}`、不按答复层的码 / 状态宣告别处已决 / 不在待决 / 幂等冲突 / 停驻 / 车道关(501:流内问族不再回落审批族),流内问族也不先按 425 `parking.ask_retry` 轮询重发,归因阶梯也不去键 / 换名重发(安全停先于轮询与阶梯;5xx 除 501 车道关外仍先落「服务端错」);先于安全停的只有 at-most-once 守卫(CC-862 同律):审批族这一发之前有过一发可能已落地的重发(首发传输失败)、重发撞的绑定不符形里答复层说不在待决(404 / 410)⇒ 说不准 —— 发送机 `unconfirmed{gone_after_retry}`(这一臂不附拒收分类)、活卡拒收读数 `ambiguous`(「说不准」只由这一只守卫判一处:发送机的附带分类口不另收重发上下文 —— 守卫之后的调用点上它改不了结果)(修前发送机这一形也铸 `not_applied{refused}` + `refused-pending`,读回说已不在等时照样这么说,活卡却说 `ambiguous`;流内问族有幂等键,不在此列)—— 有效载体读数的本地码是 `binding_mismatch` 的三种来源同此:顶层绑定不符包装套着更深的答复层、答复层自己是带状态的绑定不符同名包装、顶层绑定不符包装自己带状态(修前发送机附带分类按内层的本地码 `no_pending` 或答复层的已决码铸 `settled-elsewhere`,流内问族对包装套 409 `conflict.ask_decided` 铸 `settled_elsewhere` 带首决,审批族对包装套 410 `gone.ask` 铸 `not_applied{gone}`,问族先按停驻码轮询、第二发成功即 `applied`;顶层自己带 410 `gone.ask` / 409 `conflict.ask_decided` 的绑定不符包装,修前与 0.100.0 都铸 `not_applied{gone}` / 问族 `settled_elsewhere`;0.100.0 发送机对包装套答复层的几形 4 发 `unconfirmed{transport}`);投递段上抛的答复层本身是自带状态的同名包装时,读事实的就是它自己,不再把它当包装再拆一层(修前它还带 `cause` 时活卡拒收读数丢状态 / 码 / 判决,公面直读照读;这一形的答复层是带归因键的 400 `settled_by_not_in_proof`、顶层与答复层都不是本包安全停(同名包装的码不在本地闭集)时,两条腿现在去键重发恰一次 —— 修前读数说不出这一层、不重发,0.100.0 发送机按传输失败重发原体;任一是本包安全停(本地闭集码七码之一)⇒ 安全停,不重发)。顶层自己就答了(自带状态)的同名包装照旧按唯一的 `cause` 读法(CC-1014 同族)。绑定不符包装套引擎的 409 `approval_binding_mismatch` 时,发送机结局与直接抛那只 409 逐位同(包装套别的码时发送机按安全停码,与直接抛那只码不同)。
327
+ - **分诊对读不出的 `cause` 槽不取值 —— 顶层与答复层、成因链每一层**(**§129 FW-3**;行为变,窄:只对成因链任一层〔顶层 / 答了的那一层 / 更深各层〕的 `cause` 是自有访问器 / 只在原型链上 / 描述符或 `has` 陷阱抛 / 代理的描述符陷阱与取值陷阱答不一致的错误,以及答了的那一层带 `message` 取值器的错误;公面 0):`classifyTurnWireError` / `isWireTransportError` / turn 失败呈现 / 审批投递段的判类 / 审批决断桥(耐久腿)的重发判型与超时判型 / 模型能力探测的成因原话读 `cause` 那一格时,一律经包内唯一的一次观察读法(在场与值出自同一次自有描述符读取,数据位的值取自描述符,不在证明之后再按键取值):证明说读不出 ⇒ 取值器不执行、按读不出处置(走读到此为止,与取值器抛同答;顶层那一格 ⇒ 不越层、`cause` 不算在场,只剩原话的网络词腿;一次判决顶层只读这一次);可配置代理的描述符陷阱把访问器报成数据位 ⇒ 按它报的那一数据位读(底层访问器不执行,判决与它自报的普通对象形同);缺席要描述符缺席、`has` 答假、按键取值答 `undefined` 三问一致,代理的取值陷阱却答了东西 ⇒ 观察不一致 ⇒ 读不出(值不取、走读不沿它走);自有 / 原型链上的取值器不执行,例外是 `has` 陷阱撒谎的代理藏起的那只取值器 —— 第三问执行它 1 次、值不取,它答 `undefined` 即按缺席判(KL-1093)。包了一层的应答那一层只读机读码与原话(不读它的 `cause` / `name`);顶层自己答了 ⇒ 它的 `cause` 照唯一读法读一次(读不出不取值)、`name` 不读;那一层的机读码与本地码在本次判决读任何文字位(`message` / `name`,按键读)之前捕获一次 —— 文字位的取值器改不了判决用的这两个码(安全停的身份位 `name` 不在这次捕获里,见 §129 包侧缺口 ⑦)。修前只有顶层那一格经缺席证明:答了的那一层(包了一层的形)的 `cause` 按键取值、取值器被执行,码又在快照之后才捕获 ⇒ 改写 `code` 的 `cause` / `message` 取值器(`message` 那一形顶层自己答了时同)把答复层的绑定不符安全停读成别的本地码:带归因键的 400 去键重发、第二发落地 `applied` / `decided`,409 宣告 `settled_elsewhere`(0.100.0 发送机没有安全停臂,这几形同样不停);走读更深各层与决断桥重发判型的顶层照样执行取值器(宿主错误类原型上的 `get cause()` 包住一次断网 ⇒ 耐久腿按它答的瞬断码重发,2 发 `transport_exhausted`,活卡与发送机各 1 发)。用户可见后果:宿主错误的 `cause` 是取值器(类原型上的 `get cause()` / 自有访问器)时,turn 失败按顶层这一层判 —— 原话不含网络词 ⇒ `internal`,呈现说中性句「这次失败的原因读不出(错误对象有一部分不可读),不知道引擎是否收到了你的消息,重发之前先查 run 的状态」(消息目录键 `notice.failure.headline.causeUnreadable`,英 / 中各一句)并保留人工重试位(`retry.offer: true`,按类别;自动重发照旧不发)—— 不说「客户端的 bug、不是引擎故障」,中性句给分诊那一次读数记下了读不出的本地错:走读以「某一层 `cause` 读不出」收场,或顶层 / 答了的那一层的状态位读不出(自有访问器 / 陷阱抛;答复层那一形 0.100.0 说连接断、不知道引擎有没有收到,顶层两形说客户端 bug)同一句;分诊读数没记下读不出的本地错(真内部错;原型链上的状态位取值器按缺席判)仍是原句、不给重试(0.100.0 执行取值器、按它答的那一层判:包着断网 ⇒ 连接断、给重试,包着 409 ⇒ 按 409),原话含网络词 ⇒ 连接断(detail 是顶层原话,不再是成因里的 host:port);同一只错误在审批三条腿上与不带 `cause` 的同一只错误逐腿同答(消息文字本身不独立识别为传输失败时:活卡 / 耐久腿 1 发 `unsettled{no_answer}`,发送机 1 发 `unconfirmed{local_error}`;原话命中网络词 ⇒ 照旧按传输失败重试,活卡 4 发 `unsettled{transport_exhausted}`)。更深一层的 `cause` 读不出(取值器 / 只在原型链上 / 陷阱抛)⇒ 走读在那一层停下,更深处的答复层看不见,与顶层读不出同一条判法:起点规则(顶层带 `cause`)不作证据、只剩原话的网络词腿(顶层原话与成因层原话任一命中即算)—— 原话不含网络词 ⇒ turn `internal`,呈现同上一句中性句 + 人工重试位,三条审批腿各 1 发(活卡 / 耐久腿 `unsettled{no_answer}`、发送机 `unconfirmed{local_error}`);读不出那一层之前已见瞬断码的照旧按传输失败判(修前按起点规则判传输失败:引擎已答 409 的决断被同体重发 4 次 —— 活卡 `unsettled{transport_exhausted}`、发送机与流内问族 `unconfirmed{transport}`、耐久腿 1 发,turn 呈现成连接断)。射程外:「可证没送出」判词与传输失败现场口(缺省档走读,0.92.0 读法逐例保持)仍按键读 `cause`、照执行取值器 —— 读它们的是 turn 呈现的连接断臂(分诊已判传输失败之后)、会话自助抹除、计划复核 / 子代理 / 压缩各车道的「没答复」句、提交重开的现场读数等(这几处各自直接调,不经分诊)。原生 `Error` 与 sdk 错误的 `cause` 是自有数据位,读数不变。
328
+ - **审批卡「在场却读不出」登记的在场判与零字节缺席证明同一读法**(**§129 FW-3**;行为变,收紧方向,窄:只对卡载体上 `in` 答假、而描述符读得到访问器或读描述符就抛的键 —— 可配置代理的 `has` 陷阱藏起的自有访问器 / 描述符陷阱抛;退役老两键被藏起的数据位同此;公面 0):活卡帧腿 / v1 卡 / 通用卡 / 待决行四条卡腿登记 `unreadableEvidence` 时,「载体上这一键在不在」只经包内唯一的三态缺席读法(只有证明缺席才算不在;继承位 / 自有访问器 / 描述符或 `has` 陷阱抛 ⇒ 读不出、按在场登记),v1 卡的 `risk` 与退役的老两键(活卡帧顶层 `persistedRuleShadowed`、待决行 `riskDescriptor.shadowedRule`;自动作答判定口同读)同读。修前是宽读 `key in carrier`:自有访问器被代理的 `has` 陷阱藏起、或 `has` 答假而描述符陷阱抛 ⇒ 当缺席、登记丢掉(据登记闭合失败的规则车道与持久行判随之失效)。普通 JSON 卡读数不变。
329
+ - **可调用的安全停包装与对象形包装同读**(**§129 FW-4**;行为变,窄:只对函数形错误;公面 0):`refusalCarrierOf` 入口与 `cause` 同一「对象或函数」判 —— 自有 `name === 'HitlSafetyError'` 带 `cause` / 本地闭集码的可调用对象,`classifyDecisionRefusal` / `decisionRefusalAskReading` / `readDecisionRefusalReading` / 中断撤卡判定口 / 停驻解析 / 失败铸口与对象形包装逐字同答(修前入口先拒一切函数:带 409 `conflict.ask_decided` 的 `cause` ⇒ 分类 `undefined`、「是否已决」未决)。经投递段同读:「谁答了」的唯一读口(分诊判型)对可调用的顶层、与顶层的函数形 `cause` 同读状态位(与唯一的 `cause` 读法同界;更深的函数形层仍不走,CC-1003),分诊看得见答复层 —— 修前可调用包装带着引擎答复的 `cause` 被按传输失败发 4 发、结局铸零字节 `not_sent{no_pending}`(0.100.0 1 发、`unsettled{no_answer}`),绑定不符包装的 `cause` 是函数形时活卡与发送机都发 4 发;现在两形 1 发,活卡与发送机结局与对象形逐字同。「谁答了」是分诊的唯一读口,turn 分诊 / 呈现同读(`classifyTurnWireError` / `isWireTransportError` / `turnFailurePresentation`):函数形顶层或顶层的函数形 `cause` 带状态 ⇒ 按答复层判(修前 `transport` / 连接断、不给重试;例:函数形错误的 `cause` 带 503 ⇒ 现在服务端错、给重试,带 401 ⇒ 鉴权),函数形 `cause` 带瞬断码 / 不带状态 ⇒ 照旧 `transport`;更深的函数形层不认。函数形的层只回答「谁答了」,不当瞬断 / 超时证据;审批决断桥的重发判型、超时判型与「可证没送出」照旧只走对象(多认一种形状 = 放宽那几只判据)。
330
+ - **空正文增量不关迟到段末的归属窗口**(**§129 FW-2**;行为变,窄:轮末之后段末帧迟到、且下一条消息先流过空增量;公面 0):两层同一条 —— 窗口在下一条消息流过字节时关,空增量(零字节)与没有那一帧同答。修前任一增量事件(含空串)就关:`A` → 段末 `A` → `B` → 轮末 → 空增量 → 轮末 → 迟到的段末 `B` ⇒ `result` = `B`(丢了 `A`)、交互车道误报 `result_text_diverged` 且那一只段末事件不带行归属;现在 `result` = `AB`、零误报、段末事件带上一条那一行的归属。纯空白增量是下一条消息的字节,照旧关窗(与修前同);上一条消息没押着没收段的字节时空增量照旧当拍关窗(段身份不变)。
331
+
332
+ ### Gates
333
+ - PD-1 第四问 / XC-6 包了一层的应答 / PR-2 结果帧臂 / GN-23 四件的门(**§129 PD-1 / XC-6 / PR-2 / GN-23**;红先绿后,改前读数取上一提交的产物):`run-permissions-declaration-test` 新 PDV 段(老一代读者 × 目标版本矩阵:受理而不命中的一代 ⇒ 扣;7.135.0+ / 缺席 / 非串 / 读不懂 / 低于底线 ⇒ 与读者没装逐字节同;原型链版本位拒装;判别力自证)· PD5 / PD6b 改钉(会话策略写口零预判)· 新 PD6d(第四问只经 `engineVersionTier`)· R2 见证组交目标版本;`run-session-policy-wire-test` PDW1 – PDW6 改钉照送、新 PDW8(服务端 400 `rules.inert_entry` ⇒ `inert_entry` 臂);`run-hitl-decision-send-test` 新 DS-W 段(包了一层的应答 × 两族 × 十码与顶层逐位同、层深 4 / 6、读不出、瞬断码先行、车道关回落与停驻轮询);`run-transport-cause-chain-test` CH5b / CH5e 改钉、新 CH5g、新 CH7(同一语料发送机与分诊同读答了的那一层);`run-turn-failure-presentation-test` 新 TW 段(呈现 / 座位 / 提交失败分类与顶层同;机读位读答了的那一层);`run-print-result-arm-test` PA10b 改钉(旧映射点退役)、新 PA11 段(铸点只读判型:直调 / `runStream` 两路、结局不知道重判、端直调与 0.100.0 同、交互车道不多渲、CC 闭集、流式正文末行);`run-upstream-tables-test` G12 余五处(模块私有 `ErrorSubtype` 随铸点改读判型删)。
334
+ - 新门 `scripts/run-approval-frame-families-declaration-test.mjs`(**§129 AF-1**;147 格〔夹具含 ≥ 7.134.0 的服务端时;现役夹具 7.132.0 下 129 格、新一代腿记 `SKIPPED-SECTION`〕;行为门;负控一枚入册 `docs/GATE-NEGATIVE-CONTROLS.md`):A 公面与源码形 · R 读器五态逐形(32 形回体 × 自有访问器 / 抛陷阱的代理 / 原型链污染 / 未探 / 探测失败 / 失效 / 分账)· P 抗污染与抗敌意目标(`Object.prototype` 被塞同名位 / `value` 位不绕过校验、读 `baseUrl` 就抛的引擎目标不拆装配、`Array.prototype` 下标位被植入 setter 时读器 / 判口 / 交集步 / 装配口的请求体都不被换成另一族)· D 判口(交集不是并集、空数组照给、认不出的读数闭合失败、交集步直调喂假表)· B 装配口(交互 / `-p` 带键、旁路车道与非 live 不读不记、宿主交读数、手填拒、七格语料对着修前产物算出的金样逐字节同)· K / F 夹具腿(≥ 7.134.0 的服务端夹具 —— 现役夹具够新就读它,否则读下一代夹具位,都没有记 `SKIPPED-SECTION`;受理位与值族位铸点、`TASK_SETTINGS_KEYS` 含本键、词表元组逐词对拍;老一代夹具受理位缺席、读到 absent、请求体逐字节同修前)· G 真腿对拍(夹具服务端的受理判官与 `resolveApprovalLeg` 原样编译执行:本包装配出的声明 ⇒ `unattended` 缺席;不声明 / 声明另一族 ⇒ `frame_family_undeclared`)· N 负控(手造坏读器五只 / 坏判口八只 / 坏装配口一只各自变红)。公面基线 `public-export-baseline.json` +2(1978 → 1980:`observedApprovalFrameFamilies` · `approvalFrameFamiliesDeclaration`);`registry.json` 棘轮 `portability.index` 382 → 383(新叶 `src/approvalFrameFamilies.ts` 进 index 闭包,账尾追加)。
335
+ - 合并收口二(**§129 PR-2 / PR-3 / XC-2**;对抗审后修):`run-tool-history-mismatch-projection-test` RB 段第六 / 七类允许差补 present-iff 两向(上限词 = 帧上终局码经上限表的词,该在场缺席 / 不该在场在场 / 词不对三形记错;出路位只落带服务商状态码的终局)与非法接受位记错不剥;`printResultArmOf` 臂表改字面量 `satisfies`(增臂 / 删臂 / 多键都编译红);`run-terminal-table-provenance-test` G-TW3 加对象键表尺子(键含 ≥2 终态词的对象字面量 = 私抄;唯一放行形 = 字面量 satisfies Record<属主型['kind'], true>,放行名单恰一处);`package-hygiene` 词表收三个内部过程词(合并动词与两种树名)。
336
+ - 扩门 `scripts/run-tool-history-mismatch-projection-test.mjs`(产物对拍第八类允许差与前序拒收的组合:拒收优先;负控套一枚):RB 段的逐条分类抽成纯函数 `classifyRow`(行为不变,对拍读数同前);第八类(会话忙行末句改读结束 run 句口)与终局归属位 / 接受位两处「剥掉后相同就提前放行」只对没被前序拒收的行有效 —— 行种位不在闭集、CC-782 三位与帧不同源、错配键 / 重发键两臂对不上的行,不再被末句改读或提前放行翻回放行;上限族终局的结果帧缺上限词的存在性校验提前到两处提前放行之前。新自证段 RB8(不读发布产物,没有基线包也跑)对一对手造行直接问分类函数:正控五只 + 组合坏形(忙行 / print 车道忙行 / 结果帧 / 成功终局 × 行种位非法、与帧不同源的状态位、错配键、重发键、缺上限词),另补一格单类漏洞:第二类允许差(重发键)此前只在文本尾恰是那一句时才剥尾,文本没变、尾句缺席而多一只重发键的行剥键后照样逐字节相等被放行,现在重发键必须真对应行尾那一句。负控一枚(删第八类入口守卫 ⇒ RB8-a 红);本门在负控套里由行为门改判为登记物型(`negctl.class` automated,既往变异清单并入同一格)。
337
+ - 合并收口(**§129 PR-2 / PR-3 / XC-2**):`run-tool-history-mismatch-projection-test` RB 段加第六 / 七类允许差(结果帧只多 CC-925 出路位 `_sema_wayOut` / CC-924 上限词 `_sema_limit`,且读口 `resultWayOutOf` / `resultLimitOf` 同值;此前 24 条「别的差」= 这两位);`run-tool-history-accepted-test` TA2g 剥时钟位 `duration_ms` / `duration_api_ms`(跨毫秒边界的每流现铸位,与键无关);`run-terminal-table-provenance-test` G-TW3 收口:`printResultArmOf` 的臂准入改按 `RunTerminalRead['kind']` 型级钉的对象表,不再另抄一份终态词数组。
338
+
339
+ - 新门 `scripts/run-host-settings-source-test.mjs`(**§129 HS-2 – HS-7**;CC-939;包侧投影门三件之一,负控一枚 = 托管处置表摘一词整行 ⇒ 编译期两向钉红):S 公面 · BK 源形(六成员缺 / 非方法 ⇒ `TypeError`、恰调一次、逐成员降级、信任集外读不出)· CAP 捕获契约(污染 `Object.prototype` 整链判定不变 / 问题键四形 / 载体 `length` 只读一次 / 撤销代理 / 共享图有界 / 会话函数位 / 后调读口改对象 / `loaded-partial` 问题键 / 数组附加键)· MP 六词表逐格 + 四行为 · AG 采纳闸十八格 + AG19 – AG23 状态更新协议 · HC 先问八格 · OS 风格五格 · PL 按层合并 + PL-FLAG 双链 · 读预算口径(数组 `length` / 记录键枚举 / 每个自有键 / 记录形校验都先扣、量体同口径)· 抛出物留痕(`name` 位会再抛的对象不逃出一次读与 hooks 计划入口)· P6 差异账按产物算(有差的拍恰是账上两格、方向如账)。变异每段至少一枚(含各修法的修前读法复现 = 红先证据)。迁移门(设置源由槽改参,门侧迁移件 `settingsSourceOf` / `sourceFromPort` / `withSettingsPort` 在 `_gate-lib.mjs`,产品零兼容臂):client-core-pure(B8① 改经共享捕获件)· plugin-hooks-projection · hooks-merged-disable-projection · hooks-managed-policy-reading(三词 → 六词)· submission-identity · host-turn-settings · host-turn-settings-intake · settings-hooks-salvage · disable-skills-wire(G-DS7 语料 resolved 换三桶快照、五只摘要用 0.89.0 发布产物重取,方法自证)· task-request-omission-receipt · self-orchestration-denial · permissions-declaration(放行能力读数位改名 `allowGrantReading`,N1 单源格)· engine-cap-reader-factory / file-history-* / inherit-env-wire / mcp-tool-toggles(入口必交设置源与身份)· catalog-routing 语料(计划口交设置源)· upstream-tables G27-9 / G27-10(层准入判官读者移到共享读口 `settingsLayerAdmission.ts`,成文改口)。
340
+ - 新门 `scripts/run-provider-preset-baseurl-mirror-test.mjs`(**§129 VP-1**;负控套一枚):预设 anthropic `baseUrl` 是引擎缺省根常量的手抄同值,本门把这份镜像入账 —— 逐个读得到的引擎包源(开发依赖里的 `@sema-agent/core`、显式钉的 `SEMA_CORE_PKG`、夹具;夹具缺席只记 `SKIPPED-SECTION`,一个源都读不到整门 SKIP)读 `dist/brain/anthropic.js` 里恰一条的 `ANTHROPIC_DEFAULT_BASE_URL` 字面量声明(语法树读)、确认包根从该模块再导出这一名,并要求预设 `baseUrl` 与它逐字节同(差一个字符 / 多一个斜杠 / 大小写不同都红);另做手抄普查:`src/**` 里含官方 API 主机名的文件恰是预设数据文件一份。尺子逐只对植入样本自证。
341
+ - 扩门 `scripts/run-core-value-ports-test.mjs`(**§129 VP-1**):名表十八 → 十九、各处件数同改(部分装 ③d · 五件装了 ⑦e · 退役端口无人读 ⑧d / ⑨d · 两件装了 ⑩h 等格里的 misses 数);⑩a 改按位序钉(第 17 / 18 位是两件旧端口,此后追加不动它们);新 ⑪ 段 —— 第 19 位、没装 / 部分装没装 ⇒ `undefined`(不回落字面)、装了原串原样(尾斜杠 / 大写 / 首尾空白 / 空串)、引擎包根常量三档编译装得进(换成数 ⇒ 三档都红)、**硬破坏实证**(十八件旧袋按完整型建 ⇒ 编译红点名它)、真引擎常量装上读口同值、源码零官方主机名且读口体是对端口的一行直读(判别器自证)。
342
+ - 扩门 core-value-ports(⑥b 改判 `scope` 两侧都不在 + ⑥b2 引擎真字节拒传 · ⑥d 改判其余各键原样透传 + ⑥d2 仍被传来的 `scope` 原样过境)· engine-notice-catalog(G8e:两新码在册 / 受众 `operator` / 铸方 `engine` / 包根元组序紧跟 `config.credential_not_withheld` / 只登记不加读器;码册大小期望随装着的引擎再分一代 98)· automatic-answer-verdict FC7 与 mode-release-projection R4(对拍体按引擎 7.54.0 的真形同时带 `askFace`,老引擎忽略这一位:7.54.0 起命令面放行读问类体上的面,不再读折叠行里的面)。
343
+ - 扩门 `scripts/run-automatic-answer-verdict-test.mjs`(**§129 HK-1**;CC-899):钩子车道的矩阵格(HK1 单类 / HK2 二类 / HK3 与规则 / 姿态两车道的关系 / HK4 出身六词 / HK6 可放不带披露词)由「读 `hookAskFloor`」改成「读 `ruleMayClear`」,对**引擎包根**仲裁表独立推导;新 HK1a(`hookAskFloor` 假且规则清不掉的各类,含引擎拒钩子允许的六类 ⇒ `must_ask` `ask_class`)· HK1b(`hookAskFloor` 为 true 的类仍 `must_ask`,不放宽)· HK1c(任一类 × 真批准位 ⇒ `requires_real_approval`,含 `cross_boundary`)· HK1d(可放的类恰是 `ruleMayClear` 为真的类);新 HK10 段在引擎真链路上读钩子 / 策略答允许的处置(带真批准位的问被拒且工具不执行、不带的 ask 规则问照收、人答的允许放行),并要求同一张真卡去掉真批准位 / 强制位后钩子车道仍 `must_ask`;HK10g 用引擎自己的守卫策略自然铸出 `dangerous_delete` / `unverifiable_delete` / `unverifiable_shell_text` / `transcript_write` 四类真卡(这四类的 `hookAskFloor` 都是 true)逐类同判(判别器:把钩子车道改回读 `hookAskFloor` ⇒ HK1 / HK1a / HK10d 红;改成恒不拦 ⇒ HK1 / HK1b / HK10e / HK10g 红)。
344
+ - 新门 `scripts/run-mods-kernel-transit-test.mjs`(**§129 MK-1 – MK-4**;负控套两枚 + 门内合成内核六枚):`./mods` 入口的包侧门 —— 值级同一引用 · 根入口整张 dist 闭包(脚本与声明两张图)零内核引用 · 名单三向(门 ⇄ 转口源文件 ⇄ 内核包根声明)· 转口文件语法树白名单(顶层只许具名 `export … from`)+ **合成内核真载入对拍**(把八个原始量全改了的合成内核整只装进沙箱、转口产物真载入,转出的值必须是合成内核的同名值 —— 同一引用格认不出本地重铸的数 / 串)· 可移植(内核 dist 与入口产物零 Node 内建 / 零 Node 全局,浏览器真打包)· 干净安装(受限编译宿主 + 真 Node 载入:只用根入口不装内核零错、用子路径不装内核恰点名内核、装了内核同一引用、引擎内嵌那份是另一实例但读数相等)· 逐代矩阵(契约号 / 事件表摘要 / 同版配对物料 / 行为金丝雀三组:链规则 · 钉键判法 · 注册边界)· 读口对 `node:crypto` 独立再算 914 例逐字相等 · 退役账 · 读三端 ref 对 `./mods` 的真绑定(本版零消费为预期)。同批:`run-public-surface-test.mjs` / `run-client-core-portability-test.mjs` / `run-support-floor-projection-test.mjs` / `run-sdk-registry-transit-test.mjs` 的入口名单由两个改三个;`docs/LAYERING.md` 第 3 层 +1 入口、跨仓边表 +1 行(内核,`value` · `type`)。
345
+ - 扩门 `scripts/run-core-value-ports-test.mjs`(**§129 TF-1**):名表十九 → 二十;件数格(部分装 ③d · 五件装了 ⑦e · 退役端口无人读 ⑧d / ⑨d)由写死的 17 / 14 / 19 / 18 改成相对名表长(此前每追加一件要手改一轮);新 ⑫ 段 —— 第 20 位、没装 / 部分装没装 ⇒ `undefined`(不编 `{ ok: true }`)、装了实参与答案同一引用、core 的抛原样上抛、`undefined` 实参也原样交给端口、引擎包根函数三档编译装得进(换成返回形不对的函数 ⇒ 三档都红)、**硬破坏实证**(十九件旧袋按完整型建 ⇒ 编译红点名它)、真引擎对十三形逐形同答(ok 无副本 / ok 带副本 / ok:false 三种都在)、读口签名零 `unknown`(判别器自证)。
346
+ - 扩门 `scripts/run-mcp-wire-caps-test.mjs`(**§129 TF-1**):新 TF 段 —— 端口没装 ⇒ `unavailable` / 条目原样过境(同一引用)/ 零披露行;装了 ⇒ 十一形坏声明 × 两传输 × 单条 / 整表两出口各自这一台不起、合形带引擎判过的副本、空记录 / 空面的键铸与不铸;披露行键集(无 `path` 位)/ 句子点名文件 · 服务器 · 键 · 引擎原句 · 改法且无机读码 / 中文句;端口抛 / 答坏形 / 答 `ok:false` 无原因句;**独立生成池 3000 例**(种子固定)× 引擎同池对拍(拒 ⇔ 引擎拒且原句逐字同、合形副本逐值同、不误伤合形);取值器只读一次(三格);多坏同在的披露序;**现役服务端夹具受理口**:修前形下「越表 family / `null` / 串」被整单 400、「空工具名 / `pathTarget` 跨成员规则」被放行(到引擎门口才被拒),装端口后五形都不再上 wire、合形全部不拒;判别器自证(恒答 ok 的判官 ⇒ 坏声明全部上了 wire);源码层 S3(零手抄词表)。
347
+ - 扩门 `scripts/run-human-turn-encoding-test.mjs`(**§129 UA-4**):金样 `not-included-approval` 同改;新格 UA4(四种目标共用同一句、句里零「deployment / layer / project / this file」、不含修前句);`scripts/run-request-uplift-test.mjs` 的 G-RQ6d 同改。
348
+ - 新门 `scripts/run-cross-boundary-taint-projection-test.mjs`(**§129 XB-1 / XB-2**;负控套一枚):跨边界污染读口 —— A 公面与形(读数键闭集恰 `taint`、值恒 `true`、冻结)· B 在场证据(问类集只有该类 / 非首员 / 在中间 / 只有强制词 / 两者 / 真卡形)· C 缺席与坏形(其余二十五类逐一、其余六个强制词逐一、非对象载体、坏形问类对十一形、坏形强制词九形、原型链键、读就抛的取值器与代理陷阱〔按证据隔离〕、已撤销代理,恒缺席;没人铸的同族键单独在场与通用必问位单独在场恒缺席)· D 活卡帧腿与耐久待决行腿过境(卡与源载体同答;只带没人铸的键的行 / 帧不长任何同族键)· E 已装引擎 7.54.0 的 `classifyAsk` → `stampAskOrigin` 实铸(跨边界问带 / 不带真批准位 ⇒ 在场,普通真批准位问等 ⇒ 缺席,引擎盖章的成员原始读数打印在输出里)· F 出路句(按读口为键、英 / 中各一句、句式律对齐、与既有各句逐字互异)· G 种子化生成池 4000 份对拍独立参照 + 恒等式「结果 ∈ {缺席, 冻结的 { taint: true }}」· R 语法树结构钉(读口文件里 `taint` 恒为字面量 `true`、读口函数体零 `false` 字面量;包源码对线上没有承载的名字零代码读点,注释不计,植入自证)。负控:缺席臂改交一只冻结的 `{ taint: false }`(类型上强转绕过)⇒ C1 红。
349
+ - 扩门 `scripts/run-session-policy-wire-test.mjs`(**§129 SP-1 / PD-1**;CC-904 改托 / CC-916):SP 段改四位 —— 判官自证(参照实现零违例;「缺席也加句」「0 也加句」「坏形数也加句」「假值读不出也算」「读不出与计数并出」「丢常驻句」六枚植入变异口各被抓住,变异口全由门里字面拼成)· 缺席 / 0 / 坏形 × 三计数位 + 读不出位的假值与串(29 种)× 三种语言 ⇒ 与 0.100.0 基线句逐字节同 · 各位独立(单位 × 单复数、三位的七种在场组合,英文逐字,固定序,两位用 and、三位用逗号 + and)· 读不出单列一形(与计数位同在也只出读不出一形;严格 `=== true`)· 常驻句恒出(七种组合 + 读不出 × 两语,恰出一次)· 措辞保守(不再有「之后起跑的会遵循新规则」)· 中文(七种组合两两互异 / 无英文连串 / 点名后台子代 · 工作流 · 本客户端已不再跟踪的后台项)· 只有 `written` 带尾段 · 二十五种坏形 × 三计数位(单独给不加、与好位同在只出好位)· `facts` 本身坏形(非对象 / 每一位的自有访问器不执行 / 原型链键 / 逐位代理陷阱只丢那一位 / 全陷阱 / 已撤销代理 / 原型污染四键实跑并清净自证 / 冻结入参)· 目录十一键两语在册、占位符集合恰等、旧 `.one` / `.many` 两键已退。红先绿后:新门对 0.100.0 的实现在 SP2a 红(判官自证八格先绿),改后 360 → 416 格绿(SP 段 +35、PD 段 +21)。新 PDW 段(CC-916):会话策略写口不预判 —— 新增侧 `toolDeny` 带域名形条目 ⇒ 照送(written、条目原样落、一读一写、零抛;PDW1)· 混批整批照送、次序不变 · 真行内容形、泛型参数规则与整工具名照写且逐字节原样 · 旧记录里早有的条目照留 · 别的桶不判 · `tightenedSessionRules` 纯函数口同律(原样并入、不抛;请求体一侧对拍在 permissions-declaration 门 PD5 / PD5b)· 读者没装 / 抛 / 回 undefined / row 缺 compiled / 原因词表外 / 只交名册才答的词 / 编译器抛 / 编译器拒收八形同样照送 · 服务端 400 `rules.inert_entry` ⇒ `inert_entry` 臂(PDW8)。
350
+ - 扩门 `scripts/run-tool-card-outcome-test.mjs`(**§129 GT-5**;CC-901):新 K11 – K14 —— 判官自证(参照实现在四十九行真值表上零违例;「未送达也答重启」「未写 / 非布尔也算送达」「别的成因词也答重启」三枚植入变异口各被抓住)· 真值表 · 与身份锚薄壳各答各的 · 访问器不执行 / 原型链键 / 代理陷阱 / 已撤销代理 / 原型污染不认 · 端到端(`respawned` ∧ 送达 ⇒ 卡上是重启句;未送达 / 崩溃 / 读失败 ⇒ 中性句)· 源码钉(只认原词 `respawned` 一处与 `=== true`、不碰代际锚、只经自有数据位读口、顶注写明分工)。
351
+ - 扩门 `scripts/run-cloud-mcp-dropped-notice-test.mjs`(**§129 TF-2**;CC-905):M6a 成因词表八 → 九词;新 M12 段 —— 端口没装原样过境 · 六形坏声明六台不起且 `droppedMcpServers` 逐行带引擎原句 · 一句 `warn`(点名服务器与 `toolFaces`、不带成因词与引擎原句、`cloud config` 起头)· 合形副本 / 空记录 / 缺席 / 空面 · 只读一次(两个方向)· 读就抛的取值器 · 多坏同在的序(两只端口同装)· 端口答坏形 ⇒ 原样过境 / `ok:false` 无原因句 ⇒ 仍是 bad · 行形键集。`scripts/run-mcp-wire-caps-test.mjs` 新 TF12 段:同一坏声明两腿同判对拍(十一形坏声明 × 披露词 / 引擎原句逐字同;合形副本两腿逐值同;空记录 / 缺席两腿都不铸键;读就抛两腿同处置;端口答坏形 / 无原因句两腿同处置;端口没装两腿都原样过境)+ 源码钉(云腿只经 `mcpToolFacesVerdict`、不直接调端口、条目上 `toolFaces` 只读一处)。
352
+ - 扩门 `scripts/run-retirement-ledger-test.mjs`(**§129 SP-1**):挂链首的在册行 15 → 16(RL-197 = 会话规则尾段与出句口第三参四位;条件由「引擎修复到货」改挂**支持底线 core ≥ 7.55.0**〔机读:`upstream.floorKind: core` + `floorCrosses: 7.55.0`,声明那一项到了当场红〕,窗 0.102.0;条件原句住在 `src/hitl/sessionPolicyWire.ts` 的注释里),票号 / 裁定号逐行钉同改。
353
+ - 扩门 `scripts/run-permissions-declaration-test.mjs`(**§129 PD-1**;CC-916;421 → 456 格):`PERMISSIONS_KEPT_REASONS` 十四 → 十五词(R0 / MU3 同改,R1b 池判别力钉排除只在装读者的端口袋里才出的新理由);R2 见证组 +1(装读者的端口袋,deny / ask / 命令行 deny 的域名形 ⇒ `content_form_never_matches`,同批真行内容形照投);新 PD 段 —— 池由装着的引擎现算分类(永不命中 / 泛型参数规则 / 编译器拒收的 / 真行内容形 / 其余读成无物的),尺子自证 · deny / ask / 命令行 deny × 永不命中池不上体、kept 点名、其余照投、投口与报告口同字节 · 负控:读者没装(= 0.100.0 的原样投)时同一判官至少报一格 · 整桶全是永不命中 ⇒ 桶不铸、三桶全空 ⇒ `{}` · allow 桶(能力位四形)与无限定符整工具 deny / ask 零变(读者装与不装报告整份逐字节同)、域名形 allow 在新形 allow 桶照投 · 判不出十五形(读者抛 / 回 undefined / 非对象 / row 缺 compiled / kind 表外 / 原因词表外 / 只交名册才答的词 / 别的闸管的 grammar 与 wildcard_all / allow 方向读者抛 · 读成别的 kind · 缺 compiled · inert / 自有访问器 kind)与读者说永不命中(deny 方向假读 + allow 方向真读,对照格三问全中 ⇒ 扣下)而编译器拒收 / 抛两形 ⇒ 照投,与读者没装的 0.100.0 路径整份报告逐字节同 · **会话策略写口不预判**(PD5 / PD5b):`tightenedSessionRules` 新增侧对永不命中 / 拒收 / 真行 / 其余无物 / 整工具名全池逐条原样搬运、零抛(判归服务端 400 `rules.inert_entry`),请求体收紧桶照判官扣 · **PD7 引擎真策略**(`createPermissionRulePolicy`):永不命中池的条目建的策略对真实 `WebFetch` 调用恒答 allow、泛型参数规则与真行内容形投影后与原条目对同一调用同答且规则真在生效;PD7c 独立生成池(近五千串:工具 × 参数 × 值 × 空白 / 大小写 / 嵌套括号异形)凡扣下的、引擎真策略对该工具真实入参词表里每个参数取该值的调用 × deny / ask 无一命中 · 读法单源(源码见证:读法叶是唯一问引擎条目读者的地方,三个消费方零 `readRuleEntry` 标识符、同 import 叶上判官,叶上无括号字面判据)。
354
+ - 扩门 `scripts/run-rule-refusal-sentence-test.mjs`(**§129 PD-1 / PD-3**;CC-916):R1 / R4d / R7e 同改(第七个死规则理由 `content_form_never_matches`:出路「只写工具名整只拦」、ask 桶同句、中文);新 R9 —— 规则条目是引擎不支持的形的读口与一句话,**金样 = 服务端 7.134.0 发布包的真函数铸的拒体字节**(`scripts/fixtures/rule-refusal-bodies/bodies-71340.json` 十格:提交口 422 七格 + 续跑口 409 三格;重铸 / 对拍脚本同目录):真字节 × sdk 映射 × 读口逐位同 · 三种载体同读(普通对象 / 只在 `extra` 袋 / 折叠形的 `blockedBy` 只在 `extra`)· 旧读法(顶层 `errorCode: unsupported.*`)不再认领 · 码不是 `request.unprocessable` 或折叠码的 `blockedBy` 是别的 ⇒ `null` · `detail` / `problems` 坏形与表外 `reason` ⇒ `null`、夹杂时只留表内的 · `field` / `entry` 各读各的 · 坏形不抛、自有访问器不执行、五千条读到 1000 为止、长度 2^31 的稀疏数组不挂死 · 英文金样(单条点名 / 复数 / 去重 / 前 5 条 + `and K more` / 条目缺席 / 折叠形单复数)· 条目不可信串转义封长 · 每个 `unsupported.*` 码单码话与呈现表同一句且两两互异 · 中文 · 金样与服务端夹具现铸字节对拍(夹具缺席只记 `SKIPPED-SECTION`,金样格照跑)。 另有 R9G:折叠身份与码同一次读取(`blockedBy` 读一次〔代理计数〕· 两次给不同值不丢 `folded` · 普通 422 附带同名 `blockedBy` 不标折叠、零读取 · 折叠码 × 坏 `blockedBy` 全 null)。
355
+ - 扩门 `scripts/run-session-policy-deliverable-test.mjs`(**§129 PD-1**;CC-916;577 → 580 格):新 G-SP8 —— 会话规则可送判定的条目读数是读法叶 `denyEntryReading` 的对位(源码见证:值级 import 叶、模块内零 `readRuleEntry` 标识符;串级放行的名字上叶读数 inert ⟺ `withheld` 带 `inertReason` 且原因词同、row ⟺ 不带;读者没装 ⇒ 整批读不懂,与收紧桶一侧「判不出照投」方向相反、同一只读数)。577 格旧读数一格不动。
356
+ - 新语料 `scripts/_catalog-corpus/cc904.mjs` / `cc916.mjs` + 金样 `scripts/catalog-migration-golden/cc904.json` / `cc916.json`(**§129 SP-1 / PD-1 / PD-3**;catalog-routing 门,新增句口无迁前基线、摘要取自实现):`sessionPolicyTightenNotice` 尾段十四形(单复数 × 三位 / 三种两位组合 / 三位全 / 读不出 / 读不出带计数 / 全缺席 / 零与坏形)· `ruleRefusalSentence` 第七理由两形 · `unsupportedRuleRefusalContent`(七个 `unsupported.*` 码 + 带引擎原句 + 经读口读出)的路由三格(中文活性 / 无英文连串 / 无残留占位符);`unsupportedRuleRefusalContent` 登记为出句口(CR11)。公面基线 `public-export-baseline.json` +2 名(1831 → 1833)。
357
+ - 扩门 `scripts/run-tool-result-content-projection-test.mjs`(**§129 TR-1 / TR-2**;CC-907;62 → 104 格):新 D 段 —— D0 公面在场 · D1 两形正样本(六形:image / document / 无 `mimeType` / 汇总块 3 块 / 1 块 / `bytes` 为 0,两车道同值、原位句、不补通用告知)· D2 与 base64 图 / text / 读不出块混排(通用告知恰一条且在末尾)· D3 坏形 39 形(`bytes` 缺席 / 数字串 / 负 / NaN / ±Infinity / 小数 / 超安全整数 / `null` / bigint、`truncated` 缺席 / false / 串 / 1、`mimeType` 数 / `null` / 对象 / 自有取值器 / 自有键值 `undefined`、`type` 表外 / 大小写不符、`blocks` 0 / 负 / 小数 / 串 / NaN / 缺席、取值器、原型链字段 ……)⇒ 仍是读不出的块(D2e:`data` 只在原型链上的块照旧走原媒体块处置;D3d:读时抛的块 ⇒ 读不出、邻块照留、不抛)· D4 闭集读数(形、冻结、`-0` 读 `0`、缺席 `mimeType` 无该位、非块入参 / 代理 / 取值器永不抛、读口与渲染同判池)· D5 出句口(英文逐字节 / 中文逐字节 / 坏读数空串 / 手拼合形读数 / 敌意读数 / 表外语言)· D6 `mimeType` 回声守卫 · D7 文字读法 / 中止串精确等值不放宽 / 错误卡 / 信封 / 截断标记 / 面板收卡报告 / 三个展平读口 · D8 目录六键两语在册且占位符齐、叶里无裸句、读口与出句口各一只、判据只有一份;S6 改口:叶的值级 import 恰为 `./i18n/translate.js` 与 `./ownKey.js`(这两只本来就在内核闭包里,闭包文件数不变)。变异十三枚(读口 / 渲染 / 坏形 / 目录各 ≥ 1;含三枚修前形)全红,含负控「描述符当坏图吞成通用告知」。
358
+ - 新语料 `scripts/_catalog-corpus/cc907.mjs` + 金样 `scripts/catalog-migration-golden/cc907.json`(**§129 TR-2**;catalog-routing 门,新增句口无迁前基线、摘要取自实现):`toolOutputMediaAbsenceSentence` 登记为出句口(CR11),五形读数 × 英 / 中的路由三格(中文活性 / 无英文连串 / 无残留占位符)。公面基线 `public-export-baseline.json` +2(1829 → 1831)。
359
+ - 新门 `scripts/run-mods-kernel-install-matrix-test.mjs`(**§129 MK-5**;CC-425;负控套一枚 + 门内判官 / 探针判别力自证):可选 peer `@sema-agent/mods-kernel` 的**安装矩阵** —— 包管理器对可选 peer 都不保证宿主整树只有一份,本包只承诺 `./mods` 转出它实际解析到的那一份,本门把同一问放到真安装器上问一遍。四种宿主装法(只装本包 · 本包 + 显式同版内核 · 本包 + 显式范围外内核 · 内核由另一依赖带入)× 四个安装器(npm 11.3.0 / pnpm 8.10.2 / yarn classic 1.22.19 / yarn 现代版 4.14.1;版本写死在门里,经一次 `npm install --save-exact` 取得并核 integrity 与自报版本,不走 corepack)= 16 格,每格用本包 `npm pack` 当场铸的 tarball 真装一个新宿主,对安装成功的格再在宿主里起 Node 进程读十个键(安装器拒装的格没有宿主,宿主侧读数一律缺席):安装是否成功及与内核 peer 有关的诊断(闭集标签)· 根入口与 `./mods` 可载与否(缺内核须失败且点名内核)· 宿主根与本包自己的 dist 各解析到的内核版本 · 整树内核份数 · `./mods` 的 26 个值与宿主根内核是否逐名同一引用 · 读口读数对本仓读数;读数逐格对拍逐代期望表(首跑原始输出人审后钉入,第一格不符即红,不跑完)。范围外内核是装着的真内核复制后**只改 `version`** 再 `npm pack`(7.53.99:低于 peer 地板、registry 上不存在),门回读 tarball 核 `dist` 与真内核逐字节同、`package.json` 只有 `version` 一键不同,并核每个宿主树里每一份内核的 `dist` 摘要都等于真内核、宿主里跑的本包 `dist` 就是刚 pack 的这一份。离线三段:物料 / 期望表形状 / 判官逐键翻转 + 探针判别力(手搭宿主:根一份内核 + 本包嵌套一份范围外副本 ⇒ 份数两份、`same: false`;单份 ⇒ 一份、`same: true`;无内核 ⇒ `./mods` 点名失败)。诚实跳段:registry 不可达 ⇒ 真矩阵整段 `SKIPPED-SECTION`(不当绿),`MODS_MATRIX_COLUMNS` 只跑选中的列,`MODS_MATRIX_REQUIRE=1` 把不可达升成 exit 9;安装器装不出 / 版本或完整性对不上 ⇒ exit 9。首次实测读数(内核 7.54.0,全部抄自实跑):范围外内核 —— npm 拒装(`ERESOLVE`)、pnpm 装上并警告 `unmet peer`、yarn classic 静默装上、yarn 现代版警告 `YN0060` 后装上,后三者的 `./mods` 都绑到范围外那份;内核由另一依赖带入 —— npm / yarn classic 提升到宿主根,`./mods` 与宿主根同一引用;pnpm 里本包读得到而宿主根读不到(无法自证同一引用);yarn 现代版(默认 PnP)里整树有一份,但本包与宿主都解析不到,`./mods` 加载失败。负控一枚:把 npm × 缺失 一格期望里「`./mods` 加载失败」改成「加载成功」⇒ 真装一次即红。本门**不判**宿主树是不是只有一份,只记各安装器的实际读数并钉成期望。
360
+ - 扩门 `scripts/run-upstream-type-shadow-test.mjs`(**§129 TS-2**;CC-917):存量债登记 8 行 → 0 行(`debts` 段空、冻结名单 8 → 0;T4 – T6 机制与 S 段合成自证原样保留)。新 V 段 —— 五个退役别名逐名钉「还是派生别名」(型别名 ∧ 非手写 ∧ **同一只型对象** ∧ 两向可赋值 ∧ 结构指纹同,与 T4 同一把尺;尺子自证 = 与 sdk 同形的手写植入接口被读成「接口 / 手写 / 非同一只型对象 / 形恒等」)+ 退役名不回存量债(登记表与冻结名单两侧)。新 W 段 —— 三个常量逐名钉:公面 `===` sdk 包根同名常量(同一引用 ∧ 数组 ∧ 冻结)· 值集逐词逐序 · 包内读点的生成物快照与公面同词同序同冻结 · `src` 下只有根入口导出这个名(扫全部模块的导出表,含 `export *` 传递)+ 构建产物里内核闭包两模块(`runCancelContext` / `engineErrorCodes`)的运行期导出表也没有它;尺子自证 = 「同词同序同冻结的另一只拷贝」被判不是同一引用、植入件里自铸的同名常量被同一把扫描抓到。红先绿后:新格与空登记表在修前树上红(T4 点名五个别名、T5 点名三个常量、W1 点名 `ABORT_CAUSES` 同词不同引用)。
361
+ - 扩门 `scripts/run-upstream-tables-test.mjs` 与生成器 `scripts/gen-upstream-tables.mjs`(**§129 HP-1**):生成物十只 → 十一只 —— 单根闭包组 `url-pattern`(`urlAllowPatternMatches` 放行出口 + 同模块私有闭包十六件,模块零 import、自由名恰是 JS 内建 ∪ `URL`)落独立文件 `src/generated/settingsSchemaUrlPattern.ts`(第三只带 `// @ts-nocheck`),函数批文件再导出 `SETTINGS_URL_ALLOW_PATTERN_MATCHES`(型 = 上游声明的签名);生成器单根路径的样本支持多参(`spread`)、签名不引型名时不写空的 `import type`;新 G26(独立求闭包〔自由名不动点〕== 抄本成员集、逐声明逐字节、工厂零形参、绑定处恰 `…_CLOSURE()`、**独立自造 4000 对池**逐个同答含抛不抛〔放行两向都有覆盖〕、不上根入口、读者恰一只)+ G24-3 钉表多一对 `urlAllowPatternMatches` 两向可赋值 + 新 N26(不自含 / 未登记全局 / 闭包外被改 / 根被重赋值 / 包根那一只不同 / 缺名 / 模块源码缺席 ⇒ 拒生成并点名)。
362
+ - 扩门 `scripts/run-terminal-status-vocabulary-test.mjs`(**§129 FL-2**;CC-919;48 → 81 格):新 E 段 —— 手写期望表(两臂 · `errorCode` 十九种近似串与十种非串不借臂 · 五个别的 `status` 词 + 停驻码按词表走 · 十一个表外 `status` 词与七种坏形 `status` + 停驻码不借臂 · `parked` 十种非布尔真不算 · 原型链 / 访问器(三个位的取值器都零执行)/ 抛出的取值器 / 抛陷阱代理 / 已撤销代理 / 逐位隔离(代理只对点名的位抛,别的位的证据不连坐)/ 数组 / 九种非对象入参 · agent 行同判且不误伤非停驻 `failed`)× 新读口 · 输出落渲染词汇闭集 · 旧口 ≡ 新口(28 个入参含非串)· 独立生成池 3000 例(种子固定)× 独立参照实现逐例同答 · 端到端 `projectWorkflows` 行状态词与视图键集 · 入参不改写 · **尺子自证**:同一套格对十一枚植入变异体各自必红(`failed` + 停驻码仍投 `failed`〔errorCode 臂缺失〕· `parked` 位不认 · 前缀匹配 · 大小写折叠 · 停驻码不看 `status` · 表外词借臂 · `parked` 真值判 · 普通属性读 · `parked` 词不认 · 只有 `status` 位走普通属性读 · 整个判官一个 try)· 源码钉(语法树:旧口函数体只有一条对新口的 return、无 switch / 词字面量;`projectWorkflows` 行 `status` 交整条行;停驻码字面量在 `src/` 代码位置只有 `fleetProjection.ts` 一个读点文件,且该文件里常量的引用恰一处、在判官函数里,植入第二个读者的合成源码判词必红)· 本包的停驻码字面量 ⇄ 开发依赖引擎包根同名常量(包根读不到只记 `SKIPPED-SECTION`)。
363
+ - 扩门 `scripts/run-retirement-ledger-test.mjs`(**§129 FL-2**):挂链首的在册行 16 → 17(RL-198 = 停驻 run 判官的两条自判臂,挂引擎侧纯函数的到货,支持底线子式 core ≥ 7.55.0;条件原句住在 `src/fleet/fleetProjection.ts` 的注释里),票号 / 裁定号逐行钉同改。
364
+ - 扩门 `scripts/run-fleet-view-keys-test.mjs`(**§129 FL-2**):C3″ 的格名与注释改口 —— 视图仍不长 `errorCode` 键,但它已是 `status` 判读的输入之一;六个非停驻码的值下 `status` 仍是引擎词(断言不变)。公面基线 `public-export-baseline.json` +1(1831 → 1832)。
365
+ - 扩门 `scripts/run-plugin-hooks-projection-test.mjs`(**§129 HP-1**;CC-601;323 → 371 格):原 HP0 / HP0b「现状钉」改判为真判据 —— HP0 判官在场(放行出口抄本在、与上游同答;层准入律的抄本本版到货,HP0 随 HP-2 翻格)· HP1 缺席 ≠ 空名单(别的键在 / 无托管文档 / 值 `undefined` ⇒ 零动作、组对象身份不变)· HP2 非空名单 × 匹配 / 不匹配(越界反例不放行、`*` 全放、多条任一命中)· HP3 空数组(http 全不上、command 照上、整段剔空 ⇒ wire 缺席、句说「空」)· HP4 坏形六形(`null` / 串 / 对象 / 含非串 / 稀疏)按空读并点名,HP4b 托管文档读就抛的三形整条腿关 · HP5 变量名单(交集、其余字段原样、没动的条目是原对象;空 / 坏形三形收空、坏形点名、合形不出句)· HP6 两张同在 · HP7 托管 / 非托管(托管名单管托管层自己的 http hook 与用户层的;非托管层的名单 HP-2 翻格后:用户 / flag 层读、项目 / 本地层不读)· HP8 展示出口(整棵计划树零凭据 / 零 ESC / 零 RLO,带正控与「行上无原 URL」)· HP9 治理恒赢(关停 / 只投托管 / 未受信)· HP10 计划形(恒带数组、老形照认、过发出前判官〔CC-734〕、整段剔空 ⇒ `nothing_to_carry`、每轮重算互不相干)· HP11 判定不动、非引擎事件上的条目同样过 · HP12 原因闭集四词(公面常量冻结、四种触发读到的恰是这四词)· HP13 没动 ⇒ 同一个对象(空组 / 空事件 / 纯 command 组夹在名单下与没有名单时逐字节同、组是原对象);**尺子会响的负控**:HP-N1(植入「名单在场却原样上体」的计划喂 HP2 判据 ⇒ 判不成立)。
366
+ - 扩门 `scripts/run-plugin-hooks-projection-test.mjs`(**§129 HP-2**;CC-601 后半;384 → 406 格):HP0 改判(层准入判官抄本在、对三个读数 × 五个源与上游逐格同答)· HP2b 行带 `layer` · HP7 翻格(HP7b 用户层名单读 / HP7c 项目 + 本地层名单仍不读 / HP7d flag 层空名单读)· **HP14 URL 名单全积**(托管 / 用户 / flag 三层各六态 × 仓库层干扰 = 432 格,放不放 / 恰一行 / 行的 `layer` 与 `reason` 与上游 `readHttpHookAllowlistLayer` + `httpHookUrlVerdict` 逐格同判;HP14a 准入层集钉 = 上游层准入判官答 `admitted` 的层)· **HP14b 变量名单全积**(三层各五态 = 125 格,对拍上游 `httpHookEnvVarsAllowed`,坏形点名第一个坏形的准入层)· HP14c 取交显式例(托管放行 {allowed, other}、用户放行 {allowed, third})· HP15 只投托管时用户层的名单照管托管 hook · HP16 读数次数(五个源各读恰一次、只投托管且无 http 条目 ⇒ 不为名单多读)· HP17 用户 / flag 层文档读就抛 ⇒ 不外抛、请求体上每一只 http 条目都不上(行 `layer_unreadable`)、抛过的源不重试;HP17c 没有 http 条目 ⇒ 不为名单读;HP17d 第二次读会换答案的端口 ⇒ 只读第一次;HP17e 名单元素是访问器 / 空洞 ⇒ 坏形 · HP20 层准入判官抛 ⇒ 整条腿关(植入副本)且托管 `disableAllHooks` 的成因优先 · HP12 原因闭集四 → 五词 · HP14b 自身变量序改不排序含重复 · HP18 准入不依赖工作区读数(三读数逐源同答)· HP19 四个原因词 × 三个准入层的句子点名层;**尺子会响的负控**:HP-N2(植入「用户层名单在场却原样上体」的计划喂 HP14 判据 ⇒ 判不成立)。
367
+ - 扩门 `scripts/run-hooks-managed-policy-reading-test.mjs`(**§129 HP-2**;45 → 48 格):新 L 段 —— 三个读得出的答案(缺席 / absent / in-effect)对带名单的文档逐字节同 · `unreadable` ⇒ 整条腿关在读名单之前且不为名单读用户 / flag 层 · `in-effect` 时托管层名单读治理门那一拍读过的同一份文档(`policySettings` 恰读一次)、用户 / flag 层各恰读一次。
368
+ - 扩门 `scripts/run-upstream-tables-test.mjs` 与生成器 `scripts/gen-upstream-tables.mjs`(**§129 HP-2**;995 → 1084 格):生成物十一 → 十五只 —— 多根闭包组四只(回显叶子 `control-and-bidi` → `caller-text-echo`〔后者是上游包内私有叶子、不在包根,MCP 判官的第三个注入名绑它〕;层准入链 `safety-merge-spec`〔`isAtLeast → trustRank` 唯一全局 `MIN_TRUST_WORDS` 绑表批 + `memberAdmission` + 契约表〕→ `settings-sources` 的 `layerAdmission`〔三个跨模块依赖绑前一组出口〕)落独立文件(第四至第七只带 `// @ts-nocheck`),表批 +`MIN_TRUST_WORDS`。生成器泛化:多根组支持表批注入名(`inject`)、绑前一组出口的 importInject 链(绑定件必须登记在前,暂时性死区)、包根没有原件的私有叶子(`private`)、登记型出口(上游声明引 zod 派生型 / 泛型,型镜像接不住的根)、对象 / 元组值出口(与包根值按 JSON 逐字相等)、多参样本池(`spreadRoots`)。新 G27(独立求闭包自由名不动点 == 抄本成员集、逐声明逐字节、链式绑定标识符实参且绑定件住在前面、独立全积池逐个同答含 RangeError 整句、私有叶子用包根公开读口 `buildLayerPartsUnreadNotice` 的回显位当独立对照、读者恰一只、读口零手写层表〔AST 值位字面量〕、`httpHookAllowlists` 类目层准入答案表钉)· 新 N27(14.2.0 形〔信任阶梯词表引 zod 枚举〕拒抄并点名 `z` · 依赖没登记 / 改名 / 换来源 · 绑定件登记在后面 / 拼错 / 私有件无前序出口 / 去掉 private 标记 · 包根值不等 / 缺名 · 上游词表加员表批随之变);G25 / N25 的 MCP 判官格随回显叶子改靶(三个注入名、空 vm 见证也在上下文内造回显叶子);U2 权限模式六词格许契约表抄本里 `permissionMode` 行 `order` 键那一处;G23-8 改判为「另三只判官无声明」。
369
+ - 登记物同批(**§129 HP-2**):`scripts/registry.json` 棘轮 `portability.index` 350 → 354(四只新叶,同批一条 ledger)· `docs/refactor/p1-scan/singleton-manifest.json` +2 条(`SETTINGS_MIN_TRUST_WORDS` · `src/httpHookPolicy.ts` 的 `UNREADABLE` 冻结单值,dupRisk low)· 消息目录四句英 / 中同改加 `{layer}` 位、新增 `config.hooks.httpPolicy.layerUnreadable`(英 / 中各 +1 键,859 → 860)· 已知限制 KL-804 删行。
370
+ - 扩门 `scripts/run-settings-hooks-salvage-test.mjs`(**§129 HK-3**;CC-920):新 N-N1(尺子会响:植入「托管层剔件仍出照投句」喂 N13 判据 ⇒ 判不成立)· N13 – N18(托管剔件句点名层与坏件并说请求不发、两层 × 两结局四格逐格〔余下照装只在非托管 × 剔件、请求不发只在两个托管格〕、非托管剔件句与托管整份拒句逐字不变、零值回显 / 凭据形事件名打码、五件剔点并成 `and 2 more`)· 新 H7 – H9(计划行与清单:托管剔件一行一句不含「余下照装」、托管剔件 × `disableAllHooks` 无托管行无句、非托管剔件仍是「余下照装」)。`scripts/run-host-turn-settings-test.mjs` 新 AS21(句与结局一致:四格逐格对照 `hooksNotRunNotice` 里的句子与装配产物的判决 —— 说请求不发 ⇔ 判 `refuse`,说余下照装 ⇒ 判 `send` 且 `carry_partial`)。
371
+ - 登记物同批:`scripts/registry.json` 棘轮 `portability.index` 348 → 350(两只新叶:`src/httpHookPolicy.ts` · `src/generated/settingsSchemaUrlPattern.ts`,同批一条 ledger)· `docs/refactor/p1-scan/singleton-manifest.json` +4 条(`src/httpHookPolicy.ts` 的冻结常量 / 只读查表,dupRisk low)· `scripts/public-export-baseline.json` +1(1831 → 1832)· 消息目录英 / 中各 +5 键(`config.hooks.salvage.managedPartial` · `config.hooks.httpPolicy.urlNotListed` / `.urlListEmpty` / `.urlListMalformed` / `.envListMalformed`;门:message-catalog 848 键两语逐键同占位符 / 术语 / 展示出口不变)。
372
+ - 扩门 `scripts/run-settings-credential-key-paths-test.mjs`(**§129 KP-3**;CC-927):新 K12 —— 串值差分(字面格 + 与设置契约 `containsSecretToken` 逐格同答的 216 形语料:原串 / 前后缀 / `x=` / 百分号 1 – 4 层 / 加号形 / 编码空格 / JSON 内嵌 / `+tail`;契约包不在装时只跑字面格并打 `SKIPPED-SECTION`)· 四份设置文档 K12h(终端金样档:路径集与 `numericByNameOnly` 位逐项冻结)· 值形格 K12g(终端实测那一族:表单编码 8 格 / 嵌套查询串 `token=` 5 格 / 普通 URL 查询串与 userinfo 3 格 × 反例 6 格,字面期望 + 对终端壳判据〔契约判官 ∪ URL userinfo ∪ URL 查询串,三行逐字搬作基准〕逐格同答;嵌套查询串只在 URL 查询串那一支里命中,契约判官单只为假,壳判据同有 —— 读数打在尾行前)· 名判(`APIkey` / `apikey` / `XAPIKEY` 命中、`apiKeyHelper` / `monkey` 不命中;14824 名格上终端旧判据判中的一个不漏、修前判中的一个不丢,旧判据逐字搬作对拍基准)· env 名判只记读数(终端判中而包不中 0 名;奇怪大小写整词 4 名作余项读数)· 超长含加号串 / 超长百分号串 / 超长键名线性 · 门内五枚负控变体(拿掉加号读法 / 边界读法 / URL 查询串支 / 压扁词尾 / 旧切法读 ⇒ 对应格红;变体 = 当前源码一处文本替换、转译后落进程私有临时目录(相对 import 指回 `dist/`,不在发行目录留残件),另有「未改动的源码经同一管线全绿」的管线自证)。红先:修前包上新门 K12a 红 129 格(`Bearer+…` / `Basic+…` / `%2B` / 边界字节 × 编码空格各族),名格终端判中而包不中 1 名;绿后 86 checks。
373
+ - 扩门 `scripts/run-host-turn-settings-intake-test.mjs`(**§129 HS-1 / HT-1**;CC-928 / CC-926):新 HI9 —— 派发前重判「只能更紧」:时序(装配时没关 / 此刻关了 ⇒ 补并记 `tightened`;已带 ⇒ 同一只;此刻没要 ⇒ 不动〔反向不放宽〕;永不改入参、结局冻结)× 车道(utility 的 `memory` 有座补、`fileHistory` 无座不补不拒;print 两键都补)× 判不出(四形 × interactive / print ⇒ 拒,句同 `fileHistoryUnjudgedRefusal`;utility ⇒ 照发;请求已带 `disabled` 而此刻判不出 ⇒ 仍拒)× 还原键(三键 ⇒ 拒 `HS-FILEHISTORY-RESTORE`;不算还原的六形与只回会话不拒;已同体带两者 ⇒ 不动;只需补 memory ⇒ 照补)× 与 hooks 取交同发 · HI9b / HI9c 拒句中英目录句、零回显 · 新 HI9 A1 – A4(访问器 / 抛错代理 ⇒ 判不清不发;此刻不要的键零读)· 门内六枚负控变体(此刻关了仍照发 / 还原键照补 / 假值也拒 / 无座车道也补 / 访问器二读 / 放宽 ⇒ 对应格红 + 管线自证)。新 HI10 —— 三个型在根入口且 JSON 值闭集的值编译绿(出包 `.d.ts`)、函数 / `unknown` / 符号 / 数组里的函数编译红 · 入口对非对象段落 `value_malformed`(缺席 / `null` ⇒ `empty`,两个源各自)· 矩阵文案零引用已退役片段口名。红先:修前包上 HI9 红 29 格、HI10a 红(两个型不在根入口);绿后 158 格。
374
+ - 登记物同批:`docs/refactor/p1-scan/singleton-manifest.json` +2 条(`src/settingsCredentialKeyPaths.ts` 的 `FLATTENED_CREDENTIAL_TAILS` / `SCHEME_THEN_ENCODED_SPACE`,dupRisk low);消息目录 +1 键(`session.hostSettings.fileHistoryRestoreConflict`,英 / 中,865 键各);公面基线 `public-export-baseline.json` 不变(本版三个新名都是型,基线只登运行期导出);`scripts/gates-manifest.json` 两条 `guards` 格补写。
375
+ - 新门 `scripts/run-workflow-resume-reading-test.mjs`(**§129 UC-7**;CC-532;35 格):续跑结算一行 —— 全回放 / 真 0 回放 + 停止位 / 日志零条三形 · 缺席零行(逐形与基线逐字节同)· 坏形按该位缺席 · 不可信原因过展示出口 · en / zh · 端到端经 TaskOutput 轮询臂。
376
+ - 新门 `scripts/run-park-card-word-arm-test.mjs`(**§129 UC-5**;CC-424;131 格,含公面入参型编译钉及负控):待决行臂与停驻门臂对「是不是问答」同读卡词 —— 卡词八词 × 工具名 × 门种 · 缺席 / 表外 / 坏形 / 原型链 / 访问器按缺席逐格同修前 · 门种闸在先 · 行臂 ⇔ 门臂逐格同答 · 读口单源(源码钉)。
377
+ - 新门 `scripts/run-provider-rejection-condition-test.mjs`(**§129 UC-6**;CC-473;56 格):终局重发句读引擎判词 —— 额度判词 × 状态档 · 状态先于判词(401 / 403 / 404 / 5xx)· 别的判词一个字节不动(状态 × 判词 130 格)· 终局行端到端 · 接力读口(伪造整键丢)· 与重试句口同一额度半句 · 出路词同源 · 目录键。
378
+ - 新门 `scripts/run-default-model-transit-test.mjs`(**§129 UC-3**;CC-329;23 格):缺省模型解析口对已装设置契约包原件**差分**(配置 × `has` × 兜底全积加伪随机补样,含抛不抛)· 规则金样九格 · 来源词闭集 · 阶梯副本 · 型编译钉(设置契约包的配置读数接得进公面入参、原件结果型接得进公面结果型,含负控)· 出包零依赖。
379
+ - 扩门 `scripts/gen-upstream-tables.mjs` + `scripts/run-upstream-tables-test.mjs`(**§129 UC-3**):生成物 15 → 17 只(+活动档位组展开 / 缺省模型解析两只多根闭包组抄本)。
380
+ - 扩门 allow-rule-shadow-projection(HN 七格:`hook` 成员带注册名)· engine-notice-catalog(G8f:mods 码常量对表)· tool-roster-projection(C8:面带别名)· user-facing-sentence-readers(分类闭集五词 → 六词)· client-core-pure / memory-spec-wire(退役两码的断言去两员)。
381
+ - 新语料 `scripts/_catalog-corpus/cc532.mjs` + 金样 `scripts/catalog-migration-golden/cc532.json`(**§129 UC-7**;catalog-routing 门,新增 `lang` 形参无迁前基线、摘要取自实现):`projectWorkflowTaskOutput` 登记为出句口(语料 18 → 19 票;中文活性 / 无英文连串 / 无残留占位符三格照判)。
382
+ - 新语料 `scripts/_catalog-corpus/cc411.mjs` / `cc554.mjs` / `cc500.mjs` + 金样 `scripts/catalog-migration-golden/cc411.json` / `cc554.json` / `cc500.json`(catalog-routing 门;新增句口无迁前基线、摘要取自实现);`cc751.json` 的 13 条改口登记 `now` 随交互车道句子无路径而更新(XF-14)。
383
+ - 新语料 `scripts/_catalog-corpus/cc793.mjs` + 金样 `scripts/catalog-migration-golden/cc793.json`(**§129 UB-8**;catalog-routing 门,新增句口无迁前基线、摘要取自实现):`ruleNearMissSentence` 登记为出句口(CR11),单条 / 两条 / 七条带余量 / 无近似名四格。
384
+ - 登记物(同批):棘轮 `portability.index` 354 → 357(**§129 UC-3**;+两只构建期抄本 +公面薄包,`scripts/registry.json` 台账一行);单例清单 `APPROVAL_CARD_WORD_SET` 改指新住处(叶模块);类型棘轮三格(内联匿名形 / unknown 出境 / 铸链)零松量(新型一律具名、窄入参)。
385
+ - 公面基线 `public-export-baseline.json` +1 −2(净 −1:+`resolveCatalogDefaultModel` −`CONFIG_STRATEGY_FIND_LIMIT_INVALID` · `CONFIG_STRATEGY_MAX_SIZE_INVALID`);退役登记 +1 行在册(RL-251)+1 行已退役(RL-250)。
386
+ - 两张取值表撤回的门格随动(**§129 U11-1**):`run-host-settings-source-test.mjs` S1 去 `WORKSPACE_TRUST_STATES` 合取项、S2(根入口那张表就是上游那张且冻结)退;`run-default-model-transit-test.mjs` D1b / D5(根入口阶梯值同 / 冻结 / 改写不动解析)退、D1d 去阶梯名、D4 来源词闭集改读设置契约包原件的阶梯;包内那张与上游同值仍由 `run-upstream-tables-test.mjs` G1 逐字节重算担;公面基线 1979 → 1977、单例清单删 `DEFAULT_ROLE_TIER_LADDER` 一条、生成表表头注去值名并重生成。
387
+ - 新门 `scripts/run-ask-class-reason-test.mjs`(**§129 UB-5 / UB-3**;CC-609 / CC-541;61 格;负控套一枚):逐问类原因句表与「不再询问」缺席词表 —— A 生成物逐类逐句 == 引擎(键序 = `ASK_CLASSES` 序、冻结、全覆盖、单行)· 缺席词表 == 引擎 == sdk 转录且旧词处处不在 · 字面元组型 · N 生成器负控(缺类 / 多类 / 空白 / 非串 / 含换行与 ESC / `__proto__` 与整数形键 / 记录缺席 / 重复词 ⇒ 拒生成并点名;写出序随 `ASK_CLASSES`;缺名一次点齐、不回落手写;上游改一句生成物随之变)· R 读口 26 类逐类同引擎、`requires_user_interaction` 专句异于出身词通用句、近邻 / 原型键 / 非串 ⇒ `undefined` · C 卡级读口(同句只出一次、不认得的类不出行、问类对缺席 / 坏形 / 取值器抛 ⇒ 空数组、冻结新铸不改入参、不进 `approvalCardReasons` 行集)· L 句口与键集钉(源码见证 + 两向钉 + 旧钉不并存 + 陈旧三词并列清零)· U 单源(引擎原因句在 src 只在生成物、生成物只有一个读点、尺子植入会响)。基线 134aa80 上 29 格红 / 10 格绿(正控),本树 57 格绿。
388
+ - 新门 `scripts/run-rule-readings-test.mjs`(**§129 UB-1 / UB-8**;CC-484 / CC-793;63 格;负控套一枚):`ruleReadingsOf` 与 `ruleNearMissSentence` —— G 去向与报告口同一次遍历(41 份入参 × 三种能力位)· E 条目读数逐条同引擎条目读者(deny / ask / allow 三桶 × 有 / 无名册;读者缺席整份 `unread` 且去向不变;读者坏读数十五形 ⇒ 每行 `unread` + 整份 `unavailable`,混合成功 / 失败 ⇒ 行各自读、模式仍看名册)· C 编译读数(没给基址无键;给了 == 引擎编译器按这些基址的答案;相对基址 ⇒ `unsupported.path_base`;非串基址当没给;编译器坏读数 ⇒ `unknown`)· N 近似名一句(逐字单 / 多 / 余量、只认已发出的行、缺席 ⇒ 不出句、转义封长、中文、与引擎逐拼法差分、发送不受影响)· F 支持底线那一代引擎(夹具里精确捆底线 core 的那份服务端;缺席 ⇒ 必跑档红、普通档 `SKIPPED-SECTION`):读数行与编译读数逐条同该引擎自己的答案、近似名一句同样成立 · U 单源(模块里没有大小写 / 归一手写比对、读点只三只、装配口只有一个 `assemble`)。基线 134aa80 上整门红(公面缺席),本树 63 格绿。
389
+ - 生成器 `scripts/gen-upstream-tables.mjs` 第十九批(**§129 UB-5 / UB-3**):`SHADOW_REASON` ⇒ `CORE_ASK_CLASS_REASONS`(冻结记录)、`RULE_OFFERS_ABSENCES` ⇒ `CORE_RULE_OFFERS_ABSENCES`(`as const` 元组),缺名并入既有「一次点齐」检查;`src/generated/engineFactTables.ts` 重生成(`--check` 绿)。
390
+ - 改门 `scripts/run-sentence-tables-projection-test.mjs`(**§129 UB-3**;格数不变 160):O6 钉的缺席句表键型随生成物改名 —— `satisfies Record<CoreRuleOffersAbsence, …>`(键型 = 引擎生成元组的元素型),键集仍逐词等于 sdk 四词;`scripts/run-upstream-tables-test.mjs` 的「上游加类」合成格同步带上逐类原因句(第十九批要求类集与句表键集同词)。
391
+ - 登记物(**§129 UB-1 / UB-5 / UB-8**):公面基线 `public-export-baseline.json` +4(`askClassReasonOf` · `askClassReasonsOf` · `ruleNearMissSentence` · `ruleReadingsOf`;公面计数按合并后基线重算);singleton 清单 +2(`CORE_RULE_OFFERS_ABSENCES` · `CORE_ASK_CLASS_REASONS`,均 low);`scripts/registry.json` 的 `portability.index` 354 → 355(+1:`src/ruleReadings.ts`;逐问类原因句读口并进既有的 `hitl/askClassPair.ts`,不另起文件)与同键 ledger 一条;gates-manifest +2 条(332)并重生成 README「Guards」与负控记录三表。
392
+ - 扩门 `scripts/run-support-floor-projection-test.mjs`(**§129 SF-1**;CC-934;负控套第二枚;134 → 163 格,夹具在场时 136 → 165):新 CR 段(CR 段放在 CT 段之前,行为格先于 AST 钉)—— CR0 公面(根入口运行期导出两参 · d.ts 签名 · 与模块同一引用)· CR1 三态(金样 + 手写 BigInt 独立判官逐对对拍 + 反身 / 反对称 / 传递,按数不按串、2^53 − 1 上的段照常比)· CR2 坏形(预发布后缀 / 构建元数据 CR2a 点名;56 形,任一侧读不出 ⇒ `undefined`,同一坏串两侧也是 `undefined`)· CR3 非串(34 形含原型链串对象 / 继承转换钩的数组与子类 / 带转换钩的对象 / 敌意代理 / 已撤销代理,不抛、转换钩零调用)· CR4 `undefined` 不是相等 · CR5 与三口同答(门槛取高、三态翻译、unknown ⇔ undefined)· CR6 判别力(八种假比较口各被判出);CT4 段加 CT4g – CT4j(第四口函数体形 + 恰四条语句的语法形钉〔局部绑定顶不掉两只原语〕+ 直调两只原语的函数恰两只 + 三口与第四口互不转手,CT4c 由「读 / 比函数恰一只」改为「判官恰一只」);VP4 段加 VP4b – VP4c(全 `src` 里两只原语各恰两只直调者;`compareReleaseVersions` 只声明一次且根入口不改名再导出)。
393
+ - 扩门 `scripts/run-gate-negative-controls-test.mjs`(**§129 SF-1**):CASES +1 枚(`support-floor-compare-port`:第四口读版本串入口改成先剥预发布后缀 ⇒ 行为格 CR2a 红点名);公面基线 `public-export-baseline.json` +1(`compareReleaseVersions`;公面计数按合并后基线重算);`scripts/registry.json` 棘轮 `typeshape.unknownExport` 561 → 563(+2:新口两处 `unknown` 入参,与既有三口版本参同形)与同键 ledger 一条。
394
+ - 新门 `scripts/run-transport-cause-chain-test.mjs`(**§129 XC-6**;CC-417;32 格):成因链单一走读口 —— 瞬断码表冻结且恰修前十二词 · 公面零新增 · 走读口两档读法 · 决断桥超时判型与修前 0.100.0 原实现逐例同判、重发判型与修前只在三类上分歧且按类计数(门内嵌逐字抄本作预言机,四万五千余例,含同层多证据〔`TimeoutError` + 状态码〕/ 自环 / 函数型 `cause` / 取值器抛)· 分诊判型相对修前的分歧只落「更深一层已答复」「码在链上」「顶层是域外的数」三类 · 三条路同判不变量 + 手核金样 · 敌意形有界不抛 · 分诊最外层 `status` 只读一次 · 语法树钉单一走读口与旧助手 / 旧码表退役 · 端到端 `HitlBridge` 重发次数。
395
+ - 新门 `scripts/run-usage-limit-auto-resume-test.mjs`(**§129 XC-5**;CC-416;30 格):自动续航状态机 —— 终端 156 条状态机向量 + 34 条边沿向量原样进门(冻结在 `scripts/_usage-limit-vectors.mjs`)· 文案两语 · 定种随机游走 84 000 步对「坏事件序列」闭合(含畸形事件、坏时钟、表外臂;终局相位清空 prompt、唯一发车口)· 事件位一次读 · 时钟可用域 · 结果整体冻结 · 语法树钉纯度(零读钟 / 定时器 / IO)与单一读口。
396
+ - 新门 `scripts/run-termination-intent-test.mjs`(**§129 XC-4**;CC-415;45 格):终止意图台账与有界等终态 —— 虚拟时钟向量(TTL 严格边界、强词不被弱词覆盖、行数上限、快照冻结)· 三写者全部交错 × 每发三种结局的 2 430 格对拍(被拒的写不论到达先后都不留证据)· 外来体快照与时钟可用域 · 有界轮询(真计时器、链接信号、读口永不拖过预算)· 自愈臂端到端(真 `attemptActiveRunSelfHeal`:判定入口非严格真 / 抛 / 缺席 / 取值器抛 ⇒ 行为逐字同旧)· 语法树钉纯度。
397
+ - 新门 `scripts/run-engine-generation-test.mjs`(**§129 XC-1 / XC-3**;CC-330 / CC-362;31 格):换代收口判定与代际读口 —— 金样 · 窗边界(严格大于 5 s)· 窗余量读口与卡窗读器同源 · 停驻事实缺席按留卡 · 3 000 例预言机对拍(入参深冻结仍成立)· 代际读数真值表(含伪「已知」读数)· 收尾决策表全穷举 · 等下一只引擎装上(抛钟 / 取消 / 预算 / 时钟静止或倒流时拍数封顶 / 谓词里同步取消)。
398
+ - 新门 `scripts/run-engine-health-facts-test.mjs`(**§129 XF-9**;161 格):四件逐位独立 · 缺席 / 坏形 · 开集 kinds · 冻结与新铸 · 对契约包 `readEngineSignal` 的差分(两处差别只多认不少认)· 型对 sdk 两向。
399
+ - 新门 `scripts/run-reattach-window-test.mjs`(**§129 XC-7**;CC-808 / CC-362;26 格):窗口式重连机纯判定 —— 窗与退避边界 · 「引擎不认识这个 run」三条合取确认 · 与终端循环转写逐拍对拍(定种随机 1 500 条脚本 × 随机旋钮)· 坏输入与时钟可用域有界 · 毒帧两振(取值器抛 ⇒ 账原样不动)· 帧体解析失败错误的认法。
400
+ - 新门 `scripts/run-tool-history-accepted-test.mjs`(**§129 XC-2**;CC-357;24 格):「错配之后历史已被接受」位 —— 键与读口 · 账本语义(只报一次、中间夹 429 / 失败 / 被挡位不丢、回放与重读不报、老流晚到不报、无从归属的终局不开口)· 独立预言机对拍(定种随机序列 400 条 × 12 步)· 真管线 `runStream` 端到端 · 超集登记与单一铸点。
401
+ - 扩门 `scripts/run-client-core-pure-test.mjs`(TIMER③):名册登记两处有界等待的计时器(`terminationIntent.ts` / `engineGenerationPort.ts` 各 1,总基线 +2);扩门 `scripts/run-transport-failure-scene-test.mjs`(TS5a):走读口调用者名单随成因链并一同改。
402
+ - 登记物同批:`scripts/public-export-baseline.json` +49 名(1839 → 1888)· `scripts/registry.json` `portability.index` 354 → 360(+6 新叶,账同批)· `docs/refactor/p1-scan/singleton-manifest.json` +10 / −2(新模块级常量与两处改名)· `scripts/retirement-ledger.json` RL-210 – RL-213 · `docs/type-superset.json` +1(`_sema_tool_history_accepted`)· 句口语料 `scripts/_catalog-corpus/cc416.mjs`(七个新出句口,金样 `scripts/catalog-migration-golden/cc416.json`)。
403
+ - 新门 `scripts/run-row-kind-projection-test.mjs`(**§129 XE-1**;CC-286 (a);57 格):RK0 公面与闭集冻结带属主 · RK1 铸点逐臂(占锁 / 治理两形 / 模型输出 / 其余 / provider 拒绝 / `failed` 事件帧 / 结局不知道 ⇒ 各自行种;行种位恒在 API 错误码位之后、重放位之前)· RK2 CC `error` 状态分档逐格(含 529 ⇒ `server_error`;表外状态 / 无状态 ⇒ 键缺席;别的四种行种永不带 `error` / API 错误码位;行 `error` 与提交失败分类 `ccError` 同状态同答)· RK3 `adapt()` 三键同搬(无行类旗不接力 / 表外词整键丢 / 取值器不执行 / 旗只在原型链上不接力)· RK4 读口三只(闭集窄读 / 精确字节 / `hostKinds` / 只读自有数据位 / 永不抛 / 旧行推断八种行首 + CC 哨兵行不给位 + `requireFlag` 两档)· RK5 前缀表单一真源(铸点正文去位后经推断读回同一行种;三只旧谓词与推断规则在语料上同答)· RK6 提交失败分类(状态表 / 404 带码 / 表外 / 传输与内部 / 取值器不执行 / 永不抛 / 每次新对象)· RK7 登记物与单铸点(`_sema_row_kind` 在 `runStream` 剥注释后恰一处铸造;前缀常量真源在零 import 的叶子)。
404
+ - 新门 `scripts/run-queued-delivery-test.mjs`(**§129 XE-2**;CC-297 余项;60 格):QD1 归批真值表(十一格含读不动 / 非对象)· QD2 吸收计划(载荷与 steer 编码答案逐字节同 / 屏障 / 暂缓跳过 / 队头 `!` 行两档政策 / 在飞与试过 / 非人写正文 / `@` 与图与上传件 / steer 判据不过)· QD3 **三个读点同一份计划**(1500 条随机队列 × 两档政策对独立参照模型逐格同答,含判别力自证)· QD4 能力位三态 · QD5 关键词正文 · QD6 纯与不别名 · QD8 读不懂 ≠ 缺席(归批十二位 + 吸收九位:取值器抛 / 表外词 / 坏形 / 撤销式代理 ⇒ 不合批 / 留队并建屏障)。
405
+ - 扩门 `scripts/run-human-turn-encoding-test.mjs`(**§129 XE-3**;CC-409;500 → 568 格):HT2b / HT2b′ 改判(看图位单源:粘贴图与 `@` 图片同一条读法,notices 先粘贴图〔下标 ref〕再 `@` 图〔uuid ref〕);新 HT12(看图位单源八格:为否 ⇒ 粘贴图 / url 形粘贴图不入座、只有图 ⇒ `empty`、被扣的图不占座、说不清 ⇒ 照发并告知、让座的不告知、steer 载体不受影响)· HT13(用户面句:十种拒交各一句互异且零内部词、`steer_hold` 留队句、坏入参 / 表外原因 ⇒ `undefined`、八种降级原因 × 单复数、聚合与换行序、点名模型、`-p` 看图位两句中英)· HT14(`imageVisionReadingOf` 与 `imageVisionOf` 逐格同答 + 被判行名 + 取值器不执行;`otherBodyBytesOf` 与编码器总量逐字节对得上、量不出 ⇒ `undefined`;自有 `__proto__` 键照量;撤销式代理 ⇒ `undefined`、不抛)。
406
+ - 扩门 `scripts/run-prompt-delivery-projection-test.mjs`(**§129 XE-4**;CC-471 / CC-297 ⑦;278 → 340 格):新 A 段 —— A1 三态逐格(只有 legacy `a` / 在飞 / 确定拒收 / 重发后送达 / 两次尝试一发在飞一发被拒 / legacy `a` 压住确定拒收 / 409 帧不结算 / partial 份额 / legacy `d`)· A2 `notDelivered` 入参闭合 · **A3 次序无关 + 进程内 = 读回**(1500 条随机记录序列 × 原序 / 乱序 / 落盘读回对独立参照逐格同答;600 串写口操作与旁车读回同答;判别力自证;**红先抓到一个真缺陷**:legacy `a` 的按 uuid 去重被同 uuid 先到的尝试级行挡住 ⇒ 读回次序不同三态不同,已修;A3d 老 `d` + 明确拒收仍 `unknown`、A3e 结算先到开始后到也记开始行)· A4 结算行写失败按未结算读 · A5 读回失败分类 · A6 分组记批 · A7 消息行三态口与老读口读数不变 · A8 弃用与 JSON 往返。
407
+ - 新门 `scripts/run-submission-identity-test.mjs`(**§129 XE-5 / XE-6**;CC-476 / CC-531 ① ②):SI0 公面与闭集冻结 · SI1 出身读口五词逐格对独立参照(出身 / 来源词 / 自愈出身三列、缺席格、`authoredByUser` 同源、三形取值表、未知词 / 坏形 / 原型链名 / 原型污染 ⇒ `undefined`)· SI2 `requestLaneOf` 全 2×3×2 格 · SI3 `submissionIdentityOf` · SI4 装配口(用户出身的身份形与字符串车道形请求体 / 回执逐字节同;壳出身 ∧ 全工具与交互车道逐键同、只少来源受限的四把并各有一行 `off_origin`;注入件同;字符串形上来源轴不起作用)· SI5 坏身份响亮拒 · SI6 座位读数按身份问 · SI7 `off_origin` 三处句子逐字互异 · SI8 车道表来源轴自洽断言(八种负控)· SI9 钩子计划身份优先 / 冲突以身份为准 / 坏身份当缺席 · SI10 时序 × 并发 × 失败分类三维反证;变异九枚各红、复原 `cmp` 同。
408
+ - 扩门 `scripts/run-task-request-omission-receipt-test.mjs`(**§129 XE-5**;584 格):成因词表四 → 五、三处句表各补一句(五句逐字互异)、装配口收提交身份的格(D1 / B3i / B4i / B6i)、0.88.0 四句金样仍逐字节同(G-OP1 拆四句 + G-OP1c)。`scripts/run-disable-skills-wire-test.mjs`(74 格):G-DS7 车道表哈希投影掉新增两键。
409
+ - 扩门 `scripts/run-tool-history-mismatch-projection-test.mjs` RB(与 0.90.0 发布产物对拍;**§129 XE-1**):第五类有意差分 = 合成终局行只多行种位 `_sema_row_kind`(闭集六词),`API Error:` 臂且帧上带服务商状态码时再多 CC 同名键 `error`(状态分档词);剥掉这两键之后其余仍须与基线逐字节同,`error` 只许出现在行种为 `api_error` 的行上(带非闭集行种词或无行种位却带 `error` 的行记违例),行种差分计数 > 0 防空转。
410
+ - 新门 `scripts/run-task-notification-parity-test.mjs`(**§129 XE-6 / XE-1**;CC-531 ③ + CC-286 (b)(c);77 格):TN0 公面 · TN1 对引擎渲染器逐字节(引擎包根真函数;各可选位缺席 / 在场全组合 · 转义 · 外部来源帧开标签 · `result` / `recent-steps` 块)· TN2 两张镜像表与引擎原表逐员同 · TN3 `<task-type>` 与标签次序 · TN4 引擎不渲的四个事实不进正文且在结构化事实里 · TN5 结构化事实随队列项 / 转录行 / chrome 臂〔含四个显示事实一个不丢〕、按结构化 taskId 删(坏形不删;旧件回落)· TN6 `kind` 与结构化事实两参 · TN7 `_sema_error_code_in_text` 单规则;变异十七枚各红、复原 `cmp` 同。扩门 `scripts/run-client-core-pure-test.mjs`(外部来源开标签、G-BG1a / 1b、G-BG6h 改判到引擎形;G-BG5a 与 0.93.1 发布产物对拍的有意差分登记加一条〔`bgshell_register.registration.toolUseId`,additive;剥这一键后整条流仍须与基线逐位同〕,新 G-BG5c 自证剥键 ≥ 3 处防空转)· `scripts/run-task-notification-xml-read-test.mjs`(NX3 对引擎清洗后的形)。
411
+ - 新门 `scripts/run-attachments-credential-word-test.mjs`(**§129 XF-6**;165 格):CW0 门自证(样本都是判官认的字面形,运行期拼接)· CW1 单词凭据形 × 前后空白与逗号 · CW2 清单里夹凭据形 · CW3 历史契约原样 · CW4 退役键与坏词句冻结 · CW5 读值恰一次 · CW6 源码钉(判官只经展示出口那一只)。
412
+ - 新门 `scripts/run-delegated-prompt-absence-test.mjs`(**§129 XF-10**;52 格):缺席因五词判据逐形 · 句子 · 既有三态不变 · 取件腿源码钉。
413
+ - 新门 `scripts/run-error-supplement-roles-test.mjs`(**§129 XF-14**;99 格):二十只读口按函数身份读到声明角色 · 开集兜底 · 声明有句子证据 · 覆盖不静默漏 · 判官自证。
414
+ - 新门 `scripts/run-argv-values-equivalence-test.mjs`(**§129 XF-8**;67 格):`-p` 车道 resolver 收值的零行为变化差分(金样 `scripts/fixtures/argv-values/golden.json` 取自 0.100.0 的 dist,生成器 `scripts/gen-argv-values-golden.mjs`)· 值形入参纪律 · 缺值语义 · 旋钮读口 · 源码钉。门里 argv 向量统一经 `scripts/_argv-values.mjs`(终端 commander 的替身)翻成值。
415
+ - 新门 `scripts/run-slash-command-gate-test.mjs`(**§129 XF-15**;54 格):名册 · 对终端参照树同名 JSON 对拍 · 判决矩阵 · 与终端门第 2、3 步转写的全组合差分(全部名字 × 14 形快照 × 3 source × 4 宿主门)· 入参纪律 · 缺席语义 · 源码钉。
416
+ - 新门 `scripts/run-mcp-status-superset-keys-test.mjs`(**§129 XF-18**;23 格):两键对壳现形转写的组合差分 · 缺席语义 · 重拨回应 · 拷贝与冻结 · 入参纪律 · 源码钉。
417
+ - 扩门:`run-onboard-judgement-test`(OB5b `KEY_SLOT_PREFIX`,XF-1)· `run-user-facing-sentence-readers-test`(A0f – A0h,XF-2)· `run-rewind-engine-action-test`(N 段,XF-3)· `run-hook-matcher-verdict-test`(W 段,XF-4)· `run-wiring-manifest-projection-test`(FD 段,XF-5)· `run-permissions-declaration-test`(TL 段:361 对全积 + 契约档逐项 + 单调 + 源码钉 + 判别力,XF-7)· `run-permission-denial-projection-test`(OP 段,XF-11)· `run-plugin-hooks-projection-test`(G-HK500a – h 十二格矩阵,XF-13)· `run-subagent-started-projection-test`(AT 段,XF-16)· `run-refusal-machine-reads-test`(RF2x-10,hooks 帽拒,XF-14)· `run-session-policy-wire-test` DP 段与 `run-session-policy-refused-removal-test` N12(部署事实改句,XF-14)· `run-core-value-ports-test` ⑬ 段(端口镜像 × 引擎 7.54.0 原件的参数 / 返回宽度台账,XF-17)。
418
+ - 改门(成文改口):`run-hook-matcher-verdict-test` `run-upstream-tables-test`(G27-9b 改:`SETTINGS_IS_AT_LEAST` 不再零读者,读者恰一只规则来源信任序的派生件,新增 G27-9b′,XF-7) · `run-selfheal-reopen-test` · `run-selfheal-exit-slot-test`(B 段正控) · `run-park-decision-layer-test` · `run-client-core-pure-test` · `run-display-untrusted-projection-test` 里钉交互车道句子带 HTTP 路径的格改钉无路径新句,另钉 `print` / `utility` 车道原句逐字节(XF-14);`run-client-core-pure-test` G-AV4c / G-AV6 / G-AV7 对凭据形项改钉『遮盖』(新增 G-AV7c 单独钉含凭据形项的取值是有意异于基线的一类,XF-6);`run-limits-env-failloud-test` 等 argv 向量门经 commander 替身翻值(XF-8)。
419
+ - 用户附件信封 golden 副本换新(**§129 XF-17**;CC-547):`scripts/fixtures/user-attachment-envelope/golden.json` 换成终端参照树 1.0.150 的同名件(blob `53f7ce48f246`,终端提交 `17d3e271`);`run-human-turn-encoding-test` AE1a 钉 blob、AE1c 改为与本包产物直接比(不再先剥标签)—— 旧门对新件红(46 格)、新门绿(542 格),两次运行留证。
420
+ - 扩门 `run-seat-contract-keys-test`(**§129 CZ-5 / CZ-6**;CC-947):词表格 14 → 17 并加**序**格(既有十四词序不动、新词在末)· M5 由「必接臂的座位去向」扩成**全部臂**的去向成文(座位词 xor 仅宿主环行,23 行逐臂一句为何,全集账)+ 渲染端消费证据钉(15 个消费且呈现的臂必在座位词表、4 个消费但留宿主环的臂必带理由)· 新 M5b(读 `src/seatContract.ts` 去向表字面量的 TypeScript 语法树:行集 = 臂全集、`seat` 行按序 = 座位词表、`host` 行集 = 成文表键集)· 新 CZ 段(三臂各过出站门 / 无 `laneProof` 与空 `laneProof` 仍拒 / 子代车道照过 / 开集原词照过 / 载荷键原样过境;真 `adapt()` 铸出的两臂过门且载荷逐字;座位 lane 追踪器开 → failed 收 / mooted 收 / 落地收、引擎通告到得了渲染端;负控:词表少 `compaction_outcome` 则未落地收到不了、追踪器卡在「正在压缩」,少 `compaction_started` 则开不了,少 `engine_notice` 则通告恒静默)—— 修前 35 格红(含 1 格读口自证)、修后 1376 → 1521 格绿,两次运行留证。
421
+ - 登记物同批(**§129 CZ-5 / CZ-6**):`docs/refactor/p1-scan/singleton-manifest.json` +1 条(`CHROME_ARM_SEAT_ROUTE`,obj / low:静态契约常量、全文件零写点)· `CHROME_EVENT_KIND_TUPLE` 条的 purpose 改成「由去向表派生」;模块级单例 1017 → 1018,`high` 档不变(128)· 裸句棘轮基线 `src/seatContract.ts` 一个摘要换(出站门「chrome.kind is not a renderer-wired arm (…)」一句里元组内容不再进静态求值,同一句、摘要换,净 0,ledger 一条)。公面基线 / 退役登记 / type-superset 台账不动(本件零新公面名、零退役)。
422
+ - 登记物:公面基线 `public-export-baseline.json` +25 −7(公面计数按合并后基线重算);`docs/type-superset.json` +2(`_sema_engineLeg` · `_sema_shellConnection`);退役登记 RL-230(argv 读口族)· RL-231(私有信任序常量);裸句棘轮基线 `bare-sentence-baseline.json` 两个文件各 +1 / +2 并记账(XF-6 的拒绝说明位、XF-13 的两行宿主诊断);消息目录 en / zh 各 +28 键(865 → 893;域 `session` / `config` / `doctor` / `rules`)。
423
+ - 扩门 `scripts/run-model-identity-resolvability-test.mjs`(**§129 MI-1 / MI-2**;97 → 112 格):S8 改写 —— 目录 `complete` ∧ 采纳读数非 `refused` ⇒ `resolvable`(8 种采纳形 × 10 种旧位值)· 旧位退出 180 格(目录读数 6 × 采纳读数 3 × 旧位 10 值,带 / 不带旧位判据 + 措辞 + 决策逐字同;旧位取值器执行 0 次)· 旧位三段措辞 600 句无一出现 · 出包声明对旧位字面量编译红;S9 改写旧位相关格;新 S10 —— 目录事实位 1800 格模型对拍(事实位 25 形 × 目录读数 6 × 采纳读数 4 × 别路 3,期望表独立于实现)+ 代表格 + 偏差读口 600 格对拍 + 出包声明 `catalogFacts` 窄型零 `unknown` · 事实位压过来路读数时来路读数的取值器抛错也不抹掉派生(S10i)· 不相干的事实位 9 形 × 目录读数 3 种 × 抛错的采纳位取值器与没有事实位逐字同答、取值器 0 次执行(S10j)· 已撤销的代理当事实位 ⇒ 当缺席(S10k)。`scripts/run-turn-failure-presentation-test.mjs`(241 → 252 格)加 PR14 – PR21(**§129 RQ-1**):缺席 / 坏形 18 形 × 两码一律不带 · 字面 `true` 恰带一处且去掉即不带的句子 · `index` 与 `draftKept` 各位各读 · 另五码不读 · 窄视图与补句链恒不带(窄视图只投 `index`,入参变量上挂的 `draftKept` 进不了句子)· 原型链被污染成 `draftKept: true` 也不放行、数组挂自有位不算、已撤销的代理不抛(PR20 / PR21)· 消息目录两语里能说「草稿留着」的只有新键。`scripts/run-user-attachment-seat-test.mjs` / `scripts/run-user-invoked-skills-slot-test.mjs` 的句子格改判不含 draft。`scripts/catalog-migration-golden/cc783.json` 登记改口 14 行(目录 `complete` 的各旧位形现与旧位 `true` 那句同摘要);裸句基线两文件换摘要 / 降基线并记账。
424
+ - 扩门 `scripts/run-model-catalog-read-projection-test.mjs`(**§129 MC-1**;新增 M9 段):独立期望表三维矩阵 171 格(目录 9 形 × 名字 19 形;期望先于调用取、入参快照调用前后比对:name / id 命中、大小写与空白不折、停用行、被丢的停用条目、空串 / 缺席 / 非串)· 目录缺席与读不出各形一律 unknown 且不带缺省键 · 名字缺席优先于目录 · 敌意目录(行 `name` 是访问器 / `models` 访问器、抛错、已撤销与陷阱代理)取值器 0 次执行、不抛、unknown · 保留词 11 个 × 六种目录形一律 `unknown{reserved_word}`(含目录列了同名行、按 id 归一后撞保留词)、近形(大小写 / 首尾空白 / 前后缀)不是保留词 · 丢行 × 不在列 ⇒ `unknown{catalog_incomplete}`、丢行 × 在列 ⇒ `accepted`、停用 ⇒ `refused{disabled}`、零丢行 × 不在列 ⇒ `refused{not_listed}`(M9q – M9s)· 缺省取交进来的那份目录而非单例 · 告知句只在 refused、其余 18 形 `undefined`、名字过嵌句引法 · 读数型按 `verdict` 判别(配错对编译红)。`scripts/_catalog-corpus/cc944.mjs` + `scripts/catalog-migration-golden/cc944.json`(新增句口八格,目录路由三格:中文活性 / 无英文连串 / 无残留占位符)。
425
+ - 扩门 upstream-tables(G28 / N28 第二十批引擎卡词闭集:对引擎逐项同序、十词含 `skill` / `workflow`、读口成员集就是生成物且不再取 sdk 转录、不上根入口、`src` 零第二份;上游加员生成物随之变,缺席 / 空 / 重复 / 含空串 / Set / 含非串拒生成并点名,缺名只点它)· ask-class-reason(A1b / N10 – N12 / R5 / C4b:`probe` 无行问类;名单之外的缺席仍拒)· park-card-word-arm(K0b / K0c:读口成员集 == 引擎包根十词)· server-7126-pick(C0 / C1 / F3 改按生成物与「夹具引擎铸的每个词本包读口都读得出」)· engine-notice-catalog(G8g / G8g2 / G8g3:两新码在册、受众、铸方、元组序、只登记不加读器;码册大小期望再分一代 100)· engine-vocab-floor(G3-d:发送前拒绝两码的铸点腿)· client-core-pure(0.101.0-c 两常量;rewind 族前缀谓词格钉 `rewind.restore_failed` ⇒ `false`)。
426
+ - 改门 workflow-park-truth-projection(**§129 PK-4**):SKIP 判据与 `workflow.journal_incompatible` 活码反向钉(F5)改读包根常量 `JOURNAL_INCOMPATIBLE_ERROR_CODE` 与错误类实例的 `code`,不再按构建路径找 `dist/orchestration/workflow.{js,d.ts}`(引擎 7.55.0 把该类迁到别的文件);「引擎真字节」类格改读引擎构建产物全树。
427
+ - 改门 mods-kernel-transit / mods-kernel-install-matrix(**§129 PK-3**):内核开发依赖随引擎换钉到 7.55.0,逐代矩阵各加一代(内核 7.55.0 的包与 7.54.0 逐字节同,转口门共用同一份钉值、安装矩阵一代的 16 格期望读数在真装机上逐格对拍通过);安装矩阵的期望读数形状检查改为按代检查(每代的 `copies` 只许出现那一代自己的版本与范围外合成版本)。
428
+ - 改门 engine-notice-catalog(L7 真铸点直驱):铸点模块在引擎里改名(`persisted-path-rows` → `person-path-rows`,7.54.0 的包里已是新名),旧锚让这一段整段落进跳段标记而门仍 exit 0 —— 现按新名找,并把铸点入参的 `disposition` 改交 `route`(引擎现形:`route` 为 `none` ⇒ `denied`,其余 ⇒ `asked`);这一段重新真跑。
429
+ - 改门 client-core-pure(B5 结构化卡白名单):加 `advisor`(引擎 7.55.0 的顾问座结构化卡;请求面对顾问座零入口,不加专属臂)。
430
+ - 改门 permissions-declaration / session-policy-wire / rule-readings / tool-roster-projection / permission-rule-issue-codes(**§129 GN-23 / GN-30**):换钉当拍红的几格按引擎 7.55.0 的新读数重钉 ——域名形 deny / ask 的「永不命中」一类在新一代引擎上是空集,判官逻辑两个世界都钉(老一代读法做成可注入的读者 `legacyDomainDenyReader`,真引擎世界另立 PDL / PDWL / E2 钉「真读者下一条不扣」并以引擎真策略证翻转后的事实);泛型参数规则池换成两代都成立的形(`TaskOutput(task_id:…)` 等);设置桶 allow 冻结向量对 `*` 的拒句取引擎原文(引擎 7.55.0 把句子改短了,码仍钉死);协议名铸不出的复写判官遇整服务器通配改问引擎判官;名册逐键处置账补 `hostTarget`(declined);拒因码表门补 `invalid.name_ambiguous`。 rule-readings 的逐条读者池补一条两代引擎都按方向分读的形(`Grep(x)`:deny 读法是路径行、allow 读法读成「内容形不支持」),使负控「读数方向恒按 deny」仍在 E1 点名(域名形在新一代引擎上不再分方向);gate-negative-controls 的安装矩阵期望格负控,锚带上装着的内核版本那一代的键行(矩阵有两代时该格在表里出现两次,旧锚空转); core-value-ports 的端口宽度台账 `judgeRuleToolName` 记 `engine-only`(引擎 7.55.0 多一个可选第三参 `behavior`;镜像两参,读点不传它,读数同 ≤ 7.54.x)。
431
+ - 新门 `scripts/run-task-notification-entry-sampling-test.mjs`(**§129 NA-1**;CC-923):NA0 供给面与入口名册(采样口调用点恰是登记的那几处)· NA1 一次采样扇出(计数代理:每个节点 `ownKeys` 恰 1 次、每个键描述符恰读 1 次、载荷键零次 `get`;交互帧 · `workflow_complete` · 公面直调 · fleet · 转录 · 看守探针 · TaskOutput 体含收卡臂;帧型位是访问器的帧由通知臂在臂内补采恰一次;卡型选择器的闭合方向与无判别位卡体原样)· NA2 两次独立采样逐格相等 · NA3 JSON 保真 · NA4 敌意载荷〔含稀疏高下标与指数共享图的有界性〕与入口级不抛 · NA5 冻结与品牌 · NA6 身份位搬运〔含铸造口值域〕 · NA7 `_sema_completion_id` · NA8 尺子自证。登记物同批:`scripts/gates-manifest.json` +1 套(README Guards 行与负控表派生行重生成)· type-superset 台账 +1 行(`_sema_completion_id`)并改 `_sema_task_notification` 行的位清单 · 单例清单 +1 行(`SAMPLED`)。公面导出不变(1954 名)。
432
+ - 新门 `scripts/run-mcp-server-name-collision-test.mjs`(**§129 MN-2**;CC-897;53 格):NC0 码的坐标(包常量逐字 = 已装引擎 `dist/core/mcp.js` 恰一处铸点,紧跟挂载处撞名判官;前提格 `a.b` 与 `a_b` 铸同一前缀;该码不在引擎通告码册 / 包根导出的任何闭集 / 本包生成表 —— 进了就该改读生成表,门先红;真引擎实跑撞名对〔两种拼法、换序、同名写两次〕整对抛该码、两种拼法点名、零传输被触碰)· NC1 过境(四载体 + 续跑折叠形取码同一码,补句链与终局路同句恰一次)· NC2 处置句(en / zh 受同一组事实约束:不断言没起来、不说哪一台仍在用、零机器码零用户字节、八码互异;事实袋 `index` 位只认自有数据位)· NC3 表外码(17 形近形 / 兄弟码 / 原型链名:句与取码 `undefined`、原码原样过境、补句链不借句)· NC4 坏形(22 形载体 + 三种访问器零执行 + 原型链被挂码名)· NC5 零预判(九组撞前缀条目 × 两序:本地腿两出口 + 中心腿全投、独立判口逐名可用、夹具未空转;源码钉:`mcpWireCaps.ts` 不读铸名端口 / 前缀,读端口的叶是登记过的五叶)。变异 13 枚,每枚各红在点名格:包自己判撞名丢第二台〔本地腿 / 中心腿各一枚〕⇒ NC5a / 码从表里认不到 ⇒ NC1a · NC1b · NC1d · NC2a · NC2c – NC2g / 句子谎称「只用第一台」⇒ NC2e / 句子或 zh 句断言「什么都没开始」⇒ NC2d / NC2i / 句子泄漏机器码 ⇒ NC2f / zh 句回落英文 ⇒ NC2b / 表外码被猜 ⇒ NC3a / 手持码错一个字符 ⇒ NC0a 等 11 格 / 码常量退出根入口 ⇒ NC0a / 取码口读原型链与访问器 ⇒ NC4a · NC4b / 事实袋 `index` 退回按普通属性读 ⇒ NC2l。
433
+
434
+ - 扩门 `scripts/run-inherit-env-intent-projection-test.mjs`(**§129 IE-1**;CC-868):判定两位闸。J1 真值表 225 → 1125 组合(车道 5 × projectContext 3 × 名臂五态 × 值臂五态 × 身份 3,恰一格 `all`、成因次序逐格钉)· J3b 值臂七形坏读数 ⇒ `capability_values_unreadable` · J4 入参按键隔离五位 · J7 / J7b 老写法四键入参 ⇒ `omit`(绝不 `all`,身份先于值臂)· J8 成因次序关键对 · J9 只认自有位(继承来的 `kind` 两臂 / 继承来的入参位五位逐一 / 整只入参继承 / 原型污染)· N4 / N5 值臂十种「不是顶层字面 `true`」的回体放宽方向负控 · T7 – T12 值臂句(英文原句逐字节 / `lang` 八形 / 三成因出句 / 经判定口一路 / 零内部词 / 中文在目录里)· V3 – V6(0.100.0 的 V3「只闸首词」作废改「两词都闸」;端到端:两词经总缓存落地 → 两只读口 → 判定;夹具真回体 ⇒ 判定)。51 → 77 格。
435
+ - 扩门 `scripts/run-display-credential-reach-test.mjs`(**§129 PE-1**;CC-869):新 DY 段 16 格(DY0 前提 · DY1 / DY1b 三出口 × 166 形同答 + 块后行逐字节留着 · DY2 逐字节编码 · DY3 半编码混合 · DY4 二次 / 三次编码同答、四层照旧不遮〔KL-749 同界〕· DY5 JSON 转义行断 · DY6 块序列 · DY7 坏百分号序列 · DY8 负控 · DY9 幂等 · DY10 与 CC-866 九族 × 十二序列同判官 + DY10b 与其它候选共存 · DY11 线性 · DY12 表单编码〔加号写空格〕的块同答 + 含加号的散文不动 · DY13 14 万块不抛不外溢)。红先:修前 12 格红〔DY0 / DY8 / DY9 / DY11 是前提 / 负控 / 幂等 / 线性,修前也绿〕。170 → 186 格。
436
+ - 扩门 `scripts/run-display-untrusted-baseline-diff-test.mjs`(**§129 PE-1**;CC-869):新 B10 池 —— 166 形明文 × 编码 1 – 3 层 = 498 串 × 十四出口,本版一格不露(B10a;上一版在同一池上露,判别力 B10a′)· 非凭据标签的编码多行文本十五出口与上一版逐字节同(B10b)· 有意改读(新增多遮)六形登记为分歧(B10c:本版机读口逐字节为期望、上一版在同一输入上露值)· 池内洗两遍 = 洗一遍(B10d)。44 → 51 checks;全池读数不变:旧遮新露凭据位 0、洗两遍 ≠ 洗一遍 0。
437
+ - 扩门 `scripts/run-settings-credential-key-paths-test.mjs`(**§129 PE-1**;CC-869):新 K13 同答守卫 —— 已知字面形令牌在编码的块里(7 形 × 明文 / 一层 / 逐字节 / 两层 / 三层)与明文同判命中 · 坏百分号序列紧贴令牌 22 格命中 · 标签 + 低熵值的块明文不命中、编码形同答、四层按「没走完」算凭据 · URL 串值 query 里的块经 query 判官命中 · 整条编码的地址(userinfo / query 带凭据)与明文同命中、不带凭据的编码地址不命中 · 干净对照不命中;门内负控三枚(拿掉已知字面形判官 / 拿掉 query 判官 / URL 那一支只读原串 ⇒ K13 红)。86 → 92 checks。YAML 块一支修前同答,本段守「编码形与明文形同答」;编码地址一支是同批补的缺口(修前红)。
438
+ - 新语料 `scripts/_catalog-corpus/cc868.mjs` + 金样 `scripts/catalog-migration-golden/cc868.json`(**§129 IE-1**;catalog-routing 门,新增句口无迁前基线、摘要取自实现):`inheritEnvValuesNotConfirmedNotice` 登记为出句口(CR11),句口本身 + `inheritEnvNoticeOf` 三个值臂成因 + 一个近形成因 × 英 / 中的路由格。
439
+ - 公面基线 `public-export-baseline.json` +1(1956 → 1957:`inheritEnvValuesNotConfirmedNotice`)。
440
+ - 新门 `scripts/run-terminal-coded-detail-projection-test.mjs`(**§129 CD-1**;CC-937):TC0 公面与判别力自证 · TC1 在场十二形(`config.unknown_role` 三种 reason、`rewind.restore_failed` 带 / 不带 `permanence`、表外词与非串逐字、开集嵌套形、非 JSON 与环成员略去、`__proto__` 自有键;行与帧值相等、键下冻结)· TC2 / TC3 手写期望表 24 格两向(缺席形含无 detail / 别的种类 / 表外种类 / 本体缺·非记录·空记录·全非 JSON 成员·超预算·已撤销代理 / 自有取值器 / 完成·停驻·被挡挂形同 coded 的 detail / 终局缺席 / 事件帧 / 扁平 409;缺席 = 键不在,负控「读不出铸 `'unknown'`」)· TC4 两车道同值(print / utility / 交互 / 交互 + 声明;`adapt()` 重建后同值,非合成行与行种位非 api_error 的行不接力、行种位只读一次、坏形整键丢、原型链上的旗与键不接力)· TC5 同一份读数(有状态账本体上行与帧值相等;端直调自读;事件帧不铸)· TC6 只透传 · TC7 两读口(合形冻结新对象;坏形十八种不抛;原型链污染的 `detail` 与 `Object.prototype.value` 都不算)· TC9 字符串叶经凭据网(`sk-` 前缀 / `token=` / URL 用户信息·query / Bearer / `api_key=`,含嵌套数组与嵌套记录内,行与帧同出记号、其余键逐字节不动;幂等;`adapt()` 重建口与铸点同值;`readRunTerminal` 读数不变;深度尺同快照口)· TC8 单铸点(两个铸点各恰一处,全仓只在五个文件出现)+ 超集登记 + 转录行侧挂键表。
441
+ - 扩门 `scripts/run-tool-history-mismatch-projection-test.mjs`(RB 与 0.90.0 发布产物对拍;**§129 CD-1**):对拍池 +6 只终局帧(`config.unknown_role` · `rewind.restore_failed` 带 / 不带 `permanence` · 治理码挂 coded 账〔帧带、行不带〕· 空记录 · 坏本体);第九类允许差「只多 coded 账本体」要求行 / 帧值逐字等于池帧上抛点写下的账本体、读口 `terminalCodedDetailOf` 读出同一份、行只在 `API Error:` 臂(行种位 `api_error`)带、结果帧在任一 failed 终局带,存在性两向(该带而缺 / 不该带而带 / 值不同源都记错),放在提前放行之前判;RB8 自证格 +17(正控三条 + 值不同源 / 占位串 / 不该带 / 该带而缺 / 治理行带 / 拒收优先 / 空记录 / 治理·模型输出·占锁终局的行伪成 api_error / 结果帧值不同源 / 新旧逐字节同而缺键 各一条);载体资格由池帧独立给出(占锁 > 治理 > 模型输出 > API 错误四臂手写期望)、不信候选行自带的行种标签;逐字节同的新旧对也过存在性校验(修前循环对相同的对直接记「同」、不进分类)。
442
+ - 登记物同批(**§129 CD-1**):`scripts/public-export-baseline.json` +2(`runTerminalCodedDetail` · `terminalCodedDetailOf`;公面计数按合并后基线重算);`docs/type-superset.json` +1(`_sema_coded_detail`);`TRANSCRIPT_ROW_SIDECAR_KEYS` +1(普查门 SK1 两向等值);`scripts/gates-manifest.json` +1 套(README Guards 行与负控表派生行重生成)。消息目录零变(无新增用户面句)。
443
+ - 新门 `scripts/run-project-memory-projection-test.mjs`(**§129 PM-1**;CC-938;55 格 + 夹具腿):A 公面与源码形(读口与三词表在根入口、请求词常量不上公面、入参型写成单成员字面、不在宿主自供项产物键全集里、车道表一行三条车道 + 座位读数)· B 装配口 × 三条车道(原样上体 / 缺席三形不带键且与不传逐字节同 / 非 live / 十六种坏值响亮拒不回显值含 `false` / 读序与恰读一次 / 经 live 兜底层落位后不变)· R 清单读口(三词读回、缺席 / 表外 / 非串 / 继承位 / 访问器 / 代理 ⇒ `undefined`)· RE 引擎自己的 `deriveWiringManifest` 铸的三词读得回、没报 ⇒ `undefined`、三词之外引擎自己铸不出 · K 引擎声明文件语法树(`TaskSpec.projectMemory` / `WiringManifest.projectMemory` 的字面联合与可选性,逐元素比较并自证逗号碰撞)与变更记录闭集行对拍 · F 夹具腿(服务端提交体键闭集的当前一代收不收这一键;翻转提示改文档)· V 能力位读器五态逐形(真落地:顶层键 true / 缺席 / 只在原型链上 / 自有值 undefined / 嵌套分组形 / false·串·数·null·数组·对象 / 自有访问器取值器零执行 / 没探·失败·失效·坏地址·代理回体)+ 见位才发的片段口(五态 × 十八形认不出的读数 × 意图缺席 × 坏词先于读数 × spread 进装配口的端到端 × 成因闭集)+ 回执句口(en / zh 三句成因句 + 通用句,互异、零内部词、不含版本号、不回显)+ 读口模块代码位置无版本解析 / 版本地板 · F / F′ 夹具与服务端源见证能力位铸点 · N 手造坏实现(缺席铸 on / 读口猜 absent / false 折缺席 / 读口读原型链;读器任何真值当 confirmed / 原型链当 confirmed / 读不出折 absent / 没落地折 confirmed;片段口 absent·declined·unreadable 也给键 / 成因互换 / 坏词被吞 / 意图缺席也给键 / 认不出的读数当 confirmed)各自变红。登记:门清单 +1(356)· catalog-routing 新语料 `scripts/_catalog-corpus/cc938.mjs` + 金样(新增出句口 `projectMemoryWithheldNotice`,取自实现)· README「Guards」表 +1 · 负控记录表 +1(行为套)· 公面基线 +5(1961)· 单例清单 +9 · 可移植性棘轮 index 闭包 378 → 379(新叶模块 `src/projectMemory.ts`,零外部 import)。
444
+ - 新门 `scripts/run-decide-row-unrevivable-projection-test.mjs`(**§129 DR-1**;CC-967;168 格):DR0 码的坐标(常量逐字 = 已装服务端夹具 `parked-decide.js` 恰两处铸点、都是 409;夹具在场时真调服务端 `decideParkedAgent` 对「无名字」「无根会话锚」两行各铸一体,再交真 sdk `toApiError` 落 `DecideError` 基类而非停驻挪动类;三名在根入口与公面基线;刻意不在停驻挪动族 / workflow 车道闭集)· DR1 严格等值真值表(34 个近形 + 13 个非串)· DR2 位 × 三载体(抛出物 / 拒体 / 耐久 decide 腿与活卡 respond 腿真入口铸出的结局 + 发送机结局 `refusal`,逐字同答;两种成因同答;路由上下文无关;安全停包装读 `cause`)· DR3 缺席语义(无状态码 / 状态码越界 / 近形 / 兄弟码 / 访问器〔零执行〕· 原型链 · 代理陷阱 · 已撤销代理 · 非串码 / 折叠形外层码 / 结果帧 / 有状态载体存的状态码不在 400–599 / 手搭结局读数缺位或非字面 `true`;近形与读不出的码经三条真入口铸出的结局同样无位)· DR4 互不串位(同一 `refused-pending` 下「改参数再决」真铸体无位;拒体自称 `retriable` 不翻案且正控照铸;收口判官判决不变;停驻挪动族 / workflow 车道无位)· DR5 包句(两语禁词表不诱导重试且尺子自证;说得出「批准与拒绝都不生效」「出路在服务端」;零机器码;目录两语各恰一键;`lang` 敌意形)· DR6 单源(源码钉:码字面只此一处,铸位判点只在 `mintDecisionRefusalReading`,分类只读存好的位,句口只此一只)· DR7 门内负控(判官换成按前缀 / 包含 / 折大小写 / 裁空白 / `decide.` 前缀 / 装箱串 / 只看长度的变体,位的判点换成 `decide.` 前缀都铸 / 改参数也铸 / 一律铸 / 按前缀铸,真值表与期望表各判红)。夹具缺席 ⇒ 真铸点格 `SKIPPED-SECTION`(必跑档红),体按同字节手搭。变异 15 枚,每枚各红在点名格:判官按前缀 / 折大小写并裁空白 ⇒ DR1a · DR3a · DR7a/b;「改参数再决」也铸位 ⇒ DR3a · DR4a · DR7b;分类读数丢位 ⇒ DR2a – DR2d · DR2h · DR2i · DR3d · DR4a · DR4b;不压 transient ⇒ DR4b;位不要求引擎答了 ⇒ DR3a;位不要求存的状态码在 400–599 ⇒ DR3f;句子尾加「You can try again」/「请重试」⇒ DR5b;码常量并进停驻挪动族 ⇒ DR0b · DR4d;码常量错一个字符 ⇒ DR0a · DR1a · DR2 全线;分类按普通属性读位 ⇒ DR3d · DR6c;分类里另起第二个判点 ⇒ DR3a · DR3b · DR6b · DR6c;句口丢 `lang` ⇒ DR5a · DR5c(catalog-routing 同红);只在发送机结局的 `refusal` 上铸位 ⇒ DR3e。
445
+ - 新语料 `scripts/_catalog-corpus/cc967.mjs` + 金样 `scripts/catalog-migration-golden/cc967.json`(**§129 DR-1**;catalog-routing 门,新增句口无迁前基线、摘要取自实现):`decideRowUnrevivableNotice` 登记为出句口(CR11)。
446
+ - 公面基线 `public-export-baseline.json` +3(1965 → 1968:`DECIDE_ROW_UNREVIVABLE` · `isDecideRowUnrevivableCode` · `decideRowUnrevivableNotice`)。
447
+ - 新门 `scripts/run-session-rules-children-read-live-projection-test.mjs`(**§129 SR-1**;CC-966;39 格):A 公面与源码形(读口在根入口、没有词表常量 / 第二个同题名字、入参不写 `unknown`、读法与 `projectMemoryOf` 同一对助手、不另写第二份自有位读)· R 读口判据批(`true` / `false` 各读回、缺席二十形与非布尔二十七形 ⇒ `undefined`、两层自有数据位、原型被植入也不算、敌意代理永不抛、每位只读一次、JSON 帧同判)· RE 引擎自己的 `deriveWiringManifest` / `describeStaticWiring` 铸的清单(两个极性读得回、事实缺席 / 静态半场 ⇒ `undefined`、非布尔事实引擎铸不出)· K 引擎声明文件语法树(可选的单成员对象型、必填 `boolean`)与变更记录(闭集行里没有它)对拍 + 编译钉两向可赋值(含抽取器判别力自证)· N 九只手造坏实现(缺席猜 `false` / 缺席猜 `true` / `false` 折缺席 / 真值折布尔 / 读原型链并执行访问器 / 不吞抛 / 每位读两次 / 位放错层 / 铸词表)各自变红。登记:门清单 +1 · README「Guards」表 +1 · 负控记录表 +1(行为套)· 公面基线 +1(`sessionRulesChildrenReadLiveOf`;公面计数按基线重算)· 可移植性棘轮 index 闭包 +1(新叶模块 `src/sessionRulesChildrenReadLive.ts`,零外部 import)。
448
+ - 扩门 `scripts/run-turn-failure-presentation-test.mjs`(**§129 TH-4**;CC-965;252 → 264 格,夹具在场):TN 段新增 TN11 – TN11c —— 不传 `ctx`(省略 / `undefined` / `{}` / 只给 `nowMs`)四种入参形逐场景同读数、且 `notes` 仍按抛出物出句(配额 / 用量窗 / 租约 / 续跑拒 / 坏存档各一句、限流只有 `waitNote`、无人认领为空)· 真 sdk 错误实例同读 · `ctx` 位依赖表(`requestedScenario` 缺席 ⇒ 场景句不点名;`sentRequest` 缺席 ⇒ 宿主姿态句落「读不出归因」一形、inheritEnv / 设置面两句缺席;`modelCatalog` 缺席 ⇒ 配置整拒句缺席;不依赖这些位的句子不随无关位变)· `nowMs` 缺省取本机时钟(容差只为跨午夜)。此前 TN 各格全经 `{ nowMs }` 调用,从未钉过「真不传」。车内变异三枚各红在点名格(一次性,不入常驻负控套):不传 `ctx` 时清空 `notes` ⇒ TN11 / TN11a / TN11b / TN11b2 / TN11b5 / TN11c · `nowMs` 缺省改常量 ⇒ TN11c · 门格断言反向 ⇒ TN11b4。
449
+ - 新门 `scripts/run-session-rules-namespace-forms-test.mjs`(**§129 NS-1**;CC-227;负控:N 段手造坏实现七只 —— 缺席也放开 · 没交读数也放开 · 表外词也放开 · 非肯定态折成肯定 · 多放一形 · 放开对端段带 `*` 的整协议名 · 不交读数时第八词冒出来 —— 过同一批矩阵各自变红,读器格另有三只坏读器):S 公面与形(读器 / 选项位 / 八词闭集冻结且序不动 / 第八句 en · zh 互异且不随语言变其余七句 / 读器签名零 `unknown`)· R 读器五态真落地(十二形回体、访问器、原型链污染、未探 / 失败 / 失效、代理、分账、冻结)· M 🔴 读数 × 规则形矩阵(8 个覆盖形 × 34 种读数处置 + 49 个不放开的形 × 同一批,共 1946 格:`confirmed` 恰放三形,其余读数与不交都维持扣下,成因词逐格钉)· O 与名册 / 整批语义 / ask 批 / 坏形的关系 · D 不交读数(不交 / `null` / 空选项 / `namespaceForms` 缺席·`undefined`·`null`)与两参调用逐字节同答(4000 个生成名 × 6 形)· E 🔴 最终消费结果(开发依赖里的引擎):放开的每一条引擎会话规则写口收、引擎真会话规则门对被覆盖的工具拦、对不被覆盖的放;三形且写口收的生成名一个不漏放 · K 源码形(翻译判定对读器只有 `import type`;读器只此一处读这一键且经总缓存按键读口)· W 服务端 7.135.0 铸点字节见证(夹具腿:顶层同名键取 `sessionRulesNamespaceFormsHonored()`、探针恰是三形、同时问匹配器与写口读者、声明返回 `boolean`;版本 < 7.135.0 的夹具里该键不存在;没有 ≥ 7.135.0 的夹具只记 `SKIPPED-SECTION`,夹具换代后自动生效)。
450
+ - 扩门 `scripts/run-session-policy-deliverable-test.mjs`(**§129 NS-1**):成因闭集七词 → 八词(S4 / N1 / Y1b;第八词由一次带读数的直接调用产出,C1 照咬「闭集里没有死词」),N4 的『只收成因词』改读源码签名(多一个可选末参 `lang`,仍不收规则串)。580 → 581 checks。
451
+ - 公面基线 `public-export-baseline.json` +1(1971 → 1972:`observedSessionRulesNamespaceForms`)。
452
+ - 新门 `scripts/run-cloud-skill-tool-lists-test.mjs`(**§129 SK-3**;CC-970;门名 `cloud-skill-tool-lists`):A 两腿同答(读数六形 × 两表七形 ⇒ `skillCommandsToSpecs` 与 `projectEffectiveBody` / `cloudSkillsToSpecs` 产物 JSON 逐字节同;选项缺席两表一次不读)· B 坏形 fail-closed(两键 × 十一种坏形 × 四种读数:本地腿抛、云配置腿丢这一条留一行;读就抛 / 撒谎长度 / 已撤销代理不抛、兄弟照上)· C 只对真会被发出的条目判且坏条目占名 · D 缺席 / `[]` / 条目内容原样 · E 披露句(一句 warn、不回显、名字清洗、`+N more`、位读不出、句序)· F 单源判官词法扫(云配置腿判官调用恰一处、无自带值形读与键名串)· G 设置契约 14.4.0 `toSkillsManifest` 铸的真 manifest 喂云配置腿 · H 服务端过境点字节见证(`dist/web-admin-client/skills-mcp.js`:≥ 7.135.0 有 `skillToolListsOf`、< 7.135.0 没有;≥ 7.135.0 夹具由 `SEMA_CC_SERVER_FIXTURE_7135` 补,缺席记 SKIPPED-SECTION)· I 型面编译探针。负控一枚:`cloud-skill-tool-lists`(云配置腿只并进 `allowedTools`、静默丢 `disallowedTools` ⇒ `G-SK10 present × deny` 先红)。 另有两段:B2 读数位自身的坏形(自有访问器 / 原型链 / 代理陷阱 / 已撤销代理 ⇒ 两腿同答「读数不是读数」、不抛)· B3 读取预算(代理报最大合法长度 ⇒ 这一条不上 wire + 一行披露,读取次数有界;边界格恰 100000 项过境、100001 项拒)。
453
+ - 公面基线 `public-export-baseline.json` +1(1972 → 1973:`skillToolListsVerdict`;公面计数按合并后实数重算)。
454
+ - 新门 `scripts/run-web-search-sources-projection-test.mjs`(**§129 WS-1**;CC-973;167 格):WS0 坐标(读口在根入口与公面基线、白名单含 `web-search`、已装引擎的 WebSearch 工具**真跑**铸成功 / 失败 / 后端零命中三张卡并核字节形〔嵌套 `results`、命中两键、失败卡 `results: []` + `retryable`〕、CC 2.1.296 接口声明按 TypeScript 语法树读键集与可选位、卡键集 ⊆ CC 键集)· WS1 卡在场(CC 同形、不带 `type` / `retryable` / `snippet`、字串项原样、`searchCount` present-iff、卡不洗、不改入参)· WS2 缺席 / 坏形(读口 36 种载体 ⇒ `undefined`、引擎自己的空 ⇒ 真空 `[]`、B 层臂 13 种坏卡 ⇒ `null`、取值器零执行、已撤销 / 陷阱代理不抛、自有 `type` 可读而 `get` 陷阱抛的代理与通用前导四键的访问器都不执行)· WS3 条目隔离(十三种坏命中 / 九种坏项、读口与 B 层臂同一读法、有界〔长度 10^9 的稀疏数组至多读一帽下标;5000 命中 / 1500 项的帽;命中预算跨项扣减:两项各 3000 命中恰读 4096、丢 1904〕、伪造的数组 `length`〔`Number.MAX_VALUE` / 2^32 / 1.5 / -1〕读不出而丢弃计数不溢出、读元素时抛的代理只丢那一个、产物冻结且 `droppedCount` 不可枚举)· WS4 洗口(读口 `url` / `title` ≡ 公面 `displayUntrusted`;userinfo / query 值 / fragment 换记号、控制与双向字符转义、干净地址逐字节不动、幂等、传输层记号不叠层、洗空即丢;卡本体不洗)· WS5 两车道同值(交互 `adapt()` 与 `-p` 的 `tool_use_result` 同值且 = B 层铸件、块正文不变;坏卡两车道同落通用形;读口对内部臂与 wire 帧同答)· WS6 单源(源码钉:分流判点恰一处且在采样之后、通用前导之前、不再有 `case 'web-search'`、`'web-search'` 字面恰两处、读口与 B 层臂共调同一只读助手、读口走 `displayUntrusted` 而 B 层铸点零洗、助手不出公面、读口入参型不写 `unknown`)· WS7 门内负控(判据批对「实现」参数化:读口六只坏实现〔缺席铸 `[]` / 不洗 URL / 一条坏命中毁整卡 / 非空全坏读成空 / 读原型链 / 访问器也执行〕、B 层臂六只坏实现〔带 `type` / 透传 `snippet` / 缺时长补 0 / 全坏铸空卡 / `searchCount` 补 0 / `results` 缺席补 `[]`〕各自必红,真实现零差异)。
455
+ - 公面基线 `public-export-baseline.json` +1(1973 → 1974:`webSearchSourcesOf`)。
456
+ - 新门 `scripts/run-mcp-config-entry-shape-test.mjs`(**§129 ME-1**;CC-984;232 格):A 公面与型(两口在根入口、`mcpTransportVerdict` 在公面基线、`McpConfigDropReason` 恰十一词〔d.ts 语法树读〕、两新词与名判四词不相交、入参与返回型不写 `unknown` / `any`)· B 条目不是对象(`null` / `undefined` / 串 / 空串 / 数 / `NaN` / 布尔 / 大整数 / 符号 / 函数 / 数组各形 × 表内首中末三位 ⇒ 不抛、该台恰一行 `entry_not_object`、其余台照投且 `specs` 与「没有这一台」的表逐字节同;单条出口 `null`;多台坏条目按输入序;名判在前;`__proto__` 自有键;披露句两语 / 宿主标签抛也不崩)· C 条目读不出(已撤销代理、传输以外四键的取值器抛、整表上某一位的取值器抛 ⇒ `entry_unreadable`、取值器恰读一次;传输一侧结局先于读不出〔含 url 坏形与身份头同设并存〕;全陷阱代理不抛;`env` / `headers` / `args` 里嵌套已撤销代理不抛;引擎判官端口的抛不被吞;整表入参本身读不出仍抛)· D 合法表零漂移(金样 = 已发布 0.100.0 产物对同一张表的整份输出,逐字节同;表里穿插坏条目后其余输出仍同)· E transport-only 口(22 形与整表口同源、传输以外五键成功读也各只读一次、非传输键取值器全抛也答 `ok`、读到的键只在传输键集且各至多一次、非对象 / 读不出 ⇒ `bad` 不抛、入参冻结也照判、独立生成池 3000 例三处同答)· F 单源(源码语法树:判官端口只在 `transportOf` 里调用,两口各调它一次,两口函数体里没有非传输键 / 名判 / 整表口标识符)· N 门内负控三枚。登记:门清单 +1 · README「Guards」表 +1 · 负控记录表 +1(行为套)· 公面基线 +1(`mcpTransportVerdict`;1971 → 1972)。
457
+ - 扩门 `scripts/run-inherit-env-wire-test.mjs`(**§129 IE-2**;CC-985;101 → 125 格,夹具与 0.100.0 基线产物都在场):新段 IE —— IE0b 两句互异 · IE1 点名别的字段(settings.hooks 预算 / 帽 / 别的顶层键 / `detail.field` / `problems[].field`)× 两种抛出物形(普通对象 / 真 sdk 实例)⇒ `null` · IE2 点名 `inheritEnv`(顶层 / `detail.field` / `problems[].field` / 并集)⇒ `{ code, field }` · IE3 没有机读位(拒体真形一种 + 十二种坏形)⇒ `{ code }` · IE4 请求不带 `"all"` ⇒ 一律 `null` · IE5 / IE5b / IE5c 机读位读法(自有访问器 / 原型链 / 敌意或已撤销代理逐处隔离、取值器零执行;`problems` 读上限 1000 条的下标边界与 2^32-1 长稀疏数组不挂死)· IE6 外层码限定 · IE7 – IE7e 句子(英文肯定句金样、条件句与 0.100.0 同、按不可信读、卫生禁表、中文两句)· IE8 – IE8d 读口不上根入口 / 读序 / 去重 / 异形入参 · IE9 与 0.100.0 的读数对拍(360 条:冻结参照逐行抄 0.100.0 读法,差异集恰是「点名别的字段」14 条与「点名 `inheritEnv`」10 条)· IE9b / IE9c 参照与条件句对已发 0.100.0 产物校验(读 `SEMA_DU_BASELINE_TGZ`,基线早于 0.100.0 或缺席 ⇒ `SKIPPED-SECTION`)。
458
+ - 扩门 `scripts/run-turn-failure-presentation-test.mjs`(**§129 IE-2**;CC-985;264 → 271 格,夹具在场):TN 段后新增 IE-T0 – IE-T4 —— 补句链读数:机读位点名了别的字段 × 请求带 `"all"` ⇒ notes 里没有 inheritEnv 句(英 / 中;且与不给 / 给 scrub 的 `sentRequest` 逐条同读数),`settings.hooks` 预算拒原形 ⇒ notes 为空数组 · 点名 `inheritEnv` ⇒ 恰肯定句一句(`sentRequest` 缺席或只发 scrub ⇒ 整句缺席)· 无机读位 ⇒ 恰条件句一句 · 两句即消息目录两键。
459
+ - 扩门 `scripts/run-agents-wire-directory-test.mjs`(**§129 TK-5**;CC-979):新段 TK5a – TK5i —— 六种名册形(缺席两形 / 读不出两形 / 到位无同名 / 到位空名册)× deny 里的 `Task` 一律改写成 `Agent`、读数行带 `rewritten`、恰一句改写告警;改写后的载荷各代真判官都受理、原样 `Task` 在拒的一代判官上整跑拒(判别力);名册里有 `Task`(行名 / 别名)⇒ 原样 / 零告警 / 读数缺席;名册缺席与空名册逐字节同;混合单里三只有现名的改写、无现名 / 内容形 / 现名 / 协议名原样、allow 臂不动;allow 臂 × 八种名册形原样;两臂同判官格(15 个整名:代理臂 `disallowedTools` ≡ 权限臂 deny 桶逐名同答,尺子自证池里改写 / 不改写各 ≥ 3 条);取舍格(名册缺席 / 读不出 `bash` → `Bash`、名册读得成且含 `bash` 原样);括号形 / 内容形 / 括号前空白恒原样;TK6c‴ / TK6c⁗ 翻面。`scripts/run-server-7122-pick-test.mjs` T5 / T7 改口(deny 侧退役名改写并告一句)。负控:名册缺席原样投 ⇒ TK5a / TK5d / TK5e / TK5g / TK6c‴ 红(变异清单见 `scripts/gates-manifest.json` 该门 negctl 格)。
460
+
461
+ - 新门 `scripts/run-scenario-skills-projection-test.mjs`(**§129 SK-2**;CC-583 ②;51 格 + 夹具腿 / 服务端源腿 / 包字节腿):A 公面与源码形(入参窄形不写 `unknown`、条目型恰三键、读口模块无版本解析 / `whenToUse` / 文字扫描 / `fetch`)· B 卡形读口(真卡形逐条读回保序且恰三键 / 缺席十八形 ⇒ `undefined` 绝不 `[]` / 坏条目十六形夹在好条目之间只丢自己 / `source` 表外与非串 ⇒ `unknown-source` 且不丢 / 逐字节不 trim 不去重 / 不带第四键 / 不刮 `<skills>` 文字 / 不改入参 / 千条大数组)· C 能力位读器五态逐形 + 位只作证据 · F 服务端 7.135.0 字节见证(夹具腿、服务端源腿、`SEMA_CC_SERVER_PACK_7135` 包字节腿 —— 把包里真函数 `scenarioSkillEntries` 的真输出喂读口读回逐条等同;未设 ⇒ `SKIPPED-SECTION`)· A8 类型层(装着的 sdk `ScenarioDetail` 喂得进读口)· B11 / B12(原型链下标 setter、巨大长度)· N 十六只手造坏实现各自变红。
462
+ - 新门 `scripts/run-mcp-allow-tools-fail-closed-test.mjs`(**§129 MC-2**;CC-977;33 格):L 本地腿(stdio / http × 非数组七形 / 含非串五形 / 稀疏两形 / 读不出三形 ⇒ 这一台不起 + 披露行点名键路径不回显值;合形三态 / 缺席 / 显式 `undefined` / 副本 / 恰读一次 / 序 / 不受理传输静默跳过 / 披露句 en·zh)· C 云配置腿同批 + 通告句 · S 两腿同判 · V 判官直调 · K 词表与消息目录六键 · N 八只手造坏实现各自变红;另跑一遍修前产物门红在 L1 起。
463
+ - 扩门 `scripts/run-additive-key-passthrough-test.mjs`(**§129 MC-2**)G7m1 / G7m2 改读:`allowTools: []` 在场且为空数组(判过的副本,不再要求同一引用);非数组(串 / `null` / 对象)⇒ 这一台不起(`null` spec),不再断言「键不铸」。扩门 `scripts/run-cloud-mcp-dropped-notice-test.mjs` M6a:`CloudMcpDropReason` 九词 → 十词(+`allow-tools-invalid`)。
464
+ - 公面基线 `public-export-baseline.json` +3(1975 → 1978:`scenarioSkillsOf` · `observedScenarioSkillsCapability` · `mcpAllowToolsVerdict`);`scripts/registry.json` 可移植性棘轮 `portability.index` 384 → 385(新叶 `src/scenarioSkills.ts`,append-only 账 +1 条);`scripts/gates-manifest.json` +2 条登记(README 与负控表由生成器派生);消息目录 +7 键(`config.mcp.allowTools*` / `config.mcp.cloudAllowToolsInvalid`,en / zh)与术语表 +2。
465
+ - 改钉 `scripts/run-refusal-machine-reads-test.mjs`(RF2x-0 / RF2x-6 / RF2x-7)与 `scripts/run-submit-refusal-projection-test.mjs`(P 段 P1 – P5):**§129 LG-1**;三桶窄读口退出根入口后,原「三桶读口是泛化读数的派生窄视图」两格改钉泛化读口本身(`field` / `reason` / 数位逐位读出、`too_long` 与桶外 `field` 照读),原三桶读口的 P 段各格(新提交超帽 / 坏项 / 桶不是数组 / `index` 0 / 续跑折叠 `folded` / 同码表外理由 ⇒ `null` / 不按文案匹配 / 坏形数字降缺席 / 敌意取值器不抛)原样迁到泛化读口上;「桶外 `field` ⇒ `null`」一格随读法变宽改成「桶外 `field` 泛化口照读」。
466
+ - 登记物门读数(§129 LG-1):`run-retirement-ledger-test.mjs`(RL-180 在已退役栏、名字账 H 段判名不在;RL-179 / RL-184 / RL-185 retireBy 0.102.0 且 ruling 追加)· `run-layering-shadow-export-test.mjs`(豁免表 20 → 39 行:−12 +31,命中 cli 37 = 登记 37,11 行常量同值比走差分格 `value-equality`)· `run-export-liveness-test.mjs`(0.101.0 退役账 +1)· `run-public-surface-test.mjs`(公面基线 1980 → 1979)。
467
+ - 发布前核对的门格(**§129 FV-1 – FV-8**;红先绿后,改前读数取上一提交的产物):`run-thrown-data-reads-test` OW3 棘轮 61 → 0(禁令;尺子扩到 `"value" in` 与 `'get' in` / `'set' in`)+ OW9 – OW12(放行依据 / 目标版本位 × `Object.prototype.value` 植入;源码钉)+ SR1 – SR3(外层码一次读取);`run-print-result-arm-test` PA12a – PA12f(子流身份三键 × 段末帧 / 流式正文 / 聚合正文 + 停驻;子流夹在主线程中间;源码钉);`run-turn-failure-presentation-test` TW6 – TW8(成因链取值器前后答不同的层 ⇒ 句 / 码 / 重试同出一层;呈现零走读);`run-transport-cause-chain-test` CH8a – CH8j(包了一层的 `statusCode` 501 / 503 · HTTP 状态域七形 · 顶层域外数 · 状态位在场却不是数 ⇒ 阻断 · 链上那一层状态读不出 × 顶层名字像中止 ⇒ 阻断 · 源码:分诊零自带越层条件)+ CH1b(决断桥与修前的分歧按类计数:状态位在场却不是数 / 域外的数 / 只有旧槽 `statusCode` 三类各 > 0、类外 0)+ CH5b / CH5g / CH7f 改钉为「一只读口」;`run-hitl-decision-send-test` DS-W9 – DS-W13;`run-skill-tool-lists-projection-test` C5 / C6;`run-approval-decided-by-capability-test` AB10;`run-engine-cap-reader-factory-test` F10d – F10f(读锚取值器抛 × 每只工厂读器 / 根入口全部 `observed*`;源码:读锚只有一种取法);`run-approval-frame-families-declaration-test` B6a – B6e。
468
+ - 发布前核对的第二批门格(**§129 FW-1 – FW-6**;红先绿后,改前读数取上一提交的产物):`run-host-turn-settings-test` FW1a – FW1k;`run-client-core-singleton-test` 枚举器认 `Object.assign` / `Object.create` / `Object.fromEntries` 铸出的模块级对象、模块级 `new RegExp(…)` 与非字面量的派生数组(最外层是 `map` / `filter` / `flat` / `flatMap`、`Object.keys` / `values` / `entries`、`Array.from` / `of` 的调用;串上同名的 `slice` / `concat` 与最外层 `.join` 不认)(清单 +12:码读不出那一态的冻结单例复位,能力回体快照的外来原型、审批帧族空片段与连接器状态 `unknown` 读数表补登记,构造出的模块级正则五只补登记〔两只带 `g`,只用于 `replace` / `matchAll`,无 `lastIndex` 态〕,派生数组三只补登记〔宿主自供顶层键 / `settings` 子键两只冻结,连接文字名一只未冻结、零写点〕;自检语料 +5;门头注写明口径:`Object.*` 只认这几只前缀);`run-print-result-arm-test` PA13a – PA13k(PA13h 空增量之后迟到的段末帧归上一条、带行归属;PA13i 纯空白增量照旧关窗、不改写也不认领上一条那几行〔断言按行 uuid 显式核写回位与归属位,负控样本必红、真跑一形证写回位过投影〕、纯空白消息隔轮末才到的段末帧不归上一条;PA13j 押着窗口时空增量与没有那一帧逐字同答;PA13k 工具卡之后才到的上一段段末帧〔无车道产出此序,KL-1091〕现读数钉、可达的同轮两段序零误报;PA13g 切片补交互车道分组重建账本那一支,计数恰等);`run-hitl-decision-send-test` DS-FW3 / DS-FW3b / DS-FW4 / DS-FW4b / DS-FW4c / DS-FW4d / DS-FW5 / DS-FW6 / DS-FW7 / DS-FW7b / DS-FW7c / DS-FW8 / DS-FW9 / DS-FW10 / DS-FW10b / DS-FW11 / DS-FW12(活卡腿安全停包装带安全停码)/ DS-FW12b(别种本地码包装照引擎答复铸,对象形与可调用形同发数)/ DS-FW12d(绑定不符包装的答复层深 1 / 2 / 3 层 ⇒ 活卡带安全停码、拒收读数三深度逐字同、两腿各 1 发;深一层的 400 `settled_by_not_in_proof` ⇒ 两腿都不去键重发、各 1 发、活卡带安全停码)/ DS-FW12c(阶梯按唯一的 `cause` 读法认层:直接抛带归因键的 400 `settled_by_not_in_proof` / `decided_by_not_in_proof` ⇒ 去键重发恰一次;绑定不符安全停形〔包装套 / 包装自带 / 包装套自带 400 的同名内层〕⇒ 发送机审批族 / 流内问族 / 活卡三条腿都不去键重发、各 1 发;宿主自造同名包装、读数说的那一层不是 `cause` ⇒ 不重发);`run-refusal-machine-reads-test` RF4-8 生成池加「卡口先中止调用方信号」一维(8 960 形)+ RF4-8b + RF4-13 + RF4-14 + RF4-15(状态二读不同值 ⇒ 三处同为首读值)+ RF4-16(读数没有一层答 ⇒ 状态不回落现读,码取那一次读数、「是否已决」据此判;码也是读后才出现 ⇒ 未决);`run-transport-cause-chain-test` CH5h(答了的那一层与码一只铸口、名义型:字面量与展开再覆盖都造不出、`as` 断言零处,投递段零 `Proxy`;名义型不担保 `Object.assign` / 泛型展开助手 / 尖括号断言 / JSON 往返 / `structuredClone` 五类绕法)+ CH5i(「没有一层答」那一形同律:一只铸口、名义型、分诊恰一处登记、两只铸口同一只码读法)+ CH5j(品牌型在三种语法上下文〔带注解的初值 / 返回值 / 读数记录的捕获位〕只来自铸口与读、零断言,伪造语料十一形逐形红;参数位等没有语法锚的上下文型待 checker 门格 CC-1026)+ CH5k(走读口层判:只有「谁答了」读口在顶层与顶层 `cause` 那一格认函数层;重发 / 超时 / 传输判不被函数层放宽;公面 turn 呈现 `turnFailurePresentation` 与传输判 `isWireTransportError` 各一格:函数形顶层 / 函数形 `cause` 带状态按答复层判、带瞬断码与更深的函数形层照旧传输失败);`run-decision-refusal-standing-test` HJ-FN2 / HJ-FN2b / HJ-FN3(可调用的安全停包装逐读口同答;含绑定不符包装套带 409 的同名内层)/ HJ-Y1 / HJ-Y1b(状态二读不同值 / 读数没有一层答 ⇒ 分类与收口按那一次读数,「是否已决」与公面直读同答)/ HJ-Y1c – HJ-Y1f(没有一层答 + 读后才出现的 409 `conflict.ask_decided` ⇒ 仍未决;状态位读抛 ⇒ 读不出;码被剥掉 / 留码丢状态的重建形经投递段 ⇒ 四口与公面直读同答;读数说的是宿主自造同名安全停包装那一层 ⇒ 读不出、不借 `cause` 的码)/ HJ-Y1g(`name` 在几次读之间换答案 ⇒ 读数自洽、顶层翻成同名安全停包装也不借 `cause` 判已决)/ HJ-Y1h(`Object.prototype.status` / `.wire` / `.errorCode` / `.blockedBy` 被植入 ⇒ 活卡与发送机读数不出判决、不说已决、不带编出来的码)/ HJ-Y1i(本包绑定不符包装经投递段、本地码之后换值 ⇒ 绝不铸零字节 `not_sent`;对象形 / 可调用形 / 成因链深处 / 包装套同名内层,活卡与发送机)/ HJ-Y1j(409 分码与 `protocolName` 自洽)/ HJ-Y1k(投递之后才冒出来的自有 `code: 'no_pending'` ⇒ 不说已决;分诊内部首读缺席、后读 `no_pending` ⇒ 未决、`code` 恰读 1 次;答复层状态读不出时同)/ HJ-Y1m(`Object.prototype` 被植入投递段 / 分诊读数记录、投递账、失败铸口入参袋、拒收读数与拒体指路键上 present-iff 的位〔十六种〕⇒ 活卡 / 发送机 / 铸点直收读数与未植入逐位同;停驻结局投影〔发送机结局 / 活卡停驻读数 / 上屏句〕× `Object.prototype.retryAfterMs` 数据位 / 取值器 ⇒ 与未植入同、体上该位读描述符就抛 ⇒ 与不带同;收口判官的 `transient` / `conflict` × 原型链数据位 / 取值器 ⇒ 与未植入同答、自有访问器 / 读描述符就抛 ⇒ 读不出、不收口)/ HJ-Y1n(带投递段读数时,之后才长出结局联合形的载体按读数判)/ HJ-FN3c(顶层绑定不符包装的安全停码优先在共用拒收铸口:答复层是带 409 的同名包装〔四种本地码 × 两种码 × 内层带 / 不带 `cause`〕、答复层隔 0 – 2 层普通包装说已决、深 1 层 410 `gone.ask` ⇒ 活卡 ≡ 发送机 `not_applied{refused}` ≡ 铸点直收 `refused-pending` / 未决 / 各 1 发,深 1 层与套娃形与公面七读口同答,上抛的答复层自带 `cause` 时照读它自己;流内问族发送机同形 ⇒ `not_applied{refused}`、不宣告别处已决,三种来源的绑定不符安全停先于 425 停驻轮询、1 发;首发传输失败 → 二发绑定不符形说不在待决〔404 / 410;包装套 / 包装自带〕⇒ 发送机审批族 `unconfirmed{gone_after_retry}`、活卡拒收读数与收 `afterRetry` 的附带分类口 `ambiguous`,流内问族照旧 `not_applied{refused}`;读数带包装位而当前这一只不是答复层 ⇒ 有效载体读数不借安全停码)/ HJ-FN3d(零字节缺席证明:`cause` 槽 / 状态槽读不出、在场〔原始值 `cause` / 自有 `undefined` / `null` / 域外的数〕、继承位〔`Object.prototype.cause` 数据位 / 取值器〕、`has` 陷阱抛、自有 `cause` 取值器〔三种答案;直交 / 投递段 / 活卡三处都不执行〕、代理两陷阱答不一致 ⇒ 直交 / 投递段 / 活卡都不铸 `not_sent`,投递段 ≡ 直交;直交与投递段 `cause` / `status` / `statusCode` 三槽各只读一次,两次读答不同的描述符 ⇒ 直交 ≡ 投递段逐位同;投递段判成传输失败〔原话命中网络词〕/ 投递段重发过〔不同错误接力、同一只错误跨重试复用〕⇒ 投递段 / 活卡不铸、直交照旧;不带 `cause`、没有状态的本地码包装三处照旧 `not_sent`)/ HJ-FN3b(可调用的安全停包装经投递段与对象形逐字同、发数同、绝不 `not_sent`;绑定不符包装 + 函数形 `cause` 1 发;本地码包装不带 `cause` ⇒ `not_sent`、带不答的 `cause` / 带状态 / 状态读不出 ⇒ 不铸 `not_sent`;绑定不符包装套带 409 的同名包装 ⇒ 顶层安全停码优先;答口经本包决断桥本地拦下 ⇒ `not_sent{safety_stop, binding_missing}`、零发;`Object.prototype.retryAfterMs` 被植入 ⇒ 停驻照旧零重投) / HJ-Y1l(`Object.prototype.code = 'no_pending'` 被植入 ⇒ 没有自有 `code` 的失败〔对象形 / 可调用形 / 自拼同名安全停包装〕读数的本地码缺席,活卡不铸零字节 `not_sent`、不答已决,发送机不落别处已决);FW-4 逐读口一格(函数形与对象形同答,该读口退回「只认对象」即红):`run-transport-cause-chain-test` CH9a / CH9b、`run-wire-refusal-copy-test` S5j、`run-turn-failure-presentation-test` TN-FN、`run-resume-retry-later-test` ②y、`run-decide-receipt-test` J1、`run-decision-refusal-standing-test` HJ-FN;`run-thrown-data-reads-test` AE 段(尺子自证 + AE1 全仓外来体读数落数组的 `push` / 下标赋值 = 0 + AE2 – AE4 / AE6 原型链下标 setter 行为格 + AE5 八个文件整文件禁令 + AE7 插件 hooks 判定 × 换命令 setter)+ OW3b / OW3c(描述符 `?.value` 直读禁令与行为格);`run-engine-cap-reader-factory-test` F10f 尺子扩到按会话键的形 + F10g;`run-transport-cause-chain-test` 语料加两种层(域外的数 / 只有旧槽 `statusCode`),CH1b 由「只一类」改为按类计数(三类各 > 0、类外 0),CH2b 加 D 类;`run-client-core-pure-test` F3E-cc698q 冻结对拍改为按类计数(串形 status ⇒ 阻断 · 域外的数含 NaN ⇒ 不发言,两类各 > 0、类外 0);`run-approval-card-reading-projection-test` F6b / F6c(自有访问器被代理 `has` 陷阱藏起 ⇒ 帧腿 / v1 卡 `risk` 照记读不出登记;`has` 答假而读描述符就抛 ⇒ 帧腿 / v1 / 通用卡都登记);`run-turn-failure-presentation-test` TW6 的「前后答不同的层」改由代理的取值陷阱造(自有访问器今天不执行)+ TW6b(顶层 `cause` 是自有访问器 ⇒ 取值器不执行、不越层);`run-transport-cause-chain-test` CH8j 改钉(自有访问器 ⇒ 0 次、数据位 ⇒ 一次判决恰一次);`run-decision-refusal-standing-test` HJ-FN3e(包装头 `code` 首答 `binding_mismatch`、之后答 `no_pending` ⇒ 直交与投递段都按首读;顶层自己答了 / 状态读不出时改写 `code` 的 `cause` 取值器不执行、安全停码不丢;深层答复直交 ≡ 投递段;耐久拒腿自带 400 的绑定不符安全停形去键 / 换名两种都 1 发;包装头 `code` 首答本地码、之后答瞬断码 ⇒ 直交 ≡ 投递段、`code` 各读 1 次;耐久拒腿阶梯让位读过的包装头交给失败铸口 ⇒ `code` 之后换答案也不丢安全停码、`code` 读 1 次);单例清单 +1(`CAUSE_SLOT_UNREADABLE`,顶层 `cause` 槽读不出那一态的冻结读数)。
469
+ - 扩门 `scripts/run-package-hygiene-test.mjs`(出包文档向前执法一形):接入文档 §129 起、CHANGELOG 0.101.0 段起,条目号形 `[RA]-<数字>` 与 `K-R<数字>` 零命中(自检正反样本双向;负控 +1 枚:往 §129 植一枚条目号形 ⇒ 门红且点名这一形)。
470
+ ### Known limits(本版新增)
471
+
472
+ - KL-1091 / KL-1092(本版新增,见 `docs/KNOWN-LIMITS.md`;§129 FW-2 / FW-3):1091 一轮之内「正文 A → 工具卡 → A 的段末帧 → 正文 B」这一序在停驻终局下 `result` 把 A 粘在 B 前、交互车道误报一次 —— 今天没有车道产出此序(引擎在流内执行工具的开关默认关、服务端零接线),只钉现读数;1092 顶层 409 在分诊之后才「变成」同名安全停包装的抛出物,以及稳定的同名顶层包装自带状态又带 `cause`(普通对象即可),活卡读作 `unsettled{no_answer}`(「是否已决」读不出)、发送机读作 `not_applied{refused, 409}`,两条腿成因词不一(都闭合失败)。
473
+ - KL-1093 / KL-1094 / KL-1095(本版新增,见 `docs/KNOWN-LIMITS.md`):1093 宿主的代理陷阱被本包多观察一次(`cause` 槽缺席证明第三问 / 仿形 `name` 描述符观察,两形;§129 FW-3 余项,返回值不进判决、只多读一次)· 1094 包子代载荷读口 `taskAgentsField()` / `awaitTaskAgentsWire` 不按请求绑定(同拍两只等待者读到最新一代;既有 CC-161 性质,wire 无请求句柄)· 1095 下一代见证位 sdk 26.1.0 对本包 src 编译 6 条诊断(`eventToSdkMessage.ts` 穷尽分支对 26.x 新帧 `cross_boundary_taint` / `approval_complete` / `session_titled` 未处理;开发依赖 sdk 24.0.0 与支持底线零诊断;随 0.103.0 一次重锚提货 CC-1044 / CC-1045 收,peer `>=23.1.0` 不加上界)。
474
+ - KL-874 – KL-878(CC-939,§129 HS-3 / HS-2 / HS-5):会话状态「至多提交一次」由宿主以存储修订号原子提交保证(包给一致性判据;KL-874)· 版本指纹非加密、唯一性是概率意义(KL-875)· 工作量预算:一次读 25 万 / 会话状态 100 万单位(KL-876)· allow 历史按逻辑来源 × 规则串(KL-877)· 座位车道在座位 chrome 臂到货前交一次性面身份(KL-878)。
475
+ - KL-895(**本版新增并于同版收口**;实测查出的既有形,`projectMcpConfigs` 条目形诚实面〔§129 ME-1〕已把 `startupTimeoutMs` 改为入口各读一次,取值器 / 代理陷阱抛只记那一台 `entry_unreadable`;本行只作 0.101.0 披露史,不再是开口):本地腿 `specOf` 读 `startupTimeoutMs` 不在受保护读里 —— 宿主交进来的配置对象上该键的取值器 / 代理陷阱抛 ⇒ `projectMcpConfigs` / `mcpConfigToSpec` 整张投影抛(含只为披露才走该函数的坏形条目)。`.mcp.json` 的 JSON 形上不会发生;修法要给「这一键读不出」定披露词与型面加员,不属本版。
476
+ - KL-804(**本版已收口**,已知限制删行):http hook 两张名单本包最初只读托管层文档里写的 —— 用户 / flag / 项目 / 本地层写的名单对交给引擎的请求体不生效。收口:设置契约 14.3.0 把信任阶梯词表做成纯常量后,层准入判官的构建期抄本抄得动,本包改读全部准入层(用户层 / flag 层读、项目层 / 本地层在地板之下不读,多层取交;§129 HP-2),终端壳里的后置筛整臂可退(§129y ③)。
477
+ - KL-737 改句(托管策略读数端口只交三词的那一行):CC-601 本版落地的是名单读数本体(包读托管文档里的两张 http hook 名单),**没有**扩端口词 —— 托管层读坏而壳仍沿用上次名单时,包把发给引擎的 hooks 整条关掉(比壳严,不放宽)、壳本端执行器照沿用名单发,两条腿处置不一的差异原样在;升级判据改为「出现该差异的用户可见报案」或「壳交得出三维读数的座位到位」。
478
+ - 新门 `scripts/run-release-evidence-test.mjs`(**§129 EV-1**;CC-908;负控套一枚):每版发布机读门证据的自证门,八段 —— A 解析器(发现数只认数字紧挨结论词的口径,解析不出 `null` 不编 0,散文里的 `12 checks were skipped` / `1e3 checks` / `-2 checks` 不取;跳段名单收 `SKIPPED-SECTION` 行,含非行首形)· B 结局映射(超缓冲 / 超时〔退码 0 也算〕/ 信号 / exit 0 · 3 · 其它)· C 判官伪造矩阵(合成件,干净件零问题为正控,七十余形各自必红且点名问题码:exit 与 status 不一致 · runner 收尾码与逐门读数矛盾〔失败门被改成通过〕· 缺门 / 多门 / 重名 / 类别不对 · 单门 `checks` 或总计被改 · `null` 编成 0 · `minChecks` 被调低 · 发现数自洽下滑低于上一发布版写下的下限 · 契约 / 键集 / 身份 / 夹具块混入白名单外键 · `integrity` 形 · 数组或对象经 `String()` 强转成合法形 · 半填 · 脏树却已发布 · `treeDiff` 含源码或越出允许名单 · 非 0.100.0 的件自称 v0)· D git 四问(合成仓:`testedCommit` 不是 `gitHead` 的祖先 / tag 不是其直接后继〔含阶段二分两个提交〕/ 发布后一步夹带源码改动而 `treeDiff` 没声明 / 冻结账门脚本在表外有改动,各自红;`git replace` 蒙不过〔调用口剥 `GIT_*` 并加 `--no-replace-objects`,不设防的裸 git 作对照被蒙过〕;浅克隆里的否定答案与提交对象缺席 ⇒ 诚实跳段不红;git 异常退出 ⇒ 抛,环境故障不折成判词)· E 补位工具(换回 `null` 后逐字节等于补位前;拒填过的件 / 脏树件 / v0 / 坏值 / 越名单的 `treeDiff` / 少旗标 / 拼错旗标,拒时文件字节不变)· F 写口端到端(runner 与库拷进合成树,八道假门:通过 / 部分跳段 / 无可解析尾行 / SKIP / 失败 / 超时 / 只写 stderr 的跳段 / 棘轮违例,逐门对读数;令牌类环境变量既不进夹具块也不在文件任何位置;带不带 `--evidence` runner 的退出码与收尾对账行不变;棘轮红是唯一的红时件里 `runner.exit` 为 1 且 `runner.skipRatchet` 非空;`--file` 真的打开并判那份件)· G 源码钉(记读数在第一个分支之前、证据文件只用 `wx` 写、写证据在最终退出之前、白名单变量表无令牌类名、库里只有一处拼 git 命令)· H 落盘件(`release-evidence/` 下每份过判官;本版件不在 ⇒ 诚实跳段;v0 只核字段形 + exit/status 一致 + 总计重算;本版 v1 件另与清单名单 / 类别对账并对上一发布 v1 件的 `minChecks`)。`node scripts/run-release-evidence-test.mjs --file <path>` 只判一份件(本版件口径),给刚由 `--evidence` 写出、还没放进 `release-evidence/` 的件用。负控:已发版件第一道门的 `exit` 改成 1 而 `status` 仍写 pass ⇒ 本门红并点名问题码。
479
+ - 扩门 `scripts/run-gate-negative-controls-test.mjs`(**§129 EV-1**):CASES +1(`release-evidence-exit-status`),自动化负控 36 → 37;README「Guards」表与负控记录三张表由清单重新生成(清单 327 → 328 条)。
480
+ - KL-805(CC-982 改口):包 ≤ 0.100.0(0.101.0 起仅在宿主没交合格能力读数的那一发)在服务端 ≥ 7.134.0 上遇到需要审批的调用**不会出任何审批卡**(服务端勘误 [11236] 的三形:有 checkpoint 店 ⇒ run 停驻等决定、流上只有停驻终局;无 checkpoint 店 ⇒ 受门工具当场拒、run 照常收尾并点名缺的族;两形都不回落旧族、不双发)—— 该版起流式审批通道只对在请求里声明认得审批帧族(`settings.approvalFrameFamilies`)的宿主开启;**本包 0.101.0 起装配口据宿主交的能力读数铸声明键**(读数据能力位 `taskSettings.approvalFrameFamilies`;宿主按这一发的引擎地址取读数,不交 ⇒ 不铸;§129 AF-1 / FB-1;7.134.0 的 `GET /v1/capabilities` 新增;顶层同名位 7.133.0 就有、不是触发位,按它带键在 7.133.x 整体 400 `request.body_shape`),本条对 ≤ 0.100.0 的包恒成立,对 0.101.0 在宿主没交读数、或交的读数不合格(探测还没落地 / 读不出 / 回体坏形)时成立,先 `await engineCapsSettled(baseUrl)` 再取读数、再装配(键型随 sdk 26.0.0〔server 7.134.0 锁步〕到货,本包今天值级读,换钉另票;帖 [11193] / [11236])。升级序:先升本包到 ≥ 0.101.0、再升服务端 7.134.0,或同拍。另一腿(转述服务端 7.133.0 发布帖 [11170] §4.3 第 2 条,本包未实测):服务端 7.133.0 × 本版及更早的包,审批呈卡腿只发新帧族而本包不做按能力位的分派,遇审批会等到审批窗口过期;该升级序句要求消费方先具备分派,或相应 worker 设 `STREAM_APPROVAL_ENABLED=false`。另一腿随 CC-837 其余件到货删;第一腿在三端支持的本包最低版本 ≥ 0.101.0 之后的下一个本包版本删。
481
+
482
+ - 新门 `scripts/run-print-result-arm-test.mjs`(**§129 PR-2**;CC-924;44 格):`printResultArmOf` 判型表 + `_sema_limit` —— 上限族五码 × 末行十七种(臂恒由上限表定、不看末行)· 负控「撞上限留半截仍翻 `success`」· 八种终局 × 末行十七种走同一条末行出身规则 · completed · 读不出 ⇒ 结局不明臂(十七种坏形不抛、绝不 `success`;末行坏形只落「其它」)· `stop_reason` 必填 + 与 agent-types 两臂类型镜像逐位同(TypeScript 程序判)· 结果帧 `_sema_limit` present-iff、与判型表同源逐码相等(墙钟与 token 同 subtype 不同成因词)· 读口坏形 · 单铸点 + 旧两张分表退役 + 超集登记。
483
+ - 新门 `scripts/run-result-way-out-test.mjs`(**§129 PR-3**;CC-925;36 格):`_sema_wayOut` —— 出路词表十五格(词 + 来路)· 两车道同答(结果帧出路词 = 合成 API 错误行经 RT-4 句口读出的词,含 `apiFailure.status` 只在结果上的终局)· 十五种无出路形键不在 · 读口(表外词也铸键 ⇒ 红;坏形十八种不抛)· 句口(四词中英、带 / 不带来路、来路过展示出口)· 覆盖面四面(stream-json / json / text stdout / stderr 端点行)同词同句 · 只透传 · 单铸点 + 出路词类型取自 RT-4 读口 + 超集登记。
484
+ - 新语料 `scripts/_catalog-corpus/cc925.mjs` + 金样 `scripts/catalog-migration-golden/cc925.json`(**§129 PR-3**;catalog-routing 门,新增句口无迁前基线、摘要取自实现):`wayOutSentence` 登记为出句口(CR11),四词 + 带来路 / 别的词带来路 / 表外词 / 缺席 × 英 / 中的路由三格。
485
+ - 扩门 `scripts/run-retry-status-notice-test.mjs`(**§129 PR-3**;CC-925):S2 `retryStatus` 叶子的运行期导出名由恰八只改恰十只(+`resultWayOutOf` · `wayOutSentence`;其余 130 格一格不动)。
486
+ - 公面基线 `public-export-baseline.json` +4(1834 → 1838:`printResultArmOf` · `resultLimitOf` · `resultWayOutOf` · `wayOutSentence`);超集登记 `docs/type-superset.json` +2(`_sema_limit` · `_sema_wayOut`);模块级常量登 `docs/refactor/p1-scan/singleton-manifest.json`(+9 条,−2 条〔旧 `COST_EXCEEDED_CODES` / `TURNS_EXCEEDED_CODES` 退役〕)。🔴 新代码全部住在适配内核闭包 / 公面闭包的既有文件里(上限表 → `engineErrorCodes.ts`、出路词判官与铸点 → `providerRejection.ts`、判型与 `_sema_limit` 读口 → `terminalToSdkResult.ts`、`_sema_wayOut` 读口与句口 → `retryStatus.ts`),**可移植性棘轮不抬**(内核闭包 43 / 公面闭包 348 文件不变);RT-4 出路规则抽成共用函数(`apiErrorNotice` / `retryStatusNotice` 在 34 个状态码 × 10 个判词的格上输出与 0.100.0 逐字节同)。
487
+ - KL-860 – KL-863(本版新增,§129 UC-2 / UC-1):KL-860 结局读面 `leaderConflict` 端侧零消费但服务端 leader 资源未退役(退役点由服务端定,双方表态后整件删)· KL-861 压缩边界帧 `compact_metadata.trigger` 开集透传引擎词(值域超集、CC 读者读数不变)· KL-862 跨会话同事消息显示名取对端自述名、不经引擎保留名拒收口 · KL-863 审批卡不点名写入的最终落点(符号链接 / canonical 目标)。KL-591 补句:停驻「问答 / 工具」两臂先读引擎卡词(§129 UC-5),卡词缺席的存量载体仍退名字读法(RL-251)。
488
+ - KL-810(**§129 XA-5**;CC-553 前向余项):姿态车道按面放行读开发钉那一代引擎的表;比开发钉更新的一代若把某一可放类改成命令面也免疫,下一次提货换钉之前本包仍答可放(放宽方向)。升级判据:上游在卡上带「本类本代可放」事实位,或观测到一例对端收紧而本包未跟。
489
+ - KL-850:`ruleReadingsOf` 的条目读数与编译读数是宿主**装进来的那一代引擎**的读数(`installCoreValuePorts`),附着的引擎若是另一代,读数可能与附着引擎的真结局不同(两代文法可以不同:例如工具名文法 7.52.0 起收紧、`near_miss` 只在新一代条目读者上读得出);本包不做远端试编译(服务端无该读口)、也不据读数拒写。规则页应把它标成诊断。
490
+ - KL-851:设计稿 §②-5 列的 `anchor`(路径形规则相对哪一位基址)/ `auto_stripped`(auto 模式剔除)/ `shadowed_by`(写保护与优先序遮蔽)/ `generation`(拼法代际)/ `voided_by_wildcard` 本版不出:前四项的引擎读口不在包根或要多装一件值级端口(第 21 件,型面 BREAKING 一次),`voided_by_wildcard` 没有可读的对象(包的 `voids_allow_list` 臂把肇事 `*` 留在请求体外,别的 allow 行没有被读空);`compile` 读数已答「这台环境判不判得了这条路径规则」的实质。
491
+ - KL-852:`ruleNearMissSentence` 只在交了工具名册、且引擎条目读者读出 `near_miss` 时才出句 ⇒ 会话第一回合(名册来自上一回合的装配清单)读不到近似名,也读不到引擎本身不判的轻微拼写错(`Bsh`);包不自带大小写表去补(第二判官)。
492
+ - KL-820(新增):毒帧两振里「同一位置第二次」按最后一帧好帧的账本锚判,不按坏帧自己的 id;`raise` 的原文只在宿主自己拿得到帧原文时才有 —— 上游读口抛的帧体解析失败错误不带帧 id / 原文。升级判据:上游在该错上带帧 id / 原文 ⇒ 本行删。
493
+ - KL-821(新增):「错配之后历史已被接受」位是进程内会话账(重启后第一只被接受的终局不报),且只在 `runStream` 铸的结果帧上有。失效方向 = 少报(预选多留一次,用户可自行取消)。
494
+ - KL-822(新增):终止意图台账里「每笔写之前那一行」与「被拒」标记各只记最近 1024 笔;千笔之外才到达的拒绝可能把更老的证据当前态复位 —— 常态 0 – 2 行的台账上不是可达形。
495
+ - KL-840 – KL-849(本版新增,见 `docs/KNOWN-LIMITS.md`):840 单词凭据只认已知字面形(XF-6)· 841 健康位排空读口与契约读口两处差别(XF-9)· 842 bare × 仅托管 hook 双开结论仍保守(XF-12)· 843 `session` 在信任序里的位置(XF-7)· 844 压缩 hook 转移口口形待终端对口(XF-13)· 845 端口镜像未从引擎型派生、宽度台账钉漂移(XF-17)· 846 补充句角色只声明了二十只(XF-14)· 847 分车道句子只做设计稿点名的三处(XF-14)· 848 命令名册钉 CC 2.1.187(XF-15)· 849 『旗在场无值』的归类交给宿主 commander(XF-8)。
496
+ - KL-870 – KL-872(本版新增,见 `docs/KNOWN-LIMITS.md`;§129 IE-1 / PE-1):870 `settingsCredentialKeyPaths` 对串值里内嵌的 YAML 块只认已知字面形(「标签 + 低熵值」的块明文也不命中,编码形同答)· 871 值臂位为 `false` 不说是哪一个凭据值没进值臂、成因词三档同一句 · 872 冒号后空白被编码(`%20` / 表单编码的 `+`)的块出相邻两枚记号(零外溢)。编码块的层数边界沿用 KL-749(解码至多三层)。
497
+ - KL-938(本版新增,§129 PM-1,见 `docs/KNOWN-LIMITS.md`):不见位直给装配口入参 `projectMemory` 的宿主,在服务端受理这一键(7.135.0)之前会整条 400(不是被忽略),自担;经能力位读器 + 见位才发的片段口取值的宿主由服务端的恒真能力位守住。读器是值级读(sdk 型面待带上这一位)。
498
+ - KL-880(本版新增,见 `docs/KNOWN-LIMITS.md`;§129 DR-1):「没救」位 `unrecoverable` 只进了决断拒收读数与卡面句,没有接进收口车道的那一句 —— 无人在场、决断被拒且读回仍待决时,收口判官照旧收口、收口句仍是通用三句之一(尾句让人「更新客户端 / 改在交互会话里答」),不说这张卡引擎复活不了(推断:收口车道的编排归宿主,本包未对真引擎实跑)。位已在分类读数上可读,宿主可自选措辞;升级判据:收口车道宿主报「收口句误导人」。
499
+ - KL-890(本版新增,§129 NS-1,见 `docs/KNOWN-LIMITS.md`):放开集合恰是服务端位的探针所列三形 —— 工具段里别的 glob(`mcp__srv__*_user` / `mcp__srv__get_*_x` / `mcp__srv__g*t`)引擎其实也读成一组、写口也收,但位没说到它们,本包照扣(`wildcard`);位是布尔(sdk 24 的能力回体型还没有这一位,值级读)。升级判据:服务端把「工具段任意 glob」写进位的契约,或 sdk 型面带上位并说明射程。
500
+ - KL-905 – KL-908(本版新增,见 `docs/KNOWN-LIMITS.md`;§129 SK-3):① 云配置腿的两张技能清单要宿主交能力位读数才过境(选项缺席 = 宿主没接这一位,与本地腿同律、与 0.100.0 逐字节同):没交读数的宿主,中心写进 manifest 的名单照旧到不了请求面;升级判据:终端交读数位之后再评「选项缺席是否改为默认判」。② 设置契约读腿对带坏元素的 `disallowedTools` 逐元素抢救(截短、技能照装,告警在 `effectiveWarnings` 里逐条点名),本包不据告警丢条 —— 告警路径的下标与 manifest 下标是否同一坐标系本包不能确认(服务端按授权收窄 manifest 时下标可能移位),不猜;升级判据:服务端或设置契约在告警里带上技能名,或把这一类告警做成硬停信号。③ 外来数组(自写代理)把 `length` 报成合法的较小整数时,判官无从分辨、清单被截短照上(本地腿 0.95.0 起既有;只来自宿主进程内手造对象;KL-907)。④ 能力位在判官入口逐条各判一次(0.100.0 本地腿循环前判一次):读数是包的读口交出的冻结对象时同答,宿主自造的可变读数各条按当时的读数判(KL-908)。
501
+ - KL-900 – KL-902(本版新增,见 `docs/KNOWN-LIMITS.md`;§129 WS-1):900 搜索来源读口的 `url` / `title` 是呈前形(第三方地址的每个 query 值都遮、userinfo / fragment 换记号),不是跳转目标 · 901 `droppedCount` 随数组对象走,展开 / 序列化往返即失 · 902 读口只认 `tool_end` 载体(帧 / 内部臂)上的 `structured`,只存了转录信封 `tool_use_result` 的宿主读不到来源。
502
+ - KL-1031(本版新增,见 `docs/KNOWN-LIMITS.md`;§129 PR-2):停驻终局 ∧ 本流末行是模型正文 ⇒ 结果帧走成功臂、`result` 是那段正文,本包铸的 `-p` 停驻出路句只在过渡键 `errors[0]` 上(CC 成功臂没有 `errors`,0.102.0 删)。可达性窄:引擎对停驻调用先铸 `tool_start` / `tool_end`,末行通常是工具行(那一形照旧走错误臂)。0.102.0 删 `errors` 之前定落点。
503
+
52
504
  ## 0.100.0(2026-10-20)
53
505
 
54
506
  > 主题:开发依赖换钉引擎 `^7.53.0` / 设置契约 `^14.1.0` 与 sdk `^24.0.0` 换钉、生成表重生成(peer 地板与支持底线不动,sdk 24.0.0 与 23.1.0 两份都编译)—— 通告码册 95 → 96 与受众 / 铸方两张表同步各 +1;请求面 MCP 条目判官(设置契约 14 起从服务端搬进契约包)的构建期抄本与问类规范序表登记进生成器(不上根入口;读者随后续行接上)。接入文档 **§128 PK-1 – PK-2 / GN-1 – GN-4**。