@sema-agent/client-core 0.85.0 → 0.85.2

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.
@@ -19,11 +19,11 @@
19
19
 
20
20
  | 项 | 值 | 真源 |
21
21
  |---|---|---|
22
- | 本包 | `@sema-agent/client-core` **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.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.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` |
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
- | 公开导出面 | **1307** 个运行期符号(+ **60 个测试钩,两种拼法**:36 个 `__*ForTests` + 24 个单下划线开头(22 个 `_*ForTest` + `_resetLiveQuestionStore` / `_resetUltracodePreset`) —— 两种都在 `public-export-baseline.json` 的 `testHookNames` 里、各自受棘轮管,**不在** `names` 的 1307 里。运行期 `Object.keys(dist/index.js)` 的全量 = 1307 + 60 = **1367**;只剔双下划线那 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
+ | 公开导出面 | **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` —— **别手抄进别处,以该文件为准** |
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`(**1307** 项;该基线只覆盖**根**入口,子路径入口 `./registry` 的名单在 §86 与 `scripts/run-sdk-registry-transit-test.mjs` A / C 段)。
128
+ > 全集真源 = `scripts/public-export-baseline.json` 的 `names`(**1310** 项;该基线只覆盖**根**入口,子路径入口 `./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,21 +149,21 @@ SDK 核对「本包 import 的每个值级符号仍然导出」「`TaskStats.cos
149
149
  `WorkflowsGateUnknownDenial` 四形**不在**基线里,`src/selfOrchestrationDenial.ts` 对基线贡献
150
150
  **4** 项运行期导出(三个函数 + `SELF_ORCHESTRATION_RETRY_WITHOUT`)。
151
151
 
152
- 1307 项的内部构成(帮助端估读表大小;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):**356** 项是 `SCREAMING_SNAKE` 常量数据表/词汇表
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` 常量数据表/词汇表
153
153
  (矩阵、键集、env 名、锚串)而非可调用物;**7** 项是 PascalCase 运行期值
154
154
  (`ControlRouter` / `ControlSafetyError` / `HitlBridge` / `HitlSafetyError` / `DecideTransportRetryExhaustedError` / `APIError`);
155
- **34** 项是 `*For(sessionKey, …)` 的 per-session 变体(0.84.0 −3:`notePlanReviewAnsweredFor` / `planReviewArmedKeyFor` / `waitForGateArmedFor` 🔧 0.84.0 退出公面;0.72.0 −4:`clearArmedGateFor` / `onGateArmedFor` / `registerArmedGateFromQuestionIdFor` / `notePlanReviewAnsweredIfDecisiveFor` 退出公面)(§6;其中 `engineNamespaceKeyFor` 是命名巧合 —— 参数是 baseUrl 不是 sessionKey,见域 14)。
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 域,逐域计数之和 = 1307)
157
+ ### 2b. 域图(16 域,逐域计数之和 = 1310)
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 主战场) | 226 | `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 主战场) | 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` |
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 | **请求装配(上行唯一构造口)** | 32 | `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 | **请求装配(上行唯一构造口)** | 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` |
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
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` 编排) |
@@ -181,7 +181,7 @@ SDK 核对「本包 import 的每个值级符号仍然导出」「`TaskStats.cos
181
181
 
182
182
  ### 2z. 已退出公面的名字(退役名录)
183
183
 
184
- 冻结段是历史记录,其中提到的名字以本名录为准。冻结段 = 已发版本的 `§NN` 段(标题里带那一版的版本号);那些段不回改,段里可能仍把下表的名字写成可用导出 —— 以本表为准:下表每个名字都已不在根入口,`import` 会扑空。本表只列运行期名字;型面照旧的,在「改用什么」里写明。
184
+ 冻结段是历史记录,其中提到的名字以本名录为准。冻结段 = 已发版本的 `§NN` 段(标题里带那一版的版本号);那些段不回改,段里可能仍把下表的名字写成可用导出 —— 以本表为准:下表每个名字都已不在根入口(标明「复活」的除外:从那一版起回到了根入口),`import` 会扑空。本表只列运行期名字;型面照旧的,在「改用什么」里写明。
185
185
 
186
186
  | 退役 | 名 | 退出版本 | 改用什么 |
187
187
  |---|---|---|---|
@@ -190,7 +190,7 @@ SDK 核对「本包 import 的每个值级符号仍然导出」「`TaskStats.cos
190
190
  | 🔧 退出公面 | `shortTaskLabel` | 0.85.0 | 无公开替代(子代卡的短标签由 `adapt()` 铸在卡上,端读卡上的标签) |
191
191
  | 🔧 退出公面 | 26 个内部件:`DEFAULT_DENY_REASON` `MAX_HOOK_NOTICE_TEXT_CHARS` `STOP_NOT_LANDED` `STOP_NOT_LOCAL` `STOP_PARKED` `STOP_PARK_ARBITER_UNREACHABLE` `STOP_PARK_RESUME_WON` `clearBgTerminalFacts` `denyReasonForWire` `engineWireDebugEnabled` `isAskTool` `listNotifiedRuns` `listWorkflowCompletionCardsEnqueued` `noteBgOwnerAbsence` `notePlanReviewAnsweredFor` `planReviewArmedKeyFor` `projectDiagnosticsFrame` `registerSubagentContentAlias` `resolveOwnerContext` `surfaceEditNotForwarded` `surfaceRuleArmNotSent` `surfaceRuleArmRejected` `unregisterLocalQuestionResponder` `waitForGateArmedFor` `wireCycleSeq` `wireParentId` | 0.84.0 | 无(包内件,`export *` 放大出去的;退出时四端零具名 import,§107) |
192
192
  | 🔧 退出公面 | 23 个常量:`AUTHORITY_ENVELOPE_TAGS` `CANCEL_RELEASE_WAIT_MS` `CATALOG_CACHE_RELATIVE_PATH` `CATALOG_CACHE_STALE_MS` `DEFAULT_CATALOG_TIMEOUT_MS` `DEVICE_CODE_BACKOFF_STEP_MS` `DEVICE_CODE_HTTP_TIMEOUT_MS` `DEVICE_CODE_MAX_LIFETIME_MS` `DEVICE_CODE_MIN_INTERVAL_MS` `HITL_ASK_QUESTION_ID_PREFIX` `HITL_FRAME_CALL_KEY_PREFIX` `LIMITS_ERROR_CODE_PREFIX` `MAX_DENY_REASON_CHARS` `ONE_SHOT_ENV` `PROBE_MAX_TOKENS` `PROBE_PROMPT` `PROMPT_PROFILE_ENV` `TOOL_END_INTERRUPTED_CODES` `WORKFLOW_DEFER_ENV` `WORKFLOW_PARK_BINDING_BROKEN` `WORKFLOW_PARK_NOT_PENDING` `WORKFLOW_PARK_REQUIRES_RUN_STORE` `WORKFLOW_PARK_TRUTH_UNREADABLE` | 0.72.0 | 无(退出时四端零消费;声明留作包内私有,§47) |
193
- | 🔧 退出公面 | 16 个函数:`clearArmedGateFor` `deriveAgentLabel` `notePlanReviewAnsweredIfDecisiveFor` `onGateArmedFor` `parseBackgroundReceipt` `parseFinalVerifyArgv` `providerApiShortName` `registerArmedGateFromQuestionIdFor` `wireCurrentTool` `wireEditedFiles` `wireParentToolCallId` `wireRetiredBy` `wireStartedCount` `wireStoppedBy` `wireToolUses` `wireTranscriptId` | 0.72.0 | 无(退出时四端零消费;声明留作包内私有,§47) |
193
+ | 🔧 退出公面 | 16 个函数(其中 `registerArmedGateFromQuestionIdFor` 于 0.85.1 复活、回到根入口,见 §110 RG-1;其余 15 个仍不在根入口):`clearArmedGateFor` `deriveAgentLabel` `notePlanReviewAnsweredIfDecisiveFor` `onGateArmedFor` `parseBackgroundReceipt` `parseFinalVerifyArgv` `providerApiShortName` `registerArmedGateFromQuestionIdFor`(0.85.1 复活) `wireCurrentTool` `wireEditedFiles` `wireParentToolCallId` `wireRetiredBy` `wireStartedCount` `wireStoppedBy` `wireToolUses` `wireTranscriptId` | 0.72.0 | 无(退出时四端零消费;声明留作包内私有,§47) |
194
194
 
195
195
  ---
196
196
 
@@ -917,7 +917,15 @@ SDK 运行期锚**按构造滞后于 server**,只对 SDK 锚比对的门对「se
917
917
 
918
918
  ```ts
919
919
  type ReopenCardVerdict =
920
- | { reopened: false }
920
+ | {
921
+ reopened: false
922
+ decidedWithoutCard?: true // §14:没呈卡但已成功决断
923
+ pendingRowGone?: true // §16b:读面答了、属主待决行恰 0
924
+ _sema_decisionInFlight?: true // §93:这道门的决断还在路上
925
+ dismissedByUser?: true // §104:用户关卡 × 自动触发
926
+ _sema_noPresentationSurface?: true // §110:这个会话没有接能显示卡的界面
927
+ _sema_errorCode?: string // §111:放弃所依据的那一发失败请求的外层 wire 码
928
+ }
921
929
  | { reopened: true; firstSight: boolean; presented?: boolean }
