Skip to content

fix: round-4 batch-1 — rollback failure branches (F2/F3/F4) + ReDoS-safe regexes (F1) - #6

Merged
wangrh0909 merged 1 commit into
masterfrom
fix/round4-batch1-f1-f4
Sep 27, 2026
Merged

wangrh0909 merged 1 commit into
masterfrom
fix/round4-batch1-f1-f4

Conversation

@voidvec

@voidvec voidvec commented Sep 27, 2026

Copy link
Copy Markdown
Owner

Summary

第四轮整改批次①(报告 docs/ROUND4-INCREMENTAL-CORRECTNESS-REVIEW.md F1–F4,四条均为批次④新代码自身引入,全部先见 RED 再修):

  • F1 ReDoS:CPP.007/CSP.001 内容类放行同类括号 → 病态输入 O(n²)(报告实测 42.1s / 61.5s)。内容类排除 (/{,锚点回溯被截为 O(锚距);新增 1s 预算计时守卫(修复前该守卫 113.7s 红,修复后全套 12.2s 绿);L6 正负例零回归。
  • F2:bundle_touched 置位先于改名备份,rename 失败(Windows 目录占用常态)时回滚把没动过的在用 bundle 删了。改为"改名成功才记账",失败路径 root 原封不动。
  • F3:回滚收尾的备份清理恰好只在恢复失败时到达——销毁最后一份旧 bundle。改为恢复失败保留备份 + 打印路径告警;bundle 与技能目录统一进 renames 还原清单,整体成功才删备份。
  • F4:技能同名目录先 rmtree 无备份 + copytree 半成品不在回滚清单。改为 dest 先记账再落盘、旧目录改名备份(失败还原/成功才删);换页失败用户内容原样幸存。
  • 实现注记:bundle 根只进失败期清理清单,不入安装戳 files(账本语义不变,测试锁定)。

Test plan

  • 3 条新 RED 测试先失败复现原缺陷(rename 毁在用 bundle / 备份被销毁 / 用户 MY_OWN.txt 丢失+孤儿)→ 修复后全绿
  • pytest tests/ -q — 190 passed / 2 skipped(原 185 + ReDoS×2 + F2/F3 + F4;全套从 113s 病态红转为 12s 绿)
  • check-consistency.py 14 项、sync-assets 双侧 --check、gen-host-artifacts --check 全绿
  • CI 三 OS 矩阵(含 ubuntu 符号链接 E2E)

Depends on nothing(基于 master);与报告 PR #5 仅 CHANGELOG [Unreleased] 文案交叠,后合并者 trivial 解一次。

…xes ReDoS-safe

第四轮批次①(F1-F4,全部先见 RED):
- F1 CPP.007/CSP.001 内容类排除 `(`/`{`,病态输入 42.1s/61.5s → 亚秒;
  新增 1s 预算计时守卫,L6 正负例零回归
- F2 bundle 改名备份失败(Windows 占用 WinError 32)不再触发"回滚删在用 bundle"
  ——touch 语义改为"改名成功才记账"
- F3 回滚恢复失败时保留唯一备份并打印路径;bundle+技能统一 renames 还原清单,
  整体成功才销毁备份
- F4 技能 dest 先记账再 copytree(半成品可回滚清理),同名旧目录改名备份,
  换页失败用户内容原样还原
- bundle 根仅入失败期清理清单,不进安装戳 files(账本语义不变)
@voidvec
voidvec force-pushed the fix/round4-batch1-f1-f4 branch from 03a737b to c4e7997 Compare September 27, 2026 06:19
@wangrh0909
wangrh0909 merged commit 3421923 into master Sep 27, 2026
9 checks passed
@wangrh0909
wangrh0909 deleted the fix/round4-batch1-f1-f4 branch September 27, 2026 06:22
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.

2 participants