Skip to content

Commit 0373bf7

Browse files
docs(design): X2/X3 as implemented
Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
1 parent 6434a60 commit 0373bf7

1 file changed

Lines changed: 9 additions & 7 deletions

File tree

‎.agents/docs/2026-10-17-upgrade-continuity-design.md‎

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ status: active
55

66
# 升级的连续性:打包修订不在使用路径上替换载荷、替换失败不拆掉可用状态、home 中的悬空记录自愈、真实的升级 lane
77

8-
- 日期:2026-10-17。状态:修订 2,O1、O2 按推荐项确定,实施中(§11)。
8+
- 日期:2026-10-17。状态:修订 3,已实施(libxpkg #50、xlings #678 与 2026.10.17.1、xim-pkgindex #993、mcpp #815)。
99
- 起因:用户报告。`xlings self update && xlings update mcpp -y` 之后,`mcpp new hhss && mcpp run` 每次失败:
1010
`toolchain 'llvm@23.1.3': install of 'xim:llvm@23.1.3' failed … sysroot update refused before metadata changed:
1111
c++@16.1.0: installed asset registration missing`;`mcpp self doctor` 不报错。
@@ -189,12 +189,14 @@ xlings(一次发布,mcpp 的 PR 把内置 xlings 钉到它):
189189
它的依赖必须同为当前修订(llvm revision 1 的 cfg 指向 glibc revision 4 的 `lib64`,配上 revision 3 的 glibc
190190
就不自洽)。使用路径不受影响:按 P1,使用意图对一个 usable 的载荷根本不发起安装。(修订 1 曾写「依赖按
191191
usable 判断」,实施前的审读发现上述不自洽,改为此条。)
192-
- **X2** 元数据事务(`process_xvm_operations_`、`publish_removal_state_`)在计算投影之前,以 doctor 的同一个函数
193-
规范化候选工作区:引用不存在注册的 `installed[]` 条目删除,悬空 active 按 O1 处理;规范化随事务提交,并以
194-
事件报告(mcpp 原样显示)。投影预检只对本事务注册与移除的成员严格。
195-
- **X3** doctor:悬空记录的检测与 X2 的规范化是同一个函数;remedy 文本不再把 target 当包名(`xlings install c++`),
196-
拥有者可知时给出 `xlings install <namespace>:<package>@<version>`,否则给出 `xlings use`;以 `interface` 提供
197-
一致性摘要,供 mcpp doctor 读取。
192+
- **X2** 元数据事务(`process_xvm_operations_`、`publish_removal_state_`)在本包的注册读取作用域之前,以 doctor 的同一个
193+
函数(`xvm::plan_scope_reference_repair`)规范化候选工作区:引用不存在注册的 `installed[]` 条目删除,悬空 active 按 O1
194+
解除;本包自己的注册恢复了的记录不算修复。规范化随事务提交,提交后以 `scope_repaired` 事件报告(mcpp 原样显示);
195+
其他 subos 的投影用规范化后的副本计算,不写回。投影预检本身不变:规范化之后,悬空记录不再进入预检。
196+
- **X3** doctor:当前 subos 的 `--fix` 调用 X2 的同一个函数(含 `installed[]`);`xvm-active-version-missing` 与
197+
`xvm-subos-active-missing` 的 remedy 不再把 target 当包名,改为 `xlings self doctor --fix` 或 `xlings use <target>
198+
<version>`(注册已缺失,拥有者无从得知);`system_status` 输出 `binding_state` 摘要(特性 `binding_state`),供 mcpp
199+
doctor 读取。
198200
- **X4** 测试:两个包注册同一 target、删除一方的注册后,另一方的安装与替换成功并报告规范化;`payload_status`
199201
的六个字段与 `floor` 的组合;依赖中的旧修订不被替换。新测试在 2026.10.16.2 上必须失败。
200202

0 commit comments

Comments
 (0)