JMOS文档与样张

应用接入 JMOS 指南

来源:仓库 docs/应用接入JMOS指南.md · 版本 0ca44f9 · 契约依据为 9-18 缓存 v0.1,待实时复核 · 契约原文不随本站发布

在本站打开 13 示范演示适配器正式适配器(未接通)07 工作台内嵌

更新日期:2026-10-09,Asia/Shanghai。适用对象:做界面的 UI/UX 同事(包括刚入门的)、写服务的后端同事。

本文说明一个应用怎样“接入 JMOS”:前端怎样长得像 JMOS、怎样出现在应用中心和工作台里、怎样把数据和提交交给可替换的适配器;后端怎样按 JMOS 架构找到负责的模块、按版本化契约对接、不绕路。全文用 13 故障诊断 做贯穿示例,对应的可运行样张在 prototypes/app-integration-13/。

依据与时效(请先读)


1. 一页总览

一句话:页面只管显示和交互;数据、判断和提交都经过“能力接口 → 适配器 → JMOS 模块”这条路,演示和正式可以一键切换,正式失败时如实报错,不偷偷换回演示数据。

流程图(Mermaid 源码,站内不渲染图形)
flowchart LR
  subgraph 前端["前端(本仓)"]
    V["页面视图<br/>HTML/CSS/图表/局部交互"] --> U["前端用例<br/>加载·草稿·提交·重试"]
    U --> P{{"能力接口<br/>如 diagnosisPort"}}
    P --> D["演示适配器<br/>固定数据·可重置"]
    P --> F["正式适配器<br/>按契约映射"]
    U --> H["宿主桥接<br/>导航·主题·上下文·生命周期"]
  end
  B["初始化入口 boot<br/>选择并注入适配器"] -.-> P
  F -->|"浏览器入口(多数仍是契约缺口)"| E["entry / mat 等 JMOS 模块"]
  E --> S["dsvc 读取 · upc 身份 · rt→down 受控写 · twin→ver→eval 排练与签发"]
  H <-->|"postMessage(只编排,不做业务)"| W["07 工作台 / 05 应用中心"]

接入一个应用的完整流程:

流程图(Mermaid 源码,站内不渲染图形)
flowchart TD
  A["1 写清能力:用户在这页要做什么"] --> B["2 经 Bridge 查模块归属与契约<br/>记录路径·版本·审批·来源·同步时间"]
  B --> C["3 定义能力接口(port)<br/>方法、结果信封、错误语义"]
  C --> D["4 写演示适配器<br/>把剧本/样例/模拟提交搬进来"]
  D --> E["5 页面改为只依赖接口<br/>导航与提交分开"]
  E --> F["6 写正式适配器骨架<br/>已定字段映射,缺的标契约缺口"]
  F --> G["7 登记:05 应用中心、07 工作台、问小锦"]
  G --> H["8 验收:视觉对照、交互、两种适配器、内嵌"]
  H --> I["9 契约补齐后逐项接通<br/>真实集成另行验收"]
你是谁先看哪几节
UI/UX,第一次做 JMOS 页面§2 设计基础 → §3 登记 → §8 自查清单
前端,要把页面拆成可接后端§4 宿主桥接 → §5 适配器 → §6 状态归属 → §9 13 示例
后端§7 按 Bridge 接入 → §7.5 契约缺口登记 → §9

2. 前端接入清单:设计基础

新应用首先要“看起来、用起来就是 JMOS”。这些是硬要求,来源见各行。

