@sema-agent/client-core 0.85.2 → 0.86.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 (57) hide show
  1. package/CHANGELOG.md +208 -0
  2. package/README.md +20 -13
  3. package/dist/adapt/arms.js +5 -1
  4. package/dist/adapter/downstream/terminalToSdkResult.d.ts +3 -3
  5. package/dist/agentSession/backgroundView.js +7 -1
  6. package/dist/agentSession/contract.d.ts +1 -1
  7. package/dist/centerWiringCapability.d.ts +38 -0
  8. package/dist/centerWiringCapability.js +202 -0
  9. package/dist/decideFailureNote.js +3 -0
  10. package/dist/engineCapReader.d.ts +8 -0
  11. package/dist/engineCapReader.js +15 -0
  12. package/dist/engineErrorCodes.d.ts +3 -0
  13. package/dist/engineErrorCodes.js +8 -0
  14. package/dist/engineNoticeCodes.d.ts +62 -0
  15. package/dist/engineNoticeCodes.js +247 -29
  16. package/dist/executionLaneCapability.d.ts +6 -0
  17. package/dist/executionLaneCapability.js +55 -2
  18. package/dist/fleet/fleetProjection.js +6 -8
  19. package/dist/fleet/workflowSizeWarning.js +2 -5
  20. package/dist/gateOutcome.d.ts +13 -0
  21. package/dist/gateOutcome.js +48 -1
  22. package/dist/gateVocabulary.d.ts +6 -3
  23. package/dist/gateVocabulary.js +7 -15
  24. package/dist/generated/engineFactTables.d.ts +10 -0
  25. package/dist/generated/engineFactTables.js +113 -0
  26. package/dist/generated/engineNoticeTables.js +14 -0
  27. package/dist/hitl/refusedToolNameProse.d.ts +4 -0
  28. package/dist/hitl/refusedToolNameProse.js +7 -0
  29. package/dist/hitl/sessionPolicyDeliverable.js +9 -5
  30. package/dist/hitl/sessionPolicyWire.d.ts +16 -0
  31. package/dist/hitl/sessionPolicyWire.js +49 -1
  32. package/dist/index.d.ts +5 -1
  33. package/dist/index.js +5 -1
  34. package/dist/inheritEnvWire.d.ts +22 -0
  35. package/dist/inheritEnvWire.js +84 -0
  36. package/dist/peerFrames.js +2 -10
  37. package/dist/printInitToolFace.d.ts +6 -0
  38. package/dist/printInitToolFace.js +115 -2
  39. package/dist/readCredentialRefusal.d.ts +2 -0
  40. package/dist/readCredentialRefusal.js +7 -0
  41. package/dist/request/taskRequest.d.ts +4 -5
  42. package/dist/request/taskRequest.js +33 -23
  43. package/dist/runTerminal.js +2 -6
  44. package/dist/sqlEngineCapability.js +15 -2
  45. package/dist/storePostureCapability.d.ts +25 -0
  46. package/dist/storePostureCapability.js +132 -0
  47. package/dist/toolResult.js +2 -47
  48. package/dist/wireErrorTriage.d.ts +1 -0
  49. package/dist/wireErrorTriage.js +3 -0
  50. package/dist/wireFailureShape.d.ts +3 -0
  51. package/dist/wireFailureShape.js +44 -0
  52. package/dist/wireRefusalCopy.d.ts +39 -1
  53. package/dist/wireRefusalCopy.js +350 -2
  54. package/dist/workflowClient.d.ts +4 -0
  55. package/dist/workflowClient.js +12 -4
  56. package/docs/INTEGRATION-CLIENTS.md +716 -14
  57. package/package.json +2 -2
@@ -19,11 +19,11 @@
19
19
 
20
20
  | 项 | 值 | 真源 |
21
21
  |---|---|---|
22
- | 本包 | `@sema-agent/client-core` **0.85.2**(本批发布版 = **patch**:自愈重开两只失败结局带 `errorCode`(这一次重开放弃所依据的那一发失败请求的外层 wire 码,present-iff;判定形不带),重开判决不成功臂 +`_sema_errorCode`(宿主可选铸;宿主重开口抛错时本包铸)(CC-260);自愈腿读错误对象与成功应答记录上的各位收进保护(读不出按缺席,不再 reject;`atMostOnceFailureClass` / `readSteerDelivery` / `readSteerReceiptStatus` 不再抛);根公面 1310 不变;公面类型名不变(两个已导出型各多可选位);超集键 +1;peer sdk 地板 `>=12.0.1` 不动;§111)。上一版 0.85.1 = **patch**:请求装配回执省略成因的终端用户向句表 `TASK_REQUEST_OMISSION_CAUSE_NOTICES` 与取句口 `taskRequestOmissionCauseNotice`(与接入方那只 `taskRequestOmissionCauseDetail` 同源于同一成因闭集、逐词不同句;表外 / 读不出 ⇒ 一句通用句,不抛、不回显),接入方那张句表的字面量补挂 `satisfies`(CC-248);plan-review 重开口在「这个会话没有接能显示卡的界面」那一形上答 `{ reopened: false, _sema_noPresentationSurface: true }`,自愈结局两臂带 `noPresentationSurface`、自愈行五句补一句成因,重开前提(宿主为该会话键订阅问题帧端口)成文(CC-258);自愈腿读宿主重开判决收进保护(某一位读不出按缺席,不再 reject),宿主日志 / 探针口抛错不再改变判决;多会话宿主的按会话呈现回执登记口 `registerArmedGateFromQuestionIdFor` 回到根入口(0.72.0 退出公面的名字复活;CC-259);根公面 1307 → 1310;公面类型名不变(两个已导出型各多可选位);超集键 +1;peer sdk 地板 `>=12.0.1` 不动;§110)。上一版 0.85.0 = **minor**:引擎事实表(通告码册 / 受众表 / MCP 注入丢弃原因 / 会话规则翻译判定内部两表)改为构建期生成,`ASK_ORIGIN_WORDS` / `APPROVAL_MANDATE_WORDS` 就是 SDK 导出的数组(不再冻结),四个思考档 / 权限模式型改为 SDK 型的别名,包内单源(CC-230);子代族八入口与两只行停止门收注入 client,写动词失败结局 +`unconfirmed`,`classifySubagentResumeFailure` 同判(CC-236);`sessionPolicyDeliverable` 收可选名册,`SessionPolicyWithheldWhy` 六词 → 七词(CC-228);过渡物退役登记与到期门,`adapt()` 不再认旧名 `attachedFiles`,三个运行期名字退出根入口(逐名见 §2z),`surfaceRememberNotApplied` 撤回退役预告(CC-221);plan-review 决断台账六口,`reopenPlanReviewCard` 按台账拒开(CC-241);会话后台任务停止口 `stopEngineSessionBackground` 与受据归类口 `engineSessionBackgroundReceiptReadingOf`(CC-246);服务端 7.104.0 会话侧:会话存档读不出三载体读口与人话 `corruptSessionContent`、`session.records_skipped` 进册(`SERVER_NOTICE_AUDIENCE` 三行)、删会话 409 读口、`/decide` 停驻挪动族读口(CC-217 / CC-243);服务端 7.104.0 能力 / 同步体侧:同步 park 新体与 park 行 `result`、`fileHistoryCaptureMode` 认 `on-optional` 与请求词片段口 `fileHistoryDeclarationField`、公钥发现读口 `projectSealedKeyCapability`、折叠粗码 `isStatusDerivedCoarseCode`(CC-243);同名影子对账门按语义判(CC-222);导出存活门读已提交历史(CC-240);根公面 1275 → 1307;测试钩 59 → 60;公面类型 +34;peer sdk 地板 `>=12.0.1` 不动;§109)。上一版 0.84.1 = **patch**:`<system-reminder>` 开标签定位口 `findSystemReminderOpenTag`(CC-210);detach durable-off 400 纯判定 `isDetachDurableOff400`,`detachDurableOffHint` 对读属性会抛的错误对象改回 `null`(CC-219);服务端自铸通告码进码册与受众表 `SERVER_NOTICE_AUDIENCE`(`instructions.source_changed` 回到用户面)+ 事实读器 `readInstructionsSourceChanged`(CC-213);按码派发的通告事实口 `readEngineNoticeFacts` + 派发表 `ENGINE_NOTICE_FACT_READERS`,`readReadRootGrantNotice` 入参型放宽(CC-214);停泊审批决断 422 `parked_resume.startup_failed` 的读口 / 一句话 / 判定与码优先 `isCodeClassifiedGateFailure`(CC-225);拒启会话的窄撤销动词 `removeRefusedSessionRules` 与出路句 `legacyToolNameFailureNoteOf`,`CONFIG_REFUSAL_CODES` 七员 → 八员(CC-229);plan-review 编排三口与两只能力探针收注入 client(CC-209);CC 形 `permission_denials` 收入参只被传输层脱敏过的拒绝 + 超集位 `_sema_tool_input_redacted`(CC-235);凭据读法两处放行收口(CC-234);根公面 1260 → 1275;公面类型 +18;peer sdk 地板 `>=12.0.1` 不动;§108)。上一版 0.84.0 = **minor**:peer sdk 地板 `>=11.3.0` → `>=12.0.1`;后台代理登记读数 —— 读口 / 取代判定 / 归类口 / 登记键桥 / 补行谓词,缺席行下半场(CC-194);读目录授权结论通告读口 `readReadRootGrantNotice`(CC-185);接线回执 `hands` 段 `_sema_hands` + 读口 `handsSeamReadingOf` / `handsSeamDetail`,`handsMountedDetail` 坏入参不再抛(CC-206);陈旧逻辑清扫(CC-223):退役键 `rewind.rewindFiles` 构造期拒收、`WorkflowRunState.agentCount` 改可选、26 个内部件退出根入口、九张公面判定表换只读 Set 子类、十五张判定数组冻结、`resume_at` 文本兼容腿退役;根公面 1278 → 1260;公面类型 +10;§107)。上一版 0.83.6 = **patch**:会话规则记录的无损判定 `sessionPolicyDeliverable` 把引擎会在准备阶段拒启的两类名字(引擎退役名、含 `__` 而不以协议前缀开头的名字)改判「不写」,成因词 `legacy_tool_name`(闭集 5 → 6),引擎说「改名为 X」的退役名带 `currentName` 出路位;`peer_wide` 那句改措辞(判决不变)(CC-226);根公面 1278 不变;peer sdk 地板 `>=11.3.0` 不动;§106)。上一版 0.83.5 = **patch**:展示层出口 `displayUntrusted` 的连接符 ZWJ / ZWNJ 按语境判(🔴 默认形输出字节变)、两只可选开关 `escapeBackslashes` / `blanks` 与标记位置读口 `displayUntrustedMarks`(CC-204);凭据两网的判别视图认孤代理项,机读字节 `errors[]` / 合成终局行同批(CC-207);转义记号在凭据再扫里原子与四处凭据读法存量修复(相对 0.83.4 零新增外泄);hooks 启动模式可选词读口 `SettingsPort.hooksStartupMode()`,安全 / bare 模式下设置来源只发 managed(CC-200),设置来源里同一条 hook 只发一份(CC-208);自愈三条重发结局 +1 可选位 `releaseConfirmedByEngine`、行句按释放证据分说(CC-212);活段接入指引订正;公面类型 +3;peer sdk 地板 `>=11.3.0` 不动;根公面 1278;§105)。上一版 0.83.4 = **patch**:只增 —— plan 审批卡「用户亲手关掉的卡,自动触发不在同一道门上放回屏上」的判定归包(`reopenPlanReviewCard` 加触发者位 `trigger`、拒开位 `dismissedByUser`,409 自愈腿按提交出身替宿主传触发者、结局与整行由包出;CC-201);座位审批请求补强制位 / 强制理由词 / 报价缺席因由 / 出身词四个可选位与过境口 `toolPermissionRequestAskBits`(CC-203);`<system-reminder>` 剥离 / 解包两只口上公面并改线性时间(CC-205);两条展示层接入指引订正;开发依赖引擎 `~7.33.1`;公面类型 +2;peer sdk 地板 `>=11.3.0` 不动;根公面 1277;§104)。上一版 0.83.3 = **patch**:入参 / 来源面 —— hooks 投影加 flag 来源(`--settings` 那一层,排在 local 之后;设置来源 hooks 维持托管在前拼接);规则列举口 `listAllPersistedRules` 入参只要 `list`(`RulesListFacade`,其余四口作可选成员);模型身份认目录缺省(本机读数加宿主报位 `engineAcceptsCatalogDefault`,位 `true` 才算目录可解析);公面类型 +1;peer sdk 地板 `>=11.3.0` 不动;根公面 1273;§103)。上一版 0.83.2 = **patch**:只增 —— 审批卡一族三件(常驻姿态下的放行谓词 `askSurvivesPosture`,三态、「不知道」不折成放行;卡上 `mandate` 六词闭集 + 读口 + 每词一句说明,通告码册 +2,开发依赖引擎 `~7.32.0`;停泊卡带出身词 `origin`;CC-193 / CC-195 / CC-196)与后台子代缺席行的判定、计数、sweep 豁免、回收与措辞单源(回收只在后台代理登记确认离场时;CC-194);公面类型 +13;peer sdk 地板 `>=11.3.0` 不动;根公面 1273;§102)。上一版 0.83.1 = **patch**:只增 + 行为订正 —— 展示层安全出口三端单源 `displayUntrusted`(凭据两网 ∘ 字符三网,选项按载体选;CC-112);本包合成的终局行正文与结果帧 `errors[]` 在铸点洗凭据(`errors[]` wire 可见,方向只会更安全)、交互车道合成行带上行类旗,回决备注与子代续跑收据多收双向 / 格式字符(CC-187 / CC-112);会话规则记录的无损判定 `sessionPolicyDeliverable` + 措辞单源 `sessionPolicyWithheldNotice` + 五词成因 `SESSION_POLICY_WITHHELD_WHY`(整批可送才送,首尾带空白的名字比宿主侧更严;CC-117);插件 hook 每轮计划 `hooksWirePlan` + `SettingsPort` 可选读口 `enabledPluginHooks` + `hooksForWire({ plan })`,逐条判「投给引擎 / 本客户端执行 / 如实不跑」、开机「不会执行」清单与 `/hooks` 标注措辞单源(投给引擎那一臂候引擎能力位 `taskSettings.pluginHooks`),设置来源的 `mcp_tool` 与 exec 形 hook 条目不再上请求体、手写的 `plugin` 键剥掉(CC-174);公面类型 +26;peer sdk 地板 `>=11.3.0` 不动;根公面 1254;§101)。上一版 0.83.0 = **minor**:行为面与型面都有 BREAKING —— CC 形消息 24 项按裁定 C-R103 退役名:结果帧 `degraded` / `errorCode` / `model` 与错误信封 `result` → `_sema_model_degraded` / `_sema_error_code` / `_sema_selected_model` / `_sema_salvaged_result`,合成终局行 `isApiErrorMessage` → `_sema_api_error_message`,工具结果记录删过渡名 `toolUseResult`,system 行 `attachedFiles` → `_sema_attached_files`、到达时戳 `timestamp` 与 `isMeta` 删,print 完成通知帧十三键平铺 `_sema_*`,记忆写入改走 chrome 臂 `memory_saved`(新型 `MemorySavedChromeEvent`,`CHROME_ARMS` required);本包只铸新名、端两名并读一版 + 结果帧 CC 键 `terminal_reason` 与读口 `terminalReasonForResult`(CC-175),错误信封知道就铸 `_sema_selected_model` + 转录 id 改 UUID 形(CC-147)+ `SettingsPort` 可选合并读口 `mergedDisableAllHooks`、用户层 `disableAllHooks` 在引擎腿上生效(CC-162)+ 退化审批卡三形拒收改写、`FsApprovalOutcome` 的 `failed` 臂 +可选位 `editRefused`(CC-135)+ 注入件自愈句整族重写 + 联网搜索旧三读口 `webSearchFromEnv` / `webSearchFromSettings` / `resolveWebSearch` 退出公面,`resolveLiveInitToolFace` 可选 `opts.webSearchStamped`(`LiveInitToolFaceOptions`),endpoint userinfo 律跟服务端 7.101.0(CC-184)+ 公面类型 −4(CC-171)+ 通告码册 69 → 71 与结构化卡白名单 +`read-inbox`(CC-186,开发依赖引擎 `~7.31.0`)+ 合成终局行 `uuid` 改 UUID 形;peer sdk 地板 `>=11.3.0` 不动;根公面 1238;§100)。上一版 0.82.7 = **patch**:只增不改 —— 每请求联网搜索配置的三态判决 `judgeWebSearchSettings` / `webSearchVerdictFromEnv` / `resolveWebSearchVerdict`(与 7.100.0 及以后 server 的受理判官同序同判,认不出的 provider 判形错、不再静默丢段;settings 段凭据注入回调 `apiKeyFor`)+ 措辞单源 `webSearchVerdictMessage`(不回显任何用户配的值)+ 调试日志用 `webSearchEndpointForDisplay`;旧三读口 `webSearchFromEnv` / `webSearchFromSettings` / `resolveWebSearch` 行为不变、标过渡期,0.83.0 删(CC-182);peer sdk 地板 `>=11.3.0` 不动;根公面 1240;§99)。上一版 0.82.6 = **patch**:只增不改 —— 停泊行上选「本会话允许」却没被记住时与活卡腿同句告知(回体 `rememberApplied: false`,或 server 以会话级放行专属拒绝码拒了 remember 后回退普通批准;其余失败一律未知不告知),回执 `DecideReceiptView` +1 可选位 `rememberApplied`(CC-181);决断落定后与桥重试臂的诊断留痕不再因宿主日志口抛错回流进决断;接入文档改口:server ≥7.100.0 上 park 行卡的 `requiresRealApproval` / `approvalIsMandated` 生效(CC-180,零代码改动);peer sdk 地板 `>=11.3.0` 不动;根公面 1235;§98)。上一版 0.82.5 = **patch**:只增不改 —— print 车道 init 帧工具面名册优先:流包装器 `withPrintInitFrame`(首选接法,init 恒为首行、其后按到达序)/ 判定闸 `createPrintInitGate` / 分类口 `printInitRosterSignal` / 判定口 `decidePrintInitToolFace` / 留痕措辞 `printInitToolFaceDebugLine` + 等待上界 `PRINT_INIT_ROSTER_WAIT_MS`(150 000);回落估计表补 `ListAgents`(7.30.0 及以后的引擎上与 `SendMessage` 同条件)(CC-169);peer sdk 地板 `>=11.3.0` 不动;根公面 1235;§97)。上一版 0.82.4 = **patch**:只增不改 —— park 行审批卡新增门类位 `irreversibleParkGate`(待决行门类恰为 irreversible_ask,今天即生效,门类事实不是保证);`requiresRealApproval` 在待决行顶层带时透传(就绪,待决列表带出后才生效,今天零行为变化)(CC-180);`ApprovalCardRequest` +1 可选位;peer sdk 地板 `>=11.3.0` 不动;根公面 1229;§96)。上一版 0.82.3 = **patch**:只增不改的公面 —— 自愈提示的「保住对话」出路槽 `keepSessionWayOut` 与交互面引擎决断入口开关 `engineDecidePath`(CC-177;两位都不给时措辞与 0.82.2 逐字节同);自愈结局两臂 +机读位 `pendingRowGone`(重开链证实待决项已不在);peer sdk 地板 `>=11.3.0` 不动;根公面 1229;§95)。上一版 0.82.2 = **patch**:只增不改的公面 + 若干行为订正 —— 新增措辞单源 `cloudEffectiveNotices`:云控制面有效配置回体的降级告警 / 预算 / 能力上限三读数(CC-164,四态,不读成 0 或「没有预算」);本机引擎 models 文档在宿主注入本机条目判定 `entryAccepted` 时补 `default` / `tierGroups` / `activeTierGroup`,剔掉会让本机整份拒收的目录引用与判定口不收的条目,去掉 registry 注记键 `origin` / `overridesTeam`(CC-165;结果新增 `modelRefIssues`);计划复核结局机读位 `_sema_planReviewOutcome`(CC-160 ①);停泊审批决断操作起止回调 `onDecideOperation` 与操作句柄 `openDecideOperation`(CC-160 ③);新增超集键 `_sema_planReviewOutcome`;peer sdk 地板 `>=11.3.0` 不动;根公面 1229;§94)。上一版 0.82.1 = **patch**:只增不改的公面 + 若干行为订正 —— 新增读口 15 个(续跑折叠码读口与措辞 / 文件历史捕获读口六口 / 模型身份可解析判据五口 / 自定义代理载荷作废重投口 / 决断失败码「门还在」判定)+ 宿主车道声明 `EmitContext.lane`;新增超集键 `_sema_response_model`(终帧 / 每轮用量)与 chrome 用量两臂 `responseModel`、重开判决 `_sema_decisionInFlight`、自愈结局两臂 `decisionInFlight`、内部臂 `_sema_denial_unclassified`、通知码 +1;行为订正:计划复核决断在飞不重开卡且自愈提示不再教人再决一次(CC-160 ②)、决断出口补折叠句且停泊腿不再把折叠 / 坏档误判已决(CC-154)、执行车道 `in-process` 措辞(CC-153)、`-p` 车道 Bash 良性退出与交互同判(CC-168)、`-p` 工具结果帧补结构化结果(CC-149)、被拒分类词两车道同判(CC-172)、非交互车道子代工具帧(CC-158,宿主声明车道才生效)、终帧被拒清单对账流内拒绝(CC-159)、自定义代理载荷作废重投(CC-161);peer sdk 地板 `>=11.3.0` 不动;根公面 1228;§93)。上一版 0.82.0 = **minor**:只增不改 —— 新增只读读口 17 个 + 1 常量、工具名册行一格 `mountedBy`、turn 错误判决 `http` 臂一格 `storedRowWhere`:`/rewind` 代码档与对话档能不能用由引擎能力位回答(CC-146)、云控制面额度读数三分(CC-150)、装配期「这一条腿有没有手」(CC-152)、续跑拒收按原码判(CC-154);两处既有面行为订正:自动模式分类器拒的类别词由 `permission-rule` 改为 `automode-*` 三词(CC-155,订正 0.81.1)、续跑上下文读不出时引擎点名的那一行不再丢(CC-156);0.81.0 预告的 23 键 + 1 子型删改**改到 0.83.0**(§92y ㉙);零 wire 键、零投影臂;peer sdk 地板 `>=11.3.0` 不动;§92。上一版 0.81.1 = **patch**:被拒分类词读器加第③路(CC-148):引擎「没问过就拒」的工具调用(deny 规则 / 权限模式 / hook / 分类器 / 写保护 —— 无 `settlement` 只有 `gate.disposition.deniedBy`)在 user 工具结果记录与终帧 `permission_denials[]` 上此前恒缺 `_sema_denial_kind` / `toolDenialKind`,现按层名落 `permission-rule`(其中「分类器」一项已由 0.82.0 CC-155 订正)(`ask_resolution` 无结算 / 结算段不成形 / 层名表外仍缺席不猜);交互与 `--print` 两条车道同一只读器;另钉终帧两臂 `_sema_effective_*` 键集不变量 —— 成功臂展开单铸函数、错误信封显式重发,覆盖性钉在返回对象自己的类型上(漏键 / 多键编译期即红)+ 门格判两臂键集相等且值逐字节同,给单铸函数加键时错误臂不会再静默少键(本版无键增减);零 wire 键、零投影臂、根公面 1195;§91。上一版 0.81.0 = **minor**:CC 形消息一张脸(C-R85 / CC-131):user 工具结果记录加 SDK 面键 `tool_use_result`(与过渡键 `toolUseResult` 同引用,删驼峰原定 0.82.0、已改到 0.83.0)+ DS-19 普查门升硬门(键集按语法解析、按 type/subtype 分表;23 键 + 1 子型过渡表到期窗原为 0.82.0、已改到 0.83.0,零常驻豁免)+ CC-145 `/rewind` both 臂改发 `restoreFiles:true`、`projectRewind(pending)` 单参;零 wire 键、零投影臂、根公面 1195;§90。上一版 0.80.2 = **patch**:`conflict.resume_context_unavailable` 的 `staleAfterSec` / `runId` 在真 SDK 上读不到(CC-137:sdk 11.1.0 起 `APIError` 把体上非具名键收进 `extra`,这一码映射成 `ConflictError` 无具名位,读口只读顶层 ⇒ 真调用链恒缺席)⇒ 体源结构位改「顶层有效值优先、`extra` 兜底」三只类型化读口单铸,有具名子类位的三处(`retryAfterSec` × 2 / `allowlist`)行为不变只多兜底,头源 `retryAfterMs` 只读具名位;零 wire 键、零投影臂、根公面 1195;§89。上一版 0.80.1 = **patch**:去键重发判据句按「铸」计(CC-143;§87「带键的体恰一次」作废 → 被铸恰一次,POST 几次随传输层)+ 接入文档段落自带射程限定词自 §88 起向前执法 + 模型预设表 deepseek 项改闭集真名 deepseek-flash(CC-144,C-R82 ①)+ 门里 git 兜底自陈探针(CC-142);零 wire 键、零投影臂、根公面 1195;§88。上一版 0.80.0 = **minor**:🔴 peer sdk 地板 >=11.2.1 → >=11.3.0 + 策略拒的归因上 wire(CC-133:发送面 deny+policy 带 settledBy / 读侧 policy_refused 十三词入 CC 规则桶 / 三错误码读口 / 直连门去键重发恰一次)+ 删除规则后果句归包(CC-132)+ /mcp 详情卡两腿分说归包(CC-134:六档读口 + 九句铸点,同批改口八处说满的话)+ 🔴 终帧旧拼法 `structuredOutput` 按 0.79.1 的宣告删除(只剩 CC 形 `structured_output`);根公面 1195;§87。上一版 0.79.1 = **patch**:终帧结构化产出同帧铸 CC 形 `structured_output`(旧拼法 `structuredOutput` 过渡一版,0.80.0 删;CC-130)+ 写审批 `argsOmitted` 退化卡在无受护写入部署形上重新解得出路径(CC-129)+ 云控制面十值二型经本包第二个入口 `@sema-agent/client-core/registry` 原样转口(根入口零变;CC-128 ①);根公面 1184;§86。上一版 0.79.0 = **minor**:server 7.93.0 过境批 —— peer sdk 地板 >=11.2.1 + 写口回执第六臂 unverified 与 503 体 committed 分臂(CC-124)+ 无 run 可读的 MCP 状态面(CC-74)+ 审批卡 mandated 位(CC-110)+ 请求装配第三车道 utility 与 approverPosture / maxTokens / outputRetries 三键 + print 车道 model 座(CC-116 / 118 / 123)+ 拒因两面分铸与四个机读位(CC-125)+ 模型轮边界划消息界(CC-126)+ 委派结果人类面读口按来源声明体内定位(CC-127)+ sdk 转口三件(CC-128)+ 通告码 memory.project_scope_absent(CC-122);公面 1184;§85。上一版 0.78.2 = **patch**:门的棘轮登记数字单真源 —— 五只门十一格棘轮 + 218 条沿革账搬进 scripts/registry.json、门只读不抄、负控改篡改登记物、下调通道 RATCHET-SLACK、新门 run-registry-test(CC-79 第一期)+ 两格存量松量收掉 + submit-wiring-manifest 门补 count===1 边界格;src 零改动,dist 逐字节同 0.78.1;公面 1154;§84。上一版 0.78.1 = **patch**:两辆并行车收货 + 三张跟进票 —— displayBody 人类面读口 + 围栏解析头尾配对收紧(CC-113)/ MCP 两处「没报」措辞分句(CC-115)/ 记忆治理面五动词调用口(CC-97 b)/ 非流式提交回执接线回执读口 readSubmitWiringManifest(CC-121)/ 三份失败判官抛出物读取收口(CC-119);公面 1154;§83。上一版 0.78.0 = **minor**:peer sdk 地板 >=9.8.1 → >=11.0.1(CC-106)+ 单步写口 200 体按 stillLive 判别联合改读、第五臂 revoked、三型取自 sdk、RulesFacade.write 必填、PersistedRuleLiveness 转口(CC-103)+ DeniedBy 第十词 read_boundary 专句(CC-106 ④)+ excludeAllTools 车道行;型面 BREAKING 三处、行为面同 0.77.2;公面 1143;§82。上一版 0.77.2 = **patch**:出包面结构卫生 —— 构建期 removeComments,dist js / d.ts 零注释(新门 run-dist-comments-test.mjs + 卫生门词表 32 条 + 文档向前执法;CC-100)+ gateDeniedByDetail 表外词兜底句改「本版不认识这个层名」(CC-111 ①);行为 / 型面逐字节同 0.77.1;公面 1143;§81。上一版 0.77.1 = **patch**:外部验收三件回填 —— 读器族边界残留 projectMcpReconnectCapability 只认自有键(CC-107)/ rewind 四子键恰读一次(CC-108)/ 子代输出合并按回体 output.type · retrieval_status 定处置(CC-109,server ≥7.92.0 cursorSemantics 缺席面);型面 additive 一处;公面 1143;§80。上一版 0.77.0 = **minor**:请求装配逐键去向回执 + print 车道补座 + 表外键响亮拒(CC-101,四条行为 BREAKING)/ 会话策略写端口(CC-105)/ 持久规则单步写面(CC-103)/ workflow 子代面板行代际三向恢复(CC-104,零改码)/ 能力位读器族口径整族改齐 + 外部验收 F-A / F-B 处置 + 合并树异源复审两轮处置;公面 1143;§79。上一版 0.76.2 = **patch**:制品卫生 —— 清 dist 重 build 去掉两只已撤出源码的编译产物 + dist ⇄ src 对账门;零源码 / 零型面 / 零行为改动;公面 1122;§78。上一版 0.76.1 = **patch**:能力位读器工厂(CC-75)/ MCP 活性观察读口(CC-36)/ `capabilities.peerLane` · `permissionRulesWrite` 四态读口(CC-102)/ 记忆治理面两只读口 + 三只条目面回体读口(CC-97 a)/ 主车道证明逐次新建(CC-99)+ 修 0.76.0 的 F1 / F2(身份四键一次性快照只修了投影口一侧);公面 1122;§77。上一版 0.76.0 = **minor**:六票一批 —— `prompt_assembled` 投影臂 / 审批 feed 三态(**型面 BREAKING**)/ `ApprovalResolution` 单源联合 / 记忆 spec 读口 / 终态词表上游钉 / `tasks_expand` 退役(**型面 BREAKING**),外加身份四键一次性快照(跨全部内部臂);公面 1081;§76。上一版 0.75.1 = **patch**:面板短命子代反序缓行放不出的残洞(外部复验 D1)+ 同代 running 帧三向定形(B4)+ #969 提货 `spawnName` 透传与 `agentType` 改读诚实来源(CC-95);§75。上一版 0.75.0 = **minor**:压缩的非 compacted 结局上 chrome 面 `compaction_outcome`(新内部臂 —— 自建 print 出口的端先表态)+ peer sdk 地板 `>=9.8.1`;型面 additive(ChromeEvent +1 臂)、公面 1065、零 wire 新键;§74。上一版 0.74.5 = **patch**:core 7.24.0 提货 `_sema_freed_tokens?` + 首见即终态的行零事件(幽灵完成行)+ `isNewEngineAgentPanelCycle` / `approvalOutcomeNoteOf` 上公面;型面 additive、公面 1065、peer 不动;§73。上一版 0.74.4 = **patch**:面板键「先发布的键为准」(tick 归不了一的三序不再两行)+ 前代 UUID 迟到 tick 丢弃 + `readRunCancelContext` 下钻收紧;型面 additive、公面 1061、peer 不动;§72。上一版 0.74.3 = **patch**:面板子代身份归一(tick / end 的 UUID 归到 fleet 尾段,宿主零改)+ run 记录 `cancelContext` 读口与成因四词 + workflow 行 `errorCode` + reopen 第二臂两件;型面纯 additive、公面 1061、peer 不动;§71。上一版 0.74.2 = **patch**:`capabilities.deviceExecutor.management` 四态读口(缺席 ≠ false;`deviceExecutor: false` = 车道缺席;管理动词可用性三态归包);公面 1052;§70。上一版 0.74.1 = **patch**:审批卡无决断收口 + 结局回交;§69。上一版 0.74.0 = **minor**:peer sdk 地板 >=9.7.1 + covers 过境 + 面板周期身份 + 离场读口;§68。上一版 0.73.5 = **patch**:workflow 规模告警判定上收进包(`evaluateWorkflowSize` 三态:未知的规模不当作规模正常;分母口径与帽优先级单源;env 读口纯函数);型面纯 additive、公面 1044、peer 不动;§67。上一版 0.73.4 = **patch**:终帧 `permission_denials` 第三键 ⇐ 同一条流 `tool_start` 入参按 `toolCallId` join(三道闸;join 不上留 sema 载体;🔴 更正 0.73.2「自动升级收口」一句)+ 审批 feed push 侧取件失败的欠账退避重试;型面纯 additive、公面 1033、peer 不动;§66。上一版 0.73.3 = **patch**:CC-61 sdk 9.7.1 提货 + `capabilities.approvalsStreamLive` 四态读口(缺席 = 判不出;`livePendingNeedsReconcile` 只在引擎明说会推时才让对账节拍降兜底)+ CC-60 五条模型面文案锚包侧半场(cursorSemantics 机读位 / result 行注记 / bash 首行两变体与良性槽 / 通知 seed 并集 / parked 臂);型面纯 additive、公面 1032、peer 不动;§65。上一版 0.73.2 = **patch**:CC-59 悬挂 ask 全卡 —— `livePending[].frame`(server ≥7.87.0)两道闸窄读进视图,在场即走流内帧腿同一条路(入参可见、改写可转发),缺席保持盲卡;CC-34 收口(引擎半场随 7.87.0 到货,判据交黑盒);型面纯 additive、公面 1026、peer 不动;§64。上一版 0.73.1 = **patch**:CC-57 `decidePlanReview` outcome 尾句按「决断有没有生效」四态选(单铸点 `planReviewOutcomeTail`;此前本地拒发仍让模型汇报已拒绝)+ CC-56 cancel 的 409 按机器码分家(`cancelConflictFromError` 三形 / 新安全码 `cancel_run_not_running`)与提交面 429 用量窗读口 + 人话;型面纯 additive、公面 1026、peer 不动;§63。上一版 0.73.0 = **minor,型面 BREAKING**:fleet 视图八个数值键改可选 —— CC-52 `FleetTaskView.elapsedMs` / `tokens` / `queuedCount` 与 `FleetWorkflowView.doneCount` / `totalCount` / `failedCount` / `tokens` / `elapsedMs` 不再 `?? 0`(有键 = 真值含真 0,缺键 = 不知道;逐键缺席语义见 §62b)+ 台账补偿链无基数不铸;公面导出名零增减 1019、零 wire 变化、peer 不动;§62。上一版 0.72.14 = **patch**:悬挂的流内 ask 拉半场 —— CC-55 `startApprovalsFeed` 快照加 `livePending` 段并进变化摘要(键缺席 = 未报,不铸空)+ 视图 / 去重账 / 与流内帧腿同链的决断口(入参不可见上卡明说、改写不转发)+ 宿主闸对账节拍 + 待决计数读口(不知道 = null);型面纯 additive、公面 1019、peer 不动;§61。上一版 0.72.13 = **patch**:server 7.86.0 提货 —— CC-46 plan_review `permissionModeAfter` 发口(三选卡双闸:宿主声明只读起步 ∧ 引擎 ≥7.86.0;400 field_conflict 两种处置)+ CC-54 `capabilities.executionLane` 四态读面(键缺席 ≠ 不是本机车道;`toolsRunHere` 判据归包)+ CC-53 detach 版本闸三态;型面 additive(另撤回 0.72.12 的主通道 `absent` 臂,改独立缺席订阅口)、公面 1011、peer 不动;§60;**预告 0.73.0 BREAKING**:fleet 视图数值键改可选。上一版 0.72.12 = **patch**:「缺席被折成正向终态」按类清剿 —— CC-50 M1 头条(fleet 行缺席改发 `absent` 不再铸 `end{isError:false}`)+ 六站一次改齐(缺席 ⇒ `unknown`)+ 结果边界 fail-closed 取舍 + `_sema_outcome` + `Outcome unknown:` 行 + CC-51 M6(default 臂不再谎报 running)+ 普查门 + DS-06;型面 additive、公面 993、peer 不动;行为面三处真变化见 CHANGELOG 取舍段;§59。上一版 0.72.11 = **patch**:core 7.23.0 提货 —— CC-49 通告码 66 → 67 `config.write_protection_unresolved`(operator;兄弟码 `target_view_absent` = 没有视图,这枚 = 有视图解析不出)+ `permission_denials` 自动升级腿通电(`gates[].toolCallId` ⇒ `tool_use_id`;CC-34 引擎半场);型面零变化、公面 989、peer 不动、devDep core ~7.23.0;§58。上一版 0.72.10 = **patch**:CC-41 leader run 终局 `needs_human` + `result.conflict` 三形读面(none 缺席不可分 / unreadable 在场读不懂 / conflict;`salvaged[]` 原样给落盘口;措辞单源不提重试);型面纯 additive、公面 989、peer 不动;§57。上一版 0.72.9 = **patch**:server 7.85.0 提货 —— CC-30 会话内 MCP re-dial 消费口(`reconnectMcpServer` 三态 / unsupported 恒五键 / 交易文案单源)+ CC-39② memory-status `autoConsolidationArmed` 三态 + CC-45 resume 补充句渲保留秒数;型面纯 additive、公面 985、peer 不动;§56。上一版 0.72.8 = **patch**:清账三票 —— `memory:"off"` 请求键(CC-39③,server 7.84.0 S-405)+ `runStream` 第二条中性臂 `Model output error:`(CC-43)+ 注入件撞活 run 自动 steer 零卡(CC-44);型面纯 additive、公面 977、peer 不动;§55。上一版 0.72.7 = **patch**:core 7.22.0 提货 —— 通告码 66 `mcp.server_redialed` + 读器 `readMcpServerRedialed` + `wiring_manifest.readDeny` 第九段 `_sema_readDeny`(缺席 = 没有内置行判这条腿);型面纯 additive、公面 971、peer 不动、devDep core ~7.22.0;§54。上一版 0.72.6 = **patch**:cli L-379 包侧半场 —— `steerFollowIntent` steer 后续听意图三态(tail / after-decision / after-wake)+ `activeRunSelfHealRow` 续听声明第五参;型面纯 additive、公面 969、peer 不动;§53。上一版 0.72.5 = **patch**:server 7.82.1 提货 —— `capabilities.webSearch.backend` 部署默认 WebSearch 后端四态读面(键缺席 = 老引擎判不了 ≠ `none`);型面纯 additive、公面 968、peer 不动;§52。上一版 0.72.4 = **patch**:core 7.21.x 三件经 server 7.82.0 提货 —— `wiring_manifest.autoConsolidation` 第八段 `_sema_autoConsolidation`(缺席 = indeterminate 不折 false);型面纯 additive、公面 962、peer 不动;§51。上一版 0.72.3 = **patch**:core #863 记忆单系统半场 ① —— `projectAgentsForWire` 投影 `agents[].memory`(user|project|local 三词同映射引擎平面 agent:<type>);型面纯 additive、公面 962、零 wire 新键、peer 不动;§50。上一版 0.72.2 = **patch**:workflow 视图两票 —— `LiveWorkflowController.resolution()` 六态(snapshot() 的 null 三义拆开)+ `noteOwnWorkflowRun` own 台账同拍登记;型面纯 additive、公面 961、零 wire 键、peer 不动;§49。上一版 0.72.1 = **patch**:server 7.80.1 提货 —— 409 `conflict.resume_context_unavailable` 结构读数(`staleAfterSec` / `runId`;sdk 9.6.0 尚未带键,经 sdk 今天恒缺席)+ `SkillSpec.baseDir`(只在本机车道带);型面纯 additive、公面 960、peer 不动;§48。上一版 0.72.0 = **minor**:型面 BREAKING —— 39 个零消费导出退出公面(CC-32 退役批,[7419] §45 预告 / cli [7422] 同意 / web-client·desktop 过节拍沉默 = 同意;名单见 §47a S-1);运行期零 BREAKING、公面 956、peer 不动、devDep core ~7.20.1;随批:已退役名账 `removed` + export-liveness 门 G 段 + 冻结账门 ⑧c;§47。上一版 0.71.4 = **patch**:core 7.20.1 提货 —— `ENGINE_NOTICE_CODES` 65 + `wiring_manifest.writeProtection` 第七段 `_sema_writeProtection`;型面纯 additive、公面 995、peer 不动、devDep core `~7.20.1`;§46。上一版 0.71.3 = **patch**:门体系清账批 —— CC-24 export-liveness 门 + 39 个导出退役预告(0.72.0 删,表态制)/ CC-26 `as unknown as` 铸链棘轮 / CC-25 冻结账门 ⑧ 段 / CC-06 B-081 包侧半场(终帧 `_sema_effective_reasoning` / `_sema_effective_memory_scopes` + resume reopen 族 + `routePairingVerdict`);型面纯 additive、公面 986 → 995、peer 不动;§45。上一版 0.71.2 = **patch**:接入方验收两票归包 —— CC-28 B-132 decide 拒体三句去内部车道词 / CC-29 B-133 committedUuids 唯一性(重复 ⇒ 形 f);零型面变化、公面 986、peer 不动;§44。上一版 0.71.1 = **patch**:接入档打回修正 —— CC-27 `ApprovalCardRequest.readRootCandidate?` 帧→卡透传位 + 新导出型 `ReadRootCandidateView`;型面纯 additive、公面 986 不变、peer 不动;§43。上一版 0.71.0 = **minor**:型面 BREAKING 六件 —— peer sdk 地板 >=9.6.0 + agent-types >=0.3.0 / `SkillsListingTruncatedFactsView` 删 `requestedBudgetBytes?`·`laneClamped?` / `WiringManifestMcpEntry` → `WiringManifestMcpEntryView` / `MAX_AGENT_SKILLS` 删 / `decide.workflow_host_not_parked` 退役;运行期零 BREAKING。内容:core 7.20.0 提货(闭集 +5 六十四码)/ 🔴 CC-16 `text_segment_end.committedUuids[]` / CC-08 全五件(tool_disclosure / tool_progress 两 chrome 臂、wiring_manifest tools·hooks·lsp 进切片、tool_roster_delta 接上、context_usage 进切片、`readRootCandidate` 镜像)/ CC-19 `mcpEngineLegPresence` 归包 / CC-20 not_parked clean-cut;公面 986;§42 / 42y 八条)|
23
- | peer:wire 契约 | `@sema-agent/sdk` **>=12.0.1**(value-level,非 type-only;**0.84.0 抬版**:12.x 声明每会话后台登记列表 `sessions.background`、能力位 `capabilities.background.listFace` 与七词闭集的后台状态型,本包三者都读(登记读口的端点门与归类口的编译期穷举),按 12.0.1 编译,11.3.0 失去物料见证;0.84.1 / 0.85.0 / 0.85.1 / 0.85.2 不动。此前 **0.80.0 曾抬到 >=11.3.0**:11.3.0 在两条回决口体上声明 `settledBy?: "policy"`、`Settlement.kind` 第十三词 `policy_refused` 与三错误码(0.80.0 至 0.83.6 都在这条地板上);**0.79.0 曾抬到 >=11.2.1**:11.2.x 声明 `capabilities.mcpProbe`、`mcpCapabilities` / `probeMcp` + `McpProbeFace`、写回执第三支 `stillLive: "unknown"`,11.2.1 再补 `TaskRequest.approverPosture` 与审批帧键 `mandated`(型面 + 运行期键锚),本包按 11.2.1 编译,11.0.1 失去物料见证;**0.78.0 曾抬到 >=11.0.1**:11.x 声明 `DeniedBy` 第十词 `read_boundary`、`rules.write` 200 体按 `stillLive` 判别联合、`RemovalLiveness` / `RuleWriteRequest` / `RuleWriteResult` / `RuleWriteBehavior` 包根导出、`TaskRequest.excludeAllTools`,本包按 11.0.1 编译,9.8.1 失去物料见证;**0.75.0 曾抬到 >=9.8.1**:9.8.x 声明 `Capabilities.deviceExecutor.management?`,9.7.1 失去物料见证;**0.74.0 曾抬到 >=9.7.1**:9.7.x 追平的六处型面是本包 0.73.3 起的编译基线,且 9.6.0 失去物料见证;**0.71.0 曾抬到 >=9.6.0**:`tool_disclosure` / `tool_progress` 两帧型与 `ToolApprovalFrame.readRootCandidate` 自 9.6.0 起;0.69.0 曾抬到 >=9.4.0(`reasoning_end` / `lastLegMcp`),0.60.0 抬到 >=8.4.0;地板由 `scripts/run-sdk-floor-test.mjs` 的 `FLOOR` 与 public-surface 门 C-CC-3「不低于见证到的最低实装版」双钉)| `package.json` `peerDependencies` |
22
+ | 本包 | `@sema-agent/client-core` **0.86.0**(本批发布版 = **minor**:引擎 7.34.0 提货两代读法 —— 事实表第二批构建期生成、`GATE_DENIED_BY_WORDS` 两代并集十一词(元素型 `GateDeniedByWord`,`mode` 专句)、门记录权限模式两臂与读口 `gateModeRelease`、通告码册六码与六只事实读器(`EngineNoticeFactsCode` +6)、`STRUCTURED_DETAIL_TYPES` +`read_unestablished`、本人规则店读不出两代读法、`shell_gate_tighten` 改句(CC-249 / CC-245 / CC-230);服务端 7.105.0 提货 —— 会话规则写口拒名码 `rules.legacy_tool_name` 的具名结局与 `isRulesRefusalCode`(CC-251)、门前只读路 401 的 `unauthorized` 态与 `READ_CREDENTIAL_NOT_ACCEPTED_NOTICE`(CC-252);请求键 `approverPosture` 退役、构造期按名拒,两个运行期名字退出根入口(逐名见 §2z)(CC-253);`AskUnresolvableFactsView.remedy?`(CC-254);开发依赖引擎 `~7.36.0`(CC-255 换钉 7.35.0,`CONFIG_REFUSAL_CODES` 8 → 17;CC-261 再换钉 7.36.0),通告码册 73 → 80;`adapt()` 错误信封不再回落读旧名 `result`(CC-221);服务端 7.106.0 提货 —— caps `store` / `centerWiring` 窄读口、SQL 姿态两代读、计费入口 503 `fleet.lease_unavailable` 读口与一句话(CC-250),`executionLane.isolated` 与「本机无 OS 沙箱」判定(CC-256),请求键 `inheritEnv` 与版本闸片段口、两只拒按码出句(CC-257),权限规则表超帽坏项读口与一句(CC-262),工具声明拒按码认领(CC-263),请求体键形拒两张键表读口(CC-265);`-p` 首帧工具来源超集键 `_sema_tools_source` / `_sema_tools_fallback_reason` 与铸口 `printInitToolFaceSupersetKeys`(CC-266),三张估计工具表改为常驻(CC-267);根公面 1310 → 1354;测试钩 60 → 62;公面类型 891 → 922;超集键 +2;peer sdk 地板 `>=12.0.1` 不动(sdk 12.0.1 / 13.1.0 / 14.0.0 / 15.0.0 下本版 `.d.ts` 严格编译均零错误);§112)。上一版 0.85.2 = **patch**:自愈重开两只失败结局带 `errorCode`(这一次重开放弃所依据的那一发失败请求的外层 wire 码,present-iff;判定形不带),重开判决不成功臂 +`_sema_errorCode`(宿主可选铸;宿主重开口抛错时本包铸)(CC-260);自愈腿读错误对象与成功应答记录上的各位收进保护(读不出按缺席,不再 reject;`atMostOnceFailureClass` / `readSteerDelivery` / `readSteerReceiptStatus` 不再抛);根公面 1310 不变;公面类型名不变(两个已导出型各多可选位);超集键 +1;peer sdk 地板 `>=12.0.1` 不动;§111)。上一版 0.85.1 = **patch**:请求装配回执省略成因的终端用户向句表 `TASK_REQUEST_OMISSION_CAUSE_NOTICES` 与取句口 `taskRequestOmissionCauseNotice`(与接入方那只 `taskRequestOmissionCauseDetail` 同源于同一成因闭集、逐词不同句;表外 / 读不出 ⇒ 一句通用句,不抛、不回显),接入方那张句表的字面量补挂 `satisfies`(CC-248);plan-review 重开口在「这个会话没有接能显示卡的界面」那一形上答 `{ reopened: false, _sema_noPresentationSurface: true }`,自愈结局两臂带 `noPresentationSurface`、自愈行五句补一句成因,重开前提(宿主为该会话键订阅问题帧端口)成文(CC-258);自愈腿读宿主重开判决收进保护(某一位读不出按缺席,不再 reject),宿主日志 / 探针口抛错不再改变判决;多会话宿主的按会话呈现回执登记口 `registerArmedGateFromQuestionIdFor` 回到根入口(0.72.0 退出公面的名字复活;CC-259);根公面 1307 → 1310;公面类型名不变(两个已导出型各多可选位);超集键 +1;peer sdk 地板 `>=12.0.1` 不动;§110)。上一版 0.85.0 = **minor**:引擎事实表(通告码册 / 受众表 / MCP 注入丢弃原因 / 会话规则翻译判定内部两表)改为构建期生成,`ASK_ORIGIN_WORDS` / `APPROVAL_MANDATE_WORDS` 就是 SDK 导出的数组(不再冻结),四个思考档 / 权限模式型改为 SDK 型的别名,包内单源(CC-230);子代族八入口与两只行停止门收注入 client,写动词失败结局 +`unconfirmed`,`classifySubagentResumeFailure` 同判(CC-236);`sessionPolicyDeliverable` 收可选名册,`SessionPolicyWithheldWhy` 六词 → 七词(CC-228);过渡物退役登记与到期门,`adapt()` 不再认旧名 `attachedFiles`,三个运行期名字退出根入口(逐名见 §2z),`surfaceRememberNotApplied` 撤回退役预告(CC-221);plan-review 决断台账六口,`reopenPlanReviewCard` 按台账拒开(CC-241);会话后台任务停止口 `stopEngineSessionBackground` 与受据归类口 `engineSessionBackgroundReceiptReadingOf`(CC-246);服务端 7.104.0 会话侧:会话存档读不出三载体读口与人话 `corruptSessionContent`、`session.records_skipped` 进册(`SERVER_NOTICE_AUDIENCE` 三行)、删会话 409 读口、`/decide` 停驻挪动族读口(CC-217 / CC-243);服务端 7.104.0 能力 / 同步体侧:同步 park 新体与 park 行 `result`、`fileHistoryCaptureMode` 认 `on-optional` 与请求词片段口 `fileHistoryDeclarationField`、公钥发现读口 `projectSealedKeyCapability`、折叠粗码 `isStatusDerivedCoarseCode`(CC-243);同名影子对账门按语义判(CC-222);导出存活门读已提交历史(CC-240);根公面 1275 → 1307;测试钩 59 → 60;公面类型 +34;peer sdk 地板 `>=12.0.1` 不动;§109)。上一版 0.84.1 = **patch**:`<system-reminder>` 开标签定位口 `findSystemReminderOpenTag`(CC-210);detach durable-off 400 纯判定 `isDetachDurableOff400`,`detachDurableOffHint` 对读属性会抛的错误对象改回 `null`(CC-219);服务端自铸通告码进码册与受众表 `SERVER_NOTICE_AUDIENCE`(`instructions.source_changed` 回到用户面)+ 事实读器 `readInstructionsSourceChanged`(CC-213);按码派发的通告事实口 `readEngineNoticeFacts` + 派发表 `ENGINE_NOTICE_FACT_READERS`,`readReadRootGrantNotice` 入参型放宽(CC-214);停泊审批决断 422 `parked_resume.startup_failed` 的读口 / 一句话 / 判定与码优先 `isCodeClassifiedGateFailure`(CC-225);拒启会话的窄撤销动词 `removeRefusedSessionRules` 与出路句 `legacyToolNameFailureNoteOf`,`CONFIG_REFUSAL_CODES` 七员 → 八员(CC-229);plan-review 编排三口与两只能力探针收注入 client(CC-209);CC 形 `permission_denials` 收入参只被传输层脱敏过的拒绝 + 超集位 `_sema_tool_input_redacted`(CC-235);凭据读法两处放行收口(CC-234);根公面 1260 → 1275;公面类型 +18;peer sdk 地板 `>=12.0.1` 不动;§108)。上一版 0.84.0 = **minor**:peer sdk 地板 `>=11.3.0` → `>=12.0.1`;后台代理登记读数 —— 读口 / 取代判定 / 归类口 / 登记键桥 / 补行谓词,缺席行下半场(CC-194);读目录授权结论通告读口 `readReadRootGrantNotice`(CC-185);接线回执 `hands` 段 `_sema_hands` + 读口 `handsSeamReadingOf` / `handsSeamDetail`,`handsMountedDetail` 坏入参不再抛(CC-206);陈旧逻辑清扫(CC-223):退役键 `rewind.rewindFiles` 构造期拒收、`WorkflowRunState.agentCount` 改可选、26 个内部件退出根入口、九张公面判定表换只读 Set 子类、十五张判定数组冻结、`resume_at` 文本兼容腿退役;根公面 1278 → 1260;公面类型 +10;§107)。上一版 0.83.6 = **patch**:会话规则记录的无损判定 `sessionPolicyDeliverable` 把引擎会在准备阶段拒启的两类名字(引擎退役名、含 `__` 而不以协议前缀开头的名字)改判「不写」,成因词 `legacy_tool_name`(闭集 5 → 6),引擎说「改名为 X」的退役名带 `currentName` 出路位;`peer_wide` 那句改措辞(判决不变)(CC-226);根公面 1278 不变;peer sdk 地板 `>=11.3.0` 不动;§106)。上一版 0.83.5 = **patch**:展示层出口 `displayUntrusted` 的连接符 ZWJ / ZWNJ 按语境判(🔴 默认形输出字节变)、两只可选开关 `escapeBackslashes` / `blanks` 与标记位置读口 `displayUntrustedMarks`(CC-204);凭据两网的判别视图认孤代理项,机读字节 `errors[]` / 合成终局行同批(CC-207);转义记号在凭据再扫里原子与四处凭据读法存量修复(相对 0.83.4 零新增外泄);hooks 启动模式可选词读口 `SettingsPort.hooksStartupMode()`,安全 / bare 模式下设置来源只发 managed(CC-200),设置来源里同一条 hook 只发一份(CC-208);自愈三条重发结局 +1 可选位 `releaseConfirmedByEngine`、行句按释放证据分说(CC-212);活段接入指引订正;公面类型 +3;peer sdk 地板 `>=11.3.0` 不动;根公面 1278;§105)。上一版 0.83.4 = **patch**:只增 —— plan 审批卡「用户亲手关掉的卡,自动触发不在同一道门上放回屏上」的判定归包(`reopenPlanReviewCard` 加触发者位 `trigger`、拒开位 `dismissedByUser`,409 自愈腿按提交出身替宿主传触发者、结局与整行由包出;CC-201);座位审批请求补强制位 / 强制理由词 / 报价缺席因由 / 出身词四个可选位与过境口 `toolPermissionRequestAskBits`(CC-203);`<system-reminder>` 剥离 / 解包两只口上公面并改线性时间(CC-205);两条展示层接入指引订正;开发依赖引擎 `~7.33.1`;公面类型 +2;peer sdk 地板 `>=11.3.0` 不动;根公面 1277;§104)。上一版 0.83.3 = **patch**:入参 / 来源面 —— hooks 投影加 flag 来源(`--settings` 那一层,排在 local 之后;设置来源 hooks 维持托管在前拼接);规则列举口 `listAllPersistedRules` 入参只要 `list`(`RulesListFacade`,其余四口作可选成员);模型身份认目录缺省(本机读数加宿主报位 `engineAcceptsCatalogDefault`,位 `true` 才算目录可解析);公面类型 +1;peer sdk 地板 `>=11.3.0` 不动;根公面 1273;§103)。上一版 0.83.2 = **patch**:只增 —— 审批卡一族三件(常驻姿态下的放行谓词 `askSurvivesPosture`,三态、「不知道」不折成放行;卡上 `mandate` 六词闭集 + 读口 + 每词一句说明,通告码册 +2,开发依赖引擎 `~7.32.0`;停泊卡带出身词 `origin`;CC-193 / CC-195 / CC-196)与后台子代缺席行的判定、计数、sweep 豁免、回收与措辞单源(回收只在后台代理登记确认离场时;CC-194);公面类型 +13;peer sdk 地板 `>=11.3.0` 不动;根公面 1273;§102)。上一版 0.83.1 = **patch**:只增 + 行为订正 —— 展示层安全出口三端单源 `displayUntrusted`(凭据两网 ∘ 字符三网,选项按载体选;CC-112);本包合成的终局行正文与结果帧 `errors[]` 在铸点洗凭据(`errors[]` wire 可见,方向只会更安全)、交互车道合成行带上行类旗,回决备注与子代续跑收据多收双向 / 格式字符(CC-187 / CC-112);会话规则记录的无损判定 `sessionPolicyDeliverable` + 措辞单源 `sessionPolicyWithheldNotice` + 五词成因 `SESSION_POLICY_WITHHELD_WHY`(整批可送才送,首尾带空白的名字比宿主侧更严;CC-117);插件 hook 每轮计划 `hooksWirePlan` + `SettingsPort` 可选读口 `enabledPluginHooks` + `hooksForWire({ plan })`,逐条判「投给引擎 / 本客户端执行 / 如实不跑」、开机「不会执行」清单与 `/hooks` 标注措辞单源(投给引擎那一臂候引擎能力位 `taskSettings.pluginHooks`),设置来源的 `mcp_tool` 与 exec 形 hook 条目不再上请求体、手写的 `plugin` 键剥掉(CC-174);公面类型 +26;peer sdk 地板 `>=11.3.0` 不动;根公面 1254;§101)。上一版 0.83.0 = **minor**:行为面与型面都有 BREAKING —— CC 形消息 24 项按裁定 C-R103 退役名:结果帧 `degraded` / `errorCode` / `model` 与错误信封 `result` → `_sema_model_degraded` / `_sema_error_code` / `_sema_selected_model` / `_sema_salvaged_result`,合成终局行 `isApiErrorMessage` → `_sema_api_error_message`,工具结果记录删过渡名 `toolUseResult`,system 行 `attachedFiles` → `_sema_attached_files`、到达时戳 `timestamp` 与 `isMeta` 删,print 完成通知帧十三键平铺 `_sema_*`,记忆写入改走 chrome 臂 `memory_saved`(新型 `MemorySavedChromeEvent`,`CHROME_ARMS` required);本包只铸新名、端两名并读一版 + 结果帧 CC 键 `terminal_reason` 与读口 `terminalReasonForResult`(CC-175),错误信封知道就铸 `_sema_selected_model` + 转录 id 改 UUID 形(CC-147)+ `SettingsPort` 可选合并读口 `mergedDisableAllHooks`、用户层 `disableAllHooks` 在引擎腿上生效(CC-162)+ 退化审批卡三形拒收改写、`FsApprovalOutcome` 的 `failed` 臂 +可选位 `editRefused`(CC-135)+ 注入件自愈句整族重写 + 联网搜索旧三读口 `webSearchFromEnv` / `webSearchFromSettings` / `resolveWebSearch` 退出公面,`resolveLiveInitToolFace` 可选 `opts.webSearchStamped`(`LiveInitToolFaceOptions`),endpoint userinfo 律跟服务端 7.101.0(CC-184)+ 公面类型 −4(CC-171)+ 通告码册 69 → 71 与结构化卡白名单 +`read-inbox`(CC-186,开发依赖引擎 `~7.31.0`)+ 合成终局行 `uuid` 改 UUID 形;peer sdk 地板 `>=11.3.0` 不动;根公面 1238;§100)。上一版 0.82.7 = **patch**:只增不改 —— 每请求联网搜索配置的三态判决 `judgeWebSearchSettings` / `webSearchVerdictFromEnv` / `resolveWebSearchVerdict`(与 7.100.0 及以后 server 的受理判官同序同判,认不出的 provider 判形错、不再静默丢段;settings 段凭据注入回调 `apiKeyFor`)+ 措辞单源 `webSearchVerdictMessage`(不回显任何用户配的值)+ 调试日志用 `webSearchEndpointForDisplay`;旧三读口 `webSearchFromEnv` / `webSearchFromSettings` / `resolveWebSearch` 行为不变、标过渡期,0.83.0 删(CC-182);peer sdk 地板 `>=11.3.0` 不动;根公面 1240;§99)。上一版 0.82.6 = **patch**:只增不改 —— 停泊行上选「本会话允许」却没被记住时与活卡腿同句告知(回体 `rememberApplied: false`,或 server 以会话级放行专属拒绝码拒了 remember 后回退普通批准;其余失败一律未知不告知),回执 `DecideReceiptView` +1 可选位 `rememberApplied`(CC-181);决断落定后与桥重试臂的诊断留痕不再因宿主日志口抛错回流进决断;接入文档改口:server ≥7.100.0 上 park 行卡的 `requiresRealApproval` / `approvalIsMandated` 生效(CC-180,零代码改动);peer sdk 地板 `>=11.3.0` 不动;根公面 1235;§98)。上一版 0.82.5 = **patch**:只增不改 —— print 车道 init 帧工具面名册优先:流包装器 `withPrintInitFrame`(首选接法,init 恒为首行、其后按到达序)/ 判定闸 `createPrintInitGate` / 分类口 `printInitRosterSignal` / 判定口 `decidePrintInitToolFace` / 留痕措辞 `printInitToolFaceDebugLine` + 等待上界 `PRINT_INIT_ROSTER_WAIT_MS`(150 000);回落估计表补 `ListAgents`(7.30.0 及以后的引擎上与 `SendMessage` 同条件)(CC-169);peer sdk 地板 `>=11.3.0` 不动;根公面 1235;§97)。上一版 0.82.4 = **patch**:只增不改 —— park 行审批卡新增门类位 `irreversibleParkGate`(待决行门类恰为 irreversible_ask,今天即生效,门类事实不是保证);`requiresRealApproval` 在待决行顶层带时透传(就绪,待决列表带出后才生效,今天零行为变化)(CC-180);`ApprovalCardRequest` +1 可选位;peer sdk 地板 `>=11.3.0` 不动;根公面 1229;§96)。上一版 0.82.3 = **patch**:只增不改的公面 —— 自愈提示的「保住对话」出路槽 `keepSessionWayOut` 与交互面引擎决断入口开关 `engineDecidePath`(CC-177;两位都不给时措辞与 0.82.2 逐字节同);自愈结局两臂 +机读位 `pendingRowGone`(重开链证实待决项已不在);peer sdk 地板 `>=11.3.0` 不动;根公面 1229;§95)。上一版 0.82.2 = **patch**:只增不改的公面 + 若干行为订正 —— 新增措辞单源 `cloudEffectiveNotices`:云控制面有效配置回体的降级告警 / 预算 / 能力上限三读数(CC-164,四态,不读成 0 或「没有预算」);本机引擎 models 文档在宿主注入本机条目判定 `entryAccepted` 时补 `default` / `tierGroups` / `activeTierGroup`,剔掉会让本机整份拒收的目录引用与判定口不收的条目,去掉 registry 注记键 `origin` / `overridesTeam`(CC-165;结果新增 `modelRefIssues`);计划复核结局机读位 `_sema_planReviewOutcome`(CC-160 ①);停泊审批决断操作起止回调 `onDecideOperation` 与操作句柄 `openDecideOperation`(CC-160 ③);新增超集键 `_sema_planReviewOutcome`;peer sdk 地板 `>=11.3.0` 不动;根公面 1229;§94)。上一版 0.82.1 = **patch**:只增不改的公面 + 若干行为订正 —— 新增读口 15 个(续跑折叠码读口与措辞 / 文件历史捕获读口六口 / 模型身份可解析判据五口 / 自定义代理载荷作废重投口 / 决断失败码「门还在」判定)+ 宿主车道声明 `EmitContext.lane`;新增超集键 `_sema_response_model`(终帧 / 每轮用量)与 chrome 用量两臂 `responseModel`、重开判决 `_sema_decisionInFlight`、自愈结局两臂 `decisionInFlight`、内部臂 `_sema_denial_unclassified`、通知码 +1;行为订正:计划复核决断在飞不重开卡且自愈提示不再教人再决一次(CC-160 ②)、决断出口补折叠句且停泊腿不再把折叠 / 坏档误判已决(CC-154)、执行车道 `in-process` 措辞(CC-153)、`-p` 车道 Bash 良性退出与交互同判(CC-168)、`-p` 工具结果帧补结构化结果(CC-149)、被拒分类词两车道同判(CC-172)、非交互车道子代工具帧(CC-158,宿主声明车道才生效)、终帧被拒清单对账流内拒绝(CC-159)、自定义代理载荷作废重投(CC-161);peer sdk 地板 `>=11.3.0` 不动;根公面 1228;§93)。上一版 0.82.0 = **minor**:只增不改 —— 新增只读读口 17 个 + 1 常量、工具名册行一格 `mountedBy`、turn 错误判决 `http` 臂一格 `storedRowWhere`:`/rewind` 代码档与对话档能不能用由引擎能力位回答(CC-146)、云控制面额度读数三分(CC-150)、装配期「这一条腿有没有手」(CC-152)、续跑拒收按原码判(CC-154);两处既有面行为订正:自动模式分类器拒的类别词由 `permission-rule` 改为 `automode-*` 三词(CC-155,订正 0.81.1)、续跑上下文读不出时引擎点名的那一行不再丢(CC-156);0.81.0 预告的 23 键 + 1 子型删改**改到 0.83.0**(§92y ㉙);零 wire 键、零投影臂;peer sdk 地板 `>=11.3.0` 不动;§92。上一版 0.81.1 = **patch**:被拒分类词读器加第③路(CC-148):引擎「没问过就拒」的工具调用(deny 规则 / 权限模式 / hook / 分类器 / 写保护 —— 无 `settlement` 只有 `gate.disposition.deniedBy`)在 user 工具结果记录与终帧 `permission_denials[]` 上此前恒缺 `_sema_denial_kind` / `toolDenialKind`,现按层名落 `permission-rule`(其中「分类器」一项已由 0.82.0 CC-155 订正)(`ask_resolution` 无结算 / 结算段不成形 / 层名表外仍缺席不猜);交互与 `--print` 两条车道同一只读器;另钉终帧两臂 `_sema_effective_*` 键集不变量 —— 成功臂展开单铸函数、错误信封显式重发,覆盖性钉在返回对象自己的类型上(漏键 / 多键编译期即红)+ 门格判两臂键集相等且值逐字节同,给单铸函数加键时错误臂不会再静默少键(本版无键增减);零 wire 键、零投影臂、根公面 1195;§91。上一版 0.81.0 = **minor**:CC 形消息一张脸(C-R85 / CC-131):user 工具结果记录加 SDK 面键 `tool_use_result`(与过渡键 `toolUseResult` 同引用,删驼峰原定 0.82.0、已改到 0.83.0)+ DS-19 普查门升硬门(键集按语法解析、按 type/subtype 分表;23 键 + 1 子型过渡表到期窗原为 0.82.0、已改到 0.83.0,零常驻豁免)+ CC-145 `/rewind` both 臂改发 `restoreFiles:true`、`projectRewind(pending)` 单参;零 wire 键、零投影臂、根公面 1195;§90。上一版 0.80.2 = **patch**:`conflict.resume_context_unavailable` 的 `staleAfterSec` / `runId` 在真 SDK 上读不到(CC-137:sdk 11.1.0 起 `APIError` 把体上非具名键收进 `extra`,这一码映射成 `ConflictError` 无具名位,读口只读顶层 ⇒ 真调用链恒缺席)⇒ 体源结构位改「顶层有效值优先、`extra` 兜底」三只类型化读口单铸,有具名子类位的三处(`retryAfterSec` × 2 / `allowlist`)行为不变只多兜底,头源 `retryAfterMs` 只读具名位;零 wire 键、零投影臂、根公面 1195;§89。上一版 0.80.1 = **patch**:去键重发判据句按「铸」计(CC-143;§87「带键的体恰一次」作废 → 被铸恰一次,POST 几次随传输层)+ 接入文档段落自带射程限定词自 §88 起向前执法 + 模型预设表 deepseek 项改闭集真名 deepseek-flash(CC-144,C-R82 ①)+ 门里 git 兜底自陈探针(CC-142);零 wire 键、零投影臂、根公面 1195;§88。上一版 0.80.0 = **minor**:🔴 peer sdk 地板 >=11.2.1 → >=11.3.0 + 策略拒的归因上 wire(CC-133:发送面 deny+policy 带 settledBy / 读侧 policy_refused 十三词入 CC 规则桶 / 三错误码读口 / 直连门去键重发恰一次)+ 删除规则后果句归包(CC-132)+ /mcp 详情卡两腿分说归包(CC-134:六档读口 + 九句铸点,同批改口八处说满的话)+ 🔴 终帧旧拼法 `structuredOutput` 按 0.79.1 的宣告删除(只剩 CC 形 `structured_output`);根公面 1195;§87。上一版 0.79.1 = **patch**:终帧结构化产出同帧铸 CC 形 `structured_output`(旧拼法 `structuredOutput` 过渡一版,0.80.0 删;CC-130)+ 写审批 `argsOmitted` 退化卡在无受护写入部署形上重新解得出路径(CC-129)+ 云控制面十值二型经本包第二个入口 `@sema-agent/client-core/registry` 原样转口(根入口零变;CC-128 ①);根公面 1184;§86。上一版 0.79.0 = **minor**:server 7.93.0 过境批 —— peer sdk 地板 >=11.2.1 + 写口回执第六臂 unverified 与 503 体 committed 分臂(CC-124)+ 无 run 可读的 MCP 状态面(CC-74)+ 审批卡 mandated 位(CC-110)+ 请求装配第三车道 utility 与 approverPosture / maxTokens / outputRetries 三键 + print 车道 model 座(CC-116 / 118 / 123)+ 拒因两面分铸与四个机读位(CC-125)+ 模型轮边界划消息界(CC-126)+ 委派结果人类面读口按来源声明体内定位(CC-127)+ sdk 转口三件(CC-128)+ 通告码 memory.project_scope_absent(CC-122);公面 1184;§85。上一版 0.78.2 = **patch**:门的棘轮登记数字单真源 —— 五只门十一格棘轮 + 218 条沿革账搬进 scripts/registry.json、门只读不抄、负控改篡改登记物、下调通道 RATCHET-SLACK、新门 run-registry-test(CC-79 第一期)+ 两格存量松量收掉 + submit-wiring-manifest 门补 count===1 边界格;src 零改动,dist 逐字节同 0.78.1;公面 1154;§84。上一版 0.78.1 = **patch**:两辆并行车收货 + 三张跟进票 —— displayBody 人类面读口 + 围栏解析头尾配对收紧(CC-113)/ MCP 两处「没报」措辞分句(CC-115)/ 记忆治理面五动词调用口(CC-97 b)/ 非流式提交回执接线回执读口 readSubmitWiringManifest(CC-121)/ 三份失败判官抛出物读取收口(CC-119);公面 1154;§83。上一版 0.78.0 = **minor**:peer sdk 地板 >=9.8.1 → >=11.0.1(CC-106)+ 单步写口 200 体按 stillLive 判别联合改读、第五臂 revoked、三型取自 sdk、RulesFacade.write 必填、PersistedRuleLiveness 转口(CC-103)+ DeniedBy 第十词 read_boundary 专句(CC-106 ④)+ excludeAllTools 车道行;型面 BREAKING 三处、行为面同 0.77.2;公面 1143;§82。上一版 0.77.2 = **patch**:出包面结构卫生 —— 构建期 removeComments,dist js / d.ts 零注释(新门 run-dist-comments-test.mjs + 卫生门词表 32 条 + 文档向前执法;CC-100)+ gateDeniedByDetail 表外词兜底句改「本版不认识这个层名」(CC-111 ①);行为 / 型面逐字节同 0.77.1;公面 1143;§81。上一版 0.77.1 = **patch**:外部验收三件回填 —— 读器族边界残留 projectMcpReconnectCapability 只认自有键(CC-107)/ rewind 四子键恰读一次(CC-108)/ 子代输出合并按回体 output.type · retrieval_status 定处置(CC-109,server ≥7.92.0 cursorSemantics 缺席面);型面 additive 一处;公面 1143;§80。上一版 0.77.0 = **minor**:请求装配逐键去向回执 + print 车道补座 + 表外键响亮拒(CC-101,四条行为 BREAKING)/ 会话策略写端口(CC-105)/ 持久规则单步写面(CC-103)/ workflow 子代面板行代际三向恢复(CC-104,零改码)/ 能力位读器族口径整族改齐 + 外部验收 F-A / F-B 处置 + 合并树异源复审两轮处置;公面 1143;§79。上一版 0.76.2 = **patch**:制品卫生 —— 清 dist 重 build 去掉两只已撤出源码的编译产物 + dist ⇄ src 对账门;零源码 / 零型面 / 零行为改动;公面 1122;§78。上一版 0.76.1 = **patch**:能力位读器工厂(CC-75)/ MCP 活性观察读口(CC-36)/ `capabilities.peerLane` · `permissionRulesWrite` 四态读口(CC-102)/ 记忆治理面两只读口 + 三只条目面回体读口(CC-97 a)/ 主车道证明逐次新建(CC-99)+ 修 0.76.0 的 F1 / F2(身份四键一次性快照只修了投影口一侧);公面 1122;§77。上一版 0.76.0 = **minor**:六票一批 —— `prompt_assembled` 投影臂 / 审批 feed 三态(**型面 BREAKING**)/ `ApprovalResolution` 单源联合 / 记忆 spec 读口 / 终态词表上游钉 / `tasks_expand` 退役(**型面 BREAKING**),外加身份四键一次性快照(跨全部内部臂);公面 1081;§76。上一版 0.75.1 = **patch**:面板短命子代反序缓行放不出的残洞(外部复验 D1)+ 同代 running 帧三向定形(B4)+ #969 提货 `spawnName` 透传与 `agentType` 改读诚实来源(CC-95);§75。上一版 0.75.0 = **minor**:压缩的非 compacted 结局上 chrome 面 `compaction_outcome`(新内部臂 —— 自建 print 出口的端先表态)+ peer sdk 地板 `>=9.8.1`;型面 additive(ChromeEvent +1 臂)、公面 1065、零 wire 新键;§74。上一版 0.74.5 = **patch**:core 7.24.0 提货 `_sema_freed_tokens?` + 首见即终态的行零事件(幽灵完成行)+ `isNewEngineAgentPanelCycle` / `approvalOutcomeNoteOf` 上公面;型面 additive、公面 1065、peer 不动;§73。上一版 0.74.4 = **patch**:面板键「先发布的键为准」(tick 归不了一的三序不再两行)+ 前代 UUID 迟到 tick 丢弃 + `readRunCancelContext` 下钻收紧;型面 additive、公面 1061、peer 不动;§72。上一版 0.74.3 = **patch**:面板子代身份归一(tick / end 的 UUID 归到 fleet 尾段,宿主零改)+ run 记录 `cancelContext` 读口与成因四词 + workflow 行 `errorCode` + reopen 第二臂两件;型面纯 additive、公面 1061、peer 不动;§71。上一版 0.74.2 = **patch**:`capabilities.deviceExecutor.management` 四态读口(缺席 ≠ false;`deviceExecutor: false` = 车道缺席;管理动词可用性三态归包);公面 1052;§70。上一版 0.74.1 = **patch**:审批卡无决断收口 + 结局回交;§69。上一版 0.74.0 = **minor**:peer sdk 地板 >=9.7.1 + covers 过境 + 面板周期身份 + 离场读口;§68。上一版 0.73.5 = **patch**:workflow 规模告警判定上收进包(`evaluateWorkflowSize` 三态:未知的规模不当作规模正常;分母口径与帽优先级单源;env 读口纯函数);型面纯 additive、公面 1044、peer 不动;§67。上一版 0.73.4 = **patch**:终帧 `permission_denials` 第三键 ⇐ 同一条流 `tool_start` 入参按 `toolCallId` join(三道闸;join 不上留 sema 载体;🔴 更正 0.73.2「自动升级收口」一句)+ 审批 feed push 侧取件失败的欠账退避重试;型面纯 additive、公面 1033、peer 不动;§66。上一版 0.73.3 = **patch**:CC-61 sdk 9.7.1 提货 + `capabilities.approvalsStreamLive` 四态读口(缺席 = 判不出;`livePendingNeedsReconcile` 只在引擎明说会推时才让对账节拍降兜底)+ CC-60 五条模型面文案锚包侧半场(cursorSemantics 机读位 / result 行注记 / bash 首行两变体与良性槽 / 通知 seed 并集 / parked 臂);型面纯 additive、公面 1032、peer 不动;§65。上一版 0.73.2 = **patch**:CC-59 悬挂 ask 全卡 —— `livePending[].frame`(server ≥7.87.0)两道闸窄读进视图,在场即走流内帧腿同一条路(入参可见、改写可转发),缺席保持盲卡;CC-34 收口(引擎半场随 7.87.0 到货,判据交黑盒);型面纯 additive、公面 1026、peer 不动;§64。上一版 0.73.1 = **patch**:CC-57 `decidePlanReview` outcome 尾句按「决断有没有生效」四态选(单铸点 `planReviewOutcomeTail`;此前本地拒发仍让模型汇报已拒绝)+ CC-56 cancel 的 409 按机器码分家(`cancelConflictFromError` 三形 / 新安全码 `cancel_run_not_running`)与提交面 429 用量窗读口 + 人话;型面纯 additive、公面 1026、peer 不动;§63。上一版 0.73.0 = **minor,型面 BREAKING**:fleet 视图八个数值键改可选 —— CC-52 `FleetTaskView.elapsedMs` / `tokens` / `queuedCount` 与 `FleetWorkflowView.doneCount` / `totalCount` / `failedCount` / `tokens` / `elapsedMs` 不再 `?? 0`(有键 = 真值含真 0,缺键 = 不知道;逐键缺席语义见 §62b)+ 台账补偿链无基数不铸;公面导出名零增减 1019、零 wire 变化、peer 不动;§62。上一版 0.72.14 = **patch**:悬挂的流内 ask 拉半场 —— CC-55 `startApprovalsFeed` 快照加 `livePending` 段并进变化摘要(键缺席 = 未报,不铸空)+ 视图 / 去重账 / 与流内帧腿同链的决断口(入参不可见上卡明说、改写不转发)+ 宿主闸对账节拍 + 待决计数读口(不知道 = null);型面纯 additive、公面 1019、peer 不动;§61。上一版 0.72.13 = **patch**:server 7.86.0 提货 —— CC-46 plan_review `permissionModeAfter` 发口(三选卡双闸:宿主声明只读起步 ∧ 引擎 ≥7.86.0;400 field_conflict 两种处置)+ CC-54 `capabilities.executionLane` 四态读面(键缺席 ≠ 不是本机车道;`toolsRunHere` 判据归包)+ CC-53 detach 版本闸三态;型面 additive(另撤回 0.72.12 的主通道 `absent` 臂,改独立缺席订阅口)、公面 1011、peer 不动;§60;**预告 0.73.0 BREAKING**:fleet 视图数值键改可选。上一版 0.72.12 = **patch**:「缺席被折成正向终态」按类清剿 —— CC-50 M1 头条(fleet 行缺席改发 `absent` 不再铸 `end{isError:false}`)+ 六站一次改齐(缺席 ⇒ `unknown`)+ 结果边界 fail-closed 取舍 + `_sema_outcome` + `Outcome unknown:` 行 + CC-51 M6(default 臂不再谎报 running)+ 普查门 + DS-06;型面 additive、公面 993、peer 不动;行为面三处真变化见 CHANGELOG 取舍段;§59。上一版 0.72.11 = **patch**:core 7.23.0 提货 —— CC-49 通告码 66 → 67 `config.write_protection_unresolved`(operator;兄弟码 `target_view_absent` = 没有视图,这枚 = 有视图解析不出)+ `permission_denials` 自动升级腿通电(`gates[].toolCallId` ⇒ `tool_use_id`;CC-34 引擎半场);型面零变化、公面 989、peer 不动、devDep core ~7.23.0;§58。上一版 0.72.10 = **patch**:CC-41 leader run 终局 `needs_human` + `result.conflict` 三形读面(none 缺席不可分 / unreadable 在场读不懂 / conflict;`salvaged[]` 原样给落盘口;措辞单源不提重试);型面纯 additive、公面 989、peer 不动;§57。上一版 0.72.9 = **patch**:server 7.85.0 提货 —— CC-30 会话内 MCP re-dial 消费口(`reconnectMcpServer` 三态 / unsupported 恒五键 / 交易文案单源)+ CC-39② memory-status `autoConsolidationArmed` 三态 + CC-45 resume 补充句渲保留秒数;型面纯 additive、公面 985、peer 不动;§56。上一版 0.72.8 = **patch**:清账三票 —— `memory:"off"` 请求键(CC-39③,server 7.84.0 S-405)+ `runStream` 第二条中性臂 `Model output error:`(CC-43)+ 注入件撞活 run 自动 steer 零卡(CC-44);型面纯 additive、公面 977、peer 不动;§55。上一版 0.72.7 = **patch**:core 7.22.0 提货 —— 通告码 66 `mcp.server_redialed` + 读器 `readMcpServerRedialed` + `wiring_manifest.readDeny` 第九段 `_sema_readDeny`(缺席 = 没有内置行判这条腿);型面纯 additive、公面 971、peer 不动、devDep core ~7.22.0;§54。上一版 0.72.6 = **patch**:cli L-379 包侧半场 —— `steerFollowIntent` steer 后续听意图三态(tail / after-decision / after-wake)+ `activeRunSelfHealRow` 续听声明第五参;型面纯 additive、公面 969、peer 不动;§53。上一版 0.72.5 = **patch**:server 7.82.1 提货 —— `capabilities.webSearch.backend` 部署默认 WebSearch 后端四态读面(键缺席 = 老引擎判不了 ≠ `none`);型面纯 additive、公面 968、peer 不动;§52。上一版 0.72.4 = **patch**:core 7.21.x 三件经 server 7.82.0 提货 —— `wiring_manifest.autoConsolidation` 第八段 `_sema_autoConsolidation`(缺席 = indeterminate 不折 false);型面纯 additive、公面 962、peer 不动;§51。上一版 0.72.3 = **patch**:core #863 记忆单系统半场 ① —— `projectAgentsForWire` 投影 `agents[].memory`(user|project|local 三词同映射引擎平面 agent:<type>);型面纯 additive、公面 962、零 wire 新键、peer 不动;§50。上一版 0.72.2 = **patch**:workflow 视图两票 —— `LiveWorkflowController.resolution()` 六态(snapshot() 的 null 三义拆开)+ `noteOwnWorkflowRun` own 台账同拍登记;型面纯 additive、公面 961、零 wire 键、peer 不动;§49。上一版 0.72.1 = **patch**:server 7.80.1 提货 —— 409 `conflict.resume_context_unavailable` 结构读数(`staleAfterSec` / `runId`;sdk 9.6.0 尚未带键,经 sdk 今天恒缺席)+ `SkillSpec.baseDir`(只在本机车道带);型面纯 additive、公面 960、peer 不动;§48。上一版 0.72.0 = **minor**:型面 BREAKING —— 39 个零消费导出退出公面(CC-32 退役批,[7419] §45 预告 / cli [7422] 同意 / web-client·desktop 过节拍沉默 = 同意;名单见 §47a S-1);运行期零 BREAKING、公面 956、peer 不动、devDep core ~7.20.1;随批:已退役名账 `removed` + export-liveness 门 G 段 + 冻结账门 ⑧c;§47。上一版 0.71.4 = **patch**:core 7.20.1 提货 —— `ENGINE_NOTICE_CODES` 65 + `wiring_manifest.writeProtection` 第七段 `_sema_writeProtection`;型面纯 additive、公面 995、peer 不动、devDep core `~7.20.1`;§46。上一版 0.71.3 = **patch**:门体系清账批 —— CC-24 export-liveness 门 + 39 个导出退役预告(0.72.0 删,表态制)/ CC-26 `as unknown as` 铸链棘轮 / CC-25 冻结账门 ⑧ 段 / CC-06 B-081 包侧半场(终帧 `_sema_effective_reasoning` / `_sema_effective_memory_scopes` + resume reopen 族 + `routePairingVerdict`);型面纯 additive、公面 986 → 995、peer 不动;§45。上一版 0.71.2 = **patch**:接入方验收两票归包 —— CC-28 B-132 decide 拒体三句去内部车道词 / CC-29 B-133 committedUuids 唯一性(重复 ⇒ 形 f);零型面变化、公面 986、peer 不动;§44。上一版 0.71.1 = **patch**:接入档打回修正 —— CC-27 `ApprovalCardRequest.readRootCandidate?` 帧→卡透传位 + 新导出型 `ReadRootCandidateView`;型面纯 additive、公面 986 不变、peer 不动;§43。上一版 0.71.0 = **minor**:型面 BREAKING 六件 —— peer sdk 地板 >=9.6.0 + agent-types >=0.3.0 / `SkillsListingTruncatedFactsView` 删 `requestedBudgetBytes?`·`laneClamped?` / `WiringManifestMcpEntry` → `WiringManifestMcpEntryView` / `MAX_AGENT_SKILLS` 删 / `decide.workflow_host_not_parked` 退役;运行期零 BREAKING。内容:core 7.20.0 提货(闭集 +5 六十四码)/ 🔴 CC-16 `text_segment_end.committedUuids[]` / CC-08 全五件(tool_disclosure / tool_progress 两 chrome 臂、wiring_manifest tools·hooks·lsp 进切片、tool_roster_delta 接上、context_usage 进切片、`readRootCandidate` 镜像)/ CC-19 `mcpEngineLegPresence` 归包 / CC-20 not_parked clean-cut;公面 986;§42 / 42y 八条)|
23
+ | peer:wire 契约 | `@sema-agent/sdk` **>=12.0.1**(value-level,非 type-only;**0.84.0 抬版**:12.x 声明每会话后台登记列表 `sessions.background`、能力位 `capabilities.background.listFace` 与七词闭集的后台状态型,本包三者都读(登记读口的端点门与归类口的编译期穷举),按 12.0.1 编译,11.3.0 失去物料见证;0.84.1 / 0.85.0 / 0.85.1 / 0.85.2 / 0.86.0 不动(0.86.0:sdk 14 的三处型面 BREAKING 本包已按结构读覆盖,本版 `.d.ts` 在 sdk 12.0.1 / 13.1.0 / 14.0.0 / 15.0.0 下严格编译零错误,§112y)。此前 **0.80.0 曾抬到 >=11.3.0**:11.3.0 在两条回决口体上声明 `settledBy?: "policy"`、`Settlement.kind` 第十三词 `policy_refused` 与三错误码(0.80.0 至 0.83.6 都在这条地板上);**0.79.0 曾抬到 >=11.2.1**:11.2.x 声明 `capabilities.mcpProbe`、`mcpCapabilities` / `probeMcp` + `McpProbeFace`、写回执第三支 `stillLive: "unknown"`,11.2.1 再补 `TaskRequest.approverPosture` 与审批帧键 `mandated`(型面 + 运行期键锚),本包按 11.2.1 编译,11.0.1 失去物料见证;**0.78.0 曾抬到 >=11.0.1**:11.x 声明 `DeniedBy` 第十词 `read_boundary`、`rules.write` 200 体按 `stillLive` 判别联合、`RemovalLiveness` / `RuleWriteRequest` / `RuleWriteResult` / `RuleWriteBehavior` 包根导出、`TaskRequest.excludeAllTools`,本包按 11.0.1 编译,9.8.1 失去物料见证;**0.75.0 曾抬到 >=9.8.1**:9.8.x 声明 `Capabilities.deviceExecutor.management?`,9.7.1 失去物料见证;**0.74.0 曾抬到 >=9.7.1**:9.7.x 追平的六处型面是本包 0.73.3 起的编译基线,且 9.6.0 失去物料见证;**0.71.0 曾抬到 >=9.6.0**:`tool_disclosure` / `tool_progress` 两帧型与 `ToolApprovalFrame.readRootCandidate` 自 9.6.0 起;0.69.0 曾抬到 >=9.4.0(`reasoning_end` / `lastLegMcp`),0.60.0 抬到 >=8.4.0;地板由 `scripts/run-sdk-floor-test.mjs` 的 `FLOOR` 与 public-surface 门 C-CC-3「不低于见证到的最低实装版」双钉)| `package.json` `peerDependencies` |
24
24
  | peer:会话词汇表 | `@sema-agent/agent-types` **>=0.3.0**(type-only,零运行时;0.71.0 抬版:devDep 与 peer 同步,type-superset 门 ④ 撞名预警对着 0.3.0 的 .d.ts 求值) | 同上 |
25
25
  | runtime dep | `diff` ^9.0.0(**唯一**一条;portability 门按**等值**钉死) | `package.json` `dependencies` |
26
- | 公开导出面 | **1310** 个运行期符号(+ **60 个测试钩,两种拼法**:36 个 `__*ForTests` + 24 个单下划线开头(22 个 `_*ForTest` + `_resetLiveQuestionStore` / `_resetUltracodePreset`) —— 两种都在 `public-export-baseline.json` 的 `testHookNames` 里、各自受棘轮管,**不在** `names` 的 1310 里。运行期 `Object.keys(dist/index.js)` 的全量 = 1310 + 60 = **1370**;只剔双下划线那 36 个会多数出 24 个来,那不是棘轮盲区;最简单的剔法是去掉所有以 `_` 开头的名字(公面运行期名没有一个以 `_` 开头);= 下一版(未发布)的值:相对 0.75.1 **+16**,两票合计 —— **CC-77 ①** 审批决断结局单源判别联合 6 件:`approvalResolutionOf` / `isApprovalDecided` / `approvalNotSentCause` / `approvalUnsettledCause` + 两张 cause 词表 `APPROVAL_NOT_SENT_CAUSES` / `APPROVAL_UNSETTLED_CAUSES`(域 3);**CC-96** 记忆 spec 读面 10 件:`readAgentMemorySpec` / `unknownMemorySpecKeys` / `unknownMemorySpecKeysNote` / `memoryConfigRefusalNoteOf` / `KNOWN_AGENT_MEMORY_SPEC_KEYS` / `PENDING_MEMORY_SPEC_KEYS` / `MAX_UNKNOWN_MEMORY_SPEC_KEYS` / `CONFIG_MEMORY_PROJECT_KEY_SPELLING` / `CONFIG_MEMORY_WRITE_SCOPE_MISMATCH` + 判别形型(域 6 / 16)。CC-89 / CC-91 / CC-92 / CC-98 四票**零值导出增减**(新臂走 `ChromeEvent` 联合与内部臂表,`tasks_expand` 退役删的是联合成员不是导出名);1065 = 0.74.5 / 0.75.0 / 0.75.1 的值:相对 0.74.4 +4 —— `isNewEngineAgentPanelCycle`(CC-87,域 4)+ `approvalOutcomeNoteOf` 与两句固定文案常量(CC-88,域 3);1065 = 0.74.5 / 0.75.0 的值:相对 0.74.4 +4 —— `isNewEngineAgentPanelCycle`(CC-87,域 4)+ `approvalOutcomeNoteOf` 与两句固定文案常量(CC-88,域 3);1061 = 0.74.3 / 0.74.4 的值:相对 0.74.2 +9 —— CC-70 / CC-71 / CC-72 / CC-73 八件 + CC-80 `lastFlagValue`,见 §2b 域 3 / 4 / 10 / 15;1052 = 0.74.2 的值:相对 0.74.1 +6 —— CC-69 六件,见 §2b 域 9;1046 = 0.74.1 的值:相对 0.74.0 +1 —— `RETRACTED_CARD_DECISION_KIND`,见 §2b 域 3;1045 = 0.74.0 的值:相对 0.73.5 +1 —— `isStaleEngineAgentPanelEnd`,见 §2b 域 4;1044 = 0.73.5 的值:相对 0.73.4 +11 —— CC-58 规模告警十一件,名单见 §2b 域 12;1033 = 0.73.4 的值:相对 0.73.3 +1 —— `TOOL_INPUT_JOIN_MAX_CALLS`,见 §2b 域 1;1032 = 0.73.3 的值:相对 0.73.2 +6 —— CC-61 六件,名单见 §2b 域 9;1026 = 0.73.2 的值(导出名零增减);= 0.73.1 的值:相对 0.73.0 +7 —— CC-56 六件 / CC-57 一件,名单见 §2b 域 3 / 15;1019 = 0.73.0 的值(导出名零增减,BREAKING 在类型面);= 0.72.14 的值:相对 0.72.13 +8 —— CC-55 八件,名单见 §2b 域 3;1011 = 0.72.13 的值:相对 0.72.12 +18 —— CC-46 八件 / CC-54 六件 / CC-53 两件 / CC-50 缺席口两件,名单见 §2b 域 3 / 4 / 9 / 10;993 = 0.72.12 的值(测试钩 45):相对 0.72.11 +4 —— CC-50 `OUTCOME_UNKNOWN_ROW_PREFIX` / `isOutcomeUnknownRowText` / `TASK_NOTIFICATION_TERMINAL_STATUSES` / `isTaskNotificationTerminalStatus`;989 = 0.72.10 的值:相对 0.72.9 +4 —— CC-41 `LEADER_RUN_STATUSES` / `LEADER_REJ_HEAD_DISPLAY_MAX` / `projectLeaderConflict` / `leaderConflictDetail`;985 = 0.72.9 的值:相对 0.72.8 +8 —— CC-30 `MCP_RECONNECT_OUTCOMES` / `MCP_RECONNECT_TRANSACTION_NOTICE` / `projectMcpReconnectResult` / `classifyMcpReconnectFailure` / `reconnectMcpServer` / `projectMcpReconnectCapability` / `mcpReconnectOutcomeDetail`、CC-39② `readAutoConsolidationArmed`;977 = 0.72.8 的值:相对 0.72.7 +6 —— CC-39③ `MEMORY_OFF` / `memoryOffDeclarationField` / `memoryOffDeclared`、CC-43 `MODEL_OUTPUT_ERROR_PREFIX` / `isModelOutputErrorText` / `isModelOutputErrorRowText`;971 = 0.72.7 的值:相对 0.72.6 +2 —— CC-42 core 7.22.0 提货 `MCP_REDIAL_OUTCOMES` / `readMcpServerRedialed`;969 = 0.72.6 的值:相对 0.72.5 +1 —— CC-40 `steerFollowIntent`;968 = 0.72.5 的值:相对 0.72.4 +6 —— CC-31 server 7.82.1 提货 `capabilities.webSearch.backend` 四态读面:`WEB_SEARCH_BACKEND_NONE` / `projectWebSearchBackendCapability` / `observedWebSearchBackend` / `noteEngineCapsForWebSearchBackend` / `forgetWebSearchBackendReading` / `webSearchBackendDoctorDetail`;962 = 0.72.3 的值:相对 0.72.2 +1 —— CC-39① `AGENT_MEMORY_WORDS`;0.72.2 相对 0.72.1 +1 —— CC-37 `noteOwnWorkflowRun`;0.72.1 相对 0.72.0 +4 —— CC-33 server 7.80.1 提货:`RESUME_CONTEXT_UNAVAILABLE` / `resumeContextUnavailableFromError` / `resumeContextUnavailableContent` / `skillBaseDirOf`;0.72.0 相对 0.71.4 −39 —— CC-32 退役批删 export-liveness 登记 retire 的 39 个零消费导出(23 常量 + 16 函数,名单见 §47);995 = 0.71.3 的值:相对 0.71.2 +9 —— CC-06 `readEffectiveReasoning` / `readEffectiveMemoryScopes` / `resumeReopenFromError` / `resumeReopenContent` / `routePairingVerdict` 五函数 + `RESUME_REOPEN_CODES` / `RESUME_ENV_FAILED` / `RESUME_TOOL_UNAVAILABLE` / `RESUME_TOOL_CONTRACT_MISMATCH` 四常量;986 = 0.71.0 的值:相对 0.70.2 −`MAX_AGENT_SKILLS` −`DECIDE_WORKFLOW_HOST_NOT_PARKED` +`projectToolRosterDelta` +`mcpEngineLegPresence`;986 = 0.70.0 的值:相对 0.69.2 **一件 additive(`readSkillsListingTruncated`,§39)、零删除**;985 = 0.69.2 的值:相对 0.69.1 **三件 additive、零删除**(CC-13 `isSubFlowSegmentEnd` / `SEGMENT_END_IDENTITY_KEYS` / `droppedWhySentence`,§38);982 = 0.69.0 未发布版的值(原排 0.68.3,因 peer 地板抬升改 minor)= 相对 0.68.2 **十七件 additive、零删除**:`fetchMcpPanel`(CC-03 补件,§36e)+ `readWorkflowResumeAdmissionIncomplete`(CC-05 core 7.18.0 #755)+ `installCoreValuePorts`/`hasCoreValuePorts`/`hasCoreValuePort`/`coreValuePortMisses`/`CORE_VALUE_PORT_NAMES` + 十读口(CC-07 core 值级端口,§36d);0.68.2 相对 0.68.1 十三件 additive:`SEMA_SEGMENT_ID_KEY`(CC-01 段身份键,§35f)/ `projectMcpPanel`+`mcpPanelLastLegDetail`+`projectMcpSection`(CC-03 `/mcp` 面板读视图,§35g)/ `resolveTextSegmentAuthority`/`createTextSegmentLedger`(L-318 `text_end` 权威段替换的判决单源 + print 形段账,详见 §35b/§35c)/ `memoryCaptureDeclarationField`/`MEMORY_CAPTURE_OFF`(L-316 会话级隐私声明的字面唯一铸点,§35d)/ `engineUrl`/`probeHealth`(L-61 件④ SDK 纯工具面原样转口,§35d)/ `AgentClient`/`isApprovalRequestFrameV1`/`isApprovalRevokeFrameV1`(L-61 存量清零:SDK **wire 面**原样转口,§35e)。`0.68.1`/`0.68.0` 是 **952**,那批是相对 0.67.2 **二十件 additive、🔴 两件删除(BREAKING)**:additive = `TERMINAL_CAUSE_KINDS`/`isTerminalCauseKind`/`RUN_TERMINAL_NOT_SUCCESS_STATUSES`/`RUN_TERMINAL_STATUSES`(L-247 终态词两表分源,详见 §33b)/ `SEMA_SUBAGENT_USAGE_PARTIAL_KEY`/`subagentUsageIsPartial`(L-244 子代下界位自有名,§33g)/ `ASK_UNRESOLVABLE_CAUSES`/`readAskUnresolvable`/`DURABLE_MANDATE_SOURCES`/`readDurableGateUnavailable`(core 7.17.0 #709 ①② 两只通告事实窄读器,§33c)/ `WORKFLOW_PARK_TRUTH_UNREADABLE`/`WORKFLOW_PARK_NOT_PENDING`/`WORKFLOW_PARK_BINDING_BROKEN`/`WORKFLOW_PARK_REQUIRES_RUN_STORE`(四个单码常量 🔧 0.72.0 退役)/`WORKFLOW_PARK_REFUSAL_CODES`/`isWorkflowParkRefusalCode`/`readWorkflowParks`(core 7.17.0 #652 park 真相四码 + parks 三键读器,§33d)/ `ENGINE_STOP_REASONS`/`engineStopReasonToCc`(L-246 A13 停止原词映射下沉,§33g)/ `readCancelRequested`(L-230 读面,§33f);🔴 **删除两件** `TERMINAL_NOT_SUCCESS_STATUSES`/`TERMINAL_STATUSES`(随 L-247 两表分源更名成 `RUN_TERMINAL_*`,clean-cut **不留别名** —— 留一个别名等于让端可以继续按合起来的那张表读,分源就白做了,详见 §33b)。`0.67.0` 是 **934**,那批是相对 0.66.0 **七件 additive、🔴 两件删除**:additive = `CLASSIFIER_DENY_CAUSES`/`isClassifierDenyCause`/`classifierDenyCauseOf`/`classifierDenyCauseDetail`(core 7.14.0 退役 `classifierUnavailable` 之后的**拒绝面**继任读器与措辞,详见 §32b)/ `RULE_STORE_UNREADABLE_KINDS`/`isRuleStoreUnreadableKind`/`ruleStoreUnreadableDetail`(core 7.14.0 #688 C3 的规则店机制位三件,详见 §32d);🔴 **删除两件** `classifierUnavailableOf`/`classifierUnavailableDetail`(随 core 7.14.0 的 Retired keys 表整族退役,clean-cut 不留别名,详见 §32b;同批删的还有**型** `ClassifierUnavailableView`、卡位与帧位 `classifierUnavailable`、以及一条恒真的型面钉 `_askOriginWordsPin`)。`0.66.0` 是 **929**,那批是一件 additive、零删除:`readRunCostFacts`(终局成本事实的唯一读器:`costBreakdown` / `nested` 窄读 + 对账三段与两个判别位,终帧超集键与 chrome 对账臂共用它;详见 §31c);已发的 **0.65.x 十一件 additive、两件删除**:additive = `DECIDE_WORKFLOW_HOST_UNKNOWN`/`DECIDE_WORKFLOW_HOST_NOT_PARKED`/`DECIDE_WORKFLOW_REMEMBER_UNSUPPORTED`/`DECIDE_WORKFLOW_LANE_CODES`/`readDecideReceipt`/`decideAcceptedNotResolved`/`decideRefusalFromError`(B-070 `/decide` 回执读面与三码人话,详见 §30h)/ `TERMINAL_NOT_SUCCESS_STATUSES`/`isTerminalNotSuccess`/`TERMINAL_STATUSES`/`isTerminalStatus`(L-215② 终局词汇单铸谓词,详见 §30j);🔴 **删除两件** `AUTO_MODE_BREAKER_CAUSES`/`classifierBreakerOf`(熔断族随 core 7.12.0 的 Removed(BREAKING) 整只退役,clean-cut 不留别名,详见 §30k②;同批删的还有**型** `ClassifierBreakerView` 与 `ClassifierStatusView.breaker` 一位)。`0.64.2` 是 **919**,那批是一件 additive、零删除:`readDenialLimitFallback`(限额回落卡的窄读器上公面,壳侧同判据副本退役,详见 §29③);`0.64.0` 是 **918**,那批是件①+件② 十三件 additive、零删除:`CLASSIFIER_STATUS_STATES`/`classifierBreakerOf`/`classifierStatusOf`/`classifierStatusDetail`(分类器状态面,详见 §28②)/ `THINKING_FORMATS`/`THINKING_FORMAT_WIRE_TWINS`/`THINKING_DISABLE_PROBE_ORDER`/`MODEL_PROBE_VERDICTS`/`PROBE_PROMPT`/`PROBE_MAX_TOKENS`(两个探针常量 🔧 0.72.0 退役)/`probeRequestBody`/`probeModelCapability`/`applyProbeToEntry`(模型思考能力探测,详见 §28①);`0.63.0` 是 **905**,那批是八件 additive、零删除:`projectServerGateKnobs`/`postureKnobSourceOf`/`postureSourceIsOperatorPinned`/`postureKnobDetail`/`POSTURE_SOURCE_WORDS`(S-178 三根 posture 旋钮读数,详见 §27b)/ `PERSISTED_RULE_BEHAVIORS`/`PERSISTED_RULE_BEHAVIOR_UNKNOWN`/`persistedRuleBehaviorOf`/`persistedRuleBehaviorLabel`/`revokeTargetFromPersistedRule`(三态规则身份,§27c)/ `engineIdentityOf`/`engineIdentityVerdict`/`engineIdentityChanged`/`engineIdentityChangedBy`/`ENGINE_IDENTITY_ANCHORS`(S-179 代际锚,§27d)/ `GATE_DENIED_BY_WORDS`/`gateDeniedByDetail`/`ASK_ORIGIN_WORDS`/`askOriginDetail`(门词汇 +2,§27e)/ `PERMISSION_RULE_ISSUE_CODES`/`RETIRED_PERMISSION_RULE_ISSUE_CODES`/`permissionRuleIssueDetail`(规则 lint 码表,§27f)/ `projectToolRoster`/`toolRosterNames`/`toolShimFromRoster`/`applyToolRosterDelta`(L-161 工具名册,§27g)/ `ENGINE_NOTICE_CODES`/`ENGINE_NOTICE_AUDIENCE`/`noticeAudienceOf`/`engineNoticeInCatalog`/`MCP_INJECTION_DROP_REASONS`/`readMcpInjectionDrop`(L-167 通告码册,§27h)/ `AUTO_MODE_UNAVAILABLE_CAUSES`/`AUTO_MODE_BREAKER_CAUSES`/`classifierUnavailableOf`/`classifierUnavailableDetail`(件⑧ 分类器不可用事实,§27h2);`0.62.0` 是 **869**,那批是五件 additive、**零删除**:`capForDisplay`(呈前消毒 + 封长的共用铸点,详见 §26⑦)/ `SEAT_SEND_MESSAGE_KEY_ORIGINS`(座位载荷逐键出身表,详见 §26③)/ `configureSubagentContentStore`+`subagentContentStoreConfig`+`SUBAGENT_CONTENT_STORE_DEFAULTS`(子代内容账本字节预算,测试钩 `__resetSubagentContentStoreConfigForTests` +1,详见 §26②);`0.61.0` 是 **864**,那批是三件 additive、**零删除**:`projectReadFacePosture`/`readFacePostureDetail`/`readFaceDisagreement`(S-167 READ 容纳面 operator 读器,详见 §25);`0.60.0` 是 **861**,那批是二十五件 additive、**零删除**:`readRunTerminal`/`runTerminalCode`/`runTerminalGateKind`/`runTerminalGateToolName`/`isReviewPark`/`REVIEW_PARK_GATE_KINDS` 六件终局因由读器 + `gateOutcomeOf`/`isDeniedGate`/`gateDeniedBy`/`gateApprover`/`isApprovalWindowExpiredGate`/`isDenialLimitAutoDeniedGate`/`isParkSlaExpiredGate`/`isHumanSettledGate` 八件门记录读器 + `projectWriteProtectionCapability`/`noteEngineCapsForWriteProtection`/`observedWriteProtection`/`forgetWriteProtectionReading`/`writeProtectionDoctorDetail`/`projectWriteProtectionPosture`/`writeProtectionPostureDetail` 七件写保护读面(测试钩 `__resetWriteProtectionReadingsForTests` +1)+ `readWireErrorCode` + 真机边界①的两件 `isGateParkedToolEnd`/`GATE_PARKED_ERROR_CODE` + 异源复审逼出的 `engineCapsGeneration`;`0.59.0` 是 **836**,那批是八件 additive:`RULE_OFFERS_ABSENCE_REASONS`/`DENIAL_LIMIT_KINDS`(后者 🔧 0.85.0 退出公面)两张闭词表再导出 + `engineCapValue` 能力位四态通用读口 + `projectSqlEngineCapability`/`observedSqlEngine`/`noteEngineCapsForSqlEngine`/`forgetSqlEngineReading`/`sqlEngineDoctorDetail` 五件 SQL 姿态读面(测试钩 `__resetSqlEngineReadingsForTests` +1);`0.58.0` 是 **828**,那批是三件 additive:`RULE_OFFER_MATCHES`/`RULE_OFFER_BATCH_MEMBER_KINDS`/`RULE_OFFER_UNCOVERED_REASONS` 三张闭词表再导出 + `RESUME_REFUSAL_CODES`/`RESUME_PLACEMENT_MISMATCH`/`resumeRefusalFromError`/`resumeRefusalContent` 四件文案铸点;`0.57.0` 是 **821**;`0.56.0`/`0.55.0` 是 **815**;已发 `0.54.0`(design/385 十件 additive 含 `AUTHORITY_ENVELOPE_TAGS` 🔧 0.72.0 退役);`0.52.0` 是 **805**(L-69⑨ 两件);`0.51.0` 是 **803**;`0.50.0` 是 **800**(S-81 五件);`0.49.0` 是 **795**;`0.48.0` 是 **794**;npm `0.47.0` 是 **790**,`0.46.0` 是 **787**,`0.44.0` 是 **783**,`0.43.1`/`0.43.0` 是 **776**,`0.42.0` 是 **771**,`0.41.0` 是 **767**,`0.39.0` 是 **766**,`0.38.0` 是 **764**;`0.37.0` 是 **753**,见 `CHANGELOG.md`) | `scripts/public-export-baseline.json` 的 `count` / `testHookCount` —— **别手抄进别处,以该文件为准** |
26
+ | 公开导出面 | **1354** 个运行期符号(+ **62 个测试钩,两种拼法**:38 个 `__*ForTests` + 24 个单下划线开头(22 个 `_*ForTest` + `_resetLiveQuestionStore` / `_resetUltracodePreset`) —— 两种都在 `public-export-baseline.json` 的 `testHookNames` 里、各自受棘轮管,**不在** `names` 的 1354 里。运行期 `Object.keys(dist/index.js)` 的全量 = 1354 + 62 = **1416**;只剔双下划线那 38 个会多数出 24 个来,那不是棘轮盲区;最简单的剔法是去掉所有以 `_` 开头的名字(公面运行期名没有一个以 `_` 开头);= 下一版(未发布)的值:相对 0.75.1 **+16**,两票合计 —— **CC-77 ①** 审批决断结局单源判别联合 6 件:`approvalResolutionOf` / `isApprovalDecided` / `approvalNotSentCause` / `approvalUnsettledCause` + 两张 cause 词表 `APPROVAL_NOT_SENT_CAUSES` / `APPROVAL_UNSETTLED_CAUSES`(域 3);**CC-96** 记忆 spec 读面 10 件:`readAgentMemorySpec` / `unknownMemorySpecKeys` / `unknownMemorySpecKeysNote` / `memoryConfigRefusalNoteOf` / `KNOWN_AGENT_MEMORY_SPEC_KEYS` / `PENDING_MEMORY_SPEC_KEYS` / `MAX_UNKNOWN_MEMORY_SPEC_KEYS` / `CONFIG_MEMORY_PROJECT_KEY_SPELLING` / `CONFIG_MEMORY_WRITE_SCOPE_MISMATCH` + 判别形型(域 6 / 16)。CC-89 / CC-91 / CC-92 / CC-98 四票**零值导出增减**(新臂走 `ChromeEvent` 联合与内部臂表,`tasks_expand` 退役删的是联合成员不是导出名);1065 = 0.74.5 / 0.75.0 / 0.75.1 的值:相对 0.74.4 +4 —— `isNewEngineAgentPanelCycle`(CC-87,域 4)+ `approvalOutcomeNoteOf` 与两句固定文案常量(CC-88,域 3);1065 = 0.74.5 / 0.75.0 的值:相对 0.74.4 +4 —— `isNewEngineAgentPanelCycle`(CC-87,域 4)+ `approvalOutcomeNoteOf` 与两句固定文案常量(CC-88,域 3);1061 = 0.74.3 / 0.74.4 的值:相对 0.74.2 +9 —— CC-70 / CC-71 / CC-72 / CC-73 八件 + CC-80 `lastFlagValue`,见 §2b 域 3 / 4 / 10 / 15;1052 = 0.74.2 的值:相对 0.74.1 +6 —— CC-69 六件,见 §2b 域 9;1046 = 0.74.1 的值:相对 0.74.0 +1 —— `RETRACTED_CARD_DECISION_KIND`,见 §2b 域 3;1045 = 0.74.0 的值:相对 0.73.5 +1 —— `isStaleEngineAgentPanelEnd`,见 §2b 域 4;1044 = 0.73.5 的值:相对 0.73.4 +11 —— CC-58 规模告警十一件,名单见 §2b 域 12;1033 = 0.73.4 的值:相对 0.73.3 +1 —— `TOOL_INPUT_JOIN_MAX_CALLS`,见 §2b 域 1;1032 = 0.73.3 的值:相对 0.73.2 +6 —— CC-61 六件,名单见 §2b 域 9;1026 = 0.73.2 的值(导出名零增减);= 0.73.1 的值:相对 0.73.0 +7 —— CC-56 六件 / CC-57 一件,名单见 §2b 域 3 / 15;1019 = 0.73.0 的值(导出名零增减,BREAKING 在类型面);= 0.72.14 的值:相对 0.72.13 +8 —— CC-55 八件,名单见 §2b 域 3;1011 = 0.72.13 的值:相对 0.72.12 +18 —— CC-46 八件 / CC-54 六件 / CC-53 两件 / CC-50 缺席口两件,名单见 §2b 域 3 / 4 / 9 / 10;993 = 0.72.12 的值(测试钩 45):相对 0.72.11 +4 —— CC-50 `OUTCOME_UNKNOWN_ROW_PREFIX` / `isOutcomeUnknownRowText` / `TASK_NOTIFICATION_TERMINAL_STATUSES` / `isTaskNotificationTerminalStatus`;989 = 0.72.10 的值:相对 0.72.9 +4 —— CC-41 `LEADER_RUN_STATUSES` / `LEADER_REJ_HEAD_DISPLAY_MAX` / `projectLeaderConflict` / `leaderConflictDetail`;985 = 0.72.9 的值:相对 0.72.8 +8 —— CC-30 `MCP_RECONNECT_OUTCOMES` / `MCP_RECONNECT_TRANSACTION_NOTICE` / `projectMcpReconnectResult` / `classifyMcpReconnectFailure` / `reconnectMcpServer` / `projectMcpReconnectCapability` / `mcpReconnectOutcomeDetail`、CC-39② `readAutoConsolidationArmed`;977 = 0.72.8 的值:相对 0.72.7 +6 —— CC-39③ `MEMORY_OFF` / `memoryOffDeclarationField` / `memoryOffDeclared`、CC-43 `MODEL_OUTPUT_ERROR_PREFIX` / `isModelOutputErrorText` / `isModelOutputErrorRowText`;971 = 0.72.7 的值:相对 0.72.6 +2 —— CC-42 core 7.22.0 提货 `MCP_REDIAL_OUTCOMES` / `readMcpServerRedialed`;969 = 0.72.6 的值:相对 0.72.5 +1 —— CC-40 `steerFollowIntent`;968 = 0.72.5 的值:相对 0.72.4 +6 —— CC-31 server 7.82.1 提货 `capabilities.webSearch.backend` 四态读面:`WEB_SEARCH_BACKEND_NONE` / `projectWebSearchBackendCapability` / `observedWebSearchBackend` / `noteEngineCapsForWebSearchBackend` / `forgetWebSearchBackendReading` / `webSearchBackendDoctorDetail`;962 = 0.72.3 的值:相对 0.72.2 +1 —— CC-39① `AGENT_MEMORY_WORDS`;0.72.2 相对 0.72.1 +1 —— CC-37 `noteOwnWorkflowRun`;0.72.1 相对 0.72.0 +4 —— CC-33 server 7.80.1 提货:`RESUME_CONTEXT_UNAVAILABLE` / `resumeContextUnavailableFromError` / `resumeContextUnavailableContent` / `skillBaseDirOf`;0.72.0 相对 0.71.4 −39 —— CC-32 退役批删 export-liveness 登记 retire 的 39 个零消费导出(23 常量 + 16 函数,名单见 §47);995 = 0.71.3 的值:相对 0.71.2 +9 —— CC-06 `readEffectiveReasoning` / `readEffectiveMemoryScopes` / `resumeReopenFromError` / `resumeReopenContent` / `routePairingVerdict` 五函数 + `RESUME_REOPEN_CODES` / `RESUME_ENV_FAILED` / `RESUME_TOOL_UNAVAILABLE` / `RESUME_TOOL_CONTRACT_MISMATCH` 四常量;986 = 0.71.0 的值:相对 0.70.2 −`MAX_AGENT_SKILLS` −`DECIDE_WORKFLOW_HOST_NOT_PARKED` +`projectToolRosterDelta` +`mcpEngineLegPresence`;986 = 0.70.0 的值:相对 0.69.2 **一件 additive(`readSkillsListingTruncated`,§39)、零删除**;985 = 0.69.2 的值:相对 0.69.1 **三件 additive、零删除**(CC-13 `isSubFlowSegmentEnd` / `SEGMENT_END_IDENTITY_KEYS` / `droppedWhySentence`,§38);982 = 0.69.0 未发布版的值(原排 0.68.3,因 peer 地板抬升改 minor)= 相对 0.68.2 **十七件 additive、零删除**:`fetchMcpPanel`(CC-03 补件,§36e)+ `readWorkflowResumeAdmissionIncomplete`(CC-05 core 7.18.0 #755)+ `installCoreValuePorts`/`hasCoreValuePorts`/`hasCoreValuePort`/`coreValuePortMisses`/`CORE_VALUE_PORT_NAMES` + 十读口(CC-07 core 值级端口,§36d);0.68.2 相对 0.68.1 十三件 additive:`SEMA_SEGMENT_ID_KEY`(CC-01 段身份键,§35f)/ `projectMcpPanel`+`mcpPanelLastLegDetail`+`projectMcpSection`(CC-03 `/mcp` 面板读视图,§35g)/ `resolveTextSegmentAuthority`/`createTextSegmentLedger`(L-318 `text_end` 权威段替换的判决单源 + print 形段账,详见 §35b/§35c)/ `memoryCaptureDeclarationField`/`MEMORY_CAPTURE_OFF`(L-316 会话级隐私声明的字面唯一铸点,§35d)/ `engineUrl`/`probeHealth`(L-61 件④ SDK 纯工具面原样转口,§35d)/ `AgentClient`/`isApprovalRequestFrameV1`/`isApprovalRevokeFrameV1`(L-61 存量清零:SDK **wire 面**原样转口,§35e)。`0.68.1`/`0.68.0` 是 **952**,那批是相对 0.67.2 **二十件 additive、🔴 两件删除(BREAKING)**:additive = `TERMINAL_CAUSE_KINDS`/`isTerminalCauseKind`/`RUN_TERMINAL_NOT_SUCCESS_STATUSES`/`RUN_TERMINAL_STATUSES`(L-247 终态词两表分源,详见 §33b)/ `SEMA_SUBAGENT_USAGE_PARTIAL_KEY`/`subagentUsageIsPartial`(L-244 子代下界位自有名,§33g)/ `ASK_UNRESOLVABLE_CAUSES`/`readAskUnresolvable`/`DURABLE_MANDATE_SOURCES`/`readDurableGateUnavailable`(core 7.17.0 #709 ①② 两只通告事实窄读器,§33c)/ `WORKFLOW_PARK_TRUTH_UNREADABLE`/`WORKFLOW_PARK_NOT_PENDING`/`WORKFLOW_PARK_BINDING_BROKEN`/`WORKFLOW_PARK_REQUIRES_RUN_STORE`(四个单码常量 🔧 0.72.0 退役)/`WORKFLOW_PARK_REFUSAL_CODES`/`isWorkflowParkRefusalCode`/`readWorkflowParks`(core 7.17.0 #652 park 真相四码 + parks 三键读器,§33d)/ `ENGINE_STOP_REASONS`/`engineStopReasonToCc`(L-246 A13 停止原词映射下沉,§33g)/ `readCancelRequested`(L-230 读面,§33f);🔴 **删除两件** `TERMINAL_NOT_SUCCESS_STATUSES`/`TERMINAL_STATUSES`(随 L-247 两表分源更名成 `RUN_TERMINAL_*`,clean-cut **不留别名** —— 留一个别名等于让端可以继续按合起来的那张表读,分源就白做了,详见 §33b)。`0.67.0` 是 **934**,那批是相对 0.66.0 **七件 additive、🔴 两件删除**:additive = `CLASSIFIER_DENY_CAUSES`/`isClassifierDenyCause`/`classifierDenyCauseOf`/`classifierDenyCauseDetail`(core 7.14.0 退役 `classifierUnavailable` 之后的**拒绝面**继任读器与措辞,详见 §32b)/ `RULE_STORE_UNREADABLE_KINDS`/`isRuleStoreUnreadableKind`/`ruleStoreUnreadableDetail`(core 7.14.0 #688 C3 的规则店机制位三件,详见 §32d);🔴 **删除两件** `classifierUnavailableOf`/`classifierUnavailableDetail`(随 core 7.14.0 的 Retired keys 表整族退役,clean-cut 不留别名,详见 §32b;同批删的还有**型** `ClassifierUnavailableView`、卡位与帧位 `classifierUnavailable`、以及一条恒真的型面钉 `_askOriginWordsPin`)。`0.66.0` 是 **929**,那批是一件 additive、零删除:`readRunCostFacts`(终局成本事实的唯一读器:`costBreakdown` / `nested` 窄读 + 对账三段与两个判别位,终帧超集键与 chrome 对账臂共用它;详见 §31c);已发的 **0.65.x 十一件 additive、两件删除**:additive = `DECIDE_WORKFLOW_HOST_UNKNOWN`/`DECIDE_WORKFLOW_HOST_NOT_PARKED`/`DECIDE_WORKFLOW_REMEMBER_UNSUPPORTED`/`DECIDE_WORKFLOW_LANE_CODES`/`readDecideReceipt`/`decideAcceptedNotResolved`/`decideRefusalFromError`(B-070 `/decide` 回执读面与三码人话,详见 §30h)/ `TERMINAL_NOT_SUCCESS_STATUSES`/`isTerminalNotSuccess`/`TERMINAL_STATUSES`/`isTerminalStatus`(L-215② 终局词汇单铸谓词,详见 §30j);🔴 **删除两件** `AUTO_MODE_BREAKER_CAUSES`/`classifierBreakerOf`(熔断族随 core 7.12.0 的 Removed(BREAKING) 整只退役,clean-cut 不留别名,详见 §30k②;同批删的还有**型** `ClassifierBreakerView` 与 `ClassifierStatusView.breaker` 一位)。`0.64.2` 是 **919**,那批是一件 additive、零删除:`readDenialLimitFallback`(限额回落卡的窄读器上公面,壳侧同判据副本退役,详见 §29③);`0.64.0` 是 **918**,那批是件①+件② 十三件 additive、零删除:`CLASSIFIER_STATUS_STATES`/`classifierBreakerOf`/`classifierStatusOf`/`classifierStatusDetail`(分类器状态面,详见 §28②)/ `THINKING_FORMATS`/`THINKING_FORMAT_WIRE_TWINS`/`THINKING_DISABLE_PROBE_ORDER`/`MODEL_PROBE_VERDICTS`/`PROBE_PROMPT`/`PROBE_MAX_TOKENS`(两个探针常量 🔧 0.72.0 退役)/`probeRequestBody`/`probeModelCapability`/`applyProbeToEntry`(模型思考能力探测,详见 §28①);`0.63.0` 是 **905**,那批是八件 additive、零删除:`projectServerGateKnobs`/`postureKnobSourceOf`/`postureSourceIsOperatorPinned`/`postureKnobDetail`/`POSTURE_SOURCE_WORDS`(S-178 三根 posture 旋钮读数,详见 §27b)/ `PERSISTED_RULE_BEHAVIORS`/`PERSISTED_RULE_BEHAVIOR_UNKNOWN`/`persistedRuleBehaviorOf`/`persistedRuleBehaviorLabel`/`revokeTargetFromPersistedRule`(三态规则身份,§27c)/ `engineIdentityOf`/`engineIdentityVerdict`/`engineIdentityChanged`/`engineIdentityChangedBy`/`ENGINE_IDENTITY_ANCHORS`(S-179 代际锚,§27d)/ `GATE_DENIED_BY_WORDS`/`gateDeniedByDetail`/`ASK_ORIGIN_WORDS`/`askOriginDetail`(门词汇 +2,§27e)/ `PERMISSION_RULE_ISSUE_CODES`/`RETIRED_PERMISSION_RULE_ISSUE_CODES`/`permissionRuleIssueDetail`(规则 lint 码表,§27f)/ `projectToolRoster`/`toolRosterNames`/`toolShimFromRoster`/`applyToolRosterDelta`(L-161 工具名册,§27g)/ `ENGINE_NOTICE_CODES`/`ENGINE_NOTICE_AUDIENCE`/`noticeAudienceOf`/`engineNoticeInCatalog`/`MCP_INJECTION_DROP_REASONS`/`readMcpInjectionDrop`(L-167 通告码册,§27h)/ `AUTO_MODE_UNAVAILABLE_CAUSES`/`AUTO_MODE_BREAKER_CAUSES`/`classifierUnavailableOf`/`classifierUnavailableDetail`(件⑧ 分类器不可用事实,§27h2);`0.62.0` 是 **869**,那批是五件 additive、**零删除**:`capForDisplay`(呈前消毒 + 封长的共用铸点,详见 §26⑦)/ `SEAT_SEND_MESSAGE_KEY_ORIGINS`(座位载荷逐键出身表,详见 §26③)/ `configureSubagentContentStore`+`subagentContentStoreConfig`+`SUBAGENT_CONTENT_STORE_DEFAULTS`(子代内容账本字节预算,测试钩 `__resetSubagentContentStoreConfigForTests` +1,详见 §26②);`0.61.0` 是 **864**,那批是三件 additive、**零删除**:`projectReadFacePosture`/`readFacePostureDetail`/`readFaceDisagreement`(S-167 READ 容纳面 operator 读器,详见 §25);`0.60.0` 是 **861**,那批是二十五件 additive、**零删除**:`readRunTerminal`/`runTerminalCode`/`runTerminalGateKind`/`runTerminalGateToolName`/`isReviewPark`/`REVIEW_PARK_GATE_KINDS` 六件终局因由读器 + `gateOutcomeOf`/`isDeniedGate`/`gateDeniedBy`/`gateApprover`/`isApprovalWindowExpiredGate`/`isDenialLimitAutoDeniedGate`/`isParkSlaExpiredGate`/`isHumanSettledGate` 八件门记录读器 + `projectWriteProtectionCapability`/`noteEngineCapsForWriteProtection`/`observedWriteProtection`/`forgetWriteProtectionReading`/`writeProtectionDoctorDetail`/`projectWriteProtectionPosture`/`writeProtectionPostureDetail` 七件写保护读面(测试钩 `__resetWriteProtectionReadingsForTests` +1)+ `readWireErrorCode` + 真机边界①的两件 `isGateParkedToolEnd`/`GATE_PARKED_ERROR_CODE` + 异源复审逼出的 `engineCapsGeneration`;`0.59.0` 是 **836**,那批是八件 additive:`RULE_OFFERS_ABSENCE_REASONS`/`DENIAL_LIMIT_KINDS`(后者 🔧 0.85.0 退出公面)两张闭词表再导出 + `engineCapValue` 能力位四态通用读口 + `projectSqlEngineCapability`/`observedSqlEngine`/`noteEngineCapsForSqlEngine`/`forgetSqlEngineReading`/`sqlEngineDoctorDetail` 五件 SQL 姿态读面(测试钩 `__resetSqlEngineReadingsForTests` +1);`0.58.0` 是 **828**,那批是三件 additive:`RULE_OFFER_MATCHES`/`RULE_OFFER_BATCH_MEMBER_KINDS`/`RULE_OFFER_UNCOVERED_REASONS` 三张闭词表再导出 + `RESUME_REFUSAL_CODES`/`RESUME_PLACEMENT_MISMATCH`/`resumeRefusalFromError`/`resumeRefusalContent` 四件文案铸点;`0.57.0` 是 **821**;`0.56.0`/`0.55.0` 是 **815**;已发 `0.54.0`(design/385 十件 additive 含 `AUTHORITY_ENVELOPE_TAGS` 🔧 0.72.0 退役);`0.52.0` 是 **805**(L-69⑨ 两件);`0.51.0` 是 **803**;`0.50.0` 是 **800**(S-81 五件);`0.49.0` 是 **795**;`0.48.0` 是 **794**;npm `0.47.0` 是 **790**,`0.46.0` 是 **787**,`0.44.0` 是 **783**,`0.43.1`/`0.43.0` 是 **776**,`0.42.0` 是 **771**,`0.41.0` 是 **767**,`0.39.0` 是 **766**,`0.38.0` 是 **764**;`0.37.0` 是 **753**,见 `CHANGELOG.md`) | `scripts/public-export-baseline.json` 的 `count` / `testHookCount` —— **别手抄进别处,以该文件为准** |
27
27
  | 常驻门 | 以 `scripts/gates-manifest.json` 的 `suites` 长度为准(**本档不抄这个数**) | `scripts/gates-manifest.json`;`npm test` 的名单等值门与它逐名对账 |
28
28
  | 沿革档 | 0.29.0 起建 `CHANGELOG.md`;更早批次记账在 `src/index.ts` 文件头 + `docs/REFACTOR-LEDGER.md` | — |
29
29
 
@@ -125,7 +125,7 @@ SDK 核对「本包 import 的每个值级符号仍然导出」「`TaskStats.cos
125
125
 
126
126
  > 📦 **随包 / 不随包**:npm 包只带 `dist` / `README` / `CHANGELOG` / 本档 / `LICENSE`。本档各处提到的 `docs/type-superset.json`、`scripts/*.json`、`scripts/run-*-test.mjs` 都是**仓内登记物与门,不随包发出** —— 装包的消费者找不到它们是预期;`_sema_` 超集键的**随包契约**就是本档各 §NNz 逐键处置表(键名 / 值域 / 缺席语义逐条在表里)。
127
127
  >
128
- > 全集真源 = `scripts/public-export-baseline.json` 的 `names`(**1310** 项;该基线只覆盖**根**入口,子路径入口 `./registry` 的名单在 §86 与 `scripts/run-sdk-registry-transit-test.mjs` A / C 段)。
128
+ > 全集真源 = `scripts/public-export-baseline.json` 的 `names`(**1354** 项;该基线只覆盖**根**入口,子路径入口 `./registry` 的名单在 §86 与 `scripts/run-sdk-registry-transit-test.mjs` A / C 段)。
129
129
  > 本节**不逐名抄**,只给「域 → 承重导出 → 用途 → 实现锚」。承重导出 = 一个端为了让这个域干活
130
130
  > **必须**直接调到的那几个符号;其余是它们的类型、变体与辅助位。
131
131
  > 两个入口:根 `import { … } from '@sema-agent/client-core'`(会话运行时;`exports` 的 `.`)+ `import { … } from '@sema-agent/client-core/registry'`(云控制面原样转口,0.79.1 起;`exports` 的 `./registry`,§86);
@@ -149,31 +149,31 @@ SDK 核对「本包 import 的每个值级符号仍然导出」「`TaskStats.cos
149
149
  `WorkflowsGateUnknownDenial` 四形**不在**基线里,`src/selfOrchestrationDenial.ts` 对基线贡献
150
150
  **4** 项运行期导出(三个函数 + `SELF_ORCHESTRATION_RETRY_WITHOUT`)。
151
151
 
152
- 1310 项的内部构成(帮助端估读表大小;0.85.1 +2 函数 +1 常量(CC-248 回执省略成因的终端用户向取句口 + 句表;CC-259 按会话呈现回执登记口复活,0.72.0 退出过);0.85.0 +26 函数 +9 常量 −2 函数 −1 常量(CC-241 plan-review 决断台账六口;CC-246 会话后台任务停止口 + 受据归类口 + 三态闭集;CC-217 / CC-243 服务端 7.104.0 会话侧:存档读不出三载体读口 + 判定 + 人话 + 码常量、跳过记录通告读器 + 补句、删会话 409 读口 + 措辞 + 码常量、停驻挪动族读口 + 措辞 + 判定 + 闭集 + 三码常量;CC-243 能力 / 同步体侧:公钥发现四口、文件历史请求词片段口 + 常量、粗码识别表 + 判定;CC-221 三个运行期名字退出公面,逐名见 §2z);0.84.1 +11 函数 +4 常量(CC-210 开标签定位口 / CC-219 detach 400 纯判定 / CC-213 服务端自铸码受众表 + 事实读器 / CC-214 按码派发口 + 派发表 / CC-225 停泊决断 422 读口 + 措辞 + 码优先判定 + 码常量 / CC-229 撤销动词 + 措辞 + 出路句 + 判据本体 + 码常量);0.84.0 +8 函数 −7 常量 −19 函数(CC-194 B 半登记读数五口 / CC-185 读目录授权结论通告读口 / CC-206 `hands` 段读口与措辞两口;CC-223 收回 0.71.3 预告的 26 个 `export *` 放大件,🔧 0.84.0 退出公面,逐名见 CHANGELOG 0.84.0);0.83.5 +1 函数(CC-204 字符面标记位置读口 `displayUntrustedMarks`);0.83.4 +4 函数(CC-205 `<system-reminder>` 剥离 / 解包两口;CC-203 座位过境口;CC-201 清「用户关卡」记号口);0.83.2 +15 函数 +4 常量(CC-193 姿态放行谓词 / CC-195 强制词闭集 + 成员判据 + 读口 + 措辞 / CC-194 缺席行判定 11 函数 + 3 常量);0.83.1 +10 函数 +6 常量(CC-112 展示层安全出口 `displayUntrusted` / CC-117 会话规则记录无损判定 + 措辞单源 + 五词成因闭集 / CC-174 插件 hook 每轮计划 + 查询口 + 事件判定口 + 四只措辞口 + 五张闭集);0.83.0 −3 函数(联网搜索旧三读口 `webSearchFromEnv` / `webSearchFromSettings` / `resolveWebSearch` 🔧 0.83.0 退出公面)+1 函数(CC-175 `terminalReasonForResult`);0.82.7 +5 函数(CC-182 每请求联网搜索配置三态判决:段判决 / env 判决 / 两车道合成 / 措辞单源 / endpoint 显示形);0.82.5 +5 函数 +1 常量(CC-169 print 车道 init 帧工具面:流包装器 / 判定闸 / 名册信号分类口 / 判定口 / 留痕措辞单源 + 等待上界常量);0.82.2 +1 函数(CC-164 云控制面有效配置回体措辞单源 `cloudEffectiveNotices`);0.82.1 +15 函数(CC-154 续跑折叠码读口 + 措辞 / CC-163 文件历史捕获读口六口 / CC-151 模型身份可解析判据五口 / CC-161 自定义代理载荷作废重投口 / 决断失败码「门还在」判定;测试钩 +1);0.82.0 +17 函数 +1 常量(CC-146 `/rewind` 代码档与对话档可用性读口投影 + 三口读账 + 两只判据 + 三句措辞 / CC-150 额度投影三口 / CC-152 装配期无手两口 / CC-154 取码单源 + 折叠码常量 / CC-156 坏档行坐标读口 + 措辞);0.80.0 +1 常量 +10 函数(CC-133 结算词表镜像 `SETTLEMENT_KIND_WORDS` + 五函数 / CC-134 三函数 / CC-132 两函数);0.79.0 +8 常量 +21 函数 +1 类(CC-74 MCP 状态面两张词表 + 九函数 / CC-110 `approvalIsMandated` + `mandatedApprovalDetail` / CC-116 · 118 · 123 `APPROVER_POSTURE_BYPASS` + `REQUEST_LANES` + 三函数 / CC-125 拒因两面四常量 `HITL_POLICY_DENY_MESSAGE` `APPROVAL_DENY_SETTLED_BY_WORDS` `SEMA_DENIAL_KIND_KEY` `CC_TOOL_DENIAL_KINDS` + 四函数 / CC-128 会话 bundle 面转口 `pushSessionBundle` `pullSessionBundle` `importSessionBundle` + 错误类 `APIError`;测试钩 +1);0.78.1 +2 常量 +9 函数(CC-113 displayBody / CC-97 b 五动词 + 判官 + 覆盖面判词 / CC-121 readSubmitWiringManifest);0.77.0 +2 常量 +2 函数(CC-101)+ 5 常量 +12 函数(CC-105 / CC-103;测试钩 +1);0.76.1 +1 常量 +4 函数(CC-36)+ 13 函数(CC-102;测试钩 +2)+ 1 常量 +20 函数(CC-97a;测试钩 +2)+ 2 函数(身份快照助手上公面);0.76.0 +8 常量 +8 函数(CC-77 ① 2+4 / CC-96 6+4);0.74.5 +2 常量 +2 函数(CC-87 / CC-88);0.74.3 +2 常量 +7 函数(CC-70 / CC-71 / CC-72 / CC-73 / CC-80;测试钩 +1);0.74.2 +6 函数(CC-69;测试钩 +1);0.74.1 +1 常量(CC-67);0.74.0 +1 函数(CC-66);0.73.5 +8 常量 +3 函数(CC-58);0.73.4 +1 常量(CC-34);0.73.3 +6 函数(CC-61;测试钩 +1);0.73.1 +2 常量 +5 函数(CC-56 / CC-57;测试钩 +1);0.72.14 +1 常量 +7 函数(CC-55);0.72.13 +4 常量 +14 函数(CC-46 / CC-54 / CC-53 / CC-50 缺席口);0.72.12 +2 常量 +2 函数(CC-50);0.72.10 +2 常量 +2 函数(CC-41);0.72.9 +2 常量 +6 函数(CC-30 / CC-39②);0.72.8 +2 常量 +4 函数(CC-39③ / CC-43);0.72.7 +1 常量 +1 函数(CC-42);0.72.6 +1 函数(CC-40);0.72.5 +1 常量 +5 函数(CC-31);0.72.3 +1 常量(CC-39①);0.72.2 +1 函数(CC-37);0.72.1 +1 常量 +3 函数(CC-33);0.72.0 −23 常量 −16 函数(CC-32 退役批);0.71.3 +4 常量 +5 函数(CC-06);0.71.0 −2 常量 `MAX_AGENT_SKILLS` / `DECIDE_WORKFLOW_HOST_NOT_PARKED` +2 函数 `projectToolRosterDelta` / `mcpEngineLegPresence`;0.70.0 起 +1 函数;0.69.2 起 +3:常量 1 / 函数 2):**357** 项是 `SCREAMING_SNAKE` 常量数据表/词汇表
152
+ 1354 项的内部构成(帮助端估读表大小;0.86.0 +40 函数 +6 常量 −1 函数 −1 常量(CC-249 引擎 7.34.0 提货:六只通告事实读器 + 权限模式折回原因闭集 + 门记录模式放行读口;CC-251 写口拒名码常量 + `rules.` 族前缀谓词;CC-252 凭据没被接受那一句;CC-253 `APPROVER_POSTURE_BYPASS` / `approverPostureDeclarationField` 🔧 0.86.0 退出公面,逐名见 §2z;CC-250 存储姿态六口 + 中心接线六口 + 计费入口 503 码常量 + 读口 + 一句;CC-256 本机无 OS 沙箱判定 + 一句 + 诊断面车道段读口;CC-257 `inheritEnv` 两词闭集 + 判词口 + 版本地板常量 + 版本闸 + 片段口 + 不发那一句 + 两只拒各读口与一句;CC-262 / CC-263 / CC-265 权限规则表 · 工具声明族 · 键形拒两张键表各一读口一句 / 谓词;CC-266 `-p` 首帧来源超集键铸口);0.85.1 +2 函数 +1 常量(CC-248 回执省略成因的终端用户向取句口 + 句表;CC-259 按会话呈现回执登记口复活,0.72.0 退出过);0.85.0 +26 函数 +9 常量 −2 函数 −1 常量(CC-241 plan-review 决断台账六口;CC-246 会话后台任务停止口 + 受据归类口 + 三态闭集;CC-217 / CC-243 服务端 7.104.0 会话侧:存档读不出三载体读口 + 判定 + 人话 + 码常量、跳过记录通告读器 + 补句、删会话 409 读口 + 措辞 + 码常量、停驻挪动族读口 + 措辞 + 判定 + 闭集 + 三码常量;CC-243 能力 / 同步体侧:公钥发现四口、文件历史请求词片段口 + 常量、粗码识别表 + 判定;CC-221 三个运行期名字退出公面,逐名见 §2z);0.84.1 +11 函数 +4 常量(CC-210 开标签定位口 / CC-219 detach 400 纯判定 / CC-213 服务端自铸码受众表 + 事实读器 / CC-214 按码派发口 + 派发表 / CC-225 停泊决断 422 读口 + 措辞 + 码优先判定 + 码常量 / CC-229 撤销动词 + 措辞 + 出路句 + 判据本体 + 码常量);0.84.0 +8 函数 −7 常量 −19 函数(CC-194 B 半登记读数五口 / CC-185 读目录授权结论通告读口 / CC-206 `hands` 段读口与措辞两口;CC-223 收回 0.71.3 预告的 26 个 `export *` 放大件,🔧 0.84.0 退出公面,逐名见 CHANGELOG 0.84.0);0.83.5 +1 函数(CC-204 字符面标记位置读口 `displayUntrustedMarks`);0.83.4 +4 函数(CC-205 `<system-reminder>` 剥离 / 解包两口;CC-203 座位过境口;CC-201 清「用户关卡」记号口);0.83.2 +15 函数 +4 常量(CC-193 姿态放行谓词 / CC-195 强制词闭集 + 成员判据 + 读口 + 措辞 / CC-194 缺席行判定 11 函数 + 3 常量);0.83.1 +10 函数 +6 常量(CC-112 展示层安全出口 `displayUntrusted` / CC-117 会话规则记录无损判定 + 措辞单源 + 五词成因闭集 / CC-174 插件 hook 每轮计划 + 查询口 + 事件判定口 + 四只措辞口 + 五张闭集);0.83.0 −3 函数(联网搜索旧三读口 `webSearchFromEnv` / `webSearchFromSettings` / `resolveWebSearch` 🔧 0.83.0 退出公面)+1 函数(CC-175 `terminalReasonForResult`);0.82.7 +5 函数(CC-182 每请求联网搜索配置三态判决:段判决 / env 判决 / 两车道合成 / 措辞单源 / endpoint 显示形);0.82.5 +5 函数 +1 常量(CC-169 print 车道 init 帧工具面:流包装器 / 判定闸 / 名册信号分类口 / 判定口 / 留痕措辞单源 + 等待上界常量);0.82.2 +1 函数(CC-164 云控制面有效配置回体措辞单源 `cloudEffectiveNotices`);0.82.1 +15 函数(CC-154 续跑折叠码读口 + 措辞 / CC-163 文件历史捕获读口六口 / CC-151 模型身份可解析判据五口 / CC-161 自定义代理载荷作废重投口 / 决断失败码「门还在」判定;测试钩 +1);0.82.0 +17 函数 +1 常量(CC-146 `/rewind` 代码档与对话档可用性读口投影 + 三口读账 + 两只判据 + 三句措辞 / CC-150 额度投影三口 / CC-152 装配期无手两口 / CC-154 取码单源 + 折叠码常量 / CC-156 坏档行坐标读口 + 措辞);0.80.0 +1 常量 +10 函数(CC-133 结算词表镜像 `SETTLEMENT_KIND_WORDS` + 五函数 / CC-134 三函数 / CC-132 两函数);0.79.0 +8 常量 +21 函数 +1 类(CC-74 MCP 状态面两张词表 + 九函数 / CC-110 `approvalIsMandated` + `mandatedApprovalDetail` / CC-116 · 118 · 123 `APPROVER_POSTURE_BYPASS`(🔧 0.86.0 退出公面)+ `REQUEST_LANES` + 三函数 / CC-125 拒因两面四常量 `HITL_POLICY_DENY_MESSAGE` `APPROVAL_DENY_SETTLED_BY_WORDS` `SEMA_DENIAL_KIND_KEY` `CC_TOOL_DENIAL_KINDS` + 四函数 / CC-128 会话 bundle 面转口 `pushSessionBundle` `pullSessionBundle` `importSessionBundle` + 错误类 `APIError`;测试钩 +1);0.78.1 +2 常量 +9 函数(CC-113 displayBody / CC-97 b 五动词 + 判官 + 覆盖面判词 / CC-121 readSubmitWiringManifest);0.77.0 +2 常量 +2 函数(CC-101)+ 5 常量 +12 函数(CC-105 / CC-103;测试钩 +1);0.76.1 +1 常量 +4 函数(CC-36)+ 13 函数(CC-102;测试钩 +2)+ 1 常量 +20 函数(CC-97a;测试钩 +2)+ 2 函数(身份快照助手上公面);0.76.0 +8 常量 +8 函数(CC-77 ① 2+4 / CC-96 6+4);0.74.5 +2 常量 +2 函数(CC-87 / CC-88);0.74.3 +2 常量 +7 函数(CC-70 / CC-71 / CC-72 / CC-73 / CC-80;测试钩 +1);0.74.2 +6 函数(CC-69;测试钩 +1);0.74.1 +1 常量(CC-67);0.74.0 +1 函数(CC-66);0.73.5 +8 常量 +3 函数(CC-58);0.73.4 +1 常量(CC-34);0.73.3 +6 函数(CC-61;测试钩 +1);0.73.1 +2 常量 +5 函数(CC-56 / CC-57;测试钩 +1);0.72.14 +1 常量 +7 函数(CC-55);0.72.13 +4 常量 +14 函数(CC-46 / CC-54 / CC-53 / CC-50 缺席口);0.72.12 +2 常量 +2 函数(CC-50);0.72.10 +2 常量 +2 函数(CC-41);0.72.9 +2 常量 +6 函数(CC-30 / CC-39②);0.72.8 +2 常量 +4 函数(CC-39③ / CC-43);0.72.7 +1 常量 +1 函数(CC-42);0.72.6 +1 函数(CC-40);0.72.5 +1 常量 +5 函数(CC-31);0.72.3 +1 常量(CC-39①);0.72.2 +1 函数(CC-37);0.72.1 +1 常量 +3 函数(CC-33);0.72.0 −23 常量 −16 函数(CC-32 退役批);0.71.3 +4 常量 +5 函数(CC-06);0.71.0 −2 常量 `MAX_AGENT_SKILLS` / `DECIDE_WORKFLOW_HOST_NOT_PARKED` +2 函数 `projectToolRosterDelta` / `mcpEngineLegPresence`;0.70.0 起 +1 函数;0.69.2 起 +3:常量 1 / 函数 2):**362** 项是 `SCREAMING_SNAKE` 常量数据表/词汇表
153
153
  (矩阵、键集、env 名、锚串)而非可调用物;**7** 项是 PascalCase 运行期值
154
154
  (`ControlRouter` / `ControlSafetyError` / `HitlBridge` / `HitlSafetyError` / `DecideTransportRetryExhaustedError` / `APIError`);
155
155
  **35** 项是 `*For(sessionKey, …)` 的 per-session 变体(0.85.1 +1:`registerArmedGateFromQuestionIdFor` 复活,多会话宿主的按会话呈现回执登记口,§110;0.84.0 −3:`notePlanReviewAnsweredFor` / `planReviewArmedKeyFor` / `waitForGateArmedFor` 🔧 0.84.0 退出公面;0.72.0 −4:`clearArmedGateFor` / `onGateArmedFor` / `notePlanReviewAnsweredIfDecisiveFor` 退出公面,第四名 `registerArmedGateFromQuestionIdFor` 即 0.85.1 复活的那一只)(§6;其中 `engineNamespaceKeyFor` 是命名巧合 —— 参数是 baseUrl 不是 sessionKey,见域 14)。
156
156
 
157
- ### 2b. 域图(16 域,逐域计数之和 = 1310)
157
+ ### 2b. 域图(16 域,逐域计数之和 = 1354)
158
158
 
159
159
  | # | 域 | 名数 | 承重导出 | 用途 | 实现锚 |
160
160
  |---|---|---|---|---|---|
161
161
  | 1 | **适配内核(下行主链)** | 68 | `handsSeamReadingOf` / `handsSeamDetail`(0.84.0 CC-206:接线回执 `hands` 段三态读口 + 措辞单源,「没有自带工具」那一句与 `handsMountedDetail` 同句首句尾,两者不是同一个事实;§107)· `terminalReasonForResult`(0.83.0 CC-175:结果帧 CC 键 `terminal_reason` 的读口,与铸点同一只判据,给端自拼的结果帧与旧转录;§100)· `handsMountedFromManifest` / `handsMountedDetail`(0.82.0 CC-152:装配期「这一 run 有没有手」三态判据 + 措辞单源,读 `wiring_manifest` 名册的 `mountedBy`;§92)· `readSubmitWiringManifest`(0.78.1 CC-121:非流式提交 200 体 `TaskResult.wiringManifest` 的三态读口,view 与流式腿 chrome 臂同一张;§83)· `TOOL_INPUT_JOIN_MAX_CALLS`(0.73.4 CC-34:终帧拒绝清单第三键的本流快照上限;§66)· `OUTCOME_UNKNOWN_ROW_PREFIX` / `isOutcomeUnknownRowText`(0.72.12 CC-50:第三条中性终局行「结局不知道」,读结果帧 `_sema_outcome`;§59)· `MODEL_OUTPUT_ERROR_PREFIX` / `isModelOutputErrorText` / `isModelOutputErrorRowText`(0.72.8 CC-43:runStream 第二条中性臂 —— core malformed tool-call 一族的行身份;§55)· `readEffectiveReasoning` · `readEffectiveMemoryScopes`(0.71.3 CC-06:终帧 `_sema_effective_reasoning` / `_sema_effective_memory_scopes` 的窄读器,§45)· `isSubFlowSegmentEnd` · `SEGMENT_END_IDENTITY_KEYS` · `droppedWhySentence`(0.69.2 CC-13:三件出公面,§38)· `adapt` · `createWireToCcAdapter` · `runStream` · `eventToSdkMessage` · `terminalToSdkResult` · `SEMA_SEGMENT_ID_KEY`(0.68.2 CC-01:committed assistant 文本行顶层段身份键的唯一字面量出处,壳只读)· `projectMcpSection`(0.68.2 CC-03:`wiring_manifest.mcp[]` 与 `/mcp` 面板 `lastLegMcp.mcp[]` 共用的同一只条目读器)· `readRunCostFacts`(0.66.0:终局成本事实的**唯一读器** —— `TaskStats.costBreakdown` / `nested` 逐键窄读 + 对账三段(own/nested/compaction)与两个「没定价」判别位;终帧的两个超集键与 chrome 臂 `run_cost_reconciled` **共用它**,两面不会各算各的,详见 §31c)· `TERMINAL_CAUSE_KINDS`/`isTerminalCauseKind`(0.68.0 / L-247:**core 终局因由**闭集,四词 `completed|failed|blocked|paused`)· `RUN_TERMINAL_NOT_SUCCESS_STATUSES`/`isTerminalNotSuccess`/`RUN_TERMINAL_STATUSES`/`isTerminalStatus`(L-215② 终局词汇的**单铸谓词**,0.68.0 随 L-247 **两表分源**更名 —— `killed` 属 server run 行状态面、`paused` 属 core 因由面,合成一张会让两边加词时都读不出该改哪儿;`blocked` 是 agent 自报终态,`suspended`/`needs_review` 刻意不在表里,详见 §33b / §30j)· `SEMA_SUBAGENT_USAGE_PARTIAL_KEY`/`subagentUsageIsPartial`(0.68.0 / L-244:子代用量下界位的**自有名**与唯一判据,与终帧 `_sema_usage_lower_bound` 分名,详见 §33g) · `turnUsageToModelUsage` · `isRunStreamActive` · `ADAPTER_DIVERGENCES` · `readRunTerminal` / `runTerminalCode` / `runTerminalGateKind` / `runTerminalGateToolName` / `isReviewPark` / `REVIEW_PARK_GATE_KINDS`(0.60.0 / engine ≥7.64.0:一次 run **怎么结束的**唯一读器 —— 终局从八个平面键换成一条带标因由 `terminal`,四臂 + `unknown` 防御臂 + `plane` 两代字节标;🔴 不认识的终态词绝不折成成功、本包不提供「因由→五词 status」的兼容投影,详见 §24b)| 引擎 SSE `AgentEvent` → 端要渲的**双面输出**:transcript(`SDKMessage`)+ chrome(瞬态 `ChromeEvent`)。**本包存在的理由** | `src/adapt.ts`、`src/adapt/{arms,wireShapes,panelTasks}.ts`(经 `adapt.ts` 再导出)、`src/adapter/runStream.ts`、`src/adapter/downstream/*`、`src/adapter/types.ts`、`src/runTerminal.ts` |
162
162
  | 2 | **seam 公共契约** | 4(其余为 type-only) | `CHROME_ARMS` · `deriveTranscriptId` · `snapshotSegmentIdentity` / `snapshotIsSubFlow`(0.76.1:身份四键一次性快照助手,投影口与 adapt 侧全部臂的唯一身份读点;§77)| 公共词汇 + **id 确定性不变量**(同一条流重放 ⇒ 同一串 id)。`CHROME_ARMS` = 端「我要消费哪些 chrome 臂」的对照清单 | `src/seam.ts` |
163
- | 3 | **HITL 决断卡链**(§4/§5 主战场) | 227 | `registerArmedGateFromQuestionIdFor`(0.85.1 CC-259:多会话宿主在自己的会话键上登记呈现回执,`reopenPlanReviewCard` 回执形等的就是这个会话键上的回执;0.72.0 退出公面的名字复活;§110)· `decideParkMovedFromError` / `decideParkMovedContent` / `isDecideParkMovedCode` / `DECIDE_PARK_MOVED_CODES` + `DECIDE_NOT_PARKED` / `DECIDE_GATE_MOVED` / `DECIDE_CLAIM_LOST`(0.85.0 CC-243:`/decide` 停驻挪动三码的读口、按码分说的一句与判定,四个决断出口补句、停泊腿按码续读流;`isCodeClassifiedGateFailure` 不收本族;§109)· `notePlanReviewDecisionHandedOver` / `planReviewPendingReadMark` / `planReviewDecisionInFlight` / `notePlanReviewDecisionNotApplied` / `notePlanReviewGateLeft` / `latestPlanReviewDecisionMark`(0.85.0 CC-241:plan-review 决断台账 —— 交出登记 + 读起点刻度 + 拒开判据 + 「没生效」与「离门」两只说一声的口 + 交出刻度;`reopenPlanReviewCard` 按它拒开;§109)· `isCodeClassifiedGateFailure`(0.84.1 CC-225:这枚决断失败码自己说清了处置、失败文字不许再按「门已决」词表扫 —— `isGateStandingErrorCode` 的两码 ∪ 422 `parked_resume.startup_failed`;§108)· `removeRefusedSessionRules` / `sessionPolicyRemovalNotice` / `isEngineRefusedToolName`(0.84.1 CC-229:会话规则记录里引擎会拒启的条目的窄撤销动词 + 八臂措辞单源 + 引擎准备期按名字拒启的判据本体,比 `sessionPolicyDeliverable` 的 `legacy_tool_name` 判词宽;撤销动词必交这台部署一跑的工具名册,名册里的名与别名不撤;§108)· `toolPermissionRequestAskBits` / `clearPlanReviewUserDismissals`(0.83.4 CC-203 / CC-201:卡请求 → 座位请求的四位过境口,与卡请求同一把窄读;会话换代时清「用户关卡」记号;§104)· `askSurvivesPosture` / `readApprovalMandate`(0.83.2 CC-193 / CC-195:常驻姿态下「这一张卡能不能由姿态答掉」三态谓词;卡上强制词读口,缺席答缺席;§102)· `sessionPolicyDeliverable` / `sessionPolicyWithheldNotice` / `SESSION_POLICY_WITHHELD_WHY`(0.83.1 CC-117:一批规则串能不能无损写进会话规则记录 —— 整批可送才送、五词成因闭集、每词一句措辞单源;宿主侧那一份的继任;§101)· `isPolicyRefusedGate` / `denyAttributionRefusalFromError` / `denyAttributionRefusalContent` / `removalConsequenceLineForBehavior` / `ruleRemovalBehaviorOf`(0.80.0 CC-133 · CC-132:策略拒谓词 + 归因键三码读口与人话 + 删除规则后果句铸点与闭集读口;§87)· `HITL_POLICY_DENY_MESSAGE` / `APPROVAL_DENY_SETTLED_BY_WORDS` / `readApprovalDenySettledBy` / `SEMA_DENIAL_KIND_KEY`(0.79.0 CC-125:deny 收口帧按 `settledBy` 分两串的冻结句、决断对象归因位的两词可达子集与只认自有数据属性的读器、分类词信封键名;§85)· `approvalIsMandated`(0.79.0 CC-110:审批卡「清不掉」判据口,帧位 ∨ 寄存行缺席词两条腿一个真源;§85)· `readSessionPolicy` / `tightenSessionPolicy` / `tightenedSessionRules` / `classifySessionPolicyFailure` / `sessionPolicyTightenNotice` / `SESSION_POLICY_RULE_FIELDS` / `SESSION_POLICY_TIGHTEN_UNKNOWN_WHY`(0.77.0 CC-105:会话策略窄读 + 收紧编排五臂判别联合)· `writePersistedRule` / `PERSISTED_RULE_WRITE_BEHAVIORS` / `PERSISTED_RULE_WRITE_REFUSAL_CAUSES` / `PERSISTED_RULE_WRITE_UNKNOWN_REASONS`(0.77.0 CC-103:持久规则单步写面,词表派生不手抄;§79)· `persistedRulesWriteAvailable`(0.76.1 CC-102:单步写入口便利口,只派生自写键自己的四态,不与撤销面那只合取;§77)· `approvalResolutionOf` / `isApprovalDecided` / `approvalNotSentCause` / `approvalUnsettledCause` / `APPROVAL_NOT_SENT_CAUSES` / `APPROVAL_UNSETTLED_CAUSES`(CC-77 ①:「一次审批决断最后怎么了」的单源判别联合 `decided` / `not_sent` / `unsettled`,两条腿的结局对象一次判别;既有结局型面一字不动)· `approvalOutcomeNoteOf` / `APPROVAL_NOTE_RETRACTED_DETAIL` / `APPROVAL_NOTE_EDIT_REFUSED_DETAIL`(0.74.5 CC-88:审批结局便签单源;§73)· `decideReceiptReopen` / `suspendedReopenOf`(0.74.3 CC-73:reopen 族第二臂;§71)· `RETRACTED_CARD_DECISION_KIND`(0.74.1 CC-67:卡口无决断收口;§69)· `planReviewOutcomeTail`(0.73.1 CC-57:outcome 尾句六态单铸点;投递口闩;§63)· `readLivePendingRows` / `suspendedSubagentAsks` / `countApprovalsAwaitingDecision` / `createSuspendedAskTracker` / `livePendingRowToApprovalFrame` / `surfaceSuspendedAskAndRespond` / `surfaceEditRefusedOnBlindAsk` + `EDIT_REFUSED_ON_BLIND_ASK_WARN_TEXT`(0.72.14 CC-55:悬挂的流内 ask 读面 / 视图 / 去重账 / 决断口;§61)· `planReviewCardOptions` / `planReviewChoiceFromAnswer` / `versionSupportsPlanReviewModeAfter` / `isPlanReviewModeAfter` + `PLAN_REVIEW_APPROVE_AUTO_LABEL` / `PLAN_REVIEW_APPROVE_MANUAL_LABEL` / `PLAN_REVIEW_MODE_AFTER_WORDS` / `PLAN_REVIEW_MODE_AFTER_MIN_ENGINE`(0.72.13 CC-46:plan_review 批准后模式 `permissionModeAfter` 发口与三选卡双闸;§60)· `makeHitlCanUseTool` · `HitlBridge` · `findPendingForTask` · `readDecideReceipt`/`decideAcceptedNotResolved`/`decideRefusalFromError`(B-070:`/decide` 200 = **投递受理**不是「门已解决」;`executionOutcome` 缺席 = 未知,详见 §30h) · `HitlSafetyError` · `bridgeAskUserQuestionGates` · `surfaceToolApprovalFrameAndRespond` / `surfaceFsApprovalAndDecide` · `readToolApprovalRespondAck` · `installApprovalCardPort(For)` · `installHitlHostSurface(For)` · `armPlanReviewApproval` · `reopenPlanReviewCard` · `decidePlanReview` · `startApprovalsFeed` · `pendingRowIsOwnedByThisSession` · `approvalCallKey`/`liveFrameCallKey`/`planReviewQuestionId` · `registerArmedGateFor`/`wasGateArmedFor` · `waitForGateArmed`/`onGateArmed`/`gateArmedWaitMs`(#244 F1 呈现回执事件源) · `planReviewArmedKey`/`notePlanReviewAnswered`/`notePlanReviewAnsweredIfDecisive`(A-024.4 plan 呈现分代;`waitForGateArmed` / `planReviewArmedKey` / `notePlanReviewAnswered` 三只的 `*For` 变体 0.84.0 退出公面) · `toolEndOutputText` · `waitForParkRowBirth` · `classifyAskParkRows` / `askParkRowArm` / `classifyAskParkChainFailure` · `readDecisionNoteAudit` / `decisionNoteAuditLine` · `resumeRunningOptions` / `resumeChoiceFromLabels` · `persistedRulesLaneAvailable`/`persistedRulesGovernanceAvailable` · `classifyRulesFailure` · `listAllPersistedRules` · `classifySkippedReason` · `readRulePersistOutcome`(#244 F2:persist-ack 读口与 `readToolApprovalRespondAck` 合成一处) · `parseLocalAllowRule`(durable 腿本地落规则窄化骨架,谓词经 `LocalAllowRuleDeps` 注入) · `readToolApprovalRespondRefusal`(#225 件5,0.42.0:respond 抛错的结构化原文读口 —— 三位各自防御读、各自缺席不铸、**三位皆缺席时整只返 `undefined`**;原样交还零加工,UNTRUSTED-for-display)· `installEditedRuleTextPrechecker` / `hasEditedRuleTextPrechecker` / `precheckEditedRuleText`([5076] 转出口,0.42.0:core 5.57.0 `precheckEditedRuleText` 的**端口注入形** —— 类型面 + 注入口 + 诚实缺席读口。🔴 **不是** value 级 re-export,理由见 §7 缺口 **P-34**;未装 ⇒ 返 `undefined`,绝不编一个 `{ok:true}`)· `RULE_NOT_SENT_WARN_TEXT` + `RULE_NOT_SENT_REJECTED_WARN_TEXT`(#334,0.43.0:人在卡上按下的「不再询问」被整条丢弃时的诚实告知(文案两句;发告知的两只函数 0.84.0 起是包内件)——**两条刻意分开**:前者=**引擎能力位未确认**(换台引擎/等探测就好),后者=**这次选择没过包内表核/互斥核**(表外文本/坏下标/两臂同场,换引擎也不会变) —— 编辑臂 `respondFreeFormRules` 与批臂 `respondBatchRuleOffers` 两条同形存量共用一条,与 `surfaceRememberNotApplied` 同族纪律:决断照送、只是规则没存,静默丢掉用户明确意图 = 让人以为功能坏了)· `projectCrashConverged`(L-38,0.49.0:`/v1/approvals` additive 键 `crashConverged` 的分桶投影 —— 崩溃收敛的孤儿审批读面,**缺席 ≠ 空数组**、分桶恰一个合取、坏行丢弃并计数,详见 §12;同批把 `ApprovalsResourceLike.list()` 的返回位 additive 放宽成 `ApprovalsListEnvelope`,老形 `{pending}` 仍可赋值)· `readRuleOffers` / `readRuleOfferSupply`(L-103/[C228],0.57.0 additive 导出:「不再询问」候选两代 wire 键的窄读器**公面化** —— 此前只经卡端口出包,不走卡端口架构的宿主只能自己重铸一把,而它承载的是兑付安全判据(原始下标不前移/逐条丢坏/闭集 kind/两代取舍序),详见 §20)· `RULE_OFFERS_ABSENCE_REASONS` / `DENIAL_LIMIT_KINDS`〔后者 🔧 0.85.0 退出公面,值改从 `@sema-agent/sdk` 根入口取〕(0.59.0 / sdk 8.3.0 提货:`ruleOffersAbsence` 三词与 `denialLimitFallback.limit` 二词的**运行期**闭词表再导出 —— 与 0.58.0 那三张同一条纪律:端拿它做判定别再手抄字面量。⚠️ **本包自己不拿这两张表做窄读判定**(两处都按开集透传,词表属主是 core、server 已按闭集拒过),再导出只是给端的 `switch` 一份可数的表,端仍必须带 `default` 臂,详见 §23a)· `DecideTransportRetryExhaustedError`(Inkglow-1085 P0a:decide 出站瞬断重试耗尽的 typed 判别 —— HitlBridge 内建单次退避重试,耗尽走重呈臂不判死 turn;端一般只消费行为,不需要 instanceof) · `gateOutcomeOf` / `isDeniedGate` / `gateDeniedBy` / `gateApprover` / `isApprovalWindowExpiredGate` / `isDenialLimitAutoDeniedGate` / `isParkSlaExpiredGate` / `isHumanSettledGate`(0.60.0 / engine ≥7.64.0:`tool_end.gate` 整条门记录的窄读器 + 判定谓词 —— 取代退役的四个正交词 `settledBy`/`resolution`/`autoDenied`/`approver`。🔴 **判定归包**:「是不是审批窗自己走完的拒绝」旧形上是端各自拼的两键合取,而三条窗词现在分得开、合并读回去等于把刚修好的判别力扔掉;⚠️ 公面型一律带 `View` 后缀 —— 本文件的 `GateOutcome`(决断腿结局)与 sdk 的 `GateOutcome`(引擎门记录)**同名不同义**,详见 §24c)· `isGateParkedToolEnd`(「这次调用没在这里结算」的**第二形**谓词:gate 缺席 + `errorCode:"gate.parked"`;端判这件事必须与 `isApprovalWindowExpiredGate` **两形合读**) · `readWireErrorCode`(B-037 候包件②:decide/取件失败上引擎 wire 机器码的单源读口,结构视图读不 `instanceof`;与本包铸的 `code` 是两个命名空间,详见 §24g)| suspended→decide→resume 环。🔴 **D-1 两元组 verbatim 回显**是字节级断言的安全不变量,端**不许重实现它的任何一段**。🔴 键空间边界(web [C1] d3 拦截):`gateIdentity` 四常量两函数只覆盖 HITL questionId/callKey 空间;seat 的 `TOOL_PERMISSION_REQUEST_ID_DOMAINS`(`plan:` 等)是另一键空间,**两者绝不合并**(合并=座位校验器静默拒全部 plan-review 卡) | `src/hitl/hitlBridge.ts`、`toolApprovalWire.ts`、`askGateWire.ts`、`planReviewWire.ts`、`hitlHostSurface.ts`、`gateIdentity.ts`、`armedGateRegistry.ts`、`parkOwnership.ts`、`parkResolver.ts`、`approvalsFeed.ts`、`frameRouter.ts`(**只挑名导出** `toolEndOutputText`/`ENGINE_ABORT_TOOL_RESULT`/`HITL_REJECT_MESSAGE`/`HITL_INTERRUPT_MESSAGE_FOR_TOOL_USE`)、`parkRowBirthWait.ts`、`approvalDecisionNoteAudit.ts`、`askParkRowRouting.ts`、`resumeRunningCard.ts`(#265 上收的判定层)、`persistedRulesWire.ts`、`localAllowRule.ts`(#244 F2 规则侧)、`crashConverged.ts`(L-38 崩溃收敛读面)、`sessionPolicyDeliverable.ts`(0.83.1 CC-117 会话规则无损判定)、`askSurvivesPosture.ts`(0.83.2 CC-193 姿态放行谓词)、`src/gateOutcome.ts` |
163
+ | 3 | **HITL 决断卡链**(§4/§5 主战场) | 228 | `gateModeRelease`(0.86.0 CC-249:门记录放行臂上「权限模式替人答掉一问」那一条账的具名读口,与 `gateOutcomeOf` 同一只窄读器;缺席不是「没经过模式放行」;§112)· `registerArmedGateFromQuestionIdFor`(0.85.1 CC-259:多会话宿主在自己的会话键上登记呈现回执,`reopenPlanReviewCard` 回执形等的就是这个会话键上的回执;0.72.0 退出公面的名字复活;§110)· `decideParkMovedFromError` / `decideParkMovedContent` / `isDecideParkMovedCode` / `DECIDE_PARK_MOVED_CODES` + `DECIDE_NOT_PARKED` / `DECIDE_GATE_MOVED` / `DECIDE_CLAIM_LOST`(0.85.0 CC-243:`/decide` 停驻挪动三码的读口、按码分说的一句与判定,四个决断出口补句、停泊腿按码续读流;`isCodeClassifiedGateFailure` 不收本族;§109)· `notePlanReviewDecisionHandedOver` / `planReviewPendingReadMark` / `planReviewDecisionInFlight` / `notePlanReviewDecisionNotApplied` / `notePlanReviewGateLeft` / `latestPlanReviewDecisionMark`(0.85.0 CC-241:plan-review 决断台账 —— 交出登记 + 读起点刻度 + 拒开判据 + 「没生效」与「离门」两只说一声的口 + 交出刻度;`reopenPlanReviewCard` 按它拒开;§109)· `isCodeClassifiedGateFailure`(0.84.1 CC-225:这枚决断失败码自己说清了处置、失败文字不许再按「门已决」词表扫 —— `isGateStandingErrorCode` 的两码 ∪ 422 `parked_resume.startup_failed`;§108)· `removeRefusedSessionRules` / `sessionPolicyRemovalNotice` / `isEngineRefusedToolName`(0.84.1 CC-229:会话规则记录里引擎会拒启的条目的窄撤销动词 + 八臂措辞单源 + 引擎准备期按名字拒启的判据本体,比 `sessionPolicyDeliverable` 的 `legacy_tool_name` 判词宽;撤销动词必交这台部署一跑的工具名册,名册里的名与别名不撤;§108)· `toolPermissionRequestAskBits` / `clearPlanReviewUserDismissals`(0.83.4 CC-203 / CC-201:卡请求 → 座位请求的四位过境口,与卡请求同一把窄读;会话换代时清「用户关卡」记号;§104)· `askSurvivesPosture` / `readApprovalMandate`(0.83.2 CC-193 / CC-195:常驻姿态下「这一张卡能不能由姿态答掉」三态谓词;卡上强制词读口,缺席答缺席;§102)· `sessionPolicyDeliverable` / `sessionPolicyWithheldNotice` / `SESSION_POLICY_WITHHELD_WHY`(0.83.1 CC-117:一批规则串能不能无损写进会话规则记录 —— 整批可送才送、五词成因闭集、每词一句措辞单源;宿主侧那一份的继任;§101)· `isPolicyRefusedGate` / `denyAttributionRefusalFromError` / `denyAttributionRefusalContent` / `removalConsequenceLineForBehavior` / `ruleRemovalBehaviorOf`(0.80.0 CC-133 · CC-132:策略拒谓词 + 归因键三码读口与人话 + 删除规则后果句铸点与闭集读口;§87)· `HITL_POLICY_DENY_MESSAGE` / `APPROVAL_DENY_SETTLED_BY_WORDS` / `readApprovalDenySettledBy` / `SEMA_DENIAL_KIND_KEY`(0.79.0 CC-125:deny 收口帧按 `settledBy` 分两串的冻结句、决断对象归因位的两词可达子集与只认自有数据属性的读器、分类词信封键名;§85)· `approvalIsMandated`(0.79.0 CC-110:审批卡「清不掉」判据口,帧位 ∨ 寄存行缺席词两条腿一个真源;§85)· `readSessionPolicy` / `tightenSessionPolicy` / `tightenedSessionRules` / `classifySessionPolicyFailure` / `sessionPolicyTightenNotice` / `SESSION_POLICY_RULE_FIELDS` / `SESSION_POLICY_TIGHTEN_UNKNOWN_WHY`(0.77.0 CC-105:会话策略窄读 + 收紧编排五臂判别联合)· `writePersistedRule` / `PERSISTED_RULE_WRITE_BEHAVIORS` / `PERSISTED_RULE_WRITE_REFUSAL_CAUSES` / `PERSISTED_RULE_WRITE_UNKNOWN_REASONS`(0.77.0 CC-103:持久规则单步写面,词表派生不手抄;§79)· `persistedRulesWriteAvailable`(0.76.1 CC-102:单步写入口便利口,只派生自写键自己的四态,不与撤销面那只合取;§77)· `approvalResolutionOf` / `isApprovalDecided` / `approvalNotSentCause` / `approvalUnsettledCause` / `APPROVAL_NOT_SENT_CAUSES` / `APPROVAL_UNSETTLED_CAUSES`(CC-77 ①:「一次审批决断最后怎么了」的单源判别联合 `decided` / `not_sent` / `unsettled`,两条腿的结局对象一次判别;既有结局型面一字不动)· `approvalOutcomeNoteOf` / `APPROVAL_NOTE_RETRACTED_DETAIL` / `APPROVAL_NOTE_EDIT_REFUSED_DETAIL`(0.74.5 CC-88:审批结局便签单源;§73)· `decideReceiptReopen` / `suspendedReopenOf`(0.74.3 CC-73:reopen 族第二臂;§71)· `RETRACTED_CARD_DECISION_KIND`(0.74.1 CC-67:卡口无决断收口;§69)· `planReviewOutcomeTail`(0.73.1 CC-57:outcome 尾句六态单铸点;投递口闩;§63)· `readLivePendingRows` / `suspendedSubagentAsks` / `countApprovalsAwaitingDecision` / `createSuspendedAskTracker` / `livePendingRowToApprovalFrame` / `surfaceSuspendedAskAndRespond` / `surfaceEditRefusedOnBlindAsk` + `EDIT_REFUSED_ON_BLIND_ASK_WARN_TEXT`(0.72.14 CC-55:悬挂的流内 ask 读面 / 视图 / 去重账 / 决断口;§61)· `planReviewCardOptions` / `planReviewChoiceFromAnswer` / `versionSupportsPlanReviewModeAfter` / `isPlanReviewModeAfter` + `PLAN_REVIEW_APPROVE_AUTO_LABEL` / `PLAN_REVIEW_APPROVE_MANUAL_LABEL` / `PLAN_REVIEW_MODE_AFTER_WORDS` / `PLAN_REVIEW_MODE_AFTER_MIN_ENGINE`(0.72.13 CC-46:plan_review 批准后模式 `permissionModeAfter` 发口与三选卡双闸;§60)· `makeHitlCanUseTool` · `HitlBridge` · `findPendingForTask` · `readDecideReceipt`/`decideAcceptedNotResolved`/`decideRefusalFromError`(B-070:`/decide` 200 = **投递受理**不是「门已解决」;`executionOutcome` 缺席 = 未知,详见 §30h) · `HitlSafetyError` · `bridgeAskUserQuestionGates` · `surfaceToolApprovalFrameAndRespond` / `surfaceFsApprovalAndDecide` · `readToolApprovalRespondAck` · `installApprovalCardPort(For)` · `installHitlHostSurface(For)` · `armPlanReviewApproval` · `reopenPlanReviewCard` · `decidePlanReview` · `startApprovalsFeed` · `pendingRowIsOwnedByThisSession` · `approvalCallKey`/`liveFrameCallKey`/`planReviewQuestionId` · `registerArmedGateFor`/`wasGateArmedFor` · `waitForGateArmed`/`onGateArmed`/`gateArmedWaitMs`(#244 F1 呈现回执事件源) · `planReviewArmedKey`/`notePlanReviewAnswered`/`notePlanReviewAnsweredIfDecisive`(A-024.4 plan 呈现分代;`waitForGateArmed` / `planReviewArmedKey` / `notePlanReviewAnswered` 三只的 `*For` 变体 0.84.0 退出公面) · `toolEndOutputText` · `waitForParkRowBirth` · `classifyAskParkRows` / `askParkRowArm` / `classifyAskParkChainFailure` · `readDecisionNoteAudit` / `decisionNoteAuditLine` · `resumeRunningOptions` / `resumeChoiceFromLabels` · `persistedRulesLaneAvailable`/`persistedRulesGovernanceAvailable` · `classifyRulesFailure` · `listAllPersistedRules` · `classifySkippedReason` · `readRulePersistOutcome`(#244 F2:persist-ack 读口与 `readToolApprovalRespondAck` 合成一处) · `parseLocalAllowRule`(durable 腿本地落规则窄化骨架,谓词经 `LocalAllowRuleDeps` 注入) · `readToolApprovalRespondRefusal`(#225 件5,0.42.0:respond 抛错的结构化原文读口 —— 三位各自防御读、各自缺席不铸、**三位皆缺席时整只返 `undefined`**;原样交还零加工,UNTRUSTED-for-display)· `installEditedRuleTextPrechecker` / `hasEditedRuleTextPrechecker` / `precheckEditedRuleText`([5076] 转出口,0.42.0:core 5.57.0 `precheckEditedRuleText` 的**端口注入形** —— 类型面 + 注入口 + 诚实缺席读口。🔴 **不是** value 级 re-export,理由见 §7 缺口 **P-34**;未装 ⇒ 返 `undefined`,绝不编一个 `{ok:true}`)· `RULE_NOT_SENT_WARN_TEXT` + `RULE_NOT_SENT_REJECTED_WARN_TEXT`(#334,0.43.0:人在卡上按下的「不再询问」被整条丢弃时的诚实告知(文案两句;发告知的两只函数 0.84.0 起是包内件)——**两条刻意分开**:前者=**引擎能力位未确认**(换台引擎/等探测就好),后者=**这次选择没过包内表核/互斥核**(表外文本/坏下标/两臂同场,换引擎也不会变) —— 编辑臂 `respondFreeFormRules` 与批臂 `respondBatchRuleOffers` 两条同形存量共用一条,与 `surfaceRememberNotApplied` 同族纪律:决断照送、只是规则没存,静默丢掉用户明确意图 = 让人以为功能坏了)· `projectCrashConverged`(L-38,0.49.0:`/v1/approvals` additive 键 `crashConverged` 的分桶投影 —— 崩溃收敛的孤儿审批读面,**缺席 ≠ 空数组**、分桶恰一个合取、坏行丢弃并计数,详见 §12;同批把 `ApprovalsResourceLike.list()` 的返回位 additive 放宽成 `ApprovalsListEnvelope`,老形 `{pending}` 仍可赋值)· `readRuleOffers` / `readRuleOfferSupply`(L-103/[C228],0.57.0 additive 导出:「不再询问」候选两代 wire 键的窄读器**公面化** —— 此前只经卡端口出包,不走卡端口架构的宿主只能自己重铸一把,而它承载的是兑付安全判据(原始下标不前移/逐条丢坏/闭集 kind/两代取舍序),详见 §20)· `RULE_OFFERS_ABSENCE_REASONS` / `DENIAL_LIMIT_KINDS`〔后者 🔧 0.85.0 退出公面,值改从 `@sema-agent/sdk` 根入口取〕(0.59.0 / sdk 8.3.0 提货:`ruleOffersAbsence` 三词与 `denialLimitFallback.limit` 二词的**运行期**闭词表再导出 —— 与 0.58.0 那三张同一条纪律:端拿它做判定别再手抄字面量。⚠️ **本包自己不拿这两张表做窄读判定**(两处都按开集透传,词表属主是 core、server 已按闭集拒过),再导出只是给端的 `switch` 一份可数的表,端仍必须带 `default` 臂,详见 §23a)· `DecideTransportRetryExhaustedError`(Inkglow-1085 P0a:decide 出站瞬断重试耗尽的 typed 判别 —— HitlBridge 内建单次退避重试,耗尽走重呈臂不判死 turn;端一般只消费行为,不需要 instanceof) · `gateOutcomeOf` / `isDeniedGate` / `gateDeniedBy` / `gateApprover` / `isApprovalWindowExpiredGate` / `isDenialLimitAutoDeniedGate` / `isParkSlaExpiredGate` / `isHumanSettledGate`(0.60.0 / engine ≥7.64.0:`tool_end.gate` 整条门记录的窄读器 + 判定谓词 —— 取代退役的四个正交词 `settledBy`/`resolution`/`autoDenied`/`approver`。🔴 **判定归包**:「是不是审批窗自己走完的拒绝」旧形上是端各自拼的两键合取,而三条窗词现在分得开、合并读回去等于把刚修好的判别力扔掉;⚠️ 公面型一律带 `View` 后缀 —— 本文件的 `GateOutcome`(决断腿结局)与 sdk 的 `GateOutcome`(引擎门记录)**同名不同义**,详见 §24c)· `isGateParkedToolEnd`(「这次调用没在这里结算」的**第二形**谓词:gate 缺席 + `errorCode:"gate.parked"`;端判这件事必须与 `isApprovalWindowExpiredGate` **两形合读**) · `readWireErrorCode`(B-037 候包件②:decide/取件失败上引擎 wire 机器码的单源读口,结构视图读不 `instanceof`;与本包铸的 `code` 是两个命名空间,详见 §24g)| suspended→decide→resume 环。🔴 **D-1 两元组 verbatim 回显**是字节级断言的安全不变量,端**不许重实现它的任何一段**。🔴 键空间边界(web [C1] d3 拦截):`gateIdentity` 四常量两函数只覆盖 HITL questionId/callKey 空间;seat 的 `TOOL_PERMISSION_REQUEST_ID_DOMAINS`(`plan:` 等)是另一键空间,**两者绝不合并**(合并=座位校验器静默拒全部 plan-review 卡) | `src/hitl/hitlBridge.ts`、`toolApprovalWire.ts`、`askGateWire.ts`、`planReviewWire.ts`、`hitlHostSurface.ts`、`gateIdentity.ts`、`armedGateRegistry.ts`、`parkOwnership.ts`、`parkResolver.ts`、`approvalsFeed.ts`、`frameRouter.ts`(**只挑名导出** `toolEndOutputText`/`ENGINE_ABORT_TOOL_RESULT`/`HITL_REJECT_MESSAGE`/`HITL_INTERRUPT_MESSAGE_FOR_TOOL_USE`)、`parkRowBirthWait.ts`、`approvalDecisionNoteAudit.ts`、`askParkRowRouting.ts`、`resumeRunningCard.ts`(#265 上收的判定层)、`persistedRulesWire.ts`、`localAllowRule.ts`(#244 F2 规则侧)、`crashConverged.ts`(L-38 崩溃收敛读面)、`sessionPolicyDeliverable.ts`(0.83.1 CC-117 会话规则无损判定)、`askSurvivesPosture.ts`(0.83.2 CC-193 姿态放行谓词)、`src/gateOutcome.ts` |
164
164
  | 4 | **子代 wire + 面板侧信道台账** | 110 | `stopEngineSessionBackground` / `engineSessionBackgroundReceiptReadingOf` / `ENGINE_SESSION_BACKGROUND_RECEIPT_STATES`(0.85.0 CC-246:会话后台任务停止口 + 受据三态归类口与闭集镜像,三端公共转调与单源措辞;认不出的受据词一律归「可能仍在跑」;§109)· `readEngineAgentRegistry` / `isEngineAgentRegistryListingSuperseded` / `engineAgentRegistryReadingOf` / `engineAgentRegistryKeyOf` / `engineAgentRegistryRowsMissingFromHost`(0.84.0 CC-194 B 半:后台代理登记读口 + 取代判定 + 归类口 + 登记键桥 + 补行谓词,宿主据此给缺席行回收入参的 `registry` 位填真读数;§107)· `isEngineAgentAbsentRow` / `engineAgentAbsenceMarkOf` / `engineAgentAbsenceClockStopMs` / `engineAgentPanelEventClearsAbsence` / `engineAgentRowCountsAsRunning` / `tallyEngineAgentRows` / `engineAgentTurnSweepSettles` / `reapEngineAgentAbsentRows` / `engineAgentAbsenceTtlDueAtMs` / `engineAgentAbsenceDroppedLine` / `engineAgentTerminalAfterDropLine` + `ENGINE_AGENT_ABSENT_ROW_TEXT` / `ENGINE_AGENT_ABSENCE_TTL_MS` / `ENGINE_AGENT_REGISTRY_READINGS`(0.83.2 CC-194:后台子代缺席行的判定 / 计数 / sweep 豁免 / 回收 / 措辞单源,回收只在后台代理登记确认离场时;§102)· `isNewEngineAgentPanelCycle`(0.74.5 CC-87:新周期单源判据;§73)· `resolveEnginePanelTaskId` / `MAX_HELD_WIRE_TICK_BEATS` / `clearEnginePanelTaskResidentByWire`(0.74.3 CC-70:子代身份归一读口、缓一拍节拍上限、按 wire id 清常驻标(前代终态不清当代);§71)· `isStaleEngineAgentPanelEnd`(0.74.0 CC-66:面板 end 的周期身份判据;§68)· `subscribeEngineAgentPanelAbsence` / `publishEngineAgentPanelAbsence`(0.72.13:fleet 行缺席上报的**独立订阅口** —— 不上主通道,老消费者结构上收不到;§60 S-5)· `tailEngineSubagent` · `installSubagentActivitySink` · `installSubagentTailMetaSink`(#280 件2:tail meta 帧发布口,`contentFrames` 判别位载体)· `stopEngineTask` + `classifyTaskStopConflict` · `fetchEngineSubagentReport` · `steerEngineSubagent`(0.32.0 未发布 #280 件A:additive 第三参 `childTaskId` —— 端有行上下文时**应当**传,传了就走「台账优先 / 缺席即诚实缺席 + 缺席留痕」的 Q3 口径,与 tail·taskOutput·subagentOutput 三腿同姿势、与孪生 resume 腿共用同一个 `resolveOwnerRunId` 判据;**不传**则逐字维持旧行为=回落在飞 run)· `resumeSettledSubagent` + `resolveSubagentResumeContext` + `resolveOwnerRunId` + `classifySubagentResumeFailure` + `subagentResumeAvailable`(#242 批 2 A-028.7:resume 判定半场上收,与 steer 孪生同居;取址三态 = 台账有行用行值 / 指名了行但台账缺席则**诚实缺席绝不回落在飞 run** / 没指名行才回落。出路文案归端)· `recordSubagentOwnerFromProgress` + `getBgParentRunOwner`(A-028.6:「子代 → 宿主 run」**单表**,宿主 run 必须由持 stream-local 值的调用方显式传入,包内绝不从 `activeEngineRunId()` 推断)· `auditRetainWithoutWake`([4000] Q5:引擎宣示 `subagentResume` + 本端在付 `retainSubagentSessions` + 端未实现 `wakeSubagent` ⇒ 响亮一条;`CLIENT_VERBS.wakeSubagent` 维持 fail-soft)· `subscribeSubagentContent` · `subscribeEngineAgentPanel` · `publishQuestionFrame` / `respondToQuestion` · `configureSubagentContentStore` / `subagentContentStoreConfig` / `SUBAGENT_CONTENT_STORE_DEFAULTS`(0.62.0:子代内容账本的**字节预算** —— 此前只有条数帽而单条无上限,一条 base64 工具结果就能让一个子代槽吃到十几 MB;越限从最早的内容开始丢并留一条可渲染的 `truncated` 记录,总帽淘汰整条最久未用的账本。配置面 fail-loud,详见 §26②)| 驱动与观测委派子代;经 module 级台账喂活体 agent/task 面板。全部**能力位 gate**(§5b) | `src/subagent/*.ts`、`src/subagentContentStore.ts`、`src/engineAgentPanelStore.ts`、`src/engineAgentAbsence.ts`(0.83.2 CC-194 缺席行判定与措辞)、`src/agentSession/engineAgentRegistryRead.ts`(0.84.0 CC-194 B 半登记读口)、`src/engineInlineTaskStats.ts`、`src/engineToolLabelStore.ts`、`src/liveQuestionStore.ts` |
165
165
  | 5 | **fleet 投影** | 38 | `displayUntrustedMarks`(0.83.5 CC-204:同一只出口另报每一枚字符面标记的 UTF-16 区间,`text` 与同选项的出口逐字节同;§105)· `displayUntrusted`(0.83.1 CC-112:wire 派生文本上屏前的合成出口三端单源 —— 凭据两网 ∘ 字符三网,选项按载体选;本域 `escapeDisplayControlChars` / `collapseLabel` / `capForDisplay` 三只旧口改由同一只字符面引擎实现、输出逐字节不变,字符集窄于新口默认;§101)· `createFleetLedger` · `projectTasks` · `projectWorkflows` · `projectFleetAgentRows` · `readEngineActiveBgTasks` · `FLEET_TASK_VIEW_KEYS` · `escapeDisplayControlChars`(不可见字符可见化,行标签/描述消毒的共享底座)· `capForDisplay`(0.62.0:呈前**消毒 + 封长**的共用铸点 —— 先转义、后按转义结果封长,截点避开半截转义 token 与合法代理对;本包该族四处此前各写一份、其中三份顺序是反的,详见 §26⑦) | 老 `fleetClient` 那一刀的成品:**帧体归库、连接归端** —— 端持 SSE 连接,库做行投影 + 保留台账 | `src/fleet/fleetProjection.ts`、`src/fleet/fleetLedger.ts`、`src/fleetAgentPanelProjection.ts`、`src/fleetTaskDesc.ts`、`src/displayUntrusted.ts`(0.83.1 CC-112:展示层安全出口单源,本域三只旧口的字符面引擎) |
166
- | 6 | **请求装配(上行唯一构造口)** | 34 | `taskRequestOmissionCauseNotice` / `TASK_REQUEST_OMISSION_CAUSE_NOTICES`(0.85.1 CC-248:回执省略成因的终端用户向取句口与句表,与接入方那只同源于同一成因闭集、逐词不同句;表外 / 读不出 ⇒ 一句通用句,不抛、不回显;§110)· `fileHistoryDeclarationField` / `FILE_HISTORY_DISABLED`(0.85.0 CC-243:「这一次运行别捕获文件历史」请求词片段口 —— 只在能力读数是 `on-optional` 且宿主意图是别捕获时给 `{ fileHistory: 'disabled' }`,老服务端对这一键整条 400;字面常量供断言锚;§109)· `REQUEST_LANES` / `APPROVER_POSTURE_BYPASS` / `approverPostureDeclarationField` / `taskRequestOmissionCauseDetail` / `parseMaxCostUsd`(0.79.0 CC-116 · 118 · 123:第三条车道清单、审批姿态声明的唯一铸点与意图位片段、回执成因人话、花费上限文本解析;§85)· `assembleTaskRequest` / `taskRequestSeatOf` / `TASK_REQUEST_OMISSION_CAUSES` / `UPSTREAM_ABSENT_REQUEST_INTENTS`(0.77.0 CC-101:逐键去向回执 + 座位读数 + 成因词表 + 上游无对位表;§79)· `readAgentMemorySpec` / `unknownMemorySpecKeys` / `unknownMemorySpecKeysNote` / `memoryConfigRefusalNoteOf` / `KNOWN_AGENT_MEMORY_SPEC_KEYS` / `PENDING_MEMORY_SPEC_KEYS` / `RETIRED_MEMORY_SPEC_SINGULAR_KEY` / `MAX_UNKNOWN_MEMORY_SPEC_KEYS`(CC-96:`agents[].memory` 记忆 spec 的三态读口与闭白名单判官 —— 未列键拒掉的是**整只 agent 定义**)· `MEMORY_OFF` / `memoryOffDeclarationField` / `memoryOffDeclared`(0.72.8 CC-39③:`memory:"off"` 请求级整面关的意图位片段;§55)· `buildTaskRequest` · `REQUEST_FIELD_MATRIX` · `unregisteredRequestKeys` · `applyLiveRequestDefaults` · `taskNotificationToPrintFrame` | 两条车道(`interactive`/`print`)出站请求的**唯一**构造器;`unregisteredRequestKeys` 是可执行门 —— 端偷带一个未登记键上 wire 就红 | `src/request/taskRequest.ts`、`src/request/printNotification.ts` |
166
+ | 6 | **请求装配(上行唯一构造口)** | 38 | `inheritEnvDeclaration` / `inheritEnvServerSupport` / `inheritEnvWithheldNotice` / `isInheritEnvWord` + `INHERIT_ENV_WORDS` / `INHERIT_ENV_MIN_SERVER`(0.86.0 CC-257:请求键 `inheritEnv` 的版本闸片段口 —— 服务端整串正式版 ≥ 7.106.0 才给 `{ inheritEnv }`,否则空片段 + 回执成因与一句终端用户面话;两词闭集与判词口、版本地板常量;缺席 = 缺省清洗且清掉本会话上一条声明;§112)· `taskRequestOmissionCauseNotice` / `TASK_REQUEST_OMISSION_CAUSE_NOTICES`(0.85.1 CC-248:回执省略成因的终端用户向取句口与句表,与接入方那只同源于同一成因闭集、逐词不同句;表外 / 读不出 ⇒ 一句通用句,不抛、不回显;§110)· `fileHistoryDeclarationField` / `FILE_HISTORY_DISABLED`(0.85.0 CC-243:「这一次运行别捕获文件历史」请求词片段口 —— 只在能力读数是 `on-optional` 且宿主意图是别捕获时给 `{ fileHistory: 'disabled' }`,老服务端对这一键整条 400;字面常量供断言锚;§109)· `REQUEST_LANES` / `APPROVER_POSTURE_BYPASS` / `approverPostureDeclarationField`〔后两者 🔧 0.86.0 退出公面:请求键 `approverPosture` 退役,宿主仍给即构造期按名拒;§112〕/ `taskRequestOmissionCauseDetail` / `parseMaxCostUsd`(0.79.0 CC-116 · 118 · 123:第三条车道清单、审批姿态声明的唯一铸点与意图位片段、回执成因人话、花费上限文本解析;§85)· `assembleTaskRequest` / `taskRequestSeatOf` / `TASK_REQUEST_OMISSION_CAUSES` / `UPSTREAM_ABSENT_REQUEST_INTENTS`(0.77.0 CC-101:逐键去向回执 + 座位读数 + 成因词表 + 上游无对位表;§79)· `readAgentMemorySpec` / `unknownMemorySpecKeys` / `unknownMemorySpecKeysNote` / `memoryConfigRefusalNoteOf` / `KNOWN_AGENT_MEMORY_SPEC_KEYS` / `PENDING_MEMORY_SPEC_KEYS` / `RETIRED_MEMORY_SPEC_SINGULAR_KEY` / `MAX_UNKNOWN_MEMORY_SPEC_KEYS`(CC-96:`agents[].memory` 记忆 spec 的三态读口与闭白名单判官 —— 未列键拒掉的是**整只 agent 定义**)· `MEMORY_OFF` / `memoryOffDeclarationField` / `memoryOffDeclared`(0.72.8 CC-39③:`memory:"off"` 请求级整面关的意图位片段;§55)· `buildTaskRequest` · `REQUEST_FIELD_MATRIX` · `unregisteredRequestKeys` · `applyLiveRequestDefaults` · `taskNotificationToPrintFrame` | 两条车道(`interactive`/`print`)出站请求的**唯一**构造器;`unregisteredRequestKeys` 是可执行门 —— 端偷带一个未登记键上 wire 就红 | `src/request/taskRequest.ts`、`src/request/printNotification.ts` |
167
167
  | 7 | **通知与 outstanding 台账** | 49 | `noteOwnWorkflowRun`(0.72.2 CC-37:own 台账显式登记口,adapter workflow lane 门在 own-run 正向证明下同拍调;§49)· `installNotificationQueuePort` · `normalizeTaskNotification` · `taskNotificationDedupKeyFromWire` · `registerOutstandingBgTask` / `registerOutstandingWorkflowRun` · `notificationQueuePortMisses` · `subscribeOutstandingWorkflows` · `outstandingDeliverableWorkflowCount` | `task_notification` 归一 + 去重 + 投递进宿主命令队列的**一把闸**;`outstandingDeliverableWorkflowCount()` 是 headless `-p` 的**退出门** · `classifyPeerNotification` / `renderPeerFrameTranscriptText` / `parsePeerFrameText` / `peerFrameDisplayName` + 三张闭集表(design/385,0.54.0:同一条 `task_notification` 车道上三条**引擎注入帧**的类型化投影 —— 判别位=载体在场而非 summary 文本,详见 §17) | `src/notifications.ts`(11 个 module 台账) |
168
168
  | 8 | **工具结果卡** | 28 | `findSystemReminderOpenTag`(0.84.1 CC-210:开标签定位口,与剥离 / 解包同一个判定,文法常量不上公面;§108)· `stripSystemReminderBlocks` / `unwrapSystemReminder`(0.83.4 CC-205:引擎 `<system-reminder>` 信封壳的剥离与整条解包,开标签只认引擎铸的两形,线性时间;§104)· `displayBody`(0.78.1 CC-113:工具结果正文的人类面读口,剥本包铸的不可信围栏,三形互不折叠;§83)· `structuredToToolUseResult` · `readAsyncLaunchedAgentReceipt` · `wireOutputToBody` · `parseModelFacingBash` · `getPatchFromContents` · `toolEndResultToUserFrame` · `flattenToolOutput` | 铸端要渲的 `tool_result` 卡体,含客户端 diff hunk(唯一 runtime dep 的用处) | `src/toolResult.ts`、`src/printToolResultFrame.ts`、`src/diff/patch.ts` |
169
- | 9 | **能力/旋钮 wire 门族** | 183 | `projectSealedKeyCapability` / `noteEngineCapsForSealedKey` / `observedSealedKey` / `forgetSealedKeyReading`(0.85.0 CC-243:能力面公钥发现段 `sealedKey` 的四态读口与读账,只出公钥三键、键缺席 = 不要封;§109)· `hooksWirePlan` / `pluginHookVerdictOf` / `hooksNotRunNotice` / `pluginHookExecutorLabel` / `pluginHookReasonText` / `settingsHookDropText` / `isEngineFiredHookEvent` + `ENGINE_FIRED_HOOK_EVENTS` / `PLUGIN_HOOK_DISPOSITIONS` / `PLUGIN_HOOK_REASONS` / `PLUGIN_HOOK_EXCLUSION_REASONS` / `SETTINGS_HOOK_DROP_REASONS`(0.83.1 CC-174:插件 hook 每轮计划 —— 逐条判「投给引擎 / 本客户端执行 / 如实不跑」,请求体 hooks 与本地跳过用同一份,开机「不会执行」清单与 `/hooks` 标注措辞单源,五张闭集;读口是 `SettingsPort` 的可选成员 `enabledPluginHooks`(型面,不计名数);§101)· `invalidateTaskAgentsWire`(0.82.1 CC-161:自定义代理载荷作废并重投,就绪门等最新一代,§93 S-14)· `projectFileHistoryCaptureCapability` / `noteEngineCapsForFileHistoryCapture` / `observedFileHistoryCapture` / `forgetFileHistoryCaptureReading` / `fileHistoryCaptureMode` / `fileHistoryCaptureDoctorDetail`(0.82.1 CC-163:`capabilities.fileHistoryCapture` 四态读口 + 判据 + 措辞单源;§93)· `observedRewindArchive` / `rewindCodeArchiveAvailability` / `rewindConversationAvailability` / `rewindArchiveDoctorDetail` / `rewindConversationDoctorDetail`(0.82.0 CC-146:`/rewind` 代码档与对话档可用性四位窄读口 + 端判据三态 + 措辞单源,替掉壳侧「本地备份表非空」那条判据;§92)· `mcpEngineLegLivenessOf` / `mcpDetailLegNote` / `isMcpLivenessState`(0.80.0 CC-134:引擎腿活性六档读口 + 九句范围说明铸点 + 活性三词判据上公面;§87)· `projectMcpProbeCapability` / `noteEngineCapsForMcpProbe` / `observedMcpProbe` / `forgetMcpProbeReading` / `mcpProbeAvailable` / `mcpProbeDoctorDetail`(0.79.0 CC-74:`capabilities.mcpProbe` 四态读口 + 「这次调用要不要上 wire」三态 + doctor 句;§85)· `projectSessionPolicyCapability` / `observedSessionPolicy` / `sessionPolicyFaceAvailable`(0.77.0 CC-105:`capabilities.sessionPolicy` 四态读口 + 渲不渲写入口三态;§79)· `projectMemoryComplianceCapability` / `memoryComplianceVerbsAvailable` · `projectMemoryOriginCapability` / `memoryOriginVerbsAvailable`(0.76.1 CC-97a:`capabilities.memoryCompliance` / `memoryOrigin` 两只四态读口,同判据不同位、各持一张表;§77)· `projectPeerLaneCapability` / `observedPeerLane` / `peerLaneAvailable`(0.76.1 CC-102:`capabilities.peerLane` 四态读口 + 露不露跨会话入口的三态判据;非 HTTP 面)· `projectPermissionRulesWriteCapability` / `observedPermissionRulesWrite` / `permissionRulesWriteAvailable`(0.76.1 CC-102:`capabilities.permissionRulesWrite` 四态读口 —— 键缺席 = 二进制比单步写口老、藏入口;在场按本键的值判这次够不够得着;§77)· `projectDeviceExecutorManagementCapability` / `noteEngineCapsForDeviceExecutorManagement` / `observedDeviceExecutorManagement` / `forgetDeviceExecutorManagementReading` / `deviceExecutorManagementDoctorDetail` / `deviceManagementVerbsAvailable`(0.74.2 CC-69;§70)· `projectApprovalsStreamLiveCapability` / `noteEngineCapsForApprovalsStreamLive` / `observedApprovalsStreamLive` / `forgetApprovalsStreamLiveReading` / `approvalsStreamLiveDoctorDetail` / `livePendingNeedsReconcile`(0.73.3 CC-61;§65)· `projectExecutionLaneCapability` / `noteEngineCapsForExecutionLane` / `observedExecutionLane` / `forgetExecutionLaneReading` / `executionLaneDoctorDetail` / `toolsRunHereFromExecutionLane`(0.72.13 CC-54:`capabilities.executionLane` 四态读面,键缺席 ≠ 不是本机车道;§60)· `AGENT_MEMORY_WORDS`(0.72.3 CC-39①:`memory: user|project|local` 三词;`projectAgentsForWire` 把它们同映射为 `agents[].memory = { scopes:[agent:<type>], writeScope }`;§50)· `skillBaseDirOf`(0.72.1 CC-33:`SkillSpec.baseDir` 窄读 = server 顶层门同一只结构判据;`skillCommandsToSpecs` 第三参 `{ toolsRunHere }` 只在本机车道带;§48)· `projectAgentsForWire` / `awaitTaskAgentsWire` · `hooksForWire` · `mcpConfigsToSpecs` · `ultracodeForRequest` · `buildWebSearchEnv`(`resolveWebSearch` 🔧 0.83.0 退出公面,换读域 15 的 `resolveWebSearchVerdict`) · `attachmentsForRequest` · `projectEffectiveBody` · `classifySelfOrchestrationRefusal` / `stripSelfOrchestrationIntent` / `projectWorkflowsGate` / `SELF_ORCHESTRATION_RETRY_WITHOUT`(S-81,server 7.57.0:上面两条 stamp 腿的**背面** —— 半配置多租户形态下 server 把带 `selfOrchestration` / `settings.ultracode` 的提交 501 拒掉,判型/去键/caps 闸三处都是判定不是文案,详见 §13) · `engineCapsGeneration`(0.60.0,异源对抗复审 [medium] 逼出:caps 探测的**当代号**读口 —— 代际闸在 probe **返回之后**才跑,而宿主的读面 tee 是在 probe **内部**落地的 ⇒ 一次慢的旧探测能把上一台引擎的读数写回来。宿主在**起探测那一刻**抓号、tee 时交回 `{generation}`,陈旧那一发整只丢掉;不传 = 逐字节同行为,详见 §24e)| 逐功能的「引擎有没有这个能力 + 这个字段怎么上 wire」投影器,由 `buildTaskRequest` 组装。🔴 `hooksForWire()` 是 **fail-closed**:无 `SettingsPort` ⇒ 返回 `undefined`(信任门,不是取值) | 17 个 `src/*WireCaps.ts` + `src/scratchpadWireCaps.ts`、`src/hooksWireCaps.ts`、`src/goalStopHook.ts`、`src/websearch/searchProviderPresets.ts`、`src/selfOrchestrationDenial.ts`(S-81 拒绝判定层)、`src/pluginHooksWire.ts`(0.83.1 CC-174:插件 hook 判定 / 措辞 / 闭集,经 `src/hooksWireCaps.ts` 编排) |
169
+ | 9 | **能力/旋钮 wire 门族** | 198 | `projectStorePostureCapability` / `noteEngineCapsForStorePosture` / `observedStorePosture` / `forgetStorePostureReading` + `storePersistence` / `storePostureDoctorDetail`(0.86.0 CC-250:caps `store` 存储姿态四态读口与读账、持久判据三值、doctor 一行;键缺席 = 老引擎没报,不是「不持久」;§112)· `projectCenterWiringCapability` / `noteEngineCapsForCenterWiring` / `observedCenterWiring` / `forgetCenterWiringReading` + `callerQuotaLease` / `centerWiringDoctorDetail`(0.86.0 CC-250:caps `centerWiring` 中心接线读口,缺席按同体 `store` 分 `none` / `not_reported`,调用方租约六词判决,doctor 一行;§112)· `noOsSandboxOnThisHost` / `noOsSandboxContent` / `projectExecutionLaneWiring`(0.86.0 CC-256:`executionLane.isolated` 读进车道读数后的「本机无 OS 沙箱」三值判定与那一句,operator 诊断面车道段同一份判据;§112)· `projectSealedKeyCapability` / `noteEngineCapsForSealedKey` / `observedSealedKey` / `forgetSealedKeyReading`(0.85.0 CC-243:能力面公钥发现段 `sealedKey` 的四态读口与读账,只出公钥三键、键缺席 = 不要封;§109)· `hooksWirePlan` / `pluginHookVerdictOf` / `hooksNotRunNotice` / `pluginHookExecutorLabel` / `pluginHookReasonText` / `settingsHookDropText` / `isEngineFiredHookEvent` + `ENGINE_FIRED_HOOK_EVENTS` / `PLUGIN_HOOK_DISPOSITIONS` / `PLUGIN_HOOK_REASONS` / `PLUGIN_HOOK_EXCLUSION_REASONS` / `SETTINGS_HOOK_DROP_REASONS`(0.83.1 CC-174:插件 hook 每轮计划 —— 逐条判「投给引擎 / 本客户端执行 / 如实不跑」,请求体 hooks 与本地跳过用同一份,开机「不会执行」清单与 `/hooks` 标注措辞单源,五张闭集;读口是 `SettingsPort` 的可选成员 `enabledPluginHooks`(型面,不计名数);§101)· `invalidateTaskAgentsWire`(0.82.1 CC-161:自定义代理载荷作废并重投,就绪门等最新一代,§93 S-14)· `projectFileHistoryCaptureCapability` / `noteEngineCapsForFileHistoryCapture` / `observedFileHistoryCapture` / `forgetFileHistoryCaptureReading` / `fileHistoryCaptureMode` / `fileHistoryCaptureDoctorDetail`(0.82.1 CC-163:`capabilities.fileHistoryCapture` 四态读口 + 判据 + 措辞单源;§93)· `observedRewindArchive` / `rewindCodeArchiveAvailability` / `rewindConversationAvailability` / `rewindArchiveDoctorDetail` / `rewindConversationDoctorDetail`(0.82.0 CC-146:`/rewind` 代码档与对话档可用性四位窄读口 + 端判据三态 + 措辞单源,替掉壳侧「本地备份表非空」那条判据;§92)· `mcpEngineLegLivenessOf` / `mcpDetailLegNote` / `isMcpLivenessState`(0.80.0 CC-134:引擎腿活性六档读口 + 九句范围说明铸点 + 活性三词判据上公面;§87)· `projectMcpProbeCapability` / `noteEngineCapsForMcpProbe` / `observedMcpProbe` / `forgetMcpProbeReading` / `mcpProbeAvailable` / `mcpProbeDoctorDetail`(0.79.0 CC-74:`capabilities.mcpProbe` 四态读口 + 「这次调用要不要上 wire」三态 + doctor 句;§85)· `projectSessionPolicyCapability` / `observedSessionPolicy` / `sessionPolicyFaceAvailable`(0.77.0 CC-105:`capabilities.sessionPolicy` 四态读口 + 渲不渲写入口三态;§79)· `projectMemoryComplianceCapability` / `memoryComplianceVerbsAvailable` · `projectMemoryOriginCapability` / `memoryOriginVerbsAvailable`(0.76.1 CC-97a:`capabilities.memoryCompliance` / `memoryOrigin` 两只四态读口,同判据不同位、各持一张表;§77)· `projectPeerLaneCapability` / `observedPeerLane` / `peerLaneAvailable`(0.76.1 CC-102:`capabilities.peerLane` 四态读口 + 露不露跨会话入口的三态判据;非 HTTP 面)· `projectPermissionRulesWriteCapability` / `observedPermissionRulesWrite` / `permissionRulesWriteAvailable`(0.76.1 CC-102:`capabilities.permissionRulesWrite` 四态读口 —— 键缺席 = 二进制比单步写口老、藏入口;在场按本键的值判这次够不够得着;§77)· `projectDeviceExecutorManagementCapability` / `noteEngineCapsForDeviceExecutorManagement` / `observedDeviceExecutorManagement` / `forgetDeviceExecutorManagementReading` / `deviceExecutorManagementDoctorDetail` / `deviceManagementVerbsAvailable`(0.74.2 CC-69;§70)· `projectApprovalsStreamLiveCapability` / `noteEngineCapsForApprovalsStreamLive` / `observedApprovalsStreamLive` / `forgetApprovalsStreamLiveReading` / `approvalsStreamLiveDoctorDetail` / `livePendingNeedsReconcile`(0.73.3 CC-61;§65)· `projectExecutionLaneCapability` / `noteEngineCapsForExecutionLane` / `observedExecutionLane` / `forgetExecutionLaneReading` / `executionLaneDoctorDetail` / `toolsRunHereFromExecutionLane`(0.72.13 CC-54:`capabilities.executionLane` 四态读面,键缺席 ≠ 不是本机车道;§60)· `AGENT_MEMORY_WORDS`(0.72.3 CC-39①:`memory: user|project|local` 三词;`projectAgentsForWire` 把它们同映射为 `agents[].memory = { scopes:[agent:<type>], writeScope }`;§50)· `skillBaseDirOf`(0.72.1 CC-33:`SkillSpec.baseDir` 窄读 = server 顶层门同一只结构判据;`skillCommandsToSpecs` 第三参 `{ toolsRunHere }` 只在本机车道带;§48)· `projectAgentsForWire` / `awaitTaskAgentsWire` · `hooksForWire` · `mcpConfigsToSpecs` · `ultracodeForRequest` · `buildWebSearchEnv`(`resolveWebSearch` 🔧 0.83.0 退出公面,换读域 15 的 `resolveWebSearchVerdict`) · `attachmentsForRequest` · `projectEffectiveBody` · `classifySelfOrchestrationRefusal` / `stripSelfOrchestrationIntent` / `projectWorkflowsGate` / `SELF_ORCHESTRATION_RETRY_WITHOUT`(S-81,server 7.57.0:上面两条 stamp 腿的**背面** —— 半配置多租户形态下 server 把带 `selfOrchestration` / `settings.ultracode` 的提交 501 拒掉,判型/去键/caps 闸三处都是判定不是文案,详见 §13) · `engineCapsGeneration`(0.60.0,异源对抗复审 [medium] 逼出:caps 探测的**当代号**读口 —— 代际闸在 probe **返回之后**才跑,而宿主的读面 tee 是在 probe **内部**落地的 ⇒ 一次慢的旧探测能把上一台引擎的读数写回来。宿主在**起探测那一刻**抓号、tee 时交回 `{generation}`,陈旧那一发整只丢掉;不传 = 逐字节同行为,详见 §24e)| 逐功能的「引擎有没有这个能力 + 这个字段怎么上 wire」投影器,由 `buildTaskRequest` 组装。🔴 `hooksForWire()` 是 **fail-closed**:无 `SettingsPort` ⇒ 返回 `undefined`(信任门,不是取值) | 17 个 `src/*WireCaps.ts` + `src/scratchpadWireCaps.ts`、`src/hooksWireCaps.ts`、`src/goalStopHook.ts`、`src/websearch/searchProviderPresets.ts`、`src/selfOrchestrationDenial.ts`(S-81 拒绝判定层)、`src/pluginHooksWire.ts`(0.83.1 CC-174:插件 hook 判定 / 措辞 / 闭集,经 `src/hooksWireCaps.ts` 编排) |
170
170
  | 10 | **headless / 部署旋钮 wire** | 62 | `isDetachDurableOff400`(0.84.1 CC-219:detach durable-off 400 纯判定,不带进程门,只认锚句不认码,一律不抛;§108)· `lastFlagValue`(0.74.3 CC-80:argv 末次旗值扫描原语上公面;§71)· `probeEngineDetachSupport` / `detachSupportDisclosure`(0.72.13 CC-53:detach 版本闸三态读口 + 披露句;§60)· `parseSandboxArgv` / `sandboxRequestFields` · `parseLimitsArgv` / `limitsForPrint` · `resolveHeadlessFinalVerify` · `resolveHeadlessPermissionMode` · `resolveHeadlessInteractiveTools` · `armDetachCancel` + `detachCancelArm` + `isDetachArmed` · `withHeadlessR1Reconnect` | `-p`/headless 车道的 env+argv 旋钮。🔴 `detachWire` 是**拆**的补偿:判定与 cancel-arm 台账在库,信号路径的裸 fetch 留宿主(`detachCancelArm()` 是取件口) | `src/sandboxWire.ts`、`scenarioWire.ts`、`finalVerifyWire.ts`、`limitsWire.ts`、`interactiveToolsWire.ts`、`headlessPermissionModeWire.ts`、`headlessReconnectWire.ts`、`detachWire.ts` |
171
171
  | 11 | **模型目录与预算** | 72 | `modelIdentityResolvability` / `modelIdentityDetail` / `modelSetupDecision` / `modelSetupNotice` / `observedEngineAnswer`(0.82.1 CC-151:「引擎启动时拿不拿得到模型名」三态判据 + 向导两位决策 + 措辞单源,§93 S-11)· `routePairingVerdict`(0.71.3 CC-06:`ModelInfo.routePairing` ok / broken / unknown 三态读口,§45)· `resolveModelCatalog` · `loadCatalogWithSources` · `PROVIDER_PRESETS` / `MODEL_FAMILIES` · `defaultMaxTokensFor` · `getLiveModelCatalog` / `setLiveModelCatalogRefresher` · `providerAuthMethods` / `beginDeviceCodeAuth` · `providerCatalogRows` / `providerCatalogRowDetail` / `providerPresetById`(#244 F4 族D A-028.17:46 家表的规范折表层 —— 全表不重排、诚实缺席「model id typed in」,cli 目录/web 向导同一份折表)· `TIER_ORDER` / `CC_TIER_ALIASES` / `isTier` / `resolveTierBinding`(A-028.18:档位词表+校验+fail-open 降档派生单源;settings 存储归宿主)· `resolveEntryVision` / `computeDeleteBlockers` / `computeDeleteWarnings`(0.38.0 #318 件③ 上收:Model Hub 供给面的三端公共判定 —— vision 生效值+来源三态、删除断链核(拒删+指路)、删除降级后果(照删但必说)。**零 IO**,读盘那半场留各端;`doc === null` 的两义在调用方分流) | 三层 provider 目录解析(线上 URL → 包内预设 → 用户覆盖)+ per-model `maxTokens` 封顶。线上腿需注入 `CatalogFetchJson`,缺席 ⇒ 整条不启用(`online.reason='no-fetch-port'`);缓存落盘经 `CatalogCachePort` | `src/model/{catalog,catalogLoader,providerAuth,providerPresets,providerCatalog,tierVocabulary}.ts`、`src/liveModelCatalog.ts`、`src/modelBudgetRule.ts`、`src/sessionModelLatch.ts`、`src/effortWire.ts` |
172
- | 12 | **workflow 与后台工作视图** | 36 | `evaluateWorkflowSize` / `readWorkflowSizeWarningEnvCaps` / `workflowSizeWarningTextForWidth` + `WORKFLOW_SIZE_WARNING_AGENT_CAP` / `_TOKEN_CAP` / `_TOKENS_PER_AGENT` / `_ENV_NAMES` / `_TEXT_LONG` / `_TEXT_SHORT` / `_TEXT_MIN` / `WORKFLOW_SIZE_GUIDELINE_AGENT_CAPS`(0.73.5 CC-58:规模告警判定三态;§67)· `projectLeaderConflict` / `leaderConflictDetail` + `LEADER_RUN_STATUSES` / `LEADER_REJ_HEAD_DISPLAY_MAX`(0.72.10 CC-41:leader run 终局 `needs_human` + `result.conflict` 三形读面 none / unreadable / conflict,缺席不可分、filesTruncated 只认 true、salvaged 原样给落盘口;§57)· `projectWorkflowRun` · `readWorkflowResumeAdmissionIncomplete`(0.68.3 CC-05:core 7.18.0 `resumeAdmissionIncomplete` 在场 = 不是 resume 基,与 `readWorkflowParks` 同一条投影义务)· `createLiveWorkflowSource` · `ensureWorkflowActivityLedger` · `readWorkflowActivityLedger` · `stopWorkflowActivityLedger` · `resetWorkflowActivityLedgers` · `createBackgroundView` · `projectBackgroundView` · `recordWorkflowAgentTaskId` · `agentDisplayStatus` | 活过一个 turn 的长任务读面:workflow run + 跨 session 后台任务归一表(`assistant.tasks` 与 fleet SSE **两源独立降级**) | `src/workflow.ts`、`src/workflowClient.ts`、`src/workflowMonitor.ts`、`src/agentSession/backgroundView.ts`(+ 纯类型 `src/agentSession/contract.ts`) |
172
+ | 12 | **workflow 与后台工作视图** | 37 | `READ_CREDENTIAL_NOT_ACCEPTED_NOTICE`(0.86.0 CC-252:门前只读路「凭据没被接受」那一句,workflow 监视器 `unauthorized` 态与后台视图 fleet 源 `unauthorized` 共用;§112)· `evaluateWorkflowSize` / `readWorkflowSizeWarningEnvCaps` / `workflowSizeWarningTextForWidth` + `WORKFLOW_SIZE_WARNING_AGENT_CAP` / `_TOKEN_CAP` / `_TOKENS_PER_AGENT` / `_ENV_NAMES` / `_TEXT_LONG` / `_TEXT_SHORT` / `_TEXT_MIN` / `WORKFLOW_SIZE_GUIDELINE_AGENT_CAPS`(0.73.5 CC-58:规模告警判定三态;§67)· `projectLeaderConflict` / `leaderConflictDetail` + `LEADER_RUN_STATUSES` / `LEADER_REJ_HEAD_DISPLAY_MAX`(0.72.10 CC-41:leader run 终局 `needs_human` + `result.conflict` 三形读面 none / unreadable / conflict,缺席不可分、filesTruncated 只认 true、salvaged 原样给落盘口;§57)· `projectWorkflowRun` · `readWorkflowResumeAdmissionIncomplete`(0.68.3 CC-05:core 7.18.0 `resumeAdmissionIncomplete` 在场 = 不是 resume 基,与 `readWorkflowParks` 同一条投影义务)· `createLiveWorkflowSource` · `ensureWorkflowActivityLedger` · `readWorkflowActivityLedger` · `stopWorkflowActivityLedger` · `resetWorkflowActivityLedgers` · `createBackgroundView` · `projectBackgroundView` · `recordWorkflowAgentTaskId` · `agentDisplayStatus` | 活过一个 turn 的长任务读面:workflow run + 跨 session 后台任务归一表(`assistant.tasks` 与 fleet SSE **两源独立降级**) | `src/workflow.ts`、`src/workflowClient.ts`、`src/workflowMonitor.ts`、`src/agentSession/backgroundView.ts`(+ 纯类型 `src/agentSession/contract.ts`) |
173
173
  | 13 | **座位 IPC 契约** | 34 | `LOCAL_SESSIONS_SPEC` · `SEAT_METHOD_NAMES` · `SEAT_EVENT_TYPES` · `isLocalSessionEvent` · `isToolPermissionRequest` · `toolPermissionRequestId` · `SEAT_VALIDATOR_KEY_COVERAGE` · `SEAT_SEND_MESSAGE_KEY_ORIGINS`(0.62.0:座位载荷**逐键出身**登记 —— 每个位要么写明转投哪个引擎请求位、要么写明为什么不上 wire;常驻门对**装在盘上的** sdk 型面逐名核,详见 §26③)| desktop↔web 座位 IPC 契约的**单一真源**(此前两边各一份、名字零重合 ⇒ 编译器永远不会告诉你它们漂了)。🔴 加 verb 忘了加 `LOCAL_SESSIONS_SPEC` **不报错**:preload 不注册 channel、渲染端读到 `undefined` | `src/seatContract.ts`(**零 import**,纯类型 + 常量 + 纯谓词)。🔴 **证据等级标注(0.42.0,test [5087] 的「语料**种类**缺口」/ cli [5088] 认领件)**:该文件里所有以「CC 如何如何」为形的断言(`212 methods` / `854-channel census` / 方法名逐字保留 / `fQe` 逐字段对照 / 一切 `.vite/build/index.chunk-*.js` 坐标)**证据等级 = 桌面 unpack,本地语料库不可复验** —— 本仓手边可复验的参照语料**只覆盖终端 CLI 形态**的静态产物,拿它去 grep 桌面壳里的符号只会零命中,而零命中在这里**既不证真也不证伪**。复核这些断言**不得**拿本仓语料当反证 |
174
174
  | 14 | **宿主端口与会话槽** | 41 | `installHost` · `installHostFor` · `installCoreValuePorts` + 十读口 + 三存在性口(0.69.0 CC-07:core 值级面端口注入,Node 宿主装配根装、浏览器 lane 恒缺席)· `hostPortMisses(For)` · `DEFAULT_SESSION_KEY` · `hostEnv` · `unrefTimer` · `parseLocaleTag` / `pickUiLanguage`(#244 F4 族D A-028.20:locale tag 手术单源 + UI 语言判定;与 `resolveRegionHint` 双出口成文 —— 语言偏好域 en/zh ≠ 地址可达域 cn/intl/unknown,`zh-Hant` 前者 zh 后者 intl 是设计)· `engineNamespaceKeyFor` / `mergeSessionMapRecord` / `mergeEngineEntry`(A-028.12:会话 id 映射单一键形 + merge 判定;存储经 `SessionMapStorePort` 归端 —— cli 文件锁/原子写,web localStorage)| 进程/端级装配层(settings/fs/queue/timers/session/log/probe),与 per-turn 的 `AdapterContext` **分层**。头注的判定规则:**这个能力每 turn 都会变吗?** 会 ⇒ `ctx`;不会 ⇒ `installHost` | `src/host.ts`、`src/hostEnv.ts`、`src/sessionSlot.ts`、`src/unrefTimer.ts`、`src/env/{localeGeo,localeTag,uiLanguage}.ts`、`src/sessionMap.ts` |
175
- | 15 | **控制面与传输** | 192 | `judgeWebSearchSettings` / `webSearchVerdictFromEnv` / `resolveWebSearchVerdict` / `webSearchVerdictMessage` / `webSearchEndpointForDisplay`(0.82.7 CC-182:每请求联网搜索配置三态判决,与 server ≥7.100.0 判官同判;§99)· `withPrintInitFrame` / `createPrintInitGate` / `printInitRosterSignal` / `decidePrintInitToolFace` / `printInitToolFaceDebugLine` / `PRINT_INIT_ROSTER_WAIT_MS`(0.82.5 CC-169:print 车道 init 帧工具面名册优先 —— 流包装器、判定闸、名册信号三态分类、判定口、留痕措辞单源、等待上界;§97)· `projectRegistryQuotaUsage` / `quotaAmountText` / `registryQuotaDoctorDetail`(0.82.0 CC-150:云控制面 quota/usage 回体的纯投影 —— 两种 null 的正面事实与「判不出」三分,措辞零 0;§92)· `pushSessionBundle` / `pullSessionBundle` / `importSessionBundle` / `APIError`(0.79.0 CC-128:会话 bundle 面四名原样转口,与 `AgentClient` 同一张存量转口表;§85)· `readMcpCapabilities` / `probeMcpServers` / `classifyMcpProbeFailure` / `MCP_PROBE_REFUSAL_CAUSES` / `MCP_PROBE_UNKNOWN_WHYS`(0.79.0 CC-74:无 run 可读的 MCP 状态面两只调用口 + 单一失败判官 + 两张闭集词表;§85)· `readEntryProvenance` / `eraseMemoryEntries` / `listExternalOriginEntries` / `listOriginClearances` / `clearEntryOrigin` / `classifyMemoryFailure` / `externalOriginCoverage` / `MEMORY_VERB_REFUSAL_CAUSES` / `MEMORY_VERB_UNKNOWN_WHYS`(0.78.1 CC-97 b:记忆治理面五动词调用口 + 单一失败判官 + 两张闭集 + 覆盖面判词;§83)· `readMemoryExportRows` / `scopeExternalOriginVerdict` / `readMemoryEraseReceipt` / `memoryEraseCounts` / `memoryEraseErasedNothing` / `eraseNotFoundHistoryVerdict` / `memoryEraseReplayPosture` / `readMemoryOriginClearanceReceipt` / `MEMORY_ENGINE_REQUIRED_CODE`(0.76.1 CC-97a:记忆条目面三个回体的窄读口 + 判词口;「空答绝不读作本店干净」的代码落点;§77)· `readMcpLiveness` / `mcpLivenessRollupOf` / `mcpEngineLegHealthOf` / `mcpEngineLegHealthDetail` / `MCP_LIVENESS_STATES`(0.76.1 CC-36:`wiring_manifest.mcp[].liveness` 活性观察的行级三向读口 + 腿级四读数判词 + 措辞铸点;§77)· `readRunCancelContext` / `classifyRunAbortCause` / `RUN_CANCELLED_CODE`(0.74.3 CC-71:run 取消现场与成因;§71)· `cancelConflictFromError` / `cancelConflictContent` / `usageWindowExhaustedFromError` / `usageWindowExhaustedContent` + `CONFLICT_APPROVAL_SETTLED` / `CONFLICT_RUN_NOT_RUNNING`(0.73.1 CC-56:cancel 409 按码分家 + 提交面 429 用量窗;§63)· `reconnectMcpServer` / `projectMcpReconnectResult` / `classifyMcpReconnectFailure` / `projectMcpReconnectCapability` / `mcpReconnectOutcomeDetail` + `MCP_RECONNECT_OUTCOMES` / `MCP_RECONNECT_TRANSACTION_NOTICE`(0.72.9 CC-30:会话内 MCP re-dial 消费口,outcome 三态 / unsupported 恒五键 / 名册按 toolNames 在场性;§56)· `readAutoConsolidationArmed`(0.72.9 CC-39②:memory-status `autoConsolidationArmed` 三态,缺席 = 老 server 判不了;§56)· `steerFollowIntent`(0.72.6 CC-40:steer 后续听意图三态 tail / after-decision / after-wake,按 `SteerReceipt.delivery` 判;§53)· `projectWebSearchBackendCapability` / `observedWebSearchBackend` / `noteEngineCapsForWebSearchBackend` / `forgetWebSearchBackendReading` / `webSearchBackendDoctorDetail` + `WEB_SEARCH_BACKEND_NONE`(0.72.5 CC-31:`capabilities.webSearch.backend` 四态读面 —— 键缺席 = 老引擎判不了 ≠ `none` = 引擎明说没有默认后端;与 `sqlEngineCapability` / `writeProtectionCapability` 同构;§52)· `resumeContextUnavailableFromError` / `resumeContextUnavailableContent`(0.72.1 CC-33:409 `conflict.resume_context_unavailable` 读数 `{ code, staleAfterSec?, runId? }` + 三句人话;§48)· `mcpEngineLegPresence`(0.71.0 CC-19:引擎侧 MCP 在场三值,只从面板视图求;§42)· `ControlRouter`(+ `ControlSafetyError`)· `fetchMcpPanel`(0.69.0:经 sdk `sessions.mcp` 取体 + 投视图,不裸 fetch)· `projectMcpPanel` + `mcpPanelLastLegDetail`(0.68.2 CC-03:`GET /v1/sessions/:id/mcp` 面板体防御读视图 + `lastLegMcp` 一行措辞铸点;缺席 = 键不铸、读不懂 = `lastLegMcpUnreadable`、禁与 `servers[]` 对账)· `makeEngineWireClient` + `resolveWireAuth` · `installEngineWireTarget` · `diagnoseSseIdleTear` / `isSseIdleError` · `attemptActiveRunSelfHeal` + `activeRunBusySignal` + `activeRunSelfHealRow` / `activeRunBusyHeadlessRow` · `kickEngineCapsProbe` / `engineCapTrue` / `invalidateEngineCaps(baseUrl, probe?)`(#307 S25:引擎温切后的 caps 生产失效口 —— kick 自带幂等闸,同 baseUrl 重启后不显式失效就永远读到旧引擎那一版能力位;调用方 = 壳的 respawn/restartEngine。🔴 **推荐两参形**:第二参给替代探测则「推进代际 + 注册新探测」在同一同步块内完成,失效与下一次 kick 之间那个「等待者读到未判」的窗按构造不存在;单参形保留给「只丢缓存、这一刻没有替代探测」的调用方,那种情形下读到未判是诚实结局) · `engineCapValue`(S-131,0.59.0:能力位的**四态**通用读口 `unobserved`/`not_reported`/`null`/`value` —— 既有三口把四种「读不出」全折成 fail-closed 一档,对**放行**问题是对的、对**读面/诊断**问题是错的:`null`(引擎明确说没有,正面事实)会与「老引擎不报」「还没探到」在屏上同形。`value` 位刻意不做形校验,形归各能力位自己的窄读器,详见 §23b)· `projectSqlEngineCapability` / `observedSqlEngine` / `noteEngineCapsForSqlEngine` / `forgetSqlEngineReading` / `sqlEngineDoctorDetail`(S-131,0.59.0:`Capabilities.sql`(server ≥7.60.0)的四态读面**从壳侧上收** —— 归层债,0.58.0 时它长在壳里正是因为包侧没有嵌套对象读口。🔴 **导出名与壳侧那份逐字同名 = drift-lock**;`txnMode: null` 是铸点域内的合法值不是畸形;换代失效口清成未观测而不是留旧值,详见 §23b)· `mapBrainStatusToRetry` · `waitForClaimRelease` + `CLAIM_RELEASED_STATES` / `CLAIM_HELD_STATES` · `atMostOnceFailureClass` / `readSteerDelivery` · `clearRunningChoiceOffer`(Inkglow-1085 P0b①:「Do nothing」登记的清口 —— 端的「重新打开操作菜单」入口;登记在场时 attemptActiveRunSelfHeal 不整卡重弹,not-parked 结局带 `alreadyOffered: true` 判别位,端据此降级渲一行)· `INTERACTIVE_WAY_OUT`(默认出路串单源)· `engineSessionParamFor`(design/285 批 0:`?session=` 派生的 **per-key** 形 —— `hostSessionFor(sessionKey)?.currentSessionId()` + [1501] 空串归一;零参 `engineSessionParam()` = 默认槽兼容层,取值链逐字等价)· `normalizeWirePrincipal`(A-028.10:principal 在场性 trim 原语 —— 全空白=缺席不发头,engineWireTarget 两臂/makeEngineWireClient/壳 livePrincipal 同尺)· `readSessionMemoryStatus` / `classifyMemoryStatusFailure` / `readCaptureOptOut` / `readLastCapture`(S-53 会话记忆姿态读面,0.48.0:失败分诊**码优先**——两个 404 分道 `not_found.session` / `not_found.route`,无码 404 不猜落 failed;五键逐键缺席语义两个合读器,`lastCapture` 三态的判别材料是 `committedCount` 不是本键;IO 归宿主注入 `MemoryStatusClientLike`,详见 §11) · `classifyTurnWireError` / `isWireTransportError` / `isPreStreamDrainingReject` / `isResumeAtRejection` / `drainingRetryDelayMs` / `scenarioDenyFromError` + `WIRE_NETWORK_ERROR_PATTERN`(A-028.11/.13:turn 错误分型判定半场,人话文案与渲染归端)· `resumeRetryLaterFromError`(L-102,0.57.0:resume 族**时间性拒绝**二码的判型半场 —— 这一族里唯一**带得出「等多久」**(`retryAfterSec`)的两个码。🔴 闭集**不是**「哪些码可以等」的名单:同族 `resume.row_recycling` 同样可等(窗口自清)只是没有秒数 ⇒ 本读口返回 `null` 只意味着没命中这两码,详见 §21) · `projectWriteProtectionCapability` / `observedWriteProtection` / `noteEngineCapsForWriteProtection` / `forgetWriteProtectionReading` / `writeProtectionDoctorDetail` / `projectWriteProtectionPosture` / `writeProtectionPostureDetail`(S-138,0.60.0:`Capabilities.writeProtection` (engine ≥7.63.0)的**四态**读面 + operator 面行表 —— 与上面 S-131 那一格**同构同纪律**。🔴 三位刻意不合成一个布尔;`not_reported` **不是**「这台部署没有写保护表」(座位缺席恰是缺省表在岗);逐行 name/kind 走**最小披露**只上 operator 面,详见 §24e)· `projectReadFacePosture` / `readFacePostureDetail` / `readFaceDisagreement`(S-167,0.61.0:operator 面 `diagnostics.wiring.readFace`(engine ≥7.65.0)的窄读器 —— 与上面S-138 那一格**同构同纪律**。🔴 三句「答不出来」逐字互异且没有一句等于「没有 READ 档」;`source` 按开集读;与租户面 `capabilities.readFace` 刻意不合流,只带一个纯比较函数,详见 §25)| 上行通道的**监管**半场(submit / steer / kill / 队列命令定序)+ 传输构造、caps 探测、SSE 断流分诊、**409 active-run 自愈** | `src/controlRouter.ts`、`steering.ts`、`sseIdleTriage.ts`、`retryStatus.ts`、`diagnostics.ts`、`engineWireSdk.ts`、`engineWireTarget.ts`、`src/principalWire.ts`、`src/wireErrorTriage.ts`、`engineSessionParam.ts`、`engineCapsCache.ts`、`liveInitToolFace.ts`、`adapter/activeRunSelfHeal.ts`、`src/sessionMemoryStatus.ts`、`src/writeProtectionCapability.ts`、`src/webSearchBackendCapability.ts`、`src/mcpReconnect.ts`、`src/readFacePosture.ts` |
176
- | 16 | **引擎词汇表与包自检** | 132 | `isCorruptSessionError` / `isCorruptSessionResult` / `isCorruptSessionRunRow` / `isCorruptSessionCode` / `corruptSessionContent` / `CORRUPT_SESSION_ERROR_CODE`(0.85.0 CC-217:会话存档读不出在 HTTP 拒体 / 终局因由 / run 行三处载体同一判定 + 单源人话;§109)· `readSessionRecordsSkipped` / `sessionRecordsSkippedNote`(0.85.0 CC-217:服务端自铸通告 `session.records_skipped` 的事实读器,计数读不出答 `'unknown'` 不折 0;§109)· `sessionDeleteConflictFromError` / `sessionDeleteConflictContent` / `CONFLICT_SESSION_CHILDREN_ALIVE`(0.85.0 CC-243:删会话 409 按码分三形与三句;§109)· `STATUS_DERIVED_COARSE_CODES` / `isStatusDerivedCoarseCode`(0.85.0 CC-243:服务端分发器按状态补的粗码识别表与判定,以铸点为准;§109)· `SERVER_NOTICE_AUDIENCE` / `readInstructionsSourceChanged`(0.84.1 CC-213:服务端自铸通告码 → 受众两行,在册判据与受众读口同认;`instructions.source_changed` 的事实读器;§108)· `readEngineNoticeFacts` / `ENGINE_NOTICE_FACT_READERS`(0.84.1 CC-214:按码派发的 typed 通告事实口 + 派发表,七只读器八个码,只有受众 `user` 的六码属用户面;§108)· `PARKED_RESUME_STARTUP_FAILED` / `parkedResumeStartupFromError` / `parkedResumeStartupContent`(0.84.1 CC-225:停泊审批决断 422 的码常量、读口与按成因分说的一句话,同一个决定不重发、deny 照开;§108)· `CONFIG_LEGACY_TOOL_NAME` / `legacyToolNameFailureNoteOf`(0.84.1 CC-229:拒启码常量与启动失败出路句,只按码判,列四处可能的位置;§108)· `readReadRootGrantNotice`(0.84.0 CC-185:读目录授权两枚结论通告 `approval.read_root_granted` / `approval.read_root_grant_rejected` 的事实读口,按 `toolCallId` 对卡,没有 granted 通告 = 什么都没加;§107)· `APPROVAL_MANDATE_WORDS` / `isApprovalMandateWord` / `approvalMandateDetail`(0.83.2 CC-195:强制位站在哪一个词上的六词闭集,与引擎型面编译期双向钉;成员判据;每词一句说明;§102)· `resumePolicyBlockFromError` / `resumePolicyBlockContent`(0.82.1 CC-154:续跑折叠码 `resume_blocked_by_policy` 自己的读数与措辞,原码三态;§93)· `corruptStoredRowWhere` / `corruptStoredRowContent`(0.82.0 CC-156:续跑上下文坏档时引擎点名的那一行的读口与措辞单源;§92)· `effectiveWireErrorCode` / `RESUME_POLICY_FOLD_CODE`(0.82.0 CC-154:政策折叠码与「按原码判」的取码单源;§92)· `SETTLEMENT_KIND_WORDS` / `ccToolDenialKindForSettledBy` / `ccToolDenialKindForToolEnd`(0.80.0 CC-133:结算词十三词镜像 + 「谁结算的」→ CC 分类词单铸映射 + `tool_end` 帧合流读口;§87)· `CC_TOOL_DENIAL_KINDS` / `isCcToolDenialKind` / `isCcToolDenialKindADenial` / `isGateDeniedByWord`(0.79.0 CC-125:上游转录记录键 `toolDenialKind` 七词镜像 + 两只谓词 + `DeniedBy` 十词成员谓词;§85)· `mandatedApprovalDetail`(0.79.0 CC-110:「这张卡清不掉」那一句的唯一铸点;§85)· `CONFIG_MEMORY_PROJECT_KEY_SPELLING` / `CONFIG_MEMORY_WRITE_SCOPE_MISMATCH`(CC-96:记忆面两个**构造期**拒码,进既有 `config.` 族识别表;400 拼写 / 409 冲突,分诊归引擎)· `TASK_NOTIFICATION_TERMINAL_STATUSES` / `isTaskNotificationTerminalStatus`(0.72.12 CC-50:通知自己的四终态词,含 `cancelled`;与 run 级终态表两张表;§59)· `ENGINE_NOTICE_CODES` 71(0.83.0 CC-186:引擎 7.30.0 / 7.31.0 +2 `config.context_settings_swapped` / `config.secret_env_scrubbed`,均 operator;§100。历史:0.82.1 69、0.79.0 68、0.72.11 CC-49 67 —— core 7.23.0 +1 `config.write_protection_unresolved`,operator,兄弟码 `target_view_absent` 之后;§58)· `MCP_REDIAL_OUTCOMES` / `readMcpServerRedialed`(0.72.7 CC-42:通告 `mcp.server_redialed` 事实读器,outcome 三词闭集、added/removed 计数;§54)· `RESUME_CONTEXT_UNAVAILABLE`(0.72.1 CC-33;不进两个 resume 闭集:不可等、也不是换参数)· `RESUME_REOPEN_CODES` / `RESUME_ENV_FAILED` / `RESUME_TOOL_UNAVAILABLE` / `RESUME_TOOL_CONTRACT_MISMATCH` · `resumeReopenFromError` / `resumeReopenContent`(0.71.3 CC-06:resume reopen 族三码闭集 + 读口 + 三句,§45)· `readSkillsListingTruncated`(0.70.0 CC-04:`skills.listing_truncated` 事实读器,§39)· `CONFIG_REFUSAL_CODES` / `isConfigRefusalCode` · `DECIDE_WORKFLOW_LANE_CODES`(+ 三个具名码;`/decide` workflow 车道,三条出路刻意不合并,详见 §30h)· `STOP_CONFLICT_CODES` · `isInterruptedToolEndCode` · `isRewindFamilyCode` · `CLIENT_VERBS` · `compensationSplitViolations` · `DELEGATION_CAP_CODES` / `isDelegationCapCode` / `DELEGATION_CONCURRENCY_CAP` / `DELEGATION_SESSION_CAP`(0.38.0 #318 件④:core 5.48.0 design/323 委派席位到限**两码,处置不对称禁合并** —— 并发帽=**可等**(兄弟结束即有位)/ 会话累计帽=**等也没用**(这条会话的配额用尽))· `CONFIG_DELEGATION_ENTRY_CAPS`(同批入 `CONFIG_REFUSAL_CODES` 识别表)· `delegationCapDispositionOf` / `MCP_SERVER_REVOKED`(0.39.0 载体到货消费件:core 5.50.0 补 `{ error: code, code }` 孪生拼法后两码真上 `tool_end.errorCode`,0.38.0「先立词不落消费分支」的已知局限自此解除;处置轴 `wait-for-slot` / `reuse-existing-or-await-reap` 机器可读(累计帽=retained-window 帐,行回收配额即回,处置=SendMessage 复用,**非**「换会话/永久耗尽」——0.38.0 段该句系勘误),未知 `delegation.*` 码 ⇒ `undefined`;`mcp.server_revoked` = 操作员 mid-session 吊销 server 后的工具面本地闸(被吊销的 server **名**今天不过 wire 境:detail.server 是进程内位,抬升腿只 lift code——归因渲染候 core 补 typed detail,已点名);载体门 = engine-vocab G3 腿锚 core dist 铸点)· `CAPABILITY_SELF_ORCHESTRATION_REQUIRED`(S-81,server 7.57.0:提交面的 selfOrchestration 准入拒绝码。🔴 **复用码** —— 与其它 `capability.*` 501 同体形而处置不同,消费点必须按**恰等**判、绝不放宽成前缀判;判型与「去键重发一次」归 `src/selfOrchestrationDenial.ts`,详见 §13) · `GATE_PARKED_ERROR_CODE`(0.60.0:「门把这次调用 park 了」的机读码单源 —— `frameRouter` 的连坐/中断判据与 `gateOutcome.isGateParkedToolEnd` 读同一个常量;真机黑盒直证 park 短路帧上**没有 `gate`**,这个码是那一形唯一的信号,详见 §24c)| 三端分臂共用的**去字面化** `errorCode` 词表(病根正是三端各抄一份字面);编译期 verb 闭合门;搬迁补偿登记表 | `src/engineErrorCodes.ts`(计数以 `scripts/public-export-baseline.json` 为准,别手抄;A-028.11/.13 补 `DRAINING_ERROR_CODE`/`SCENARIO_NOT_ALLOWED_ERROR_CODE`/`RESUME_AT_ERROR_CODE_PREFIX`;#318 件④ 补 `delegation.*` 族四位 + `config.delegation_entry_caps`;0.39.0 补三新码消费件三位);S-81 补 `capability.self_orchestration_required` 一位;L-102 补 `resume.*` 时间性拒绝二码 + 闭集 `RESUME_RETRY_LATER_CODES` 三位)、`src/classifierVerdictWire.ts`、`src/compensations.ts`、`src/clientSlice.ts`;**0.67.0 补锚**(这三件的导出一直计在本域,而本表此前没有它们的锚行 —— 如实补上,不是搬家):`src/gateVocabulary.ts`(`GATE_DENIED_BY_WORDS`/`gateDeniedByDetail`/`ASK_ORIGIN_WORDS`/`askOriginDetail` + 🆕 `RULE_STORE_UNREADABLE_KINDS`/`isRuleStoreUnreadableKind`/`ruleStoreUnreadableDetail`,详见 §32d)、`src/autoModeUnavailable.ts`(`AUTO_MODE_UNAVAILABLE_CAUSES` + 🆕 `CLASSIFIER_DENY_CAUSES`/`isClassifierDenyCause`/`classifierDenyCauseOf`/`classifierDenyCauseDetail`;🔴 同批**删**`classifierUnavailableOf`/`classifierUnavailableDetail`,详见 §32b)、`src/classifierStatus.ts`(`CLASSIFIER_STATUS_STATES`/`classifierStatusOf`/`classifierStatusDetail`)|
175
+ | 15 | **控制面与传输** | 206 | `printInitToolFaceSupersetKeys`(0.86.0 CC-266:`-p` 首帧 `system/init` 两只来源超集键 `_sema_tools_source` / `_sema_tools_fallback_reason` 的铸口,`withPrintInitFrame` 已铺在宿主那只首帧对象上;自建首帧的宿主展开它的结果;§112)· `FLEET_LEASE_UNAVAILABLE` / `fleetLeaseUnavailableFromError` / `fleetLeaseUnavailableContent`(0.86.0 CC-250:计费入口 503 `fleet.lease_unavailable` 按码读口与一句话,`classifyTurnWireError` 的 `http` 判决同批带 `leaseUnavailable`;§112)· `hostPostureRefusalFromError` / `hostPostureRefusalContent` · `inheritEnvRefusalFromError` / `inheritEnvRefusalContent` · `settingsPermissionBucketRefusalFromError` / `settingsPermissionBucketRefusalContent` · `toolDeclarationRefusalFromError` / `toolDeclarationRefusalContent` · `bodyShapeRefusalFromError` / `bodyShapeRefusalTouchesSettings`(0.86.0 CC-257 / CC-262 / CC-263 / CC-265:新提交两只拒、权限规则表超帽坏项、工具声明族「不是暂时故障」、请求体键形拒两张键表 —— 五对按码读口与单源句;§112)· `judgeWebSearchSettings` / `webSearchVerdictFromEnv` / `resolveWebSearchVerdict` / `webSearchVerdictMessage` / `webSearchEndpointForDisplay`(0.82.7 CC-182:每请求联网搜索配置三态判决,与 server ≥7.100.0 判官同判;§99)· `withPrintInitFrame` / `createPrintInitGate` / `printInitRosterSignal` / `decidePrintInitToolFace` / `printInitToolFaceDebugLine` / `PRINT_INIT_ROSTER_WAIT_MS`(0.82.5 CC-169:print 车道 init 帧工具面名册优先 —— 流包装器、判定闸、名册信号三态分类、判定口、留痕措辞单源、等待上界;§97)· `projectRegistryQuotaUsage` / `quotaAmountText` / `registryQuotaDoctorDetail`(0.82.0 CC-150:云控制面 quota/usage 回体的纯投影 —— 两种 null 的正面事实与「判不出」三分,措辞零 0;§92)· `pushSessionBundle` / `pullSessionBundle` / `importSessionBundle` / `APIError`(0.79.0 CC-128:会话 bundle 面四名原样转口,与 `AgentClient` 同一张存量转口表;§85)· `readMcpCapabilities` / `probeMcpServers` / `classifyMcpProbeFailure` / `MCP_PROBE_REFUSAL_CAUSES` / `MCP_PROBE_UNKNOWN_WHYS`(0.79.0 CC-74:无 run 可读的 MCP 状态面两只调用口 + 单一失败判官 + 两张闭集词表;§85)· `readEntryProvenance` / `eraseMemoryEntries` / `listExternalOriginEntries` / `listOriginClearances` / `clearEntryOrigin` / `classifyMemoryFailure` / `externalOriginCoverage` / `MEMORY_VERB_REFUSAL_CAUSES` / `MEMORY_VERB_UNKNOWN_WHYS`(0.78.1 CC-97 b:记忆治理面五动词调用口 + 单一失败判官 + 两张闭集 + 覆盖面判词;§83)· `readMemoryExportRows` / `scopeExternalOriginVerdict` / `readMemoryEraseReceipt` / `memoryEraseCounts` / `memoryEraseErasedNothing` / `eraseNotFoundHistoryVerdict` / `memoryEraseReplayPosture` / `readMemoryOriginClearanceReceipt` / `MEMORY_ENGINE_REQUIRED_CODE`(0.76.1 CC-97a:记忆条目面三个回体的窄读口 + 判词口;「空答绝不读作本店干净」的代码落点;§77)· `readMcpLiveness` / `mcpLivenessRollupOf` / `mcpEngineLegHealthOf` / `mcpEngineLegHealthDetail` / `MCP_LIVENESS_STATES`(0.76.1 CC-36:`wiring_manifest.mcp[].liveness` 活性观察的行级三向读口 + 腿级四读数判词 + 措辞铸点;§77)· `readRunCancelContext` / `classifyRunAbortCause` / `RUN_CANCELLED_CODE`(0.74.3 CC-71:run 取消现场与成因;§71)· `cancelConflictFromError` / `cancelConflictContent` / `usageWindowExhaustedFromError` / `usageWindowExhaustedContent` + `CONFLICT_APPROVAL_SETTLED` / `CONFLICT_RUN_NOT_RUNNING`(0.73.1 CC-56:cancel 409 按码分家 + 提交面 429 用量窗;§63)· `reconnectMcpServer` / `projectMcpReconnectResult` / `classifyMcpReconnectFailure` / `projectMcpReconnectCapability` / `mcpReconnectOutcomeDetail` + `MCP_RECONNECT_OUTCOMES` / `MCP_RECONNECT_TRANSACTION_NOTICE`(0.72.9 CC-30:会话内 MCP re-dial 消费口,outcome 三态 / unsupported 恒五键 / 名册按 toolNames 在场性;§56)· `readAutoConsolidationArmed`(0.72.9 CC-39②:memory-status `autoConsolidationArmed` 三态,缺席 = 老 server 判不了;§56)· `steerFollowIntent`(0.72.6 CC-40:steer 后续听意图三态 tail / after-decision / after-wake,按 `SteerReceipt.delivery` 判;§53)· `projectWebSearchBackendCapability` / `observedWebSearchBackend` / `noteEngineCapsForWebSearchBackend` / `forgetWebSearchBackendReading` / `webSearchBackendDoctorDetail` + `WEB_SEARCH_BACKEND_NONE`(0.72.5 CC-31:`capabilities.webSearch.backend` 四态读面 —— 键缺席 = 老引擎判不了 ≠ `none` = 引擎明说没有默认后端;与 `sqlEngineCapability` / `writeProtectionCapability` 同构;§52)· `resumeContextUnavailableFromError` / `resumeContextUnavailableContent`(0.72.1 CC-33:409 `conflict.resume_context_unavailable` 读数 `{ code, staleAfterSec?, runId? }` + 三句人话;§48)· `mcpEngineLegPresence`(0.71.0 CC-19:引擎侧 MCP 在场三值,只从面板视图求;§42)· `ControlRouter`(+ `ControlSafetyError`)· `fetchMcpPanel`(0.69.0:经 sdk `sessions.mcp` 取体 + 投视图,不裸 fetch)· `projectMcpPanel` + `mcpPanelLastLegDetail`(0.68.2 CC-03:`GET /v1/sessions/:id/mcp` 面板体防御读视图 + `lastLegMcp` 一行措辞铸点;缺席 = 键不铸、读不懂 = `lastLegMcpUnreadable`、禁与 `servers[]` 对账)· `makeEngineWireClient` + `resolveWireAuth` · `installEngineWireTarget` · `diagnoseSseIdleTear` / `isSseIdleError` · `attemptActiveRunSelfHeal` + `activeRunBusySignal` + `activeRunSelfHealRow` / `activeRunBusyHeadlessRow` · `kickEngineCapsProbe` / `engineCapTrue` / `invalidateEngineCaps(baseUrl, probe?)`(#307 S25:引擎温切后的 caps 生产失效口 —— kick 自带幂等闸,同 baseUrl 重启后不显式失效就永远读到旧引擎那一版能力位;调用方 = 壳的 respawn/restartEngine。🔴 **推荐两参形**:第二参给替代探测则「推进代际 + 注册新探测」在同一同步块内完成,失效与下一次 kick 之间那个「等待者读到未判」的窗按构造不存在;单参形保留给「只丢缓存、这一刻没有替代探测」的调用方,那种情形下读到未判是诚实结局) · `engineCapValue`(S-131,0.59.0:能力位的**四态**通用读口 `unobserved`/`not_reported`/`null`/`value` —— 既有三口把四种「读不出」全折成 fail-closed 一档,对**放行**问题是对的、对**读面/诊断**问题是错的:`null`(引擎明确说没有,正面事实)会与「老引擎不报」「还没探到」在屏上同形。`value` 位刻意不做形校验,形归各能力位自己的窄读器,详见 §23b)· `projectSqlEngineCapability` / `observedSqlEngine` / `noteEngineCapsForSqlEngine` / `forgetSqlEngineReading` / `sqlEngineDoctorDetail`(S-131,0.59.0:`Capabilities.sql`(server ≥7.60.0)的四态读面**从壳侧上收** —— 归层债,0.58.0 时它长在壳里正是因为包侧没有嵌套对象读口。🔴 **导出名与壳侧那份逐字同名 = drift-lock**;`txnMode: null` 是铸点域内的合法值不是畸形;换代失效口清成未观测而不是留旧值,详见 §23b)· `mapBrainStatusToRetry` · `waitForClaimRelease` + `CLAIM_RELEASED_STATES` / `CLAIM_HELD_STATES` · `atMostOnceFailureClass` / `readSteerDelivery` · `clearRunningChoiceOffer`(Inkglow-1085 P0b①:「Do nothing」登记的清口 —— 端的「重新打开操作菜单」入口;登记在场时 attemptActiveRunSelfHeal 不整卡重弹,not-parked 结局带 `alreadyOffered: true` 判别位,端据此降级渲一行)· `INTERACTIVE_WAY_OUT`(默认出路串单源)· `engineSessionParamFor`(design/285 批 0:`?session=` 派生的 **per-key** 形 —— `hostSessionFor(sessionKey)?.currentSessionId()` + [1501] 空串归一;零参 `engineSessionParam()` = 默认槽兼容层,取值链逐字等价)· `normalizeWirePrincipal`(A-028.10:principal 在场性 trim 原语 —— 全空白=缺席不发头,engineWireTarget 两臂/makeEngineWireClient/壳 livePrincipal 同尺)· `readSessionMemoryStatus` / `classifyMemoryStatusFailure` / `readCaptureOptOut` / `readLastCapture`(S-53 会话记忆姿态读面,0.48.0:失败分诊**码优先**——两个 404 分道 `not_found.session` / `not_found.route`,无码 404 不猜落 failed;五键逐键缺席语义两个合读器,`lastCapture` 三态的判别材料是 `committedCount` 不是本键;IO 归宿主注入 `MemoryStatusClientLike`,详见 §11) · `classifyTurnWireError` / `isWireTransportError` / `isPreStreamDrainingReject` / `isResumeAtRejection` / `drainingRetryDelayMs` / `scenarioDenyFromError` + `WIRE_NETWORK_ERROR_PATTERN`(A-028.11/.13:turn 错误分型判定半场,人话文案与渲染归端)· `resumeRetryLaterFromError`(L-102,0.57.0:resume 族**时间性拒绝**二码的判型半场 —— 这一族里唯一**带得出「等多久」**(`retryAfterSec`)的两个码。🔴 闭集**不是**「哪些码可以等」的名单:同族 `resume.row_recycling` 同样可等(窗口自清)只是没有秒数 ⇒ 本读口返回 `null` 只意味着没命中这两码,详见 §21) · `projectWriteProtectionCapability` / `observedWriteProtection` / `noteEngineCapsForWriteProtection` / `forgetWriteProtectionReading` / `writeProtectionDoctorDetail` / `projectWriteProtectionPosture` / `writeProtectionPostureDetail`(S-138,0.60.0:`Capabilities.writeProtection` (engine ≥7.63.0)的**四态**读面 + operator 面行表 —— 与上面 S-131 那一格**同构同纪律**。🔴 三位刻意不合成一个布尔;`not_reported` **不是**「这台部署没有写保护表」(座位缺席恰是缺省表在岗);逐行 name/kind 走**最小披露**只上 operator 面,详见 §24e)· `projectReadFacePosture` / `readFacePostureDetail` / `readFaceDisagreement`(S-167,0.61.0:operator 面 `diagnostics.wiring.readFace`(engine ≥7.65.0)的窄读器 —— 与上面S-138 那一格**同构同纪律**。🔴 三句「答不出来」逐字互异且没有一句等于「没有 READ 档」;`source` 按开集读;与租户面 `capabilities.readFace` 刻意不合流,只带一个纯比较函数,详见 §25)| 上行通道的**监管**半场(submit / steer / kill / 队列命令定序)+ 传输构造、caps 探测、SSE 断流分诊、**409 active-run 自愈** | `src/controlRouter.ts`、`steering.ts`、`sseIdleTriage.ts`、`retryStatus.ts`、`diagnostics.ts`、`engineWireSdk.ts`、`engineWireTarget.ts`、`src/principalWire.ts`、`src/wireErrorTriage.ts`、`engineSessionParam.ts`、`engineCapsCache.ts`、`liveInitToolFace.ts`、`adapter/activeRunSelfHeal.ts`、`src/sessionMemoryStatus.ts`、`src/writeProtectionCapability.ts`、`src/webSearchBackendCapability.ts`、`src/mcpReconnect.ts`、`src/readFacePosture.ts` |
176
+ | 16 | **引擎词汇表与包自检** | 141 | `readRuleStoreUnavailable` / `readClassifierUnavailable` / `readPermissionModeUnavailable` / `readAskReleasedByMode` / `readReadDenyUnapplied` / `readLegacyModeSeedMigrated` + `PERMISSION_MODE_FOLD_REASONS`(0.86.0 CC-249:引擎 7.34.0 新铸六条通告的事实读器,挂进按码派发口;分支键按闭集读、描述性词原样透传;§112)· `RULES_LEGACY_TOOL_NAME` / `isRulesRefusalCode`(0.86.0 CC-251:会话规则写口拒名码常量与 `rules.` 族前缀谓词,开集;§112)· `isCorruptSessionError` / `isCorruptSessionResult` / `isCorruptSessionRunRow` / `isCorruptSessionCode` / `corruptSessionContent` / `CORRUPT_SESSION_ERROR_CODE`(0.85.0 CC-217:会话存档读不出在 HTTP 拒体 / 终局因由 / run 行三处载体同一判定 + 单源人话;§109)· `readSessionRecordsSkipped` / `sessionRecordsSkippedNote`(0.85.0 CC-217:服务端自铸通告 `session.records_skipped` 的事实读器,计数读不出答 `'unknown'` 不折 0;§109)· `sessionDeleteConflictFromError` / `sessionDeleteConflictContent` / `CONFLICT_SESSION_CHILDREN_ALIVE`(0.85.0 CC-243:删会话 409 按码分三形与三句;§109)· `STATUS_DERIVED_COARSE_CODES` / `isStatusDerivedCoarseCode`(0.85.0 CC-243:服务端分发器按状态补的粗码识别表与判定,以铸点为准;§109)· `SERVER_NOTICE_AUDIENCE` / `readInstructionsSourceChanged`(0.84.1 CC-213:服务端自铸通告码 → 受众两行,在册判据与受众读口同认;`instructions.source_changed` 的事实读器;§108)· `readEngineNoticeFacts` / `ENGINE_NOTICE_FACT_READERS`(0.84.1 CC-214:按码派发的 typed 通告事实口 + 派发表,七只读器八个码,只有受众 `user` 的六码属用户面;§108)· `PARKED_RESUME_STARTUP_FAILED` / `parkedResumeStartupFromError` / `parkedResumeStartupContent`(0.84.1 CC-225:停泊审批决断 422 的码常量、读口与按成因分说的一句话,同一个决定不重发、deny 照开;§108)· `CONFIG_LEGACY_TOOL_NAME` / `legacyToolNameFailureNoteOf`(0.84.1 CC-229:拒启码常量与启动失败出路句,只按码判,列四处可能的位置;§108)· `readReadRootGrantNotice`(0.84.0 CC-185:读目录授权两枚结论通告 `approval.read_root_granted` / `approval.read_root_grant_rejected` 的事实读口,按 `toolCallId` 对卡,没有 granted 通告 = 什么都没加;§107)· `APPROVAL_MANDATE_WORDS` / `isApprovalMandateWord` / `approvalMandateDetail`(0.83.2 CC-195:强制位站在哪一个词上的六词闭集,与引擎型面编译期双向钉;成员判据;每词一句说明;§102)· `resumePolicyBlockFromError` / `resumePolicyBlockContent`(0.82.1 CC-154:续跑折叠码 `resume_blocked_by_policy` 自己的读数与措辞,原码三态;§93)· `corruptStoredRowWhere` / `corruptStoredRowContent`(0.82.0 CC-156:续跑上下文坏档时引擎点名的那一行的读口与措辞单源;§92)· `effectiveWireErrorCode` / `RESUME_POLICY_FOLD_CODE`(0.82.0 CC-154:政策折叠码与「按原码判」的取码单源;§92)· `SETTLEMENT_KIND_WORDS` / `ccToolDenialKindForSettledBy` / `ccToolDenialKindForToolEnd`(0.80.0 CC-133:结算词十三词镜像 + 「谁结算的」→ CC 分类词单铸映射 + `tool_end` 帧合流读口;§87)· `CC_TOOL_DENIAL_KINDS` / `isCcToolDenialKind` / `isCcToolDenialKindADenial` / `isGateDeniedByWord`(0.79.0 CC-125:上游转录记录键 `toolDenialKind` 七词镜像 + 两只谓词 + `DeniedBy` 十词成员谓词;§85)· `mandatedApprovalDetail`(0.79.0 CC-110:「这张卡清不掉」那一句的唯一铸点;§85)· `CONFIG_MEMORY_PROJECT_KEY_SPELLING` / `CONFIG_MEMORY_WRITE_SCOPE_MISMATCH`(CC-96:记忆面两个**构造期**拒码,进既有 `config.` 族识别表;400 拼写 / 409 冲突,分诊归引擎)· `TASK_NOTIFICATION_TERMINAL_STATUSES` / `isTaskNotificationTerminalStatus`(0.72.12 CC-50:通知自己的四终态词,含 `cancelled`;与 run 级终态表两张表;§59)· `ENGINE_NOTICE_CODES` 71(0.83.0 CC-186:引擎 7.30.0 / 7.31.0 +2 `config.context_settings_swapped` / `config.secret_env_scrubbed`,均 operator;§100。历史:0.82.1 69、0.79.0 68、0.72.11 CC-49 67 —— core 7.23.0 +1 `config.write_protection_unresolved`,operator,兄弟码 `target_view_absent` 之后;§58)· `MCP_REDIAL_OUTCOMES` / `readMcpServerRedialed`(0.72.7 CC-42:通告 `mcp.server_redialed` 事实读器,outcome 三词闭集、added/removed 计数;§54)· `RESUME_CONTEXT_UNAVAILABLE`(0.72.1 CC-33;不进两个 resume 闭集:不可等、也不是换参数)· `RESUME_REOPEN_CODES` / `RESUME_ENV_FAILED` / `RESUME_TOOL_UNAVAILABLE` / `RESUME_TOOL_CONTRACT_MISMATCH` · `resumeReopenFromError` / `resumeReopenContent`(0.71.3 CC-06:resume reopen 族三码闭集 + 读口 + 三句,§45)· `readSkillsListingTruncated`(0.70.0 CC-04:`skills.listing_truncated` 事实读器,§39)· `CONFIG_REFUSAL_CODES` / `isConfigRefusalCode` · `DECIDE_WORKFLOW_LANE_CODES`(+ 三个具名码;`/decide` workflow 车道,三条出路刻意不合并,详见 §30h)· `STOP_CONFLICT_CODES` · `isInterruptedToolEndCode` · `isRewindFamilyCode` · `CLIENT_VERBS` · `compensationSplitViolations` · `DELEGATION_CAP_CODES` / `isDelegationCapCode` / `DELEGATION_CONCURRENCY_CAP` / `DELEGATION_SESSION_CAP`(0.38.0 #318 件④:core 5.48.0 design/323 委派席位到限**两码,处置不对称禁合并** —— 并发帽=**可等**(兄弟结束即有位)/ 会话累计帽=**等也没用**(这条会话的配额用尽))· `CONFIG_DELEGATION_ENTRY_CAPS`(同批入 `CONFIG_REFUSAL_CODES` 识别表)· `delegationCapDispositionOf` / `MCP_SERVER_REVOKED`(0.39.0 载体到货消费件:core 5.50.0 补 `{ error: code, code }` 孪生拼法后两码真上 `tool_end.errorCode`,0.38.0「先立词不落消费分支」的已知局限自此解除;处置轴 `wait-for-slot` / `reuse-existing-or-await-reap` 机器可读(累计帽=retained-window 帐,行回收配额即回,处置=SendMessage 复用,**非**「换会话/永久耗尽」——0.38.0 段该句系勘误),未知 `delegation.*` 码 ⇒ `undefined`;`mcp.server_revoked` = 操作员 mid-session 吊销 server 后的工具面本地闸(被吊销的 server **名**今天不过 wire 境:detail.server 是进程内位,抬升腿只 lift code——归因渲染候 core 补 typed detail,已点名);载体门 = engine-vocab G3 腿锚 core dist 铸点)· `CAPABILITY_SELF_ORCHESTRATION_REQUIRED`(S-81,server 7.57.0:提交面的 selfOrchestration 准入拒绝码。🔴 **复用码** —— 与其它 `capability.*` 501 同体形而处置不同,消费点必须按**恰等**判、绝不放宽成前缀判;判型与「去键重发一次」归 `src/selfOrchestrationDenial.ts`,详见 §13) · `GATE_PARKED_ERROR_CODE`(0.60.0:「门把这次调用 park 了」的机读码单源 —— `frameRouter` 的连坐/中断判据与 `gateOutcome.isGateParkedToolEnd` 读同一个常量;真机黑盒直证 park 短路帧上**没有 `gate`**,这个码是那一形唯一的信号,详见 §24c)| 三端分臂共用的**去字面化** `errorCode` 词表(病根正是三端各抄一份字面);编译期 verb 闭合门;搬迁补偿登记表 | `src/engineErrorCodes.ts`(计数以 `scripts/public-export-baseline.json` 为准,别手抄;A-028.11/.13 补 `DRAINING_ERROR_CODE`/`SCENARIO_NOT_ALLOWED_ERROR_CODE`/`RESUME_AT_ERROR_CODE_PREFIX`;#318 件④ 补 `delegation.*` 族四位 + `config.delegation_entry_caps`;0.39.0 补三新码消费件三位);S-81 补 `capability.self_orchestration_required` 一位;L-102 补 `resume.*` 时间性拒绝二码 + 闭集 `RESUME_RETRY_LATER_CODES` 三位)、`src/classifierVerdictWire.ts`、`src/compensations.ts`、`src/clientSlice.ts`;**0.67.0 补锚**(这三件的导出一直计在本域,而本表此前没有它们的锚行 —— 如实补上,不是搬家):`src/gateVocabulary.ts`(`GATE_DENIED_BY_WORDS`/`gateDeniedByDetail`/`ASK_ORIGIN_WORDS`/`askOriginDetail` + 🆕 `RULE_STORE_UNREADABLE_KINDS`/`isRuleStoreUnreadableKind`/`ruleStoreUnreadableDetail`,详见 §32d)、`src/autoModeUnavailable.ts`(`AUTO_MODE_UNAVAILABLE_CAUSES` + 🆕 `CLASSIFIER_DENY_CAUSES`/`isClassifierDenyCause`/`classifierDenyCauseOf`/`classifierDenyCauseDetail`;🔴 同批**删**`classifierUnavailableOf`/`classifierUnavailableDetail`,详见 §32b)、`src/classifierStatus.ts`(`CLASSIFIER_STATUS_STATES`/`classifierStatusOf`/`classifierStatusDetail`)|
177
177
 
178
178
  🔴 **`engineErrorCodes` 的开集纪律**(该文件头注逐字):这些 `ReadonlySet` / 前缀谓词一律是**识别表**,
179
179
  回答的是「我认不认得这个码」,**绝不是**「合法码只有这些」。消费点 `switch` **必须留 `default`**,
@@ -185,6 +185,8 @@ SDK 核对「本包 import 的每个值级符号仍然导出」「`TaskStats.cos
185
185
 
186
186
  | 退役 | 名 | 退出版本 | 改用什么 |
187
187
  |---|---|---|---|
188
+ | 🔧 退出公面 | `APPROVER_POSTURE_BYPASS` | 0.86.0 | 无(请求键 `approverPosture` 退役:引擎按名拒收、服务端 7.106.0 起整条 400;本包构造期按名拒,见 §112 A-1–A-3。**不要**改发 `permissionMode` —— 这一键从不授权任何东西) |
189
+ | 🔧 退出公面 | `approverPostureDeclarationField` | 0.86.0 | 无(同上;删掉拼进请求的那一段,别换成别的请求词) |
188
190
  | 🔧 退出公面 | `DENIAL_LIMIT_KINDS` | 0.85.0 | `@sema-agent/sdk` 根入口的同名运行期值(同一个数组);型面 `DenialLimitKind` 在本包照旧导出 |
189
191
  | 🔧 退出公面 | `engineCapNestedTrue` | 0.85.0 | 无公开替代(退出时四端产品源码零具名 import;包内能力读口照旧用它) |
190
192
  | 🔧 退出公面 | `shortTaskLabel` | 0.85.0 | 无公开替代(子代卡的短标签由 `adapt()` 铸在卡上,端读卡上的标签) |
@@ -1712,6 +1714,7 @@ reason 里写明「枚举器盲区形」。已知两形:
1712
1714
 
1713
1715
  **E. 上行与回执(§4,最容易漏)**
1714
1716
  - [ ] 请求一律经 `buildTaskRequest(input, lane)`,**不自拼字面量**;上 wire 前过 `unregisteredRequestKeys(req, lane)`
1717
+ - [ ] 请求键 `inheritEnv`(0.86.0)只经片段口给值:`inheritEnvDeclaration(意图词, 服务端版本串)` 的 `field` 展开进构造器入参,`withheld` 在场渲 `inheritEnvWithheldNotice(withheld)`;要本会话整份继承就**每个提交都带**(缺席 = 缺省清洗且清掉本会话上一条声明),见 §112 112a-14
1715
1718
  - [ ] 接审批帧腿时**填 `AskGateWireDeps.approvalLane` 的四位**(0.43.0 起不再是 note-only):`approvalDecisionNoteCapable`(缺席 = `note` 恒不发)· `respondFreeFormRulesCapable`(缺席 = **编辑臂**整条不发)· `respondBatchRuleOffersCapable`(缺席 = **批臂**整条不发)· `windowIsCurrent`(缺席 = 卡上**无倒计时**)。**全部 fail-closed 且不报错**;两条规则臂被丢时包会发 `surfaceRuleArmNotSent()`(🔧 0.84.0 退出公面)那一条通知(要看得见得先装 `HitlHostSurface` 口)。逐位后果表见 §5b 的供给链段,新鲜度纪律见 §7 **P-40**
1716
1719
  - [ ] ack 五位按 §4a 三列表消费:**缺席一律当未知**,`rememberApplied === false` 与 `updatedInputForwarded === false` 必须响亮告知
1717
1720
  - [ ] durable 腿:`decideTool` 前把**呈卡用的那一行** pending 经 `preResolvedPending` 传进去(TOCTOU)
@@ -4570,7 +4573,7 @@ core 7.9.0 各加一词:`DeniedBy` **+`persisted_rule`**(这个人自己名下
4570
4573
  **签名**
4571
4574
 
4572
4575
  ```ts
4573
- GATE_DENIED_BY_WORDS: readonly DeniedBy[] // 10 词,顺序同源(0.78.0 起;sdk 11.0.1)
4576
+ GATE_DENIED_BY_WORDS: readonly GateDeniedByWord[] // 11 词(0.86.0 起 = 引擎 7.34.0 入口十词在前、原序 + 老引擎仍发的退役词 plan_mode 在后;0.78.0–0.85.x 为 sdk DeniedBy 十词)
4574
4577
  gateDeniedByDetail(deniedBy: unknown): string
4575
4578
  ASK_ORIGIN_WORDS: readonly string[] // 11 词,顺序同源
4576
4579
  askOriginDetail(origin: unknown): string
@@ -4678,7 +4681,7 @@ an argument」。audience 答另一问:这条事实**说给谁听**。
4678
4681
  **签名**
4679
4682
 
4680
4683
  ```ts
4681
- ENGINE_NOTICE_CODES: readonly string[] // 73 码,顺序同源(core 7.32.0 +2:approval.read_root_granted / approval.read_root_grant_rejected;0.83.2。此前 core 7.31.0 +2:config.context_settings_swapped〔7.30.0〕/ config.secret_env_scrubbed;0.83.0。此前 core 7.29.0 +1 route.response_model_mismatch;0.82.1)
4684
+ ENGINE_NOTICE_CODES: readonly string[] // 80 码,顺序同源(core 7.36.0 +1:route.tool_call_id_folded;0.86.0。此前 core 7.34.0 +6:config.permission_mode_unavailable / permission.ask_released_by_mode / permission.read_deny_unapplied / permission.rule_store_unavailable / resume.legacy_mode_seed_migrated / classifier.unavailable;0.86.0。此前 core 7.32.0 +2:approval.read_root_granted / approval.read_root_grant_rejected;0.83.2。此前 core 7.31.0 +2:config.context_settings_swapped〔7.30.0〕/ config.secret_env_scrubbed;0.83.0。此前 core 7.29.0 +1 route.response_model_mismatch;0.82.1)
4682
4685
  ENGINE_NOTICE_AUDIENCE: Readonly<Record<string, 'user' | 'operator'>>
4683
4686
  noticeAudienceOf(code: unknown): 'user' | 'operator'
4684
4687
  engineNoticeInCatalog(code: unknown): boolean
@@ -9640,6 +9643,705 @@ installCoreValuePorts({ resolveAutonomousLoopPrompt, loosenReasons, combinePolic
9640
9643
 
9641
9644
  **包侧缺口:** ① 出包面注释存量(别仓名 / 票号 / 帖号 / 过程词)与卫生门判据太窄(CC-100)—— 方案候拍板(dist 去注释 vs 手清),0.77.2 · ② `DeniedBy` 第十词 `read_boundary` / `teamName` / `stillLive` 三词随 sdk 10 型面在 0.78.0 吸收(CC-106)· ③ `capabilities.mcpProbe` 候 core 7.26.0 #951 → server 7.93.0(CC-74)。
9642
9645
 
9646
+ ## §112 🆕 0.86.0(2026-10-01)引擎 7.34.0 提货(两代读法:事实表第二批构建期生成 · 「谁拒的」两代并集与 `mode` 专句 · 门记录权限模式两臂与 `gateModeRelease` · 通告码册 +6 与六只事实读器 · `read_unestablished` 卡型 · 本人规则店读不出两代读法)+ 服务端 7.105.0 提货(会话规则写口拒名 → 具名结局 · 门前只读路「凭据没被接受」→ 具名态)+ 请求键 `approverPosture` 退役 + 委派判不出通告的补救话 + 开发依赖换钉引擎 7.35.0 再到 7.36.0(配置拒绝识别表 +9 · 通告码册 +1)+ `adapt()` 错误信封不再回落读旧名 `result` + 服务端 7.106.0 提货(caps `store` / `centerWiring` 窄读口 · SQL 姿态两代读 · 计费入口 503 `fleet.lease_unavailable` 读口与一句话 · `executionLane.isolated` 与「本机无 OS 沙箱」判定 · 请求键 `inheritEnv` 的构造 / 版本闸片段口 / 两只拒按码出句 · 权限规则表超帽坏项读口与一句 · 工具声明拒按码认领 · 请求体键形拒两张键表读口 · 强制卡值变零改动实证)+ `-p` 首帧工具来源超集键与三张估计工具表常驻(🔴 minor;型面 BREAKING 三处〔`TaskRequestInput.approverPosture` 删;两个运行期名字退出根入口,逐名见 §2z;`SemaPermissionDenial.deniedBy` 型换成 `GateDeniedByWord`〕;根公面运行期导出 1310 → 1354〔+46 −2〕;测试钩 60 → 62;公面类型 891 → 922〔+31〕;`GATE_DENIED_BY_WORDS` 元素型改为 `GateDeniedByWord`;`EngineNoticeFactsCode` +6 员、`SessionPolicyFailure` / `SessionPolicyTightenOutcome` / `SessionPolicyRemovalOutcome` / `WorkflowResolution` 各 +1 臂、`BackgroundSourceHealth` +1 词〔穷尽分支的端编译期红〕;`ENGINE_NOTICE_CODES` 73 → 80;`CONFIG_REFUSAL_CODES` 8 → 17;`STRUCTURED_DETAIL_TYPES` 45 → 46;车道表 44 行不变〔−`approverPosture` +`inheritEnv`〕;`ExecutionLaneCapabilityView` +2 可选键;`TurnWireErrorVerdict` http 臂 +1 可选键;超集键 +2〔`-p` 首帧 `_sema_tools_source` / `_sema_tools_fallback_reason`〕;零新投影臂;peer sdk 地板 `>=12.0.1` 不动〔sdk 12.0.1 / 13.1.0 / 14.0.0 / 15.0.0 下本版 `.d.ts` 严格编译均零错误〕;开发依赖引擎 `~7.33.1` → `~7.36.0`)
9647
+
9648
+ > **minor**,八件同发 + 开发依赖两步换钉:
9649
+ > ① **引擎 7.34.0 提货,两代读法**(CC-249 / CC-245 / CC-230 第二批):老引擎照旧、新引擎按新形;**缺席读作老引擎,不折成否定**。事实表第二批构建期生成;「谁拒的」两代并集(`mode` 专句,`plan_mode` 照认);门记录权限模式两臂 + 读口 `gateModeRelease`;通告码册 +6、各有事实读器;`read_unestablished` 进结构化卡型全集;本人规则店读不出在新引擎上改为跳过 + 通告;粗 shell 档那一句改成两代都成立的说法。
9650
+ > ② **服务端 7.105.0 提货**(CC-251 / CC-252):会话规则写口拒「写进去就跑不了」的工具名 → 三只写面的具名结局;配了服务凭据的部署上,门前只读路(workflow 读路、fleet 流)的 401 → 具名态与一句话。
9651
+ > ③ **请求键 `approverPosture` 退役**(CC-253):停发;宿主仍给 ⇒ 构造期按名专句拒;不改发 `permissionMode`。
9652
+ > ④ **委派判不出通告带补救话**(CC-254):`remedy` 原样透传;另三件上游新面登为不接(U-2–U-4)。
9653
+ > ⑤ **开发依赖换钉引擎 7.35.0 再到 7.36.0**(CC-255 / CC-261):生成物既有表值与序全同;工具声明门九码登记进配置拒绝识别表;7.35.0 的其余变化原样透传(T-3–T-9);7.36.0 通告码册 +1 `route.tool_call_id_folded`(受众运维面,只登记),执行后钩子改收 wire 名等其余变化零改动(TF-1–TF-5)。
9654
+ > ⑥ **`adapt()` 在错误信封上不再回落读旧名 `result`**(CC-221):0.83.0 把错误信封上的抢救正文改名 `_sema_salvaged_result` 时两名并读、没写到期;本版收口 —— 错误信封(`subtype` 以 `error_` 起头)只认新名,其余照读 `result`。现役流零变化;只有「0.83.0 之前的原始输出落盘后直接喂回 `adapt()`」那一形看得见(R-1)。
9655
+ > ⑦ **服务端 7.106.0 提货**(CC-250 / CC-256 / CC-257 / CC-262 / CC-263 / CC-265),逐票见下六段。
9656
+ > ⑧ **`-p` 首帧工具来源**(CC-266 / CC-267),见末两段。
9657
+ > **CC-250**(服务端云模式点名):服务端 7.106.0 起 caps 多两位 —— `store`(恒在场:「这台副本真的在持久化吗」)与 `centerWiring`(接了中心才在场:拉取 / 租约 / 用量三条腿此刻怎样),并把顶层 `sql` 删掉、搬进 `store.sql`;计费入口在「额度按 fail-closed 执行、而额度中心确认不了调用方预算」时答 503 `fleet.lease_unavailable`。本包出两只与既有能力位读器同形制的窄读口(本版 **consumed**)、把 SQL 姿态读面改成两代读(不改 ⇒ 7.106.0 上读成「引擎不报」)、给这一码一只读口与一句话(修前落 5xx 通用那一行)。
9658
+ > **CC-256**(服务端执行车道隔离位点名):caps `executionLane` 多一位 `isolated`(手在不在 OS 级隔离边界里;本车道有手才在场),operator 面诊断多一段 `executionLane`(同值)。本包把这一位读进既有车道读数(三种缺席分开),出「本机无 OS 沙箱」三态判定与那一句 —— 三端要说这句话时只读这一份判定,不在端上拼 `isolated === false ∧ toolsOnThisHost`。
9659
+ > **CC-257**(服务端 7.106.0 新请求键,本版 **consumed**):请求构造器加 `inheritEnv`,版本闸片段口,两只拒按码出句。服务端事实:两词闭集 `"all"` / `"scrub"`;
9660
+ > `"all"` 只在「工具跑在引擎本机 ∧ 单用户部署」兑现(能力位 `projectContext === true` 就是这个条件,**不是** `taskWriteFaceOpen`);多用户部署 × `"all"` ⇒
9661
+ > **422** `request.host_posture_refused`;工具不在引擎本机 / 请求不属于会话 × `"all"`、词表外 ⇒ 400 `request.field_invalid`;`"scrub"` 任何部署受理;
9662
+ > 🔴 **缺席 = 缺省清洗且清掉本会话上一条声明**;被拒的请求不写;7.105.0 及更早对这一键整条 400 `request.body_shape`。
9663
+ > **CC-262**(服务端 7.106.0):权限规则表(`settings.permissions.allow / deny / ask`)超过 1000 条或含非串 / 空串项不再静默截断 / 丢弃 —— 新提交 400
9664
+ > `request.field_invalid` + 机读字段;续跑腿 409 `resume_blocked_by_policy` + `blockedBy` + 同组字段。
9665
+ > **CC-263**:① 强制卡值变(部署命令策略的问 / 永不自动放行名单 / 耐久预算耗尽 / 编排路由判到监督者的 shell 与写问:`mandated: true`、
9666
+ > `ruleOffersAbsence: "mandated"`、会话级记住回执 `false`、不带理由词)—— 本包既有判据零改动即得,本版补四类卡的门格实证;② `config.tool_schema_bound`
9667
+ > 同步腿从「200 + failed 体」改成 **503** —— 本包按码认领,不当暂时故障;③ 通告码 +5(`classifier.unavailable` / `config.permission_mode_unavailable` /
9668
+ > `permission.ask_released_by_mode` / `permission.read_deny_unapplied` / `permission.rule_store_unavailable`)已在本包码册与派发表(随引擎 7.34.0 提货,即上面 ①),
9669
+ > 并在服务端 7.106.0 的用户流白名单里(门对发布包真字节核过),零改动。
9670
+ > **CC-265**(终端的请托):400 `request.body_shape` 体上的两张键表读口 + 「有没有点名 settings 路径」三态谓词。
9671
+ > **CC-266**:`-p` 首帧 `system/init` 的 `tools` 有三种来源 —— 引擎按这一 run 真实挂载铸的名册(§97,0.82.5 起名册优先)、名册确定不会来时本包拼的估计、宿主自己的静态表。修前来源只进调试句(`printInitToolFaceDebugLine`),帧上零标记:SDK / 自动化消费者照首帧配 allow / deny 时分不出这一行是不是引擎说的。本版出铸口 `printInitToolFaceSupersetKeys`(来源 + 回落原因的唯一真源),`withPrintInitFrame` 把它铺到宿主建好的首帧上;不改 CC 同名键 `tools`。
9672
+ > **CC-267**(零行为):三张估计工具表此前挂着退役条件「名册恒在场的引擎版本成为支持底线」。名册的版本线早已满足,但五种路径在任何引擎版本上都没有名册(112a-19),删表会让它们退回宿主静态表。本版改为常驻,重开退役的条件改为「上游提供运行前的完整工具清单」。
9673
+ > **到货点名**:终端 —— `/workflows` 详情对话框把 `unauthorized` 落成加载中,建议加这一态(W-1);六条新通告里的 user 码请渲,尤其 `permission.rule_store_unavailable`(N-2);消费台账里「改交审批姿态位」那一行待办要改判(A-1);自家锚登记钉着引擎「谁拒的」十词原文,换钉带引擎 7.34 的服务端时那一格会红(112d);执行后钩子失败通告上的工具名连 7.36.0 引擎时是 wire 名(TF-5);SQL 两代读、车道读数多一位、引擎车道 `-p` 首帧两只来源键零改动即得;`engine status` / 首拍的「本机无 OS 沙箱」一句与 `cloud usage` / 存储姿态 / 中心接线几行请换读本段各口(112d);503 `fleet.lease_unavailable` 请按 `leaseUnavailable` 或读口挑句(112d);🔴 交互车道要发 `"all"` 时只经片段口给值(不按版本不发会让老引擎整条 400);422 那一码换读本包读口(终端自带的临时读口按「权限模式被拒」措辞,请求带 `"all"` 时说错了对象)、设置面补充行改按键表判并交这一发的请求体(非必改);不经包装器自建首帧的三处要带来源时接铸口(非必改,112d)。网页端 —— 🔴 请求键台账删 `approverPosture` 一行、加 `inheritEnv` 一行(从 0.84.1 直升的还要加 0.85.0 的 `fileHistory` 一行;不改则对账门 A1 / A2 红;A-1 / IE-1);后台面板补 `unauthorized` 的文案、workflow 详情读改读 `resolution()`(W-1 / W-2);同步提交腿若会撞 503 工具声明拒,在通用 5xx「多半是暂时的,再试一次」那一臂之前按码认领(TD-1);503 `fleet.lease_unavailable` 今天落自家 5xx 形(建议在状态分支前先问读口,非必改);其余零读点。桌面端 —— 冻结期零读点。管理台 —— 引擎页若读 caps `store` / `centerWiring`,请换读本段读口(112d);运维面可选接 `readLegacyModeSeedMigrated`;其余零改动。
9674
+
9675
+ ### 112a. 处置表
9676
+
9677
+ 包处置列:`added` = 本包自有面本版新增;`changed` = 本版改(括注改的是什么);`removed` = 退出公面;`consumed` = 本版读上游的事实;`declined` = 本版不接(理由见括注与包侧缺口);`不变` = 回归约束。各端列:`pending` = 有读点待改(格内注明必改与否);`候` = 今天零读点、接这一面时用;`n/a` = 该端零读点或零改动即得;「零改动即得」/「回归约束」/ `—` 同 §110a(按本机克隆的只读检索,读的是哪一个提交见 112d)。
9678
+
9679
+ | # | 面 | 包处置 | 旧 → 新 | 终端 | 网页端 | 桌面端 | 管理台 | 验收方 | 本节 |
9680
+ |---|---|---|---|---|---|---|---|---|---|
9681
+ | D-1 | `GATE_DENIED_BY_WORDS` / `GateDeniedByWord` / `isGateDeniedByWord` | changed(成员 / 序 / 元素型) | SDK `DeniedBy` 十词抄件 → 引擎入口十词(构建期生成)+ 退役词 `plan_mode`;序:引擎序在前、`plan_mode` 最后;型 `readonly GateDeniedByWord[]`、守卫 `v is GateDeniedByWord` | n/a(唯一读点是型位 `(typeof GATE_DENIED_BY_WORDS)[number]`,新型同样覆盖旧词,零改动;自家锚登记见 112d) | n/a(零读点) | n/a | n/a | pending(改锚) | 112a′ · G-D1 |
9682
+ | D-2 | `gateDeniedByDetail('mode')` | changed(已发导出改行为) | 兜底句 → 专句 `denied by this session's permission mode` | n/a(零调用点) | 零改动即得(拒绝披露行走本口) | n/a | n/a | pending | G-D2 |
9683
+ | D-3 | `ccToolDenialKindForToolEnd` / `_sema_denial_kind`(`deniedBy: "mode"`,无结算) | changed | 缺席 → `permission-rule` | 零改动即得 | 零改动即得 | n/a | n/a | pending | G-D3 |
9684
+ | D-4 | `askOriginDetail('shell_gate_tighten')` | changed(句子) | 旧句 → 两代都成立的新句 | n/a(零钉句) | n/a | n/a | n/a | pending(改锚) | G-D4 |
9685
+ | D-5 | `SemaPermissionDenial.deniedBy`(`-p` 结果帧 `_sema_permission_denials[]` / `permission_denials[]` 行) | changed(型面 BREAKING + 已发导出可观察值) | 型 SDK `DeniedBy`(十词,无 `mode`)→ `GateDeniedByWord`(十一词);新引擎模式拒那一行 `deniedBy` 缺席 → `"mode"`(来源位 `tool_end`,两载体同值) | 零改动即得(`-p` 结果帧原样写出;零 TS 读点) | n/a(零读点) | n/a | n/a | pending(改锚:按「`deniedBy` ∈ SDK 十词」断言的格) | 112a′ 第 24 条 · 112b · G-D5 |
9686
+ | M-1 | `GateDispositionView` 放行臂 `released?` / `GateModeReleaseView` | added | 无 → 模式替人放行的账(整只或缺席) | 候(渲工具卡的「由模式放行」时接) | 候 | n/a | n/a | pending | 112a-1 · G-M1 |
9687
+ | M-2 | `GateDispositionView` 拒绝臂 `mode?` / `askClass?` / `classes?` | added | 无 → 模式拒三位(逐位) | 候 | 候 | n/a | n/a | pending | G-M2 |
9688
+ | M-3 | `gateModeRelease(g)` | added | 无 → 放行账读口;`undefined` 不是「没经过模式放行」 | 候 | 候 | n/a | n/a | pending | G-M1 · G-M3 |
9689
+ | M-4 | `tool_end_result.gate`(既有投影臂) | 不变(视图多两组可选位) | 同一只窄读器原样上臂 | 零改动即得 | n/a | n/a | n/a | 回归约束 | G-M4 |
9690
+ | N-1 | `ENGINE_NOTICE_CODES` / `ENGINE_NOTICE_AUDIENCE` | consumed(构建期生成) | 七十三 → 七十九码(五条 user、一条 operator;本版另一码见 TF-1,合计八十) | 零改动即得(可见性按受众走) | n/a | n/a | n/a | pending(改锚) | G-N1 |
9691
+ | N-2 | `readRuleStoreUnavailable` / `RuleStoreUnavailableFactsView` | added | 无 → `{ at, sessionId, runId }` | 候(建议:user 码渲专属行 —— 这一轮规则没生效) | 候 | n/a | n/a | pending | 112a-2 · G-N2 |
9692
+ | N-3 | `readClassifierUnavailable` / `ClassifierUnavailableFactsView` | added | 无 → `{ toolName, toolCallId, cause, disposition, sessionId?, runId? }` | 候 | 候 | n/a | n/a | pending | G-N3 |
9693
+ | N-4 | `readPermissionModeUnavailable` / `PermissionModeUnavailableFactsView` / `PERMISSION_MODE_FOLD_REASONS` | added | 无 → `{ requested, effective, by, sessionId, runId, childSessionId? }` | 候 | 候 | n/a | n/a | pending | G-N4 |
9694
+ | N-5 | `readAskReleasedByMode` / `AskReleasedByModeFactsView` | added | 无 → `{ mode, askClass, origin?, mandate?, count, firstToolCallId, sessionId?, runId? }` | 候 | 候 | n/a | n/a | pending | G-N5 |
9695
+ | N-6 | `readReadDenyUnapplied` / `ReadDenyUnappliedFactsView` | added | 无 → `{ mode, toolCallId, tiers, rows, rowCount, sessionId, runId }` | 候 | 候 | n/a | n/a | pending | G-N6 |
9696
+ | N-7 | `readLegacyModeSeedMigrated` / `LegacyModeSeedMigratedFactsView` | added(operator) | 无 → `{ permissionMode?, droppedKeys, sessionId, runId }` | n/a(运维面) | n/a | n/a | 候(运维面) | pending | G-N7 |
9697
+ | N-8 | `readEngineNoticeFacts` / `ENGINE_NOTICE_FACT_READERS` / `EngineNoticeFactsCode` | changed(+6 行 / +6 员) | 九码 → 十五码有 typed 读数 | n/a(零读点) | n/a | n/a | n/a | pending | G-N2–G-N7 |
9698
+ | S-1 | `STRUCTURED_DETAIL_TYPES` / `structuredDetailType` | changed(+`read_unestablished`;序) | 四十五型 → 四十六型(构建期生成) | n/a(壳只认 `code`,不读 `type`) | n/a | n/a | n/a | pending | G-S1 |
9699
+ | F-1 | `ASK_UNRESOLVABLE_CAUSES` / `DURABLE_MANDATE_SOURCES` / `TERMINAL_CAUSE_KINDS` / `WORKFLOW_SIZE_GUIDELINE_AGENT_CAPS` / `CONTROL_TOOL_VERBS` | consumed(构建期生成;前四名对象身份变,`CONTROL_TOOL_VERBS` 迭代序变) | 手抄 → 生成物;值 / 型不变 | n/a(零改动) | n/a | n/a | n/a | 回归约束 | 112a′ |
9700
+ | H-1 | `RULE_STORE_UNREADABLE_KINDS` 一族 / `ApprovalCardRequest.ruleStoreUnreadable` / `askSurvivesPosture` | 不变(两代读法;上游退役) | 行为不变;新引擎上恒缺席(服务端 7.106.0 起活卡帧也不带) | 零改动(读点照旧成立) | 零改动 | n/a | n/a | 回归约束 | 112a-3 · G-H1 |
9701
+ | P-1 | 请求体 `permissionMode` 词表 | 不变(核过) | 五词;`dontAsk` 壳侧归一 | 零改动 | 零改动 | n/a | n/a | n/a | 112a-4 |
9702
+ | L-1 | 错误码 `rules.legacy_tool_name`(400;`PUT /v1/sessions/:id/policy`,服务端 ≥7.105.0) | consumed | 按状态落(`request-rejected` / `unknown` 的 `request_rejected` / `write_refused` 的 `request_rejected`)→ 具名臂:分类 `legacy-tool-name`,收紧 / 撤销两只结局 `legacy_tool_name`;码先于状态 | 零改动即得(结局那一句自动出;可选:`alreadyInRecord: true` 时引到撤销动词,112d) | n/a(零读点) | n/a | n/a | pending(G-L1–G-L4) | 112a-5 |
9703
+ | L-2 | 拒体顶层 `field` / `name` | consumed(`field` 窄到 `toolDeny` / `toolAllow`,`name` 只认非空串;只从体源槽读) | 无 → 三只结局的 `field?` / `name?`;收紧结局另带 `alreadyInRecord?` | 候 | n/a | n/a | n/a | pending | 112a-5 · 112b |
9704
+ | L-3 | `RULES_LEGACY_TOOL_NAME` / `isRulesRefusalCode` | added(识别;开集前缀判) | 无 → 码常量 + `rules.` 族前缀谓词;写口分类里同族未知码(4xx)落 `error` | 候 | n/a | n/a | n/a | pending | G-L1 |
9705
+ | L-4 | `legacyToolNameFailureNoteOf(code)` | changed | 只认 `config.legacy_tool_name` → 两码各一句(写入被拒那一句;准备期那一句逐字节不变) | 零改动即得 | n/a | n/a | n/a | pending(改锚) | 112a′ · G-L1 |
9706
+ | L-5 | 同步导入规则面的拒绝(`POST /v1/sessions/:id/sync/import`) | declined(会话 bundle 三函数原样转口;KL-269) | —;宿主用 `legacyToolNameFailureNoteOf(err.errorCode)` 取句子,两格在 sdk 错误的 `extra` | n/a | n/a | n/a | n/a | n/a | 包侧缺口 |
9707
+ | W-1 | workflow 读路 `GET /v1/workflows[/:id]` 的 `401 auth.unauthorized` / 无码 401(服务端 ≥7.105.0,配了服务凭据的部署) | consumed | `resolution()` `{ kind: 'pending' }`、每 1–3 s 一轮 → `{ kind: 'unauthorized', state, lastError }`、60 s 长退避、不开活动流;`status()` 形与值不变 | pending(建议:详情对话框把它落进加载格,见 112d) | pending(建议:详情读只看 `status()`,401 答成连不上;改读 `resolution()`,见 112d) | n/a(零读点) | n/a | pending(G-W1 / G-W3 / G-W4) | 112a-6 |
9708
+ | W-2 | fleet 流快照 `GET /v1/fleet/stream` 的同两形 | consumed | `createBackgroundView` 的 `sources.fleet` `'unavailable'` → `'unauthorized'`(这一源的行不进视图) | n/a(终端自持 fleet 读路,不经本口) | pending(建议:面板文案表补这一词,否则原样渲 `fleet: unauthorized`) | n/a | n/a | pending(G-W2) | 112a-6 |
9709
+ | W-3 | `READ_CREDENTIAL_NOT_ACCEPTED_NOTICE` | added | 无 → 两处共用的一句话 | 候(W-1 那一格用它) | 候(W-1 / W-2 那两格用它) | n/a | n/a | pending | G-W1 / G-W2 |
9710
+ | W-4 | 任务 / 用量读路(`GET /v1/tasks*` / `GET /v1/usage/*`)的同一 401 | n/a(本包没有这一族的读口) | — | — | — | — | — | n/a | — |
9711
+ | W-5 | 同为 401 的 `auth.principal_required` / `principal_unverified`;assistant 源(`GET /v1/assistant/tasks`)的 401 | declined(早于本版就有、出路不同;KL-266 / KL-267) | 照旧:监视器 `pending`、fleet 源与 assistant 源 `unavailable` | n/a | n/a | n/a | n/a | 回归约束(G-W4) | 包侧缺口 |
9712
+ | A-1 | 请求键 `approverPosture`(`TaskRequestInput.approverPosture`、车道表那一行) | removed(🔴 型面 BREAKING) | interactive + print 有座、live 门后、只收字面 `'bypass'` → 入参型无此位、车道表无此行(本版另加 `inheritEnv` 一行,仍 44 行);宿主仍给 ⇒ `TypeError` 专句(A-3) | n/a(零发送点;消费台账一行待改判,见 112d) | 🔴 pending(必改:请求键台账删这一行、加 `inheritEnv` 一行,见 112d) | n/a | n/a | pending(G-A1–G-A7) | 112a-7 · 112b |
9713
+ | A-2 | `APPROVER_POSTURE_BYPASS` / `approverPostureDeclarationField`(🔧 0.86.0 退出公面) | removed(型面 BREAKING;根公面 −2) | 根入口导出 → 不导出;无替代(不改发 `permissionMode`) | n/a(零具名 import) | n/a(零具名 import) | n/a | n/a | pending(按导出数断言的改锚) | §2z · G-A6 |
9714
+ | A-3 | `buildTaskRequest` / `assembleTaskRequest` 见到 `approverPosture` | changed(已发导出改行为) | `'bypass'` 上请求体、别的值 `TypeError`(坏值句)→ 任何在场值 `TypeError`(退役专句);`undefined` / `null` = 缺席不变 | n/a | n/a(今天不发) | n/a | n/a | pending | 112a-7 · G-A1 / G-A2 / G-A7 |
9715
+ | A-4 | `taskRequestSeatOf('approverPosture', lane)` | changed | interactive / print `seated`(live 门后)、utility `none` / `off_lane` → 三车道 `unknown` | n/a | n/a | n/a | n/a | pending | G-A4 |
9716
+ | A-5 | `unregisteredRequestKeys` 对请求体上的 `approverPosture` | changed | interactive / print 不点名 → 三车道点名 | n/a | pending(出口判官那一段若把它列进白名单要删,见 112d) | n/a | n/a | pending | G-A5 |
9717
+ | A-6 | 能力位 `taskApproverPosture`(服务端 ≤7.105.x 报 / 7.106.0 起删) | declined(不变) | 本包零读点(与 §107 X-1 同);7.106.0 起缺席对本包零行为 | n/a(端上的三态读口把缺席读成「引擎没报」,零改动) | n/a | n/a | n/a | n/a | 112b |
9718
+ | A-7 | `permissionMode` | 不变 | 与 `approverPosture` 互不派生:缺席时不长出、宿主给的原样过境 | 回归约束 | 回归约束 | 回归约束 | n/a | 回归约束 | G-A3 |
9719
+ | U-1 | `AskUnresolvableFactsView.remedy?: string`(`readAskUnresolvable` / `readEngineNoticeFacts` 的 `delegation.ask_unresolvable` 视图) | added(可选键;型面 additive) | 无 → 非空串原样透传 | 可选接(112d) | 可选接(同左) | n/a | n/a | pending(G-U1–G-U6) | 112b · 112c |
9720
+ | U-2 | 协作形审批请求的作者位 `AskRequest.authoredBy` | declined(KL-276) | — | n/a | n/a | n/a | n/a | n/a | 包侧缺口 |
9721
+ | U-3 | 接线回执 `wiring_manifest` 的权限模式回执 | declined(KL-277) | — | n/a | n/a | n/a | n/a | n/a | 包侧缺口 |
9722
+ | U-4 | 引擎包根新导出而本包生成器不接的九张权限裁决表(`PERMISSION_MODE_RANK` / `MODE_ARBITRATION` / `RRA_EXPLAINERS` / `RELEASABLE_ASK_CLASSES` / `ASK_CLASSES` / `ACCEPT_EDITS_FILE_COMMANDS` / `DENY_FACES` / `READ_DENY_HOME_WORD` / `PERMISSION_MODES`) | declined(KL-278) | — | n/a | n/a | n/a | n/a | n/a | 包侧缺口 |
9723
+ | T-1 | 开发依赖 `@sema-agent/core`(构建期,不进运行期依赖) | changed | `~7.33.1` → `~7.36.0`(本版先到 7.34.0,再换钉 7.35.0,再换钉 7.36.0);生成物既有表逐值不变 | n/a | n/a | n/a | n/a | n/a | — |
9724
+ | T-2 | `CONFIG_REFUSAL_CODES` | changed(成员 +9;型面不变) | 八员 → 八员 + 引擎工具声明门九码(十七员) | n/a(零读点;终端读的是前缀谓词 `isConfigRefusalCode`,不变) | n/a(零读点) | n/a | n/a | pending(G-T1 / G-T2) | 112a-8 |
9725
+ | T-3 | 引擎治理码表去掉 `config.tool_mount_denied` | declined(本包零穷举读点) | —;子代 `errorKind` 由 `governance` 变 `logic`,原样透传 | 回归约束 | 回归约束 | n/a | n/a | pending(G-T3) | 112b |
9726
+ | T-4 | 别名调用的工具名分两层(引擎 7.35.0 起) | declined(原样透传,KL-281) | 两层都是模型写法 → 门 / 卡 / 停放行 / 拒绝清单 / PreToolUse = 归一名;`tool_use` / `tool_start` / `tool_end` = 模型写法(执行后钩子见 TF-5) | 见 112y 第 2 条 | 见 112y 第 2 条 | n/a | n/a | pending(G-T4) | 112b · 包侧缺口 |
9727
+ | T-5 | 钩子失败通告的 `toolName`(`classifyHookFailureFrame`) | 不变(原样透传) | PreToolUse 那一侧在新引擎上是归一名;PostToolUse 那一侧在引擎 7.35.x 上是模型写法(7.36.0 起见 TF-5) | 见 112y 第 2 条 | n/a | n/a | n/a | pending(G-T4) | 112b |
9728
+ | T-6 | `dontAsk` 下钩子提问撞上 ask 规则 / 安全检查 | n/a(引擎侧收紧;词与句不变) | 出卡 → 拒(`deniedBy: "mode"`) | 回归约束(拒绝行照 `mode` 渲) | 回归约束 | n/a | n/a | pending(G-T5) | 112a′ |
9729
+ | T-7 | `config.permission_mode_unavailable` 的 `inherited_ceiling` | 不变(读器不变) | 上限 = 起它的父会话 → 起它的那一跑在跑时读那一跑、停下后读同一会话最近提交的那一跑 | 回归约束 | 回归约束 | n/a | n/a | n/a | 112b |
9730
+ | T-8 | `responseModel`(轮末帧 / 终局) | declined(不套回声形谓词,KL-282) | 新引擎形外的值缺席;老引擎照旧透传;空串两代 = 缺席 | 回归约束 | 回归约束 | n/a | n/a | pending(G-T6) | 112b · 包侧缺口 |
9731
+ | T-9 | 引擎对退役请求键 `approverPosture` 的拒绝句 | 不变(本包专句不改) | 引擎句「写 `bypassPermissions`」→「姿态从不授权;删掉;放行是另一项决定」,与本包专句同向 | n/a | n/a | n/a | n/a | n/a | KL-280 收口 |
9732
+ | R-1 | `adapt()`(`createWireToCcAdapter().adapt`)result 臂:错误信封上的抢救正文 → 终答行 / 补后缀 / `result_text_diverged` | changed(已发导出改行为;0.83.0 两名并读的收口,CC-221) | 两名并读(`_sema_salvaged_result` 优先,`result` 不分成功 / 错误信封都照读)→ **错误信封**(`subtype` 是串且以 `error_` 起头,含日后新增的同前缀子型)只认 `_sema_salvaged_result`(串才算,非串不回落),不读 `result`;其余(成功型、`success` + `is_error: true`、不以 `error_` 起头的串、`subtype` 缺席 / 非串)照读 `result`(与 0.85.x 逐字同) | n/a(零读点;`adapt()` 只吃现铸流) | n/a(零读点;自己的结果帧映射另有两名并读,不经 `adapt()`,本版不碰,见 112d) | n/a(冻结) | n/a(零读点) | pending(「旧形帧照读」判据眼改锚,112a′) | 112a-9 · 112a′ · G-R1–G-R8 |
9733
+ | TF-1 | 通告码 `route.tool_call_id_folded`(引擎 7.36.0;受众 operator;provider 给的工具调用 id 不合规时引擎折叠成自己的 id,每 run 首次一条) | consumed(只登记:码册 / 受众表随生成物;无事实读器) | 册外 → 在册、受众 operator | 渲 `message` 于运维面 / 不上用户面 | 同 | 同 | 同 | pending(G-TF1 / G-TF2) | 112a-10 |
9734
+ | TF-2 | `ToolCall.wireId?` / `SideQueryResult.toolCalls[].wireId?`(provider 原始 id,仅折叠时在场) | declined(n/a:本包不投影 `ToolCall`,零读点) | — | — | — | — | — | — | 112a-10 |
9735
+ | TF-3 | 停车行 `pendingAction.names` 名字序改「拼写先」 | declined(n/a:零读点) | — | — | — | — | — | — | 112a-10 |
9736
+ | TF-4 | `AggregateBudgetOptions.toolNameOf?` / `ContextEditOptions.toolNameOf?` | declined(n/a:引擎内部选项,非 wire 面) | — | — | — | — | — | — | 112a-10 |
9737
+ | TF-5 | 执行后钩子 PostToolUse / PostToolUseFailure 的工具名(引擎 7.36.0) | 不变(本包 `toolName` 只做有界处理、不改名;KL-281 改口) | 模型拼写 → wire 名(与 PreToolUse 同层);PostToolBatch 仍是模型拼写 | 见 112y 第 2 条(按模型拼写匹配这几条通告的改按 wire 名) | n/a | n/a | n/a | pending(G-T4 按引擎版本两判) | 112a-10 · 112b |
9738
+ | Q-1 | `projectSqlEngineCapability` / `observedSqlEngine`(caps `sql` → `store.sql`) | changed(两代读) | 7.106.0 回体:`not_reported` → `present` / `none`;≤7.105.x 回体逐字不变 | 零改动即得(doctor 两处经本包投影 / 读口) | n/a | n/a | n/a | pending(G-Q1 / G-Q2) | 112b · G-Q1–G-Q3 |
9739
+ | SP-1 | `projectStorePostureCapability(caps)` / `noteEngineCapsForStorePosture` / `observedStorePosture` / `forgetStorePostureReading` | added(consumed) | — → caps `store` 四态读数 | pending(`engine status` 存储那一行;建议换读) | n/a | n/a | pending(引擎页若读 `store`) | pending(G-SP1–G-SP4) | 112b · G-SP1–G-SP4 |
9740
+ | SP-2 | `storePersistence(reading)` | added | — → `durable` / `not_durable` / `unknown` | pending(同 SP-1) | n/a | n/a | pending | pending(G-SP2) | G-SP2 |
9741
+ | SP-3 | `storePostureDoctorDetail(reading)` | added | — → 一行 detail(112a-11) | pending(同 SP-1) | n/a | n/a | pending | pending(G-SP3) | 112a-11 · G-SP3 |
9742
+ | SP-4 | 类型 `StorePostureView` / `StorePostureReading` | added | — | — | — | — | — | — | 112b |
9743
+ | C-1 | `projectCenterWiringCapability(caps)` / `noteEngineCapsForCenterWiring` / `observedCenterWiring` / `forgetCenterWiringReading` | added(consumed) | — → caps `centerWiring` 四态读数(多一档 `none` = 没接中心) | pending(`engine status` 中心 / 租约两行) | n/a | n/a | pending(引擎页若读 `centerWiring`) | pending(G-C1–G-C4) | 112b · G-C1–G-C4 |
9744
+ | C-2 | `callerQuotaLease(reading)` | added | — → 六词判决(112b) | pending(`cloud usage`:`not-enforced` 渲「不限额」前用它;`no-lease` 渲不渲由端定) | n/a | n/a | n/a | pending(G-C3) | G-C3 |
9745
+ | C-3 | `centerWiringDoctorDetail(reading)` | added | — → 一行 detail(112a-11) | pending | n/a | n/a | pending | pending(G-C4) | 112a-11 · G-C4 |
9746
+ | C-4 | 类型 `CenterWiringView` / `CenterWiringRevisionView` / `CenterWiringCallerView` / `CenterWiringReading` / `CallerQuotaLease` | added | — | — | — | — | — | — | 112b |
9747
+ | C-5 | `centerWiring.caller` 的射程 | 成文 | 按取这份 caps 的身份成立;读账按 baseUrl 分格 | n/a(单身份) | n/a | n/a | 🔴 多身份代读时对每个身份的回体直调 `projectCenterWiringCapability`,不用读口缓存 | — | 112b · 包侧缺口 ㉑ |
9748
+ | LU-1 | `FLEET_LEASE_UNAVAILABLE` / `fleetLeaseUnavailableFromError(err)` | added | — → `{ code, reason?, retryAfterSec? }` 或 `null` | pending(提交失败时先问它) | pending(建议:自家 http 状态分支之前先问它;非必改) | n/a | n/a | pending(G-LU1 / G-LU2) | 112b · G-LU1–G-LU2 |
9749
+ | LU-2 | `fleetLeaseUnavailableContent(detail)` | added | — → 一句话(112a-12) | pending(同 LU-1) | pending(同 LU-1) | n/a | n/a | pending(G-LU3) | 112a-12 · G-LU3 |
9750
+ | LU-3 | `classifyTurnWireError` 的 `http` 判决 `leaseUnavailable?: true` | added(判决多一可选键) | 这一码时在场;其余判决逐字不变 | 零改动即得(不读就不变) | 零改动即得(同左;读它可挑句) | n/a | n/a | pending(G-LU4) | G-LU4 |
9751
+ | X-1 | `ExecutionLaneCapabilityView.isolated?` / `.isolatedAbsent?` | added(视图 +2 可选键,恰一在场) | `present` 读数:两键 → 三键 | 零改动即得(按字段读的端不受影响) | n/a | n/a | n/a | pending(按「恰两键」断言的格改锚,112a′) | 112b · G-X1 / G-X2 |
9752
+ | X-2 | `noOsSandboxOnThisHost(reading)` | added | — → `yes` / `no` / `unknown` | pending(首拍 / `engine status` 那一句换读;不在壳里拼判据) | n/a | n/a | n/a | pending(G-X3) | 112a-13 · G-X3 |
9753
+ | X-3 | `noOsSandboxContent()` | added | — → 一句话(112a-13),只在 `yes` 时渲 | pending(同 X-2) | n/a | n/a | n/a | pending(G-X4) | 112a-13 · G-X4 |
9754
+ | X-4 | `projectExecutionLaneWiring(wiring)`(operator 面 `GET /v1/diagnostics/wiring` 的 `executionLane` 段) | added | — → 与 caps 同形读数;段缺席 ⇒ `not_reported` | n/a(今天不读诊断面该段) | n/a | n/a | pending(若读诊断面) | pending(G-X5) | G-X5 |
9755
+ | X-5 | `toolsRunHereFromExecutionLane` / `executionLaneDoctorDetail` | 不变 | 逐字不变 | 回归约束 | — | — | — | 回归约束 | G-X6 |
9756
+ | IE-1 | 请求键 `inheritEnv`(`TaskRequestInput.inheritEnv?: 'all' \| 'scrub'`;车道表一行) | added(服务端新键 consumed) | 表外键响亮拒 → interactive / print 有座(live 门后)、两词原样上体、缺席不发;utility 无座(`off_lane`);词表外构造期 `TypeError` 不回显值 | pending(交互车道要发 `"all"`:经 IE-3 片段口给值,112d) | 🔴 pending(零发送点;请求键台账加这一行,见 112d) | n/a | n/a | pending(G-IE1–G-IE3) | 112a-14 · G-IE1–G-IE3 |
9757
+ | IE-2 | `INHERIT_ENV_WORDS` / `isInheritEnvWord(v)` / `inheritEnvServerSupport(version)` / `INHERIT_ENV_MIN_SERVER` | added | — → 两词闭集与判词口;版本三态(整串正式版 ≥ 7.106.0) | pending(同 IE-1) | n/a | n/a | n/a | pending(G-IE4) | G-IE4 |
9758
+ | IE-3 | `inheritEnvDeclaration(word, serverVersion)` ⇒ `{ field, withheld? }` | added | — → 版本 supported 才给片段;否则空片段 + 回执成因;坏词先于版本拒 | pending(拼请求处 spread `…field`;`withheld` 在场渲 IE-4) | n/a | n/a | n/a | pending(G-IE5 / G-IE6) | 112a-14 · G-IE5 / G-IE6 |
9759
+ | IE-4 | `inheritEnvWithheldNotice(withheld)` | added | — → 四句(112a-14),不抛 | pending(同 IE-3) | n/a | n/a | n/a | pending(G-IE7) | 112a-14 · G-IE7 |
9760
+ | IE-5 | `inheritEnvRefusalFromError(err, sentRequest)` / `inheritEnvRefusalContent(detail)` | added | — → 400 `request.field_invalid` × 请求体带 `"all"` × 无权限桶字段 ⇒ 认领、一句(条件措辞) | pending(建议) | n/a | n/a | n/a | pending(G-IE8) | 112a-15 · G-IE8 |
9761
+ | HP-1 | `hostPostureRefusalFromError(err, sentRequest?)` / `hostPostureRefusalContent(detail)` | added | 零读口 → 422 `request.host_posture_refused` 一只读口,按请求体归因四形、四句 | pending(🔴 请求会带 `"all"` 之后必改:换掉自带临时读口,112d) | n/a | n/a | n/a | pending(G-HP1–G-HP3) | 112a-15 · G-HP1–G-HP3 |
9762
+ | PB-1 | `settingsPermissionBucketRefusalFromError(err)` | added | — → 按码 + `field` + `reason` 窄读,新提交 / 折叠两形同读 | pending(建议:设置面补充链加这一臂) | n/a | n/a | n/a | pending(G-PB1–G-PB3) | 112a-16 · G-PB1–G-PB3 |
9763
+ | PB-2 | `settingsPermissionBucketRefusalContent(detail)` | added | — → 一句(哪一表、几条 / 第几条;新提交 / 折叠两框) | pending(同上) | n/a | n/a | n/a | pending(G-PB4) | 112a-16 · G-PB4 |
9764
+ | PB-3 | 决断出口失败文字(审批 / 提问 / 撤卡 / 计划复核) | changed(折叠形 + 权限表字段时多补一句) | 折叠码那一句 → 其后再补 PB-2 那一句(续跑框);其余形逐字节同上一版 | 零改动即得 | 零改动即得(用包决断出口时) | n/a | n/a | pending(G-PB5) | G-PB5 |
9765
+ | MC-1 | 强制卡四类(值变) | 零改动即得(本包既有判据) | 服务端值变 `shadowed` → `mandated`、`mandated: true`、记住回执 `false`、无理由词 ⇒ `approvalIsMandated` 答 true、`readApprovalMandate` 答缺席、`mandatedApprovalDetail()` 那一句、会话级放行没记住告知恰一次 | 零改动即得 | 零改动即得(用包卡腿时) | 零改动即得 | n/a | 回归约束(G-MC1) | G-MC1 |
9766
+ | TD-1 | `toolDeclarationRefusalFromError(err)` / `toolDeclarationRefusalContent(detail)` | added | — → 工具声明门九码按码认领、一句「不是暂时故障」 | 回归约束(只按 draining 码重试 503;可选接这一句) | pending(🔴 同步提交腿会撞时:在通用 5xx 臂之前认领,112d) | n/a | n/a | pending(G-TD1 / G-TD2) | 112a-17 · G-TD1 / G-TD2 |
9767
+ | NC-1 | 通告码 +5(服务端 7.106.0 用户流白名单) | 零改动(随引擎 7.34.0 已进码册与派发表,即 N-1–N-8) | — | — | — | — | — | 回归约束 | — |
9768
+ | BS-1 | `bodyShapeRefusalFromError(err)` | added(终端请托 consumed) | — → 两张键表严格读、缺席 ≠ 空表 | pending(建议:设置面补充行换锚,112d) | n/a | n/a | n/a | pending(G-BS1 / G-BS2) | 112b · G-BS1 / G-BS2 |
9769
+ | BS-2 | `bodyShapeRefusalTouchesSettings(detail, sentBody?)` | added | — → 三态(表里有不带前缀的键 ⇒ `false`;带 `settings.` 前缀的键按整份已发请求体归层,两处都按引擎回显同形比、顶层先于设置层;不交请求体 ⇒ 带前缀的键答 `undefined`) | pending(同上;调用点交这一发的整份请求体,112d) | n/a | n/a | n/a | pending(G-BS3 / G-BS4 / G-BS5) | 112b · G-BS3–G-BS5 |
9770
+ | TS-1 | `printInitToolFaceSupersetKeys(face)` | added(铸口唯一真源) | — → 判定面 ⇒ `{ _sema_tools_source, _sema_tools_fallback_reason? }`(112a-18 表);每次新对象;坏入参不抛;来源写着 `engine-roster` 却带回落原因 ⇒ `estimate` | pending(自建首帧三处要带来源时调它,非必改,112d) | n/a(零读点) | n/a | n/a | pending(G-TS1 / G-TS2 / G-TS3 / G-TS7 / G-TS7b) | 112a-18 · G-TS1–G-TS3 · G-TS7 / G-TS7b |
9771
+ | TS-2 | `withPrintInitFrame` 放出的首帧 | changed(多两键) | 宿主 `buildInit` 的返回原样放出 → 同一只对象上铺 TS-1 的两键后放出;`tools` 与其余各键、键序逐字节不动;同名两键以本包为准(KL-300);帧不可写(含不可扩展而要新增键)⇒ 不铺照放(KL-301);`buildInit` 每次返回新对象 | 零改动即得(引擎车道首帧多两键;112d) | n/a | n/a | n/a | pending(G-TS1–G-TS6;按「首帧键集恰等于某集合」断言的格改锚,112a′) | 112a-18 · G-TS1–G-TS6 |
9772
+ | TS-3 | 超集键 `_sema_tools_source` / `_sema_tools_fallback_reason`(`-p` stream-json 首帧 `system/init`) | added(超集键 +2) | 无 → 来源三词 + 回落原因四词(present-iff `estimate`) | 零改动即得(引擎车道);自建首帧三处缺席(KL-302 ③) | n/a | n/a | n/a | pending(G-TS8,端侧黑盒) | 112a-18 · 112b · G-TS8 |
9773
+ | TS-4 | 型 `PrintInitToolsSource` / `PrintInitToolFaceSupersetKeys` | added(公面类型 +2) | — → 铸口的来源词型与返回型 | n/a(按需) | n/a | n/a | n/a | — | 112a-18 |
9774
+ | TS-5 | `decidePrintInitToolFace` / `createPrintInitGate` / `printInitRosterSignal` / `printInitToolFaceDebugLine` | 不变 | 判定、放行时机、放出序、调试句逐字节同 0.85.x;判定回调拿到的工具面不被铺键 | 回归约束 | — | — | — | 回归约束(G-TS4) | G-TS4 |
9775
+ | RS-1 | `ENGINE_HANDS_BAND` / `ENGINE_SCENARIO_EXTRAS_DEFAULT` / `ENGINE_RUNNER_FACE` / `runnerFaceForEnv` / `resolveLiveInitToolFace` | 不变(重分类为常驻,CC-267) | 过渡物(待退役)→ 名册缺席时的最好估计(常驻);内容与产出逐字节同 0.85.x;重开退役的条件 = 上游提供运行前的完整工具清单(112a-19,KL-206) | 回归约束(转口不动) | — | — | — | 回归约束(G-TS9) | 112a-19 · G-TS9 |
9776
+
9777
+ #### 112a-1 · 放行账怎么读(M-1–M-3)
9778
+
9779
+ 只在放行臂上;`mode` 今天恒 `bypassPermissions`,`askClass` 是被放行那组类里对外说的那一个,`classes` 是整组;`origin` / `mandate` 是卡要是呈出来会显示的两个词(措辞仍走 `askOriginDetail` / `approvalMandateDetail`)。这是一条**披露**(谁替人答了这一问),不是授权事实,只渲不据以判权限。每一次放行都有这一条账;通告 `permission.ask_released_by_mode` 是 run 级的那一半(每 run 每(模式, 问类)一条)。
9780
+
9781
+ #### 112a-2 · 本人规则店读不出(新引擎,N-2)
9782
+
9783
+ 引擎跳过读不出的那个店(它的 allow / ask / deny 行都不参与这一次判定,读到即恢复)并每 run 发一条 `permission.rule_store_unavailable`。这一轮**这个人的 deny 行不保护他**,通告是唯一留痕 —— 请渲出来(专属行,或引擎给的 `message` 通用行)。`at: prepare` = 这一跑开头取的路径规则行被跳过(下一跑重读);`at: call` = 那一次调用的规则检查跳过了它们(之后每次调用重读)。
9784
+
9785
+ #### 112a-3 · 两代读法(H-1)
9786
+
9787
+ 老引擎(≤7.33.x)上店读不出仍是一张出身 `rule_store_unavailable`、带 `ruleStoreUnreadable: "store"` 的卡,本包照旧读(`ruleStoreUnreadableDetail` 两句照旧);新引擎上这个出身词只剩「这次调用对不上本人的规则行」一种机制,`ruleStoreUnreadable` 恒缺席(服务端 7.106.0 起活卡帧也不再带它)。`askSurvivesPosture` 对这个出身词两代都答必问(引擎仍要求真人批)。这一族何时退出公面按本包支持的引擎底线定(复核期 0.87.0)。
9788
+
9789
+ #### 112a-4 · 请求构造的权限模式口径(P-1;核过、零改动)
9790
+
9791
+ 本包不直发引擎的任务规格,发的是服务端请求体。请求词表跟 SDK 请求型派生(五词);服务端 7.104.0 发布包的请求体只收五词、词表外 400 `request.field_invalid`;壳侧 `dontAsk` 照旧归一成 `default` 发出、由壳侧拒绝臂兑现。引擎 7.34.0 自己执行的 `dontAsk` 要等服务端请求体收这个词、SDK 型面出第六词(KL-275)。同一版里请求键 `approverPosture` 退役,见 A-1–A-7 与 112a-7。
9792
+
9793
+ #### 112a-5 · 会话规则写口拒名:三只写面怎么读(L-1–L-4)
9794
+
9795
+ - **分类口** `classifySessionPolicyFailure(e)`:码 `rules.legacy_tool_name` ⇒ `{ kind: 'legacy-tool-name', message, field?, name? }`,不看状态(sdk 12 上是裸 `APIError`、sdk 13.1.0 起是 `BadRequestError`,两代同判);`field` / `name` 只从错误对象的体源槽(sdk 的 `extra`)读,错误对象自己的 `name` 是类名、从不当工具名;`extra` 读就抛不连坐(那两格缺席,臂照落)。同族别的码配 4xx ⇒ `error`(引擎带码答了、本面没有具名臂)。
9796
+ - **收紧编排** `tightenSessionPolicy`:结局 `legacy_tool_name` = 什么都没写、不重试。`alreadyInRecord: true` ⇒ 点名的那一条是这次读到的记录里早就有的存量(7.104.x 及以前写进去的):重发同一批没用,下一步是 `removeRefusedSessionRules`(要这一会话一跑的名册);`false` ⇒ 是这次送来的新条目,换现名再写;缺席 ⇒ 读不出,不猜来源。
9797
+ - **撤销动词** `removeRefusedSessionRules`:结局 `legacy_tool_name` = 它有意留下的一条(名册里挂着恰叫这个名字的工具,那是生效的限制;或本版镜像还不认得它是拒启名)恰是写口不收的名字 ⇒ 整份回写被拒、记录不变(KL-265)。
9798
+ - **措辞单源**:收紧那一句就是 `legacyToolNameFailureNoteOf('rules.legacy_tool_name')`;它与准备期那一句(`config.legacy_tool_name`)共用「是哪两类名字」一段,与写前扣下那一句(`sessionPolicyWithheldNotice('legacy_tool_name')`)共用「怎么改」一段,逐字同。直调写口的宿主用 `legacyToolNameFailureNoteOf(errorCode)` 取句子。
9799
+
9800
+ #### 112a-6 · 门前只读路「凭据没被接受」(W-1–W-3)
9801
+
9802
+ - workflow 监视器:`401 auth.unauthorized` 或无码 401(详情读与列表读两路)⇒ `resolution()` 落 `unauthorized`;`state` = 曾 live 过就是最后一份快照,否则 `null`;`lastError` 以 `401 ` 起头、带引擎原句。之后 60 s 一次的长退避、不开活动流;凭据被接受后照常回 `live`(最多等一个退避周期,KL-270)。`status()` 形与值不变(`code: 401`、`degraded: false`),只读 `status()` 的宿主看不出这一态(KL-268)。
9803
+ - 后台视图:fleet 快照同两形 ⇒ `sources.fleet: 'unauthorized'`,这一源的行不进视图;501 ⇒ `not-configured` 与其余 ⇒ `unavailable` 不变;assistant 源的 401 照旧 `unavailable`(KL-267)。
9804
+ - 一句话 `READ_CREDENTIAL_NOT_ACCEPTED_NOTICE` 两处共用:不说成没有工作流 / 列表空,不说成引擎坏了 / 连不上,不带任何值。
9805
+ - 同为 401 的 `auth.principal_required` / `principal_unverified`、以及 403 / 407 都**不进**这一态(KL-266);没配服务凭据的部署逐字节不变。
9806
+
9807
+ #### 112a-7 · 退役请求键 `approverPosture` 的专句与报错次序(A-1–A-5)
9808
+
9809
+ - `buildTaskRequest` / `assembleTaskRequest` 在入参上见到它(任何值,含曾经唯一合法的 `'bypass'`,以及 `false` / `''` / `0` / 对象 / 数组)⇒ `TypeError`:一句专句点名它是退役键、从不授权任何东西、要删掉、真要放行请显式给权限模式;只报键名不回显值;不分车道、不受 live 门。`undefined` / `null` 与缺席同读。
9810
+ - 报错次序:值级坏值(`memoryCapture` / `memory` / `maxCostUsd` / `excludeAllTools` / `maxTokens` / `outputRetries` / `fileHistory` / `inheritEnv`)先报;这句专句先于通用「不认识的键」那一句与嵌套退役子键 `rewind.rewindFiles`;`utility` 车道缺卸载声明的那一句最后报。
9811
+ - 读序:这一键不再占一格早读 —— 它上面的取值器排在全部声明位之后跑,吞不掉 `maxTokens` / `outputRetries` / `fileHistory`。
9812
+ - 座位读数三车道 `unknown`;出口判官 `unregisteredRequestKeys` 三车道都点名请求体上的这一键(绕过构造器自己往请求体上塞它的端抓得到)。
9813
+
9814
+ #### 112a-8 · 配置拒绝识别表 +9(T-2)
9815
+
9816
+ 九码(`config.tool_mount_denied` / `config.tool_roster_bound` / `config.tool_name_too_long` / `config.tool_contract_too_long` / `config.tool_schema_bound` / `config.tool_face_invalid` / `config.tool_name_invalid` / `config.egress_requires_write_effect` / `config.reserved_tool_name`)是引擎 7.35.0 在「调用方在 `spec.tools` 里声明的工具在准备阶段被拒」时 `terminal.code` 的导出闭集,本包按构建期生成物登记进识别表、排在既有八员之后。**只登记、不分派**:没有按这九码分支的处置,落 `terminal.code` 时照旧走配置拒绝那一族的既有处置;判「是不是配置拒绝」一律用 `isConfigRefusalCode`(按 `config.` 前缀,开集)。同一族的「这是请求本身的问题、不是暂时故障」那一句见 112a-17(TD-1)。引擎 7.36.0 起 `config.tool_face_invalid` 多一种成因(一只调用方工具的名字分属两只引擎工具 ⇒ 准备期拒),码不变,零改动。
9817
+
9818
+ #### 112a-9 · 错误信封上不再读旧名 `result`(R-1)
9819
+
9820
+ - 现役流(宿主 `adapt(runStream(…))`)不受影响:投影口自 0.83.0 起只在错误信封上铸 `_sema_salvaged_result`,旧名在这条路上从不出现;续读 / 接管重放由当前版本重新投影,同理;老引擎不铸 CC 形结果帧,旧名与引擎版本无关。
9821
+ - 受影响的只有:宿主把 **0.83.0 之前**的 `runStream` 原始输出(不是 `adapt()` 的输出 —— `adapt()` 的转录面里本来就没有结果帧)落盘,再**直接喂回** `adapt()`。只在截断的 run 上看得见:屏上一字未出 ⇒ 不再铸终答行;已上屏的是抢救正文的前缀 ⇒ 不再补后缀;已上屏的与抢救正文分岔 ⇒ 不再报 `result_text_diverged`。同帧的 `errors[0]`(截断句)照旧;有抢救正文的旧帧上截断句不带「no output survived the cutoff」尾注,读者会看到一句截断句而看不到正文 —— 这是这一形下的可见后果。
9822
+ - 要保留的宿主:喂回之前在错误信封(`subtype` 以 `error_` 起头)上把 `result` 改名成 `_sema_salvaged_result`(值原样;新名已在就不覆盖;成功信封不动)。本包不提供迁移口(0.83.0 成文「旧转录不迁移、不改写」)。
9823
+ - 错误信封的判法 = `subtype` 是串且以 `error_` 起头(CC 的四个错误子型全在其内,本包构建期核对这一点;CC 日后新增的错误子型只要同前缀就自动算)。不以 `error_` 起头的串(空串、认不出的词、大小写不符的 `Success`、裸 `error`)不算错误信封,照读 `result`,与 0.85.x 逐字同。
9824
+ - 判别按 `subtype`,不按 `is_error`:`subtype: 'success'` 同时 `is_error: true` 的那一形(把错误终态写成 CC 成功型的另一种写法)照旧读 `result`,与 0.85.x 逐字同。
9825
+ - `subtype` 缺席或不是串的结果帧说不清是哪一型,不算错误信封,照旧读 `result`,与 0.85.x 逐字同。
9826
+
9827
+ #### 112a-10 · 引擎 7.36.0:工具调用 id 折叠、执行后钩子的名字(TF-1–TF-5)
9828
+
9829
+ - 引擎 7.36.0 起,provider 给的工具调用 id 若不是「可见 ASCII 1–128 且不含 `~`」,引擎改用折叠形(前 32 码元 + `~` + 32 位十六进制摘要)作自己的 id;回给 provider 的仍是原始 id。于是 `tool_start` / `tool_end` / 审批卡 / 停车行上的 `toolCallId` 在这种 provider 上是折叠形 —— **本包把工具调用 id 当不透明串**(配对、去重、卡身份都按原串比对,不解析形状),折叠形照常配对;端也**不要**解析 id 的形状。要和 provider 自家日志对账的,需要引擎侧的 `ToolCall.wireId`,本包不带它(TF-2)。
9830
+ - 每 run 首次折叠会有一条 `route.tool_call_id_folded` 通告(受众 operator)。本包只认它在册、受众运维面;不给 typed 读数。
9831
+ - 引擎同版起执行后钩子 PostToolUse / PostToolUseFailure 收**调用实际派发到的工具名**(wire 名,与 PreToolUse 同层),不再是模型拼写;PostToolBatch 仍收模型拼写。本包钩子失败通告的 `toolName` 只做有界处理、不改名,所以连 7.36.0 引擎时这两只执行后钩子的失败通告上是 wire 名;连 7.35.x 引擎时仍是模型拼写(KL-281 按此改口)。
9832
+
9833
+ #### 112a-11 · 两张 doctor 句表(形)
9834
+
9835
+ 存储姿态(`storePostureDoctorDetail`;`<b>` 为装配出的后端词、`<d>` 为声明词,两词相同时只写一次;认不出的词消毒封长后原样带引号):
9836
+
9837
+ | 读数 | 句 |
9838
+ |---|---|
9839
+ | `unobserved` / 坏入参 | `store posture not observed — the engine reports it on /v1/capabilities; this process has no usable capabilities reading cached for it, so whether this deployment persists its state is unknown` |
9840
+ | `not_reported` | `store posture not reported by this engine — only newer engines advertise it; this does not say whether this deployment persists its state` |
9841
+ | 持久 | `store <b> — durable: this replica persists its state, so it survives a restart`(声明与装配不同时起头换 `store declared <d>, running on <b>`)|
9842
+ | 不持久、无降级词 | `store declared <d>, running on <b> — NOT durable: this replica holds its state in memory and loses it on restart` |
9843
+ | 降级 `db_unreachable` | 同上 + ` (degraded: the declared database could not be opened at start-up, so the engine fell back rather than refusing to start)` |
9844
+ | 降级 `local_unwritable` | 同上 + ` (degraded: the default local file store could not be created, for example a read-only or full data directory)` |
9845
+ | 降级、认不出的词 | 同上 + ` (degraded for a reason this client does not know yet: "<词>")` |
9846
+
9847
+ 中心接线(`centerWiringDoctorDetail`):`unobserved` / `not_reported` / `none` 各一句(`not_reported` 不说「没接中心」;`none` 说 `no configuration center on this deployment — …`);`present` 拼成 `connected to a configuration center — <拉取>, <修订> · <租约> · <用量上报> · <签发方>`:
9848
+
9849
+ | 位 | 已知词 → 片段 |
9850
+ |---|---|
9851
+ | 拉取 | `effectivePull` true ⇒ `configuration pulled from the center`;false ⇒ `latest configuration pull did not succeed (running on what it already had)` |
9852
+ | 修订 | 有 ⇒ `revision <version> in effect`;`null` ⇒ `no revision in effect yet`(不编数)|
9853
+ | 租约 | `absent` ⇒ `quota lease not configured`;`configured` ⇒ `quota lease configured (<健康>; <姿态>)`;其余词 ⇒ `quota lease reported as "<词>"` |
9854
+ | 健康 | `ok` ⇒ `the quota service is answering` · `auth-rejected` ⇒ `the quota service rejected this engine's credentials` · `unreachable` ⇒ `the quota service could not be reached` · `unobserved` ⇒ `no lease negotiated yet` · 缺席 ⇒ `lease health not reported` |
9855
+ | 姿态 | `closed` ⇒ `billed requests are refused while a budget cannot be confirmed` · `open` ⇒ `billed requests are let through while a budget cannot be confirmed` · 缺席 ⇒ `failure posture not reported` |
9856
+ | 用量上报 | `usage reporting on` / `usage reporting off` |
9857
+ | 签发方 | `explicit` ⇒ `token issuer set explicitly` · `fallback` ⇒ `token issuer defaults to the center` |
9858
+
9859
+ 调用方租约(`caller`)不进这一行(它按身份,见 C-5);要说给用户听用 `callerQuotaLease`。
9860
+
9861
+ #### 112a-12 · 503 那一句(`fleetLeaseUnavailableContent`,逐字)
9862
+
9863
+ 起句恒为:`This deployment could not confirm your usage budget with its quota service, and it refuses billed work while it cannot check, so the engine did not accept this request · Nothing is wrong with the request itself`,其后:
9864
+
9865
+ | 成因(`reason`)| 补句 |
9866
+ |---|---|
9867
+ | `auth-rejected` | ` · The quota service rejected this engine's credentials — if this keeps happening, whoever operates the engine needs to fix them` |
9868
+ | `unreachable` | ` · The engine could not reach the quota service` |
9869
+ | 认不出 / 缺席 | 不补(不编成因、不回显原词) |
9870
+
9871
+ | 等待量 | 收尾 |
9872
+ |---|---|
9873
+ | 有 `retryAfterSec` | ` · Send it again in about <N s / N min …>` |
9874
+ | 没有 | ` · The engine did not say how long to wait — send it again a little later` |
9875
+
9876
+ 零机器码、零状态码;坏入参按「无成因、无数」那一句答,不抛。
9877
+
9878
+ #### 112a-13 · 「本机无 OS 沙箱」判定与那一句
9879
+
9880
+ | `toolsOnThisHost` | `isolated` 读数 | `noOsSandboxOnThisHost` |
9881
+ |---|---|---|
9882
+ | `false` | 任意(在场 / 三种缺席) | `no` |
9883
+ | `true` | `false` | **`yes`** |
9884
+ | `true` | `true` | `no` |
9885
+ | `true` | 缺席(`no_hands` / `not_reported` / `unreadable`,或手工构造的旧形视图两位都无)| `unknown` |
9886
+ | — | 读数 `not_reported` / `unobserved` / 坏入参 | `unknown` |
9887
+
9888
+ `yes` 时的那一句(`noOsSandboxContent()`,逐字):`Tools run directly on this machine with no OS sandbox — files and commands they change here are changed for real, so permission rules and approvals are the only guard`。`no` / `unknown` 不渲任何句(沙箱形零句、缺席不说)。句子不列沙箱车道词表(那是引擎的部署事实,出路在引擎自己的启动日志与部署文档)。判定只按两位布尔,不看车道词。
9889
+ 没有 HTTP caps 的车道(宿主自己起的本地腿):判定口收的是读数,不绑 HTTP —— 宿主按自己的构造事实拼一份 `{ kind: 'present', view: { provider, toolsOnThisHost, isolated } }` 交进来即可。
9890
+
9891
+ #### 112a-14 · `inheritEnv` 的片段口与不发的那一句(逐字)
9892
+
9893
+ 用法(三端同形):
9894
+
9895
+ ```ts
9896
+ const d = inheritEnvDeclaration(intentWord, engineCapString(baseUrl, 'version')) // intentWord: 'all' | 'scrub' | undefined
9897
+ const asm = assembleTaskRequest({ ...input, ...d.field }, lane)
9898
+ if (d.withheld !== undefined) showNotice(inheritEnvWithheldNotice(d.withheld))
9899
+ ```
9900
+
9901
+ | 成因 × 词 | 句 |
9902
+ |---|---|
9903
+ | `server_too_old` × `all` | `Not sent with this request: this engine is too old to accept the setting that lets the shell inherit this machine's whole environment, so this run's shell gets the default environment, with credential-like variables removed.` |
9904
+ | `server_version_unknown` × `all` | `Not sent with this request: the engine's version is not known yet, and an engine that does not know the setting that lets the shell inherit this machine's whole environment refuses the whole request, so it was held back; this run's shell gets the default environment, with credential-like variables removed, and on an engine that does know the setting, leaving it out also clears an earlier whole-environment choice for this session.` |
9905
+ | `server_too_old` × `scrub` | `Not sent with this request: this engine is too old to accept the default-environment setting, so it was left out; that has the same effect, because the default environment (credential-like variables removed) is what this run gets anyway.` |
9906
+ | `server_version_unknown` × `scrub` | `Not sent with this request: the engine's version is not known yet, so the default-environment setting was left out; that has the same effect, because leaving it out also gives this run the default environment (credential-like variables removed).` |
9907
+ | (读不懂的入参) | `Not sent with this request: the shell-environment setting was held back for a reason this version does not recognize.` |
9908
+
9909
+ - 版本判据:整串正式版 `x.y.z`(无前导零)≥ 7.106.0 ⇒ supported;低于 ⇒ unsupported;缺席 / 非串 / `7.106.0-rc.1` / `v7.106.0` / 首尾空白 / `7.106` ⇒ unknown。
9910
+ - 🔴 「本会话整份继承」= **每个提交都带** `"all"`(缺席会清掉上一条)。片段口在 unknown 那一拍不发 —— 宿主要严格就先等到版本读数再提交(KL-295)。
9911
+ - 本包**不**按能力位决定发不发 `"all"`(不替服务端预判)。宿主要在出开关前判「这台会不会兑现」:读 `projectContext === true` ∧ 版本 supported;
9912
+ `taskWriteFaceOpen` 不是它的读数(多用户部署放开写面旋钮时那一位为真,而 `"all"` 仍 422)。
9913
+
9914
+ #### 112a-15 · 两只拒(逐字)
9915
+
9916
+ **422 `request.host_posture_refused`**(`hostPostureRefusalFromError(err, sentRequest)`):同码两住户 —— 多用户部署拒 `inheritEnv:"all"`、拒写面放开(生效权限模式
9917
+ `bypassPermissions`:顶层 `permissionMode`,缺席时 `settings.permissions.defaultMode`;多用户部署或运维钉了拒)。两处都在 run 起之前拒;inheritEnv 那一判排在前。
9918
+ 拒体只有 `{ error, errorCode }`。读数:`{ code, askedWholeEnvironment?: true, askedOpenWriteFace?: true }`(按调用方交来的请求体上的精确值;两处都认
9919
+ `bypassPermissions` 是保守的一侧:多标一件「可能」,不会少标)。
9920
+
9921
+ | 归因 | 句 |
9922
+ |---|---|
9923
+ | 只有整份环境 | `The engine refused this request before anything ran: this deployment serves more than one user, so a request may not hand the shell this machine's whole environment · This is not a problem with your local settings and not something this client can grant — whoever runs this engine decides it; send it again without the whole-environment setting (or with the default), and the shell gets the default environment, with credential-like variables removed` |
9924
+ | 只有写面放开 | `The engine refused this request before anything ran: this deployment does not let a request lift the write boundary with bypassPermissions · This is not a problem with your local settings and not something this client can grant — whoever runs this engine decides it; send it again with another permission mode` |
9925
+ | 两件都要了 | `The engine refused this request before anything ran: the request asked both for the shell to inherit this machine's whole environment and for bypassPermissions, and this deployment refused at least one of them; the refusal does not say which · This is not a problem with your local settings and not something this client can grant — whoever runs this engine decides it; send it again without one or both (the whole-environment setting is honored only on a single-user deployment)` |
9926
+ | 读不出(没交请求体 / 两件都没带 / 读不懂的入参) | `The engine refused this request before anything ran: this deployment does not accept a setting in it that only a single-user deployment may use; the engine's own message names it · This is not a problem with your local settings and not something this client can grant — whoever runs this engine decides it; send it again without that setting` |
9927
+
9928
+ **400 `request.field_invalid` × `"all"`**(`inheritEnvRefusalFromError(err, sentRequest)`):请求体真带 `"all"`、体上没有权限桶机读字段才认领;句子:
9929
+
9930
+ `The engine refused this request as invalid without naming the field · This request asked for the shell to inherit this machine's whole environment, which the engine accepts only when tools run directly on its own machine and the request belongs to a session; if that is what it refused, send it again without that setting (or with the default)`
9931
+
9932
+ 两只读口只认**新提交**的外层码;续跑折叠形(409 `resume_blocked_by_policy`,`blockedBy` 带这两码之一)答 `null`,由折叠码那一句点名原码(KL-296)。
9933
+
9934
+ #### 112a-16 · 权限规则表那一句(逐字样例)
9935
+
9936
+ 读数 `{ bucket, reason, count?, cap?, index?, folded? }`;句子按「新提交 / 续跑折叠」两框 × 「超帽有数 / 超帽无数 / 第几条坏 / 不是一张表」:
9937
+
9938
+ | 形 | 句 |
9939
+ |---|---|
9940
+ | 新提交 · 超帽(1001 / 1000) | `The engine refused this request: the deny rule list in the permission settings (permissions.deny) has 1001 entries, 1 more than the 1000 the engine accepts · Nothing was trimmed or dropped, because the engine refuses the list rather than silently losing rules — merge rules into broader patterns or remove some, then send the request again` |
9941
+ | 续跑折叠 · 超帽 | `The engine refused to continue this parked work: in the request stored for it, the deny rule list in the permission settings (permissions.deny) has 1001 entries, 1 more than the 1000 the engine accepts · It cannot continue as stored, and the engine refuses the list rather than silently losing rules — merge rules into broader patterns or remove some, then submit the work again as a new request` |
9942
+ | 新提交 · 第几条坏(index 1) | `The engine refused this request: entry 2 of the ask rule list in the permission settings (permissions.ask) is empty or not text · Nothing was trimmed or dropped, because the engine refuses the list rather than silently losing rules — fix or remove that entry, so every entry is a non-empty rule, then send the request again` |
9943
+ | 新提交 · 不是一张表 | `The engine refused this request: the allow rule list in the permission settings (permissions.allow) is not a list of rules · Nothing was trimmed or dropped, because the engine refuses the list rather than silently losing rules — make it a list of non-empty rules, then send the request again` |
9944
+ | 读不懂的入参 | `The engine refused the permission rules in this request's settings as too many or malformed · Nothing was trimmed or dropped — fix the rule lists, then send the request again` |
9945
+
9946
+ - 位置按从 1 数(`index` 0 ⇒ `entry 1`);`count` / `cap` 缺席或不是合法整数 ⇒ 不说数(「has more entries than the engine accepts」)。
9947
+ - 决断出口在折叠码那一句(`The check that refused it: request.field_invalid`)之后补的就是续跑框那一句。
9948
+
9949
+ #### 112a-17 · 工具声明拒那一句(逐字)
9950
+
9951
+ `The engine refused to start this run because of a tool this request declares; the engine's own message says which tool and what is wrong with it · This is a problem with the request itself, not a temporary outage — sending the same request again is refused the same way; fix or remove that tool declaration, then send it`
9952
+
9953
+ - 九码同一句(工具声明门那一族在本包只登记、不分派,见 112a-8)。可直接喂流式腿的终态码:`toolDeclarationRefusalContent({ code: terminal.code })`。
9954
+ - 🔴 已装 sdk 对 `config.` 前缀没有专臂:503 按状态落进「稍后重试」那一类错误类(`ServiceStateError`)。按错误类 / 按 5xx 分支的端会把这一族说成暂时故障 ——
9955
+ 先按码问 `toolDeclarationRefusalFromError`。本包既有的暂时故障判据(draining 预拒 / 传输失败 / 续跑可等 / 用量窗)一格都不认领它。
9956
+
9957
+ #### 112a-18 · `-p` 首帧的来源与原因(逐词;TS-1–TS-4)
9958
+
9959
+ | 判定面(`withPrintInitFrame` 交给 `buildInit` 的 `face`) | `_sema_tools_source` | `_sema_tools_fallback_reason` |
9960
+ |---|---|---|
9961
+ | 名册(`face.source === 'engine-roster'` 且没有 `fallbackReason`,含空名册 = 引擎明说挂了零只) | `engine-roster` | 缺席 |
9962
+ | 回落面 + 原因 `manifest-without-roster` / `model-activity-first` / `run-ended` / `wait-timeout`(回落面的组装词是 `wire-vocabulary` 还是 `scenario-probe` 不论;宿主交的回落面来源词不在这两词里 —— JS 宿主写成 `engine-roster` 也一样 —— 判定口按缺省组装词 `wire-vocabulary` 记) | `estimate` | 对应原因词 |
9963
+ | `null`(没有名册,回落面也是 `null` ⇒ 宿主用自己的静态表) | `host-static` | 缺席 |
9964
+ | 铸口坏入参:不是对象(`undefined` / 数 / 串) | `host-static` | 缺席 |
9965
+ | 铸口坏入参:对象,但来源读不出(取值器抛)或不是 `engine-roster` 而原因缺席 / 读不出 / 不在四词 | `estimate` | 缺席 |
9966
+ | 铸口坏入参:来源写着 `engine-roster` 却带回落原因(原因值不是 `undefined`,或读原因就抛)—— 那是回落分支的面 | `estimate` | 原因在四词里 ⇒ 该词;否则缺席 |
9967
+
9968
+ - 原因词的意思同 `PrintInitRosterFallbackReason`(§97a):`run-ended` 包括「提交被拒、接线帧之前 run 就失败」与「这一次不经引擎」(包装器以外自建首帧的宿主,用 `decidePrintInitToolFace({ kind: 'no-roster', reason: 'run-ended' }, 回落面)` 得到判定面再调铸口)。
9969
+ - 铺法(KL-301 口径):`buildInit` 返回的是对象(不是数组)才铺,不是对象 ⇒ 原样放出。先存两键的写前原状(按属性描述读,不跑取值器)。**整只跳过**(什么都不写)的三形:① 两键任一只在帧上(自有或沿原型链)是取值器 / 设值器 —— 访问器上的写会跑宿主代码;② 帧不可扩展而这一次要新增键(来源原本不在;或要写原因而原因原本不在)—— 两键都已在、只改值 / 删原因则照铺;③ 探测本身抛(代理陷阱)。写的次序:通常先写来源、再写原因(原因缺席而帧上已有自有的原因键就删掉它);要删陈旧原因而来源原本不在时**先删原因再写来源**(删陷阱全抛的代理上什么都没写就停住)。任一步**返回失败或抛出**同样处置:两键恢复到写前原状 —— 原来有、还在 ⇒ 原位改回原值(键序不变);原来有、已被删 ⇒ 按原描述符补回(内容同、键排到末尾);原来没有 ⇒ 删掉刚加的;恢复本身也被代理拒绝的极端形尽力而为。冻结帧 / 同名键只读或不可删这类写不进的形,结果同样是宿主给的样子。首帧照放。
9970
+ - 🔴 `buildInit` 每次返回一只**新**对象:铺键就地改写宿主返回的那只对象,返回缓存 / 共享的帧 ⇒ 同一只对象之后从别处(不经包装器的路径,例如离线车道的静态首帧)放出时带着上一轮铺上的来源键(静态表那只帧上留下上一轮的 `engine-roster`)。包在保对象同一性的前提下挡不住这一形(KL-301)。
9971
+
9972
+ #### 112a-19 · 为什么三张估计表常驻(RS-1;CC-267)
9973
+
9974
+ - 名册(接线帧 `tools` 段)在引擎侧的版本线早已满足(服务端 7.66.0 / 引擎核心 7.8.0 起每只 effective 接线帧都铸)。但下面五种路径**结构性地**没有名册,与引擎版本无关:① 提交被拒 / 准备阶段之前就失败(接线帧只在准备之后发)⇒ `run-ended`;② 服务端判形不过,整段丢 ⇒ `manifest-without-roster`;③ 本包读不出任何一行就整只不要(绝不半张名册)⇒ `manifest-without-roster`;④ 准备阶段超过等待上界 `PRINT_INIT_ROSTER_WAIT_MS` ⇒ `wait-timeout`(KL-58);⑤ 不经引擎的 `-p` 发(宿主本地处理的命令 / 提交前就拒)—— 没有 run。
9975
+ - 删表 ⇒ 这五形的首帧退回宿主静态表(旧的那种错:列出引擎并不挂的工具、漏掉引擎真挂的一族),比估计更坏。所以三张表常驻,首帧用 `_sema_tools_source: "estimate"` 如实说这是估计。
9976
+ - 重开退役的条件:上游提供**运行前的完整工具清单**(run 开始之前、不依赖 live 帧就能拿到这一 run 将挂载的整表)。在那之前,三张表对实装引擎逐名对账(每一名都得在引擎的工具目录里;委派面挂载的工具都得在 `ENGINE_RUNNER_FACE` 里)。
9977
+
9978
+ ### 112a′. 成文改口(旧判据眼作废 → 新判据眼)
9979
+
9980
+ **作废**(旧判据眼装 0.86.0 后判红是预期行为,不是回归):
9981
+
9982
+ 1. 「`GATE_DENIED_BY_WORDS` 恰十词、与 SDK `DeniedBy` 逐词逐序相等」—— 十一词 = 引擎入口十词(在前、原序)+ `plan_mode`(最后);SDK 声明的每个词都在表里(G-D1)。
9983
+ 2. 「`gateDeniedByDetail('mode')` 是表外兜底句」—— 专句 `denied by this session's permission mode`(G-D2)。
9984
+ 3. 「`deniedBy: "mode"` 无结算 ⇒ 分类词缺席」—— ⇒ `permission-rule`(G-D3)。
9985
+ 4. 「`shell_gate_tighten` 那一句是 `this deployment asks …`」—— `the coarse shell check rates this command above the tier it lets through, so it asks`(G-D4)。
9986
+ 5. 「码册七十三码;新码不在册、受众 operator」—— 八十码;七码在册:CC-249 六码(五条 user、一条 operator),CC-261 `route.tool_call_id_folded`(operator)(G-N1 / G-TF1)。
9987
+ 6. 「`structuredDetailType({type:'read_unestablished'})` 为 `undefined`」—— 返回 `read_unestablished`(G-S1)。
9988
+ 7. 「`CONTROL_TOOL_VERBS` / `STRUCTURED_DETAIL_TYPES` 的迭代序是 0.85.x 的手写序」—— 迭代序跟引擎入口;成员判据不看序。
9989
+ 8. 「`CONFIG_REFUSAL_CODES` 恰八员」—— 十七员(既有八员 + 九码,G-T1);按旧眼数个数会把正确行为判成红;逐员判既有八员的判据不作废。
9990
+ 9. 「会话规则写口 400 ⇒ `request-rejected` / `unknown` 的 `request_rejected`,句子说形不对」—— 码 `rules.legacy_tool_name` 一律具名臂(不论状态),句子说写入被拒、记录没动、换现名再写 / 记录里早有先撤;同族未知码落 `error`。新判据眼:① 按 `kind` 断言具名臂(`legacy-tool-name` / `legacy_tool_name`);② 按 `field` / `name` / `alreadyInRecord` 断言来源;③ 句子按 `legacyToolNameFailureNoteOf('rules.legacy_tool_name')` 逐字比(G-L1 / G-L2)。
9991
+ 10. 「`legacyToolNameFailureNoteOf` 只认一码,别的码一律 `undefined`」—— 认 `config.legacy_tool_name` 与 `rules.legacy_tool_name` 两码,各一句;把后者当「别的码 ⇒ `undefined`」的格作废。
9992
+ 11. 「workflow 监视器 401 ⇒ `pending`(还在问)、每 1–3 s 重试一轮」—— `401 auth.unauthorized` / 无码 401 ⇒ `unauthorized`、60 s 长退避、不开活动流;别的 401 码与 403 / 407 仍 `pending`。新判据眼:按 `resolution().kind` 与 `lastError` 前缀断言;退避按「60 s 内至多一次读」而不是「1–3 s 一轮」(G-W1)。
9993
+ 12. 「后台视图 fleet 源:501 ⇒ `not-configured`,其余一切 ⇒ `unavailable`」—— 401 两形 ⇒ `unauthorized`,501 ⇒ `not-configured`,其余 ⇒ `unavailable`(G-W2)。
9994
+ 13. 「interactive / print 车道 live 传 `approverPosture: 'bypass'` ⇒ 逐字上请求体」(§85 R-G4)—— **任何在场值构造期 `TypeError` 专句**(G-A1)。按旧眼判「应上 wire 而抛了」= 把正确行为判成红。
9995
+ 14. 「坏值 `'BYPASS'` / `'bypassPermissions'` / `true` / `1` / `{}` ⇒ `TypeError` 且文本是坏值句」—— 同样 `TypeError`,但文本是**退役专句**(断言文本的判据改锚)。
9996
+ 15. 「两名 `APPROVER_POSTURE_BYPASS` / `approverPostureDeclarationField` 在根入口」(含活段 §2 / §2b 域 6 此前把两名列作可用导出的说法)→ 🔧 0.86.0 退出公面、根入口不再有它们;活段同批加退役注记、§2z 加两行(G-A6)。
9997
+ 16. 「`taskRequestSeatOf('approverPosture', 'print')` = seated / live 门后」—— 三车道 `unknown`(G-A4)。
9998
+ 17. 「§85 R-G7 早读序:`approverPosture` 上的取值器吞不掉既有声明」—— 这一键不再有早读位;它上面的取值器排在全部声明位之后(吞不掉 `maxTokens` / `outputRetries` / `fileHistory`)。
9999
+ 18. 「车道表有 `approverPosture` 一行(interactive / print 有座)」—— 这一行删、`inheritEnv` 一行加;车道表仍 44 行,interactive 36 / print 38 / utility 16 键数不变 —— 按成员逐键列的判据改锚,按数的判据照旧成立。
10000
+ 19. 0.83.0 起「旧形帧(错误信封骑 `result`)照旧读得到 —— 交互车道终帧臂两名并读、新名优先」(0.83.0–0.85.x 的门说明与 README「Guards」结果帧投影门那一行的「and old-shape frames under the old one」,本版已改写)—— 作废。新判据眼:只带 `result`、`subtype` 以 `error_` 起头的错误信封喂 `adapt()` ⇒ 零终答行、零后缀、零 `result_text_diverged`(G-R1 / G-R2);两名同在只认新名(G-R4,与 0.83.0 起一致);成功型照读(G-R3);`success` + `is_error: true` 照读(G-R5);不以 `error_` 起头的串、`subtype` 缺席 / 非串照读(G-R6 / G-R7)。§100a K-5「`result` 只留给成功臂」说的是铸点,本版起包内读点与之同口。
10001
+ 20. 「7.106.0 回体 ⇒ SQL 读数 `not_reported`」—— 那是修前的误读;新判据眼见 G-Q1 / G-Q2。≤7.105.x 回体的四态判据(§23 起)照旧成立。
10002
+ 21. 「`projectExecutionLaneCapability` 的 `present` 视图恰 `provider` / `toolsOnThisHost` 两键」—— 键集 ⊆ `provider` / `toolsOnThisHost` / `isolated` / `isolatedAbsent`,且 `isolated` 与 `isolatedAbsent` 恰一在场;两位的值与判据逐字不变。§60(executionLane 读面首发段)不回改,以本条为准。
10003
+ 22. 「出 `inheritEnv: "all"` 开关前读 `taskWriteFaceOpen` 判这台会不会兑现」—— 改读 `projectContext === true`(∧ 版本 supported);多用户部署放开写面旋钮时 `taskWriteFaceOpen` 为真而 `"all"` 仍 422。§107 起「不按能力位预判」的请求位纪律对 `inheritEnv` 同样成立。
10004
+ 23. 「决断出口的失败文字恰以折叠码那一句结尾」(对权限表折叠形逐字断言的格)—— 折叠体带权限规则表的机读字段时,其后多补权限表那一句;其余失败形不变(G-PB5)。
10005
+ 24. §85 S-19「终帧拒绝清单行的 `deniedBy` 取 SDK `DeniedBy` 十词闭集(表外词不盖)」—— 闭集改为 `GATE_DENIED_BY_WORDS` 十一词:新引擎模式拒那一行 `deniedBy: "mode"`(来源位 `tool_end`,两个载体同值);公面型 `SemaPermissionDenial.deniedBy` 同批换成 `GateDeniedByWord`,只对 SDK 十词穷尽 `switch` 的 TypeScript 消费方编译红(G-D5)。按「`deniedBy` ∈ SDK 十词」断言的格改锚。
10006
+ 25. §97(0.82.5)与终端注释里「`source` / `fallbackReason` 不上 init 帧」—— CC 形 init 帧上仍然没有这两个名字(本版也不铸 `source` / `fallbackReason`);**改读**:来源与回落原因本版起以 `_sema_tools_source` / `_sema_tools_fallback_reason` 两只超集键上首帧(TS-2 / TS-3)。按「init 帧不带 `source` / `fallbackReason`」断言的格照旧成立;按「init 帧键集恰等于 CC 形集合」逐键断言的格改锚(多这两只 `_sema_` 键;`_sema_tools_fallback_reason` 只在 `estimate` 时在)。
10007
+ 26. §27 里「本批不删那三张表 …… 退役条款:名册恒在场的引擎版本成为支持底线即删表」—— 新口径:常驻,重开退役的条件 = 上游提供运行前的完整工具清单(112a-19)。已发段不回改,以本段为准。
10008
+
10009
+ **分代**(只对新引擎作废;老引擎上旧判据眼照旧成立 —— 两代各判):
10010
+
10011
+ 27. 「店读不出会弹一张 `rule_store_unavailable` 卡」—— 新引擎不弹卡、发一条通告;老引擎照弹(G-H1 / G-N2′)。
10012
+ 28. 「`dontAsk` 下钩子发起的提问一律出卡」—— 钩子的提问同时撞上 ask 规则 / 受保护写 / 内容提问等那几类时拒(`deniedBy: "mode"`),只有钩子提问、或旁边只有普通提问时照旧出卡;运营方权威那三类照旧出卡(G-T5)。
10013
+ 29. 「别名调用的审批卡 / 拒绝清单上的工具名 = 模型写的那个名字」—— = 归一后的正名;按名配对卡与转录的判据改按调用 id 配对(G-T4)。
10014
+ 30. 「`inherited_ceiling` = 被起它的父会话当下的模式折回」—— 起它的那一跑在跑时读那一跑,停下后读同一会话最近提交的那一跑;同一子代可能收到第二条(T-7)。
10015
+ 31. 「带 `config.tool_mount_denied` 失败的子代 `errorKind === 'governance'`」—— `logic`(G-T3)。
10016
+ 32. 「执行后钩子(PostToolUse / PostToolUseFailure)及其失败通告上的工具名 = 模型拼写」—— 引擎 7.36.0 起 = wire 名(与 PreToolUse 同层);PostToolBatch 仍是模型拼写;连 7.35.x 引擎时旧眼照旧成立(TF-5;KL-281 同批改口)。
10017
+
10018
+ **新增 / 补射程**(additive,旧判据不作废):
10019
+
10020
+ 33. `delegation.ask_unresolvable` 视图多一个可选键 `remedy`;按「视图键集恰为五键」断言的判据在新引擎 + `no_approver_wired` 那一形上会看到第六键 —— 改为「必在位四键 + 可选 `parkLaneExisted` / `remedy`」(G-U4)。
10021
+ 34. (无成文可改;新增一格)认不出但以 `error_` 起头的子型在 0.85.x 上照读 `result`,本版起按错误信封不读(G-R8)。
10022
+ 35. **补射程**(CC-250):SQL 读面 `none` 那一句在 7.106.0 上还覆盖「声明了 SQL 后端、却降级到内存」一形(`store.sql` 随之缺席),句子逐字不变;要说清落差读同批的存储姿态那一行(包侧缺口 ⑳)。
10023
+ 36. **补一条**(CC-261):`toolCallId` 自引擎 7.36.0 起可能是折叠形(含 `~`);本包按不透明串处理,端也不要解析它的形状(112a-10)。
10024
+
10025
+ **不变**(回归约束):`permissionMode` 的全部判据;`rewind.rewindFiles` 专句;通用「不认识的键」那一句;`isConfigRefusalCode` 的全部判据;`gateDeniedByDetail` 既有十词的句子;`readPermissionModeUnavailable` 的读法;`responseModel` 空串 = 缺席;`SESSION_POLICY_TIGHTEN_UNKNOWN_WHY` 十二词;`config.legacy_tool_name` 那一句;`status()` 形与值;没配服务凭据的部署上两处读口逐字节同 0.85.x;成功信封照读 `result`;SQL 姿态四态词与 doctor 四句;`toolsRunHereFromExecutionLane` / `executionLaneDoctorDetail`;`decidePrintInitToolFace` / `createPrintInitGate` / `printInitRosterSignal` / `printInitToolFaceDebugLine`;三张估计工具表的内容与 `resolveLiveInitToolFace` 的产出。
10026
+
10027
+ 新增判据格:CC-249–CC-255 各格(G-D / G-M / G-N / G-S / G-H / G-L / G-W / G-A / G-U / G-T)· G-R1–G-R8 · G-TF1 / G-TF2 / G-TF2b · G-Q1–G-Q3 / G-SP1–G-SP4 / G-C1–G-C4 / G-LU1–G-LU4 / G-X1–G-X6 / G-IE1–G-IE8 / G-HP1–G-HP3 / G-PB1–G-PB6 / G-TD1 / G-TD2 / G-BS1–G-BS5 / G-MC1 · G-TS1–G-TS9(含 G-TS6b / G-TS6c / G-TS6d / G-TS6e / G-TS7b)(112c)。
10028
+
10029
+ ### 112b. 缺席语义(逐键)
10030
+
10031
+ **引擎 7.34.0 两代**(老引擎 = ≤7.33.x,或服务端 ≤7.105.x;新引擎 = 7.34.0 起、且服务端带上它并投出)
10032
+
10033
+ | 位 / 码 | 老引擎 | 新引擎 |
10034
+ |---|---|---|
10035
+ | `gate.disposition.released` | 从不铸;模式放行没有逐次披露 ⇒ 缺席,读口 `undefined` | 模式替人放行时在场;缺席 = 这一次不是模式放行(或服务端没投) |
10036
+ | 拒绝臂 `mode` / `askClass` / `classes` | 从不铸;老引擎的 `deniedBy` 里没有 `mode`(服务端按老引擎的闭集把这种记录整条扣下) | `deniedBy: "mode"` 时三位同在;别的层名旁缺席 |
10037
+ | `deniedBy: "plan_mode"` | 模型自己进入的 plan 模式直接拒写 | 不再出现(plan 在调用时问) |
10038
+ | 拒绝清单行 `deniedBy`(`-p` 结果帧两载体) | 十词之内;模式拒那一形服务端整条扣下 ⇒ 没有那一行的层名 | 可为 `mode`(型 `GateDeniedByWord`);缺席 = 不可 join(行无调用 id / 流里没见过那只收口帧 / 门记录缺席 / 表外词),**不是**「没被谁拒」 |
10039
+ | `ruleStoreUnreadable` | 出身 `rule_store_unavailable` 的卡上在场(`store` / `call`) | 恒缺席(店读不出改为通告;调用对不上规则行只靠出身词) |
10040
+ | 六条新通告 | 不铸 —— 没收到不等于没发生(店读不出是一张卡、模式放行无披露、模式折回无通告) | 按各自规则铸;还要服务端把 user 码送上用户流 |
10041
+ | `tool_end.structured.type: "read_unestablished"` | 不铸(那一形借根外读的卡,`readonly_out_of_root` + 空路径) | 读站判不出读什么时铸 |
10042
+
10043
+ **会话规则写口拒名**
10044
+
10045
+ - `field` 缺席 = 拒体里没有这一格、它不是字符串、或不是两只工具名桶之一 —— **不是**「哪一桶都有可能」,是「本端读不出」。
10046
+ - `name` 缺席 = 拒体里没有这一格、它不是字符串或是空串。错误对象自己的 `name`(类名)从不当成这一格。
10047
+ - `alreadyInRecord` 缺席 = `field` / `name` 读不出,或点名的那一条既不在这次读到的记录里、也不在这次送去的新增里 —— **不是** `false`。
10048
+
10049
+ **门前只读路凭据**
10050
+
10051
+ - `unauthorized` 态的 `state: null` = 这只 controller 从没拿到过快照,**不是**「没有工作流」。
10052
+ - `sources.fleet: 'unauthorized'` 时 fleet 行缺席 = 那份列表不是证词(引擎答的是凭据,不是列表),**不是**「没有后台任务」。
10053
+
10054
+ **请求键 `approverPosture` / 补救话 / 能力位**
10055
+
10056
+ - **`approverPosture`(入参)**:`undefined` / `null` = 缺席 —— 不拒、不上请求体、不进回执、出口判官不点名;其余任何值(含 `'bypass'` / `false` / `''` / `0` / 对象 / 数组)= 在场 ⇒ 构造期 `TypeError` 专句。**缺席 = 与这一键从来不存在的形逐字节同**(请求体、回执两处)。
10057
+ - **`remedy`(视图)**:键在 = 引擎给了一句非空的补救话(原样);键不在 = 老引擎(服务端 7.105.0 带的引擎 7.33.8 零 `remedy`)、别的成因(引擎今天只在 `no_approver_wired` 上铸),或上游给了空串 / 非串,或读它就抛(宿主交进的会抛的取值器 / 代理;其余事实照交)。🔴 键不在**不**说明「没有补救办法」,端不许据它渲「无法修复」一类的话;通告的 `message` 里有同一句(引擎拼好的),渲 `message` 的端零改动。
10058
+ - **能力位 `taskApproverPosture`**:本包零读点;端上的三态读口在 7.106.0 起读成「引擎没报」(不折「尊重」也不折「忽略」)。
10059
+
10060
+ **引擎 7.35.0 / 7.36.0**
10061
+
10062
+ - **`CONFIG_REFUSAL_CODES.has(code)` 为假**:只说明「本版识别表里没登记这一码」,**不**说明它不是配置拒绝 —— 判「是不是配置拒绝」一律用 `isConfigRefusalCode`(开集)。引擎比本包新、又加了一码时,识别表在本包跟进前不认它、前缀谓词照认。
10063
+ - **子代任务结果卡的 `errorKind`**:本包原样透传。带 `config.tool_mount_denied` 失败的子代,老引擎(≤7.34.x,含服务端 7.105.0 带的 7.33.8)上读 `governance`,新引擎上读 `logic`;两者都不可重试。
10064
+ - **工具名**:同一只调用在不同层上可以是两个名字(别名调用、引擎 ≥7.35.0);两个名字都是事实,本包不互译。缺席 / 空串照旧 = 没报。
10065
+ - **钩子失败通告的 `toolName`**:缺席 = 引擎没报;在场 = 该侧钩子收到的名字 —— PreToolUse 归一名(引擎 ≥7.35.0);PostToolUse / PostToolUseFailure 在引擎 7.35.x 上是模型写法、7.36.0 起是归一名;PostToolBatch 恒为模型写法。
10066
+ - **`responseModel`**:键不在 = 服务商没报、报了空串,或(新引擎)报了形外的值;本包不区分这几种,也不渲「未知模型」之类的话。
10067
+ - **`inherited_ceiling`**:词不变;新引擎上同一个子代可能在会话的下一轮再收到一次(子代比起它的那一跑活得久时)。
10068
+ - **`route.tool_call_id_folded` 缺席** = 这一 run 没有折叠(或引擎 < 7.36.0,老引擎没有这一码);不是「id 一定合规」的证明。这一码的 `detail` 本包不读 —— 端若自行读 `detail.reason`,两词闭集以引擎为准,缺席 / 表外词按读不懂处理,不折成某一词。
10069
+
10070
+ **错误信封旧名(R-1)**
10071
+
10072
+ - 错误信封上 `_sema_salvaged_result` 缺席(或在场却不是串)⇒ 没有抢救正文:零终答行、零后缀、零分岔事件;同帧有没有 `result` 都一样 —— 错误信封上的 `result` **不带任何语义**,包不读。
10073
+ - `_sema_salvaged_result` 缺席的含义与 0.83.0 起一致:没抢救到正文(同帧 `errors[0]` 带「no output survived the cutoff」尾注),或不是截断臂。
10074
+ - 结果帧 `subtype` 缺席、不是串、或是不以 `error_` 起头的串 ⇒ 不算错误信封,`result` 照读(与 0.85.x 同)。`subtype` 以 `error_` 起头(认得出与否)⇒ 错误信封,`result` 不读。
10075
+
10076
+ **服务端 7.106.0**
10077
+
10078
+ - caps `store` 键缺席 ⇒ `not_reported`(老引擎没报):**不是**「不持久」,也不是「内存」。`store` 在场而不是普通对象(`null` / 串 / 数组 …)或读它就抛 ⇒ 这一格畸形删格(读口 `unobserved`),同时**不**当新一代见证。`degradedReason` 缺席 = 没走降级臂(不是「不知道」);`sql` 缺席 = 引擎没报 SQL 姿态(后端不是 mysql / pg,或最近一次连接初始化被拒)。
10079
+ - caps `centerWiring` 键缺席:同一回体带 `store` 且它是普通对象 ⇒ `none`(这台引擎没接配置中心,正面事实);不带,或 `store` 坏形 / 读不出 ⇒ `not_reported`(老引擎,接没接中心判不了 —— 见证读不出不折成「没接中心」)。见证只看 `store` 是不是自有键且是普通对象,四只 caps 读器同一只判法(包侧缺口 ㉒)。`leaseHealth` / `failMode` / `caller` 各自缺席:`lease:"absent"` 时是合法形(没装租约);`caller.retryAfterSec` 只随 `exhausted`。
10080
+ - `callerQuotaLease`:`no-lease` 是正面事实(没装租约 / 没接中心),与中心说的 `not-enforced`(这个身份不按租约执行)是两句话,本口不合;`unknown` 不是「不限额」。
10081
+ - SQL 姿态两代读:`store` 是普通对象时 `store.sql` 缺席 ⇒ `none`(不是 `not_reported`);`store` 缺席 / 坏形 / 读不出 ⇒ 按老一代读顶层 `sql`;两处都缺席才是 `not_reported`。
10082
+ - 503 读口:`reason` 缺席 = 引擎没给成因;`retryAfterSec` 缺席 = 体和头都没给(不编数,不是 0);`null` = 不是这一码(别的 503、429 额度耗尽 `quota_exhausted` 都是 `null`)。
10083
+ - `executionLane.isolated`:在场才进 `isolated`;缺席三成因记在 `isolatedAbsent`:`no_hands`(新一代引擎 —— 同体带普通对象 `store`,或诊断面段在场 —— 且 `toolsOnThisHost:false`:这一车道没有手)/ `not_reported`(老引擎;同体 `store` 坏形 / 读不出同此)/ `unreadable`(在场而不是严格布尔;读它就抛;或新一代引擎说工具跑在本机却没带这一位 —— 工具在本机就是有手,引擎承诺有手必带 `isolated`,这一形是引擎违约,不是没有手)。只作废这一位;三种一律**不是** `false`。
10084
+ - 诊断面段缺席 ⇒ `not_reported`(老引擎 ≤7.105.x 没有这一段)。
10085
+ - `inheritEnv`(入参):缺席 / `null` ⇒ 不上请求体、不进回执 —— 🔴 在认这一键的引擎上,这一次的缺席 = 缺省清洗**并清掉本会话上一条声明**(不是「沿用上一条」)。
10086
+ - `inheritEnvDeclaration(…).withheld`:缺席 = 没有东西被扣下(发出去了,或意图本来就缺席);**不等于**引擎兑现了(发了之后仍可能被 422 / 400 拒)。
10087
+ - `inheritEnvServerSupport`:`unknown` 是真答案的一种(版本读不出),不是 unsupported、也不是 supported。
10088
+ - `HostPostureRefusalDetail.askedWholeEnvironment` / `askedOpenWriteFace`:各自 present-iff 请求体上真带了那一件;两位都缺席 = 归因读不出(没交请求体 /
10089
+ 两件都没带 / 请求体读不出),**不是**「引擎说两件都不是」。
10090
+ - `SettingsPermissionBucketRefusalDetail.count` / `cap` / `index`:缺席 = 没读到(不是 0);`index` 0 是真值(第一条)。`folded` 缺席 = 新提交形。
10091
+ - `toolDeclarationRefusalFromError`:`null` = 不是这一族(别的配置码、别的码),不是「不是配置错」的断言。
10092
+ - `BodyShapeRefusalDetail.unknownKeys` / `unsupportedKeys`:缺席 = 体上那张表读不出(老引擎 / 只有散文的那几只键形拒 / 坏形);空表在场 = 「这一类没有」。
10093
+ 🔴 两者不许折成同一个。`bodyShapeRefusalFromError` 答 `{}` = 码对、两张都读不出;答 `null` = 不是这一码。
10094
+ - `bodyShapeRefusalTouchesSettings`:`undefined` = 不知道(没交已发请求体而表里只有带 `settings.` 前缀的键;请求体两处都对不上;对得上的那只键值带可调用 `toJSON`、发没发出去不可知;或表读不出 —— 两张都缺席 / 只读出一张且它是空表),不许折成 `false`,也不许凭前缀折成 `true`。`false` = 这一只拒来自顶层检查(表里有不带前缀的键,或有一只键在请求体顶层对得上)或两张都是空表,不是「看过设置层、没问题」。
10095
+
10096
+ **`-p` 首帧来源键**
10097
+
10098
+ - `_sema_tools_source` 缺席 = 这一帧不是经本包包装器放出的、宿主也没调铸口(离线车道 / 不发给引擎的命令等宿主自建首帧的路径),或宿主帧不可写 / 不可扩展而要新增键 / 同名键是取值器或设值器(KL-301)。**缺席不等于「引擎说的」**,也不等于任何一个来源词 —— 按「不知道来源」读;照这一行配 allow / deny 的消费者应按估计对待。
10099
+ - `_sema_tools_fallback_reason` 缺席:来源是 `engine-roster` / `host-static`(恒缺席),或来源是 `estimate` 而原因读不出(只会出现在宿主自己拼判定面喂铸口的坏形上;包装器路径上 `estimate` 恒带原因)。不铸 `undefined` 值键;宿主帧上陈旧的同名键会被删掉。
10100
+ - `host-static` 不带原因:判定口对「没有名册 ∧ 回落面 `null`」只答 `null`,原因不随出(KL-302 ②)。
10101
+ - 两键都只在 `-p` 首帧 `system/init` 上;别的帧不带。
10102
+
10103
+ ### 112c. 黑盒判据骨架
10104
+
10105
+ > 🔴 标「本版证明」的格在**上一版(0.85.2)**产物上必须 FAIL、在 0.86.0 上必须 PASS;标「回归约束」的格两版都 PASS;标「真机」的格验的是真部署(服务端 / 引擎版本写在格里,两代各跑一次);标「端侧验收」的格验的是端换读之后的行为。请记下两次跑的产物标识(版本 + tarball shasum)。服务端夹具 = 7.106.0 npm 包(`dist/store-posture.js` / `dist/capabilities/center-wiring.js` / `dist/capabilities/execution-lane.js` / `dist/http/request-guards.js` 纯函数真产出),或真起一台 7.106.0。发版跑法:两代夹具各跑一遍 —— 新一代段读 7.106.0 包、老一代段读 7.104.0 包(本包门:`SEMA_CC_SERVER_FIXTURE=<7.106.0> SEMA_CC_SERVER_FIXTURE_OLD=<7.104.0> SEMA_CC_REQUIRE_SERVER_FIXTURE=1` 一遍,`SEMA_CC_SERVER_FIXTURE=<7.104.0>` 一遍);代际不匹配的段标为未跑,不当绿。前缀:G-D = 「谁拒的」词表、G-M = 门记录权限模式两臂、G-N = 通告码册与事实读器、G-S = 结构化卡型、G-H = 本人规则店读不出两代、G-L = 会话规则写口拒名、G-W = 门前只读路凭据、G-A = 请求键 `approverPosture` 退役、G-U = 补救话、G-T = 引擎 7.35.0、G-R = 错误信封旧名、G-TF = 引擎 7.36.0、G-Q = SQL 姿态两代读、G-SP = 存储姿态、G-C = 中心接线、G-LU = 计费入口 503、G-X = 执行车道隔离位、G-IE = `inheritEnv`、G-HP = 422 两住户、G-PB = 权限规则表、G-MC = 强制卡、G-TD = 工具声明族、G-BS = 键形拒两张键表、G-TS = `-p` 首帧来源键。
10106
+
10107
+ **「谁拒的」词表**
10108
+
10109
+ - **G-D1**(本版证明):取本包 `GATE_DENIED_BY_WORDS` ⇒ 恰十一员,前十员与引擎包 7.34.0 入口 `DENIED_BY_VALUES` 逐词逐序相等,第十一员 `plan_mode`;对 SDK 12 声明的十词逐个 `isGateDeniedByWord` ⇒ 全真;`isGateDeniedByWord('mode') === true`。
10110
+ - **G-D2**(本版证明;后两格回归约束):`gateDeniedByDetail('mode')` ⇒ 恰 `denied by this session's permission mode`;`gateDeniedByDetail('plan_mode')` ⇒ 恰 `denied because plan mode only allows reads`;任一未知层名 ⇒ 含「does not know this layer name」的兜底句。
10111
+ - **G-D3**(本版证明):`tool_end` 帧 `gate: { disposition: { kind: 'denied', deniedBy: 'mode', mode: 'dontAsk', askClass: 'ordinary', classes: ['ordinary'] } }`(无结算)经 `eventToSdkMessage` ⇒ 臂上 `_sema_denial_kind: 'permission-rule'`;三位缺席的同形帧同答。
10112
+ - **G-D4**(本版证明):`askOriginDetail('shell_gate_tighten')` ⇒ 恰新句;不含 `every`、不含 `this deployment`。
10113
+ - **G-D5**(本版证明,纯包层):`runStream` 喂 `meta` → `tool_start(call-1)` → `tool_end(call-1, gate: { disposition: { kind: 'denied', deniedBy: 'mode', mode: 'dontAsk', askClass: 'ordinary', classes: ['ordinary'] } })` → `done`(账本一条 `deny`,`toolCallId: 'call-1'`)⇒ 结果帧 `_sema_permission_denials[0].deniedBy === 'mode'`、`permission_denials[0].deniedBy === 'mode'`、两行 `_sema_denied_by_source === 'tool_end'`;TypeScript 宿主写 `const d: SemaPermissionDenial = { deniedBy: 'mode' }` 编译通过。判别点:0.85.2 上两行没有 `deniedBy`、那一行编译红。
10114
+
10115
+ **门记录权限模式两臂**
10116
+
10117
+ - **G-M1**(本版证明):放行臂带 `released: { mode: 'bypassPermissions', askClass: 'write_protection', classes: ['write_protection', 'ordinary'], origin: 'safety_tighten', mandate: 'write_protection', reason: 'rule_unreadable' }` ⇒ `gateModeRelease(gateOutcomeOf(frame))` 逐格同、`classes` 冻结;`classes: []` / `mode: ''` / `released: null` 各一形 ⇒ 读口 `undefined`、处置仍 `allowed`;不带 `released` 的放行 ⇒ `undefined`(不是 `false`)。
10118
+ - **G-M2**(本版证明):模式拒三位逐格读得出;`askClass: ''` 只丢那一位。
10119
+ - **G-M3**(真机,两代):同一次 bypass 放行,在带引擎 7.33.x 的服务端上 `tool_end.gate` 无 `released`;在带引擎 7.34 且投出这一位的服务端上有、且与同 run 的 `permission.ask_released_by_mode` 通告的 `mode` / `askClass` 一致。`dontAsk` 拒绝在老服务端上帧无 `gate`,新服务端上 `deniedBy: "mode"`。
10120
+ - **G-M4**(回归约束):同一只裸帧,直读 `gateOutcomeOf(frame)` 与投影臂 `tool_end_result.gate` 的放行账逐字节同。
10121
+
10122
+ **通告码册与事实读器**
10123
+
10124
+ - **G-N1**(本版证明):六个 CC-249 新码 `engineNoticeInCatalog` 真;受众:五个 user、`resume.legacy_mode_seed_migrated` operator;四个门口拒绝码(`config.permission_mode_invalid` / `config.spec_retired_key` / `config.shell_gate_value_retired` / `resume.legacy_mode_seed`)不在册。码册总长见 G-TF1。
10125
+ - **G-N2–G-N7**(本版证明):逐码喂一份完整 detail ⇒ 读器逐格同、派发口 `{ code, audience, facts }` 恰三键;分支键表外词(`classifier.unavailable` 的 `cause: 'overload'` / `disposition: 'parked'`、`config.permission_mode_unavailable` 的 `by: 'because'`)⇒ `undefined`;描述性词(`at` / 模式词 / 问类)陌生词原样带回;必填格缺一 ⇒ `undefined`;码不对 ⇒ `undefined`;坏入参不抛。
10126
+ - **G-N8**(本版证明,纯包层):G-N2–G-N7 六码各取一份完整 detail,逐格把一只必填格换成会抛的取值器 ⇒ 读器直调与 `readEngineNoticeFacts` 都答 `undefined`、不抛;把一只可选格(`classifier.unavailable` 的 `sessionId` / `runId`、`config.permission_mode_unavailable` 的 `childSessionId`、`permission.ask_released_by_mode` 的 `origin` / `mandate` / `sessionId` / `runId`、`resume.legacy_mode_seed_migrated` 的 `migrated.permissionMode`)换成会抛的取值器 ⇒ 视图 = 全形视图去掉那一键;`detail` 是三只陷阱都抛的代理 ⇒ `undefined`、不抛。
10127
+ - **G-N9**(本版证明,纯包层):`classifier.unavailable` 完整 detail 的 `disposition` 换成「第一次读答 `'asked'`、之后答 `'bogus'`」的取值器 ⇒ `readEngineNoticeFacts(…).facts.disposition === 'asked'`,且该取值器只被读一次;`config.permission_mode_unavailable` 的 `by` 同法(首读 `'operator_deny'`)⇒ `by === 'operator_deny'`、读一次。
10128
+ - **G-N2′**(真机,新引擎):让本人规则店读失败一次 ⇒ 这一 run 恰一条 `permission.rule_store_unavailable`、无卡;同一 deny 行在店恢复后的下一次调用照拒。
10129
+
10130
+ **结构化卡型 / 本人规则店两代**
10131
+
10132
+ - **G-S1**(本版证明):`structuredDetailType({ type: 'read_unestablished', code: 'read_unestablished' }) === 'read_unestablished'`;`STRUCTURED_DETAIL_TYPES.size === 46`。
10133
+ - **G-H1**(回归约束):老引擎审批帧带 `origin: 'rule_store_unavailable', ruleStoreUnreadable: 'store'` ⇒ 卡请求 `ruleStoreUnreadable === 'store'`、`ruleStoreUnreadableDetail('store')` 那一句照旧;同帧去掉该位(新引擎形)⇒ 卡请求无该键、`askOriginDetail('rule_store_unavailable', message)` 让位给 `message`;`askSurvivesPosture({ origin: 'rule_store_unavailable' }, { settingsAskRuleMatched: false })` 两形都答 `must_ask`。
10134
+
10135
+ **会话规则写口拒名**(真机:服务端 ≥7.105.0,属主身份)
10136
+
10137
+ - **G-L1**:`PUT /v1/sessions/S/policy` 送 `{"rules":{"toolDeny":["MultiEdit"]}}` 经本包 `tightenSessionPolicy`(`add: { toolDeny: ['MultiEdit'] }`)⇒ 结局 `legacy_tool_name`、`field: 'toolDeny'`、`name: 'MultiEdit'`、`alreadyInRecord: false`;随后 `GET` 回读记录不变;句子 = `legacyToolNameFailureNoteOf('rules.legacy_tool_name')`。
10138
+ - **G-L2**(存量):7.104.x 上给会话写进 `toolDeny: ["MultiEdit"]`,升级到 7.105.0;属主经 `tightenSessionPolicy` 追加 `Bash` ⇒ 结局 `legacy_tool_name`、`name: 'MultiEdit'`、`alreadyInRecord: true`;记录不变。
10139
+ - **G-L3**(正控):追加 `Bash` / `mcp__srv__x` ⇒ `written`。
10140
+ - **G-L4**(撤销):部署挂一只恰叫 `Task` 的工具,记录 `toolDeny: ["Task","bash"]`,以那一跑的名册调 `removeRefusedSessionRules` ⇒ 结局 `legacy_tool_name`(`name: 'Task'`),记录不变。
10141
+
10142
+ **门前只读路凭据**(真机)
10143
+
10144
+ - **G-W1**(配了服务凭据的部署,不带凭据):workflow 监视器开一条已知 run ⇒ `resolution().kind === 'unauthorized'`、`lastError` 以 `401 ` 开头;抓包 60 s 内详情读至多一次、零活动流请求。补上凭据(同源中继重新登录)⇒ 一个退避周期内回 `live`。
10145
+ - **G-W2**(同部署):`createBackgroundView` ⇒ `sources.fleet === 'unauthorized'`、零 fleet 行。
10146
+ - **G-W3**(负控,没配服务凭据的部署):同两处 ⇒ 与 0.85.2 同答(`live` / `ok`)。
10147
+ - **G-W4**(负控,开了要身份的部署,缺 principal):监视器 `pending`、fleet 源 `unavailable`(`auth.principal_required` 不进 `unauthorized`)。
10148
+ - **G-W5**(回归约束,纯包层):`createLiveWorkflowSource`(不给 `workflowId`,走列表读)配假 `fetchImpl`:第一次答 `401 { errorCode: 'auth.unauthorized' }`、之后答 `200 { workflows: [] }`(测试里把 60 s 那一档计时缩短)⇒ 列表读恢复之后 `resolution().kind === 'empty'`,不停在 `unauthorized`(0.85.2 同答 `empty`)。
10149
+
10150
+ **请求键 `approverPosture` 退役**
10151
+
10152
+ - **G-A1**(本版证明):三条车道 × live 两态 × `buildTaskRequest` / `assembleTaskRequest`,入参带 `approverPosture` ∈ {`'bypass'`, `'BYPASS'`, `'bypassPermissions'`, `true`, `false`, `1`, `0`, `''`, `{}`, `[]`} ⇒ 全部 `TypeError`,文本含 `"approverPosture"`、「退役」、「从不授权」、「删掉」、`permissionMode`,不含通用那一句的「不认识」;带一个秘密串值 ⇒ 文本不含它。
10153
+ - **G-A2**(回归约束):`approverPosture: undefined` / `null` ⇒ 不抛;请求体无此键;`omitted` 为 `[]`;`unregisteredRequestKeys(请求体, 车道)` 为 `[]`。
10154
+ - **G-A3**(回归约束):interactive / print 上 `approverPosture: null` ⇒ 请求体无 `permissionMode`;`approverPosture: undefined` + `permissionMode: 'default'` ⇒ 请求体 `permissionMode === 'default'` 且无 `approverPosture`。
10155
+ - **G-A4**(本版证明):三条车道 `taskRequestSeatOf('approverPosture', lane)` 逐字 `{"seat":"unknown"}`。
10156
+ - **G-A5**(本版证明):三条车道 `unregisteredRequestKeys({ objective, sessionId, approverPosture: 'bypass' }, lane)` 都含 `approverPosture`。
10157
+ - **G-A6**(本版证明):根入口上两个退出公面的名字都不在(名单见 §2z);发布产物 `dist/request/taskRequest.d.ts` 的 `TaskRequestInput` 无 `approverPosture` 成员;TypeScript 宿主写 `buildTaskRequest({ …, approverPosture: 'bypass' }, 'interactive')` 编译报多余属性。
10158
+ - **G-A7**(本版证明):`{ memoryCapture: 'OFF', approverPosture: 'bypass' }` ⇒ 报 `memoryCapture`;`{ inheritEnv: 'ALL', approverPosture: 'bypass' }` ⇒ 报 `inheritEnv`;`{ zzzBogus: 1, approverPosture: 'bypass' }` 与 `{ rewind: { rewindFiles: true }, approverPosture: 'bypass' }` ⇒ 报专句;utility 车道缺 `excludeAllTools` 且带 `approverPosture` ⇒ 报专句。
10159
+
10160
+ **补救话**
10161
+
10162
+ - **G-U1**(本版证明):`readAskUnresolvable({ code: 'delegation.ask_unresolvable', detail: { sessionId, toolName, toolCallId, cause: 'no_approver_wired', parkLaneExisted, remedy: R } })` ⇒ `remedy === R`(逐字节;含前后空白与内部换行的串原样)。
10163
+ - **G-U2**(回归约束):`remedy` 为 `''` / 数字 / 布尔 / `null` / 对象 / 数组 ⇒ 视图照读(其余格同值)、`remedy` 键不在。
10164
+ - **G-U3**(本版证明):三个成因上带非空 `remedy` 都照透传。
10165
+ - **G-U4**(回归约束):不带 `remedy` 的通告 ⇒ 视图 `JSON.stringify` 与 0.85.2 同(`parkLaneExisted` 缺席时同样不带)。
10166
+ - **G-U4b**(本版证明):带 `remedy` 的通告 ⇒ `remedy` 恰为视图末尾一键(`parkLaneExisted` 在不在都是)。判别点:0.85.2 上视图没有 `remedy`。
10167
+ - **G-U5**(回归约束):必在位缺一(如 `sessionId` 缺席 / `cause` 表外词)⇒ `undefined`,`remedy` 在场也救不回。
10168
+ - **G-U7**(回归约束):完整 detail 上的 `remedy` 换成会抛的取值器 ⇒ `readAskUnresolvable` 与 `readEngineNoticeFacts` 都不抛,视图 = 四只必填事实(+ `parkLaneExisted`),没有 `remedy` 键(与 0.85.2 同答:可选位读不出不抹掉既有事实)。
10169
+ - **G-U6**(真机):服务端换钉引擎 ≥7.34 后,无审批席的 run 触发一次需要审批的调用 ⇒ 流上 `delegation.ask_unresolvable` 通告的 `readEngineNoticeFacts(...).facts.remedy` 为非空串,且与同一条通告 `message` 里「To let it run: …」那半句同文;服务端 7.105.0(带引擎 7.33.8)⇒ 键不在。
10170
+
10171
+ **引擎 7.35.0**
10172
+
10173
+ - **G-T1**(本版证明):`CONFIG_REFUSAL_CODES` 对 112a-8 那九码 `.has` 全真,且 `isConfigRefusalCode` 全真;`size === 17`;既有八员仍在;`.add('x')` 抛 `TypeError`。
10174
+ - **G-T2**(回归约束):`isConfigRefusalCode('config.some_future_code') === true` 且 `CONFIG_REFUSAL_CODES.has('config.some_future_code') === false`;`isConfigRefusalCode('rules.legacy_tool_name') === false`。
10175
+ - **G-T3**(真机):服务端换钉引擎 ≥7.35.0 后,请求里声明一只名字与引擎保留名冲突的工具(或名字落在协议命名空间里)⇒ 终局 `terminal.code` 为九码之一、`CONFIG_REFUSAL_CODES.has(code) === true`,终局呈现与其它配置拒绝同一族(与换钉前逐字节同);带 `config.tool_mount_denied` 失败的子代,任务结果卡 `errorKind` 为 `logic`(老引擎 `governance`),本包原样透传。
10176
+ - **G-T4**(真机,名字分层):部署挂一只带别名的调用方工具,模型按别名调用 ⇒ 审批卡请求 / 拒绝清单 `tool_name` 上是它的正名,转录里 `tool_use.name` 与 `tool_start.toolName` 是别名;两边 `toolCallId` / `tool_use_id` 相同;钩子失败通告若出现,PreToolUse 那一侧 `toolName` 为正名,PostToolUse 那一侧在引擎 7.35.x 上是别名、在引擎 7.36.0 上是正名。老引擎上两层都是别名。
10177
+ - **G-T5**(真机,`dontAsk`):`dontAsk` 会话,一个 PreToolUse 钩子对 `Bash(ls)` 答 ask、同时有一条 `Bash(ls)` ask 规则 ⇒ 新引擎零卡、门记录 `deniedBy: "mode"`,`gateDeniedByDetail("mode")` 仍是那一句;只有钩子的 ask(没有规则)⇒ 仍出卡。老引擎上两形都出卡。
10178
+ - **G-T6**(回归约束):`responseModel: ""` ⇒ 终帧无 `_sema_response_model`、轮末帧无 `responseModel`(两代同);`responseModel: "provider-name-b"` ⇒ 原样。
10179
+
10180
+ **错误信封旧名**
10181
+
10182
+ 记号:`env` = `runStream` 喂 `[{type:'done', result:{taskId:'t', sessionId:'s', terminal:{kind:'failed', code:'limits.max_tokens_exceeded', message:'stopped'}, result:'SALVAGED-TEXT-12', stats:{turns:2}}}]` 得到的那只结果帧(`subtype:'error_during_execution'`、`is_error:true`、`_sema_salvaged_result:'SALVAGED-TEXT-12'`、无 `result`);`old(env)` = 把它的 `_sema_salvaged_result` 改名成 `result`(0.83.0 之前的原始输出形)。「终答行」= `adapt()` 转录面 `type:'assistant'` 行的正文;「分岔」= chrome 面 `kind:'result_text_diverged'`。
10183
+
10184
+ - **G-R1**(本版证明;R-1):只把 `old(env)` 喂 `createWireToCcAdapter().adapt()` ⇒ 零终答行、零分岔。把同一条 `runStream` 输出(合成终态行 + `old(env)`)整条喂 ⇒ 终答行恰是合成终态行那一行,零分岔。判别点:0.85.x 上前一格出一条 `SALVAGED-TEXT-12` 终答行,后一格出一条分岔(`committedLength: 20, resultLength: 16`)。
10185
+ - **G-R2**(本版证明):`runStream` 喂 `[{type:'text', text:'SALVAGED-', eventId:'e1'}, <同上 done>]`,去掉合成终态行后把正文行 + `old(env)` 喂 `adapt()` ⇒ 终答行恰 `['SALVAGED-']`、零分岔。判别点:0.85.x 上多一条 `TEXT-12`。对照:同一条换回新名形 ⇒ `['SALVAGED-', 'TEXT-12']`(两版同)。
10186
+ - **G-R3**(回归约束):成功型 `runStream` 喂 `done{terminal:{kind:'completed'}, result:'FULL-ANSWER'}` ⇒ 终答行 `['FULL-ANSWER']`;先上屏 `FULL-` ⇒ `['FULL-', 'ANSWER']`;先上屏 `OTHER` ⇒ 分岔 `committedLength: 5, resultLength: 11`。与 0.85.x 逐字同。
10187
+ - **G-R4**(回归约束 + 本版证明):`{...env, _sema_salvaged_result:'NEW-SALVAGED', result:'OLD-RESULT'}` 单喂 ⇒ 终答行 `['NEW-SALVAGED']`(两版同);`_sema_salvaged_result` 换成 `null` / `7` / `{text:'x'}`、`result:'OLD-RESULT'` 保留 ⇒ 零终答行(判别点:0.85.x 上出 `OLD-RESULT`)。
10188
+ - **G-R5**(回归约束):成功型结果帧改成 `is_error:true`、`result:'ERR-LINE-TEXT'` ⇒ 屏上一字未出 `['ERR-LINE-TEXT']`;先上屏 `ERR-` ⇒ `['ERR-', 'LINE-TEXT']`;先上屏 `OTHER` ⇒ 分岔 `5 / 13`;三格都与同一帧 `is_error:false` 逐格同,且与 0.85.x 逐字同。
10189
+ - **G-R6**(回归约束):成功型结果帧去掉 `subtype`(或改成 `null` / `7` / `['error_x']`)、`result:'BARE-TEXT'` ⇒ 屏上一字未出 `['BARE-TEXT']`;先上屏 `BARE-` ⇒ `['BARE-', 'TEXT']`;先上屏 `OTHER` ⇒ 分岔 `5 / 9`;三格都与同一帧 `subtype:'success'` 逐格同,且与 0.85.x 逐字同。
10190
+ - **G-R7**(回归约束):同 G-R6 的三格,`subtype` 换成 `''` / `'teleported'` / `'Success'` / `'error'` ⇒ 产出与 `subtype:'success'` 逐格同(`['BARE-TEXT']` / `['BARE-', 'TEXT']` / 分岔 `5 / 9`),与 0.85.x 逐字同。
10191
+ - **G-R8**(本版证明):同 G-R6 的三格,`subtype` 换成 `'error_future_kind'` ⇒ 只剩屏上已有的(零终答行 / `['BARE-']` / `['OTHER']` 且零分岔);同一帧改骑 `_sema_salvaged_result:'BARE-TEXT'`(去掉 `result`)⇒ 产出与照读形同。判别点:0.85.x 上三格都照读 `result`。
10192
+
10193
+ **引擎 7.36.0**(纯包层,不需要引擎)
10194
+
10195
+ - **G-TF1**(本版证明):`ENGINE_NOTICE_CODES.length === 80`;`ENGINE_NOTICE_CODES[ENGINE_NOTICE_CODES.indexOf('route.response_model_mismatch') + 1] === 'route.tool_call_id_folded'`;`engineNoticeInCatalog('route.tool_call_id_folded') === true`;`noticeAudienceOf('route.tool_call_id_folded') === 'operator'`。判别点:0.85.2 上 `engineNoticeInCatalog` 答 `false`、码册 73 员(`noticeAudienceOf` 两版同答 `'operator'`,不作判别)。
10196
+ - **G-TF2**(回归约束):`readEngineNoticeFacts({ code: 'route.tool_call_id_folded', message: 'm', detail: { reason: 'charset' } }) === undefined`;`Object.hasOwn(ENGINE_NOTICE_FACT_READERS, 'route.tool_call_id_folded') === false`。
10197
+ - **G-TF2b**(本版证明):`engineNoticeInCatalog('route.tool_call_id_folded') === true` 且 `readEngineNoticeFacts({ code: 'route.tool_call_id_folded', message: 'm', detail: { reason: 'charset' } }) === undefined`(在册而不派发:只登记)。判别点:0.85.2 上不在册。
10198
+
10199
+ **服务端 7.106.0**
10200
+
10201
+ - **G-Q1**(本版证明,纯包层):`projectSqlEngineCapability({ version: '7.106.0', store: projectStoreCapability({ declared: 'pg', backend: 'pg' }, <驱动事实>) })` ⇒ `present`,三座与驱动事实逐字同;`sqlEngineDoctorDetail` 那一行与老形 `{ sql: <同一对象> }` 逐字同。0.85.2 上 ⇒ `not_reported` ⇒ FAIL。
10202
+ - **G-Q2**(本版证明):`store` 为 local 后端 / 降级到内存 / 驱动事实 `null` 三形 ⇒ `none`。0.85.2 上 `not_reported` ⇒ FAIL。
10203
+ - **G-Q3**(回归约束):不带 `store` 的回体:`sql` 对象 ⇒ `present`;`sql: null` ⇒ `none`;两处都无 ⇒ `not_reported`。
10204
+ - **G-SP1**(本版证明):`projectStorePostureCapability` 对 `projectStoreCapability` 的五形真产出(local · mysql + 事实 · pg 降级 `db_unreachable` · local 降级 `local_unwritable` · 显式 memory)读成 `present`,视图与真产出内容相同(键序不计);无 `store` ⇒ `not_reported`。
10205
+ - **G-SP2**(本版证明):上五形 `storePersistence` 依次 `durable` / `durable` / `not_durable` / `not_durable` / `not_durable`;`not_reported` / `unobserved` ⇒ `unknown`。
10206
+ - **G-SP3**(本版证明):两个已知降级词各得专句(不带引号原词),认不出的词(`disk_full`)得带引号原词那一句;`not_reported` 句不含 `memory` / `not durable`。
10207
+ - **G-SP4**(本版证明):`store` 坏形(`durable: 'true'` / `declared: ''` / `degradedReason: ''` / `sql: null`)⇒ 投影 `undefined`,经 tee 后读口 `unobserved`;`store` 本身 `null` / 串 / 数组同(这一格畸形),而同体 `centerWiring` 缺席答 `not_reported`(不是 `none`)。
10208
+ - **G-C1**(本版证明):`buildCenterWiring` 真产出(拉取三态 × 签发方两词;租约姿态两词 × 健康四词 × 调用方四词)全部读成 `present`、内容相同;`lease: "absent"` 形不含三键。
10209
+ - **G-C2**(本版证明):`{ store: <普通对象>, <无 centerWiring> }` ⇒ `none`;`{}` / 无 `store` / `store` 坏形(`null` / 串 / 数组 / 值 `undefined` / 读它就抛)⇒ `not_reported`(同一回体上 SQL 读面与车道 `isolatedAbsent` 同判老一代);投影口直调遇会抛的取值器 / 代理不抛。
10210
+ - **G-C3**(本版证明):`callerQuotaLease` 对调用方四词各答自己;`lease: "absent"` 与 `none` ⇒ `no-lease`;`'Enforced'` / `'metered'` / 配了租约却无 `caller` ⇒ `unknown`。
10211
+ - **G-C4**(本版证明):`failMode: "closed"` 那一行含 `refused`、不含 `let through`;`open` 反之;`not_reported` 句不含 `not connected` / `no configuration center`。
10212
+ - **G-LU1**(本版证明,真 SDK 链):用装着的 SDK 把 7.106.0 `leaseRefusalOf` 的两个成因拒绝体(503 + `retryAfterSec: 5` + 头 5 秒)铸成错误对象 ⇒ `fleetLeaseUnavailableFromError` 答 `{ code: 'fleet.lease_unavailable', reason: <成因>, retryAfterSec: 5 }`。0.85.2 上该口缺席 ⇒ FAIL。
10213
+ - **G-LU2**(本版证明):别的 503(`draining` / 通用内部错 / 无码)、429 `quota_exhausted` ⇒ `null`;码只在 message 里 ⇒ `null`;无状态的普通对象带这一码 ⇒ 认。
10214
+ - **G-LU3**(本版证明):两个已知成因各一句、认不出的成因与缺席不编成因;有数带数、无数整句不含数字;句中无 `fleet.lease_unavailable` / `503`。
10215
+ - **G-LU4**(本版证明):`classifyTurnWireError(<G-LU1 的错误对象>)` ⇒ `{ kind: 'http', status: 503, leaseUnavailable: true, … }`;别的 503 判决无此键。0.85.2 上无此键 ⇒ FAIL。
10216
+ - **G-X1**(本版证明):7.106.0 `projectExecutionLaneCapability` 对八车道(`REMOTE_EXEC` 未设 · host · e2b · k8s · local-docker · ssh · adb · device)的真产出放进带 `store` 的 caps 体:有手七车道 `isolated` 逐字进读数;未设形 ⇒ `isolatedAbsent: 'no_hands'`。0.85.2 上 `isolated` 不进读数 ⇒ FAIL。
10217
+ - **G-X2**(本版证明):同形不带 `store` ⇒ `not_reported`;`isolated: 'false'` / `0` / `null` ⇒ `unreadable`,`toolsOnThisHost` 照读;带 `store` 而 `{ provider: 'host', toolsOnThisHost: true }` 无 `isolated` ⇒ `unreadable`(不是 `no_hands`),`noOsSandboxOnThisHost` 答 `unknown`;带 `store` 而 `toolsOnThisHost: false` 无 `isolated` ⇒ `no_hands`;诊断面段同律;`isolated` 是会抛的取值器(或代理读它就抛)⇒ `unreadable`、`provider` / `toolsOnThisHost` 照读,经 tee 的读口仍 `present`、`toolsRunHereFromExecutionLane(读数, true)` 答 `toolsOnThisHost`;`store` 是 `null` / 串 / 数组、`toolsOnThisHost: false` 无 `isolated` ⇒ `not_reported`(不是 `no_hands`)。
10218
+ - **G-X3**(本版证明):上八车道只有 host 答 `yes`,其余答 `no`,无一答 `unknown`;工具在本机而 `isolated` 缺席 / 形坏 ⇒ `unknown`;`not_reported` / `unobserved` ⇒ `unknown`。
10219
+ - **G-X4**(本版证明):`noOsSandboxContent()` 逐字等于 112a-13 那一句。
10220
+ - **G-X5**(本版证明):`projectExecutionLaneWiring` 对 7.106.0 诊断面同一投影的真产出与 caps 读数逐字同;段缺席 ⇒ `not_reported`;回体非对象 / 取值器抛 ⇒ `undefined`,不抛。
10221
+ - **G-X6**(回归约束):`toolsRunHereFromExecutionLane` 与 `executionLaneDoctorDetail` 对同一读数(无论多不多那一位)答案逐字同 0.85.2。
10222
+ - **G-IE1**(本版证明,纯包层):`buildTaskRequest({ objective:'o', sessionId:'s', live:true, inheritEnv:'all' }, 'interactive')` 不抛、请求体 `inheritEnv === 'all'`;
10223
+ `'scrub'` 同;print 车道同。0.85.2 上抛「本包不认识的键」⇒ FAIL。
10224
+ - **G-IE2**(本版证明,纯包层):`inheritEnv` 取 `'ALL'` / `''` / `['PATH']` / `true` ⇒ `TypeError`,消息含 `inheritEnv` 与「只接受」、不含「不认识」(通用表外键那一句的字样)、不含入参字面;utility 车道、非 live 同拒。
10225
+ - **G-IE3**(本版证明,纯包层):`assembleTaskRequest` 缺席 ⇒ 请求体无键、回执无行;非 live ⇒ 回执 `not_live`;utility ⇒ 回执 `off_lane`。
10226
+ - **G-IE4**(本版证明,纯包层):`inheritEnvServerSupport`:`'7.106.0'` / `'7.107.0'` ⇒ supported;`'7.105.9'` ⇒ unsupported;`undefined` / `'7.106.0-rc.1'` / `'v7.106.0'` ⇒ unknown。
10227
+ - **G-IE5**(本版证明,纯包层):`inheritEnvDeclaration('all','7.106.0')` ⇒ `{ field: { inheritEnv:'all' } }`;`('all','7.105.0')` ⇒ `{ field:{}, withheld:{ cause:'server_too_old', word:'all' } }`;
10228
+ `('scrub', undefined)` ⇒ `withheld.cause === 'server_version_unknown'`;`(undefined, …)` ⇒ `{ field:{} }`;`('ALL', undefined)` ⇒ `TypeError`。
10229
+ - **G-IE6**(端侧验收,活引擎):7.105.0 引擎上交互提交带「整份继承」意图 ⇒ 请求体不带该键、不出 400、回执句在屏;7.106.0 单用户本机部署上带该键 ⇒ shell 里读得到一个凭据形变量;
10230
+ 下一次提交不带该键 ⇒ 读不到(缺席清掉上一条)。
10231
+ - **G-IE7**(本版证明,纯包层):四句逐字等于 112a-14;读不懂的入参 ⇒ 通用句,不抛。
10232
+ - **G-IE8**(本版证明,纯包层):sdk `toApiError(400, { error:'x', errorCode:'request.field_invalid' })` × 请求体 `{ inheritEnv:'all' }` ⇒ `{ code:'request.field_invalid' }`;
10233
+ 请求体 `'scrub'` / 缺席 ⇒ `null`;体上带权限桶字段 ⇒ `null`;句子逐字等于 112a-15。
10234
+ - **G-HP1**(本版证明,纯包层):sdk `toApiError(422, { error:'x', errorCode:'request.host_posture_refused' })`:请求体 `{ inheritEnv:'all' }` ⇒ `askedWholeEnvironment:true`;
10235
+ `{ permissionMode:'bypassPermissions' }` ⇒ `askedOpenWriteFace:true`;`{ settings:{ permissions:{ defaultMode:'bypassPermissions' } } }` 同;两件 ⇒ 两位;不交请求体 ⇒ 只有 `code`。
10236
+ - **G-HP2**(本版证明,纯包层):四句逐字等于 112a-15;折叠形(409 + `blockedBy`)⇒ `null`。
10237
+ - **G-HP3**(端侧验收,活引擎):多用户部署(`REQUIRE_PRINCIPAL=true`)上提交带 `"all"` ⇒ 422,端上那一句是「整份环境」那一句(不是「权限模式」那一句)。
10238
+ - **G-PB1**(本版证明,纯包层):sdk `toApiError(400, { …, errorCode:'request.field_invalid', field:'settings.permissions.deny', reason:'over_cap', count:1001, cap:1000 })` ⇒
10239
+ `{ bucket:'deny', reason:'over_cap', count:1001, cap:1000 }`;`reason:'bad_entry', index:1` ⇒ `{ …, index:1 }`;桶不是数组(无 `index`)⇒ 无 `index`。
10240
+ - **G-PB2**(本版证明,纯包层):sdk `toApiError(409, { …, errorCode:'resume_blocked_by_policy', blockedBy:'request.field_invalid', field…, reason… })` ⇒ 同一读数 + `folded:true`。
10241
+ - **G-PB3**(本版证明,纯包层):同码表外字段(`settings.permissions.defaultMode`)/ 表外理由 / 只有散文 ⇒ `null`。
10242
+ - **G-PB4**(本版证明,纯包层):句子逐字等于 112a-16。
10243
+ - **G-PB5**(本版证明,包层驱动决断出口):假 client 的 `approvals.decide` 抛 G-PB2 那只错误 ⇒ 决断失败文字含折叠码那一句,其后含续跑框那一句;折叠体无权限字段 ⇒ 只有折叠码那一句。
10244
+ - **G-PB6**(端侧验收,活引擎):7.106.0 上 `settings.permissions.deny` 1001 条的提交 ⇒ 400,端上那一句点名 deny、1001、1000、超 1 条;恰 1000 条 ⇒ 受理。
10245
+ - **G-MC1**(回归约束,包层 + 服务端 7.106.0 发布包):四类强制卡(部署命令策略 / 永不自动放行 / 耐久预算耗尽 / 编排路由 shell 与写)的卡上 `approvalIsMandated` ⇒ true、
10246
+ `readApprovalMandate` ⇒ undefined、会话级放行回 `rememberApplied:false` ⇒「没记住」告知恰一次;普通名单卡 ⇒ false、不告知。
10247
+ - **G-TD1**(本版证明,纯包层):sdk `toApiError(503, { error:'x', errorCode:'config.tool_schema_bound' })` 的错误类是 `ServiceStateError`;`toolDeclarationRefusalFromError` ⇒
10248
+ `{ code:'config.tool_schema_bound' }`;`isPreStreamDrainingReject` / `isWireTransportError` ⇒ false,`resumeRetryLaterFromError` / `usageWindowExhaustedFromError` ⇒ null;
10249
+ 开发依赖引擎包根 `TOOL_DECLARATION_CODES` 每一码同认、同一句。
10250
+ - **G-TD2**(端侧验收):同步提交腿撞这一码 ⇒ 端上不出现「多半是暂时的 / 再试一次」。
10251
+ - **G-BS1**(本版证明,纯包层):sdk `toApiError(400, { …, errorCode:'request.body_shape', unknownKeys:['approverPosture'], unsupportedKeys:[] })` ⇒
10252
+ `{ unknownKeys:['approverPosture'], unsupportedKeys:[] }`(冻结);体上没有两张表 ⇒ `{}`;别的码带两张表 ⇒ `null`。
10253
+ - **G-BS2**(本版证明,纯包层):`unknownKeys:['a', 7]` ⇒ 那一张缺席(不滤成 `['a']`)。
10254
+ - **G-BS3**(本版证明,纯包层):谓词,表 `unknownKeys:['settings.permisions'], unsupportedKeys:[]` —— 不交请求体 ⇒ `undefined`;交 `{ objective:'o', settings:{ permisions:1 } }` ⇒ `true`;交 `{ objective:'o', 'settings.permisions':1 }` ⇒ `false`;交 `{ objective:'o' }`(两处都对不上)⇒ `undefined`。`unsupportedKeys:['settings.permissions.additionalDirectories']` + `{ settings:{ permissions:{ additionalDirectories:['/x'] } } }` ⇒ `true`。表里有不带前缀的键(如 `unknownKeys:['approverPosture'], unsupportedKeys:[]`,或只读出一张 `['x']`、另一张读不出)⇒ `false`(交不交请求体同);`['settings.a', 'settings.b']` + `{ 'settings.a':1 }`(一只落在顶层)⇒ `false`;两张都缺席 / 只读出一张且它是空表 ⇒ `undefined`;`['settings']` ⇒ `false`。
10255
+ - **G-BS4**(本版证明,纯包层 + 服务端 7.106.0 发布包):按服务端受理顺序(先 `request-key-closure.js` `taskBodyKeyIssue(body)`,过了才 `task-settings.js` `taskSettingsKeyIssue(body.settings)`)用夹具真函数铸两形 —— 顶层字面键 `{ objective:'o', 'settings.permisions':1 }` 与嵌套 `{ objective:'o', settings:{ permisions:1 } }` 回显同一张表 `{ unknownKeys:['settings.permisions'], unsupportedKeys:[] }`;经 sdk `toApiError` 与 `bodyShapeRefusalFromError` 后,交各自的请求体 ⇒ 前者 `false`、后者 `true`;都不交 ⇒ 都 `undefined`。
10256
+ - **G-BS5**(本版证明,纯包层 + 服务端 7.106.0 发布包;顶层按回显同形比、`toJSON`):按 G-BS4 的受理顺序、对 `JSON.stringify` 之后的体真铸 —— ① `{ 'settings.permissions' + '\u200e': {}, settings: { permissions: {} } }`(顶层键末尾一个 U+200E,上游剥掉后回显 `settings.permissions`)② `{ 'settings.a': 1, 'settings.permissions' + '\u200f': 1, settings: { permissions: {} } }` ③ `{ 'settings.a': 1, ['settings.' + 'z'.repeat(70)]: 1 }`(上游截到 64 字补 `…`)—— 交原体三形都 `false`;④ `{ objective:'o', 'settings.permisions': { toJSON() { return undefined } }, settings: { permisions: 1 } }`:上游只剩设置层那一道,回显 `['settings.permisions']`,交原体 ⇒ `undefined`(不断言 `false`)。
10257
+ - 端侧验收(终端,换读之后):真起 7.106.0(`CONFIG_PROVIDER=local`、`REMOTE_EXEC` 不设)⇒ 首拍 / `engine status` 恰出 112a-13 那一句;`REMOTE_EXEC=e2b` / `local-docker` ⇒ 零句;`REMOTE_EXEC` 不设且 `CONFIG_PROVIDER` 非 local ⇒ 零句。`REQUIRE_PRINCIPAL=true` 且额度中心对租约答 401 ⇒ 提交失败行恰为 112a-12 起句 + `auth-rejected` 补句 + `Send it again in about 5 s`。
10258
+
10259
+ **`-p` 首帧来源键**
10260
+
10261
+ 记号:`R` = 一只合法名册 `{ schemaVersion: 1, count: 1, digest: 'a1b2c3d4e5f60718', entries: [ { name: 'Bash', aliases: [], source: 'builtin', contract: { contractId: 'builtin:Bash', implementationRevision: 'r1' }, shapeDigest: 'sd', wireSchemaDigest: 'wd', cardId: 'builtin:Bash', capabilityId: 'cap-1', effect: 'write', egress: false, irreversibility: 'always', contentOrigin: 'execution', family: 'shell', renderHints: { userFacingName: 'Shell', activity: 'Running', approvalCard: 'shell' } } ] }`;`F` = 回落面 `{ tools: [{ name: 'Read' }], source: 'wire-vocabulary' }`;`B` = `buildInit: (face) => { const f = { type: 'system', subtype: 'init', session_id: 's', tools: face === null ? ['STATIC'] : face.tools.map((t) => t.name), model: 'm' }; snap = JSON.stringify(f); built = f; return f }`;`W(events, fallback)` = `withPrintInitFrame(runStream(<events 的异步流>, { sessionId: 's' }, {}), { fallback, buildInit: B })` 全部读出;`S` / `RS` = `_sema_tools_source` / `_sema_tools_fallback_reason`。
10262
+
10263
+ - **G-TS1**(本版证明,纯包层):`W([{ type: 'wiring_manifest', eventId: 'wm-1', tools: R }, { type: 'text_delta', delta: 'hi' }, { type: 'done', result: { status: 'completed', result: 'hi', model: 'm', stats: { turns: 1 } } }], F)` ⇒ 首行 `=== built`、`S === 'engine-roster'`、`Object.prototype.hasOwnProperty.call(首行, RS) === false`、`tools` 恰 `['Bash']`。0.85.x 上首行没有 `S` ⇒ FAIL。
10264
+ - **G-TS2**(本版证明,纯包层):同 `B` / `F`,四形 —— ① 首帧 `{ type: 'wiring_manifest', eventId: 'wm-2', autoMode: { armed: false, reason: 'no_intent' } }`(不带 `tools`)⇒ `estimate` + `manifest-without-roster`;② 首帧 `{ type: 'text_delta', delta: 'x' }` ⇒ `estimate` + `model-activity-first`;③ 首帧 `{ type: 'failed', errorCode: 'internal', error: 'prepare failed' }` ⇒ `estimate` + `run-ended`;④ 源流先出 `{ type: 'system', subtype: 'status' }` 后挂住,选项加 `timer: { set: (fn) => { fire = fn; return 1 }, clear() {} }`,调 `fire()` ⇒ `estimate` + `wait-timeout`。四形首行都 `=== built`、自有键里恰 `S` + `RS` 两只。`F.source` 换成 `'scenario-probe'` ⇒ 四形同答(不透出组装词)。
10265
+ - **G-TS3**(本版证明,纯包层):G-TS2 ② 换 `fallback: null` ⇒ 首行 `tools` 恰 `['STATIC']`、`S === 'host-static'`、无 `RS` 自有键。
10266
+ - **G-TS4**(回归约束,纯包层):G-TS1–G-TS3 每一形,首行去掉 `S` / `RS` 两键后 `JSON.stringify` 恰等于 `snap`(`tools` 与其余各键、键序不动);其后各行与 0.85.x 逐字节同;`onDecision` 拿到的工具面上没有 `S` / `RS`;`printInitToolFaceDebugLine` 的句子逐字同 0.85.x。
10267
+ - **G-TS5**(本版证明,纯包层;KL-300):`B` 改为在帧上预置 `S: 'engine-roster', RS: 'wait-timeout'`,跑 G-TS2 ③ ⇒ 首行 `S === 'estimate'`、`RS === 'run-ended'`;预置 `S: 'estimate', RS: 'run-ended'`,跑 G-TS1 ⇒ `S === 'engine-roster'`、`RS` 不是自有键(`JSON.stringify(首行)` 不含 `_sema_tools_fallback_reason`)。
10268
+ - **G-TS6**(回归约束,纯包层;KL-301):`B` 改为返回 `Object.freeze(f)` ⇒ 不抛、首行 `=== built`、`JSON.stringify(首行) === snap`(两键缺席)、其后各行照放;`B` 改为返回 `null` ⇒ 首行是 `null`、不抛、其后照放。
10269
+ - **G-TS6b**(回归约束,纯包层;KL-301 不留半套):`B` 改为在帧上 `Object.defineProperty(f, '_sema_tools_fallback_reason', { value: 'wait-timeout', writable: false, enumerable: true, configurable: false })`,跑 G-TS2 ③ ⇒ 首行 `JSON.stringify` 恰等于 `snap`(不带 `_sema_tools_source`);同一帧再预置 `_sema_tools_source: 'estimate'`,跑 G-TS1 ⇒ 首行 `S === 'estimate'`、`JSON.stringify` 恰等于 `snap`(不出现 `engine-roster` + `wait-timeout`)。`B` 改为把 `_sema_tools_source` 定义成只读的 `'engine-roster'`,跑 G-TS2 ③ ⇒ 首行 `JSON.stringify` 恰等于 `snap`(不出现 `engine-roster` + `run-ended`)。0.85.x 上首行本来就不铺键,两版同过;本版的判别见 G-TS6c。
10270
+ - **G-TS6c**(本版证明,纯包层;KL-301 写抛出也不留半套):`B` 在帧上预置 `_sema_tools_source: 'estimate'`、`_sema_tools_fallback_reason: 'wait-timeout'`,返回 `new Proxy(f, { deleteProperty(t, k) { if (k === '_sema_tools_fallback_reason') throw new Error('x'); return Reflect.deleteProperty(t, k) } })`,跑 G-TS1 ⇒ 不抛、首行 `S === 'estimate'`、`RS === 'wait-timeout'`、`JSON.stringify(首行) === snap`;同一只 `B` 不套代理跑 G-TS1 ⇒ `S === 'engine-roster'`、`RS` 不是自有键(对照);`B` 在帧上把 `_sema_tools_fallback_reason` 定义成取值器(答 `'host-reason'`)加会抛的设值器,跑 G-TS2 ③ ⇒ 不抛、首行没有 `S` 自有键、`RS === 'host-reason'`、`JSON.stringify(首行) === snap`。判别点:0.85.x 上对照那一格首行不带 `S`。
10271
+ - **G-TS6d**(回归约束,纯包层;KL-301 不可扩展帧):`B` 在帧上预置 `_sema_tools_fallback_reason: 'wait-timeout'`(不放来源)后返回 `Object.preventExtensions(f)`,跑 G-TS1 与 G-TS3 ⇒ 不抛、首行 `=== built`、`RS === 'wait-timeout'`、没有 `S` 自有键、`JSON.stringify(首行) === snap`(宿主的原因键不丢)。0.85.x 上首行本来就不铺键,两版同过。
10272
+ - **G-TS6e**(本版证明,纯包层;不可扩展但不新增键照铺):`B` 预置 `S: 'estimate'`、`RS: 'wait-timeout'` 后返回 `Object.preventExtensions(f)`,跑 G-TS1 ⇒ `S === 'engine-roster'`、`RS` 不是自有键。0.85.x 上首行 `S` 仍是 `'estimate'` ⇒ FAIL。
10273
+ - **G-TS7**(本版证明,纯包层;铸口直调):`printInitToolFaceSupersetKeys(null)` / `(undefined)` ⇒ 恰 `{ _sema_tools_source: 'host-static' }`(键集恰一只);`(decidePrintInitToolFace({ kind: 'no-roster', reason: 'run-ended' }, F))` ⇒ 恰 `{ _sema_tools_source: 'estimate', _sema_tools_fallback_reason: 'run-ended' }`;`({ source: 'engine-roster', tools: [] })` ⇒ 恰 `{ _sema_tools_source: 'engine-roster' }`;`({ source: 'engine-roster', tools: [], fallbackReason: 'run-ended' })` ⇒ 恰 `{ _sema_tools_source: 'estimate', _sema_tools_fallback_reason: 'run-ended' }`(来源写着名册却带回落原因 = 回落分支的面);`({ source: 'x', tools: [], fallbackReason: 'bogus' })` ⇒ 恰 `{ _sema_tools_source: 'estimate' }`;`source` 是会抛的取值器 ⇒ 不抛、`estimate`;同一入参两次调用返回两只不同对象。0.85.x 上根入口没有这一名 ⇒ FAIL。
10274
+ - **G-TS7b**(本版证明,纯包层;JS 宿主的回落面):`W([{ type: 'text_delta', delta: 'x' }, { type: 'done', result: { status: 'completed', result: 'x', model: 'm', stats: { turns: 1 } } }], { tools: [{ name: 'Read' }], source: 'engine-roster' })` ⇒ 首行 `S === 'estimate'`、`RS === 'model-activity-first'`、`tools` 恰 `['Read']`;`onDecision` 拿到的判定面 `source` 不是 `'engine-roster'`,`printInitToolFaceDebugLine` 说的是估计。0.85.x 上首行没有 `S` ⇒ FAIL。
10275
+ - **G-TS8**(端侧验收;终端 `-p` 黑盒,需在线引擎):缺省姿势 `-p --output-format stream-json --verbose '<任一提示>'` ⇒ 第一行 `type: 'system', subtype: 'init'`,带 `_sema_tools_source: "engine-roster"`、不带 `_sema_tools_fallback_reason`,`tools` 与同一引擎上 0.85.x 的第一行同名同序。离线车道(不设在线引擎地址)⇒ 第一行不带这两键(终端接铸口之前;KL-302 ③),接上之后带 `host-static`。
10276
+ - **G-TS9**(回归约束,纯包层;CC-267):`ENGINE_HANDS_BAND` / `ENGINE_SCENARIO_EXTRAS_DEFAULT` / `ENGINE_RUNNER_FACE` 的 `JSON.stringify` 与 0.85.x 逐字节同;`runnerFaceForEnv({})` / `runnerFaceForEnv({ SCHEDULER_ENABLED: 'false', SELF_ORCHESTRATION_ENABLED: 'false' })` 与 0.85.x 同;`resolveLiveInitToolFace([], { SEMA_LIVE_BASEURL: 'http://e' })` 的产出与 0.85.x 同。
10277
+
10278
+ ### 112d. 端上要动的读点
10279
+
10280
+ 坐标来自本机克隆的只读检索,读的提交:终端 `origin/main` 6e050ef7(09-29)· 网页端 `origin/main` 0fb6df3(09-29)· 管理台 `origin/main` 21b8951(09-29)· 桌面端 `origin/main` 5c99611(08-13,冻结)。终端 / 管理台 / 桌面端的产品源码坐标省去开头的 src 目录,网页端坐标从仓根起(`ui/` / `tests/`);本机克隆可能落后远端,行号会漂,合并前请各端对自己的最新主干复核。
10281
+
10282
+ **终端**(6e050ef7)
10283
+
10284
+ - 引擎 7.34.0(D / H / N):① `sema/printApprovalChannelNotice.ts:53` 型位 `(typeof GATE_DENIED_BY_WORDS)[number]` —— 新元素型同样含 `ask_resolution`,零改动;② `sema/approvalStreamWire.ts:698-723` / `sema/askFrameNotes.ts:36、280-305` 的 `ruleStoreUnreadable` 窄读与措辞 —— 两代照读,零改动;新引擎上恒缺席(112a-3);③ `sema/engineGateSyncAllow.ts` 的 `askSurvivesPosture` 接法零改动;④ 六条新通告:终端现有的册内通用行会渲引擎 `message`(受众 user 的五条);要专属行时接 `readEngineNoticeFacts`(今天零读点);⑤ 自家锚登记(终端仓 scripts 目录下的 `wire-anchor-registry.mjs:2677`)钉着引擎 `DENIED_BY_VALUES` 的十词原文(含 `plan_mode`),终端换钉带引擎 7.34 的服务端时那一格会红 —— 那是终端自己的锚,按本版两代读法改。
10285
+ - 服务端 7.105.0(L / W):① `sema/overrides/cmd-workflows.tsx:329-342` —— `detailsUnavailable` 只认 `degraded` / `unavailable`;`unauthorized` 落进加载格(对话框一直渲加载)⇒ 建议加这一态,正文用 `READ_CREDENTIAL_NOT_ACCEPTED_NOTICE`(有 `state` 时可照渲最后一份快照);② `sema/workflowDetailControl.ts:26` / `:56` —— 只引型(`resolution?(): WorkflowResolution`),不编译红;③ `sema/sessionPolicyWire.ts:283-285` —— 结局那一句已经取 `sessionPolicyTightenNotice(outcome)`,新臂自动出句;`outcomeWroteNothingForSure`(`:217-225`)把 `legacy_tool_name` 判「确知没写」,与本臂语义一致,零动作;可选:`alreadyInRecord: true` 时引到撤销动词。投递判定已单源在本包 `sessionPolicyDeliverable`(同文件 `:147-170`,退役名一律写前扣下),零动作;④ `sema/sessionPolicyWire.test.ts:345`(十二词长度钉)不受影响;⑤ 终端自持的三族读路(`sema/fleetClient.ts:308` fleet 流、`sema/engineBgProbe.ts:67` fleet 快照、`sema/liveClient.ts:1598` workflow 详情)不经本包这两处读口,401 由终端自己处置;活动台账(`sema/workflowLiveActivity.ts:58` 经本包 `ensureWorkflowActivityLedger`)只在 `lastError` 里带 401 原句(KL-268)。
10286
+ - 请求键退役(A):产品码零发送点、零具名 import。能力位读口在 `sema/taskFacePostureCapability.ts:83-86`(`readTaskApproverPosture`:键不在 / 非严格布尔 ⇒ `'not-reported'`)与 doctor 那一行 `commands/doctor/axesRows.ts:1169-1187` → `taskApproverPostureDoctorDetail('not-reported')` =「the engine did not report whether it honors an approver posture declared by a task」—— 7.106.0 起就读成这一句,零改动(读口不在本包;要换更明确的说法,提需求由本包出句)。终端仓 scripts 目录下的 `wire-consumption-manifest.json` 若干行是账面文字,随终端自己的提货批改 —— 其中 0.79.0 那一批(`disposition: pending`)是「壳停拼那段提醒形文本、改交这一位」的待办:目标键退役,这一行要由终端改判。
10287
+ - 补救话(U-1):零读点(可选接)。
10288
+ - 引擎 7.35.0(T):`cli/textModeError.ts:166` 读 `isConfigRefusalCode(terminalCode)`(前缀谓词,本版行为不变,零改动);`CONFIG_REFUSAL_CODES` / 治理码 / `inherited_ceiling` 在产品码零命中;终端仓 scripts 目录下 `wire-consumption-manifest.json:195`(`config.tool_mount_denied → 400` 一行,服务端映射的消费台账,非产品码)随服务端提货各自复核。钩子前后事件的名字配对若在端侧有读点,请按 112y 第 2 条自查(这次检索未找到按名配对的产品码)。
10289
+ - 错误信封旧名(R-1):零读点(`adapt()` 入口只吃同一安装内 `runStream` 的现铸流;续读 / 接管重放同)。
10290
+ - 引擎 7.36.0(TF):工具调用 id 零解析形状的读点(按串比对);执行后钩子失败通告按模型拼写匹配的读点这次检索未找到 —— 有的话改按 wire 名(TF-5)。
10291
+ - 服务端 7.106.0(Q / SP / C / LU / X):零改动即得 —— `commands/doctor/axesRows.ts` SQL 行与 `commands/doctor/doctorEngineCapsProbe.ts` 的 SQL 投影经本包 ⇒ 两代读;`cli/handlers/cloud.ts` 车道行经 `projectExecutionLaneCapability` + `executionLaneDoctorDetail`;决断出口失败文字(PB-3);强制卡(MC-1;服务端说明里「编排路由单个强制词被放行」那一句的前提已变 —— 路由卡不再带理由词)。「本机无 OS 沙箱」一句换读 `noOsSandboxOnThisHost` + `noOsSandboxContent`(不在壳里拼判据);`engine status` 存储 / 中心 / 租约几行与 `cloud usage` 换读 SP-1 – C-3;本包再导出壳 `sema/executionLaneCapability.ts` 的名单要补新名。提交失败行在按状态落通用行之前先问 `fleetLeaseUnavailableFromError`(或判决的 `leaseUnavailable`)。
10292
+ - 服务端 7.106.0(IE / HP / PB / BS):🔴 IE-1 / IE-3(终端既有计划:交互车道发 `"all"`,`-p` 不发):只经 `inheritEnvDeclaration(意图, 版本串)` 给值,`withheld` 在场渲 `inheritEnvWithheldNotice`;「本会话整份继承」= 每个交互提交都带(缺席清掉上一条)。🔴 HP-1:`sema/taskAdmissionRefusalWire.ts:37` / `:55` 的临时读口(按「权限模式被拒」措辞)在请求带 `"all"` 之后会说错对象;调用点 `sema/apiErrorSupplement.ts:346-347` 改调 `hostPostureRefusalFromError(err, 这一发的请求体)` / `hostPostureRefusalContent`,删掉临时读口(它的头注写的退役条件「包出读口那天」本版满足)。建议(非必改):`sema/apiErrorSupplement.ts:119` `settingsBodyShapeSupplement` 的判别位改锚 `bodyShapeRefusalTouchesSettings(bodyShapeRefusalFromError(err), 这一发的请求体)` —— 交的必须是**整份**请求体(与 HP-1 交给 `hostPostureRefusalFromError` 的同一份)。只交 `body.settings` 那一段 ⇒ 带前缀的键两处都对不上,顶层形与嵌套形都答 `undefined`(退回今天的判别位,不是误归);自己拼一只 `{ settings: body.settings }` 交进来 ⇒ 顶层那只字面点键看不见,「顶层有字面点键、`settings` 里也有同名键」那一形被答成 `true`(误归);`true` 才渲设置面补充行、`false` 不渲(顶层坏键,改设置文件没用)、`undefined` 退回今天的「这一发带没带 settings」判别位;同文件 `:108` 头注「两张机读表到不了壳」已不成立(sdk ≥11.1.0 经 `APIError.extra` 带到)。建议:设置面补充链加权限表一臂(PB-1 / PB-2)。
10293
+ - `-p` 首帧来源键(TS / RS):TS-2 / TS-3 **零改动即得**(引擎车道):`sema/seamQueryEngine.ts:1505-1516` 把 `runStream` 输出交给 `withPrintInitFrame`,`buildInit`(`:1508-1512`)返回 `buildPrintInitMessageForFace(…)` 建的对象并记为 `releasedInit`;循环在 `:1520` 按 `msg === releasedInit` 认出首帧原样放出 —— 本包铺在同一只对象上,同一性不变,两键随首帧上 stdout(`cli/print.ts:1124` 原样写出)。终端单元格 `sema/printInitRosterFirst.test.ts:122`(P3d:init 帧不带 `source` / `fallbackReason`)照旧成立(本版的键名不同)。注释可顺手改(非必改):`sema/seamQueryEngine.ts:1513` 与 `sema/printStreamJsonContract.ts:1461-1462` 写「`source` / `fallbackReason` 不上 init 帧」—— CC 形名字仍不上,来源本版起经两只 `_sema_` 键上(112a′ 第 25 条)。自建首帧三处(非必改;不接时两键缺席,按 112b 读作「不知道来源」):`sema/seamQueryEngine.ts:538`(本地处理的命令)、`:626`(提交前就拒)、`:1267`(离线 / mock 车道)都经 `buildPrintInitMessage` → `sema/printStreamJsonContract.ts:1473` `buildPrintInitMessageCore(…, undefined)`,在 `decided === undefined` 那一支(`:1535-1547`)选静态表或 `resolveLiveInitToolFace` 的估计。接法 = **约三行、集中在这一个函数**,不是一行:那一支里记下用的是哪一面(估计面 `face` 或 `null`),在 `:1569` 返回前把 `printInitToolFaceSupersetKeys(face ? decidePrintInitToolFace({ kind: 'no-roster', reason: 'run-ended' }, face) : null)` 展开到 `init` 上;降级帧(`:1575-1593`)在 `decided === undefined` 时同样展开 `printInitToolFaceSupersetKeys(null)`(那一形 `tools` 是 `[]`)。引擎车道(`decided` 在场)不必动 —— 包装器已铺。RS-1 零改动:`sema/liveInitToolFace.ts` 的转口与三张表的产出不变。
10294
+
10295
+ **网页端**(0fb6df3)
10296
+
10297
+ - 引擎 7.34.0:① `ui/lib/engine/engine-gate-denial.ts:111-117` 拒绝披露行走 `gateDeniedByDetail` —— `mode` 自动得到专句,零改动;② `ui/lib/engine/engine-approval-evidence.ts:413-433` / `ui/lib/composer-surfaces.ts:384-395` 的 `ruleStoreUnreadable` 窄读与透传 —— 两代照读,零改动;③ 六条新通告今天零读点(可选接)。
10298
+ - 服务端 7.105.0:① `ui/components/panes/BackgroundTasksPane.tsx:110-119`(`SOURCE_NOTICE_COPY`)与 `:1020` —— 新词没有文案,会渲成原样的 `fleet: unauthorized` ⇒ 补一行,用 `READ_CREDENTIAL_NOT_ACCEPTED_NOTICE`;② `ui/lib/engine/workflow-detail-wire.ts:64` `classifyWorkflowDetailStatus` —— 只读 `status()`,401 会落 `connection-error`(「Couldn't reach the workflow detail service.」,答非所问)⇒ 改读 `resolution()`,`unauthorized` 单独一格。网页端走同源中继(凭据在中继侧),正是本版上游点名的受影响形 —— 中继要带上服务凭据;③ `ui/lib/engine/background-view-adapter.ts:38`(型别名)/ `:147`(自检)—— 不编译红。
10299
+ - 🔴 请求键台账(A-1 / IE-1,必改):`ui/lib/engine/turn-request-ledger.ts:176`(`WEB_REQUEST_SUPPLY.approverPosture`,`supplied: false`)与 `:543` 那一行、`:72` 头注;对账门 `tests/run-request-key-parity-test.mjs:96`(A1「台账每条 interactive 键逐条有 web 账」)/ `:97`(A2「没有台账外的幽灵键」)/ `:107`(A 正控「interactive 键数 = 35」)。网页端今天钉的是 0.84.1:直升本版时 A2 红一格(`approverPosture` 成了台账外的键)、A1 红两格(`fileHistory` 来自 0.85.0、`inheritEnv` 来自本版)、正控 35 → 36 —— 删一行、加两行(两新键都 `supplied: false` 即可:网页端两键都零发送点)、正控改 36 即绿。
10300
+ - 服务端 7.106.0:🔴 TD-1:`ui/lib/turn-error-classify.ts:484` 的通用 `status >= 500` 臂答「That's usually temporary — try again」、`retryable: true`;503 `config.tool_schema_bound`(及同族三只 503)会落进这一臂。在它之前(与 `:380` 的 `capability.*` 臂同位)先问 `toolDeclarationRefusalFromError`,认领则用 `toolDeclarationRefusalContent`、`retryable: false`。(本机克隆未核网页端是否走同步提交腿;走流式腿时这一族落终态码,同一句可用 `{ code: terminal.code }` 取。)建议(非必改):同一文件按状态走自家 `httpShape` —— 503 `fleet.lease_unavailable` 落 5xx 形;在 `status != null` 分支前先问 `fleetLeaseUnavailableFromError` 挑 112a-12 那一句。与上一条同处一臂之前,两问互斥(码不同)。IE / HP / PB / BS 读口:本机克隆未见入口,零改动(请求键台账那一行见上);将来接时直接用本段读口。
10301
+ - 错误信封旧名(R-1):零必改。网页端自己的结果帧映射(`ui/lib/engine/turn-mapping.ts:402-405`)另有一处同形两名并读(`_sema_salvaged_result ?? result`,按 `is_error` 判错误信封),它读的是交到网页端的结果帧,不经本包 `adapt()`,本版不碰它;它那条路上的帧是不是全出自 0.83.0 及以后的本包,本包看不到 —— 删不删由网页端按自己的输入来源定,不要据本条推定可删。
10302
+ - 引擎 7.35.0 / 7.36.0、`-p` 首帧来源键:上述名字零命中(`withPrintInitFrame` / `decidePrintInitToolFace` / `printInitToolFace*` 零命中;同一检索对 `@sema-agent/client-core` 有命中,尺子会响)。
10303
+
10304
+ **桌面端**(5c99611)
10305
+
10306
+ - 冻结,零读点(本版各面的导出都没有 import;同一检索对 `client-core` 有命中,尺子会响)。
10307
+
10308
+ **管理台**(21b8951)
10309
+
10310
+ - `lib/web/approval-facts.ts:19` 注释提到出身词让位 —— 零改动;运维面若要读 `resume.legacy_mode_seed_migrated` 用 `readLegacyModeSeedMigrated`(可选)。
10311
+ - 请求键退役:只在管理台仓 docs 目录下的 `INTEGRATION.md:3429 / 4863-4864 / 5077-5078`(文档登记,零代码)。
10312
+ - 服务端 7.106.0:本机检索零读点(只有 `effective` 路由注释提到 `centerWiring.effectiveRevision`);引擎页若读 caps `store` / `centerWiring`,换读 SP-1 / C-1。
10313
+ - 引擎 7.35.0 / 7.36.0、`-p` 首帧来源键:上述名字零命中。
10314
+
10315
+ **验收方**
10316
+
10317
+ - 按 112a′ 逐条改锚(作废 26 条 / 分代 6 条 / 新增 4 条 / 不变);新增 G-D / G-M / G-N / G-S / G-H / G-L / G-W / G-A / G-U / G-T / G-R / G-TF / G-Q / G-SP / G-C / G-LU / G-X / G-IE / G-HP / G-PB / G-MC / G-TD / G-BS / G-TS 各格;标「真机」「端侧验收」的格两代各跑一次、记下服务端与引擎版本。
10318
+
10319
+ ### 112y. 🔴 三端升级必读(固定段式)
10320
+
10321
+ 1. **换钉 `^0.86.0` 之前**:① 型面 BREAKING 三处 —— 入参型删 `approverPosture`(TypeScript 宿主传它编译红;JS 路径构造期抛)、两个运行期名字退出根入口(四端产品源码零具名 import;逐名见 §2z)、`SemaPermissionDenial.deniedBy` 型换成 `GateDeniedByWord`(多 `mode`:只对 SDK 十词穷尽 `switch` 的 TypeScript 端编译红,补一臂;三端今天零读点)—— 🔴 网页端请求键台账删 `approverPosture` 一行、加 `inheritEnv` 一行(从 0.84.1 直升另加 `fileHistory` 一行),正控「interactive 键数」35 改 36,否则对账门 A1 / A2 与正控红(112d);② 对 `EngineNoticeFactsCode`(+6)、`SessionPolicyFailure` / `SessionPolicyTightenOutcome` / `SessionPolicyRemovalOutcome` / `WorkflowResolution`(各 +1)、`BackgroundSourceHealth`(+1)做穷尽 `switch` 的端编译期红 —— 各补一臂;按 `if` 链只认已知几格的端**不会**编译红,但新值会掉进默认格(例如把 `unauthorized` 当成「还在加载」)—— 逐处见 112d;③ `GATE_DENIED_BY_WORDS` 元素型换成 `GateDeniedByWord`(把窄化后的值赋给 SDK 12 `DeniedBy` 的写法遇 `mode` 编译不过);④ peer sdk 地板 `>=12.0.1` 不动 —— sdk 14 的三处型面 BREAKING(`TaskRequest.approverPosture` 删、`Capabilities.taskApproverPosture` 删、顶层 `Capabilities.sql` 搬进 `store.sql`)本包已按结构读覆盖:本版 `.d.ts` 在 sdk 12.0.1 / 13.1.0 / 14.0.0 / 15.0.0 下严格编译都零错误,先升 sdk 14 还是先升本包都不编译红;⑤ 开发依赖引擎换到 `~7.36.0`(构建期,不进运行期依赖;生成物既有表值不变,码册多 `route.tool_call_id_folded` 一码);⑥ 已发导出的可观察变化(不改代码也会看到):`adapt()` 在「0.83.0 之前的原始输出落盘后直接喂回」那一形上不再出抢救正文;`withPrintInitFrame` 放出的首帧多两只 `_sema_` 来源键(同一只对象;宿主放的同名键被改写 / 删掉);`decidePrintInitToolFace` 对表外的回落面来源词按 `wire-vocabulary` 记(0.85.x 原样透传);SQL 姿态读面在 7.106.0 上不再误报「引擎不报、要升级」;车道读数多一位 `isolated` / `isolatedAbsent`;`-p` 结果帧拒绝清单行在新引擎模式拒上多 `deniedBy: "mode"`;503 `fleet.lease_unavailable` 在 `classifyTurnWireError` 判决上多一个 `leaseUnavailable: true`;决断出口失败文字在「续跑折叠体带权限表字段」一形上多补一句;其余逐条见 CHANGELOG 0.86.0 Changed;⑦ 0.85.0 / 0.85.1 / 0.85.2 的必读条目(§109y / §110y / §111y)原样适用。
10322
+ 2. **逐面**:
10323
+ - **缺席 = 老引擎,不是否定**:`gate.disposition.released` 缺席不等于「没经过模式放行」;六条新通告没收到不等于「这件事没发生」;审批卡上的 `ruleStoreUnreadable` 在新引擎上恒缺席 —— 服务端要带上引擎 7.34 并把这些位 / 码投出来,端上才看得见。caps `store` 缺席 = 老引擎没报(不是「不持久」);`centerWiring` 缺席先按同体 `store`(自有键且是普通对象才算新一代)分 `none` / `not_reported`;`isolated` 缺席一律不是 `false`。
10324
+ - **按「谁拒的」词表分支的端**:多了 `mode`(用 `gateDeniedByDetail` 渲;分类词落 `permission-rule`),`plan_mode` 照旧会从老引擎来。
10325
+ - **按码派发口**:五条 user 码请渲(专属行或引擎给的 `message` 通用行),尤其 `permission.rule_store_unavailable` —— 新引擎上它是「这一轮你的规则没生效」的唯一留痕。`route.tool_call_id_folded` 是运维面的码,不上用户面。
10326
+ - **会话规则写口与门前只读路**:两句话单源 —— 会话规则写入被拒那一句(`sessionPolicyTightenNotice` 已自动给出;直调写口的宿主用 `legacyToolNameFailureNoteOf(errorCode)`),凭据没被接受那一句 `READ_CREDENTIAL_NOT_ACCEPTED_NOTICE`。`legacy_tool_name` 结局 `alreadyInRecord: true` 时,下一步是 `removeRefusedSessionRules`(要这一会话一跑的名册),不是重发。
10327
+ - **别再交 `approverPosture`**:入参型上已经没有它;JS 路径交了会在构造期抛。**不要**把它换成 `permissionMode: 'bypassPermissions'` —— 它从来没放行过任何东西,删掉它不改变任何运行被允许做什么。
10328
+ - **`remedy` 是可选的现成一句话**:渲 `message` 的端零改动(引擎已把同一句拼进 `message`);要单独渲「怎么让它跑」的端读 `facts.remedy`,原样渲,键不在就不渲(不写「无法修复」)。
10329
+ - **判配置拒绝用前缀谓词,不用识别表的成员数**:本版识别表多了引擎工具声明门的九码;有端按「恰几员」或按成员逐个分支的,改用 `isConfigRefusalCode`。同一族在同步腿上是 503:🔴 网页端按 5xx 分支前先按码问 `toolDeclarationRefusalFromError`(不是暂时故障);终端零改动(只按 draining 码重试 503)。
10330
+ - **卡 / 拒绝清单 / 钩子与转录按调用 id 配对,别按工具名**:新引擎上同一次别名调用,审批卡、拒绝清单与 PreToolUse 钩子看到的是正名,`tool_use` 块看到的是模型写的别名;执行后钩子 PostToolUse / PostToolUseFailure 在引擎 7.35.x 上是别名、7.36.0 起是正名(PostToolBatch 恒为别名)。端若按卡上的名字去查本地工具表分卡形(写卡 / shell 卡),拿引擎工具名作别名的调用方工具会落通用卡 —— 仍然问人,只少了专用预览(KL-281)。工具调用 id 自引擎 7.36.0 起可能是折叠形(含 `~`),只按串比对、不解析形状。
10331
+ - **`dontAsk` 下少一类卡是引擎的收紧**:钩子提问撞上 ask 规则 / 受保护写时不再出卡、直接按 `mode` 拒;拒绝行照 `gateDeniedByDetail("mode")` 渲,不要当成「钩子失效」去排查。
10332
+ - **存储姿态 / 中心接线 / 租约 / 本机无 OS 沙箱 / 503 那一句**:端要换读本段各口才会出现;「本机无 OS 沙箱」只读 `noOsSandboxOnThisHost`(不在壳里拼 `isolated === false ∧ toolsOnThisHost`);`caller` 按身份,多身份宿主别用读口缓存回答另一个身份;🔴 按「车道视图恰两键」断言的测试会红(112a′ 第 21 条),改锚即可。
10333
+ - **`inheritEnv`**:终端 —— 🔴 只经片段口给值(版本不够不发,老引擎整条 400);每个要整份继承的提交都带;422 换读本包读口(临时读口在请求带 `"all"` 时说错对象);判「这台会不会兑现」读 `projectContext` ∧ 版本 supported,不读 `taskWriteFaceOpen`。网页端 —— 零发送点,只改请求键台账(见 1 ①)。桌面端 / 管理台 —— 零改动。
10334
+ - **权限表超帽坏项 / 键形拒两张表**:终端建议接读口与一句、设置面补充行换锚;决断出口零改动即得。
10335
+ - **强制卡**:零改动即得。
10336
+ - **`-p` 首帧来源**:终端引擎车道零改动即得;自建首帧的三处要带来源时接铸口(约三行,112d)。按「init 帧键集恰等于 CC 形集合」逐键断言的格改锚;缺席的 `_sema_tools_source` 按「不知道来源」读,不当「引擎说的」。
10337
+ - **错误信封旧名**:四端零必改;要在 0.83.0 之前的落盘流上继续出抢救正文的宿主,喂回前自己把错误信封上的 `result` 改名成 `_sema_salvaged_result`(112a-9)。
10338
+ - **各端**:终端 —— `/workflows` 详情对话框接 `unauthorized`(建议);user 码通告的专属行(建议);消费台账那一行改判;自家锚登记按两代读法改;`inheritEnv` 只经片段口、422 换读本包读口(必改,发 `"all"` 之前);其余建议项见 112d。网页端 —— 🔴 请求键台账删一行加两行;🔴 同步提交腿的工具声明族在 5xx 臂之前认领;后台面板补 `unauthorized` 文案、workflow 详情读改读 `resolution()`(建议)。桌面端 —— 冻结期零改动。管理台 —— 零改动(引擎页若读 caps `store` / `centerWiring` 换读本段读口)。
10339
+ 3. **成文改口**:见 112a′(作废 26 条 / 分代 6 条 / 新增 4 条 / 不变);既有段(§23 / §27 / §60 / §85 / §97 / §100 / §107 等)不回改,以本段为准;活段 §0a / §2 / §2b / §2z、§8 E 与 §27e / §27h 的签名块表长已同批改。
10340
+
10341
+ > 发版跑法(本段判据格的服务端夹具腿):两代夹具各跑一遍 —— 新一代段读服务端 7.106.0 包、老一代段读 7.104.0 包;代际不匹配的段标为未跑,不当绿(112c 头注)。
10342
+
10343
+ **包侧缺口:** 引擎 7.34.0 —— ① 门记录权限模式两臂与六条新通告都要服务端带上引擎 7.34 并投出 / 放进用户流才到端(KL-271 / KL-272)· ② 新引擎 plan 写卡的退化卡读不出目标路径(KL-273)· ③ 本人规则店读不出在新引擎上只剩一条通告,端不渲就没人知道(KL-274)· ④ 请求体权限模式仍五词,引擎自己的 `dontAsk` 这一代用不上(KL-275);服务端 7.105.0 —— ⑤ 撤销动词遇名册里挂着的退役名整份回写被拒(KL-265)· ⑥ 要身份的部署上另两只 401 码没有具名态(KL-266)· ⑦ assistant 源的 401 仍落 `unavailable`(KL-267)· ⑧ `status()` 与活动台账读口不另给凭据判别位(KL-268)· ⑨ 同步导入规则面没有具名结局(KL-269)· ⑩ 凭据修好后最多等一个 60 s 退避周期(KL-270);请求键退役与补救话 —— ⑪ 装着的 sdk 12.0.1 `TaskRequest` 型面仍声明 `approverPosture`,绕过本包构造器自拼请求体的宿主类型层不报(KL-279)· ⑫ 协作形审批请求的作者位 `AskRequest.authoredBy` 不读 —— 同一事实今天由服务端投影的 `governanceForced` 与引擎的 `mandated` 承载(KL-276)· ⑬ 接线回执上的权限模式回执到不了端,端按自己发出的词渲(KL-277)· ⑭ 引擎包根新导出的九张权限裁决表不在端复刻(复刻 = 第二个裁决者;KL-278)· ⑮ `remedy` 本包只透传不渲染、不按成因过滤(上游只在一种成因上铸);引擎 7.35.0 / 7.36.0 —— ⑯ 别名调用在两层上的工具名按层原样透传、不互译,按名字判卡形的端会落通用卡;执行后钩子的名字随引擎版本分两代,本包不改名(KL-281)· ⑰ 服务商回声字段 `responseModel` 不套引擎的回声形谓词(KL-282)· ⑱ 识别表只登记引擎工具声明门的九码,不为它们单独铸处置(族读口与一句见 TD-1);错误信封旧名 —— ⑲ 旧落盘流上的错误信封改名由宿主自己做,本包不提供迁移口(与 0.83.0「旧转录不迁移、不改写」同口);服务端 7.106.0 —— ⑳ SQL `none` 句在 7.106.0 上多盖「声明了库、降级到内存」一形,句子被端测试逐字钉、本版不改,落差由存储姿态那一行说(KL-290)· ㉑ `centerWiring.caller` 读账按 baseUrl 不按身份(KL-291)· ㉒ 「新一代」见证只看同体自有键 `store` 且它是普通对象(四只 caps 读器同一只判法),不带或坏形 / 读不出的回体一律按老引擎读(KL-292)· ㉓ `store` / `centerWiring` 一座坏形整条作废(KL-293)· ㉔ 503 这一码在 SDK 的非流式提交上先被自动重试到上限才交给宿主(KL-294)· ㉕ 片段口在版本读不出的那一拍不发,这一次的缺席还会清掉本会话上一条整份继承(KL-295)· ㉖ 两只 `inheritEnv` 拒只认新提交,续跑折叠形由折叠码那一句说(KL-296)· ㉗ 400 那一句条件措辞、422 两件都要时不说是哪一个(KL-297)· ㉘ 权限表那一句只说引擎报的第一只表、第一条(KL-298)· ㉙ 键表读的是引擎回显名(至多 20 条、截短、剥控制字符);带 `settings.` 前缀的键要交已发请求体才归得了层(KL-299)· ㉚ 「这台会不会兑现 `"all"`」没有包内合判口:宿主自己读 `projectContext` ∧ 版本 supported(本包刻意不按能力位决定发不发)· ㉛ 工具声明族那一句不自动并进流式终态行,宿主按终态码自取;`-p` 首帧来源键 —— ㉜ 宿主帧上的同名两键以本包为准,宿主放的会被改写 / 删掉(KL-300)· ㉝ 宿主帧不可写(冻结 / 代理 / 不可扩展而要新增键)或同名键是访问器 ⇒ 两键不铺、首帧照放;写到一半写不进或抛出 ⇒ 两键回到原状;`buildInit` 返回缓存帧会被就地改写(KL-301)· ㉞ 来源两键不区分估计的组装方式、`host-static` 不带原因、不经包装器自建首帧的路径在宿主接铸口之前缺席(KL-302);已收口 —— 引擎退役句与本包专句方向相反那一形随引擎 7.35.0 收口(KL-280;直连 7.34.x 的宿主仍见旧句)。
10344
+
9643
10345
  ## §111 🆕 0.85.2(2026-09-30)自愈重开失败结局带「放弃所依据的那一发」失败请求的外层 wire 码 + 自愈腿读错误对象与成功应答记录上的各位收进保护(patch;根公面运行期导出 1310 不变;公面类型名不变;`ReopenCardVerdict` 不成功臂 +1 可选位 `_sema_errorCode`〔超集键 +1〕;`SelfHealOutcome` 两只失败臂 +1 可选键 `errorCode`;`activeRunSelfHealRow` 不引用 `errorCode`,注入形交接行在投递方式未知时换两句;`atMostOnceFailureClass` / `readSteerDelivery` / `readSteerReceiptStatus` 遇读不出的对象不再抛;零投影臂;peer sdk 地板 `>=12.0.1` 不动)
9644
10346
 
9645
10347
  > **patch**,一件 + 一处同族修复。