# 4-53 WorkspacePath / ObjectIdentity 浏览器矩阵缺口 ## 状态 - 状态:done - Owner:04-tree-domain / 05-editor-mainline runtime identity - 发现时间:2026-06-01 - 修复时间:2026-06-01 ## 现象 P1 `WorkspacePath / ObjectIdentity` 已有底层协议与部分 smoke,但缺少一个单独覆盖 page `.md`、directory、raw file、mindmap、OnlyOffice 的浏览器矩阵。FileTree row、Resource Tab、OpenEditorsSnapshot、URL `resourceTab` 和 active tab identity 如果各自拼身份,后续 raw resource / mindmap / Office target 容易继续退化为“当前页”语义。 ## 根因 已有 smoke 分散覆盖 copy-id、resource tab、mindmap 和 Office,但没有把统一 `ObjectWorkspacePath` 当作运行时消费合同统一断言。local folder 目录行还缺少 `local-dir:*` 的稳定 `documentId` fallback,resource tab 在部分本地资源打开路径下也缺少 `sourceKind` / `rootUri` fallback。 ## 修复 - `rust/crates/mnote-web/browser/filetree-runtime.js` - `readWorkspacePathFromRow()` 为 folder / index 行合成 `local-dir:{relativePath}`。 - `fileTreeRowDocumentId()` 允许读取 `data-owner-document-id`,用于资源行 owner page 对齐。 - `rust/crates/mnote-web/browser/document-resource-tab-runtime.js` - 在 URL 参数缺失时,从 body dataset 或 FileTree row workspacePath 兜底读取 `sourceKind` / `rootUri`。 - `scripts/task524-workspace-object-identity-matrix-smoke.js` - 新增 browser smoke,覆盖 page `.md`、directory、raw text、mindmap、OnlyOffice 的 FileTree row workspacePath、OpenEditorsSnapshot、URL `resourceTab`、active tab identity 对齐。 ## 验收 - [x] `node --check rust/crates/mnote-web/browser/document-resource-tab-runtime.js` - [x] `node --check rust/crates/mnote-web/browser/filetree-runtime.js` - [x] `node --check scripts/task524-workspace-object-identity-matrix-smoke.js` - [x] `MNOTE_UI_BASE_URL=http://127.0.0.1:3301 node scripts/task524-workspace-object-identity-matrix-smoke.js`