Record the ext-5 task goal and authorization

Why: EXT-5 needs an extension-point request card (compat-policy sect.6) plus implementation scope before code changes.

Evidence: precheck receipt SELF in card; R0=840f8f96d184b8ecd6c3e84951ee408aa654a25b.

Impact: task metadata only.

Refs: .task/feature-ext-5-host-parse.md
This commit is contained in:
2026-10-06 14:42:43 +00:00
parent 3efa2b915c
commit c50682058f
+21 -2
View File
@@ -7,11 +7,30 @@
- 权威仓:ssh://git@git-ssh.u1680832.nyat.app:31411/weichen/Agent-System-Dev.git;目标分支:main;R0(initial_base_sha)= 840f8f96d184b8ecd6c3e84951ee408aa654a25b - 权威仓:ssh://git@git-ssh.u1680832.nyat.app:31411/weichen/Agent-System-Dev.git;目标分支:main;R0(initial_base_sha)= 840f8f96d184b8ecd6c3e84951ee408aa654a25b
- 工作区:/home/weichen/projects/Agent-System-Dev-wt-feature-ext-5-host-parse(worktree);分支:feature/ext-5-host-parse - 工作区:/home/weichen/projects/Agent-System-Dev-wt-feature-ext-5-host-parse(worktree);分支:feature/ext-5-host-parse
- 授权与交付终点:<本次允许的动作与终点;未授权事项写明> - 授权与交付终点:用户批复「按方案实施、测试」的 EXT-5 扩展点(2026-10-06 方案:宿主句柄开放内置解析 + xlsx/pptx 内置解析器)。本卡即扩展点申请卡(compat-policy §6 四要素)+ 基座侧实现;子仓按 documents→backend→Dev 顺序提交,三个 PR 合入(等 CI GATE 绿后由 Agent 按先例合入,documents 无 CI 如实标注 SELF)为交付终点。含恢复 documents main 上丢失的 EXT-1 提案(cherry-pick a47754b)。不打 tag、不动 RDM 仓、不改 Core、不删受保护分支。
## 目标与非目标 ## 目标与非目标
<预期结果、受影响入口/模块/契约;明确不做什么。> **申请四要素(compat-policy §6)**:
- **场景**:MS1(W4,11-01)验收第 4 条要求「报价单 Excel + 图文混排 PPT 解析完整性核对」;RDM F1 上传主链只能解析 md/txt/docx,pdf/pptx/xlsx 一律回「不支持」——基座 `internal/ingest` 有内置解析器但未经 `extension.Host` 开放(下游无法组合出来),且基座自身也没有 xlsx/pptx 解析器。
- **希望符号**:`pkg/extension` `Host` 新增 `ParseDocument(ctx, filename, mime, content) (core.ParsedDocument, error)`;`internal/ingest` 新增 builtin:xlsx / builtin:pptx 解析器(纯标准库 OOXML)。
- **为何现有注册点组合不出来**:Host 最小集只有 ArtifactGet/ArtifactContent(读原件字节),解析器注册表(ParsersDescription)无消费者入口;下游唯一替代是自带解析代码(RDM 现状 = 复制一份解析器),违背「引擎在基座」。
- **兼容**:只加符号;实验窗口内 Host 加方法会破坏第三方 fake(compat-policy §1 允许),SurfaceVersion 保持 `2.0.0-experimental`;surface 快照升级为同时记录导出接口的方法。
**实现要点**:
- `hostcaps.parse` + `inprocHost.ParseDocument` 委托 `ingest.Parse`(EXT-1 同源模式);error 仅两例:ctx 取消、输入 >100MiB;不可解析 = 带 Warnings 的文档(显式失败)。
- xlsx:workbook.xml 工作表顺序 + rels target 解析(相对/绝对路径);sharedStrings 富文本 run(排除注音 rPh);t=inlineStr/str/b/e/n 全覆盖;公式取缓存值、无缓存输出 `=公式`;日期(内置 ID 14–22/27–36/45–47/50–58 + y/m/d/h/s 记号自定义格式 + 1900/1904 系统);稀疏列就位;隐藏表标「(隐藏)」;每表一个 heading + 一个 table 块。
- pptx:presentation.xml sldIdLst 顺序;标题占位符(title/ctrTitle)→「幻灯片 N:标题」;正文形状段落(a:br 换行);组合形状递归;mc:AlternateContent 只取 Choice;graphicFrame 表格(合并位留空);备注页正文;跳过页码/日期/页脚占位符。图片/SmartArt 不解析(限制写进提案)。
- 旧二进制格式 doc/xls/ppt:可操作提示(请转存 docx/xlsx/pptx)。
- 上限(包级变量便于测试覆盖):单元格 200000、列 1024、zip 内单部件解压 64MiB(docx 一并加固);超限保留已解析部分 + Warnings + Confidence 降 0.6。
- `ParsersDescription` 增 builtin:xlsx / builtin:pptx,补 txt 漏列的 text 扩展名(注册表与行为一致)。
- surface_test 快照升级:AST 收集导出接口的方法(`Host.ParseDocument` 形态),防「加方法不破坏检测」的漏检。
- documents:cherry-pick a47754b 恢复 EXT-1 提案 + tag 名勘误(盘点发现 Dev 8af945a 把 pin 移到不含它的 19e89ae,内容静默丢失;12 号清单 v0.2.0 前置② 因此不成立);新增 EXT-5 提案;compat-policy §3 补「快照记录接口方法」一句。
- Dev:架构基线加边 `backend/app backend/ingest`;examples/downstream-rdm fakeHost 补方法;更新 modules/backend、modules/documents gitlink。
**非目标**:不改 RDM 仓(切 Host 解析 + 升 pin + 修 web/app.js:1327 entries 缺陷另开 RDM 卡,等 v0.2.0 tag 后按其规则切回 tag pin);不打 v0.2.0(owner 双钥匙);不加 sidecar /host/v1 解析路由;不加 MinerU/OCR/SmartArt;不修上传 >100MiB 静默截断与 kindOf 口径不一致(列入剩余项)。
## 同步记录 ## 同步记录