Skip to content

test(core): wide/combining x 1049 x DECAWM literal oracle (#27) - #305

Merged
JavaZeroo merged 2 commits into
mainfrom
feat/core-widechar-1049-r27
Nov 1, 2026
Merged

JavaZeroo merged 2 commits into
mainfrom
feat/core-widechar-1049-r27

Conversation

@JavaZeroo

Copy link
Copy Markdown
Owner

摘要

#27 剩余清单子项:宽字(CJK 双宽)与结合字序列跨 1049 备用屏,叠加 DECAWM 关闭换行与 resize 边界。固定合同为现有实现(screen.hpp put/resize/activate_buffer + terminal.hpp 1049/DECAWM 分派)+ ADR-0005 物理行裁剪,没有新增 WindTerm 原版运行——原版未观测宽字/结合字跨 1049,因此本切片全部为组合模型检查,锁定当前实现为基线,不声称原版匹配。

新测

新增 strict CTest:experiments/core/widechar_1049_test.cpp(注册为 widechar_1049_core),strict/recovery 双模式 23/23 checks:

  • 末列宽字不足格预换行 × DECAWM 开/关(结果一致,宽字整体换行)
  • 宽字恰好填满末两格:DECAWM 开→下一窄字标准换行,关→覆盖 trail 并清空 lead(不分裂)
  • 宽字 lead/trail 经 1049 进出隐藏/恢复不分裂
  • 结合字聚类跨 1049 保持并可续接;主屏/备用屏各自独立;1049 再进入清空备用屏
  • 宽字后结合标落 lead 格并跨 1049 继续聚合;原文复制逐字节回环(宽字不重复)
  • resize 1 列/1 行与 1049 交叉的宽字边界(1 列收缩清空孤 lead、隐藏帧同步裁剪、1 列屏拒绝/替换)
  • 逐字节与 38 个二段分割状态签名一致
  • 异常序列:strict 拒绝无 base 结合标、recovery 以 U+FFFD 替换;malformed UTF-8 恢复不扰动前序宽字

验证

  • MSVC 19.42.34433.0 Release,Qt/candidate 关闭;17 项核心 CTest 全绿(16 既有 + 新 23/23),0 跳过
  • Python experiments.core.test_core/test_unicode/test_recovery 66 项通过
  • 生产实现零改动(screen.hpp/terminal.hpp SHA 与 test(core): pending-wrap literal oracle x 1049/DECAWM/DECOM (#27) #304 基线一致);唯一中途红是测试自身把 recovery 误当 strict(recovery 以 U+FFFD 替换不抛错),按 strict/recovery 区分修正两处
  • 归档:experiments/core/results/2026-11-02-widechar-1049/(README.md + validation.json,含源码/二进制 SHA)

遗留缺口

宽字×DECAWM 关、宽字/结合字×1049 原版均未观测,保持未知(组合模型检查);完整 active grid、逐格样式、每屏 origin 位与固定 ConPTY 运输留待后续。#27 保持开放。

关联:#161 #303 #304

@JavaZeroo
JavaZeroo merged commit 0e3cd51 into main Nov 1, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant