From 837d71b227fbe522739661aa3f8b55d44d26a697 Mon Sep 17 00:00:00 2001 From: wangzhizhou <824219521@qq.com> Date: Sun, 15 Nov 2026 01:20:09 +0800 Subject: [PATCH 1/2] docs: record PR #314/#315 merges and handoff state Signed-off-by: wangzhizhou <824219521@qq.com> --- HANDOFF.md | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/HANDOFF.md b/HANDOFF.md index 5f156bac..ff73ac2e 100644 --- a/HANDOFF.md +++ b/HANDOFF.md @@ -4,10 +4,10 @@ - 更新:2026-11-15 / Claude Code(**air 本机**)。阶段:**已发布 1.3.0 / build 43**(tag `v1.3.0`,Release、站点已上线); air 与 pro 均已装发版产物(执行 `9cb738c9…`),30/30 样本、性能、内存、IT-22 A 档 / N1–N5 全部 PASS。 -- 分支:`main` = `7014346`(PR #314 86 专注 + 标准变体已合入);`dev` = 本轮 D2 字形别名(ADR-359/报告 285)待开 PR。 +- 分支:`main` = `7b95ba6`(PR #314 86 专注 + 标准变体、PR #315 D2 字形别名均已合入);`dev` = `8aa77f4`(与 origin 同步)。 - 版本:`Cargo.toml` = **1.3.0**、`packaging/build-number` = **43**;最新 tag **`v1.3.0`**。**下次正式发版前必须重新绑定候选身份。** -- 最近验证:`make verify` PASS(528 产物零网络符号)、`make macos-offline-tests` **67 文件 / 335 例 PASS**、`build.sh --strict` PASS、 - `tools/check-level3-codes.py` PASS(3,362 条)。 +- 最近验证:`make verify` PASS(538 产物零网络符号)、`make macos-offline-tests` **67 文件 / 336 例 PASS**、`validate_b0.py` PASS(1,000 条)、 + `build.sh --strict` PASS、`tools/check-level3-codes.py` PASS(3,362 条)。 - 1.2.1 身份:提交 `168115e`、ZIP `102f4928…`、DMG `a6f4bdbd…`、更新程序 `b04049e3…`、appcast `40`、包内执行 `3eeeb0aa2ae4be0facd0120c854ea822ad1ba749dd3a22611f39a97db6fc32d9`(`docs/releases/1.2.1.md`)。 - 1.2.0 候选身份:提交 `31fdbcd`、ZIP `64eeb90f…`、源码 `3dc6f717…`、宿主执行 `ef25e92ba085ea3f556e12d477fb1b6a6cd08ebbc3b74897fdb7b2d9f6eead64`(`docs/releases/1.2.0.md`)。 @@ -16,7 +16,7 @@ | 设备 | 已装包与执行 SHA | 数据 / 输入源 | 恢复点 | |---|---|---|---| | **air**(arm64 / macOS 27.2 / Xcode 27,用户 `joker`;本会话已有辅助功能/事件投递权限) | **1.3.0 / build 43**(2026-11-13 装机,报告 270),ZIP `a191b60d…`,宿主执行 `bda6f0903f95e07f9800577083eee452d46b0b9f3ca9520caab23d298a790df9`(U1-4 候选 `b8dd20f`,2026-11-14 装机; -备份 `updates/install-backup-20261114T084240Z/`);输入源 `Lampyris.default` 已启用并选中;**`mode=wubi`** | config `3aea2bca…`、`practice.tsv` `2512f4…` 在样本前后不变;词库 1838 行 `8fa18a7d…`(build 41/42 隔离失效与性能/内存门禁的键入学习所致,行数 1784→1838) | build 42 `5d75e2fd…` 在 `updates/install-backup-20261113T051338Z/`;build 41 `aa040adc…` 在 `updates/install-backup-20261113T044337Z/`;`main` 候选 `2610d1f` 在 `updates/install-backup-20261113T041111Z/` | +备份 `updates/install-backup-20261114T084240Z/`);输入源 `Lampyris.default` 已启用并选中;**`mode=wubi`** | 2026-11-15 01:19 采集:config `888ed018…`(mode=wubi / punctuation=chinese / full_width=half / chinese_variant=simplified,显式 hotkey 8 项)、词库 2046 行 `182ee41c…`;与 2026-11-14 样本时的 `3aea2bca…`/1838 行不同,属用户日常使用,非本轮改动 | build 42 `5d75e2fd…` 在 `updates/install-backup-20261113T051338Z/`;build 41 `aa040adc…` 在 `updates/install-backup-20261113T044337Z/`;`main` 候选 `2610d1f` 在 `updates/install-backup-20261113T041111Z/` | | **pro**(Intel / macOS 13.7.8,用户 `bot`,SSH 别名 `pro`) | **1.3.0 / build 43**,宿主执行 `9cb738c9…`(2026-11-13 用户经 `upgrade.py` 从 1.2.0/39 升级) | config `b8c7a351…` 未变、词库 963 行(962→963,真实键入;`show_wubi_learning=true` 是用户有意设置) | `updates/upgrade-2026-11-13T11-40-50Z-AE6D4E61/`;更早备份见 `updates/` | ## 2. 本轮完成 @@ -87,10 +87,12 @@ | 8 | ~~宿主内完整引导真机目视~~:候选 `b8dd20f`(执行 `bda6f090…`)菜单入口/翻页/首次自动弹窗 PASS;标记恢复、探针窗口与临时文档已清理 | ✅ 2026-11-14(报告 276) | | 9 | ~~U3-1 整句模型~~:原型未达 +5pp,**已关闭**(ADR-352,报告 278);不再投入 | ✅ 2026-11-14 关闭 | | 10 | ~~U3-4/N1-d~~:已更正数据源并接入 66 条 `(PUA, 键位)` 核验;运行时 `full` 1,904→2,454,`partial` 876→326;剩余 13 个 PUA 保持占位 | ✅ 2026-11-14(报告 280) | -| 11 | ~~N2/N3/N4 数据地基~~:56 个成字字根真实笔顺、结构覆盖 2,766、8 个 D2 漏拆补齐;schema v6 | ✅ 2026-11-14(ADR-355,报告 281;待提交 PR) | +| 11 | ~~N2/N3/N4 数据地基~~:56 个成字字根真实笔顺、结构覆盖 2,766、8 个 D2 漏拆补齐;schema v6 | ✅ 2026-11-14(ADR-355,报告 281) | +| 12 | ~~标准 v1 + 86 专注~~:schema v7、241 条 root/key、98/新世纪仅留 profile | ✅ 2026-11-15(ADR-358/359,报告 284/285;PR #314/#315) | -剩余开发项:高频字拆解仅剩 13 个未解决 PUA(保持占位,后续才需要 Academia Sinica/自绘); -整句模型、多方案码表(依赖外部数据/许可)。符号 / emoji(U3-5)已真机 PASS。 +剩余开发项:86 覆盖率已到**许可数据上限**——3,000 字 `full` 2,614(87.1%)/ `partial` 232 / `unknown` 154; +继续提升需要 canonical 五笔根序数据(公开可用的没有),或接入 CDP(GPL-3,结构/笔数,不补根序)。 +98/新世纪按用户要求暂不实现,只保留 `schemes/*.toml` 扩展点。整句模型已关闭。 ## 4.1 换到 air 后怎么开工 @@ -132,6 +134,9 @@ make macos-offline-tests ## 9. 会话日志(最近) +- 2026-11-15 / Claude Code(air):**PR #314、#315 已合入 main(`7014346`、`7b95ba6`)**。PR #314 = 86 专注 + + 标准变体(240→241 条 root/key,98/新世纪仅留 profile);PR #315 = D2 字形别名(ADR-359,报告 285)。 + 当前 B0 3,000 `full` 2,614(87.1%)/ `partial` 232 / `unknown` 154;1,000 `full` 928。CI 全绿后均为 merge commit。 - 2026-11-15 / Claude Code(air):**D2 字形别名归一化(ADR-359,报告 285)**。逐条复查标准 v1 的 73 条 `positionMismatch`,把 D2 用假名/注音符号代替部件的同形写法归一化(`リ→刂`、`ㄗ→卩`、`ク→夕`), 另补 `彑`(X)到标准字根清单、`ノ` 作撇笔画。B0 1,000 字 `full` 916→**928**、`partial` 80→**68**; From 91d464d73b02f5dd27c098a67c3d165b9b498c11 Mon Sep 17 00:00:00 2001 From: wangzhizhou <824219521@qq.com> Date: Sun, 15 Nov 2026 01:34:54 +0800 Subject: [PATCH 2/2] docs: reconcile backlog with 86 licensed-data ceiling, plan integration acceptance - close P1-5 (superseded by B0 runtime explanations) - record 86 coverage at 87.1% licensed-data ceiling; no further data work queued - mark 1.3.1 release deferred; next step is integration acceptance - add ADR-358/359 data rows to license doc Signed-off-by: wangzhizhou <824219521@qq.com> --- HANDOFF.md | 4 +++- ...11\247\350\241\214\350\256\241\345\210\222.md" | 2 +- ...12\236\344\270\216\347\247\257\345\216\213.md" | 15 +++++++++------ ...72\220\344\270\216\350\256\270\345\217\257.md" | 9 +++++++++ 4 files changed, 22 insertions(+), 8 deletions(-) diff --git a/HANDOFF.md b/HANDOFF.md index ff73ac2e..5240cba6 100644 --- a/HANDOFF.md +++ b/HANDOFF.md @@ -67,7 +67,7 @@ 初版清单误用 D3 BMP PUA,已更正为 D2 补充区;可定位 79 个 PUA,按 `(PUA, 键位)` 核验 66 条, 状态 `verified 58 / partial 8 / unresolved 13`。B0 1,000 字 `full` 735→919;运行时 3,000 字 `full` 1,904→2,454; D3 不再作 `componentsSource`;未解决项仍以 `?:键` 占位,不猜。 -- **P1 · 数据与方案**:corpus M2-1 调研 ✅、N1-d ✅、N2/N3/N4 ✅(ADR-355)、cjk-decomp 扩量 ✅(ADR-357)、标准 v1 ✅(ADR-358)、D2 字形别名 ✅(ADR-359);余项是覆盖扩量(87.1%→98%,受许可数据限制)、13 个语境歧义 PUA、P1-5 拆字说明同步、多方案码表(TBD-2,98/新世纪暂不实现)。 +- **P1 · 数据与方案**:corpus M2-1 调研 ✅、N1-d ✅、N2/N3/N4 ✅(ADR-355)、cjk-decomp 扩量 ✅(ADR-357)、标准 v1 ✅(ADR-358)、D2 字形别名 ✅(ADR-359);覆盖已到许可数据上限(87.1%),P1-5 已关闭;余项仅 13 个语境歧义 PUA(可选)与多方案码表(TBD-2,98/新世纪暂不实现)。 - **P2 · 有证据才做**:排序观察期、位置记忆、冷首键、拼音后端评估、n-gram(均写触发条件)。 - **明确不做**:云/账号/广告/统计/剪贴板/语音;平台扩展单独立项,不与 macOS 同批。 @@ -89,7 +89,9 @@ | 10 | ~~U3-4/N1-d~~:已更正数据源并接入 66 条 `(PUA, 键位)` 核验;运行时 `full` 1,904→2,454,`partial` 876→326;剩余 13 个 PUA 保持占位 | ✅ 2026-11-14(报告 280) | | 11 | ~~N2/N3/N4 数据地基~~:56 个成字字根真实笔顺、结构覆盖 2,766、8 个 D2 漏拆补齐;schema v6 | ✅ 2026-11-14(ADR-355,报告 281) | | 12 | ~~标准 v1 + 86 专注~~:schema v7、241 条 root/key、98/新世纪仅留 profile | ✅ 2026-11-15(ADR-358/359,报告 284/285;PR #314/#315) | +| 13 | **集成验收(不发版)**:用当前 `main` 构建候选包,做自闭环验收(热键/上屏、TextEdit 实键入、性能/零外联、学习区数据回读),确认已合入改动无回归 | ⏳ 待授权换包 | +**发版决策(2026-11-15)**:功能迭代较多,**先不发版**,先做集成验收。 剩余开发项:86 覆盖率已到**许可数据上限**——3,000 字 `full` 2,614(87.1%)/ `partial` 232 / `unknown` 154; 继续提升需要 canonical 五笔根序数据(公开可用的没有),或接入 CDP(GPL-3,结构/笔数,不补根序)。 98/新世纪按用户要求暂不实现,只保留 `schemes/*.toml` 扩展点。整句模型已关闭。 diff --git "a/docs/MVP\345\220\216\346\211\247\350\241\214\350\256\241\345\210\222.md" "b/docs/MVP\345\220\216\346\211\247\350\241\214\350\256\241\345\210\222.md" index 78fcdc18..3a1d87a6 100644 --- "a/docs/MVP\345\220\216\346\211\247\350\241\214\350\256\241\345\210\222.md" +++ "b/docs/MVP\345\220\216\346\211\247\350\241\214\350\256\241\345\210\222.md" @@ -23,7 +23,7 @@ | **D 排序观察期** | 1.1.x 补丁 或 1.2.0 | ADR-304 P2:误选不学习、时间衰减、MRU;P3:位置记忆/「固定顺序」开关 | 只有 C 之后样本集仍显示明显非首选率才做;**一次一项**,便于归因 | C 的样本集对比数据 | 单变量对比显示改善,且无"越用越乱"回归 | | **E 拼音深化** | 独立立项 | 拼音后端质量评估 → 是否自研 FSA 的 ADR → 整句/长词(很可能不做) | 风险面与五笔排序无关,不能搭车 | 质量评估报告 | 有证据支持才立 ADR | | **F 平台扩展** | 独立项目 | R3 Windows(TSF spike 限 1–2 周,失败退 C++ 薄壳)→ R4 Linux → R5 移动端 | 各平台宿主互不影响,但会分散维护精力,**串行** | macOS 维护有余力 | 各自平台真实应用验收 | -| **G 数据/教学** | 随数据批次 | 拆字说明扩充(现状 104 条完整解释)、`TBD-2` 五笔98/新世纪/郑码 | 纯数据,无行为变化,可跟在任何发布后面 | 数据许可与核验 | 覆盖率提升且抽样核验 100% | +| **G 数据/教学** | 随数据批次 | ~~拆字说明扩充~~(已由 B0 运行时 2,614 条解释取代,2026-11-15 关闭)、`TBD-2` 五笔98/新世纪/郑码(暂缓) | 纯数据,无行为变化,可跟在任何发布后面 | 数据许可与核验 | 覆盖率提升且抽样核验 100% | ## 2. 能合 / 不能合的判断 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 2dc40866..28fc68bc 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" @@ -51,7 +51,7 @@ | P1-2 | ~~corpus M2-1:来源与许可调研~~ ✅ 2026-11-14(ADR-353,报告 279);主候选中央研究院「漢字構形資料庫」(GPL-3/GFDL/CC BY-SA 2.5 TW)+ cjk-decomp(MIT/Apache-2.0)交叉校验;未下载数据 | `docs/research/root-glyph-sources.md`;官方站点证书过期需离线核对 | S | — | ✅ 已调研 | | P1-3 | **字根字形身份库(N1)**:N1-d 已解掉可定位的 D2 补充区 PUA;剩余 13 个未解决项与字形绘制 | ADR-353:N1-d 核验表已接入(报告 280);剩余 13 个(如 U+F005A 氏/卯、U+F001B 才/亅、U+F0145 乚/匕)保持占位。后续才需要 Academia Sinica / 自绘;不再需要全量自绘 251 个 | M–L | N1-d ✅ | 数据入库 | | P1-4 | ~~真笔顺(N2)/ 结构标注(N3)/ 完整拆字(N4)~~ ✅ 2026-11-14(ADR-355/356,报告 281/282) | D18 56 个成字字根真实笔顺;结构覆盖 2,766/3,000(识别码优先/IDS 参考,146 条冲突记录);8 个 D2 漏拆字补成 full。标准 v1 + 字形别名后 B0/runtime full 2,614(87.1%);剩余 232 partial / 154 unknown;D24 cjk-decomp(Apache-2.0)已接入,未用 D3 作来源 | M–L | P1-3 ✅ | 数据入库 | -| P1-5 | **拆字说明扩充** | B0 已有 2,759 条 `full` 结构化解释(运行时 2,602);D14 旧表仍是 104 条,尚未同步/扩写 | L | P1-4 ✅ | 数据入库 | +| P1-5 | ~~拆字说明扩充~~ ✅ 2026-11-15 关闭(被 B0 运行时取代) | 学习区已改为读包内 `B0-runtime.tsv`(3,000 字,`full` 2,614 条结构化解释,由 `render_explanation` 生成);D14 旧表(`wubi86-verified.tsv`)只作「资源缺失」兜底,不再逐条扩写 | — | P1-4 ✅ | 不再单独排期 | | P1-6 | **多方案支持**(五笔 98 / 郑码 / 仓颉) | **当前不实现**:先把 86 做透;标准 v1 已留 `schemes/*.toml` profile 扩展点,98/新世纪需各自字根/码表许可数据 | M(含数据) | 用户暂缓 | 暂缓 | | P1-7 | ~~客户端自动回读缺口~~ ✅ 2026-11-14 关闭 | 用户决定收敛外部依赖:Safari/Chrome/Xcode 自动化、探针、fixture 与客户端矩阵已移除;验收只保留系统自带 TextEdit(质量样本)与自建 imetype 窗口 | — | — | 已闭环 | @@ -101,7 +101,9 @@ ### P3 · 长期/研究性 -- **corpus 全量**(3,000 字 ≥98% 可解释):依赖 P1-3/P1-4。 +- **corpus 全量**(3,000 字 ≥98% 可解释):**已到许可数据上限**——标准 v1(ADR-358)+ 字形别名(ADR-359)后 + `full` 2,614(87.1%)/ `partial` 232 / `unknown` 154。继续提升需要公开许可的 canonical 五笔根序数据(当前没有), + 或接入 CDP(GPL-3,仅结构/笔数,不补根序)。不降标准、不猜;暂不排期。 - **D3 oracle 替代**(TBD-5):D3 已降级为"未声明许可、仅构建期"。 - 平台扩展(Windows TSF / Linux Fcitx5 / Android / iOS):单独立项,不与 macOS 质量批次同期,见 `ROADMAP.md`。 @@ -115,11 +117,12 @@ |---|---|---|---| | **A · 收尾(已清零)** | P0 全部完成 | — | — | | **B · 产品可感(已完成)** | U2-3 扩展词库、U3-5 符号 / emoji 均已真机 PASS | — | — | -| **C · 数据地基(本轮完成 N1-d/N2/N3/N4)** | N1-d 已接入;N2 真实笔顺/N3 结构/N4 完整拆字已落地;余项是覆盖扩量(86.3%→98%)、13 个语境歧义 PUA、P1-5 说明同步 | 2–3 周+ | 长期数据正确性;短期用户不可见 | +| **C · 数据地基(已完成到许可上限)** | N1-d/N2/N3/N4 + cjk-decomp + 标准 v1 + 字形别名全部落地;`full` 2,614(87.1%)。剩余 232 partial / 154 unknown 需 canonical 根序数据;13 个语境歧义 PUA 属可选收尾 | — | 长期数据正确性;短期用户不可见 | | **D · 验收收敛(已完成)** | 移除 Safari/Chrome/Xcode 自动化、探针与 fixture;只保留 TextEdit + imetype | — | 已闭环 | -| **E · 小版本发货** | 把新 B0 数据(运行时 full 2,454)装进 1.3.1/build 44;可顺带确认练习错题加权外观 | 1–2 天 + 换包/发布授权 | 让用户实际看到学习区改善 | +| **E · 小版本发货(暂缓)** | 把新 B0 数据(运行时 `full` 2,614)装进 1.3.1/build 44;可顺带确认练习错题加权外观。**用户 2026-11-15 决定先不发版**,先做集成验收 | 1–2 天 + 换包/发布授权 | 让用户实际看到学习区改善 | -**建议**:先把 PR #307 合入 main;然后在 C(继续数据地基)与 E(小版本发货)之间选。若近期要发版,E 的收益最直接;若继续做长线,C 里优先 N2 笔顺(需先定数据源)。验收侧的 P1-7 已随“自闭环”收敛关闭。 +**建议**:C 已到许可数据上限,暂不继续投数据;E 暂缓发版。当前主线是先做**集成验收**(确认已合入的改动在候选包里行为正常), +再决定 1.3.1 的发版时机。验收侧的 P1-7 已随“自闭环”收敛关闭。 ## 4. 需要你现在决定的事 @@ -129,7 +132,7 @@ 4. ~~U3-4/N1-d 是否按样本字逐条确认~~ ✅ 2026-11-14 已完成可定位部分:66 条 `(PUA, 键位)` 核验接入, 运行时 `full` 1,904→2,454;剩余 13 个未解决项保持占位。清单见 `modules/hanzi-structure/corpus/pua-inventory.tsv`,核验表见 `pua-supplementary.tsv`。 -5. **下一步二选一**:C(继续覆盖扩量/P1-5)或 E(把新数据做成 1.3.1 小版本发货)。 +5. ~~下一步二选一~~ ✅ 2026-11-15:C 已到许可数据上限、P1-5 关闭;E **暂不发版**,先做集成验收。 6. ~~N2/N3/N4 是否继续~~ ✅ 2026-11-14 完成数据地基(ADR-355,报告 281);覆盖率门槛仍待扩量。 ## 5. 已完成(存档,便于对账) diff --git "a/docs/\346\225\260\346\215\256\346\235\245\346\272\220\344\270\216\350\256\270\345\217\257.md" "b/docs/\346\225\260\346\215\256\346\235\245\346\272\220\344\270\216\350\256\270\345\217\257.md" index 74f3ab38..37da1355 100644 --- "a/docs/\346\225\260\346\215\256\346\235\245\346\272\220\344\270\216\350\256\270\345\217\257.md" +++ "b/docs/\346\225\260\346\215\256\346\235\245\346\272\220\344\270\216\350\256\270\345\217\257.md" @@ -323,6 +323,15 @@ D2(`aardio/wubi-lex`,MIT)把部分五笔字根写成补充区私有码位 - **N4 完整拆字**:`data/learning/wubi86-complete-decomp.tsv`(D18)补 D2 漏拆的 8 个字(没 城 余 代 件 凭 俄 浠),组件全部为可读字形、键位与全码逐位对齐。只在这 8 个字上启用,`componentsSource=D18`;其余仍用 D2。 - B0 schema 升到 **v6**;机器登记见 `data/sources.toml` 的 D18;回归见 `test-hanzi-structure-b0.py`、`validate_b0.py`。 +### 五笔拆字标准 v1 与 D2 字形别名(ADR-358/359,2026-11-15) + +- `data/learning/wubi86-root-inventory.tsv`(项目自编 CC-BY-SA-4.0,**241 条** root/key):86 标准字根清单, + 用于 `full` 的逐组件键位校验;来源是官方 86 字根表、D14 键位事实与码位佐证,不复制任何未许可字形。 +- `modules/hanzi-structure/corpus/d2-glyph-aliases.tsv`(项目自编 CC-BY-SA-4.0):D2 用假名/注音符号 + 代替汉字部件的**同形归一化**(`リ→刂`、`ㄗ→卩`、`ク→夕`),不新增字根/键位;归一化后仍走标准校验。 +- 结果:B0 3,000 字 `full` 2,614(87.1%)/ `partial` 232 / `unknown` 154;1,000 字 `full` 928。 + 剩余条目缺公开许可的 canonical 五笔根序数据,不降标准、不猜。 + ### D15 自编输入验收集与核心词表扩充(ADR-227) `data/input-quality.tsv` 为本项目独立编写的433项聊天、工作、开发及长词验收集,作者为项目贡献者,自产编排CC-BY-SA-4.0。292项训练,69项探索验证与新增72项冻结后保留均不参与生成;训练项仅作为D4/D5/D10已有词条的选择条件,不创造读音、编码或频次。SHA见sources.toml。两核心表改为前20,000条加训练词,原始权重保持;个人词与未入选长尾不混作系统覆盖。