From f999b3ead095a1b6287a66d3da0eaa6e13069482 Mon Sep 17 00:00:00 2001 From: DKChan <524912269@qq.com> Date: Fri, 9 Oct 2026 03:59:40 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B8=85=E7=90=86:=20=E6=91=98=E9=99=A4?= =?UTF-8?q?=E8=AF=AF=E5=85=A5=E5=BA=93=E7=9A=84=E4=B8=A4=E4=B8=AA=E6=89=B9?= =?UTF-8?q?=E5=A4=84=E7=90=86=E4=B8=B4=E6=97=B6=E8=84=9A=E6=9C=AC=EF=BC=88?= =?UTF-8?q?cleanup=5Fbatch.py/fix=5Frefs2.py=E2=80=94=E2=80=94=E5=BA=94?= =?UTF-8?q?=E5=9C=A8=20.zcode/tmp=20=E4=B8=8D=E5=85=A5=20git=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cleanup_batch.py | 142 ----------------------------------------------- fix_refs2.py | 15 ----- 2 files changed, 157 deletions(-) delete mode 100644 cleanup_batch.py delete mode 100644 fix_refs2.py diff --git a/cleanup_batch.py b/cleanup_batch.py deleted file mode 100644 index 76dbdfcf..00000000 --- a/cleanup_batch.py +++ /dev/null @@ -1,142 +0,0 @@ -# -*- coding: utf-8 -*- -# design/ 存量清理批:worktree 内执行(删件+引用改写+§11新规+台账413) -import pathlib, re, subprocess, sys - -ROOT = pathlib.Path('.') # worktree 根 - -# ---------- 1) 删除清单 ---------- -DEV = [ - 'design/dev/architecture/gdd-concept-map.html', - 'design/dev/architecture/gdd-concept-map.architecture.json','design/dev/architecture/gdd-concept-map.visual-check.html', - 'design/dev/architecture/gdd-concept-map.visual-check.json','design/dev/architecture/gdd-concept-map.visual-check.1440x900.dark.png', - 'design/dev/architecture/gdd-concept-map.visual-check.1440x900.light.png','design/dev/architecture/gdd-concept-map.visual-check.2048x1320.dark.png', - 'design/dev/architecture/gdd-concept-map.visual-check.2048x1320.light.png', - 'design/dev/architecture/board-node2d-migration-plan.md','design/dev/architecture/code-architecture-review-2026-09-13.md', - 'design/dev/architecture/requirements-traceability.md', -] -QA = ['design/qa/'+n for n in [ - 'iter15-2-curio-exit-report-2026-10-05.md','iter15-3-mibao-exit-report-2026-10-05.md','iter16-ui-exit-report-2026-10-06.md', - 'iter16-ui-human-gate-checklist-2026-10-06.md','iter17-career-exit-report-2026-10-06.md','iter17-datadrive-exit-report-2026-10-06.md', - 'iter17-enemy-L3-改前锚丢失-2026-10-07.md','iter17-enemy-exit-report-2026-10-07.md','iter17-enemy-人闸材料-2026-10-07.md', - 'iter17-pause-exit-report-2026-10-06.md','iter17-pause-human-gate-checklist-2026-10-06.md','iter18-career-exit-report-2026-10-07.md', - 'iter18-forge-exit-report-2026-10-07.md','iter18-mixenc-exit-report-2026-10-07.md','iter18-seed-exit-report-2026-10-07.md', - 'iter18-treefix-exit-report-2026-10-07.md','m1-exit-gate-checklist-2026-09-28.md','m2-exit-gate-checklist-2026-09-28.md', - 'm3-iter10-clear-rate-readings-2026-10-01.md','m3-iter5-lever-scan-2026-09-28.md','m3-iter5-rework-readings-2026-09-29.md', - 'm3-iter9-9a-checklist-2026-09-30.md','m3-iter9-exit-checklist-2026-10-03.md','m3-iter9-t17-fullflow-checklist-2026-10-01.md', - 'm3-iter9-t18-07-audit-2026-09-30.md','m3-iter9-t8-rulings-2026-09-30.md','m4-iter11-exit-package-2026-10-03.md', - 'm4iter12-t10-batch2-exit-2026-10-04.md','m4iter12-t7-batch1-readings-2026-10-04.md','m4iter14-gvar-exit-report-2026-10-04.md', - 'm4iter14-gvar-t7b-readings-2026-10-05.md','m4iter14-mineq-exit-report-2026-10-05.md','m4iter14-skillpool-exit-report-2026-10-05.md', - 'numfix-newruler-readings-2026-10-01.md','t17-defer-probe-evidence-20261002.md','t19-real-playtest-readings-2026-10-02.md', - 'test-perf-report-2026-10-02.md','ui-struct-probe-exit-report-2026-10-05.md','中间产物死亡清单-2026-10-02.md', -]] -RES = ['design/research/'+n for n in [ - 'MC成本调研与规制方案-2026-10-03.md','UI重设计原型v2落码-差异对照与改动计划-2026-10-04.md','alpha-acceptance-battle-screen.md', - 'board-tile-vocab-plan-a-2026-09-26.md','game-architecture-2026-10-05.html','game-architecture-2026-10-05.json', - 'prototype-report-minesweeper-battle-concept.md','roguelike-difficulty-benchmark-2026-10-01.md', - '任务书-CI预接线批-2026-10-07.md','任务书-UI设计对齐批-2026-10-05.md','任务书-内容数据驱动扩展批-2026-10-06.md', - '任务书-初始展开收窄批-2026-10-04.md','任务书-奇物词族对齐与渠道分离批-2026-10-05.md','任务书-提灯载体道具批-2026-10-07.md', - '任务书-敌人表行集多行批-2026-10-05.md','任务书-旧界面呈现断言回补批-2026-10-07.md','任务书-暂停层只读入口批-2026-10-05.md', - '任务书-武器锻造系统设计提案批-2026-10-07.md','任务书-混编遭遇首批投放批-2026-10-07.md','任务书-生涯界面实装批-2026-10-07.md', - '任务书-生涯界面设计立项-2026-10-05.md','任务书-种子随机化与调试浮窗升级批-2026-10-07.md','任务书-秘宝代码词族对齐批-2026-10-05.md', - '任务书-自动化验收补齐批-2026-10-07.md','双层BD体系-整合定稿-2026-10-03.md', - '审查-地图战斗资源-2026-10-06.md','审查-奇物-2026-10-06.md','审查-总览-2026-10-06.md','审查-秘宝-2026-10-06.md', - '调研-roguelike道具玩法变异-2026-10-07.md','调研-全局作用域变异设计空间-2026-10-04.md','调研-扫雷类游戏玩法变异-2026-10-07.md', - '综合-道具变异可选项菜单-2026-10-07.md','研究-内容数据驱动扩展架构-2026-10-06.md', -]] -ALL = DEV + QA + RES -for f in ALL: - if (ROOT/f).exists(): - subprocess.run(['git', 'rm', '-q', f], check=True) -print('git rm ok:', len(ALL)) - -# ---------- 2) 引用改写(basename 级替换,行内零行数变化) ---------- -REWRITES = [ - ('iter16-ui-exit-report-2026-10-06.md', '迭代16出口报告(已退役,git 历史可查)'), - ('iter17-pause-human-gate-checklist-2026-10-06.md', '迭代17暂停层人闸清单(已退役,git 历史可查)'), - ('m3-iter5-lever-scan-2026-09-28.md', '迭代5杠杆扫描报告(已退役,git 历史可查)'), - ('UI重设计原型v2落码-差异对照与改动计划-2026-10-04.md', 'UI落码差异对照(已退役,git 历史可查)'), - ('任务书-UI设计对齐批-2026-10-05.md', 'UI对齐批任务书(已退役,git 历史可查)'), - ('m3-iter10-clear-rate-readings-2026-10-01.md', '迭代10通关率读数(已退役,git 历史可查)'), - ('t19-real-playtest-readings-2026-10-02.md', 'T19真人试玩读数(已退役,git 历史可查)'), - ('任务书-自动化验收补齐批-2026-10-07.md', '自动化验收补齐批任务书(已退役,git 历史可查)'), - ('roguelike-difficulty-benchmark-2026-10-01.md', '难度外部基准调研(已退役,git 历史可查)'), - ('调研-全局作用域变异设计空间-2026-10-04.md', '全局作用域设计空间调研(已退役,git 历史可查)'), - ('任务书-提灯载体道具批-2026-10-07.md', '提灯载体批任务书(已退役,git 历史可查)'), - ('board-tile-vocab-plan-a-2026-09-26.md', '高墙瓦片词表(已落码 board_world.gd 查表,文件已退役)'), - ('test-perf-report-2026-10-02.md', '性能实测报告(已退役,git 历史可查)'), - ('code-architecture-review-2026-09-13.md', '代码架构评审(已退役,git 历史可查)'), - ('requirements-traceability.md', '需求追溯矩阵(已退役,git 历史可查)'), - ('board-node2d-migration-plan.md', 'Node2D 迁移计划(已执行完毕,文件已退役)'), -] -TARGETS = [ - 'design/gdd/06-待办清单.md','design/gdd/07-体验验证清单.md', - 'design/gdd/systems/冒险循环/难度曲线与Boss.md','design/gdd/systems/排雷循环/地形变异.md', - 'design/gdd/systems/表现与支撑/HUD框架.md','design/gdd/systems/冒险循环/关卡节点地图.md','design/gdd/ux/battle.md', - 'design/registry/entities.yaml','design/art/art-bible.md','design/art/remote-gen-prompts.md', - 'design/dev/architecture/adr-0005-save-contract-and-schema-versioning.md', - 'design/dev/architecture/adr-0006-board-node2d-rendering.md','game/README.md', -] -total = 0 -for tf in TARGETS: - p = ROOT/tf; d = p.read_bytes(); orig = d; n = 0 - for basename, repl in REWRITES: - pat = re.compile(rb'[\w./\-\\]*' + re.escape(basename.encode())) - hits = pat.findall(d) - if hits: - d = pat.sub(repl.encode(), d); n += len(hits) - if d != orig: - p.write_bytes(d); total += n - print('rewrote %d ref(s) in %s' % (n, tf)) -print('ref rewrite total:', total) - -# ---------- 3) doc-conventions §11 新规 + v13 ---------- -p = ROOT/'design/dev/doc-conventions.md'; d = p.read_bytes() -if b'| v13 |' not in d: - anchor = '| 暂存地非档案库 | `design/research/` 与 `design/qa/` 是中间文档的暂存地,不是永久档案库;入此两处的文件默认按本节规则到期即死 |'.encode() - assert d.count(anchor) == 1 - i = d.find(anchor); j = d.find(b'\n', i) - nl = b'\r\n' if d[j-1:j] == b'\r' else b'\n' - row = ('| 证据只留最新(2026-10-09 用户立规) | 测试证据(出口报告/读数/截图/对比图)只保留最新一次迭代或最新一轮同类审计的版本——旧证据无参考作用,测试按状态不按历史;新证据落位后同批删除上一份;等人工检查的清单不受此限,过人闸后按本行退役 |').encode() + nl - d = d[:j+1] + row + d[j+1:] - anchor2 = '| v12 | 2026-10-09'.encode() - i2 = d.find(anchor2); assert i2 != -1 - j2 = d.find(b'\n', i2) - nl2 = b'\r\n' if d[j2-1:j2] == b'\r' else b'\n' - j2 += 1 - row2 = ('| v13 | 2026-10-09 | §11 新增「证据只留最新」行(2026-10-09 用户立规——qa 存量清理批随批落文):测试证据只保留最新迭代/最新一轮审计版本,新证据落位即删上一份;待人清单过闸后同规退役 |').encode() + nl2 - d = d[:j2] + row2 + d[j2:] - p.write_bytes(d) -print('doc-conventions ok') - -# ---------- 4) active.md:快照顶部更新行 + 台账 413 ---------- -p = ROOT/'active.md'; d = p.read_bytes() -if b'\n413. ' not in d and not d.startswith(b'413. '): - anchor = '## 当前状态快照(收口批先更新本节,再追加台账;≤10 行)'.encode() - assert d.count(anchor) == 1 - ai = d.find(anchor); aj = d.find(b'\n', ai) + 1 - top = ('- **更新于**:2026-10-09(**design/ 存量超期清理批落籍 master**,用户逐类判决——QA 新立规「证据只留最新」,工作日志 413):' - '删 86 件=dev 四组 11(concept-map 全家/迁移计划/评审/追溯矩阵,随批清 7 文件指路句)+qa 39(证据只留最新规首跑:保留 iter19 七件+迭代18目检总清单〔待人〕+ui-audit 树与报告=最新证据)+research 33 轨迹+3 未跟踪' - '(任务书 17/审查四/奇物调研四〔用户点名核验:18 件框架已落 GDD v3.0〕/研究三/双层BD/MC成本/基准/UI对照/第三套架构图/旧杂件);引用改写 13 文件;' - 'doc-conventions §11 新增证据只留最新行(v13);**美术审计报告留置未删**(P0① art-bible 仍引用已丢失冻结样张+P0② 主角重产未登记——严重事项呈用户,待裁后处置)。\n').encode() - d = d[:aj] + top + d[aj:] - lines = d.split(b'\n') - L413 = ('413. **design/ 存量超期清理批(2026-10-09,用户逐类判决;QA 证据新立规=「证据类只保留最新迭代/最新一轮审计版本,新证据落位后删上一份,等人工检查的清单不受限」已落 doc-conventions §11 v13)**:' - '①dev/architecture 四组 11 件删——gdd-concept-map 全家 8(2026-09 旧架构快照零引用,新架构图用户示另行生成)/board-node2d-migration-plan(迁移完成)/code-architecture-review/requirements-traceability(挂起标记过期:待的 ADR-0006/0007 均已落地);' - '随批清 7 文件指路句(关卡节点地图/HUD框架/battle 版本行+adr-0005 两处+adr-0006+game README)。' - '②qa 39 件删(新规首跑)——迭代 11-18 全部出口报告/读数/检查单+m1/m2 出口单+numfix/t17/t19/test-perf/ui-struct-probe+中间产物死亡清单本体(本批即其终局);' - '保留=iter19 七件(最新迭代证据)/迭代18-实机目检总清单(待人)/ui-audit-2026-10-06 树 40 张+ui-audit-vs-demo 报告(最新 UI 审计证据)。' - '③research 33 轨迹+3 未跟踪删——已落籍批任务书 17(含技能池批)/道具三层审查四件(三层重设计收口)/奇物调研底稿四件(**用户点名核验通过**:18 件专长框架已落 GDD 奇物.md v3.0 正主,全局作用域调研未决项由迭代14③落地批+06 登记承接)/研究三件/双层BD整合定稿(迭代12 落码)/MC成本调研(sim-data 规制落地)/roguelike-difficulty-benchmark(带值四带已裁)/UI落码对照(落码批收官)/game-architecture html+json(第三套架构图)/alpha-acceptance+prototype-report(M3 前旧件);' - '保留=M4数值批任务书+A4 两件(冻结)+提案-武器锻造(17 裁点未闭)+UI预览demo三路对照(阶段1待办)+自造短语全量清单(待裁)+playnote(用户手迹)。' - '④引用改写 13 文件(06 五处/07 三处/难度曲线两处/地形变异/HUD框架两处/关卡节点地图/battle/entities.yaml/art-bible/remote-gen-prompts/adr-0005/adr-0006/README——路径指涉统一改「(已退役,git 历史可查)」行内注记,零行数变化)。' - '**A1 美术资产链路审计报告留置未删(用户严重事项条款)**:核验结论=§07 数值单点已吸收(art-bible v3.11)/描边已吸收(character-design §5.1 v1.9+06 复核钩子),' - '但 **P0① 未吸收**——art-bible:68/:527+art-status-checklist:13 至今仍引用已丢失冻结样张 artwork/mockups/sample-batch-v3-final-2026-09-30.png(磁盘实测零命中,圣经冻结基准死指涉),' - '**P0② 未登记**——主角棋盘小人未走像素管线(插值糊图)重产事项无 06 条目;待用户裁决(登记 06 处置或重产后再删报告)。' - '**验证**=doc_link/doc_term/gdd_lint 对基线零新增+熵增闸 PASS;untracked 三件(技能池任务书/研究×2)主区磁盘删不入 git。').encode() - for i, ln in enumerate(lines): - if ln.startswith(b'412. '): - lines.insert(i+1, L413); break - else: - sys.exit('ledger 412 not found') - pathlib.Path('active.md').write_bytes(b'\n'.join(lines)) -print('active.md ok') -print('ALL DONE') diff --git a/fix_refs2.py b/fix_refs2.py deleted file mode 100644 index 43e39840..00000000 --- a/fix_refs2.py +++ /dev/null @@ -1,15 +0,0 @@ -# -*- coding: utf-8 -*- -import pathlib, re -for tf, pairs in [ - ('design/gdd/systems/冒险循环/难度曲线与Boss.md', [('numfix-newruler-readings-2026-10-01.md', '数值修复批读数(已退役,git 历史可查)')]), - ('design/gdd/07-体验验证清单.md', [('numfix-newruler-readings-2026-10-01.md', '数值修复批读数(已退役,git 历史可查)')]), - ('design/gdd/ux/level-map.md', [('m2-exit-gate-checklist-2026-09-28.md', 'M2 出口检查单(已退役,git 历史可查)')]), -]: - p = pathlib.Path(tf); d = p.read_bytes(); n = 0 - for b, repl in pairs: - pat = re.compile(rb'[\w./\-\\]*' + re.escape(b.encode())) - hits = pat.findall(d) - assert hits, (tf, b) - d = pat.sub(repl.encode(), d); n += len(hits) - p.write_bytes(d); print('fixed', tf, n) -print('OK')