项要求依据
色彩 v1只用已有语义变量(--jm-text-*、--jm-bg-*、--jm-border、--jm-ok-* / --jm-bad-*、--jm-chart-* 等)。不新增 HEX、rgba、color-mix;不加暖色、米白或整页罩色。状态色只表达状态色彩规范 v1(docs/JMOS色彩规范-v1.md),唯一源 design-system/color/v1.json
分级与状态严重度(sev critical/high/medium)和状态(st ok/warn/bad/info/neutral)按规范选择;后端严重度与前端选中/焦点/请求中等状态分开映射,不合成一个字段分级与状态选择(docs/JMOS分级与状态选择.md)
几何克制小圆角(按角色 4/6/8/2px,用 --jm-radius-* 变量),细线分层,不套多层卡片,不加装饰设计语言不变量(docs/设计语言不变量.md)
图标只用官方图标族 icons/jmos-icons.js:<i data-ic="名称"></i> 后调用 jmIcons.hydrate(),或 jmIcons.svg('名称')。不用 legacy assets/icons.js,不自画图标app/jmos/icons/
手机底栏有模块导航的页面用统一底栏 方案 A 配方(已并入,提交 0f512bf):≤640 显示前 5 项,官方图标,当前项 brand-soft 底 + --jm-radius-sm,徽标 16×16,行间隔 4px、space-around04 两页与 01/02 现行实现
深浅主题同步加载 assets/mvp.js(或 theme-sync.js)。主题来源顺序:?theme= → localStorage['jmos-theme'] → 默认;内嵌时响应宿主 jmos-theme 消息;同源其他页通过 storage 事件同步。重绘图表监听 jm-theme 事件。不在页面里写死颜色assets/mvp.js
无级自适应从 390 手机(触屏)到 768 平板、1440 笔记本、2560/4K 都可用:用 minmax(0,1fr)、clamp()、流式网格,不按设备挡位写死宽度;不横向溢出;触控目标够大。MacBook Air 上滚动和切换要流畅设计规范 §14 流式布局
减少动态效果尊重 prefers-reduced-motion;动效不承载业务含义不变量“动效与适配”
随处问小锦、就地完成加载 assets/assist.js 并声明 data-page="页号";可问的对象(报警、证据、表格行、图表)要能被它标记;按 / 或 ⌘K 在本页打开对话,不跳走。“问小锦”跳完整对话只作为补充入口assets/assist.js
文案中文、短句、说人话;演示页必须写明“演示数据为虚构示例”现有各页

13 示例:13 原本就满足以上各项,接入样张没有改任何颜色、圆角、字体或布局;新增的两处样式(第 6 步“尚未提交”、接入状态面板)只用已有变量,见 §9。


3. 登记:出现在 05 应用中心和 07 工作台

JMOS 里“应用存在”的权威是 reg 注册中心(architecture.json 节点 reg:制品与能力目录,“一切契约的挂靠点”)。但契约仓目前没有 reg__* 契约目录,前端拿不到权威目录 —— 这是 契约缺口。在补齐之前,UI 仓里按下面的位置静态登记,并且把“目录存在”“有权限”“运行健康”“业务摘要”当成四件不同的事。

位置登记什么13 的现状
05-应用卡片首页.html 应用清单code、名称、一句话简介、插图、状态三元组、meta;搜索关键词 KWC-01 故障诊断,关键词“报警 故障 根因 …”
07-台前调度工作台.html META / SCENE名称与状态;src: t => './页面.html?theme=' + t、预览图、mvp: 1(表示页面支持主题消息)'C-01': { src: t => './13-故障诊断.html?theme=${t}', … mvp: 1 }
07 FLUIDP页面已做流式布局、手机上可按真实宽度显示时才加入含 C-01
assets/mvp.js JM_APPS文件名 → 应用编号;内嵌时页内链接会变成 jmos-open 交给工作台打开'13-故障诊断.html': 'C-01'
assets/assist.js PAGES页号、名称、文件、编号;问小锦的页面上下文'13': { name: '故障诊断', … code: 'C-01' }

重复清单本身是已登记的耦合(分层文档“05 及 07:重复应用清单”),以后应收敛为“单一展示目录 + 可替换目录适配器”,届时目录适配器对接 reg。


4. 宿主桥接:页面和工作台之间能说什么

内嵌在 07(iframe)时,页面与宿主只交换导航、主题、上下文、视图生命周期四类消息。审批、执行、计数这类业务事实不能靠 postMessage 决定。

方向消息含义规则
07 → 页面jmos-theme {theme}切主题页面立即应用,不回发
07 → 页面jmos-ctx、jmos-cmdk上下文、命令面板只影响展示与选择
07 → 页面jmos-pause / jmos-resume视图隐藏/恢复只暂停渲染;不暂停真实任务
07 → 页面jmos-queue {n}待确认数量仅显示用;以后应来自同一队列读模型
页面 → 07jmos-open {code, q}打开另一应用由 mvp.js 统一转换页内链接
页面 → 07jmos:flyto、jmos:pin、jmos-close、jmos-summon、jmos-esc定位孪生、钉住、关闭、唤起小锦、退出只编排视图
页面 → 07jmos:queue通知“刚有一张单进入待确认”只在服务受理后发;载荷是结构化变更 + 证据引用(见 §9),不带 HTML
07 → 10jmos-queue-add {item}把队列项交给 10 显示过渡做法;最终 10 应从 entry 队列读模型刷新
05 ↔ 07jmos-focus、jmos-search应用中心焦点与搜索—

