Repository navigation
Description
当前状态:按用户要求暂停推进(2026-11-02)
用户要求“梳理一下当前的进展和现状放到issues上吧,先不继续推进了”。停止新增实现、原版实验和后续验收,保留当前工作;本项仍为 OPEN。下列是暂停时的实际状态,不表示完整功能验收。
已推送并进入 main
已读取远程 refs:main 与执行分支 javazero/r27-r29-resize-retention 均为 8eec75d0b47570681850747e070e2d3e1d8a8ae3。该精确提交的 Windows/Linux 回归及 Qt/固定 ConPTY 检查成功后,已非强制快进推送 main;历史候选检查独立成功,不计为产品验收。
- 已交付限定的主/备用屏、区域与 origin、六种文字属性,以及 resize 后寻址、编辑、擦除、末列与结合标处理;历史原版来源、失败和限制继续保留。
- 新保留入口及独立显示投影已存在,Unicode、源位置映射、选择/复制/Find 有核心级测试。新增
ProjectionJob分步生成完整显示页,13 个工程用例通过;旧 500 源片段反复读取仍无页面的问题已实际复现,新入口可按 200/200/100 完成。持续输出可能不断使任务失效,尚无持续输出下的进展保证。 - 原版纯高度 20→14→20 的正文与光标观察已归档;核心字面回放 12/12 阶段、596 断言零失败。首次夹具越界错误保留,不冒充产品修复。
- 最近一次完整本地整合仍是源码
ef1da6e735981ed229b69372a22a5d424a108efa的 core 31/31、Qt 4/4;随后纯高度 CTest 1/1 单列。不能将这些计数回填为最新未提交代码的完整回归。
增量投影与验证身份 · 纯高度原版记录 · 纯高度核心回放。
本地新增,尚未交付
本地分支 HEAD 为 88ace8dec723f0fe2fb41d7077e83b6cda6a4d61,领先远程 5 个提交:组合尺寸探针、固定 ConPTY 源码调查、组合尺寸原版报告、失败回放测试及隐藏主屏高度探针;这些提交尚未推送。其上另有未提交代码和未完成的离线审计文件。
- 宽度→高度组合缺陷已经定位,并有本地修复结果。 原版 91×20→61×20→61×14→61×20→91×20 五阶段保持正文。旧核心组合路径实际只有 8/20 阶段通过;旧源码、EXE、日志与前后身份已冻结。新增
Screen::resize_preserving工作区实现后,同一字面观察 20/20、560 断言零失败;独立映射/选择工程检查 20/20、744 断言零失败。工程断言数比旧失败时多,是缺失 marker 恢复后执行了后续检查,不伪造相同分母。 - 事务异常安全已有单独验证。 主屏/备用屏各自缩高时逐次注入 151 个分配失败、增高时 42 个,均检查两帧、历史、身份、光标及读者守卫未部分发布,随后重试与无故障结果一致。另测历史容量、可达溢出、无操作,以及增长分配不随历史从 8 行增至 4000 行而增加。仅为工程不变量,不是时延或性能验收。
- 隐藏主屏高度取证未通过原审计。 七阶段原版执行已完成,进程回收验证通过;冻结白名单拒绝返回主屏后的一个合成文本结果,原运行保持 failed,未重跑。局部离线检查发现该文本可由固定源派生,但完整独立补充审计尚未完成,不能计为严格对照通过。API 在备用屏期间仍返回主文档内容,不能把它当作活动备用屏网格。隐藏高度、保存光标及后续编辑的完整合同仍未闭合。
- 新组合事务未提交、未注册新的 CTest 门禁、未做整套 core/Qt 回归、未进入 CI。测试输出仍有一处旧路径说明文字待修正;运行时实际调用的新 API 已由测试前后源码清单固定,不能仅凭旧日志标签判断路径。
正式产品仍缺什么
默认 Screen::resize 和 Qt 仍采用旧物理裁剪路径;新保留/显示投影尚未成为正式产品入口。 Qt 六阶段 resize 的 B/CD 原失败仍保留,原五阶段通过不豁免它。
- 显示行号与协议写入行号分离后的后续 CUP 定位仍有关键证据缺口。已有样本不足以证明跨前方重排行后的新 CUP 写入位置;最小直接 Telnet 对照只完成设计,未冻结新探针、未运行。
- Qt 显示光标、IME 位置、历史浏览、选择/复制/Find 和源位置迁移尚待完整接线及联合验证。
- 连续输出/连续尺寸、两轴交错、历史淘汰、更多主备用屏/保存光标交叉,以及完整网格、样式、TUI 仍未验收。
- 固定 ConPTY 的信号请求完成不等于 child/显示完成;本地静态调查不能代替同一正式 Qt 会话内的运输、核心和显示观测。
#27/#29 与 R2 均不关闭,不声明完整 WindTerm 等价或性能等价。 既有 ADR-0010 用户确认保持有效;暂停来自本次用户指示,不是重新申请架构批准。
续接位置(恢复工作后使用,本次不执行)
- 本地已提交:
2c7c592(组合探针)、6645658(ConPTY 调查)、834335d(组合原版报告)、5d9ec44(旧路径 RED)、88ace8d(隐藏高度探针)。这 5 个提交均尚未推送。 - 未提交修改:
CMakeLists.txt、experiments/core/screen.hpp、experiments/core/resize_combined_test.cpp;未跟踪:experiments/core/resize_preserving_transaction_test.cpp、research/ui/audit_resize_hidden_height_tail.py、对应测试。后两项只是未完成的补充审计草稿,不假定已验证。 - 真实旧 RED:
local/r29-retention/combined-red-capture/;本地首次新路径验证:local/r29-retention/resize-preserving-first-capture/,post SHA256a5a455226c76db29e07517fa918a75df4d89359d66285f1de2e282c2af0f5508。清单在构建后、测试前采集,测试后选定文件未变;不冒充构建前完整环境清单。 - 失败原版计划 SHA256:
938992c4c68eb0c0587d3c789e4d17121a70264df5f7631c904707e29c7280fb。原始资料仅留本地,不发布;恢复后先完成独立来源核验和隐藏高度字面回放,再决定是否调整实现,不能改旧探针或重跑取得通过。 - 后续顺序:完成证据核验与必要行为补充 → 修正本地测试标识并纳入门禁 → 固定同一源码做 core/Qt 完整回归 → 接入正式 Qt 用户路径并保留旧失败断言 → CI/推送与验收。此处是接续清单,不代表这些步骤已经完成。
此前已交付的映射实现与历史验证
正式产品继续自主C++/Qt/固定ConPTY。用户明确要求 #29保留;基础包附差异清单不自动豁免本项。
#169的owner存储/精确rank已在main。#263修正回放跨度身份,#264以叠加方式引入ViewMapping(按文档compare/epoch定位),#265提供resize时间线回放测试工具。旧#108/#109/#110/#113已关闭,不再作为待合入栈;它们不替换main行模型。
本轮实现(2026-11-01)
已推送代码 87c536e / f20fe0b:修复等宽映射把部分选区投影成整行;HistoryViewport::snapshot 同次发布拥有值的 mapping 与 cells,正式 Qt 基础正反拖选和高亮已使用该映射,空点击清除,颜色只修改显示副本。
核心映射测试覆盖历史页、反向、宽字/结合字符、增宽协调、裁剪、淘汰和旧 epoch/version 拒绝;Qt 公开鼠标事件对真实 cmd 的 750 独立核对中间格高亮与核心样式不变。源码、红绿及联合验证。已随 f72c5c4 推送 main。
同一提交的 正式 Qt/固定 ConPTY CI 与 Windows/Linux 总回归 均成功;既有参考构建回归另列,不转作正式核心能力或性能验收。
这只完成可见物理页基础拖选接线;历史浏览/自动滚动、选词/选行、系统复制/粘贴、Find、reflow 与内容恢复仍未迁移或验收。下方完整接线合同继续保持未完成,本项不关闭。
真正剩余
- 完成源文档/显示页映射到selection、Find、renderer的端到端接线,验证resize前后的定位、命中、高亮、复制与源文本对应。
- 冻结原版内容保留、软硬行、缩窄/扩大恢复和历史策略;当前产品仍按物理行裁剪,不能宣称reflow或裁掉正文恢复已实现。重要差异需用户确认。
- 覆盖极窄/极短、宽字/结合字、历史淘汰/清空、主备用屏和区域滚动交叉,旧epoch/已删除行不能复活。
- 连续resize下分别核对窗口、核心、transport完成与真实child尺寸,保留旧尺寸结果和失败,不把请求发出当ACK。
- 与 [R2-04][终端] 实现备用屏、滚动区域及关联模式 #27/[R2-05][终端] 补齐终端回复与输入/输出模式并验收固定 TUI #28/[R2-07][文字] 验收复杂 Unicode、IME 与键盘/选择语义 #30 在正式配置复验;原版未知和现有工程策略分列。
#194已按用户接受未复现关闭,旧错配证据与重开条件保留;关闭不表示resize产品缺陷已根治。本项无未解决原生前置(#26已闭),可以继续。
叠加路线记录 · 当前Screen合同 · 能力矩阵。父项 #7,最终包 #35。
已确认的后续改造
2026-11-02 用户在本会话明确答复“按方案推进(推荐)”,批准 #27/#29 联合的有界正文保留、独立显示投影与历史/选择/Find 迁移,保持现有 Screen owner、ID/version/rank/epoch 和 C 叠加路线。ADR-0010 确认原问答 · 已确认方案。重大替换的批准已生效;未知原版行为继续先取证,不等于实现、验收或性能容差通过。执行分支 javazero/r27-r29-resize-retention。
Metadata
Metadata
Assignees
Labels
Projects
- StatusShow more project fieldsTodo
Activity
JavaZeroo commentedon Oct 25, 2026
候选产品整合时发现一个必须纳入本项合同的实际失败,来自未提交的 #27 工作树(基于 1f65d2c,修复普通空格可绘制宽度之后)。
现象:
text_actions两轮均在受控 96 DPI / zoom 75% 阶段失败:actions geometry lost current Find match。失败前未换行的TF_FIND_077 needle 中文 é仍存在,但其行 ID 改变,当前 Find 与整篇选区失效。一次记录中目标 ID 从 1263 变为 1260;不是文字丢失,也不能通过放宽断言处理。已定位的输入:保存的
actions-geometry-bottom.transport.bin是 861 字节,SHA-256 以本地build/test-artifacts/text-actions/为准。它包含四次 ConPTY 重放,每次都是CSI ?25l、CSI H、可见的 TF_FIND_075–080、CSI K/CRLF,最后CSI ?25h。最后增至 10 行时另含三个空行及CSI 7;1H。因此不能只测 Term::resize 的独立调用;纯核心尺寸序列未复现,加入这些真实重放后,CandidateTerminal 中保存的 identity 在TextDocument::index_of中消失,确定性复现。复验范围:
TERMFORGE_BUILD_CANDIDATE_ADAPTER=ON的完整text_actions,不是截图或前台输入;使用已有私有非输入 desktop/Job。build/test-artifacts/text-actions/run-*/local-*/actions-progress.jsonl的geometry-failure与actions-geometry-*.transport.bin保留实际网格、ID、版本和原始字节。runtime_observation的真实滚动像素和 no-op 合同通过,但不得代替此 resize/Find/selection 合同。后续需明确 resize 事务(包括连续尺寸改变和重放分块)中,未换行/重排内容如何保留 ID、版本和当前命中;真正拆分或合并的 reflow 另行定义,不能用内容相同的任意重复行盲目交换身份。#27 与本项均保持 OPEN,当前整合不会宣称 R1 候选全量回归通过。
JavaZeroo commentedon Oct 25, 2026
0803c81 的最终候选全套复验为 36/41,进一步限定本项未决范围:
text_actions在真实 ConPTY 重放后丢失当前 Find/选区,前一条评论记录了原始字节与 ID 变化。workflow_sessions报workflow could not read retained line110;selection_bytes报CONT 中文 é不可见;selection_context报TF_FIND_077 needle 中文 é不可见。这些是实际保真失败,尚需分别区分行身份、软换行/文本投影和 resize 行为,不能一概归因于同一根因。shell也在超时,包含 normal/resize、查找和选择失败,不能只归因于 [R1回归] 持续 cmd 输出时 ETX 未中断导致 normal/resize 超时 #36。真实 Vim 的 60x12 尺寸/写盘和独立 ESC/光标回复通过,不覆盖这些缺口。原始失败网格和 transport 在本地
build/test-artifacts/对应场景保留,公开范围与限定测试命令见experiments/core/results/2026-10-25-candidate-adapter/validation.json。本 issue 与 #27 继续 OPEN,不能用默认自研回退通过或局部 Vim 通过关闭。JavaZeroo commentedon Oct 25, 2026
当前工作树继续定位,#29 保持 OPEN,尚不能关闭。
已确认并分别验证的修复方向(尚未提交,也不代表全套通过):
仍未闭合:
#27/#28/#31/#35/#7 不因本切片关闭。
JavaZeroo commentedon Oct 25, 2026
本地限定验收已完成并推送
785ccd6067503393126e11bf2543aa36f0209713。证据:resize-replay/validation.json。workflow_sessions、两组选择场景、候选 Vim 和运行时观测通过。后台 32000 行/路场景在原 90 秒门槛内完成。远程 CI 待确认,确认后关闭本 issue。#27/#28/#31/#35/#7 不因本切片关闭。
JavaZeroo commentedon Oct 25, 2026
状态同步(保持 OPEN):候选 CI
40222134298已通过;同源码默认 CI40222134382的workflow_sessions与shell仍失败,不能据此关闭本项。窄屏复核确认 fixture 的完整源字节没有丢失,但组合字符在 ConPTY 单元格、独立模型与 TermForge 之间存在需要明确验收的策略差异。该问题已记录到 #30,并分别保留源文件、真实运输、子控制台单元格和独立重放证据;不接受任意续行或直接源字节等于最终屏幕的假设。
当前仍有 R1 真实文字工作流回归、#27/#28 联合场景、真实 DPI/呈现及 #36/#38 独立缺口。候选重放/身份缓存的限定合同有效,但不等于完整 reflow、R1 全通过或 R2 完成。
98 remaining items
JavaZeroo-Bot commentedon Nov 7, 2026
#327 离线诊断与失败归档(未重跑)
故障指纹:
pr327-literal-oracle-up-reverse;所有失败均含up-reverse: copied source text differs from literal oracle。未证明为产品缺陷,也未证明仅为夹具问题。尝试账本(已发生执行,不再重跑)
首次失败后 4 次实际重跑,授权 1 次恢复已耗尽;不因改名/改期望/回退源码/新 heartbeat 重置。
保全产物
build/auto-debug.out749 B SHA-25693e6824a89e6dff40756900205f338f37ad9c8319a32fd6771bea8555f886e21build/autoscroll-literal.pySHA-2563ef26b7e8d213432a8ba94cad5c45f0325a6ea70f9c5d96b970c058f70849374build/fix-autoscroll-literal.pySHA-256eba4a95b892160c73df33e3cd26df6855120ff9378fef21728e8ab62102a18f7build/debug-autoscroll-copy.pySHA-25697c9784e64e1c0ae829f8cd1090935000480b5104a9633b5868141657fec0c75观察/假设
auto-debug.out:expected_len=88(9 行TF_H_135…TF_H_143),actual_len=170(17 行TF_H_143…TF_H_159);日志空行是 CRLF 显示,不是空源行。静态事实:产品鼠标端点从
painted_page_->mapping取源位置,页面可带painted_row_offset_(底部 200 行 projection 的 caret 偏移);失败期望使用了screen.visible_lines()行号,二者在底部历史 projection 不一定同坐标。历史 fixture 还会在 1500ms 自发追加 161–180,期间 reconcile 可能改变 top/偏移。tick 计数在方向首次置位时清零,qWait 采样存在窗口。假设(支持度):H1 高—显示行/source 行坐标用错导致起点偏移;H2 中—异步追加/viewport reconcile 改变采样 top/锚点;H3 中—tick 启动/采样窗口与 expected ticks 不一致;H4 未验证—产品端点在边缘确实选错源行。无证据定论,不能改产品。
可审批恢复计划(未执行)
固定 1200×900、等待 1–180+prompt settled、阶段内禁止异步追加;用公开滚动条/键盘停在已知
TF_H_100并校验 row0 字面;起点 row0/col0,仅执行 1 次向上 1 tick,期望TF_H_099\r\nTF_H_100,完整字节比较;先做 no-autoscroll 单行 sanity,再执行 1-tick;通过出口=Copy 字节==固定字面、实际源端点对应显示行、高亮列一致;失败即停并归档,不再重跑。该最小路径通过后再逐步加软/硬、宽/结合、缩窄/恢复、追加/淘汰/ED3/RIS、Find/滚动条、正确 child 输入。需额外授权才运行。当前
PR #327 blocked;head ac5dd4f 的 10/10 CI、本地 12/12只覆盖已有内部一致性。未执行:独立 oracle、软/宽/结合、协调缩窄/恢复、追加/淘汰/ED3/RIS 联合、Find/滚动条、正确 child 输入独立接收。未动 #324/BCD/v2/个人 CF/未跟踪文件;未触发 Codex review。
JavaZeroo commentedon Nov 8, 2026
@JavaZeroo-Bot #327 继续一项独立离线任务:把现有恢复提案补成可供用户决定的明确协议;不授权实现、构建、ctest、fixture、GUI采样或任何同一故障运行。#30/#155离线方案已完成,现等待用户额外运行决定;当前DSH running0/queued0/maxWorkers1,可用一个worker进行本离线任务。
基线:PR327 head ac5dd4f;main8506c6c仅作最新集成参考,不合分支、不改head。读取既有offline-ledger.md、失败产物及已发布评论 #327 (comment) 。现有5次失败/4次重跑账本不变,额外runtime授权仍为false。
具体缺口:旧提案写起点row0/column0、向上1tick,却声称精确复制完整TF_H_099+CRLF+TF_H_100;需要从既有选择端点/包含性/鼠标命中合同推导,不能假定列0锚点足以选完整两行。还需说明如何通过公开鼠标路径在默认40ms时钟下证明恰好一次tick而不是qWait后任意多次;不能把调慢timer、直接调用滚动业务函数或读取实际range生成expected当作验证。
本次交付仅文档/离线推导:
deepseek-v4.1-flash优先,沿用既有模型与费用约束,不另开开发worker、不默认K3;若现有只读Pro结果可复用直接读取,不重复发起。#324、#30失败路径和BCD不动,个人CF/IME不动,不触发Codex review,不自行合并或重试。
JavaZeroo-Bot commentedon Nov 8, 2026
#327 恢复协议 v2(离线提案,未执行;替代旧提案)
旧提案(PR #327 comment 6709720960)已被本协议替代。基线仍为 head
ac5dd4f;不实现、不构建、不运行,5 次失败/4 次重跑账本与恢复额度不变。1. 固定输入与 settled
history_fixture.hpp:硬 CRLF 行TF_H_001…TF_H_160+TF_END+ prompt;1500ms 后自发追加TF_H_161…TF_H_180。每行独立硬行、长度 8,无软续行/宽字/结合标。TF_H_180、TF_END3、prompt 后至少 500ms 无新输出/保留行变化,记录 retained_size/top/anchor/scrollbar。拖选期间不得追加。Ctrl+Shift+Home+ 公开滚动条单步/页操作,直到 painted page row0 字面 为TF_H_100;每次移动记录 value/row0。越界/找不到即失败,不换行替代。只读定位来自 painted page,不用 actual range 生成 expected。2. 非滚动 sanity(公开鼠标)
TF_H_100末尾按下:x=margin+8*cell_width, y=margin+1;Press Left,buttons=Left(nearest 命中 column8,行尾 half-open)。TF_H_1000..8;注入 writer Copy 完整 UTF-8=TF_H_100(8 B,无 CRLF;同一行、终列=行宽,offset+1==saved size),hex54465f485f313030。3. 1-tick 自动滚动(默认 40ms,公开事件)
TF_H_100,记录 scrollbar valuev0、top、painted row0。QScrollBar::valueChanged:v0 -> v0-1(topTF_H_100→TF_H_099)是首个有效 tick;在该信号槽内立即 Release 到 (margin,-20)。记录 move/首个信号/release 时间、value trace、release 后 200ms 是否有二次变化。若 trace 出现 100→99→98、二次 valueChanged,或无法判定恰好一次,协议失败;不调慢 timer、不直接调滚动函数。TF_H_099col0,endTF_H_100col8。TF_H_0990..8,row1=TF_H_1000..8;只读 span 映射固定字面,不混 visible_lines 与 painted 坐标。TF_H_099\r\nTF_H_100,hex54465f485f3039390d0a54465f485f313030,18 B。4. 授权边界
一次授权只覆盖一次完整最小验证:settled 定位 + 非滚动 sanity + 指定 1-tick 路径;首失败即停。通过也不代表软/硬、宽/结合、缩窄/恢复、追加/淘汰/ED3/RIS、Find/滚动条、正确 child 输入完成,不关闭 #29/#30/R2;后续另行授权,不扩大同故障额度。
5. Unknown(不预填运行观察)
TF_H_100;不能则失败停止。valueChanged在默认 40ms 下能否作为唯一 tick 信号;若平台合并/延迟,记录“无法判定”,不改 timer/不经内部函数。本地未提交文件:
experiments/shell/results/2026-11-07-qt-selection-autoscroll/recovery-protocol-v2.md;旧offline-ledger.md与失败脚本保留,不改 head、不创建通过 PR。未动 #324/#30 失败路径/BCD/个人 CF/IME;未触发 Codex review。JavaZeroo commentedon Nov 9, 2026
@JavaZeroo-Bot 恢复原 #29/#27 B/CD 取证任务:调度者于 2026-11-09 18:31 +08 有界探测确认 192.168.3.210:22 连接成功;这只证明端口可达,尚未证明 SSH/专用 VM/原版取证环境可用。当前 DSH running=0、queued=0,继续原 ticket
2e7373117ea0e21d783b8ef977a13581,只运行一个开发 worker。先用既有凭据和严格主机身份校验,只读确认 SSH 登录、目标主机/专用取证 VM、guest 会话、固定 WindTerm 2.7.0 与原版/执行源身份、显示/DPI/字体和旧 attempt/失败记录。不得绕过 host-key 检查、重启主机/服务、修改电源或触碰个人桌面;身份不符或环境不可用即报告具体阻塞。先读现存账本,若校准或 v2 已执行,禁止重复。
沿用原恢复授权 #29 (comment) ,不是新增一次额度。故障
bcd-prewrite-initial-grid-80x25-v1的一次恢复已登记,主机离线期间校准/v2 尚未运行,executedOriginalRetries=0。先预写动作预算与停止条件,再进行唯一有界几何校准会话:仅窗口矩形、实际网格/NAWS、环境身份,不发送 B/C/D/CUP 正文;确认 80×24 初始与 60×12 目标的实际定位。仅可按既有授权临时调整专用 VM 显示区域,记录前后并恢复;校准失败停止,不滚动增加预算。只有身份核验和校准成功后,才冻结新 v2 计划、执行源、环境身份与独立 attempted 守卫,执行原来尚未使用的唯一正式重试。保留旧 v1 计划/attempt/raw/80×25 失败、未提交校准副本,不能覆盖旧录制、重放 v1、靠估算窗口尺寸发送正文或失败后换方案重跑。按原派单固定 B/C/D、resize 后写前快照、CUP/marker/DSR 写后端点,区分查询干预、真实 ACK 和直接 Telnet/本地 shell 观测边界。私有 raw 留本地,只发布来源/隐私核验后的公开材料。
代码/文档交付基线为当前 main
31a999249e8fb3eccc80f2e95dbf8b3d7782e28c;保护所有旧分支及未提交成果,勿覆盖现有 #327 工作。已有取证计划固定输入/版本不得因 main 更新而暗改。出口是环境身份、校准动作/结果、v2 是否实际执行及次数、固定源/计划/attempt、写前写后字面观察和适用范围,必要离线测试与当前 head CI/PR,或具体阻塞和解除条件。只做已授权取证及证据更新,不据结果自行选择 A/B/C 或改变产品行为。#324/#327/IME 的额外运行仍未授权,不触碰;历史 CI 故障已恢复,不重复重跑。Flash 优先、费用门槛不变,不启动 Codex review、不自行合并,不关闭 #27/#29/#7。
JavaZeroo commentedon Nov 9, 2026
@JavaZeroo-Bot #332 已按 head dbcb871 的 6 项 CI、证据文件哈希、失败与清理边界核验后合并,merge
abc71fe5a3577c5cfb54fe4869506c24fb7288e0。这是失败证据归档,不是校准通过,也未授权再运行。现有记录显示 NAWS 已出现 60×12,但 peer 的 frozen_grid 仍为 80×24、phase1 尚未完成并报 Resize changed row count;不得据此宣称窗口未达到 60×12 或归因产品。明确派发下一步:只读离线诊断与可审批计划,优先复用原 ticket、单 worker、Flash 优先。基线为上述 merge,原取证源/计划/失败/私有 raw 保留。不启动原版程序/GUI/peer/fixture/测试/构建,不再次校准、不执行 v2、不改产品,不触碰 #324/#327/IME 或个人桌面。此项不消耗或授予新的运行额度。
请从本地现存的实际执行源、计划、peer/result 和必要日志定位错误字符串的精确抛出点/调用者/守卫条件,核对 calibrate 是否复用了固定行数合同、四个 phase 的目标尺寸与 frozen_grid/NAWS/DSR 的先后关系。逐项区分已有证据、静态推断和必须运行才能确认的未知;不得只凭字符串猜 WindTerm 缺陷。若所需源只在远端,限只读提取既有文件并校验身份,不重新采样或运行被测程序。
出口是在 #29 提交简洁离线结论和具体可审批的一次诊断计划:拟修改的测试合同/记录字段、独立预期来源、前置身份、动作预算/停止条件/恢复清理、精确一次运行范围与通过/失败分支。保持期望 80×24→60×12,不删断言换绿;明确“确认 NAWS”与“完成可用校准”的不同。校准已执行1次并失败,任何新校准须用户额外批准;原唯一 v2 仍未执行,但不能绕过校准门槛。不要请求笼统授权或自行运行该计划。
仅离线材料完成后报告,调度者再向用户提交具体选择。#27/#29/#7 仍开放,不选择 A/B/C,不启动 Codex review、不自行合并。
JavaZeroo-Bot commentedon Nov 9, 2026
#29 B/CD 校准失败:离线定位结论与一次诊断计划(v2 边界修订;未运行)
基线 merge
abc71fe5a3577c5cfb54fe4869506c24fb7288e0(#332 已合并,仅失败归档)。本回复只做静态定位与计划边界修订,未启动原版/GUI/peer/fixture/测试/构建,未重跑校准,未执行 v2。旧失败账本/raw 不变。结论(已有证据 + 静态推断)
错误精确抛出点:
research/ui/resize_state_reference.py:85(BoundPeer._on_naws):require(grid[1] == self.state["frozen_grids"][0][1], "Resize changed row count")。调用链:NAWS 事件 →
_on_naws()追加naws_history/_record()→ 要求本次行数等于首次冻结行数(24)→ 目标60×12行数12 ≠24,抛错。此时frozen_grid仍[80,24]、phase1 从未完成;resize_armed=1但尚未进入_phase_ready(1)的校准成功路径。合同冲突(静态):
resize_bcd_calibration.py的peer_class继承resize_state_reference.BoundPeer,而该基类是只缩宽的固定行数合同;校准计划却明确WINDOWS=(1228×839, 988×509, 988×509, 1228×839)、GRIDS=(80×24, 60×12, 60×12, 80×24),四个 phase 要求行数 24→12→12→24。继承的守卫与校准目标自相矛盾,因此抛出是控制器的测试合同错误,不能据此归因 WindTerm 缺陷或宣称窗口未达 60×12。已有证据:
peer.json的naws_history=[[80,24],[60,12]]证明 NAWS 事件已出现 60×12;frozen_grid仍[80,24]、phase=0、error=Resize changed row count、resize_armed=1、phase0 observation/window rect[160,145,1387,983]成功。phase1 window rect/capacity/DSR 未记录,故 “确认 NAWS”≠“完成可用校准”;无法证明 60×12 窗口未被到达,也无法证明其可用于后续写入。旧 v1 风险(静态、未验证):
resize_bcd_address_reference.py的 peer 若复用同一基类守卫,旧 plan 即便初始 80×24 成功,也可能在后续宽高 resize 同样被该行数守卫拦截;旧失败只到初始几何,未到达该点,不能由现有证据断言。此风险需在新校准计划里以独立合同覆盖,不改旧失败/断言。边界修订 1:phase1/phase2 的事件合同
静态证据:
resize_bcd_calibration.py:WINDOWS[1]==WINDOWS[2]=(988,509)、GRIDS[1]==GRIDS[2]=(60,12)、RESIZE_PHASES=(1,3)。resize_bcd_calibration.js: 只有 phase0/2 ack 后调用requestResize(phase+1),故 resize 动作在 phase1(80×24→60×12)和 phase3(60×12→80×24);phase2 没有 resize 请求。_phase_ready(1)的target==2分支只校验resize_armed is None、frozen_grid==GRIDS[2],追加 frozen_grid/freeze_event_counts 后返回 true,不等待新的 NAWS 边界。因此修订:
988×509、terminal capacity12、frozen_grid [60,12]、phase2 DSR/ack 与稳定观察,而非新的事件。naws_history全事件、naws_size_changes(distinct 尺寸变化)、phase 边界before_event_count/after_event_count、phase2_new_naws_required=false、phase2_observed_naws(如出现同尺寸重复事件,只记为同尺寸观测,不作为新的尺寸 ACK;若出现不同尺寸事件则失败)。边界修订 2:v2 授权措辞纠正
原唯一 v2 正式重试已经获得授权但尚未执行;其前置是完整校准成功及新计划/身份冻结。此次仅需用户额外批准的是已失败校准再运行一次,不是重新批准原 v2,也不取消原有效授权。若发现 v2 自身守卫合同需要修改,应先列出具体差异供审,不默认为可绕过守卫;但不要把“v2 需前置校准”泛化成“v2 必须重复审批”。
拟修改的测试合同/记录字段(未实施)
新增校准专用 peer(不改
resize_state_reference只缩宽合同):80×24 -> 60×12 -> 80×24(phase1、phase3 各产生新的目标 NAWS);phase2 同尺寸 checkpoint 不要求新事件,并拒绝任何未预期尺寸变化。initial_grid、expected_size_change_sequence、observed_naws_events、naws_size_changes、resize_armed、frozen_grid_history、phase_ready_events、phase2_new_naws_required=false。frozen_grid/naws_history/DSR/window rect 的先后断言;失败保留 raw、不重试。一次可审批诊断/校准计划(未授权、未执行)
范围:一次双轴几何校准;不含 B/C/D/CUP 正文,不含 v2。
.attempted只允许一次。WINDOWS=(1228×839, 988×509, 988×509, 1228×839)、GRIDS=(80×24, 60×12, 60×12, 80×24);phase1/3 的期望来自计划常量;phase2 期望只是同尺寸 checkpoint。请用户决定是否批准该一次校准计划及校准专用测试合同修改。#324/#327/IME、个人桌面、旧证据未动;未触发 Codex review、未自行合并。
JavaZeroo commentedon Nov 9, 2026
@JavaZeroo-Bot 离线定位已读。提交用户审批前,请仅修订计划的两处边界,仍禁止运行/构建/校准:
请直接更新原离线计划评论并报告链接,保留原失败账本,给出可审批的最终范围;无其他新增任务。
JavaZeroo commentedon Nov 11, 2026
@JavaZeroo-Bot 用户最新指示:“现在进展如何?有任何阻塞的事项就kimi k3模型接手吧”。这是新的明确执行授权,接续原 ticket 2e7373117ea0e21d783b8ef977a13581,不重复建开发 worker。
模型:现在将当前 BCD/resize 校准阻塞交给一个真正使用
kimi-k3的 DSH 子智能体主导诊断、修复和有界验证。先通过现有模型发现能力确认路由,显式选择 kimi-k3(非 tencent/kimi-k3);回复子智能体 ID、模型和实际启动结果。Flash 父 worker 只负责协调、执行已确定的机械操作与归档,不自行替代 K3 做关键判断。保持 maxWorkers=1,同一时刻至多一个 K3;复用该子智能体续接,不层层派生,不启动 Codex review。本次执行范围:基于 main abc71fe 和 #332 失败证据,读取 #29 (comment) 的已修订计划。先完成校准专用 peer 的修复,保留原只缩宽基类合同;固定 80×24→60×12→60×12→80×24,phase1/3 需要 request/armed 后的新目标 NAWS,phase2 是同尺寸观测而非新 resize。核对窗口、capacity、DSR 与 frozen 状态,独立期望不得来自当前实得反推。
用户本次要求接手阻塞,现按最小必要范围解锁该技术恢复:允许该修复后的额外校准一次(新增额度1,首失败停止);旧失败、plan、attempt、raw 均保留,先登记新尝试及停止条件,不滚动重置预算。严格校验 SSH/专用 VM/guest/WindTerm 身份,专用 VM 显示临时变化须恢复;个人桌面、剪贴板、原工作树均不动。环境不可用时报告具体阻塞,不擅自重启或改变主机设置。
校准成功后,原尚未使用的唯一 v2 正式取证授权仍有效:冻结源/计划/身份和独立 attempt 守卫,再执行一次。若 v2 复用同一错误固定行数守卫,可由 K3 按相同冻结双轴输入修复测试夹具并列出具体差异,保留原字面验收,不修改产品行为或选取未决 A/B/C 方案。失败即停,禁止为得到通过反复换窗/换预期/重跑。只发布脱敏证据,私有 raw 留本地。
出口:K3 实际路由及子会话身份、诊断结论、修复范围、各次执行账本、校准与 v2 分别的实际结果、对应源码/产物哈希、必要验证及当前 head CI/PR;或具体阻塞和解除条件。不要在提交/PR 的否定句中使用英文关闭关键字紧接 issue 编号,#332 已因此误关 #27 并被恢复。所有完整 issue/R2 均按完整合同验收,Bot 不自行合并。
后续优先队列为 #324 多行粘贴 → #327 自动滚动 → #30/#155 IME。用户已授权这些技术阻塞交给 K3,调度者将逐项按现有具体方案补发派单、记录每项一次有界修复后复验;本条只启动 BCD,不同时操作后续任务。原产品行为、架构与验收范围决策不由模型升级自动替代。
research(ui): record the BCD calibration retry action budget
JavaZeroo-Bot commentedon Nov 11, 2026
K3 已接手 BCD 校准修复(本地修复+离线模拟进行中),但取证主机 192.168.3.210 再次不可达。
问题:请确认主机是否已上电/网络恢复?恢复后 K3 继续一次校准,再按原授权执行唯一 v2;未恢复则本地结论照常交付并标记外部阻塞。
research(ui): fix BCD dual-axis calibration fixtures (#333)
JavaZeroo commentedon Nov 11, 2026
@JavaZeroo-Bot 当前 BCD K3 子任务已结束且 DSH running=0/queued=0。#333 已按 head 3ad36e3 的 8 项成功 CI、范围与证据核验合入,main=859e59538fed671070d3833033ac738502f97d95。本次采用保留 Bot 作者与 JavaZeroo 共同作者的 squash,避开原提交否定句中的 GitHub 关闭关键字;#27 远程读回仍开放。这只交付夹具修复,真实校准/v2 均未执行,取证主机不可达阻塞保持;各自未使用执行额度保留。不要因本条重新探测或启动 BCD。
继续用户已授权的 K3 串行队列,明确派发 #324 hosted 多行粘贴恢复,沿用原 ticket;同一时刻只允许一个开发 worker 和一个 K3。优先复用 K3 子会话 5c868476-8a74-4b83-8b4d-d14158e10e1a,显式保持 ai-gateway/kimi-k3;若已释放不可复用,确认旧子会话结束后再启动一个同模型新子会话,并报告实际 ID/模型。Flash 只协调,不代替关键诊断,不触发 Codex review。
真实前置:#29 的 #26、#30 的 #26/#39 已关闭。该任务不依赖原版取证主机,必须利用既有一次性 hosted Windows guard;不碰本机个人剪贴板、个人桌面或原工作区。先读 AGENTS、原 #324 派单与当前 PR 范围、attempt-ledger。PR 当前 head=1975441b44c13cbf7f308329ad7f1ec2e0b946a1,现有10项绿色CI只覆盖旧有限验收,不豁免 hosted 多行失败。保护 qt-paste 及其他工作树全部未提交成果;在专属工作树延续 #324,必要时正常整合最新 main,禁止清理/覆盖旧证据。
故障指纹 pr324-hosted-multiline-confirm-cancel:旧两次实际恢复均未得到 baseline + L1\rL2,最终 notice cancelled。候选证据为 helper 未命中按钮后直接 reject,未记录命中;不能把候选当已证明根因。先由 K3 只读/离线定位 Qt QMessageBox 按钮文字/role/exec 结果、读取成功→确认→transfer 的状态与目标 PID。基于证据修最小夹具/产品路径,保持真实公开 UI 入口和默认产品 CF reader,不允许直接调用业务方法伪造接受。
本次额外恢复额度为1(用户 K3 接手授权),旧 retryCount=2 保留,不重置:准备好修复和预写动作账本后,在一次性 hosted Windows QPA 环境运行一次包含原多行验收的有界复验,首失败停止;首次失败保留日志并报告,不自动再跑诊断或另一CI副本。控制 push/PR 双触发避免同一真实 hosted 失败路径重复执行,必要时使用独立 opt-in 单次工作流并记录唯一 run/job。普通离线测试不替代该验收。
必须实际验证多行取消零字节、真实 Paste/Return 确认 CRLF/LF 归一化为 CR 且恰好发送一次;真实独立 child 只记录合成字节,不执行粘贴文本。保留三个入口、中文/NFD、忙/占用/释放、目标切换/关闭与第二会话隔离、最终字节增量与资源回收。现有本地 fake 成功与 hosted 真实 CF 证据分列;不弱化断言、不删失败场景、不以单行成功替代。
出口:实际 K3 路由与子会话身份,事实/假设分列的根因、修复、旧/新尝试账本、精确源码/构建/产物/独立预期和实得、当前 head CI 与 #324 更新;仍失败则给具体证据及解除条件。#327/IME 留待下一项,不同时运行。原 BCD/A-B-C、bracketed paste/TUI 政策与完整 issue/R2 验收边界保持,Bot 不自行合并。
JavaZeroo-Bot commentedon Nov 11, 2026
#324 hosted Windows 多行粘贴恢复完成(K3 子会话
d540df69-d897-4589-904e-a2be9c492a51,ai-gateway/kimi-k3主导,父 Flash 仅核验/归档)。PR #324:https://github.com/JavaZeroo/termforge/pull/324(head79d37d0,mergeable,10/10 CI success,未合并)。根因(事实):Qt 6.10.3
QMessageBox::exec()返回的是被点击标准按钮值(accept=2/escape=3),不是QDialog::DialogCode;产品用box.exec()==QDialog::Accepted对真实确认恒假,导致多行确认全部走Paste cancelled、不启动 transfer。独立探针键鼠 4 种交互(含QPushButton::click())均复现。修复:改用clickedButton()->buttonRole()==AcceptRole;夹具改按 role 选择并全量日志,删除 auto-confirm 捷径。唯一授权 hosted run 43101420107(job 130793595825,head b2536fe)success/exit0:真实 Ctrl+Shift+V→Cancel role:accepted=0、child 零增量;真实 Paste 菜单→Paste role:accepted=1、
PASTE_TRANSFER total=5(L1\rL2,CRLF→CR 恰好一次);占用/释放与第二会话断言保留;child 只记录合成字节。默认qt-cpp.yml门控保持历史单行范围,未重复真实 hosted 多行路径;最终 head 仅清理 stderr、更新证据与 workflow dispatch-only,CI 10/10,未重跑 hosted。旧 retryCount=2 账本保留;本地 offscreen 14/14。边界:#324/#327/#30/#27 状态未因本切片改变;个人 CF/桌面未触碰;未触发 Codex review、未自动合并;BCD 主机阻塞与未使用额度保留。
JavaZeroo commentedon Nov 11, 2026
@JavaZeroo-Bot #324 已按当前 head 79d37d0 的 10 项成功 CI、原派单范围和证据核验合并;main=0493076f38c9ea391e265b58dbd3c2409ed33ea7,已远程读回。独立读回唯一 hosted 恢复 run43101420107/job130793595825(b2536fefdcc1654835bb70b4385e3930ea91f2b7):三入口、多行取消/确认、真实 CF 默认读取器、占用/释放全部 true,exit0、job active0;后续提交仅移除产品诊断 stderr、关闭 push 自动触发和归档。当前 head CI 与历史 hosted 身份分列;第二会话隔离仍为本地 fake-reader 证据。旧失败和 retryCount2 保留,新增运行已消耗1/1。不得因本条再跑粘贴恢复。
当前 DSH running0/queued0,上一 K3 已交付结束。明确派发下一项 #327 自动滚动技术恢复,沿用现有 ticket,只有一个开发 worker、同一时刻一个 ai-gateway/kimi-k3。优先复用已结束的 d540df69-d897-4589-904e-a2be9c492a51;若不可复用,确认旧会话结束后才新建一个同模型会话,报告实际子会话ID与模型。Flash仅协调,不接管关键诊断;不触发 Codex review、不自行合并。
前置:#29 原生依赖 #26 已关闭;不依赖 BCD 取证主机。基线 main0493076f,PR327当前head ac5dd4f,现已冲突,先保护 autoscroll 及其他工作树的全部未提交成果,正常整合新main并保留 #324/#333 等已合入能力与断言。禁止覆盖旧失败账本、force push、清理用户源仓库。先读 AGENTS、原 #327 合同与以下 v2 提案:#327 (comment) 。旧5次失败/4次重跑事实保持,不以旧内部一致性绿色CI代替独立oracle。
由 K3 主导离线诊断 up-reverse copied source text differs,核对固定字面预期、half-open边界、painted页坐标与默认40ms tick事件顺序;不从actual selection range生成expected。修复须有事实依据,分清夹具/产品原因;保留既定HistoryViewport/ViewMapping/TextSelection和源身份,不新建模型或改变重要行为。
用户已授权本项修复后一次新增有界复验,预算1、执行0。具体仅为现成v2协议的一次完整最小验证:等待180行与结束marker settled;公开Ctrl+Shift+Home和滚动条定位row0 TF_H_100;column8→0非滚动sanity应为固定8B TF_H_100;再次定位后公开鼠标拖到上边缘,默认40ms首个有效QScrollBar::valueChanged里立即Release,随后200ms不得有第二tick;Copy固定18B TF_H_099\r\nTF_H_100,无末尾CRLF。校验字面painted行/高亮与时序,不直接调用内部滚动函数、不调慢timer。首个失败立即停止,保留原始日志、源码/构建/产物/child PID与场景身份、预期/实得,不换oracle、不再诊断性重跑同一路径。把该新路径放在明确opt-in单次入口,防止CTest/push/PR双跑消耗多次额度;普通离线回归单列。
一次v2成功也仅闭合该恢复步骤,不自动宣布 #327 全原合同通过;软硬行、宽字/结合标、缩窄恢复、追加/淘汰/ED3/RIS、Find/滚动条交叉、正确child输入等剩余验收逐项列出已有证据或缺口,不凭空豁免或追加同故障运行。本任务保持本机offscreen/注入writer,个人CF与桌面不动。
出口:实际K3身份、根因事实/假设、最小修复、旧新尝试账本及预算、唯一v2实测结果、准确PR范围/待验收项和新head CI。失败则给具体阻塞和解除条件。#30/#155 IME继续排队,BCD主机阻塞及未使用校准/v2额度保留,不并发重探/启动。#27/#29/#30/#35/#7完整验收仍未完成,不进入R3。
JavaZeroo-Bot commentedon Nov 12, 2026
#327 的 K3 复验额度已消耗:唯一一次新增 v2 执行在夹具活性门(
history_lines>=160不可达)死锁,协议路径 0 步执行,未产生行为结论。请求:把活性门改为
>=100(与提交版同款,其余不动)后执行一次修正运行。是否批准这一次额外执行?未批准前不会重跑。