From 66972142c5fe60a6d342564364bfd06adaa82958 Mon Sep 17 00:00:00 2001 From: unanmed <1319491857@qq.com> Date: Thu, 17 Sep 2026 18:03:39 +0800 Subject: [PATCH] docs(07-14): complete legacy hero proxy plan as user-adjudicated wontfix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Scope: #06-17-7 / 07-LOADSTATE-AUDIT.md item C, plan 07-14 - Verdict: WONTFIX by user adjudication (Q1..Q4 不改动); compat layer slated for deletion - Zero code changes, zero new tests, zero new dependencies - must_haves hero.ts modification + hero.test.ts intentionally NOT produced (recorded deviation) - pnpm test:ci closure baseline: 66 files / 737 passed / 0 failed / 1 skipped - No WINDOWS.md entry created (D-14); 07-VERIFICATION.md marked stale, /gsd-verify-work 7 required --- .../phases/07-data-fixes/07-14-SUMMARY.md | 270 ++++++++++++++++++ 1 file changed, 270 insertions(+) create mode 100644 .planning/phases/07-data-fixes/07-14-SUMMARY.md diff --git a/.planning/phases/07-data-fixes/07-14-SUMMARY.md b/.planning/phases/07-data-fixes/07-14-SUMMARY.md new file mode 100644 index 0000000..0abeefd --- /dev/null +++ b/.planning/phases/07-data-fixes/07-14-SUMMARY.md @@ -0,0 +1,270 @@ +--- +phase: 07-data-fixes +plan: 14 +subsystem: data-layer +tags: [wontfix, user-adjudication, data-fallback, legacy-compat, 06-17-7, audit-item-c, d-09, no-code-change, phase-07-closure] + +requires: + - phase: 07-data-fixes + provides: "07-13 map invalidation boundaries (CR-02 / IN-01 / #06-17-8) and its D-44 file-level baseline (66 files / 737 passed / 0 failed / 1 skipped)" + - phase: 07-data-fixes + provides: "07-LOADSTATE-AUDIT.md item C (#06-17-7) — the last remaining open audit row feeding this plan" + - phase: 06-unit-tests + provides: "D-44 file-level three-step gate and D-06's retained code-147 skip" +provides: + - "#06-17-7 / audit item C dispositioned as WONTFIX by user adjudication (2026-09-17): packages-user/data-fallback is a legacy-engine compatibility layer slated for deletion, so its core.status.hero proxy closure is intentionally NOT touched" + - "Task 0 of 07-14-PLAN.md carries the verbatim user answer, the per-Q (Q1..Q4 = 不改动) dispositions, the rationale and the verdict; committed alone in 25b213a" + - "Phase 7 test:ci closure baseline re-recorded as 66 files / 737 passed / 0 failed / 1 skipped — unchanged from 07-13, because no new test file is created (file count stays 66, NOT the 67 the plan originally expected)" + - "Zero code changes, zero new tests, zero new dependencies: hero.ts / hero.test.ts / flag.ts / index.ts and every data-side file untouched; the plan's declared must_haves artifacts are registered as an intentional, user-adjudicated deviation rather than an incomplete execution" + - "Phase 7 tracking advanced to 14/14; 07-VERIFICATION.md flagged stale and /gsd-verify-work 7 required" +affects: [07-data-fixes, phase-07-verification, packages-user/data-fallback, phase-05-legacy-migration] + +actuals: + tokens: 662 + tasks: 3 + commits: 3 + plan_head_before: a80e383892b9b10af9342f02f2e5b5edbdb7244d + +tech-stack: + added: [] + patterns: + - "WONTFIX by adjudication is a first-class Phase 7 close-out: an audit item may be closed by user ruling (不修复) under success criterion 1 without any code change, provided the ruling is locked verbatim in the plan's Task 0 " + - "A no-change plan still runs the phase closure baseline: the full suite is re-recorded so the phase-closure gate has a measured snapshot even when the plan touches no source file" + - "Missing must_haves artifacts are reported as a recorded deviation with the authorising adjudication, never as an incomplete execution" + +key-files: + created: [] + modified: + - .planning/phases/07-data-fixes/07-14-PLAN.md + +key-decisions: + - "Task 0 Q1..Q4 = 不改动 (user, 2026-09-17; verbatim: 「关于旧引擎的兼容部分不动,很快就要删除了,没必要改。」) — the legacy data-fallback compatibility layer is slated for deletion, so there is no proxy-resolution change, no get-semantics change, no regression test file, and no patchFlags handling" + - "#06-17-7 / audit item C = wontfix (经用户裁定不修复): a legal Phase 7 success-criterion-1 disposition, not a leftover" + - "Task 1 skipped in full by the adjudication — hero.ts is not modified and the package's first test file (hero.test.ts) is intentionally NOT produced; packages-user/data-fallback stays at zero tests" + - "pnpm test:ci closure baseline stays 66 files / 737 passed / 1 skipped — the plan's original 66→67 expectation is superseded because no test file is created" + - "No WINDOWS.md entry is created or modified (D-14: #06-17-7 has no ledger entry and must not get one)" + +patterns-established: + - "Adjudicated WONTFIX recorded with a verbatim transcript in the Task 0 , so a later verifier audits the rulings without re-deriving them" + +requirements-completed: [FIX-01] + +coverage: + - id: D1 + description: "#06-17-7 / audit item C adjudicated WONTFIX and locked: 07-14-PLAN.md Task 0 holds the verbatim user answer, Q1..Q4 不改动, the rationale (compat layer slated for deletion) and the verdict; committed alone in 25b213a" + requirement: FIX-01 + verification: + - kind: other + ref: "git show 25b213a -- .planning/phases/07-data-fixes/07-14-PLAN.md (Task 0 ; +20/-3, no other file in the commit)" + status: pass + human_judgment: false + - id: D2 + description: "The plan's declared must_haves artifacts — a packages-user/data-fallback/src/hero.ts modification and a new hero.test.ts — were intentionally NOT produced per the adjudication; recorded as a deviation, not as an incomplete execution" + verification: [] + human_judgment: true + rationale: "The non-production of these artifacts IS the adjudicated outcome; no test or command can prove a deliberate omission is correct — only the user's ruling can. A verifier must read the Task 0 and confirm the omission matches it." + - id: D3 + description: "Phase 7 closure baseline re-recorded: pnpm test:ci = 66 files / 737 passed / 0 failed / 1 skipped; zero it.skip added; the single skip remains equipment.test.ts:353 code 147 (D-06)" + requirement: FIX-01 + verification: + - kind: unit + ref: "pnpm test:ci (Test Files 66 passed (66); Tests 737 passed | 1 skipped (738))" + status: pass + human_judgment: false + +# Metrics +duration: 3min +completed: 2026-09-17 +status: complete +--- + +# Phase 7 Plan 14: Legacy hero proxy (`#06-17-7` / audit item C) Summary + +**`#06-17-7`(审计条目 C,`data-fallback` 的 `core.status.hero` 代理闭包)经用户裁定判为 **WONTFIX**——旧引擎兼容层即将删除,Q1..Q4 一律不改动;本计划**零代码改动、零新增测试、零新增依赖**,Phase 7 收口基线复录为 **66 文件 / 737 通过 / 0 失败 / 1 跳过**。** + +## Scope + +- **条目:** `#06-17-7`(`07-LOADSTATE-AUDIT.md` 审计**条目 C**):`packages-user/data-fallback/src/hero.ts` 的 `core.status.hero` 代理闭包持有 `state.hero.getModifiableAttribute()` 的一次性结果(`hero.ts:8-23`);若仓外旧引擎读档后未重发 `resetHero`,代理会读写孤儿属性。 +- **计划:** `07-14`(Phase 7 第 14 个、也是最后一个计划;`depends_on: 07-13`,Wave 14)。 +- **性质:** 本计划产出**文档/裁决登记**,不产出任何源码或测试。 + +## Verdict — WONTFIX by user adjudication (经用户裁定不修复,本计划未执行修复) + +**用户原话(逐字,锁于 `07-14-PLAN.md` 的 Task 0 ``,提交 `25b213a`):** + +> 「关于旧引擎的兼容部分不动,很快就要删除了,没必要改。」 + +| 裁决点 | 结论 | 落地 | +| --- | --- | --- | +| Q1 代理的活属性解析方式 | **不改动**(选项 A/B/C 均不采用) | `hero.ts` 一行未改 | +| Q2 `get` 返回基础属性还是最终属性 | **不改动**(保持 `getBaseAttribute`) | `hero.ts` 一行未改 | +| Q3 回归测试的落点与入口 | **不新建测试** | `hero.test.ts` **未创建**;该包维持零测试 | +| Q4 `patchFlags` 是否一并处理 | **不改动** | `flag.ts` / `index.ts` 一行未改 | + +**理由:** `packages-user/data-fallback` 是面向仓外旧引擎的**兼容层**,按规划**即将删除**;为很快消失的代码修复引用口径并新建测试不具价值。条目 C 的严重度本身为「低-中,取决于仓外 `resetHero` 是否重发」,风险随兼容层删除自然消解。 + +**合规性:** 本裁决是 `ROADMAP.md` Phase 7 成功标准第 1 条(「…全部处置完毕(**修复或经用户裁定改契约/不修复**)」)中的「经用户裁定不修复」一支——条目**已闭合**,而非遗留。 + +> ⚠️ **计划声明的 `must_haves.artifacts`(`hero.ts` 修改、`hero.test.ts`)按裁决有意未产出**——这是**已登记偏差**(见下方「Deviations from Plan」),**不是执行不完整**。 + +## Performance + +- **Duration:** ~3 min(本地 18:00 → 18:03);`pnpm test:ci` 单独占 ~21s,`vue-tsc --noEmit` 过滤检查占其余大半 +- **Started:** 2026-09-17T10:00:04Z(本地 18:00:04) +- **Completed:** 2026-09-17T10:02:39Z(本地 18:02:39) +- **Tasks:** 3 个执行单元(Task 0 裁决锁 / Task 2 门禁+SUMMARY / Task 3 tracking);**计划的 Task 1 经裁决整跳过** +- **Files modified:** 1(仅 `.planning/phases/07-data-fixes/07-14-PLAN.md`;**零源码、零测试**) +- **Diff size:** +20 / −3(`git diff --numstat a80e383..HEAD`,仅一个 `.md` 文件);实测 `actuals.tokens = 662`(diff 字符数 2647 / 4),相对 `estimate.tokens = 40000` 偏低 60.4×(估算假设要写实现+首个测试文件,实际为纯文档裁决) + +## Accomplishments + +- `#06-17-7`(审计条目 C)**闭合为 WONTFIX**:用户裁决逐字写入 `07-14-PLAN.md` 的 Task 0 ``(Q1..Q4 逐条 = 不改动 + 理由 + 处置结论 + 2026-09-17)。 +- **零代码/零测试/零依赖**:`hero.ts`、`flag.ts`、`index.ts`、`hero.test.ts`(未创建)与所有数据侧文件均无改动。 +- Phase 7 **收口基线复录**:`pnpm test:ci` = 66 文件 / 737 通过 / 0 失败 / 1 跳过;`it.skip` 仍恰 1 条(`equipment.test.ts:353` 码 147,D-06)。 +- Phase 7 计划计数推进至 **14/14**,`07-VERIFICATION.md` 标记失效并要求重跑。 + +## Task Commits + +`actuals.commits = 3`(`plan_head_before = a80e383892b9b10af9342f02f2e5b5edbdb7244d`;`git rev-list --count a80e383..HEAD`)。全部为**普通提交、钩子生效**,未使用 `--no-verify`、未 amend 任何提交: + +1. **Task 0: 锁定用户裁决** — `25b213a` (docs) — `docs(07-14): lock user adjudication — #06-17-7 wontfix, compat layer slated for removal`;仅 `.planning/phases/07-data-fixes/07-14-PLAN.md`(+20/−3),无删除文件 +2. **Task 2: SUMMARY** — `docs(07-14): complete legacy hero proxy plan as user-adjudicated wontfix`(本文件) +3. **Task 3: tracking** — `docs(phase-07): update tracking after plan 07-14`(`STATE.md` + `ROADMAP.md`,如 `state.json` 被工具改写则一并纳入) + +**Task 1 无提交**(经裁决整跳过)。 + +## Files Created/Modified + +- `.planning/phases/07-data-fixes/07-14-PLAN.md` — **唯一改动文件**:Task 0 `` 由占位文字替换为完整裁决记录(用户原话逐字 + Q1..Q4 对照表 + 理由 + WONTFIX 结论 + 成功标准第 1 条合规说明 + 对 Task 1–2 的效力)。**未修改任何既有 jsDoc / 注释**(AGENTS.md 规则)——本文件是被编辑的 `PLAN.md`,其 `` 属计划内授权填写的占位区。 +- **未创建**:`packages-user/data-fallback/src/hero.test.ts`(按 Q3 裁决)。 +- **未修改**:`packages-user/data-fallback/src/hero.ts`、`src/flag.ts`、`src/index.ts`、`WINDOWS.md`、以及任何 `packages*` 源码/测试。 + +## Decisions Made + +| 裁决 | 落地位置 | 可观测证据 | +| --- | --- | --- | +| **Q1/Q2/Q3/Q4 = 不改动** | `07-14-PLAN.md` Task 0 `` | `git show 25b213a -- .planning/phases/07-data-fixes/07-14-PLAN.md` | +| **处置 = wontfix(经用户裁定不修复)** | 同上 | 同上;`git log a80e383..HEAD -- packages-user/data-fallback/` **为空**(零提交触碰该包) | +| **Task 1 整跳过** | 本 SUMMARY「Deviations」 | `git status --short` 无 `data-fallback` 条目;`hero.test.ts` 不存在 | + +**「不写台账」口径(D-14)**:`#06-17-7` 在 `WINDOWS.md` **无入账 id**,故**不新建条目、不执行 `fixed`/`waive`**;实测 `Select-String .planning/WINDOWS.md -Pattern "06-17"` 无命中,`git status --short -- .planning/WINDOWS.md` 为空,台账仍为 11 open / 0 waived / 17 fixed / 28 total。 + +## Deviations from Plan + +### 经用户裁决的整任务跳过(记录为偏差,而非执行不完整) + +**1. [WONTFIX 裁决 - Task 1 整跳过] `#06-17-7` 的修复与其回归测试按用户裁定不产出** + +- **Found during:** Task 0 关卡(D-09)——用户裁决 `Q1..Q4 = 不改动` +- **Issue:** 计划 Task 1 原本要求修改 `packages-user/data-fallback/src/hero.ts`(代理解析改活属性)并**新建该包首个测试文件** `hero.test.ts`。裁决判定兼容层整体不动,故两项产出均不应发生。 +- **处置:** **整跳过 Task 1**,不修改 `hero.ts`、不创建 `hero.test.ts`、不触碰 `flag.ts`/`index.ts`。计划 `must_haves.artifacts` 中的 `hero.ts` 修改与 `hero.test.ts` **按裁决有意未产出**;`must_haves.truths` 中三条含「新增回归断言」的表述**随裁决作废**(改由 Task 0 `` 的 WONTFIX 结论取代)。 +- **Files affected:** **零**(无源码/测试改动) +- **Verification:** `git log a80e383..HEAD -- packages-user/data-fallback/` 为空;`Test-Path packages-user/data-fallback/src/hero.test.ts` = false;`git diff --name-only a80e383..HEAD` 仅一个 `.md` +- **Committed in:** `25b213a`(裁决锁)与本 SUMMARY + +### 基线预期偏差(计划表述校准) + +**2. [基线口径 - 文件数 66→67 未发生] 计划 `` 预期的「66→67」被裁决取代** + +- **Found during:** Task 2 全量套件复录 +- **Issue:** 计划 ``/Task 2 预期「执行后文件数应变为 67(新增 `hero.test.ts`),这是唯一被允许的基线变化」。因 Task 1 跳过,**无新增测试文件**。 +- **处置:** 基线**维持 66 文件 / 737 通过 / 1 跳过**(与 07-13 收尾一致);计划中「67」的表述按裁决 superseded。如实登记,不改任何文件。 +- **Files affected:** 表述面(本 SUMMARY) +- **Committed in:** 本 SUMMARY + +**Total deviations:** 2 recorded(1 项经裁决的整任务跳过 + 1 项基线预期校准)。均为**用户裁决的直接后果**,非 auto-fix;无 Rule 1–3 自动修复、无 Rule 4 架构变更。 + +## Gate Results (Task 2 — D-12/D-44 文件级 + 全量基线) + +| 门禁 | 命令 | 结果 | +| --- | --- | --- | +| ESLint(计划声明文件,**只读、未用 `--fix`**) | `pnpm exec eslint packages-user/data-fallback/src/{hero,flag,index}.ts` | **exit 0,无输出**(0 错误) | +| 类型(文件级,**vacuous clean**) | `pnpm exec vue-tsc --noEmit` → 过滤 `packages-user/data-fallback` | **0 命中**(整仓 27 条诊断均属并发 WIP 的 `client-*`/legacy 渲染端,与本计划无关;**未以整仓退出码判定**,按 06-RESEARCH Pitfall 4) | +| 全量套件 | `pnpm test:ci` | **`Test Files 66 passed (66)`** / **`Tests 737 passed | 1 skipped (738)`**(0 失败,Duration 21.12s) | +| 跳过项 | `git grep "it\.skip(" -- "*.test.ts"` | 仓库恰 **1 条**:`packages-user/data-base/src/hero/equipment.test.ts:353`(码 147,D-06);**未新增 `it.skip`** | +| 改动面 | `git diff --name-only a80e383..HEAD` | 仅 `.planning/phases/07-data-fixes/07-14-PLAN.md`;**零源码、零测试** | + +> **vacuous clean 说明:** 本计划**无任何改动文件**,故 D-44(b)「改动文件类型错误」与文件级 eslint 均**为空集上成立**(vacuously clean)。上列的 eslint/vue-tsc 结果是对**计划声明路径**(未被改动)的只读复核,用于给出收口时的具体观测值,不构成「因为改动而通过」的判据。 + +## Phase 7 本轮(07-10..07-14)完整闭合清单 + +> 供 `/gsd-verify-work 7` 重跑核对。C–H + CR-01/CR-02 全部收口后,`07-14` 是本轮**最后一个**计划。 + +| 计划 | 条目 | 处置 | 状态 | +| --- | --- | --- | --- | +| **07-10** | replay:CR-01(`set()` 索引数组损坏)/ 审计 H `#06-17-3`(`setReplayArray` 漏 `expireStreams`)/ WR-01(bigint 长度字节溢出)/ WR-02(参数计数用未截断长度)/ WR-03(编解码格式版本)/ WR-07(`insert`/`delete`/`set` 越界校验) | 修复 | **已闭合(已执行)** | +| **07-11** | 容器同引用:`#06-17-4`(`equipStore` 重建实例脱钩)/ `#06-17-5`(`flag/system` 字段脱钩)/ `#06-17-6`(followers 重建脱钩) | 修复 | **已闭合(已执行)** | +| **07-12** | 装备/属性存档正确性:WR-04(装备修饰器活值未持久化)/ WR-05(`deleteModifierByIndex` 簿记残留)/ WR-06(`HeroEquipment.loadState` 读档写录像) | 修复 | **已闭合(已执行)** | +| **07-13** | 地图:CR-02(`MapDamage` 幽灵伤害)/ `#06-17-8`(`MapLayer.setMapRef` 失效契约 + 读档旧动态块累积) | 修复(Q2=A 零改动的契约保留) | **已闭合(已执行,`07-13-SUMMARY.md`)** | +| **07-14** | legacy:`#06-17-7`(`data-fallback` `core.status.hero` 代理闭包持有读档前属性) | **WONTFIX(经用户裁定不修复)** | **本条:已闭合(零代码,`25b213a`)** | + +### 审计 `/` 登记对照 + +| 条目 | 结论 | 锚点 | +| --- | --- | --- | +| **`#06-17-7`(审计 C)** | **WONTFIX / 经用户裁定不修复**:`packages-user/data-fallback` 兼容层即将删除,Q1..Q4 一律不改动;条目按 Phase 7 成功标准第 1 条闭合 | `25b213a`(仅 `` 裁决锁;无源码提交) | +| 审计「未确定项 1(仓外 `resetHero` 是否重发)」 | **随 WONTFIX 消解**:兼容层删除后该不确定性不再影响本仓正确性;本计划**不**依赖该事件,也**不**为其做任何重绑 | 同上 | +| Q4 `patchFlags` 处置 | **不改动**(`flag.ts`/`index.ts` 一行未改) | 无提交(零改动) | +| `WINDOWS.md` | **未新建、未改动、未 `fixed`/`waive`**(D-14:`#06-17-7` 无入账 id) | 无 | + +## Issues Encountered + +**1. 工作树存在并发用户 WIP(未纳入任何提交)** + +- **现象:** `git status --short` 显示 `AGENTS.md`、`packages-user/client-base/src/types.ts`、`packages-user/client-modules/src/types.ts` 为已修改,另有未跟踪的 `.planning/milestone.lock` 与 `.planning/phases/07-data-fixes/.continue-here.md`。 +- **处置:** 全部为**用户并行重构渲染端的 WIP**,按硬约束**只 stage 计划声明的确切文件**,未使用 `git add -A`/`git add .`/`git commit -a`/`git stash`/`git clean`/`git reset --hard`。提交后这些文件仍为 ` M`/`??` 未暂存状态(见 Self-Check)。 +- **未登记为缺陷**(AGENTS.md:发现问题须经用户确认后才可记录;此处仅作事实登记)。 + +**2. 无其它阻塞** + +- `pnpm test:ci`、`eslint`、`vue-tsc` 过滤检查均一次性通过,无重试、无 auto-fix 循环。 + +## User Setup Required + +None - no external service configuration required. + +## Known Stubs + +None —— 本计划**未引入任何**硬编码空值、占位文案、未接线数据源或新增 `TODO`/`FIXME`/`it.skip`(零源码改动)。计划声明的 `hero.ts` 修改与 `hero.test.ts` 属**经用户裁决有意不产出**,已在「Deviations from Plan」登记为偏差,**不是 stub**,故**不写 `WINDOWS.md`**(D-14,且该条无入账 id)。 + +## Threat Model Disposition + +本计划**不引入任何新威胁面**(无新端点、无鉴权路径、无文件访问、无依赖安装:`git status --short -- package.json pnpm-lock.yaml` 为空)。计划 `` 中依赖 Task 1 落地的缓解项**随 WONTFIX 裁决转为 `accept`(由用户裁决承担)**,如实登记: + +| Threat ID | 计划处置 | 实际处置 | 依据 | +| --- | --- | --- | --- | +| T-7-43 `patchHero` 的 `attr` 闭包(medium / mitigate) | 原要求 Task 1 按 Q1 修 | **accept(不缓解)** | 用户裁决:兼容层即将删除,不为很快消失的代码修引用口径 | +| T-7-44 legacy 数值口径(基础值 vs 最终值,low / mitigate) | 原要求 Q2 裁决 + 断言 | **accept(不改动)** | 同上;`get` 保持 `getBaseAttribute` | +| T-7-45 flags 代理与 `window.flags` 绑定(low / mitigate) | 原要求 Task 1 断言 | **accept(不改动)** | 同上;`hero.ts:26-37` 逐字保留 | +| T-7-46 告警 56 文案(low / accept) | accept | **accept(不变)** | 零代码改动,文案未触及 | +| T-7-47 测试 stub 泄漏(low / mitigate) | 原要求 Task 1 用 `vi.hoisted`+`afterAll` | **N/A(无测试创建)** | Task 1 跳过,无 stub 引入 | +| T-7-SC 依赖安装(high / mitigate) | 不新增依赖 | **未新增** | `package.json`/`pnpm-lock.yaml` 零改动 | + +## Phase 7 验证失效与重跑要求 + +**`07-VERIFICATION.md`(`verified: 2026-09-16T06:04:11Z`,`status: passed`,`score: 15/15`)已失效**:其结论仅覆盖 8/8 计划的工作树,**不覆盖** 07-09 之后追加的 07-10..07-14(含本计划的 WONTFIX 裁决)。本计划执行完毕后**必须重跑 `/gsd-verify-work`(或 `gsd-verify-work 7`)**重新出具验证结论,方可评估 Phase 7 收口。`ROADMAP.md` 的 Phase 7 计划计数与 Wave 列表已按 SUMMARY 数同步(07-14 完成后为 **14/14**)。 + +## Next Phase Readiness + +- Phase 7 全部 14 个计划均有对应 SUMMARY;`#06-17-7` 以 WONTFIX 闭合,C–H 与 CR-01/CR-02 全部收口。 +- **待办(非本计划):** ① **重跑 `/gsd-verify-work 7`** 重新出具 Phase 7 验证结论(现结论已失效);② `IN-04`/`IN-05` 保留在册、未修;③ `sourcedDamage` 空点条目为已知惰性残留(07-13 Q4=A 非目标);④ `packages-user/data-fallback` 整体待 **Phase 5(Legacy 移植)** 删除——该包零测试为已知现状(本计划按裁决未改变)。 +- **未修复且经裁定保留:** `#06-17-7`(本条,WONTFIX);`data-fallback` 的删除归属 Phase 5。 + +--- + +## Self-Check: PASSED + +- FOUND: `25b213a`(Task 0 裁决锁;`git show --stat` = 1 file, +20/−3, 无删除) +- FOUND: `.planning/phases/07-data-fixes/07-14-PLAN.md` 的 Task 0 `` 含用户原话逐字、Q1..Q4 = 不改动、理由、WONTFIX 结论、2026-09-17 +- VERIFIED: `git diff --name-only a80e383..HEAD` = 仅 `.planning/phases/07-data-fixes/07-14-PLAN.md`(零源码、零测试) +- VERIFIED: `pnpm test:ci` = `Test Files 66 passed (66)` / `Tests 737 passed | 1 skipped (738)` +- VERIFIED: `git grep "it\.skip(" -- "*.test.ts"` 恰 1 条,`equipment.test.ts:353` 码 147(D-06),未新增 +- VERIFIED: `packages-user/data-fallback/src/hero.test.ts` 不存在;`git log a80e383..HEAD -- packages-user/data-fallback/` 为空 +- VERIFIED: `pnpm exec eslint` 计划声明 3 文件 exit 0;`vue-tsc --noEmit` 过滤 `data-fallback` 0 命中 +- VERIFIED: `WINDOWS.md` 零改动(`Select-String "06-17"` 无命中;`git status` 无该文件) +- VERIFIED: 用户 WIP(`AGENTS.md`、`client-base/src/types.ts`、`client-modules/src/types.ts`)未被暂存/提交(`git status --short` 仍为 ` M`) + +--- + +*Phase: 07-data-fixes* +*Completed: 2026-09-17*