要求:来源与载荷校验集中在宿主桥接适配器里做;“视图已就绪”“消息已投递”“服务已受理”“业务已完成”分开记录。页面不读别的页面的全局变量,也不覆盖别的页面的函数。


5. 能力接口与适配器:演示和正式怎么装配

5.1 三件东西

  1. 能力接口(port):用业务语言写的一组方法,例如“读取诊断”“生成变更草稿”“提交到待确认”。页面和用例只认它。
  2. 演示适配器:实现接口,返回固定、可复现、可重置的数据;演示状态放在独立命名空间(例如 sessionStorage 的 jmos-demo/13,?demo-reset=1 清空)。剧本、样例数据、模拟提交、演示时钟都放这里。
  3. 正式适配器:实现同一接口,按契约组请求、解析信封、转换错误。失败时返回真实错误或降级,绝不回退成演示数据。

5.2 结果统一用响应信封的外形

所有方法返回 Promise<Result>,外形沿用 contracts/_common/response-envelope.schema.json(v0.1.0):

字段必需说明
status是ok / degraded / error。degraded 要在界面上看得出来(例如证据包 missing[] 非空)
code是<节点>.<类别>.<编号>;成功为 <节点>.<资源>.000。类别见 contracts/_common/error-codes.yaml(client 400、auth 401、perm 403、notfound 404、conflict 409、gone 410、contract 412、taint 422、quota 429、internal 500、upstream 502、unavailable 503、timeout 504)
message、data、correlation_id、contract_version是关联 ID 用于排障;契约版本要显示在接入状态里
evidence_refs[]否{ref_type: ts/ev/curve/media/biz/prog/know/pack, ref_id, as_of, note}。事实类回答必须带非空证据引用,并带 knowledge_version 与 model_version
error_data出错时http_status、retryable、details、upgrade_required、approval_ref

前端可以加一个自己的 source: 'demo'|'bridge' 字段区分来源,但要注明它不属于契约。注意:现有错误码只覆盖 ev/dsvc/gw/upc/obs,mat、entry、reg 没有错误码表(契约缺口),前端在缺口期用 frontend.* 前缀标记自己产生的错误,不冒充服务端码。

5.3 装配:初始化入口显式选择

// boot.js —— 启动时明确选一个,不做“失败就换另一个”
const q = new URLSearchParams(location.search);
const port = q.get('adapter') === 'bridge'
  ? JMDiagnosisBridgeAdapter.create({ /* 身份、范围等由宿主或登录流程提供 */ })
  : JMDiagnosisDemoAdapter.create();
const app = JMDiagnosisApp.create({ port, host: JMHostBridge.create(window) });
JMDiagnosisView.mount(app);
app.start(q.get('case'));

页面上要有一个默认收起的“接入状态”说明(13 样张在左栏底部),告诉看的人当前是演示还是正式、契约版本、数据来自哪里。

5.4 写操作的三条前端规矩


6. 状态与存储归属

状态归谁13 的例子
悬停、焦点、展开、滚动、当前步骤当前视图,不进契约当前步骤 ?step=、推理过程展开、引用高亮
主题、布局、固定、最近使用前端本地偏好(jmos-theme 等)主题
演示会话、模拟提交、演示时钟演示命名空间,可重置jmos-demo/13(提交回执、停机分钟数)
正式查询缓存、未发送草稿、待处理请求前端持有副本,标清身份、范围、版本、新鲜度;身份变化即清退;旧响应不覆盖新选择勾选措施后的草稿(用例丢弃过期响应)
正式会话、队列、任务、权限、设备结果后端权威待确认队列、审批、执行与读回

7. 后端按 Bridge 接入

