diff --git a/HANDOFF.md b/HANDOFF.md index c0f3c2ee..a75a4716 100644 --- a/HANDOFF.md +++ b/HANDOFF.md @@ -54,14 +54,15 @@ ## 3. 未决 -剩余待办已重排到 **`docs/待办与积压.md`**(2026-11-09 版),分四档: +剩余待办见 **`docs/待办与积压.md`**(2026-11-09 重排版,1.2.1 发布后): -- **P0 · 1.2.1 已完成并发布**:安装器交互(`LAMPYRIS_RESTART_HOST`/`LAMPYRIS_OPEN_SETTINGS`/`LAMPYRIS_FORCE_INSTALL`)、旧宿主检测、练习页 VoiceOver、Terminal ⌥L 文档、回归并发与超时治理;附带零引用代码/资源清理与 CI 去 `install-action`。剩余交接项见 `docs/待办与积压.md`。 -- **P1 · 1.3.0 教学/数据**:三级简码专项(需引擎 + ADR)、corpus M2-1 调研、字根字形身份库、真笔顺/结构标注、拆字说明扩充、多方案码表。 -- **P2 · 有证据才做**:排序观察期、位置记忆、冷首键、拼音后端评估、n-gram(都写了触发条件)。 +- **P0 · 立即(验证不开发)**:练习页 VoiceOver 实机走查、安装器三条新分支的回归测试、离线回归编译共享缓存、 + pro 升级与实键入、IT-22 清单按 1.2.1 复跑。除非抓出缺陷,否则并进 1.3.0 的 B0,不单出 1.2.2。 +- **P1 · 1.3.0**:三级简码专项(需引擎 + ADR)、corpus M2-1 调研 → N1 字根字形库 → N2/N3/N4、拆字说明扩充、多方案码表、客户端自动回读缺口。 +- **P2 · 有证据才做**:排序观察期、位置记忆、冷首键、拼音后端评估、n-gram(均写触发条件)。 - **明确不做**:云/账号/广告/统计/剪贴板/语音;平台扩展单独立项,不与 macOS 同批。 -其它状态:`tag v1.2.0` 已发布(Release `42558833917`)、站点 `v1.2.0 · 构建 39`、air 与 pro 同包 1.2.0/39(执行 `ef25e92b…`)。 +建议:先做 P0 套餐(1 天),再在「教学闭环 B」与「数据地基 C」之间选一条主线。 ## 4. 下一步(1.2.0 发布清单) diff --git a/docs/tasks/T-ITER-22-1.1.0-affected.md b/docs/tasks/T-ITER-22-1.1.0-affected.md index 12bf8390..0531f498 100644 --- a/docs/tasks/T-ITER-22-1.1.0-affected.md +++ b/docs/tasks/T-ITER-22-1.1.0-affected.md @@ -1,6 +1,6 @@ # T-ITER-22 受影响行复跑 — 1.1.0 简码 + 位次上移 -> 2026-11-06 整理。**只跑受"候选顺序"影响的行**,其余沿用报告 216/217 基线(`docs/tasks/T-ITER-22.md` 整册仍是最终依据)。 +> 2026-11-06 整理(历史专项:1.1.0 简码改动;当前换包复跑以 `T-ITER-22-coverage.md` 为准)。**只跑受"候选顺序"影响的行**,其余沿用报告 216/217 基线(`docs/tasks/T-ITER-22.md` 整册仍是最终依据)。 > 触发原因:ADR-304 D17 一级简码 25 条入表 + `personalize` 改「有界位次上移」(报告 228)。 ## 0. 开始前(2 分钟) diff --git a/docs/tasks/T-ITER-22.md b/docs/tasks/T-ITER-22.md index 8dd5feb3..6c79a8b9 100644 --- a/docs/tasks/T-ITER-22.md +++ b/docs/tasks/T-ITER-22.md @@ -1,6 +1,6 @@ # T-ITER-22:最终候选产品走查(IT-22 执行清单) -- **状态**:待开始(需先有锁定候选;当前可用 0.1.16 / build 26 先演练) +- **状态**:清单已固化并多次执行(1.0.0 / 1.1.0 / 1.2.0 各走一轮,结果见报告 234、254、263);每次换包按 `T-ITER-22-coverage.md` 的 A 档 10 项复跑 - **前置**:IT-16/17/18/20 的工程部分已完成(任务卡在案),机器可判部分已由报告 197(26 张离屏快照对比度)覆盖;本卡只做**人工观感与完整任务链** - **依据**:`docs/MVP产品验收标准.md`(交互/视觉/可访问性/日常可用),报告 197 §4,报告 215(VoiceOver 复测条件),报告 195 §4 - **产出**:本文件填好的结果表 + 证据目录 + 之后的 schema2/IT-22 报告 diff --git "a/docs/\345\276\205\345\212\236\344\270\216\347\247\257\345\216\213.md" "b/docs/\345\276\205\345\212\236\344\270\216\347\247\257\345\216\213.md" index 5b3cb105..5172d3d6 100644 --- "a/docs/\345\276\205\345\212\236\344\270\216\347\247\257\345\216\213.md" +++ "b/docs/\345\276\205\345\212\236\344\270\216\347\247\257\345\216\213.md" @@ -1,8 +1,8 @@ # 待办与积压(下一版迭代的范围来源) -> 2026-11-09 重排。**1.2.0 已发布并上线**(tag `v1.2.0`,站点与 air/pro 同包 1.2.0/39)。 -> 这份文件回答"还剩什么、下一版装什么、哪些明确不做"。排序口径见 [MVP后执行计划](MVP后执行计划.md),非目标见 [AGENTS.md](../AGENTS.md) §3。 -> 成本口径:**S** ≤2 人日;**M** 3–5 人日;**L** 1–2 周;**XL** >2 周。"授权"=是否需用户单独授权(换包/发布/删数据/联网下载)。 +> 2026-11-09 重排(1.2.1 发布后)。**线上版本 = 1.2.1 / build 40**(tag `v1.2.1` → `168115e`,站点 `v1.2.1 · 构建 40`)。 +> 这份文件回答"还剩什么、下一版装什么、哪些明确不做"。非目标见 [AGENTS.md](../AGENTS.md) §3。 +> 成本口径:**S** ≤2 人日;**M** 3–5 人日;**L** 1–2 周;**XL** >2 周。"授权"= 是否需你单独批(换包/发布/删数据/联网下载)。 ## 0. 版本语义 @@ -13,68 +13,83 @@ | 纯缺陷 / 安全 / 安装体验 | 补丁(1.2.x) | 可回滚到"只修 bug"的状态 | | 新平台 | 独立项目/里程碑 | 不跟 macOS 质量同批,否则回归无法归因 | -## 1. 剩余待办(按建议优先级) +## 1. 现在的位置 -### P0 · 1.2.1(补丁档,都是"安装/可用性"缺陷) +- 1.2.1 的**代码改动全部落地**:安装器(旧宿主重启询问 / 输入源缺失时开设置页 / 强制覆盖)、练习页 VoiceOver 标签与播报、回归并发默认 4、死代码与死资源清理、CI 去 `install-action`(504 假红)。 +- 剩下的**不是新缺陷**,而是"新能力还没被真实使用验证过":无障碍只加了语义标签,没做一次真实 VoiceOver 朗读走查;安装器三条新分支没有自动化回归。 +- pro 仍是 1.2.0/39,等你自己升级(命令见 `docs/releases/1.2.1.md` §3)。 -| 编号 | 事项 | 现状与证据 | 成本 | 授权 | -|---|---|---|---|---| -| P0-1 | **覆盖安装后输入源丢失**:安装器交互化(`lsregister -f` + 直接打开设置页 + 明确提示"如菜单里没有请重新添加") | 本轮反复实测 ≥6 次:装包成功后输入源被移出启用列表;`scripts/ensure-input-source.sh` 已能判断并给步骤,但安装流程本身还没串起来 | S–M | 换包 | -| P0-2 | **旧宿主跑在备份 inode 上**(界面"装了还是旧的"):安装器已 `lsregister -f` + 警告,但**没有主动重启宿主**的交互确认 | `docs/故障恢复.md` §4.2;本轮又踩到一次(进程执行路径落在 `install-backup-…`) | S | 换包 | -| P0-3 | **练习页深色/无障碍走查**:VoiceOver 标签、对比度、`NSSwitch` 键盘可达性 | 练习页是本轮新增面;目前只有版式自检与人工截图复核 | S | 换包 | -| P0-4 | **Terminal 里 ⌥L 冲突**写进用户文档(可改 `alt+shift+l`) | 报告 255 §7:终端自身把 ⌥L 映射成 `¬`,不是缺陷 | S | 文档 | -| P0-5 | 回归并行超时治理:6 并发下 Swift 编译曾超时(已把上限提到 180s) | 本轮实测;建议改成"编译共享缓存 + 按文件超时" | S | — | +## 2. 待办 + +### P0 · 立即(验证 1.2.1 已交付的东西;不产生新行为) + +| 编号 | 事项 | 现状与证据 | 成本 | 授权 | 验收 | +|---|---|---|---|---|---| +| P0-1 | **练习页 VoiceOver 实机走查** | 代码已加 `textField` 角色/实时值/进度条数值/`announcementRequested` 播报,但**没有人耳确认**;对比度与 `NSSwitch` 键盘可达性也未走查 | S | 换包(已装 1.2.1 可免) | 题面、作答格值、判分结果三项都被朗读;⌥K 窗口可全程键盘操作 | +| P0-2 | **安装器新分支的回归测试** | `install.sh` 新增 `LAMPYRIS_RESTART_HOST` / `LAMPYRIS_OPEN_SETTINGS` / `LAMPYRIS_FORCE_INSTALL` 三条路径,目前只有 `bash -n` + 手跑证据(报告 263) | S | — | 新增 `test-install-script.py`:三条分支的脚手架断言 + 危险动作被 dry-run 拦住 | +| P0-3 | **离线回归的编译共享缓存** | 6 并发时 Swift 编译互相拖慢导致假超时,现用"4 并发 + 180s 上限"兜底 | S | — | 并发回到 6 仍全绿,且单文件超时降回 90s | +| P0-4 | **pro 升级 + 实键入确认** | pro 仍 1.2.0/39;SSH 驱动不了 GUI | S | 换包 | pro 执行 `upgrade.py --apply` 后 config 与 962 行词库不变,手打几个字正常 | +| P0-5 | **IT-22 清单按 1.2.1 复跑一次** | 1.2.0 走过一轮;1.2.1 动了安装与无障碍,A 档 10 项里 A8/A9(安装/切源)受影响 | S | 换包 | `docs/tasks/T-ITER-22-coverage.md` 的 A/B 档结果表更新 | + +> 这五项都是"确认"而非"开发"。**除非 P0-1/P0-5 抓出缺陷,否则不必单独出 1.2.2**,并进 1.3.0 的 B0 验证批即可。 -### P1 · 1.3.0(教学与数据,需要先写 ADR) +### P1 · 1.3.0(教学与数据;动到候选行为或新增数据的都要先写 ADR) | 编号 | 事项 | 现状与证据 | 成本 | 依赖 | 授权 | |---|---|---|---|---|---| -| P1-1 | **三级简码专项练习** | 练习已有一级/二级/完整码/识别码(ADR-316);三级简码缺"哪些字真有三级简码"的码表,ADR-314 已关闭三级简码,用"前 3 码"冒充会教错 | M | 引擎支持三级简码(ADR + 词库取舍) | 换包 | -| P1-2 | **corpus M2-1:来源与许可调研**(只出报告) | `docs/结构库第二阶段需求.md` 已定 N1–N4 与门槛;这是把 B0 从 76% 推向 ~100% 的前置 | S | — | 联网调研 | +| P1-1 | **三级简码专项** | 练习已有一级/二级/完整码/识别码(ADR-316);缺"哪些字真有三级简码"的码表,用"前 3 码"冒充会教错。模拟数据:首选 75%→97.5%,但按键 4.25→4.03、表 +53 KB、582 处撞码(报告 239) | M | 引擎支持三级简码 + ADR(是否入表) | 换包 | +| P1-2 | **corpus M2-1:来源与许可调研**(只出报告,不动仓库数据) | `docs/结构库第二阶段需求.md` 已定 N1–N4 与四道门槛;B0 现在 `full` 735/1000 | S | — | 联网调研 | | P1-3 | **字根字形身份库(N1)**:解掉 249 条占位 | 两款候选字体均无许可(ADR-310),需新来源 | L | P1-2 | 数据入库 | -| P1-4 | **真笔顺(N2)/ 结构标注(N3)/ 完整拆字(N4)** | 现 `strokes` 只是取码笔顺,不是真笔顺 | M–L 各 | P1-3 | 数据入库 | -| P1-5 | **拆字说明扩充**(D14 现 104 条完整解释) | 根因同上(字根字形身份) | L | P1-3 | 数据入库 | -| P1-6 | **多方案支持**(五笔 98 / 郑码 / 仓颉) | `modules/keymap` 已按方案数据化(ADR-315),缺的是**码表数据源与许可**(TBD-2) | M(含数据) | 合格来源 | 数据入库 | +| P1-4 | **真笔顺(N2)/ 结构标注(N3)/ 完整拆字(N4)** | 现 `strokes` 只是取码笔顺 | M–L 各 | P1-3 | 数据入库 | +| P1-5 | **拆字说明扩充** | D14 现只有 104 条完整解释(全码 27,823 条),根因同 P1-3 | L | P1-3 | 数据入库 | +| P1-6 | **多方案支持**(五笔 98 / 郑码 / 仓颉) | `modules/keymap` 已按方案数据化(ADR-315),缺码表来源与许可(TBD-2) | M(含数据) | 合格来源 | 数据入库 | +| P1-7 | **客户端自动回读缺口** | 自动矩阵里 Safari/Chrome/Xcode 三项 BLOCKED(报告 229),一直靠人工补 | M | — | AX 回读或截图比对可用 | -### P2 · 有证据才做(输入质量 / 性能,均按 ADR 关门) +### P2 · 有证据才做(都写了触发条件,没有触发条件就不开工) -| 编号 | 事项 | 现状与证据 | 成本 | 触发条件 | +| 编号 | 事项 | 现状 | 成本 | 触发条件 | |---|---|---|---|---| -| P2-1 | 排序观察期 P2(误选不学习、时间衰减、MRU) | ADR-304 明确"暂不实施" | M | 1.2.0 实测评测显示明显非首选率 | -| P2-2 | P3 位置记忆 / 固定顺序开关 | ADR-304 未做 | M | 用户明确反馈"顺序被打乱" | -| P2-3 | 冷首键 ~28 ms 优化 | ADR-307 已分开披露、不进门禁 | M | 用户能感知到首键迟滞 | +| P2-1 | 排序观察期 P2(误选不学习、时间衰减、MRU) | ADR-304 明确"暂不实施" | M | 评测显示明显非首选率 | +| P2-2 | 位置记忆 / 固定顺序开关 | ADR-304 未做 | M | 你明确反馈"顺序被打乱" | +| P2-3 | 冷首键 ~28 ms | ADR-307 已与稳态分开披露、不进门禁;1.1.0 时代是 16–26 ms | M | 你能感知首键迟滞 | | P2-4 | 拼音后端质量评估 → 是否自研 FSA | inputx spike 已否决 | M | 拼音兜底命中率被投诉 | | P2-5 | 整句/长词(n-gram) | 大概率不做 | XL | 有强需求 | ### P3 · 长期/研究性 - **corpus 全量**(3,000 字 ≥98% 可解释):依赖 P1-3/P1-4。 -- **D3 oracle 替代**(TBD-5):D3 已降级为"未声明许可、仅构建期",需要新的可许可来源。 -- **客户端自动回读缺口**(Safari/Chrome/Xcode 在自动矩阵 BLOCKED):仍需人工补,成本 M。 +- **D3 oracle 替代**(TBD-5):D3 已降级为"未声明许可、仅构建期"。 +- 平台扩展(Windows TSF / Linux Fcitx5 / Android / iOS):单独立项,不与 macOS 质量批次同期,见 `ROADMAP.md`。 ### 明确不做(非目标,不再列入排期) 云输入 / 云同步 / 账号 / 广告 / 皮肤商店 / AI 写作 / 打字统计与画像 / 剪贴板历史 / 跨设备同步 / 本地语音(P6 之前)。 -平台扩展(Windows TSF、Linux Fcitx5、Android、iOS)**单独立项**,不与 macOS 质量批次同期。 -## 2. 1.2.0 已完成(存档,便于对账) +## 3. 下一版怎么装(建议) -| 范围 | 结果 | -|---|---| -| 判码行为 | 二级简码 598 条入表(唯一影响候选顺序的改动) | -| 教学只读 | 学习区(⌥L)改版 + `B0-runtime.tsv`(3,000 字 / 121 KB,ADR-311) | -| 练习 | 四题型(一级/二级/完整码/识别码)、四位输入格、进度 `practice.tsv`、工具栏(ADR-313/316–323) | -| 键位图 | `modules/keymap`:25 键字根图、标准字根表 + 逐键审计、位次、自包含面板(ADR-315/319–323) | -| 工程 | SSH 签名 tag、站点版本盖章、内存双阈值(ADR-312)、footprint 硬顶、延迟三段 | -| 发布 | tag `v1.2.0`(验签通过)→ Release `42558833917`;站点 `v1.2.0 · 构建 39`;air/pro 同包 | +| 套餐 | 内容 | 时长 | 适合 | +|---|---|---|---| +| **A · 验证收口(推荐先做)** | P0-1…P0-5 | 1 天 | 把 1.2.1 的新能力真正验过,避免"加了没人用" | +| **B · 教学闭环** | A + P1-1(三级简码,需 ADR)+ 练习题库扩 | 1 周 | 用户侧感受最明显;但要动候选行为,得小版本 | +| **C · 数据地基** | A + P1-2 → P1-3 起步 | 2–3 周 | 为 P1-4/P1-5 解锁;短期用户不可见 | + +**建议 A 先做(1 天),再在 B / C 里二选一**:B 是产品可感,C 是长期正确。两者都动不到对方的前提,可以交替排。 + +## 4. 需要你现在决定的事 -## 3. 需要你现在决定的事 +1. **A 套餐要不要现在做**(1 天,只验证不开发;P0-4 你自己在 pro 上跑)。 +2. **1.3.0 主线选 B(三级简码/教学)还是 C(corpus 数据)**;选 B 需要先批准 ADR 立项。 +3. **P1-2 调研是否允许联网**(只读公开仓库与许可声明,不下载入库)。 -1. **1.2.1 现在做还是攒着**:P0-1/P0-2 是安装体验缺陷(每次换包都可能踩),建议尽快出一个补丁包; -2. **三级简码要不要立项**(P1-1):需要引擎先支持,属于"改候选行为",得小版本 + ADR; -3. **corpus 第二阶段是否启动**(P1-2 只出调研报告,不动仓库数据)。 +## 5. 已完成(存档,便于对账) + +| 版本 | 范围 | +|---|---| +| **1.2.1 / 40** | 安装器交互(`LAMPYRIS_RESTART_HOST` / `LAMPYRIS_OPEN_SETTINGS` / `LAMPYRIS_FORCE_INSTALL`)、旧宿主检测、练习页 VoiceOver 语义、回归并发 4、Terminal ⌥L 文档 §4.4、零引用代码/资源清理、文档状态标注、CI 自建 cargo-deny 安装 | +| **1.2.0 / 39** | 二级简码 598 条(唯一影响排序)、学习区改版 + `B0-runtime.tsv`、练习四题型与进度、`modules/keymap` 键位图、SSH 签名 tag、站点盖章、内存双阈值、延迟三段 | +| **1.1.0 / 38** | 一级简码 25 条 + 有界位次上移(评测 ALL 命中 92.0%→97.5%) | -## 4. 关联 +## 6. 关联 -[ROADMAP](../ROADMAP.md)、[MVP后执行计划](MVP后执行计划.md)、[结构库第二阶段需求](结构库第二阶段需求.md)、 -[故障恢复](故障恢复.md) §4.2/§4.3、ADR-304/307/309/310/311/312/313/314/315/316–323、报告 238/239/246/248/249/250/251–262。 +[ROADMAP](../ROADMAP.md)、[HANDOFF](../HANDOFF.md)、[结构库第二阶段需求](结构库第二阶段需求.md)、 +[故障恢复](故障恢复.md) §4.2–§4.4、[releases/](releases/)、ADR-304/307/309/310/311/312/313/314/315–323、报告 229/238/239/246/263。