@sema-agent/client-core 0.78.2 → 0.79.1
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.
- package/CHANGELOG.md +51 -0
- package/README.md +24 -19
- package/dist/adapt/arms.js +7 -0
- package/dist/adapt/textStream.d.ts +1 -0
- package/dist/adapt/textStream.js +10 -0
- package/dist/adapt/toolCards.d.ts +1 -0
- package/dist/adapt/toolCards.js +2 -0
- package/dist/adapter/downstream/eventToSdkMessage.js +4 -0
- package/dist/adapter/downstream/terminalToSdkResult.d.ts +9 -1
- package/dist/adapter/downstream/terminalToSdkResult.js +34 -7
- package/dist/adapter/runStream.js +60 -3
- package/dist/agentSession/contract.d.ts +2 -1
- package/dist/engineNoticeCodes.js +2 -0
- package/dist/gateVocabulary.d.ts +6 -0
- package/dist/gateVocabulary.js +21 -0
- package/dist/hitl/askGateWire.d.ts +3 -0
- package/dist/hitl/askGateWire.js +2 -0
- package/dist/hitl/frameRouter.d.ts +1 -0
- package/dist/hitl/frameRouter.js +39 -8
- package/dist/hitl/gateLedger.d.ts +9 -4
- package/dist/hitl/gateLedger.js +29 -5
- package/dist/hitl/parkResolver.js +6 -1
- package/dist/hitl/persistedRulesWire.d.ts +12 -1
- package/dist/hitl/persistedRulesWire.js +20 -5
- package/dist/hitl/toolApprovalWire.d.ts +15 -1
- package/dist/hitl/toolApprovalWire.js +56 -4
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/mcpLiveness.js +3 -0
- package/dist/mcpProbeCapability.d.ts +18 -0
- package/dist/mcpProbeCapability.js +55 -0
- package/dist/mcpProbeWire.d.ts +51 -0
- package/dist/mcpProbeWire.js +217 -0
- package/dist/printToolResultFrame.d.ts +1 -0
- package/dist/printToolResultFrame.js +2 -0
- package/dist/request/taskRequest.d.ts +20 -1
- package/dist/request/taskRequest.js +198 -52
- package/dist/sdkRegistryTransit.d.ts +6 -0
- package/dist/sdkRegistryTransit.js +5 -0
- package/dist/sdkWireTransit.d.ts +2 -1
- package/dist/sdkWireTransit.js +1 -0
- package/dist/toolResult.d.ts +15 -1
- package/dist/toolResult.js +61 -4
- package/dist/wireFailureShape.d.ts +1 -0
- package/dist/wireFailureShape.js +44 -10
- package/docs/INTEGRATION-CLIENTS.md +209 -15
- package/package.json +8 -4
package/CHANGELOG.md
CHANGED
|
@@ -49,6 +49,57 @@
|
|
|
49
49
|
> 挡住 ⇒ 本批把它机械化——④a0 对 `pending` 行**要求段头已是日期形**(`(未发布)` 直接红),阶段一
|
|
50
50
|
> commit 漏转在发布前就红,不再靠人记。
|
|
51
51
|
|
|
52
|
+
## 0.79.1(2026-09-21)
|
|
53
|
+
|
|
54
|
+
> 主题:**终帧结构化产出改用 CC 拼法 + 写审批退化卡拿回路径 + 云控制面子路径入口**(patch;peer 地板不动 `>=11.2.1`;根公面运行期导出 1184 不变)。三件:终帧结构化产出同帧铸 CC 形 `structured_output`(旧拼法 `structuredOutput` 过渡一版,0.80.0 删);写审批 `argsOmitted` 退化卡在没有受护写入的部署上重新解得出路径;云控制面十值二型经本包**第二个入口** `@sema-agent/client-core/registry` 原样转口(根入口零变,不用它的端零升级动作)。
|
|
55
|
+
|
|
56
|
+
### Fixed
|
|
57
|
+
|
|
58
|
+
- **终帧结构化产出改用 CC 拼法**(CC-130):`outputSchema` 任务的产出此前只以 camelCase `structuredOutput` 铸在成功终帧上,而 CC `SDKResultSuccess` 的那一位是 snake_case `structured_output` —— 那不是一个 additive 的超集位,是**把 CC 同名键的名字拼错了**,按 CC 形读 `result.structured_output` 的消费方一律读空。本版起同一帧**同时**铸 `structured_output`(权威)与 `structuredOutput`(deprecated,**0.80.0 删**),两键同值且**同一引用**;wire 位恰读一次(各读一次会让值随读变的取值器把两键铸成两个对象);缺席、以及**键在场而值 `undefined`**,都是两键都不铸(绝不铸值为 `undefined` 的键);`null` / `0` / `""` / `false` 是真产出,照铸;数组与原始值等非记录形照带、同一引用(形状归调用方的 schema,本包不筛形);错误信封两个拼法都不带(CC 错误臂没有这一位)。CC 到底是哪个拼法,由门从类型镜像的语法树现场见证,不是门里抄的一份常量 —— 上游改名那天门会说话。⚠️ 构建期去注释让 `@deprecated` 进不了声明文件,退役通告只在本档与接入文档。
|
|
59
|
+
- **写审批退化卡在没有受护写入的部署上拿回路径**(CC-129):`tool_approval` 帧带 `argsOmitted`(且流上没有 `tool_start.args`)时,卡上的路径从引擎自己那句审批问话里兜出来。此前那只读口把问话当**整串**锚死,而引擎在问句之后**恒追加**一句说明(有些配置下再追加一句写入域说明)⇒ 引擎环境不提供受护写入的部署上读口永不命中,卡的 diff 退化成空写 —— 恰恰是用户只能靠这张卡做安全决策的场景。现在锚在**恒在且逐字**的那一段(句首的问句本体 + 句体里的路径收口)上,后面跟什么都忽略;路径自带一只引号也逐字解得出。缺席照旧诚实且在一处更严:路径是原样插值的自由文本,自己就能带上收口形,收口形出现两次以上时读口**答缺席而不挑一只**;问句本体不在句首、同一策略的另两句问话、空路径,同答缺席。
|
|
60
|
+
|
|
61
|
+
### Changed
|
|
62
|
+
|
|
63
|
+
- **请求装配矩阵 `outputSchema` 行的理由句**:不再点名某个壳的旗子为唯一来源(哪个壳今天真的接了无人值守入口是壳侧的事,本表只说座位);`live` 位的含义不变 = 仅在 live 车道 stamp,不是「有生产者」。零行为面。
|
|
64
|
+
|
|
65
|
+
### Added
|
|
66
|
+
|
|
67
|
+
- **云控制面经本包自己的入口 `@sema-agent/client-core/registry` 原样转口**(CC-128 ①):端需要的十个值(云控制面客户端类、个人域 / 团队 draft 配置读、生效配置条件读、健康探针、反馈投递、认证路径常量、内容寻址纯函数、两只以 `instanceof` 判的错误类)与两个型(令牌对 / 令牌存储契约)从本包再导出,**就是上游导出的同一个对象**,不是包装 —— 包一层就把「同一实现」这条唯一的抗漂移保证拆掉了。它住在**第二个入口**而不是根上,镜像上游把它放在子路径的分层:主体不同(一边是引擎的服务凭证,一边是一个人的会轮换的令牌),从不碰云控制面的端既不该解析它也不该类型检查它。**根入口一个字不变,导出数不变,不用这一面的端升级是零动作。** 子路径的 `types` 要 `moduleResolution` 为 `bundler` / `node16` / `nodenext`。本口只给存量搬落点用,新的云控制面逻辑写进本包。设备面子路径刻意不转:它是 Node-only 面(零 import、靠 `Buffer` 全局)。已知限:上游该子路径的两份声明文件引用一个它只列在自己 devDependencies 里的声明包,import **本子路径**且关掉 `skipLibCheck` 的消费方会看到恰两条找不到模块的错误,只 import 根入口的看不到;两个读数都由门钉住,上游补齐那天这条随之消失。登录 / 令牌刷新 / scope 切换那五名签名型正落在这条缺口上,本版**不转**,端那条腿仍需直连。
|
|
68
|
+
|
|
69
|
+
## 0.79.0(2026-09-21)
|
|
70
|
+
|
|
71
|
+
> 主题:**server 7.93.0 过境批 —— 写口回执第六臂 + 无 run 可读的 MCP 状态面 + 审批卡「清不掉」那一位 + 请求装配第三车道与四个 wire 键归包**(🔴 **minor**:peer sdk 地板 `>=11.0.1` → **`>=11.2.1`**;型面 BREAKING:`writePersistedRule` 结局联合 +1 臂 `unverified`、`RulesFailure` +2 kind、拒因表 +1 词、`RequestLane` +1 词、`RequestFieldSpec` 新增必填列;行为面 BREAKING:无人值守车道从此带 `model`;deny 收口帧按归因分两串;模型轮结束划 assistant 消息界;公面运行期导出 1154 → **1184**;wire 新键进车道表:`approverPosture` / `maxTokens` / `outputRetries`;审批帧新键 `mandated`)。🔴 **不可发组合**:server 7.93.0 + client-core < 0.79.0(`stillLive: "unknown"` 第六臂 / `mcpProbe` 读口)。**成文改口段见接入文档 §85 85y,按表态制点名三端。**
|
|
72
|
+
|
|
73
|
+
### 🔴 BREAKING(型面 / 行为面)
|
|
74
|
+
|
|
75
|
+
- **peer `@sema-agent/sdk` 地板 `>=11.0.1` → `>=11.2.1`**:11.2.x 声明 `capabilities.mcpProbe`、`mcpCapabilities` / `probeMcp` + `McpProbeFace`、写回执第二支 `stillLive: Exclude<RemovalLiveness, "yes">`(`unknown` 可达)、`APIError.extra`、行上 `liveness?: McpServerLiveness`;11.2.1 再补 `TaskRequest.approverPosture` 与审批帧键 `mandated`(型面 + 运行期键锚)。本包按 11.2.1 编译,消费端实装随 server 7.93.0 换钉,11.0.1 失去物料见证。四处同批 + `run-sdk-floor-test.mjs` FLOOR + 负控锚。devDep core `~7.26.0`。
|
|
76
|
+
- **`writePersistedRule` 结局联合 +1 臂 `{ status: 'unverified', wrote, rev, message }`**(CC-124;server ≥7.93.0 写后读回失败 ⇒ 200 `{status, rev, stillLive:"unknown"}` 无 `rule`,旧形 500):写**落了**(`rev` 真)而引擎读回时**没取到活性** —— 规则活性未被观察,不是「不在」也不是「说不清写没写」。🔴 不要盲重试(可能正站着,也可能刚被撤);处置 = `listAllPersistedRules` 看现状。0.78.x 上这一形落 `unknown / malformed_result` —— **成文改口**。带 `rule` 的 `unknown` 仍是两个判别位打架 ⇒ `malformed_result`。
|
|
77
|
+
- **`RulesFailure` +2 kind / 拒因表 +1 词**(CC-124;503 体 `committed` 判别位,经 `APIError.extra` 读):写腿 `state.rule_write_failed` + `committed:"no"` ⇒ kind `write-not-committed` ⇒ `refused / not_committed`(可重发);`"unknown"` / 表外词 / 缺席 ⇒ `write-indeterminate` ⇒ `unknown / indeterminate`(禁盲重试)。撤销腿 `state.rule_remove_failed` + `"unknown"` / 表外词 ⇒ kind `remove-indeterminate`(禁盲重试,列举对账);`"no"` / 缺席(≤7.92.x)⇒ `retryable` 照旧。错误对象各格**独立**受保护快照:抛错的 `extra` getter 不抹掉已读到的出处码;`committed` 三态 `no` / `unknown` / `unreadable`(键在场却不是两词、或 `extra` / 该键读不出 ⇒ 保守侧 `unreadable`;缺席才是老服务可重发)。
|
|
78
|
+
- **请求装配:无人值守车道从此带 `model`**([7868] 一):车道表 `model` 行此前只在交互车道有座,无人值守车道传的模型名**静默丢**(引擎用部署缺省、退出码 0)。本版三条车道都有座(不受 live 门),坏模型名会像交互态一样拿到上游的 400 点名。钉着「无人值守不带 `model`」的判据会红 —— 那是判据过期。
|
|
79
|
+
- **`RequestLane` +1 词 `'utility'` + `RequestFieldSpec.whyUtilityLane` 必填**(CC-123):第三条车道 = 宿主自己的一次性 side-channel 提交(独立会话 id / 零工具面 / 小预算 / 显式模型)。🔴 本车道**必须**带字面 `excludeAllTools: true`,否则构造期 `TypeError` —— 这条车道一整片「无座」的理由都压在零工具面上,前提不成立时产出的请求会比无人值守车道同一份输入**更宽**(用户已解析的 deny 面在这条车道上无座)。车道表 43 行逐行定座(有座 16),新导出 `REQUEST_LANES`(冻结清单)。`AgentSessionConfig.lane` 改为从闭集派生的写法,值集不变。
|
|
80
|
+
- **deny 收口帧不再对每一次拒绝都盖同一句**(CC-125):决断对象 `ApprovalCardDenyDecision` 加 `settledBy?: 'human' | 'policy'`(值域是上游 `ApprovalSettledBy` 在这个位置上的可达子集;只认自有数据属性,原型链 / 取值器 / 表外词一律当缺席)。`policy` ⇒ 收口帧 `output` = 新冻结常量 `HITL_POLICY_DENY_MESSAGE`(非交互拒绝句)+ 换行 + 宿主自己的拒因(有则带);`human` / 缺席 ⇒ 与 0.78.2 **逐字节相同**。此前无论是人按了 No、权限规则拒的、还是本车道根本没有审批口,收口帧都写「用户不想继续」—— 而那条车道上没有人被问过。live 帧腿与 durable park 腿同律。按「凡 deny 必见 REJECT 句」写的判据要分成两向。
|
|
81
|
+
|
|
82
|
+
### Added
|
|
83
|
+
|
|
84
|
+
- **无 run 可读的逐台 MCP 状态面**(CC-74;server ≥7.93.0):`capabilities.mcpProbe` 四态读面(第十二只能力位读器:`projectMcpProbeCapability` / `noteEngineCapsForMcpProbe` / `observedMcpProbe` / `forgetMcpProbeReading` / `mcpProbeAvailable` / `mcpProbeDoctorDetail`)+ 两只调用口 `readMcpCapabilities(facade, …)`(读本部署自己的申报)/ `probeMcpServers(facade, { specs, … })`(探调用方自带的申报)。在场位由**引擎版本**承担:键缺席 = 老引擎(那条路径回带码的 404),读 `not_reported`,不折否;`false` = 引擎明说的否,**不推因由**;非布尔 ⇒ 畸形删格。`mcpProbeAvailable` 只答「这次调用要不要上 wire」:明确的否才零请求,两种「读不出」照发。单一失败判官 `classifyMcpProbeFailure` **出处先于状态码**:无码的 4xx / 501 / 503 一律 `no_verdict`;十二条码各一臂(身份三码里有一个不在 `auth.` 族);带码 5xx 与认不得的带码 4xx 只说「读不出」;429 / 503 带等待秒数、缺席不铸 0。200 体的行与流式腿 / 会话面板回放腿走**同一只窄化器**;本面按**下标**与申报表配对:丢过行 ⇒ 整只读不出(不是半张表),行数 ≠ 申报数 ⇒ `index_misaligned`,`servers: []` 与「非空全坏」分开。`probedAt` / `ttlSec` 原样过境(本包不铸新鲜度判词);自带序列化(`toJSON`)的名单响亮拒、零请求;零重试。
|
|
85
|
+
- **审批卡「清不掉」那一位**(CC-110;core 7.26.0 / server 7.93.0 / sdk 11.2.1):`ToolApprovalFrame.mandated?: true` 进 interface 与运行期键镜像(29 → 30),活卡帧腿只认严格 `true` 条件 stamp 到 `ApprovalCardRequest.mandated?: true`;判据口 `approvalIsMandated(card)` —— 两条腿一个真源(帧位 ∨ 寄存行的 `ruleOffersAbsence === "mandated"`),🔴 端**别直接读位**(寄存行没有这一位);措辞铸点 `mandatedApprovalDetail()`(零参数;句中不指人去写规则 —— 门是强制的,写了也消不掉)。寄存行腿与 `livePending` 行视图**刻意零新键**(上游行形无此位,不自铸第二个源)。`mandated` ≠ `requiresRealApproval`:前者说「没有规则能清掉这一问」,后者才是「要人不要配置」。
|
|
86
|
+
- **`approverPosture` 车道行**(CC-116;sdk 11.2.1 `TaskRequest.approverPosture?: "bypass"`):交互 + 无人值守两条车道,live 门后;单成员闭集,坏值构造期 `TypeError` 只报形状;型取自 sdk + 编译期双向钉;新导出 `APPROVER_POSTURE_BYPASS` + `approverPostureDeclarationField(declared)`。🔴 它**不授权任何东西**:声明的唯一条件是宿主确实自己自动答这个 run 的审批卡;与 `permissionMode` 各自原样过境、**互不派生**。
|
|
87
|
+
- **`maxTokens` / `outputRetries` 两座**(CC-123):各与孪生(`maxCostUsd` / `outputSchema`)**座位集逐字相同**(无人值守 + utility,live 门后);有限正整数,坏值 `TypeError`(上游对坏值是安静按「没给」处理,不是 4xx);不预夹上游的 [1,10] 与部署上限。入参先按**数据属性**整体快照、再按既有读序取值器 —— 任何一位上的取值器都吞不掉别的位的数据属性(此前只按读序保护一个方向);键集 / 描述符读不出的代理入参响亮拒,不当缺席。
|
|
88
|
+
- **两只纯函数**(CC-118):`taskRequestOmissionCauseDetail(cause)`(回执四个成因词各一句人话,表外词兜底并原样带词)/ `parseMaxCostUsd(text)`(五词判别联合 `not_text` / `empty` / `not_a_number` / `not_finite` / `not_positive`;形判据刻意窄于 `Number()`:`1e3` / `0x10` / `.5` 一类写法在「到底要多少钱」上有歧义,宁可当场被看见)。
|
|
89
|
+
- **`memory.project_scope_absent`**(CC-122;core 7.26.0 第 68 枚通告码):进 `ENGINE_NOTICE_CODES` 镜像(顺序同源,operator 面)。
|
|
90
|
+
- **拒绝的机读事实,不用再从文案反推**(CC-125):被拒收口帧与两个转录出口(转录卡 / 无人值守车道的 `user` 信封)带 `_sema_denial_kind`(分类词,在消息信封顶层、不进 `tool_result` block;值域 = 上游转录记录键 `toolDenialKind` 的真词表 `CC_TOOL_DENIAL_KINDS` 七词镜像,`human` ⇒ `user-rejected`、`policy` ⇒ `permission-rule`、缺席 ⇒ 整键不铸);终帧 `_sema_permission_denials[]` 行带 `deniedBy`(sdk `DeniedBy` 十词闭集,按调用 id 从同一条流的门记录 join,来源位 `_sema_denied_by_source: 'tool_end'`)与两个载体同名同值的 `toolDenialKind`;终帧 `_sema_zero_output_denied: true`(present-iff:sema 载体拒绝行非空 ∧ 本流零成功工具收口(在去重之前观测)∧ 本流从流首帧看起;任一不成立 ⇒ 整键缺席,绝不铸 `false`);同一调用 id 的两只收口帧归因互相矛盾 ⇒ 两格都不 join(不按到达序任选)。新导出:`HITL_POLICY_DENY_MESSAGE` / `APPROVAL_DENY_SETTLED_BY_WORDS` / `readApprovalDenySettledBy` / `SEMA_DENIAL_KIND_KEY` / `CC_TOOL_DENIAL_KINDS` / `isCcToolDenialKind` / `isCcToolDenialKindADenial` / `isGateDeniedByWord`。`settledBy` 今天不上 wire(上游 respond 入参尚无这一位),本版只决定宿主面那一戳。
|
|
91
|
+
|
|
92
|
+
### Fixed
|
|
93
|
+
|
|
94
|
+
- **`displayBody` 对委派结果全文不生效**(CC-127;[7885] 一.4:后台任务详情面把整份给模型看的报告脚手架逐字摆给人看):判据此前是「整串两端就是围栏」,而引擎铸委派结果全文时围栏只是其中**一段**(之前有帧头 + 若干字段行 + 结果段标签行,之后有尾注句 / 可选的内部标识行 / 用量块)。现在读口可在**报告框架内部**定位那一段,并把围栏之外的字节逐字交在新的可选 `frame` 键里(`before` / `after` / `section`;`before + 摘出的那一段 + after` 逐字节 === 入参)。三支上游形各有读法:结果围栏 ⇒ 正文 = 委派方写的那段话;「被打断前最后一段文本」⇒ 同上并报 `partial_findings`;引擎的「没有文本结果」哨兵 ⇒ 正文空串并报 `no_text_result`。🔴 **体内定位只在调用方显式声明来源时才走**(`displayBody(text, 'delegation_report')`;新导出型 `DisplayBodyOrigin` 两成员闭集 / `DelegationReportFrame`;坏值 / 缺席一律落回通用读法):锚只能认文本形状、认不出来源,默认打开会把一段**长得像**报告的普通文本的真正文当框架藏掉 ⇒ `displayBody(text)` 与 0.78.1 逐字节同答,既有调用点一个字不改;要让这一版到用户屏上,端需加那一个词。三处结构行**各自必须在全文里只出现一次**,任一处出现两次(委派方文本里照抄了其中一行 / 任务描述里带了一整份报告样例 / 两份报告首尾相接)⇒ 歧义,拒绝并交回入参逐字 —— 锚不唯一时挑哪一个都可能把别人写的话当成委派方说的话。成文改口:0.78.1 的读口只对整串就是围栏的结果生效,「详情面已经不会出现围栏」这类说法作废。
|
|
95
|
+
- **模型轮结束现在划 assistant 消息界**(CC-126;[7880] 一):一个 turn 的回答分成两段而两段之间没有工具调用(中途插话或注入的系统条目都会造出这一形)时,此前两段被提交进**同一条**转录行(上一句的句尾直接接下一句的句首),终答比较器拿到的是这份拼接、比的却是引擎的**最后一条**消息 ⇒ 对一个完全正常的回答报「最终答案与上面流出的文本不一致」。现在轮末帧那一拍提交挂着的散文并开始新消息:每段各自一行,比较回到「一条 assistant 消息对一条 assistant 消息」。缺账轮同样划界(「这一轮结束了」与「这一轮花了多少」是两件事,只有前者决定边界);属于子流的轮末帧不给 leader 划界。真分岔仍照发同一条披露,消失的只是假的那一条。轮末同时关掉段权威替换窗口(下一轮的 `text_end` 不再指认上一轮的行 —— 截断形下上一轮那条行保留;工具卡边界上那一形仍是 0.68.1 起的已知限 KL-30),只带后台子代标记(`bgAgentId`)的轮末帧在折叠点也判为子流、不给 leader 划界。已知限:引擎违约的轮末帧整帧不投影 ⇒ 那一轮不划界。
|
|
96
|
+
|
|
97
|
+
### Changed(判据 / 门)
|
|
98
|
+
|
|
99
|
+
- MCP 活性读口(CC-36)的**词表与在场判据改锚到 sdk 型面**:sdk 11.2.0 起 `WiringManifestMcpEntry.liveness?: McpServerLiveness` 在型,门的上游见证臂如约翻红 ⇒ 三枚编译期钉(本表 ⊆ 型面三词 / 型面三词 ⊆ 本表 / 行型声明这一格);读法仍是结构读,行为零变。
|
|
100
|
+
- 审批帧键对账:`mandated` 曾按领先登记先追 server(sdk 11.2.0 的锚尚无此键),换钉 11.2.1 当天按退出条件删登记,回到逐元素相等;形腿加一道由 AST **反算**的名册(每接口「可选 ∧ 类型恰是字面 `true`」的成员逐元素比,放宽即掉出名册);闭词表腿按**引用相等**钉「再导出的就是上游那一个数组对象」。
|
|
101
|
+
- 写门 `run-persisted-rule-write-test.mjs` → 380;新门 `run-mcp-probe-face-test.mjs` 147;请求装配回执门 → 417;`run-engine-vocab-floor-test.mjs` G3-c 锚同时认 core 7.26.0 的读形;`run-engine-notice-catalog-test.mjs` 码册六十八;登记物:公面 1154 → 1184、测试钩 56 → 57、门 120 → 123。
|
|
102
|
+
|
|
52
103
|
## 0.78.2(2026-09-21)
|
|
53
104
|
|
|
54
105
|
> 主题:**门的棘轮登记数字单真源**(patch;`src/` 零改动、型面零变、行为零变、公面 1154 不变;出包面只动 README「Guards」表一行)—— CC-79 第一期(RH-5 Phase A):五只门的十一格棘轮数字与它们的沿革账搬进一份登记物,门只读不抄,负控改篡改登记物,下调通道让松量显形;顺手收掉两格存量松量;非流式接线回执门补最小非零边界格。
|