7.1 先查模块归属(每个新能力都走一遍)

  1. 用 Bridge 查:jmos status 确认连接与同步时间,再查模块、上下游连线和完整契约(Bridge 的 MCP 工具或门户)。查不到实时结果时,用 Bridge 缓存或契约仓原文,并在登记表写明“缓存/原文,同步时间,待实时复核”。
  2. 在 architecture.json 找节点:看 layer_name、one_liner、target、分期任务 phase_tasks、认领状态 status。节点之间的连线 E-xx 才是服务间约定。
  3. 找契约目录:contracts/<from>__<to>/(每条连线一个)或 contracts/<node>__north/(北向公共契约)。每个目录只有 README.md、openapi.yaml、asyncapi.yaml、mcp-tools.yaml、*.schema.json;README 写明连线标签、形态、contract_version、N/N-1 截止、审批编号。
  4. 记录:原文路径、版本、审批、来源(实时/缓存)、同步时间、明确字段、开放问题(待定)、浏览器能否直接调用。
  5. 服务间连线 ≠ 浏览器 API。E-21、E-25、E-26 等是服务之间的约定,前端不能直接调用;浏览器能调用哪个入口必须有北向或专门的消费契约,没有就是契约缺口。

7.2 模块职责(摘自 architecture.json,事实源 v0,抽取于 2026-09-11)

节点名称(层)一句话职责应用接入时的含义
entry统一入口与收件箱(④ 治理层)人侧的权威模型与交互终局待确认队列、确认/拒绝、值班权威、超时规则在这里;三期任务是“对话+看板+待确认”
mat场景应用矩阵(⑤ 应用层)场景包机制的产物清单诊断、问答、监控等场景的业务逻辑;二期任务含诊断场景
gw模型网关+模型生命周期(③ 能力层)一个逻辑推理门,多个物理通道场景经 E-08 调模型;不是网页 API 网关
dsvc统一数据服务(② 数据层)逻辑单读取口所有分析读取、证据包都走它,不逐页直连数据源
reg注册中心(④ 治理层)一切契约的挂靠点应用与能力目录;目前无契约(缺口)
upc统一身份+内容信任(④ 治理层)谁在调用、内容可不可信登录、委托、访问范围、污点
rt智能体运行时(③ 能力层)长任务执行内核的事务语义长任务与恢复;不是普通对话编排器
sch任务调度与三层仲裁(④)冲突裁决任务冲突由它裁决,页面不排队
act动作分级与安全包线(④)四档自治的闭环生效档位由它给出,页面不自算
eval评测门禁(④)唯一签发权威上线、升档、证据通过由它签发
down命令网关(① 接入层)全厂命令权威唯一真实写门
twin / ver产线孪生与排练场(③)/ 验证设施(横切)先在不伤产线的地方失败 / 产证排练产证据,签发仍在 eval
obs审计与可观测(④)事后审计不可抵赖写操作留审计
ev事件(② 数据层)智能的主食报警、事件经统一事件信封

7.3 硬规则

  1. 不旁路:不从页面或应用后端直连 PLC、MES、数据库或内部服务;读取走 dsvc,模型走 gw。
  2. 写设备只走 rt → down(E-25):contracts/rt__down/ 规定写入经 POST /v1/down/intents,并明确禁止直连 PLC/DB。请求里 confirm_token_ref、capability_token_ref、lock_id 是三样东西,不能合并成一个“已授权”。
  3. 审批、下发、读回分开:E-26(contracts/entry__rt/)的确认令牌 token_id / long_task_id / intent_id / watch_authority / evidence_pack_ref 各指不同实体,过期令牌不会被自动执行;E-25 的命令状态(accepted / dispatched / readback / rejected / voided / aborted,枚举待定)与 readback_match 分开显示。审批通过 ≠ 已执行 ≠ 读回一致。
  4. 响应信封:所有业务响应带 status ok/degraded/error、错误码、证据引用、correlation_id、contract_version(contracts/_common/response-envelope.schema.json)。OAuth 响应按其协议,不套信封。
  5. 公共头(contracts/_common/headers.yaml):Authorization(Bearer,UPC 签发)、X-Actor-Id({kind}:{id},human/agent/tool)、条件必需的 X-On-Behalf-Of、X-Access-Scope(只能是子集,不扩权)、X-Correlation-Id(UUIDv7)、X-Contract-Version、写请求的 X-Idempotency-Key;X-Read-Semantics 只用于 dsvc,X-Model-Policy 只用于 gw。
  6. 身份走 upc:令牌由 upc 签发(E-10 contracts/upc__entry/:POST /v1/upc/tokens:issue 只返回 token_ref / expires_at / scope,不回明文);委托主体、执行主体、责任主体、授权主体分别保留(GET /v1/upc/assertions 的 exec_subject / duty_subject / authz_subject)。前端的“能不能点”不是授权。
  7. 排练不是执行证明:twin → ver(E-07 contracts/twin__ver/)给出的 docket_ref 只是证据清单引用,尚未裁决;裁决在 ver → eval(E-20)。3D 动画不能充当试算结果。
  8. 密钥不进仓:密钥只放被忽略的 .secrets/,不打印、不提交、不明文发布。

