From 594a762fe0d75840a2cd09c6c9b9898de63b9a80 Mon Sep 17 00:00:00 2001 From: JavaZeroo <71128095+JavaZeroo@users.noreply.github.com> Date: Thu, 29 Oct 2026 21:34:51 +0800 Subject: [PATCH] research(ui): confirm the 1049 attribute save/restore model refs #123 #126 Three crossed cases: entry default plus alternate change exits default, entry 31;44 exits 31;44, and entry 32;45 with an alternate-side reset exits 32;45. Alternate-screen changes never leak back. --- .../2026-10-29-session-1049-palette/README.md | 17 +++++++++++++++ .../validation.json | 21 +++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/research/ui/results/2026-10-29-session-1049-palette/README.md b/research/ui/results/2026-10-29-session-1049-palette/README.md index ff378539..03bc86b8 100644 --- a/research/ui/results/2026-10-29-session-1049-palette/README.md +++ b/research/ui/results/2026-10-29-session-1049-palette/README.md @@ -72,6 +72,23 @@ **归因边界**:仍是 conhost + ConPTY + WindTerm 整条管线的可观察渲染,无法判定哪一层执行保存/恢复;与 #126 要求的应用内采集不同。 + +## 附加观察三:三组交叉验证"进入保存 / 退出恢复" + +把两组观察再补一组反向用例,形成三组交叉验证: + +| 组 | 进入时的属性 | 备用屏内的动作 | 退出后(不重设)的当前属性 | 结论 | +|---|---|---|---|---| +| 1 | 默认(脚本先 reset) | 设为 `32;45` | 默认 `#1C1C1C/#E3E3DD` | 备用屏改动**不泄漏**,恢复进入值 | +| 2 | `31;44`(进入前设置) | 不变 | `#3465A4/#C4265E`(=31;44) | 恢复进入值 | +| 3 | `32;45`(进入前设置) | reset 成默认 | `#8C6BC8/#86B42B`(=32;45) | 恢复进入值,备用屏的 reset 不带走主屏样式 | + +第 3 组的三阶段像素:进入前 `#8C6BC8/#86B42B` → 备用屏内 reset 后 `#1C1C1C/#E3E3DD` → 退出后回到 `#8C6BC8/#86B42B`。 + +三组一致支持同一模型:**`1049h` 保存进入时刻的属性,`1049l` 恢复它**;备用屏内的任何 SGR 变更(设置或 reset)都不会影响主屏退出后的样式。 + +**归因边界**:conhost + ConPTY + WindTerm 整条管线的可观察渲染;不判定哪一层执行保存/恢复,也不等同于 #126 要求的应用内采集。 + ## 解释与边界 - 在这套固定配置里,`1049` 的进入/重复进入/退出**不改变**默认前景/背景,也不改变所测的三个调色板颜色;备用屏重进渲染与首次进入一致。 diff --git a/research/ui/results/2026-10-29-session-1049-palette/validation.json b/research/ui/results/2026-10-29-session-1049-palette/validation.json index b67981cf..4370fe16 100644 --- a/research/ui/results/2026-10-29-session-1049-palette/validation.json +++ b/research/ui/results/2026-10-29-session-1049-palette/validation.json @@ -96,5 +96,26 @@ }, "interpretation": "1049h saves the attribute state at entry, alternate-screen changes do not leak back, and 1049l restores the entry-time attributes.", "attribution_limit": "pipeline-level observation; layer attribution unknown" + }, + "attribute_save_restore": { + "model": "1049h saves the attribute state at entry; 1049l restores it; alternate-screen changes never leak to the main screen", + "cases": [ + { + "entry": "default (reset by script)", + "alternate": "set 32;45", + "exit": "default 1C1C1C/E3E3DD" + }, + { + "entry": "31;44", + "alternate": "unchanged", + "exit": "31;44 (#3465A4/#C4265E)" + }, + { + "entry": "32;45", + "alternate": "reset to default", + "exit": "32;45 (#8C6BC8/#86B42B)" + } + ], + "attribution_limit": "pipeline-level observation; layer attribution unknown" } }