922
930
  ```
923
931
 
@@ -1333,12 +1341,12 @@ HITL 面有 `hitlHostSurfaceFor` —— 见 §5a 的 (a) 表;队列口没有,登
1333
1341
  | 审批卡口 | `installApprovalCardPortFor` · `approvalCardPortFor` · `hasApprovalCardPortFor` · `approvalCardPortMissesFor` | `src/hitl/toolApprovalWire.ts` |
1334
1342
  | HITL 宿主面 | `installHitlHostSurfaceFor` · `hitlHostSurfaceFor` · `hitlHostSurfaceMissesFor` | `src/hitl/hitlHostSurface.ts` |
1335
1343
  | 问答 overlay | `publishQuestionFrameFor` · `hasQuestionOverlayFor` · `onQuestionFrameFor` | `src/liveQuestionStore.ts` |
1336
- | 呈现台账(决断卡首见/复见) | `registerArmedGateFor` · `wasGateArmedFor`(`clearArmedGateFor` / `registerArmedGateFromQuestionIdFor` 🔧 0.72.0 退出公面,包内私有) | `src/hitl/armedGateRegistry.ts` |
1344
+ | 呈现台账(决断卡首见/复见) | `registerArmedGateFor` · `wasGateArmedFor` · `registerArmedGateFromQuestionIdFor`(0.85.1 复活:多会话宿主在自己的会话键上登记呈现回执;§110)(`clearArmedGateFor` 🔧 0.72.0 退出公面,包内私有) | `src/hitl/armedGateRegistry.ts` |
1337
1345
  | wire 目标 | `installEngineWireTargetFor` · `engineWireTargetFor` | `src/engineWireTarget.ts` |
1338
1346
  | fleet 台账 | `isFleetSessionScopedFor` · `readEngineActiveBgTasksFor` · `clearAllRetainedFleetRowsFor` · 🆕 `ledger.issueStream()` / `ledger.issueSnapshot()`(**keyed 开流参数 + 帧入口的唯一正身**,§6d) | `src/fleet/fleetLedger.ts` |
1339
1347
  | fleet 面板投影 | `projectFleetAgentRowsFor` · `resetFleetAgentPanelProjectionFor` · `fleetAgentProjectionSizeFor` | `src/fleetAgentPanelProjection.ts` |
1340
1348
  | 归属判据 | `pendingRowIsOwnedByThisSession({… sessionKey})` | `src/hitl/parkOwnership.ts` |
1341
- | plan 重开 | `reopenPlanReviewCard(taskId, { sessionKey })`(全链 `*For` 路由:overlay/帧/台账) | `src/hitl/planReviewWire.ts` |
1349
+ | plan 重开 | `reopenPlanReviewCard(taskId, { sessionKey })`(全链 `*For` 路由:overlay/帧/台账)· 出卡前提:宿主已为这个会话键装 `onQuestionFrameFor(sessionKey, handler)`(没有订阅者 ⇒ `{ reopened: false, _sema_noPresentationSurface: true }`)· 回执形在这个会话键上用 `registerArmedGateFromQuestionIdFor(sessionKey, questionId)` 登记呈现(0.85.1,§110) | `src/hitl/planReviewWire.ts` |
1342
1350
 
1343
1351
  ### 6c. `SessionSlot.keys()` 的读法陷阱
1344
1352
 
@@ -1710,6 +1718,7 @@ reason 里写明「枚举器盲区形」。已知两形:
1710
1718
  - [ ] durable 腿:**按意图**选动词 —— 否掉这一道门用 **deny**(run 继续),终结整条 run 用 **`runs.cancel`**(server [868] 起对 suspended/needs_review 就地取消;409 只剩 CAS race)。⚠️ 0.36.0 修:原行写的「取消 suspended 必须用 deny、绝不 cancel」已被 SDK 7.1.0 标 stale,详见 §4 「cancel vs deny」行
1711
1719
  - [ ] `HitlSafetyError` 按 **`.code` 结构化判型**,`instanceof` 只作加强(跨 realm / 双实例)
1712
1720
  - [ ] `ReopenCardVerdict.presented`:要用这个位就自己在呈现层实现回执;不实现就**缺席**(缺席不降级),**别填 `false` 当占位**
1721
+ - [ ] `ReopenCardVerdict._sema_errorCode`(0.85.2,可选):自带重开口因为一发请求失败而交回 `{ reopened: false }` 时,按 §111 111a-1 铸那一发的外层 wire 码(读法 `effectiveWireErrorCode`);因判定拒开(在飞 / 用户关卡 / 无界面 / 窗尽没行)与调用方已中止**不铸**
1713
1722
 
1714
1723
  **F. 多会话宿主(desktop)额外项**
1715
1724
  - [ ] 每会话一个真 `sessionKey`,**不拿 `DEFAULT_SESSION_KEY` 当会话 id**
@@ -1717,6 +1726,7 @@ reason 里写明「枚举器盲区形」。已知两形:
1717
1726
  - [ ] `pendingRowIsOwnedByThisSession` 传 `sessionKey` **且自注入 `isOwnRun`**(非默认键下缺省腿会整条跳过,fail-closed;不自注入则受 P-13 的进程级归属影响)
1718
1727
  - [ ] ⚠️ **审批卡口今天装在 `DEFAULT_SESSION_KEY` 上**(P-10:三个决断入口硬读默认键,按会话键装 = 100% miss)
1719
1728
  - [ ] `reopenPlanReviewCard` 传 `sessionKey`,**绝不与 `mintFreshQuestionId:false` 组合**(P-11 / P-12)
1729
+ - [ ] 用 `reopenPlanReviewCard` 出卡之前,先为这个会话键装 `onQuestionFrameFor(sessionKey, handler)`,handler 把帧交给端的问题卡界面(没装 ⇒ 每次拒开,判决带 `_sema_noPresentationSurface`);带 `presentationReceiptMs` 时,handler 在卡进界面那一刻调 `registerArmedGateFromQuestionIdFor(sessionKey, questionId)` —— 默认会话口 `registerArmedGateFromQuestionId` 只登默认会话(0.85.1,§110)
1720
1730
  - [ ] 读完 §6e / **P-10 ~ P-14** 五条局限**再接** plan review 与卡口
1721
1731
 
1722
1732
  **G. 单实例(打包)**
@@ -9630,6 +9640,317 @@ installCoreValuePorts({ resolveAutonomousLoopPrompt, loosenReasons, combinePolic
9630
9640
 
9631
9641
  **包侧缺口:** ① 出包面注释存量(别仓名 / 票号 / 帖号 / 过程词)与卫生门判据太窄(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)。
9632
9642
 
9643
+ ## §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
+
9645
+ > **patch**,一件 + 一处同族修复。
9646
+ > **CC-260**(应终端的请托;本版 **consumed**):自愈重开没能把卡放回来时,两只失败结局只说「重开不了」和几个判定位(`decisionInFlight` / `pendingRowGone` / `dismissedByUser` / `noPresentationSurface`),说不出「是不是一发请求失败了、引擎答的是什么」—— 引擎在排空(`503 draining`)时,终端只能给一句通用的「could not reopen」。修前码丢在三处:宿主重开口抛错时本包按「没能重开」收口、不看抛出物;宿主自带重开口吞掉请求失败后只交回 `{ reopened: false }`,没有位可递码;待决项已证不在时本包自己读 run 状态 / 复证待决行失败,只收口不留码。本版给两只失败结局一个 `errorCode`,给重开判决一个同源的 `_sema_errorCode`。
9647
+ > **口径**:码是这一次重开**放弃所依据的那一发**失败请求的外层 wire 码(111a-1)—— 不是「途中出过的任何一个码」。
9648
+ > **同族修复**(EC-6):0.85.1 把宿主重开判决各位收进了保护;自愈腿读**错误对象**(`runs.get` / `runs.steer` / `runs.cancel` 的抛出物)各位、与读**成功应答记录**(`runs.get` 答回的 run 记录,kind 与状态都缺席时那一次补读)上 `status` 的两半还在保护外 —— 某一位是会抛的取值器、或整个是读就抛的 Proxy 时,`attemptActiveRunSelfHeal` 直接 reject;steer 回执的两只公面读口(`readSteerDelivery` / `readSteerReceiptStatus`)遇读不出的回执直接抛。本版一并收进保护。
9649
+ > **注入形交接行**(EC-7):投递方式缺席 / 读不出 / 表外词时,注入形修前与 `applied` 同句(说消息已交给正在进行的那一轮,续听已挂时还说「不用动手」);本版改说投递方式未知(111a-2)。
9650
+ > **到货点名**:终端 —— 零改动即得(本包三发与抛错两条来路;EC-6);要让自带的 ask 重开口也递码,按 111d 在那一处铸 `_sema_errorCode`(非必改)。网页端 —— 零改动即得(待决项已证不在时本包读 run 状态失败那一形;EC-6);自带重开口铸不铸按 111d。管理台 —— EC-6 零改动即得,其余零读点。桌面端 —— 零读点,零改动。
9651
+
9652
+ ### 111a. 处置表
9653
+
9654
+ 各端列的词同 §110a(`pending` / `n/a` / 「零改动即得」/「回归约束」/ `—`)。
9655
+
9656
+ | # | 面 | 包处置 | 旧 → 新 | 终端 | 网页端 | 桌面端 | 管理台 | 验收方 | 本节 |
9657
+ |---|---|---|---|---|---|---|---|---|---|
9658
+ | EC-1 | `SelfHealOutcome`:`plan-review-reopen-failed` / `ask-reopen-failed` 的 `errorCode?: string` | added(终端请托 consumed) | 无 → 放弃所依据的那一发失败请求的外层 wire 码,present-iff(111a-1) | 零改动即得(本包三发与抛错两条来路;要说成因时读它,见 111d) | 零改动即得(同左;自渲行时读它) | n/a | n/a(两只重开口都不装,走不到有码的形) | pending(G-EC1–G-EC6) | 111a-1 · G-EC1–G-EC6 |
9659
+ | EC-2 | `ReopenCardVerdict`(`reopened: false` 臂)`_sema_errorCode?: string` | added(超集键 +1) | 无 → 宿主自带重开口可选铸(同一口径);宿主重开口抛错时本包在保护内铸 | pending(非必改:ask 重开口按 111d 铸) | pending(非必改:同左,见 111d) | n/a | n/a | pending(G-EC3) | 111a-1 · 111d |
9660
+ | EC-3 | steer `queued` 结局(`running-steered`)的 `reopened` | changed(抛错形多一键) | 宿主重开口抛带码的错 ⇒ `{ reopened: false }` → `{ reopened: false, _sema_errorCode: <码> }`;其余形逐字节同 0.85.1 | 零改动即得 | 零改动即得 | n/a | n/a | pending(按「恰 `{ reopened: false }`」断言这一形的格改锚,111a′ ②) | 111a′ ② · G-EC2 |
9661
+ | EC-4 | `activeRunSelfHealRow` | 不变 | 每一句与不带码时逐字节同 | 回归约束 | 回归约束 | — | 回归约束 | 回归约束 | G-EC6 |
9662
+ | EC-5 | `reopenPlanReviewCard` | 不变 | 重开这一步零 wire 请求,不铸 `_sema_errorCode`;判决与 0.85.1 逐字节同 | 回归约束 | 回归约束 | — | — | 回归约束 | G-EC4 |
9663
+ | EC-7 | `activeRunSelfHealRow` 注入形:`running-steered` 投递方式缺席 / 读不出 / 表外词 | changed(换两句) | 与 `applied` 同句(「was passed to the reply already in progress …」,续听已挂时「nothing for you to do now」)→ 投递方式未知两句(111a-2);`applied` 两句、用户形、处置档、续听意图不变 | 零改动即得(测试格按旧句断言这一形的改锚,111a′ ④) | 零改动即得(不用注入形时无读点) | n/a | n/a | pending(G-EC9) | 111a-2 · G-EC9 |
9664
+ | EC-6 | `attemptActiveRunSelfHeal` 读错误对象(`runs.get` / `runs.steer` / `runs.cancel` 的抛出物)与成功应答记录(`runs.get` 答回的 run 记录)上的各位;公面 `atMostOnceFailureClass` / `readSteerDelivery` / `readSteerReceiptStatus` | fixed | 错误对象 `status` / `message` 读不出(会抛的取值器 / Proxy `get` / `has` 陷阱抛)、或 kind 与状态都缺席时补读答回的记录上 `status` 读不出 ⇒ 修前 reject(0.85.1 实测;公面分类口直接抛)→ 按缺席处置、结局照常落定:错误对象读不出 `status` ⇒ 不当 404、分类答 `'unknown'`;读不出 `message` ⇒ 细节句 `the engine gave no detail`;记录读不出 `status` ⇒ `state-unknown`「the engine reported no status for that run」(陈旧 park 复核与存活对账同按读不到状态,取值器抛出 404 形错误也不再判幽灵 run);steer 回执读口读不出 ⇒ 答 `null`(修前抛;自愈 steer 腿随之落 `running-steered`、投递方式缺席,修前落 `running-steer-failed`);普通错误对象与普通记录逐字节同 0.85.1 | 零改动即得 | 零改动即得 | n/a | 零改动即得 | pending(G-EC7) | 111b · G-EC7 |
9665
+
9666
+ #### 111a-1 · 口径:什么时候带码、带哪个码
9667
+
9668
+ **码的读法**:这一发失败请求(抛出物)的外层 wire 码 = 本包按码分诊处处同一只读法 —— 折叠码 `resume_blocked_by_policy` 在时答 `blockedBy` 那个原码(顶层优先,`extra` 兜底;`blockedBy` 缺席答折叠码本身),否则答抛出物上的 `errorCode`;非空串才算。服务端没给具体码时 SDK 按状态派生的粗码(§109 起,例 `request.rejected`)照样是码。
9669
+
9670
+ **带码 = 这一次重开因为一发请求失败而放弃**,带的是那一发的码:
9671
+
9672
+ | 来路 | 哪一发 | 结局 |
9673
+ |---|---|---|
9674
+ | 宿主重开口(`reopenPlanReview` / `reopenAskPark`)抛错 / reject | 抛出物本身(调用方已中止 ⇒ 不带:放弃的依据是中止) | 所在那一臂的失败结局带码;判决带 `_sema_errorCode`(steer `queued` 时结局的 `reopened` 就是这一份) |
9675
+ | 宿主重开口交回的判决带 `_sema_errorCode` | 宿主自己那条链上放弃所依据的那一发(宿主按本口径铸,111d) | 所在那一臂的失败结局带码(判定位在场时丢,见下) |
9676
+ | 待决项已证不在(判决带 `pendingRowGone`)之后本包自己的三发 | 呈卡前读 run 状态 / 呈卡后读 run 状态 / 开枪前再问一次属主待决行数(`listOwnedPendingApprovals`),哪一发失败即收口于哪一发(只认请求本身失败:请求答了、答回的记录上 `status` 读不出按读不到状态,不铸码) | `ask-reopen-failed` 带码;呈卡前那一发时同带 `pendingRowGone`(待决项已证不在、紧接着读 run 状态失败 —— 本包自己的来路上 `pendingRowGone` 与码同在只有这一形;宿主判决自带两位时计划臂原样透传,见下);后两发时不带 `pendingRowGone`(与 0.85.1 同) |
9677
+
9678
+ **放弃所依据的那一发**:之后的请求若**改变了放弃的依据**(轮询终于答上、待决行出现、run 状态读到了而按它另作判定)⇒ 依据换了,不再带先前那一发的码;**只作确认的读不改依据** —— 例如决断 POST 失败之后回读队列确认待决行仍在,放弃所依据的仍是那一发 POST,照带它的码(宿主铸法见 111d)。
9679
+
9680
+ **不带码**:
9681
+
9682
+ - 之后的请求改变了放弃的依据:宿主判决上的码只在本包没有再发请求时沿用 —— 待决项已证不在之后本包读 run 状态、再按判定收口(读到了但没有呈卡口 / 表外状态词 / 读回奇形记录;或没有 `runs.get` 可读)⇒ 放弃的依据换成了本包那一次读与判定 ⇒ 不带(宿主判决上的码不沿用);读到 run 转去等计划复核 ⇒ 转计划臂,只看计划重开口的判决(ask 重开口的码不跨口)。
9683
+ - 放弃所依据的那一发没有 wire 码:断连、截止、调用方中止、客户端自己的错、抛非对象 ⇒ 不带,也**不回溯**更早的码(那是一次更旧的读数,不是这一次放弃的成因)。开枪前复证读口窗尽(本包的有界等待到点)同样不带;宿主重开口抛错时调用方已中止 ⇒ 同样不带(放弃的依据是中止)。
9684
+ - 因判定拒开:按判决本身答的拒开(判决带 `_sema_decisionInFlight` / `dismissedByUser` / `_sema_noPresentationSurface`),两只失败结局**恒不带**(本包保证,宿主判决上两样都给了也丢码;ask 臂认用户关卡位来丢码,结局不加这一位)。射程:ask 判决带 `pendingRowGone` 且不在飞时改道陈旧 park 那条路(上表第 3 行),本包自己那一发读 run 状态 / 复证失败照口径带码 —— 放弃所依据的那一发是它,判决上的其余判定位不拦。那几形的成因是判定:答案在路上、卡是用户关的、会话没有接界面。保证只在两只失败结局上:steer `queued` 结局的 `reopened` 是宿主判决的原样拷贝,宿主两样都给了就两样都在。
9685
+ - 其余判定形:回执窗没落定、待决行没出生窗就尽了(宿主读面答了但没有行)、`presented: false` 降级、呈卡口抛错、复证答出非 0(行回来了)、404(结局是 `ask-run-not-found`,不是失败臂)。
9686
+ - 🔴 由请求失败推出的判定形:包内计划复核重开口自动触发、撞上用户关卡记号时要读两次门实例(宿主读口 `readGateInstanceKeys`:用户关卡那一刻起读的那一次、此刻那一次),任一次失败 ⇒ 证不出是新门 ⇒ 答用户关卡(`dismissedByUser`),**不带码**(成因是用户关卡记号,读失败只是没证出例外;0.83.4 起如此;KL-287)。关卡那一刻那一次失败时,此刻那一次读根本不发。
9687
+
9688
+ **出句**:`activeRunSelfHealRow` 不引用 `errorCode`,每一句与不带码时逐字节同。端要把成因说给用户时自己读这一键;措辞上只说「引擎答了 X」这一件事,不要替它补「因此卡永远回不来」之类的断言 —— 码说的是那一发请求,不是那道门的去向。
9689
+
9690
+ #### 111a-2 · 注入形交接行:投递方式未知(EC-7;逐字,`<id>` 为任务号)
9691
+
9692
+ | 条件 | 整句 |
9693
+ |---|---|
9694
+ | `running-steered`,投递方式缺席 / 读不出 / 表外词,宿主未声明续听 | `A follow-up message sema sent on its own (not one you typed) was accepted for the reply already in progress (id <id>), but how it will be delivered was not reported, so sema cannot tell whether that reply will pick it up — watch that reply before deciding whether anything needs to be sent again.` |
9695
+ | 同上,宿主声明续听(`{ following: true }`) | `A follow-up message sema sent on its own (not one you typed) was accepted for the reply already in progress (id <id>), but how it will be delivered was not reported, so sema cannot tell whether that reply will pick it up. sema is following that reply and will show whatever it asks for next; check what it does before deciding whether anything needs to be sent again.` |
9696
+
9697
+ 措辞纪律:只说「收下了、没说怎样送达、说不准会不会被用上」—— 不说「交给了正在进行的那一轮」(没证出),两形都不说「不用动手」(续听意图仍是 `tail`,但那只决定谁去听);与用户形同一件事(用户形那一句本就在,不变)。`applied` 两句不变。
9698
+
9699
+ ### 111a′. 成文改口
9700
+
9701
+ - ① **改读**(§110b 不回改,以本条为准):§110b「列不出宿主判决的键 ⇒ 只按本包读的八位读」与「本包读的八位除外:它们照读」—— 本版起是**九位**,多 `_sema_errorCode`;读不出按缺席的纪律对它同样成立(取值器抛 ⇒ 结局与判决只缺这一位时逐字节同)。
9702
+ - ② **改读**(EC-3):按「宿主重开口抛错 ⇒ 结局恰 `{ kind, taskId, decidePath }`」或「steer `queued` 结局的 `reopened` 恰 `{ reopened: false }`」逐键断言的格:抛出物带 wire 码时各多一键(`errorCode` / `_sema_errorCode`);抛普通 `Error` 的格照旧成立。
9703
+ - ③ **补读**:§110a-2「不带这一位的拒开形」与 §110b 对 `_sema_noPresentationSurface` 的缺席语义照旧;本版的 `errorCode` 与它在两只失败结局上互斥(判定形丢码),不改变那一位的任何一形;steer `queued` 结局的 `reopened` 判决原样透传宿主给的位,不保证互斥。
9704
+ - ④ **改读**(EC-7;§100 不回改,以本条为准):§100 100a-3 第 1 / 2 句的条件列「`delivery` 为 `applied` / 读不出 / 表外词」自本版起只剩 `applied`;读不出 / 缺席 / 表外词改说 111a-2 两句。按旧句断言这一子形的格改锚。
9705
+ - 新增 G-EC1–G-EC9(111c)。
9706
+
9707
+ ### 111b. 缺席语义(逐键)
9708
+
9709
+ - `errorCode`(结局):在场 = 这一次重开放弃所依据的那一发失败请求带着这个外层 wire 码(非空串)。**缺席不等于「没有请求失败」**:放弃所依据的那一发没有 wire 码、之后的请求改变了放弃的依据、调用方已中止、放弃是判定、或宿主自带重开口吞掉了失败而没铸位,都缺席。
9710
+ - 结局层:`errorCode` 与 `decisionInFlight` / `dismissedByUser` / `noPresentationSurface` 不同在(本包保证;ask 判决带 `pendingRowGone` 而改道陈旧 park 的那几形,结局本就不带这几位)。与 `pendingRowGone` 同在:本包自己的来路只有 111a-1 表第 3 行那一形;宿主判决自带 `pendingRowGone` 与 `_sema_errorCode`(不合口径)时,计划臂原样透传两位。
9711
+ - `_sema_errorCode`(判决):只在 `reopened` 严格 `false` 上读;非串 / 空串 / 数组 / `null` 按缺席;读不出(会抛的取值器 / Proxy)按缺席。宿主不铸 ⇒ 缺席(老宿主行为不变)。
9712
+ - 本包在判决上铸这一位只有一处:宿主重开口抛错时。包内计划复核重开口不铸(重开这一步零 wire 请求)。
9713
+ - `running-steered` 结局没有 `errorCode` 键;它的 `reopened` 判决上可以有 `_sema_errorCode`(同一个判决位;是宿主判决的原样拷贝,宿主铸了不合口径的组合照样在)。
9714
+ - 错误对象上读不出的位(EC-6)按缺席:读不出 `status` = 没有状态码(不是 404、不是 4xx);读不出 `message` = 没给细节;读不出 `errorCode` / `blockedBy` = 没有码(按上面的码读法)。成功应答记录上读不出 `status` = 读不到状态(与记录没带 `status` 同处置;补读、陈旧 park 两次复核、存活对账同判 —— 取值器抛出什么错都不当请求失败:不铸码、不判幽灵);记录读到 `then` 就抛(`await` 那一步就失败)按读口失败处置。steer 回执上读不出的位 = 缺那一位(`null`)。
9715
+
9716
+ ### 111c. 黑盒判据骨架
9717
+
9718
+ > 🔴 标「本版证明」的格在 **0.85.1** 产物上必须 FAIL、在 0.85.2 上必须 PASS;标「回归约束」的格两版都 PASS。请记下两次跑的产物标识(版本 + tarball shasum)。以下 `S_plan = { activeTaskId: 'T', activeTaskStatus: 'needs_review', pendingGate: { kind: 'plan_review' } }`,`S_ask = { activeTaskId: 'T', activeTaskStatus: 'suspended', pendingGate: { kind: 'human' } }`;`E(s, c, x)` = `Object.assign(new Error('x'), { status: s, errorCode: c }, x)`。
9719
+
9720
+ - **G-EC1**(本版证明,纯包层):`attemptActiveRunSelfHeal(S_plan, undefined, { reopenPlanReview: () => { throw E(503, 'draining') } })` ⇒ 恰 `{ kind: 'plan-review-reopen-failed', taskId: 'T', decidePath: null, errorCode: 'draining' }`;`S_ask` + `reopenAskPark: async () => { throw E(409, 'resume_blocked_by_policy', { blockedBy: 'scenario.not_allowed' }) }` ⇒ `ask-reopen-failed` 且 `errorCode === 'scenario.not_allowed'`;`blockedBy` 只放在 `extra` 里同答;不带 `blockedBy` ⇒ `'resume_blocked_by_policy'`。0.85.1 上无键 ⇒ FAIL。
9721
+ - **G-EC2**(本版证明,纯包层):信号 `{ activeTaskId: 'T', activeTaskStatus: 'running', pendingGate: null }`,`runs = { steer: async () => ({ delivery: 'queued', status: 'needs_review' }), get: async () => ({ status: 'running' }), cancel: async () => ({}) }`,deps `{ offerRunningChoice: async () => 'steer', deniedMessage: 'x', reopenPlanReview: () => { throw E(503, 'draining') } }` ⇒ 结局 `running-steered`,`reopened` 的 JSON 恰 `{"reopened":false,"_sema_errorCode":"draining"}`,结局上没有 `errorCode` 键;`activeRunSelfHealRow` 用户形 / 注入形与 `reopened: { reopened: false }` 时逐字同。
9722
+ - **G-EC3**(纯包层;第一格本版证明,其余格两版同答):`reopenPlanReview: () => ({ reopened: false, _sema_errorCode: 'draining' })` ⇒ `errorCode === 'draining'`(`reopenAskPark` 同形 ⇒ ask 臂同答);`_sema_errorCode` 换成 `123` / `true` / `{}` / `null` / `''` / `['x']` ⇒ 无键;判决 `{ reopened: true, firstSight: true, presented: false, _sema_errorCode: 'x' }`(降级成失败)/ `{ _sema_errorCode: 'x' }`(`reopened` 缺席)⇒ 无键;判决同时带 `_sema_decisionInFlight: true` / `dismissedByUser: true` / `_sema_noPresentationSurface: true` 之一(不带 `pendingRowGone`)⇒ 结局带那个判定位、**无** `errorCode`;ask 臂同判(ask 臂认 `_sema_decisionInFlight` / `_sema_noPresentationSurface`,另认 `dismissedByUser` 来丢码)。射程:ask 判决带 `pendingRowGone` 且不在飞时改道陈旧 park,那几形按 G-EC5 判(本包那一发失败照带码)。
9723
+ - **G-EC4**(回归约束,纯包层):`reopenPlanReview: (tid, o) => reopenPlanReviewCard(tid, { ...o, deliverDecision: () => {}, readGateInstanceKeys, presentationReceiptMs: 300 })`(包内计划复核重开口;`o` 是本包按提交出身传的 `{ trigger }`)。① 会话没有问题帧订阅者 ⇒ 结局 `noPresentationSurface: true`、无 `errorCode`。② `onQuestionFrame(f => { if (f.type === 'question') registerArmedGateFromQuestionId(f.questionId) })` 订阅;`readGateInstanceKeys` 第一次答 `new Set(['g1'])`、之后 reject `E(503, 'draining')`;先以 `submissionOrigin: 'user'` 撞一次(卡上屏),对那张卡 `respondToQuestion(id, { answers: [] })` 关掉,再以 `submissionOrigin: 'injected'` 撞 ⇒ 结局 `dismissedByUser: true`、无 `errorCode`,读口被调恰两次(关卡那一刻 + 此刻;KL-287 的判据格)。
9724
+ - **G-EC5**(本版证明 + 回归约束,纯包层):`S_ask` + `runs = { get, cancel: async () => ({}) }`(`get` 按下列各格给)+ `reopenAskPark: async () => ({ reopened: false, pendingRowGone: true })` + `offerStaleParkChoice: async () => 'cancel'` + `listOwnedPendingApprovals: async () => 0`:
9725
+ ① `runs.get` reject `E(503, 'draining')` ⇒ 恰 `{ kind: 'ask-reopen-failed', taskId: 'T', decidePath: null, pendingRowGone: true, errorCode: 'draining' }`(本版证明);
9726
+ ② 判决另带 `_sema_errorCode: 'early'`、`runs.get` reject `E(502, 'upstream.bad_gateway')` ⇒ `errorCode === 'upstream.bad_gateway'`;`runs.get` reject 一个断连错误(`Object.assign(new Error('fetch failed'), { cause: new Error('ECONNRESET') })`)⇒ 带 `pendingRowGone`、无 `errorCode`(不回溯 `'early'`);
9727
+ ③ `runs.get` 第一次答 `{ status: 'suspended' }`、第二次 reject `E(503, 'draining')` ⇒ 恰 `{ kind: 'ask-reopen-failed', taskId: 'T', decidePath: null, errorCode: 'draining' }`,`runs.cancel` 零次;
9728
+ ④ `runs.get` 恒答 `{ status: 'suspended' }`、`listOwnedPendingApprovals` reject `E(503, 'approval.store_unavailable')` ⇒ 恰 `{ …, errorCode: 'approval.store_unavailable' }`(无 `pendingRowGone`),`runs.cancel` 零次;
9729
+ ⑤(回归约束)判决带 `_sema_errorCode: 'early'`,`runs.get` 答 `{ status: 'suspended' }` 而不给 `offerStaleParkChoice` ⇒ 带 `pendingRowGone`、无 `errorCode`;`listOwnedPendingApprovals` 答 `2` ⇒ 无 `errorCode`;`runs.get` reject `E(404, 'not_found.run')` ⇒ 恰 `{ kind: 'ask-run-not-found', taskId: 'T' }`。
9730
+ - **G-EC6**(回归约束,纯包层):带码结局 `o` 与去掉 `errorCode` 的同一结局,`activeRunSelfHealRow(o, S)` / `activeRunSelfHealRow(o, S, undefined, 'injected')` / 带 `keepSessionWayOut` 的一形与 `selfHealSubmissionDisposition(o)` 逐字同(两臂各一次)。
9731
+ - **G-EC7**(本版证明,纯包层;EC-6):`X = Object.defineProperty(new Error('x'), 'status', { get() { throw new Error('g') }, enumerable: true })`,`P = new Proxy(new Error('x'), { get() { throw new Error('g') } })`。① `S_ask` + `runs = { get: async () => { throw X }, cancel: async () => ({}) }` + `reopenAskPark: async () => ({ reopened: false, pendingRowGone: true })` ⇒ 落定为 `ask-reopen-failed` 且 `pendingRowGone: true`;② 信号 `{ activeTaskId: 'T', activeTaskStatus: null, pendingGate: null }` + `runs = { get: async () => { throw P } }` ⇒ 落定为 `state-unknown`,`detail === 'the engine gave no detail'`;③ 信号 `{ activeTaskId: 'T', activeTaskStatus: 'running', pendingGate: null }` + `runs = { get: async () => ({ status: 'running' }), steer: async () => { throw X }, cancel: async () => ({}) }` + `{ offerRunningChoice: async () => 'steer', deniedMessage: 'x' }` ⇒ 落定为 `running-steer-failed`,`delivery: 'unknown'`;④ `atMostOnceFailureClass(X) === 'unknown'`、`atMostOnceFailureClass(P) === 'unknown'`(不抛);⑤ 信号 `{ activeTaskId: 'T', activeTaskStatus: null, pendingGate: null }` + `runs = { get: async () => Object.defineProperty({}, 'status', { get() { throw new Error('g') }, enumerable: true }) }`(应答成功、记录上 `status` 读不出)⇒ 恰 `{ kind: 'state-unknown', taskId: 'T', detail: 'the engine reported no status for that run' }`。⑥ `R = Object.defineProperty(Object.defineProperty({}, 'delivery', { get() { throw new Error('g') }, enumerable: true }), 'status', { get() { throw new Error('g') }, enumerable: true })`:`readSteerDelivery(R) === null`、`readSteerReceiptStatus(R) === null`(不抛;`new Proxy({ delivery: 'applied' }, { has() { throw new Error('g') } })` 同答);③ 的布置改为 `steer: async () => R` ⇒ 恰 `{ kind: 'running-steered', taskId: 'T', delivery: null, status: null, reopened: null }`,注入形(`{ following: false }` / `{ following: true }`)逐字等于 111a-2 两句(不含 `nothing for you to do`),用户形含 `the engine did not say how it will be delivered`;⑦ `S_ask` + `runs = { get: async () => Object.defineProperty({}, 'status', { get() { throw E(404, 'not_found.run') }, enumerable: true }), cancel: async () => ({}) }` + `reopenAskPark: async () => ({ reopened: false, pendingRowGone: true })` ⇒ 恰 `{ kind: 'ask-reopen-failed', taskId: 'T', decidePath: null, pendingRowGone: true }`(请求答了,不判幽灵)。0.85.1 上 ①②③⑤ reject、④⑥ 抛(⑥ 的自愈腿落 `running-steer-failed`;回执取值器抛带 422 形状态码的对象时还是 `delivery: 'rejected'`、用户形说「Your message was NOT sent; send it again」)、⑦ 落 `ask-run-not-found` ⇒ FAIL。
9732
+ - **G-EC8**(回归约束,两版同答;纯包层):① deps 带 `signal: ctl.signal`,`reopenPlanReview: () => { ctl.abort(); throw E(503, 'draining') }` ⇒ 恰 `{ kind: 'plan-review-reopen-failed', taskId: 'T', decidePath: null }`;`reopenAskPark` 同形 ⇒ 恰 `{ kind: 'ask-reopen-failed', taskId: 'T', decidePath: null }`;G-EC2 的 steer `queued` 布置同形 ⇒ `reopened` 恰 `{ reopened: false }`。② `reopenAskPark: async () => ({ reopened: false, dismissedByUser: true, _sema_errorCode: 'draining' })` ⇒ 恰 `{ kind: 'ask-reopen-failed', taskId: 'T', decidePath: null }`。③ G-EC5 的布置,`runs.get` 答回 `Object.defineProperty({}, 'status', { get() { throw E(503, 'draining') }, enumerable: true })` ⇒ 恰 `{ kind: 'ask-reopen-failed', taskId: 'T', decidePath: null, pendingRowGone: true }`;第一次答 `{ status: 'suspended' }`、第二次答那只记录 ⇒ 恰 `{ kind: 'ask-reopen-failed', taskId: 'T', decidePath: null }`,`runs.cancel` 零次。④ G-EC4 ② 的布置,`readGateInstanceKeys` 第一次(用户关卡那一刻)就 reject `E(503, 'draining')` ⇒ 自动触发那一次结局 `dismissedByUser: true`、无 `errorCode`,读口只被调一次(此刻那一次读不发)。
9733
+ - **G-EC9**(本版证明,纯包层;EC-7):结局 `{ kind: 'running-steered', taskId: 'T', delivery: D, status: 'running', reopened: null }`,`D` 取 `null` / `'brand_new_delivery'` / `''` ⇒ `activeRunSelfHealRow(结局, null, undefined, 'injected', { following: false })` 与 `{ following: true }` 分别逐字等于 111a-2 两句,都不含 `nothing for you to do`;`D = 'applied'` ⇒ 两句与 0.85.1 逐字同(续听已挂那一句仍含 `nothing for you to do now`,回归约束);`steerFollowIntent(结局)` 仍为 `tail`、`selfHealSubmissionDisposition(结局)` 仍为 `handed-off`(回归约束)。0.85.1 上前三形答 `applied` 那两句 ⇒ FAIL。
9734
+
9735
+ ### 111d. 端上要动的读点
9736
+
9737
+ 坐标来自本机克隆的只读检索,读的提交:终端 `origin/main` 6e050ef7 · 网页端 `origin/main` 0fb6df39 · 管理台 `origin/main` 21b89514 · 桌面端 `origin/main` 5c996117(冻结)。产品源码坐标省去开头的 src 目录;行号会漂,以各端现状为准。
9738
+
9739
+ **终端**(6e050ef7)
9740
+
9741
+ - EC-1 零改动即得:两只失败结局在「待决项已证不在、本包复核请求失败」与「重开口抛带码的错」两条来路上带 `errorCode`;终端的两只重开外壳(`sema/seamQuery.ts:2737` 的 `reopenPlanReview` / `:2751` 的 `reopenAskPark`)今天吞掉一切失败、交回普通判决,所以抛错那条来路今天走不到。要在「could not reopen」那一行说出成因(引擎在排空等),读结局的 `errorCode`;包行不变。
9742
+ - EC-2(非必改):要让自带的 ask 重开口也递码,在它放弃的那一处按 111a-1 同一口径铸 `_sema_errorCode`,读法用 `effectiveWireErrorCode(抛出物)`(本包导出,折叠码按 `blockedBy`)—— 不另写读码:
9743
+ - 出生窗的轮询(`sema/askParkReopen.ts` `probeOwnedAskRow` `:597`,`approvals.list` `:616`,失败落 `unborn` `:622`):**最后一拍失败才铸**。每一拍失败记下这一拍的码(没有码就记「无码」),答上了就清掉(答上了 = 放弃的依据变了);窗尽收口(`:800`)时只在最后一拍是失败、且带码时铸 —— 窗尽于「答了但没有行」不铸(`pendingRowGone` 那一形同样不铸)。
9744
+ - tool 门无卡链(`:1475` 起的整链,`:1506` outcome 形失败 / `:1520` 抛出形失败):**以决断 POST 失败收口才铸** —— 链没呈卡、也没决断成功(`:1602` 那一次 `{ reopened: false }`)时,铸最后一发决断失败的码(整链重跑一次的,取第二发的);决断失败之后那一次「行还在不在」的队列回读只作确认、不改放弃的依据,不清码。链因呈现回执窗尽、熔断、已呈台账闸、决断在路上等判定收口 ⇒ 不铸。
9745
+ - 问答臂:决断在作答之后才发(重开这一步之外),没有可铸的码。
9746
+ - 调用方已中止(用户按了 Esc)⇒ 不铸(放弃的依据是中止)。
9747
+ - 外层兜底 catch(`:826`):不铸(那里接住的不是某一发请求的失败)。或者把一个 wire 失败原样抛出去 —— 本包在保护内按抛出物铸同一位(111a-1 表第 1 行);两种做法端上看到的结局相同,择一。
9748
+ - plan 重开外壳(`sema/planReviewReopen.ts:165`,用户关卡判定 `:177` 读待决队列、失败即拒开)答的是用户关卡 / 决断在路上两种判定形 —— 按 111a-1 不铸;交给包口(`:193`)之后的判决本包不铸。
9749
+ - EC-6 零改动即得:终端交给自愈腿的 `runs` 动词是 SDK 客户端的方法,抛的是普通错误对象、答的是普通记录,结局与 0.85.1 逐字节同;只有外壳自己包一层、交出读不出的对象时才走到修复那一形。
9750
+ - 自渲句:终端经 `rowFor` 覆写失败结局那几行时,码的措辞按 111a-1「出句」一条。
9751
+ - EC-7 零改动即得:注入件撞活 run 折成 steer、回执没给投递方式(或读不出)时,注入形交接行换成 111a-2 那两句;终端现有按「was passed to the reply already in progress」断言这一子形的格改锚(`applied` 形不变)。
9752
+
9753
+ **网页端**(0fb6df39)
9754
+
9755
+ - EC-1 零改动即得:`ui/lib/engine/engine-self-heal.ts` 的两只重开口(`reopenViaParkSurface`)在 `approvals.list` 失败时呈降级卡(答 `reopened: true`),走不到带码的失败形;判决带 `pendingRowGone`(`row-not-found`)之后,本包读 run 状态(`runs.get`)失败的那一形 `ask-reopen-failed` 带 `errorCode`。`renderSelfHealMessage` 按处置档出句,不读新键也不受影响。
9756
+ - EC-2(非必改):自带重开口里若有一处「因为一发请求失败而交回 `{ reopened: false }`」,按终端那一条同一口径铸。
9757
+ - EC-6 零改动即得(同终端)。
9758
+
9759
+ **桌面端 / 管理台**
9760
+
9761
+ - 管理台(21b89514,`lib/chat/transport/engine-transport.ts` 的 `attemptActiveRunSelfHeal`)两只重开口都不装:结局恒是不带码的失败形,零改动;EC-6 零改动即得(它把 SDK 客户端的 `runs` 交给自愈腿)。桌面端零读点。
9762
+
9763
+ **验收方**
9764
+
9765
+ - 新增 G-EC1–G-EC9;按 111a′ ② / ④ 改锚。
9766
+
9767
+ ### 111y. 🔴 三端升级必读(固定段式)
9768
+
9769
+ 1. **换钉 `^0.85.2` 之前**:零前置改动。对调用方非破坏的增量:两个已导出型各多一个可选位(`ReopenCardVerdict` 不成功臂 `_sema_errorCode` · `SelfHealOutcome` 两只失败臂 `errorCode`),根入口运行期名与公面类型名不变,`activeRunSelfHealRow` 不引用 `errorCode`,peer sdk 地板 `>=12.0.1` 不动。已发导出的可观察变化:(a)「宿主重开口抛出带 wire 码的错」与「待决项已证不在之后本包复核请求失败」两类形上多一键(111a′ ②);(b)修复(EC-6):自愈腿遇到读不出的错误对象或成功应答记录不再 reject;`atMostOnceFailureClass` / `readSteerDelivery` / `readSteerReceiptStatus` 遇读不出的对象不再抛(分别答 `'unknown'` / `null`),自愈 steer 腿遇读不出的回执落 `running-steered`(投递方式缺席);(c)注入形交接行在投递方式缺席 / 读不出 / 表外词时换成 111a-2 两句(EC-7;修前与 `applied` 同句)。0.85.1 的必读三条(§110y)原样适用。
9770
+ 2. **逐面**:
9771
+ - **自愈失败行**(CC-260):按 kind 渲包行的端零改动(行不变);要说成因的端读 `errorCode`,只说「引擎答了 X」,不据它断言卡的去向(111a-1「出句」)。
9772
+ - **自带重开口**(终端的 ask 重开口 / 网页端的两只):非必改;要递码就按 111a-1 口径铸 `_sema_errorCode`、读法用 `effectiveWireErrorCode`(111d)。
9773
+ - 桌面端 / 管理台 —— 零读点(管理台 EC-6 零改动即得)。
9774
+ 3. **成文改口**:见 111a′ —— ① 改读(§110b 本包读的判决位八 → 九)/ ② 改读(抛带码错时结局与 steer `queued` 判决各多一键)/ ③ 补读(与 `_sema_noPresentationSurface` 在两只失败结局上互斥)/ ④ 改读(§100 注入件句表第 1 / 2 句只剩 `applied` 形);新增 G-EC1–G-EC9;已发段(§110)不回改,以本段为准;活段 §0a / §4c / §8 同批改。
9775
+
9776
+ **包侧缺口:** ① 由请求失败推出的判定形 —— 包内计划复核重开口自动触发时两次门实例读(用户关卡那一刻 / 此刻)任一次失败 ⇒ 答用户关卡、不带码;读失败若因引擎排空,端拿不到那个码(KL-287)· ② 宿主自带重开口吞掉的请求失败,本包看不见;宿主不铸 `_sema_errorCode` 时两只失败结局在那几形上不带码(终端 / 网页端今天都不铸,见 111d)· ③ 码的读法随本包按码分诊的那一只(`effectiveWireErrorCode`)走:服务端不带具体码时答的是按状态派生的粗码,说不出比它更细的成因 · ④ 宿主判决上不合口径的组合(`pendingRowGone` 与码、判定位与码)本包在计划臂 / steer `queued` 结局上原样透传,不代宿主纠正;丢码只在两只失败结局的判定形上做。
9777
+
9778
+ ## §110 🆕 0.85.1(2026-09-30)请求装配回执省略成因的终端用户向句表 + 取句口 + plan-review 重开口「没有接能显示卡的界面」成因位与重开前提成文补 + 多会话宿主的按会话呈现回执登记口回到根入口(patch;根公面运行期导出 +3,1307 → 1310〔`taskRequestOmissionCauseNotice` / `TASK_REQUEST_OMISSION_CAUSE_NOTICES` / `registerArmedGateFromQuestionIdFor`(0.72.0 退出公面的名字复活)〕;公面类型名不变;`ReopenCardVerdict` 不成功臂 +1 可选位 `_sema_noPresentationSurface`〔超集键 +1〕;`SelfHealOutcome` 两臂 +1 可选键 `noPresentationSurface`;`activeRunSelfHealRow` 五句在这一形上补一句成因;自愈腿读宿主重开判决收进保护(某一位读不出按缺席,不再 reject);宿主日志 / 探针口抛错不再改变判决;成因闭集不变;接入方那只 `taskRequestOmissionCauseDetail` 逐字不变;零投影臂;peer sdk 地板 `>=12.0.1` 不动)
9779
+
9780
+ > **patch**,三件同发,另带两处修复(PS-6 / PS-7)。
9781
+ > **CC-248**(应终端的请托:回执省略成因要一份面向终端用户、按成因词穷举的句子;本版 **consumed**):修前本包只有写给**接入方**的那一只(§85 S-14 的 `taskRequestOmissionCauseDetail`:带改法 —— 「把值交给另一层」「换一条有座的车道」—— 表外词原样回显供对账)。三端要把同一份回执说给**终端用户**,只能各写一张「成因词 → 人话」表:终端今天就自带一张(`sema/printLaneRequestReceipt.ts` 的 `CAUSE_TEXT`),那是第二份措辞、第二份判据。
9782
+ > 本版出一张终端用户向句表 + 取句口。成因闭集仍是 `TASK_REQUEST_OMISSION_CAUSES` 那**一份**;接入方那张与本张各自穷举它。
9783
+ > **CC-258**(网页端报):`reopenPlanReviewCard` 出卡 = 把一帧问题帧投给宿主**按会话订阅**的问题帧端口(`onQuestionFrameFor(sessionKey, handler)`;默认会话 `onQuestionFrame`),`hasQuestionOverlayFor(sessionKey)` 问的就是「这个会话有没有一个界面会收到这一帧」。没有订阅者 ⇒ 本包没有地方渲卡、拒开 —— 这是设计如此。修前这一形答不带位的 `{ reopened: false }`,与「回执窗没落定 / 非默认会话键没有投递口 / 关卡记号已不在」分不开:没装端口的端换接之后每次重开都拿到它,读不出是哪一形。本版这一形带机读位,自愈行补一句成因;并成文补上 §108 没写成前提的那一步(110a′ ①)。
9784
+ > **CC-259**:`reopenPlanReviewCard` 的回执形(`presentationReceiptMs`)自己不登记呈现,等宿主在卡真进界面那一刻登记 —— 等的是**请求那个会话键**上的回执。根入口此前只有默认会话口 `registerArmedGateFromQuestionId`(按会话的那一只在 0.72.0 以「零消费」退出了公面):按自己会话键重开的多会话宿主照 §108d ② 用默认会话口登记,回执窗等不到,窗尽答 `{ reopened: false }`,而卡其实已经上屏。本版把按会话的那一只放回根入口。
9785
+ > **到货点名**:终端 —— 成因句建议换读并删 `CAUSE_TEXT`(非必改,110d);重开口两件零改动即得(交互界面恒有订阅;单会话,继续用默认会话回执口)。网页端 —— 🔴 换接包内重开口之前先装问题帧端口,回执形改用按会话登记口(110d);今天不渲装配回执,成因句零改动。桌面端 / 管理台 —— 零读点,零改动。
9786
+
9787
+ ### 110a. 处置表
9788
+
9789
+ 各端列的词同 §101a:`pending` = 有读点待改(格内注明必改与否);`n/a` = 该端零读点或零改动即得(按本机克隆的只读检索,读的是哪一个提交见 110d)。本段另用三个词:「零改动即得」= 该端有读点、不改就拿到本版行为(格内写明拿到的是什么);「回归约束」= 该端依赖的旧行为本版不变,按旧判据回归;`—` = 与该端无关。
9790
+
9791
+ | # | 面 | 包处置 | 旧 → 新 | 终端 | 网页端 | 桌面端 | 管理台 | 验收方 | 本节 |
9792
+ |---|---|---|---|---|---|---|---|---|---|
9793
+ | R-1 | `taskRequestOmissionCauseNotice(cause)` | added(终端请托 consumed) | — → 成因词 → 一句终端用户面话;表外 / 读不出 ⇒ 一句通用句;不抛(110a-1) | pending(建议换读并删 `CAUSE_TEXT`;非必改,见 110d) | n/a(不渲装配回执) | n/a | n/a | pending(G-R1 / G-R2 / G-R3) | 110a-1 · G-R1–G-R3 |
9794
+ | R-2 | `TASK_REQUEST_OMISSION_CAUSE_NOTICES`(冻结,`Readonly<Record<TaskRequestOmissionCause, string>>`) | added | — → R-1 那四句的表本身(给要按成因词编译期穷举、自建呈现表的端) | pending(自建按词过滤表时句子从这里取) | n/a | n/a | n/a | pending(G-R1) | 110a-1 · G-R1 |
9795
+ | R-3 | `taskRequestOmissionCauseDetail(cause)` / `TASK_REQUEST_OMISSION_CAUSES` | 不变 | 接入方四句、兜底句、成因闭集逐字节同 0.85.0 | 回归约束 | 回归约束 | — | — | 回归约束 | G-R4 |
9796
+ | PS-1 | `ReopenCardVerdict`(`reopened: false` 臂)`_sema_noPresentationSurface?: true` | added(超集键 +1) | 无 → 「这个会话没有接能显示卡的界面」成因位,只认严格 `true`(110a-2) | 零改动即得(包内重开口铸;终端的重开外壳原样透传判决) | pending(换接包内重开口时读它分辨「没装端口」,见 110d) | n/a | n/a | pending | 110a-2 · G-PS1–G-PS4 |
9797
+ | PS-2 | `reopenPlanReviewCard` 无界面形的判决 | changed(多一键) | `{ reopened: false }` → `{ reopened: false, _sema_noPresentationSurface: true }`(同步形 / 回执形 / 异步判定的读后复核同答;读后复核与入口同序,先问界面 —— 同一枚关卡记号上读在路上时界面没了那一形,0.85.0 答 `{ reopened: false, dismissedByUser: true }`,本版同答无界面);其余拒开形与成功形逐字节同 0.85.0 | 零改动即得(交互界面恒有订阅,走不到;`-p` 等无界面车道走得到) | pending(同 PS-1) | n/a | n/a | pending(按「恰 `{ reopened: false }`」断言无界面形的格改锚,110a′ ②) | 110a-2 · G-PS1–G-PS4 |
9798
+ | PS-3 | `SelfHealOutcome`:`plan-review-reopen-failed` / `ask-reopen-failed` 的 `noPresentationSurface?: true` | added | 无 → 重开判决带 PS-1 时在场(kind 不变;两臂同判) | 零改动即得(按 kind 渲行的不必读) | pending(自渲行时读它) | n/a | n/a | pending | G-PS5 |
9799
+ | PS-4 | `activeRunSelfHealRow` 五句 | changed(无界面形补一句成因) | 原句 → 在「重开不了 / 呈不出」处补 `this session has no view attached that can show decision cards`(110a-2 表),其余字节不变(插入点两侧的两段各自逐字不变,跨插入点的子串不再成立,110a′ ⑤) | 零改动即得(无界面车道上多一句;按不跨插入点的子串断言的格照旧命中) | 零改动即得(用包行时) | n/a | n/a | pending(按整行逐字、或按跨插入点的子串断言无界面形的格改锚) | 110a-2 · G-PS5 / G-PS6 |
9800
+ | PS-5 | `armPlanReviewApproval`(首呈口) | 不变 | 不问有没有界面;无订阅者时仍答 `true`、卡帧不会送到任何地方(包侧缺口 ⑥) | 回归约束 | n/a(不经首呈口) | n/a | n/a | 回归约束 | G-PS7 |
9801
+ | PS-6 | `attemptActiveRunSelfHeal` / `activeRunSelfHealRow` 读宿主重开判决 | fixed | 判决上某一位读不出(会抛的取值器 / Proxy)⇒ 修前自愈 Promise reject(0.85.0 及更早,既有七位同样如此),steer `queued` 结局的出句口同步抛(既有位里是 `reopened` / `presented` / `_sema_decisionInFlight` / `dismissedByUser` 四位;宿主自铸结局上 `reopened` 这一键本身读不出同样抛)→ 按这一位缺席处置,结局照常落定、行句不抛;`running-steered` 结局的 `reopened` 是本包逐键拷出的那一份(自有可枚举键 —— 字符串键与 Symbol 键 —— 逐个原样拷、超集键照旧随行,值原样、键序照宿主给的,null 原型的判决拷成 null 原型;读不出的那一键跳过)—— 普通判决的键、键序、值、原型与 0.85.0 一致 | 零改动即得(重开外壳返回普通对象,结局与 0.85.0 逐字节同;外壳自铸的超集位 `_sema_userDismissed` 照旧随行) | 零改动即得 | n/a | n/a | pending(G-PS8) | 110b · G-PS8 |
9802
+ | PS-7 | `installHost({ log, probe })` 装的宿主日志口 / 探针口(经 `hostLog` / `hostProbe` 调用) | fixed | 口抛错会冒到调用方,`reopenPlanReviewCard` 有七形因此改判(0.85.0 及更早,0.84.1 实测同形:入口决断在飞 / 同步形用户关卡丢位,入口铸卡段撤了旧卡却没铸新卡,读后复核四形改答 `dismissedByUser`)→ 本包兜住口抛出的错,诊断不改变任何判决;`hostLog` / `hostProbe` 本身不再抛;`hostLog` 返回型 `void` → `boolean`(`false` = 口这一次抛了错、这一行没递到) | 零改动即得(装了日志口的端) | 零改动即得(同左) | 零改动即得(同左) | 零改动即得(同左) | pending(G-PS9) | 110a-2 · G-PS9 |
9803
+ | RG-1 | `registerArmedGateFromQuestionIdFor(sessionKey, questionId)` | added(0.72.0 退出公面的名字复活) | — → 按会话登记呈现回执:原始帧 id 的回执发在这个会话键上,归一后的卡身份(剥重开尾 + 计划卡呈现代数)记进这个会话的呈现台账;入参语义与默认会话口逐字同(`questionId` 不是非空串 ⇒ 什么都不做,不抛) | n/a(单会话,继续用默认会话口) | 🔴 接(换接 `reopenPlanReviewCard` 且带 `presentationReceiptMs` 时:handler 在卡进界面那一刻调它,见 110d) | n/a | n/a | pending | 110a-3 · G-RG1–G-RG3 |
9804
+ | RG-2 | `registerArmedGateFromQuestionId(questionId)` | 不变 | 只登默认会话;非默认会话键上用它 ⇒ 回执窗等不到、窗尽 `{ reopened: false }` | 回归约束 | 不用(改用 RG-1) | — | — | 回归约束 | G-RG2 |
9805
+ | RG-3 | 宿主作答记账口 `notePlanReviewAnsweredIfDecisive(questionId, answer)` | 不变 | 只记默认会话;非默认会话键上本包铸的重开卡,决断性作答的推代与撤关卡记号由本包作答口按会话记,宿主不必另报(调了记在默认会话上,与这个会话无关) | 回归约束 | n/a(非默认会话键不调) | — | — | — | G-RG1 |
9806
+
9807
+ #### 110a-1 · 四句与通用句(逐字)
9808
+
9809
+ | 成因词 | 终端用户面句(`taskRequestOmissionCauseNotice`) | 用户能做的 |
9810
+ |---|---|---|
9811
+ | `upstream_absent` | `Not sent with this request: this version has no way to send this setting in any request, so giving it or leaving it out makes no difference to what is sent.` | 给不给都发同一份请求 |
9812
+ | `other_channel` | `Not sent from here: that part of the request belongs to a separate step, so what goes out for it, if anything, is decided there rather than by the value given here.` | 不说(那一步落不落、落什么,本包不知道) |
9813
+ | `off_lane` | `Not sent with this request: this kind of request does not carry this setting, so giving it or leaving it out makes no difference to what this request sends.` | 这一类请求给不给都一样 |
9814
+ | `not_live` | `Not sent with this request: the request was marked as not going to a live engine (for example an offline or test run), and this setting is only sent on requests that go to one.` | 发往在线引擎的请求会带上 |
9815
+ | (表外 / 读不出) | `Not sent with this request, for a reason this version does not recognize.` | 不说 |
9816
+
9817
+ 措辞纪律(判据面):
9818
+ - 恒以 `Not sent` 起头、句号收尾;整句,不是短语 —— 拼法是 `<设置名>: <句>`,不是 `<设置名> was not sent: <短语>.`。
9819
+ - 只说这一次带没带,不说「生效 / 不生效」:带了不等于引擎兑现了,没带也不等于这项功能不存在。
9820
+ - 不含接入方用词(车道 / 装配 / 回执 / 上游 / 字段 / 键 / 在线补位层 / mock / fixture)。
9821
+ - 不把「不知道」说成结论:`not_live` 只说「被标成不发往在线引擎」(本包只知道调用方交来的标记);`other_channel` 不说「后面会设上」(补位那一层逐条自己决定落不落,宿主也可能不调它);`upstream_absent` 的射程是「this version」(判据是本包装着的 SDK 型面上没有这一位,更新的引擎可能已有)。
9822
+ - 与接入方那张逐词不同句、零共句(两种读者)。
9823
+ - 取句口只认自身就是串的值(包装串对象、带 `toString` 的对象、数组都不强转),查表按自有键;读属性会抛的对象、已撤销的 Proxy 不抛;通用句不回显入参。
9824
+
9825
+ #### 110a-2 · 重开口的呈现前提、出口与句子
9826
+
9827
+ **前提**:`reopenPlanReviewCard` 只把卡帧投给宿主为**这个会话键**订阅的问题帧端口。端的接法:会话挂载时 `onQuestionFrameFor(sessionKey, handler)`(默认会话可用 `onQuestionFrame(handler)`),返回值就是退订函数,会话失效 / 卸载时调;`handler` 收到 `type: 'question'` 帧交给端既有的问题卡界面渲(帧形与活的问题帧同:`questionId` + `questions[]`,每题 `header` / `question` / `options[].label` / `multiSelect`),收到 `question_complete` 撤掉那张卡;作答经 `respondToQuestion(questionId, { answers: [{ header, selected: [label] }] })` 回包 —— 本包的作答口按判决经重开时给的 `wire`(或宿主自带的 `deliverDecision`)投递;不作答地把卡拿开 = `respondToQuestion(questionId, { answers: [] })`(本包据此记「用户关卡」)。
9828
+
9829
+ **判决**(重开口读 `hasQuestionOverlayFor(sessionKey)` 的出口就是下面两处。本包另有一处读点不在重开口上:`src/hitl/parkResolver.ts` 的 `#surfaceGateAndDecide`(本版第 320 行)—— 流内 ask 门的出卡腿问 `hasQuestionOverlay()`(默认会话形,即对默认会话键问 `hasQuestionOverlayFor`),没有订阅者 ⇒ 那一腿答出卡失败(`stage: 'card'`);它不经重开口、不铸这一位,与下面两处出口无关):
9830
+
9831
+ | 出口 | 时机 | 判决 |
9832
+ |---|---|---|
9833
+ | ① 入口 | 在飞守卫之后、其余判定(非默认会话键投递口 / 用户关卡)之前 | 无订阅者 ⇒ `{ reopened: false, _sema_noPresentationSurface: true }`;同步形直接返回,回执形返回落定为同一判决的 Promise;本包没铸卡、没登记作答口、没动关卡记号 |
9834
+ | ② 读后复核 | `trigger: 'automatic'` 撞关卡记号、读门实例读回来之后。读后复核的判定序:在飞(台账 / 宿主交出谓词)→ 陈旧评估(关卡记号换了一枚 / 没了)→ 界面 → 用户关卡(同一道门)/ 铸卡(新门)。前两判先于界面:读在路上时交出了决断又退订 ⇒ 仍答 `_sema_decisionInFlight`;关卡记号换了(或没了)又退订 ⇒ 仍答陈旧评估那一形。界面先于用户关卡,与入口同序 | 入口时有订阅、读在路上时订阅没了 ⇒ 同上判决,不论读出的是不是新门;零新卡。关卡记号:同一道门那一形不动(那一枚记号说的正是这道门);新门那一形撤掉用户对旧门的那一枚(新门从未被用户关过,不留记号 —— 与 0.85.0 的账面结果同,之后对新门的自动重开照常出卡)。判决上 0.85.0 在这一处:新门那一形答 `{ reopened: false }`,同一道门那一形答 `{ reopened: false, dismissedByUser: true }` |
9835
+
9836
+ 宿主经 `installHost({ log, probe })` 装的日志口 / 探针口抛错,不改变这两处出口的判决,也不改变重开口其余任何一形的判决(PS-7)。
9837
+
9838
+ 不带这一位的拒开形(键集与 0.85.0 逐字节同):回执窗没落定 `{ reopened: false }` · 决断在飞 `{ reopened: false, _sema_decisionInFlight: true }`(在飞守卫在呈现闸之前:有无订阅同答)· 用户关卡 `{ reopened: false, dismissedByUser: true }`(界面在场时;同一枚关卡记号上订阅没了 ⇒ 答没有界面:发消息也叫不回一张没地方渲的卡 —— 入口与读后复核两处同答)· 非默认会话键没有投递口 `{ reopened: false }` · 陈旧评估时关卡记号已不在 `{ reopened: false }`。
9839
+
9840
+ **自愈行**(`activeRunSelfHealRow`;五句补同一句成因,其余字节与不带位那一句逐字同;`T` 为任务号,出路半句按缺省):
9841
+
9842
+ | 结局 / 形 | 整句(逐字) |
9843
+ |---|---|
9844
+ | `plan-review-reopen-failed` 用户形 | `The previous turn is parked waiting for a plan review (run T) and sema could not reopen that approval card: this session has no view attached that can show decision cards. It did NOT cancel the run — that would have discarded the plan for you. Your message was NOT sent; run /clear to keep working in a fresh session if you no longer want that plan.` |
9845
+ | `ask-reopen-failed` 用户形 | `The previous turn is parked waiting for your decision (run T) and sema could not reopen that card here: this session has no view attached that can show decision cards. It did NOT cancel the run — that would have decided it for you. Your message was NOT sent; run /clear to keep working in a fresh session if you no longer want it.` |
9846
+ | `running-steered` `queued` 用户形(判决带位) | `… sema could not surface that decision card here (this session has no view attached that can show decision cards), so nothing will resume that run until that decision is made; run /clear to keep working in a fresh session if you no longer want it. …`(前后半句与不带位那一句同) |
9847
+ | `running-steered` `queued` 注入形(判决带位) | `A follow-up message sema sent on its own (not one you typed) is queued on an earlier reply (id T) that is paused waiting for a decision sema could not show here (this session has no view attached that can show decision cards); the message is picked up only once that decision is made.` |
9848
+ | `*-reopen-failed` 注入形 | `A follow-up message sema sent on its own (not one you typed) was not delivered: this session was still busy with an earlier reply (id T), and there was no open card you could answer to free it (this session has no view attached that can show decision cards). sema did not retry, so the model has not seen it.` |
9849
+
9850
+ 措辞纪律:只说「这个会话没有接能显示决断卡的界面」—— 不说「卡是你关的」、不说「答案在路上」,也不出现宿主 / 帧 / 订阅这类接入方用词(那是写给终端用户读的一句)。宿主给的「保会话」出路半句在这一形上照旧给(出路句本身不变)。
9851
+
9852
+ #### 110a-3 · 多会话宿主在重开链上要调的按会话口(全表)
9853
+
9854
+ | 职责 | 按会话口 | 在根入口 |
9855
+ |---|---|---|
9856
+ | 订阅问题帧(卡上屏的前提,110a-2) | `onQuestionFrameFor(sessionKey, handler)` | 是 |
9857
+ | 问这个会话有没有订阅者(可选) | `hasQuestionOverlayFor(sessionKey)` | 是 |
9858
+ | 作答 / 拿开卡 | `respondToQuestion(questionId, …)`(按卡身份,不分会话) | 是 |
9859
+ | 回执形的呈现回执 | `registerArmedGateFromQuestionIdFor(sessionKey, questionId)` | **本版起是**(RG-1) |
9860
+ | 会话换代清「用户关卡」记号 | `clearPlanReviewUserDismissals(sessionKey)` | 是 |
9861
+ | 决断性作答的推代 / 撤关卡记号 | 本包作答口按重开时的 `sessionKey` 自己记 | 不需要宿主调 |
9862
+ | 首见 / 复见判据、等回执 | 本包按 `sessionKey` 自己读 | 不需要宿主调 |
9863
+
9864
+ 同步形(不传 `presentationReceiptMs`)下本包在发布卡时自己登记呈现,宿主不调回执口。
9865
+
9866
+ ### 110a′. 成文改口
9867
+
9868
+ - **CC-248 无作废项**:这一件纯增,§79 / §85 的判据全部照旧成立;新增 G-R1–G-R5(110c)。终端换读之后,验收方按终端旧句(`this lane sets it after …` / `this run is not talking to an engine` 等)逐字断言的格改锚到 110a-1。
9869
+ - ① **补前提**(CC-258;§108 不回改,以本条为准):§108 W-5 网页端列与 108d ② 写了「订阅 `onQuestionFrameFor(uiSessionId)` 渲卡」,但写成了换接之后渲卡的一步,没写成**重开口的前提** —— 这个会话没有订阅者时 `reopenPlanReviewCard` 在其余判定之前就拒开(110a-2 出口 ①);108y 网页端那一行只写了两口调用,漏了订阅。补:换接 `reopenPlanReviewCard` 之前先装 `onQuestionFrameFor(sessionKey, handler)`,handler 把问题帧交给端既有的问题卡界面渲;作答经 `respondToQuestion` 回包,由重开时给的 `wire`(或自带的 `deliverDecision`)投递(110a-2「前提」)。
9870
+ - ② **改读**(CC-258):按「会话没有订阅者 ⇒ 恰 `{ reopened: false }`」逐键断言的格(键集恰一位)改为恰 `{ reopened: false, _sema_noPresentationSurface: true }`;按「读后复核撞同一枚关卡记号 ⇒ 恒答 `dismissedByUser`」断言的格,在读在路上时订阅没了这一子形上同样改锚为无界面判决(§104 不回改,以本条为准);其余拒开形的逐键断言照旧成立。§93 那一句「`_sema_decisionInFlight` 缺席 = 别的成因(没有渲染面、回执窗尽等)」照旧成立,其中「没有渲染面」自本版起带自己的位。
9871
+ - ③ **订正**(CC-258 / CC-259;§108d ② 的回执登记口;§108 不回改,以本条为准):那一条写「呈现回执经 `registerArmedGateFromQuestionId`」—— 只对**默认会话**成立;按 `uiSessionId` 这类非默认会话键重开时,改用本版回到根入口的按会话登记口 `registerArmedGateFromQuestionIdFor(uiSessionId, questionId)`(同一张卡、同一个 `questionId`,只多一个会话键;RG-1)。用默认会话口 ⇒ 回执窗等不到,窗尽答 `{ reopened: false }`,而卡其实已经上屏。
9872
+ - ④ **改读**(CC-259):活段里「`registerArmedGateFromQuestionIdFor` 🔧 0.72.0 退出公面、包内私有」的说法自本版作废(§2 per-session 变体计数、§2z 退出公面名录、§6 呈现台账行同批改);0.72.0 的退役段与 CHANGELOG 0.72.0 段不回改 —— 那一版退过是事实。
9873
+ - ⑤ **改读**(CC-258;§100 不回改,以本条为准):§100 100a-3 注入件句表的第 5 句(steer `queued`「卡呈不出」)与第 12 句(`not-delivered` 其余结局里「卡重开不了且决断不在路上」)在「重开判决带 `_sema_noPresentationSurface` / 结局带 `noPresentationSurface`」这一子形上已分句,逐字见 110a-2 表第 4 / 5 句;不带位的形照旧逐字成立。按整句逐字、或按跨插入点的子串(`could not show here;` / `free it. sema did not retry` 这类)断言这两句的格,在无界面子形上改锚;只落在插入点一侧的子串照旧命中。§100 G-E3 举的两形(续跑上下文读不出 / 引擎不认得那一轮)不经重开口,G-E5 构造的结局不带 `noPresentationSurface`,都走不到这一子形;在无界面车道上按 G-E3 取证、恰撞上「卡重开不了因为没有界面」时,出现的是 110a-2 表第 5 句。
9874
+ - 新增 G-PS1–G-PS9、G-RG1–G-RG3(110c)。
9875
+
9876
+ ### 110b. 缺席语义(逐键)
9877
+
9878
+ - 取句口没有「缺席」答案:任何入参都回一句话。通用句 = 「这个成因本版认不出」,**不是**「没有成因」,也不是四个成因里的任何一个;真回执的每一行在型上必带四词之一,走不到通用句。
9879
+ - 句表的键恒为成因闭集全员(冻结);某个词没有句子的状态不存在(编译期即红)。
9880
+ - 回执里**没有**某一键 ≠ 那一键已生效:回执只答本构造器这一次带没带(§79 起的既有语义,本版不变)。本版的句子因此只为回执里**有**的行说话,端不要拿它去为「不在回执里的键」渲一句「已发送 / 已生效」。
9881
+ - `_sema_noPresentationSurface`(判决):在场 = 这个会话没有问题帧订阅者、卡没有地方渲(只认严格 `true`)。**缺席不等于「有界面」**:别的拒开形、成功形都不带;陈旧评估按关卡记号答、不问界面(包侧缺口 ⑦);宿主自带的重开口(终端的 ask 重开口等)铸不铸由宿主定。
9882
+ - `running-steered` 结局的 `reopened`(PS-6):本包在保护内逐键拷出的那一份判决 —— 宿主判决的自有可枚举键(字符串键与 Symbol 键)逐个原样拷(本包不认的超集键照旧随行),值原样、键序照宿主给的;null 原型的判决拷成 null 原型,其余是普通对象;普通判决与宿主给的键、键序、值、原型都一致,只是不再是同一个对象。不可枚举的自有键不拷(本包读的八位除外:它们照读);某一键在宿主判决上读不出(含可枚举性判定本身读不出)⇒ 这里缺席(不是 `false`,也不是读错的值);列不出宿主判决的键(Proxy 的列键陷阱抛)⇒ 只按本包读的八位(`reopened` / `firstSight` / `presented` / `decidedWithoutCard` / `pendingRowGone` / `_sema_decisionInFlight` / `dismissedByUser` / `_sema_noPresentationSurface`)读。宿主判决是 `null` / `undefined` ⇒ `{ reopened: false }`(与 0.85.0 同)。
9883
+ - `noPresentationSurface`(结局):只在重开判决带上面那一位时在场;缺席同上。按 kind 渲行的端不必读它 —— 包行已按它补了成因句。
9884
+ - 本位在场时不置 `pendingRowGone`、不进陈旧 park 两选卡(待决项还在,只是这里没有地方渲)。
9885
+ - `registerArmedGateFromQuestionIdFor` 没有返回值;`questionId` 不是非空串 ⇒ 什么都不做(不抛)。`sessionKey` 按原样当键用(与 `onQuestionFrameFor` / `registerArmedGateFor` 同口径):传与重开、订阅**同一个**值;传错会话键 ⇒ 回执落在那个会话上,这一次重开照样窗尽答 `{ reopened: false }`。
9886
+ - 回执窗内没收到这个会话键上的登记 ⇒ `{ reopened: false }` 照旧是「卡投出去了、宿主没回执」那一形,不带 `_sema_noPresentationSurface`(那一位只说「没有订阅者」,110a-2)。
9887
+
9888
+ ### 110c. 黑盒判据骨架
9889
+
9890
+ > 🔴 标「本版证明」的格在 **0.85.0** 产物上必须 FAIL、在 0.85.1 上必须 PASS;标「回归约束」的格两版都 PASS;标「端侧验收」的格验的是端换读之后的行为;标「读数格」的格只记读数、不判红绿(记的是今天的行为,不是承诺)。请记下两次跑的产物标识(版本 + tarball shasum)。
9891
+
9892
+ - **G-R1**(本版证明,纯包层):根入口导出 `taskRequestOmissionCauseNotice`(函数)与 `TASK_REQUEST_OMISSION_CAUSE_NOTICES`(`Object.isFrozen` 为真);句表键集 ≡ `TASK_REQUEST_OMISSION_CAUSES`(两向);对闭集每个词,取句口的答案 === 句表那一格 === 110a-1 那一句(逐字)。0.85.0 上两名缺席 ⇒ FAIL。
9893
+ - **G-R2**(本版证明,纯包层):`'brand_new_cause'` / `''` / `'OFF_LANE'` / `' off_lane'` / `0` / `null` / `undefined` / `{}` / `['off_lane']` / `new String('off_lane')` / `{ toString: () => 'off_lane' }` / `{ toString() { throw new Error() } }` / 已撤销的 Proxy / `'constructor'` / `'__proto__'` / `'toString'` ⇒ 每一个都恰等于通用句、不抛;答案里不含入参的字面(`brand_new_cause`)。
9894
+ - **G-R3**(本版证明,纯包层):四句两两不同;对每个词,`taskRequestOmissionCauseNotice(w) !== taskRequestOmissionCauseDetail(w)`,且四句没有一句出现在接入方四句里;四句都以 `Not sent` 起头;都不含 `lane` / `receipt` / `upstream` / `field` / `took effect` / `applied`。
9895
+ - **G-R4**(回归约束,纯包层):`taskRequestOmissionCauseDetail` 对四个词与表外词的答案、`TASK_REQUEST_OMISSION_CAUSES` 的内容与序、`assembleTaskRequest` 同一入参的 `{ request, omitted }` 逐字节同 0.85.0。
9896
+ - **G-R5**(端侧验收;终端单元层,终端换读之后):终端的回执行铸点(今天是 `printLaneOmissionLine(key, cause)`)对四个成因词各产一行,成因部分逐字等于 `taskRequestOmissionCauseNotice(cause)`。🔴 走单元层、不走 `-p` 黑盒:今天终端 `-p` 的五个旗(`--system-prompt` / `--max-budget-usd` / `--json-schema` / `--effort` / `--disallowed-tools`)在 print 车道上都有座(`taskRequestSeatOf(<键>, 'print')` 读 `seated`)⇒ 用户靠旗触发不出非 `not_live` 的回执行(`not_live` 终端整类不渲);黑盒里出不出别的行,取决于终端往装配口交了哪些没有旗的入参,不是验收方能从命令行上控制的。终端未换读前本格不适用(标 n/a,不判红)。
9897
+ - **G-PS1**(本版证明,纯包层):默认会话没有订阅者,`reopenPlanReviewCard('T', { deliverDecision })` ⇒ 恰 `{ reopened: false, _sema_noPresentationSurface: true }`(键集恰两位)、零帧;加 `presentationReceiptMs: 400` ⇒ Promise 落定为同一判决;加 `trigger: 'user'` / `'automatic'` 同答。0.85.0 上恰 `{ reopened: false }` ⇒ FAIL。
9898
+ - **G-PS2**(本版证明,纯包层):默认会话有订阅、请求 `sessionKey: 'K'` 没有 ⇒ 同 G-PS1,默认会话的订阅零帧;`onQuestionFrameFor('K', h)` 之后同一调用 ⇒ `reopened: true`,判决键集恰 `firstSight` + `reopened`,`h` 收到一帧 `question`。
9899
+ - **G-PS3**(回归约束,纯包层):位不出现在 —— 有订阅而宿主不登记回执(回执窗 80 ms)⇒ 恰 `{ reopened: false }`;`notePlanReviewDecisionHandedOver('T')` 之后(有 / 无订阅)⇒ 恰 `{ reopened: false, _sema_decisionInFlight: true }`;用户关卡后自动触发(有订阅)⇒ 恰 `{ reopened: false, dismissedByUser: true }`;`sessionKey: 'K'` 有订阅、不给 `deliverDecision` / `wire` ⇒ 恰 `{ reopened: false }`;关卡后门换新、异步判定读挂起期间 `clearPlanReviewUserDismissals()` ⇒ 恰 `{ reopened: false }`。
9900
+ - **G-PS4**(本版证明;读后复核出口):用户关卡(读口答 `{g1}`)、门换成 `{g2}`,自动触发(回执形)的读挂起期间退订,再放开读口 ⇒ 恰 `{ reopened: false, _sema_noPresentationSurface: true }`、零新卡;重新订阅后再自动触发 ⇒ `reopened: true`;另起一遍同样的布置,重新订阅后改用**同步形**自动触发(`reopenPlanReviewCard('T', { trigger: 'automatic', deliverDecision })`,不重读门实例)⇒ 同样 `reopened: true`、恰出一张新卡(旧门的关卡记号已随那一次撤掉;这一句是回归约束,0.85.0 同答)。同一布置但门不换(读口仍答 `{g1}`)⇒ 同样恰 `{ reopened: false, _sema_noPresentationSurface: true }`、零新卡(0.85.0 答 `{ reopened: false, dismissedByUser: true }` ⇒ FAIL);重新订阅后再自动触发 ⇒ 恰 `{ reopened: false, dismissedByUser: true }`(关卡记号没被那一次动过)。判定序(回归约束,两版同答):门换成 `{g2}`、读挂起期间先 `notePlanReviewDecisionHandedOver('T')` 再退订 ⇒ 恰 `{ reopened: false, _sema_decisionInFlight: true }`(在飞先于界面);读挂起期间用户叫回卡又关掉(关卡记号换了一枚)再退订 ⇒ 与不退订时逐字节同答 `{ reopened: false, dismissedByUser: true }`(陈旧评估先于界面)。
9901
+ - **G-PS5**(本版证明,纯包层):409 信号 `S = { activeTaskId: 'T', activeTaskStatus: null, pendingGate: { kind: 'plan_review' } }`(🔴 不带 `decidePath`:真 409 体通常带它,带了用户形末尾多一句 ` You can also decide it on the engine directly: POST <decidePath>.`,与表第 1 句不等),`attemptActiveRunSelfHeal(S, undefined, { reopenPlanReview })` 的 `reopenPlanReview` 用包内重开口、会话没有订阅者 ⇒ 结局 `plan-review-reopen-failed` 且 `noPresentationSurface === true`,不带 `decisionInFlight` / `dismissedByUser` / `pendingRowGone`;`activeRunSelfHealRow(结局, S)` 用户形 / 注入形(第四参 `'injected'`)逐字等于 110a-2 表第 1 / 5 句(出路半句按缺省)。信号改指名 ask 门(`pendingGate: { kind: 'human' }`,同样不带 `decidePath`)、`reopenAskPark` 答 `{ reopened: false, _sema_noPresentationSurface: true }` ⇒ `ask-reopen-failed` 带同键,用户形逐字等于第 2 句。判决里这一位是 `'true'` / `1` / `false` ⇒ 结局不带键、行与不带位那一句逐字同。
9902
+ - **G-PS6**(本版证明,纯包层):结局 `{ kind: 'running-steered', taskId: 'T', delivery: 'queued', status: 'needs_review', reopened: { reopened: false, _sema_noPresentationSurface: true } }` ⇒ 用户形含 `could not surface that decision card here (this session has no view attached that can show decision cards), so nothing will resume`;注入形逐字等于 110a-2 表第 4 句。
9903
+ - **G-PS7**(读数格,两版同答;包侧缺口 ⑥):默认会话没有订阅者时 `armPlanReviewApproval({ status: 'needs_review', taskId: 'T', checkpointGate: { kind: 'plan_review' } })` 答 `true`、零帧。这是今天的行为,不是承诺;首呈口改形时本格改锚。
9904
+ - **G-PS8**(本版证明,纯包层;PS-6):判决 `V = { reopened: false }` 上加一只会抛的取值器 `Object.defineProperty(V, '_sema_decisionInFlight', { get() { throw new Error('x') }, enumerable: true })`。① G-PS5 的信号 `S` 下 `reopenPlanReview` 答 `V` ⇒ `attemptActiveRunSelfHeal` 落定(不 reject),结局与答 `{ reopened: false }` 时逐字节同;② 宿主自铸结局 `{ kind: 'running-steered', taskId: 'T', delivery: 'queued', status: 'needs_review', reopened: V }` ⇒ `activeRunSelfHealRow` 用户形 / 注入形不抛、与 `reopened: { reopened: false }` 时逐字同;③ 宿主自铸结局上 `reopened` 这一键本身是会抛的取值器(`Object.defineProperty({ kind: 'running-steered', taskId: 'T', delivery: 'queued', status: 'needs_review' }, 'reopened', { get() { throw new Error('x') }, enumerable: true })`)⇒ 两形不抛、与 `reopened: null` 时逐字同。0.85.0 上 ① reject、②③ 抛 ⇒ FAIL。
9905
+ 另(回归约束,两版同答;steer `queued` 臂的完整布置):信号 `{ activeTaskId: 'T', activeTaskStatus: 'running', pendingGate: null }`;`runs = { steer: async () => ({ delivery: 'queued', status: 'needs_review' }), get: async () => ({ status: 'running' }), cancel: async () => ({}) }`;deps `{ offerRunningChoice: async () => 'steer', deniedMessage: '<非空正文>', reopenPlanReview: () => ({ reopened: false, _sema_userDismissed: true }) }`(🔴 `deniedMessage` 必须是非空串:没有正文就不走 steer,结局是 `not-parked`、没有 `reopened`)⇒ `runs.steer` 与 `reopenPlanReview` 各被调恰一次;结局 `kind: 'running-steered'`、`delivery: 'queued'`,`reopened` 的 JSON 逐字节等于那一只判决(超集键照旧随行;本版起不再是同一个对象)。同一布置把判决换成带 Symbol 键的 `{ reopened: false, [Symbol.for('hostTrace')]: 't' }` / null 原型的 `Object.assign(Object.create(null), { reopened: false, dismissedByUser: true })` ⇒ 结局 `reopened` 的 `Reflect.ownKeys`、逐键值与 `Object.getPrototypeOf` 与原物一致(只比 JSON 看不见这两形)。
9906
+ - **G-PS9**(本版证明,纯包层;PS-7):`installHost({ log: () => { throw new Error('x') } })` 之后,`notePlanReviewDecisionHandedOver('T')`,`reopenPlanReviewCard('T', { deliverDecision })` ⇒ 恰 `{ reopened: false, _sema_decisionInFlight: true }`(与不装日志口时同);`hostLog('debug', 'x')` 不抛、答 `false`(换成一只正常返回的日志口 ⇒ 答 `true`);再装一只会抛的 `probe`,`hostProbe('c', 'l')` 不抛。0.85.0 上第一格答 `{ reopened: false }`、`hostLog` 抛 ⇒ FAIL。
9907
+ - **G-RG1**(本版证明,纯包层):会话键 `K`(非默认)上 `onQuestionFrameFor(K, h)`,`h` 收到 `question` 帧即 `registerArmedGateFromQuestionIdFor(K, frame.questionId)`;另在默认会话挂一只订阅。`reopenPlanReviewCard('T', { sessionKey: K, deliverDecision, presentationReceiptMs: 400 })` ⇒ 恰 `{ reopened: true, firstSight: true }`,`h` 收到 `question_complete`(铸新卡之前撤掉这道门旧身份的卡)与 `question` 各一帧 —— 按帧型计,`question` 恰一帧 —— 默认会话零帧,`wasGateArmedFor(K, 'plan-review:T') === true`、`wasGateArmed('plan-review:T') === false`;同调用再来一次 ⇒ `firstSight: false`;对最新那张卡 `respondToQuestion(id, { answers: [{ header: 'Plan review', selected: [PLAN_REVIEW_APPROVE_LABEL] }] })`(宿主不另调记账口)后再来一次 ⇒ `firstSight: true`;对那张卡 `respondToQuestion(id, { answers: [] })` 后再来一次 ⇒ `firstSight: false`,投递只有批准那一次。0.85.0 上根入口没有 `registerArmedGateFromQuestionIdFor` ⇒ FAIL。
9908
+ - **G-RG2**(回归约束,两版同答):同 G-RG1 的布置,`h` 改调默认会话口 `registerArmedGateFromQuestionId(frame.questionId)`,回执窗 120 ms ⇒ 恰 `{ reopened: false }`,`h` 同样收到 `question_complete` 与 `question` 各一帧(`question` 恰一帧;卡已交给订阅者,回执落在默认会话)。
9909
+ - **G-RG3**(读数格,不是判据):`h` 改调 `registerArmedGateFor(K, frame.questionId)` ⇒ 两次重开都答 `{ reopened: true, firstSight: true }`,`wasGateArmedFor(K, 'plan-review:T') === false`。请原样记下读数。
9910
+
9911
+ ### 110d. 端上要动的读点
9912
+
9913
+ 坐标来自本机克隆的只读检索,读的提交:终端 `origin/main` 6e050ef7(09-29)· 网页端 `origin/main` 0fb6df39(09-29)· 管理台 `origin/main` 21b89514(09-29)· 桌面端 `origin/main` 5c996117(08-13,冻结)。产品源码坐标省去开头的 src 目录;本机克隆可能落后远端,行号会漂,以各端现状为准。
9914
+
9915
+ **终端**(6e050ef7)
9916
+
9917
+ - R-1(建议,非必改):`sema/printLaneRequestReceipt.ts:75` 的 `CAUSE_TEXT` 是本版句表的端侧前身。换读:`printLaneOmissionLine`(`:89`)里 `CAUSE_TEXT[cause]` 改为 `taskRequestOmissionCauseNotice(cause)`,拼法从 `<旗> was not sent on this run: <短语>.` 改为 `<旗>: <句>`(本版的句子是整句,自带「Not sent」与句号);删掉 `CAUSE_TEXT`。
9918
+ - 端侧「上游加一个词时我当场知道」这一需要:句子随包一起到(本包的句表对成因闭集编译期穷举),不必再为措辞保留一张端侧表;若要逐词决定渲不渲(今天 `not_live` 整类不渲),按 `TaskRequestOmissionCause` 建一张**只装取舍、不装句子**的表(`Record<TaskRequestOmissionCause, boolean>`),词表加词时照样编译期红。
9919
+ - 同文件 `takePrintLaneOmissionNotices`(`:102`)的 `not_live` 过滤与「每键每进程一次」是端侧取舍,本版不涉及。
9920
+ - PS-1 – PS-4 零改动即得:交互界面恒有订阅(`hooks/useLiveQuestionOverlay.ts` 挂载即订阅),走不到这一形;`-p` 等无界面车道上,自愈行在「could not reopen that approval card」之后多一句成因(终端现有格按不带句点、不跨插入点的子串断言,照旧命中;跨插入点的子串见 110a′ ⑤)。
9921
+ - PS-6 零改动即得:重开外壳交给包的是普通对象判决,steer `queued` 结局的 `reopened` 与 0.85.0 逐字节同;外壳自铸的超集位 `_sema_userDismissed`(`sema/planReviewReopen.ts` 拒开时铸)照旧随行。
9922
+ - PS-7 零改动即得:外壳经 `installHost({ log })` 装的日志口抛错时,重开口与自愈腿的判决不再随之改变。
9923
+ - 可选:`sema/planReviewReopen.ts:196-206` 的调试分诊行在拿到判决之后再用 `hasQuestionOverlay()` 问一次界面在不在(那一刻与重开时可能不同),可改读判决上的 `_sema_noPresentationSurface`。
9924
+ - 可选:自带的 ask 重开口在无界面时答不带位的拒开(`sema/askParkReopen.ts:1140-1147`);要让 ask 行也说出成因,在那一处铸同一位(本包的 ask 臂已读它)。
9925
+ - RG-1:单会话(默认会话),继续用 `registerArmedGateFromQuestionId`,零改动。
9926
+
9927
+ **网页端**(0fb6df39)
9928
+
9929
+ - 🔴 PS-1 / PS-2(换接前提):`ui/lib/engine/engine-self-heal.ts:250` 的 `reopenPlanReview:` 供给今天走 `reopenViaParkSurface("needs_review", …)`;头注(:61-80)的判断成立 —— 包内重开口出卡要端先装问题帧端口。换接顺序:① 先在会话传输层按 `uiSessionId` 装 `onQuestionFrameFor(uiSessionId, handler)`,`handler` 把 `question` 帧桥到既有的 `composer/surface` 卡、`question_complete` 撤卡;作答经 `respondToQuestion(questionId, { answers: [{ header, selected: [label] }] })`(标签取 `planReviewCardOptions` / `PLAN_REVIEW_*_LABEL` 单源),拿开卡经 `respondToQuestion(questionId, { answers: [] })`;会话失效 / 卸载时退订并 `clearPlanReviewUserDismissals(uiSessionId)`;② 再把 `reopenPlanReview:` 换成 `reopenPlanReviewCard(taskId, { trigger, wire: { client }, sessionKey: uiSessionId, onOutcome })`。
9930
+ - 🔴 RG-1(回执形):换接包内重开口(上一条的顺序)且带 `presentationReceiptMs` 时,`onQuestionFrameFor(uiSessionId, handler)` 的 handler 在卡真进 `composer/surface` 那一刻调 `registerArmedGateFromQuestionIdFor(uiSessionId, frame.questionId)`;§108d ② 写的 `registerArmedGateFromQuestionId` 只登默认会话,不要用(110a′ ③)。不带 `presentationReceiptMs` 的同步形不调回执口。
9931
+ - RG-3:包内作答口已按 `uiSessionId` 记推代与撤关卡记号,不必调 `notePlanReviewAnsweredIfDecisive`。
9932
+ - 换接期:判决带 `_sema_noPresentationSurface` = 这个会话还没有订阅者;端可以据此分流(例如只在这一位在场时回落到自家的重开路径)。从未装端口的会话走到的是出口 ①:本包没铸卡、没登记作答口、没动关卡记号。
9933
+ - R-1 / R-2:本机克隆未见装配回执的渲染(只调 `buildTaskRequest`,不调 `assembleTaskRequest`),零改动;将来渲回执时直接用 R-1,不要自己写成因句。
9934
+
9935
+ **桌面端 / 管理台**
9936
+
9937
+ - 本机克隆零读点(未见装配回执的渲染、重开口与回执登记口),零改动。将来渲装配回执时直接用 R-1,不要自己写成因句。
9938
+
9939
+ **验收方**
9940
+
9941
+ - 新增 G-R1–G-R5 / G-PS1–G-PS9 / G-RG1–G-RG3;按终端旧句逐字断言的格,在终端换读之后改锚到 110a-1;按 110a′ ② / ⑤ 改锚。
9942
+
9943
+ ### 110y. 🔴 三端升级必读(固定段式)
9944
+
9945
+ 1. **换钉 `^0.85.1` 之前**:零前置改动。三件都是对调用方非破坏的增量:根入口多三个运行期名(`taskRequestOmissionCauseNotice` / `TASK_REQUEST_OMISSION_CAUSE_NOTICES` / `registerArmedGateFromQuestionIdFor`,最后一个 0.72.0 退出过、本版回来),两个已导出型各多一个可选位,一个已导出函数的返回型 `void` → `boolean`(`hostLog`,PS-7),公面类型名不变;成因闭集与接入方那只口逐字不变;peer sdk 地板 `>=12.0.1` 不动。已发导出的可观察变化两处:(a)会话没有问题帧订阅者时(入口与异步判定的读后复核两处同答),`reopenPlanReviewCard` 的判决多 `_sema_noPresentationSurface: true`(读后复核撞同一枚关卡记号的那一形,0.85.0 答的是 `dismissedByUser`)、自愈结局多 `noPresentationSurface: true`、自愈行五句多一句成因;重开口的其余形与成功形逐字节同 0.85.0。(b)修复(PS-6 / PS-7):宿主重开判决某一位读不出时自愈不再 reject、出句口不再抛(`running-steered` 结局的 `reopened` 是逐键拷贝,普通对象判决 —— 含超集键 —— 与 0.85.0 逐字节同);宿主日志 / 探针口抛错不再改变任何判决。0.85.0 的必读三条(§109y)原样适用。
9946
+ 2. **逐面**:
9947
+ - **装配回执的呈现**(CC-248):终端 —— 建议把 `CAUSE_TEXT` 换成 `taskRequestOmissionCauseNotice`,拼法改为 `<旗>: <句>`(110d);逐词渲不渲的取舍留在端侧、只装布尔。网页端 / 桌面端 / 管理台 —— 今天不渲装配回执,零改动;将来渲时用本口。
9948
+ - **接入方诊断面**(doctor / 日志;CC-248):照旧用 `taskRequestOmissionCauseDetail`(带改法、表外词回显);不要把接入方那句上屏给终端用户,也不要把本版的句子当诊断句用。
9949
+ - **plan-review 重开**(CC-258 / CC-259):网页端 —— 🔴 换接 `reopenPlanReviewCard` 之前先按 `uiSessionId` 装 `onQuestionFrameFor(uiSessionId, handler)`,它是重开口出卡的前提,不装 ⇒ 每次都拒开(本版起判决带 `_sema_noPresentationSurface` 可分辨);handler 把帧交给既有问题卡界面渲,作答经 `respondToQuestion` 回包、由 `wire` 投递;回执形的呈现回执用 `registerArmedGateFromQuestionIdFor(uiSessionId, questionId)` 登记(110a′ ③、110d)。终端 —— 零改动(`-p` 等无界面车道的自愈行多一句成因;单会话,继续用默认会话回执口)。桌面端 / 管理台 —— 零读点。
9950
+ 3. **成文改口**:见 110a′ —— CC-248 无作废项(纯增;终端换读之后按终端旧句逐字断言的格改锚到 110a-1);① 补前提 / ② 改读(无界面形的判决多一键)/ ③ 订正(§108d ② 的回执登记口)/ ④ 改读(活段里按会话回执登记口「退出公面」的说法作废)/ ⑤ 改读(§100 注入件句表第 5 / 12 句在无界面子形上分句);新增 G-R1–G-R5 / G-PS1–G-PS9 / G-RG1–G-RG3;已发段(§79 / §85 / §100 / §104 / §108)不回改,以本段为准;活段 §0a / §2 / §2b / §2z / §4c / §6 / §8 已同批改。
9951
+
9952
+ **包侧缺口:** ① 四句与通用句只有英文一份,不随界面语言切换(KL-262)· ② `other_channel` 那一句说不出另一步最终发没发、发了什么 —— 本包不知道宿主在构造之后调没调补位那一层(KL-260)· ③ `off_lane` 那一句不点名哪一种请求带这一项,车道名是接入方词(KL-261)· ④ 取句口信任「交来的是回执省略行的成因」这一前提,通用句仍说「没发出去」(KL-259)· ⑤ 门那一侧与终端成因句表的对照只读终端一只文件、只比词集,别的端不读(KL-263)· ⑥ 首呈口 `armPlanReviewApproval` 不问有没有界面:没有订阅者时仍答 `true`、卡帧不会送到任何地方;宿主要判可在调用前问 `hasQuestionOverlayFor`(KL-283)· ⑦ 陈旧评估按关卡记号答、不问界面:另一次自动重开因订阅没了没上屏时,这一次答不带位的拒开(KL-284)· ⑧ 门那一侧:导出存活门的「退出账只增不删」只对预期上一发布版那枚 tag 上的同一份账比;不在 git 仓、缺那枚 tag、或其上没有这份账时如实标未核,不退到别的 tag(KL-286)。
9953
+
9633
9954
  ## §109 🆕 0.85.0(2026-09-29)引擎事实表构建期生成与两张出身 / 强制词表即 SDK 的值 + 子代族与 resume 编排收注入 client + 会话规则无损判定收可选名册 + 过渡物退役登记与三名退出公面 + plan-review 决断台账收进包 + 会话后台任务停止口转调 + 服务端 7.104.0 提货(会话存档读不出 · 跳过记录通告 · 删会话 409 · `/decide` 停驻挪动 · 同步 park 体 · 文件历史两代词与请求词 · 公钥发现段 · 折叠粗码)+ 同名影子对账门按语义判 + 导出存活门读已提交历史(🔴 minor;型面 BREAKING 一处〔三个运行期名字退出根入口〕;根公面运行期导出 1275 → 1307〔+35 −3〕;测试钩 59 → 60;公面类型 +34;`SessionPolicyWithheldWhy` +1 员 `not_in_roster`〔穷尽分支的端编译期红〕;`SESSION_POLICY_WITHHELD_WHY` 6 → 7;`ASK_ORIGIN_WORDS` / `APPROVAL_MANDATE_WORDS` 改为 SDK 的数组、不再冻结;四个型改为 SDK 型的别名;子代写动词失败结局 +1 可选键 `unconfirmed`;`reopenPlanReviewCard` 拒开面变宽;`adapt()` 不再认旧名 `attachedFiles`;`FileHistoryCaptureMode` / `EngineNoticeFactsCode` 各 +1 员〔穷尽分支的端编译期红〕;`SERVER_NOTICE_AUDIENCE` 两行 → 三行;请求键 +1 `fileHistory`;零新投影臂;超集键零增减;peer sdk 地板 `>=12.0.1` 不动)
9634
9955
 
9635
9956
  > **minor**,十件同发,另有一条宿主动作成文(本节按 0.85.0 的读法写;若与本版发布帖不一致,以发布帖为准):