7.4 前端能用的后端结果怎么显示

后端结果前端显示
status=ok正常显示;事实类内容旁边可展开证据
status=degraded显示内容并标出缺了什么(例如证据包 missing[]),不装作完整
status=error 且 retryable=true显示原因和“重试”;重试用同一幂等键
status=error 且 upgrade_required / approval_ref引导去确认或升级流程,不在本页绕过
超时/结果未知显示“结果未知,正在查证”,先查状态,不直接重发
正式适配器未接通显示“未接通”和契约缺口;不显示演示数据

7.5 契约缺口登记表(模板)

每个应用接入时复制此表,逐项填写。“能力存在、界面已做、演示通过、契约对齐、服务接通、集成通过”分别记录,不能互相代替。

编号能力与场景模块 / 连线原文路径与版本已明确字段缺口或待定浏览器入口权威数据来源错误/取消/重试/顺序演示适配接通与验证负责人 / 跟进
G-xxcontracts/…,0.1.0,D-S4,缓存 2026-09-18有 / 无(缺口)已做 / 未做未接通 / 已接通 / 集成通过

8. 每个应用的接入步骤、验收表与自查清单

8.1 接入步骤

  1. 拍基线:独立页与 07 内嵌、浅/深、390 触屏/768/1440/2560 各截一组,记下已批准的交互。
  2. 写能力表:页面上每个“读、判断、写”的动作列出来,标出属于哪个模块(§7.2)。
  3. 查契约:按 §7.1 登记,缺的进 §7.5。
  4. 定义能力接口:方法名用业务语言;每个方法返回信封外形;写清哪些只读、哪些是写。
  5. 抽演示适配器:把页面里的剧本、样例数据、模拟提交、演示时钟原样搬过去,页面不再内嵌数据。
  6. 页面只依赖接口:保持原 HTML 结构和类名,像素不变;把“导航”和“提交”拆开;跨页只传结构化数据和证据引用。
  7. 正式适配器骨架:已定字段写映射;未定的标 TODO 契约缺口;在接通前不发真实请求,返回“未接通”。
  8. 登记(§3)并检查宿主消息只在允许范围(§4)。
  9. 验收(§8.2),记录结果和截图,人眼看过再下结论。
  10. 契约补齐后逐个方法接通正式适配器;真实授权、幂等并发、受控写、审计属于集成验收,演示通过不算。

8.2 验收表

层面检查项通过标准
视觉演示模式与原页逐步对照几何一致、像素一致(新增说明面板与合规改动除外并列出)
视觉浅/深 × 390 触屏/768/1440/2560 × Chromium/WebKit无横向溢出、无裁切,主题正确
交互导航不提交步骤条、上一步/下一步、键盘、自动播放、深链都不触发写
交互明确提交只在点提交时发生;重复点击幂等;受理后才通知宿主
交互问小锦本页就地打开,对象标记数不变
适配器演示可复现、可重置;成功/失败场景可测
适配器正式未接通时显示真实错误或降级;页面上不出现任何演示数据或演示成功
宿主07 内嵌打开、主题同步、队列通知、关闭正常;消息不带 HTML
契约引用每条引用写原文路径、版本、审批、来源与同步时间;缺口已登记
质量控制台0 报错、0 个 4xx/5xx 资源

8.3 新应用自查清单


9. 贯穿示例:13 故障诊断

样张:prototypes/app-integration-13/(node prototypes/app-integration-13/server.mjs,本机 (本机预览地址))。原页 app/jmos/13-故障诊断.html 未改。

9.1 能力表与模块归属

