Skip to content

fix: 影子到期误摘 PHASER 修复(工程改进首项)——一行判例+全值矩阵绊线 - #17

Merged
LamSpace merged 1 commit into
masterfrom
fix/shadow-sweep-phaser
Oct 7, 2026
Merged

LamSpace merged 1 commit into
masterfrom
fix/shadow-sweep-phaser

Conversation

@LamSpace

@LamSpace LamSpace commented Oct 7, 2026

Copy link
Copy Markdown
Owner

缺陷(v11 落地审查发现,ROADMAP 工程改进首项)

ShadowTable.expireUpTo(LEASE_EXPIRE_ENTRY 应用点影子清扫)的无租约家族跳过清单含 LATCH/BARRIER/QUEUE/ATOMIC/TIMER 而独缺 PHASER。phaser 镜像条目到期字段恒 0,被任一租约到期误摘,危害两面:

  1. 管理面静置 phaser 键无限期失踪——自愈依赖该键后续镜像事件,静置键(到场完毕无人再动)永无后续;违反 admin-observability 既有承诺(phaser 键详情照常命中、MUST NOT 未命中壳)。
  2. lease.expired.total 累计虚增——幻影键随 freed_keys 计入到期释放计数线,"实际释放计数"条款被违;累计值无自愈。

引擎账簿无恙:镜像投影实现缺陷,非契约变更。

修复

  • expireUpTo 内联跳过条件提取为静态单一判定点 isLeaselessFamilyType(判据来源注 Javadoc:获取路径入租约到期堆者即租约形态 0–5),清单补 PHASER 分支。
  • 方法级 Javadoc 与家族枚举括注同步补全(含 TIMER 落地时的历史欠账)。
  • SEMAPHORE 不入清单的不变式论证(release() 持有归零即摘除)维持原样入档设计。

测试(红先)

  • StateMachinePhaserTest.expireSweepLeavesPhaserMirrorUntouched:phaser 建账静置 + 短租约锁 + 到期条目混合序列。修复前实测红:Expecting ["p","mk"] to contain exactly ["mk"];断言镜像三计数逐项保真 / freed_keys 恰等真实到期键 / 双份回放 digest 一致。
  • ShadowTableLeaselessFamilyMatrixTest:LockType 全值矩阵绊线(0–5 不得入跳过集、其余必入)——v12+ 新形态不判类即红,终结"每家族补一行"的判例式复发面。红性实证:临时摘除 PHASER 分支精确红于 LOCK_TYPE_PHASER(14),已还原零残留。

规格与文档

  • core-lock-engine MODIFIED"PHASER 条目生命周期与会话清理":补"不被租约到期清扫回收"影子半句 + 场景"到期清扫与租约机制对 phaser 零触碰"(措辞逐字对齐队列判例,既有四场景逐字保留);主规格已 sync。
  • ROADMAP 工程改进首项 → 已落地;change 归档至 openspec/changes/archive/2026-10-07-fix-shadow-sweep-phaser/。
  • wire/协议/SDK/双语指南/WATCHLIST 零触碰(非对外 API 面)。

验证

  • mvn -s settings.xml clean verify:8/8 模块 BUILD SUCCESS(0 失败 0 错误;唯一跳过 ClientChaosIT 为既有环境门槛,与本项无关)。
  • check-source-citations.sh 零命中;check-links.sh 零死链;openspec validate --strict 与 --specs(17/17)通过;delta 段头零残留双查。
  • -Pdrill 不需要:纯镜像投影修复,无进程/时序面变化(判例同原子家族误扫修复)。

Non-goals

不追溯修正历史 lease.expired.total 值(重启归零);不为幻影键唤醒遍历加网关侧防御(freed_keys 收敛后自然空转)。

…adowTable.expireUpTo(LEASE_EXPIRE_ENTRY 应用点影子清扫)无租约家族跳过清单含 LATCH/BARRIER/QUEUE/ATOMIC/TIMER 而独缺 PHASER,phaser 镜像条目到期字段恒 0 被任一租约到期误摘;危害双面——管理面静置 phaser 键无限期失踪(自愈依赖该键后续镜像事件,静置键永无后续)与 lease.expired.total 累计虚增(幻影键入 freed_keys,"实际释放计数"条款被违、累计值无自愈);引擎账簿无恙,属实现违反 admin-observability/metrics-observability 既有承诺,非契约变更 - 修复:expireUpTo 内联跳过条件提取为静态单一判定点 isLeaselessFamilyType(判据来源注 Javadoc:获取路径入租约到期堆者即租约形态 0–5),清单补 PHASER 分支;方法级 Javadoc 与家族枚举括注同步补全(含 TIMER 落地时欠账);SEMAPHORE 不入清单经 release 持有归零即摘除不变式论证维持 - 测试:红先钉住 StateMachinePhaserTest.expireSweepLeavesPhaserMirrorUntouched(phaser 建账静置+短租约锁+到期条目混合序列,修复前实测红于 freed_keys=["p","mk"];断言镜像三计数逐项保真、freed_keys 恰等真实到期键、双份回放 digest 一致);新增 ShadowTableLeaselessFamilyMatrixTest LockType 全值矩阵绊线(0–5 不得入跳过集、其余必入,v12+ 新形态不判类即红;红性实证=临时摘除 PHASER 分支精确红于 LOCK_TYPE_PHASER(14) 后还原零残留) - 规格:core-lock-engine MODIFIED"PHASER 条目生命周期与会话清理"补"不被租约到期清扫回收"影子半句与场景"到期清扫与租约机制对 phaser 零触碰"(措辞逐字对齐队列判例,既有四场景逐字保留),主规格已 sync 并双查(validate --specs 17/17、delta 段头零残留) - 文档:ROADMAP 工程改进首项 未启动→已落地挂归档 change 链接;wire/协议/SDK/双语指南/WATCHLIST 零触碰(非对外 API 面) - 验证:mvn -s settings.xml clean verify 8/8 模块 BUILD SUCCESS(0 失败 0 错误;唯一跳过 ClientChaosIT 既有环境门槛与本项无关);check-source-citations 零命中、check-links 零死链;openspec validate --strict 通过;-Pdrill 不需要(纯镜像投影修复无进程/时序面变化,判例同原子家族误扫修复);change 归档至 openspec/changes/archive/2026-10-07-fix-shadow-sweep-phaser/
@LamSpace
LamSpace merged commit 080c237 into master Oct 7, 2026
2 checks passed
@LamSpace
LamSpace deleted the fix/shadow-sweep-phaser branch October 7, 2026 12:00
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