# 消息文字标记 / 局部引用能力矩阵

开发基线（10 月 19 日）：用户指定 dev，`624cce7705b361f9b590ccf067dcf14c364e90b4`。
最终合并前复核（10 月 21 日）：已同步最新 `origin/dev` `f7230470`；最新提交、审查修复和门禁结果以 meta change 的 `FINAL_PREMERGE_REVIEW_20261021.md` 为准，本文下方较早批次数字保留为历史证据。
后续上线前复核已固定 dev `1e8bc452`（Harness `0.2.1-rc.2`），修复了初次引用回读失败、缺边及云标记写入失败保留旧片段的问题；失败清理推进访问 epoch，重试仍沿用原操作 ID。最新证据和基线上线阻塞以 meta change 的 `RELEASE_READINESS_REVIEW_20261021.md` 为准，旧宿主包证据不替代新包验收。
本次保留既有 PC 选区工具栏、柔和背景、作者、取消、引用草稿及导航；移动端由 Flutter 仓承担。

## 10 月 22 日交互收敛

删除选区工具条常驻的“会话共享 / 跨设备同步 · 查看仅本机标记”行。聊天默认按钮为“共享标记”，个人快记仍为“标记”；范围切换收进按钮旁的小箭头，复用 DSH 原生菜单，选项为“会话成员可见 / 在我的设备间同步”与“仅此电脑可见”。选择仅此电脑后，主按钮明确标注“仅此电脑”。

菜单只切换查看及后续操作范围，不创建标记、不上传既有私人内容。保留原生文字选区、作者与仅取消本人的行为；第一下 Escape 关闭范围菜单，第二下关闭工具条。此增量仅为 UI 与临时菜单状态，沿用现有 Host owner、SDK、Tools、存储和权限合同，不新增接口或配置。

验证：相关 8 文件 73 项通过；实际浏览器验证聊天/个人默认文案、范围菜单、选区保留、键盘 Escape/Home/Enter、本机新增与共享隔离，以及 320/480px 下菜单不超出视口。类型检查、构建及不可变 tgz 在全新官方 `0.2.1-rc.2` Profile 安装、激活与仓外 SDK consumer 均通过。完整套件 13075 项通过、76 项失败，失败文件与此前未修改基线相同的 22 文件，无新增失败文件；不能据此声明整体发布门禁全绿。

## 能力矩阵与既有验证

| 能力面 | 入口与边界 | 实际验证 |
| --- | --- | --- |
| Host owner | 签名 source/action ref、当前账号、完整原文锚点、稳定接受回执；Record 为云标记 owner，Chat 为出现位置/成员权限 owner | 服务、锚点、权限失效、重试测试通过 |
| UI | 原选区和背景并集；共享/仅本机选择；标记提示只刷新可见标记，来源权限变化清空引用再读取 | 真实浏览器隔离示例验证浅/暗、重叠作者、取消自己保留他人、本机范围；最新相关回归通过 |
| SDK | `messageTextAnchorsV1`；签名引用形式的 capture/capabilities/read/change；quote 沿 `extendSourceMessage`；每调用 AbortSignal | 实际 tgz 安装到仓外 consumer，公开包导入编译/运行通过；无 private import |
| Tools | `arkme_message_marks_read`、`arkme_message_mark`、`arkme_message_quote_reply`，共用 Host，正式 Tools catalog/grants；actor 不由调用者指定 | 最新 catalog/registrar/SDK 测试通过；全新隔离官方 DSH agent session 能发现三个工具，匿名读写均拒绝 |
| 原业务隔离 | 标记不是表态、正文编辑、撤回或新消息；引用不是正文解析输入；本机 SQLite 不自动上传、不混 revision | 原本机库/会话、引用、发送及目录回归已运行；Chat/Record 真实 HTTP 验证未读保持不变 |

验证细节：原基线完整套件 1092 个文件已运行，首轮失败的 7 个文件修复/串行复验 699 项通过；合入新 dev 后受影响的 33 个文件 1087 项通过、另 1 个文件/用例跳过。构建、声明与打包入口检查通过；最终结果与限制统一记在 meta change 的 VALIDATION.md。

官方 DSH 验收使用已安装的官方 `0.1.1-rc.2` CLI，新临时 DSH_HOME/Profile 只锁定该运行时自身的匹配依赖版本；没有修改 DSH 源码、真实 Profile 或真实账号。该探针验证工具注册/鉴权边界，不能代替已登录多人实机。

旧本机数据仍在原私有数据库，不自动上传；Team 与 Arko 保持独立本机标记语义。尚未执行已登录 PC 与 Flutter 真机间的多人/多设备交互验收，浏览器示例仅内存数据。代码已提交并推送任务开发分支；未合并、发布或安装到用户正式客户端。

## 10 月 21 日复核增量

- PC 实际选区组件 → 公开 SDK → Host HTTP → 原有 ServiceRuntime → 本地真实 Chat/Record/Mongo/RabbitMQ/IM：本人取消保留同事、选区引用创建、读取真实引用边并渲染；Tools 在服务端已提交后丢失回执，返回原操作 ID，原样重试仅一份标记。
- Flutter 实际移动组件 → Session → 鉴权 HTTP → 同一套真实服务：显示作者、点击本人取消、保留同事、解码真实引用树。使用合成账号与组件测试，不等于已登录多人真机验收。
- 普通时间线、定位窗口、统一时间线 v1/v2、父预览批量接口、延展树都验证真实引用字段；来源撤回后再次读取必须隐藏引用片段。
- 最新完整插件套件首轮 1107 文件 / 13038 项通过，2 项因负载超时；对应 2 文件 / 18 项串行复验通过。打包测试改用同文件现有打包时限；没有改变缓存业务或放宽内容断言。
- 最终生产代码已完成类型声明、完整构建、入口/worker 检查和 tgz 打包；新隔离官方 DSH Profile 与仓外 SDK consumer 复验。开发分支已推送，不代表已部署。