页面上的动作能力接口方法模块与契约浏览器入口
看报警、诊断叙述、关联信号、根因与置信度、处置建议loadCase(caseRef)mat 诊断场景(二期);模型经 gw__mat E-08;数据经 dsvc缺口:无 mat__north
点引用角标看来源expandEvidence({caseId, cite})dsvc__north POST /evidence-pack(02 §4.6);E-05 dsvc__rt 的 evidence_pack_ref / dsvc_get_evidence_pack证据包有北向 HTTP;角标与 ref_id 的对应关系是缺口
勾选措施、生成变更单草稿(只预览)draftChange({caseId, actionIds})mat 场景输出;询档 mat__act E-21 POST /v1/act/intended-actions:check(服务间)缺口
提交到待确认submitChange({draft, idempotencyKey})entry 待确认队列;之后 E-26 确认令牌、E-25 受控写只在服务端缺口:无 entry__north
放弃草稿discardDraftentry / mat缺口
待确认队列预览readQueuePreviewentry 队列读模型缺口
停机分钟数随时间变化watchCaseE-05 订阅(dsvc→rt)缺口:无浏览器推送
在孪生中定位宿主桥接(导航)前端;真实排练走 twin→ver→eval不需要

9.2 拆掉的两处耦合

  1. 第 5 步到第 6 步不再连带提交。原页里任何“去第 6 步”的点击都会弹“已提交到待确认”并发队列消息。样张中:步骤条、下一步、键盘、自动播放、深链都只切换视图;第 5 步的主按钮改为 data-submit,只有点它才调用 submitChange,受理后再跳到第 6 步。未提交时进入第 6 步显示“变更单尚未提交”的预览态(合规改动,见 §9.4)。
  2. 跨页不再传 HTML。原页发给 07 的 jmos:queue 携带拼好 HTML 的队列项。样张发送 {type:'jmos:queue', v:2, id, change, evidence_refs}:change 是结构化变更(对象、变更前后、生效条件、检查、升级、执行方式、时间线),evidence_refs 是信封格式的证据引用。07 里由投影脚本把它渲染成 10 现有的队列项格式,经验证与原页产生的队列项完全一致;以后应由 10 直接渲染结构化数据。

9.3 正式适配器的契约映射(摘要)

前端字段契约字段原文
证据窗口window_before_s / window_after_s,默认 10/5 分钟为开放问题 C-02-1contracts/dsvc__north/openapi.yaml(02 §4.6),0.1.0
证据缺失提示missing[] 非空 → degraded同上
证据角标来源evidence_refs[].ref_type / ref_id / as_of / notecontracts/_common/response-envelope.schema.json
生效档位、是否必须确认effective_grade / allowed / must_confirm / whitelist_only / reject_codecontracts/mat__act/openapi.yaml(E-21)
确认令牌状态token_id / intent_id / watch_authority / expires_at / grade_required / evidence_pack_ref;entry.confirm.closed 的 close_reasoncontracts/entry__rt/(E-26)
执行与读回command_id / state / reject_code / readback_matchcontracts/rt__down/(E-25)
排练证据docket_ref / accept_state / reject_codecontracts/twin__ver/(E-07)

完整映射与缺口表见 app-integration-13.md 与 prototypes/app-integration-13/integration/diagnosis-bridge-adapter.js。

9.4 相对原页的可见变化(全部列出)

变化原因
第 5 步主按钮行为:只提交(文字、样式不变)拆开导航与提交
未提交时的第 6 步:灰色“尚未提交”框 + “回到变更单”,流程第一项为“待提交”,队列预览只有已有的 2 项不能在没提交时显示“已提交”
左栏底部新增“接入状态”,默认收起,12px 次级文字,≤800 隐藏让人看懂分层
?adapter=bridge:显示“诊断服务未接通”与契约缺口,案件信息与各步为空正式适配器不回退演示数据

仍未拆的耦合(不在本样张范围):assets/assist.js 内部依赖页面全局 go 和 DOM;“问小锦”链接的上下文仍是静态文本;反馈按钮(有帮助/不准确)的写入尚无契约。


10. 术语速查

词意思
能力接口(port)页面需要的一组业务能力,用方法表示
适配器实现能力接口的一方:演示的用固定数据,正式的按契约请求
信封统一响应外形:status / code / message / data / evidence_refs / correlation_id / contract_version
契约缺口契约原文里没有、但接入需要的东西;登记,不猜
受控写改变设备或业务状态的写入,只经 rt → down
值班权威有权确认写操作的人(E-26 watch_authority)