docs(06-15): complete combat interface coverage gap-fill plan

- add 06-15-SUMMARY.md (status complete; #06-15-1 correct-expectation skip documented)
- update STATE.md position/metrics/decisions/blockers and ROADMAP.md wave 5 + plan counts
- record blocked skip in WINDOWS.md ledger (entry 27)
This commit is contained in:
unanmed 2026-09-15 13:23:50 +08:00
parent d3eb4d2a00
commit ddb528bc36
4 changed files with 271 additions and 14 deletions

View File

@ -210,7 +210,7 @@ Plans:
3. 测试在本地可运行且全部通过
4. 测试由 AI 编写并运行,通过验证后可提交
**Plans**: 9/9 原计划 executed replanned (D-28;旧 06-01/06-02 执行结果标记 superseded,按同号重跑;数据端切片,非数据 render/legacy 覆盖延后) + gap-fill 06-10..06-14 (D-46;人工评审缺口补测,只补测试不改生产代码;10/14 executed)
**Plans**: 9/9 原计划 executed replanned (D-28;旧 06-01/06-02 执行结果标记 superseded,按同号重跑;数据端切片,非数据 render/legacy 覆盖延后) + gap-fill 06-10..06-15 (D-46;人工评审缺口补测,只补测试不改生产代码;15/15 executed)
Plans:
@ -250,6 +250,10 @@ Plans:
- [x] 06-14-PLAN.md — replay read-stream gaps: G-06-04-C/A (stream-only complex route + middle start index) + G-06-04-C/B (per-param typed assertions, index progression, expired-after-mutation); blocked `#06-04-3`/`#06-04-4` as correct-expectation `it.skip`
**Wave 5** *(G-06-01-D interface-coverage gap-fill, D-46; serialized after 06-14)*
- [x] 06-15-PLAN.md — combat interface gap: G-06-01-D (`EnemyContext.deleteAura` normal case — `addAura` applies `atk 2→5` → `deleteAura` same instance → `buildup` expects `2`); blocked `#06-15-1` (same root cause as `#06-01-4`) as correct-expectation `it.skip`, pending user decision
## Progress
**Execution Order:**
@ -262,4 +266,4 @@ Phases execute in numeric order: 1 → 2 → 3 → 4 → 5 → 6
| 3. 数据端完成 | 19/19 | Complete | 2026-09-12 |
| 4. 渲染适配与双布局 | 0/TBD | Not started | - |
| 5. Legacy 移植 | 0/TBD | Not started | - |
| 6. 单元测试 | 14/14 | In Progress| |
| 6. 单元测试 | 15/15 | In Progress| |

View File

@ -4,11 +4,11 @@ milestone: v1.0
current_phase: 06
current_phase_name: unit-tests
status: executing
stopped_at: Completed 06-14-PLAN.md (replay read-stream gap-fill, G-06-04-C)
last_updated: "2026-09-15T03:52:41.349Z"
stopped_at: Completed 06-15-PLAN.md (combat interface coverage gap-fill, G-06-01-D)
last_updated: "2026-09-15T05:19:06.000Z"
last_activity: 2026-09-15
last_activity_desc: Phase 06 execution started
state_head: 83dc4fdaf6a54cfcc344b6a4765581348682ec00
last_activity_desc: Phase 06 gap-fill 06-15 complete — #06-15-1 correct-expectation skip awaiting user decision
state_head: d3eb4d2a0044930c559a373bd1e181f44f9cc2e6
progress:
total_phases: 6
completed_phases: 0
@ -29,9 +29,9 @@ See: .planning/PROJECT.md (updated 2026-09-10)
## Current Position
Phase: 06 (unit-tests) — EXECUTING
Plan: 14 of 14 (all gap-fill plans 06-10..06-14 complete)
Status: Phase 06 gap-fill batch (D-46) complete — 06-14 (G-06-04-C read-stream) complete; pnpm test:ci green (66 files / 649 passed / 27 skipped)
Last activity: 2026-09-15 — Completed 06-14-PLAN.md (replay read-stream gap-fill)
Plan: 15 of 15 (all gap-fill plans 06-10..06-15 complete)
Status: Phase 06 gap-fill batch (D-46) complete — 06-15 (G-06-01-D deleteAura) complete with one correct-expectation `it.skip` (#06-15-1, same root cause as #06-01-4) awaiting user decision; pnpm test:ci green (66 files / 649 passed / 28 skipped)
Last activity: 2026-09-15 — Completed 06-15-PLAN.md (combat interface coverage gap-fill, G-06-01-D)
Progress: [█████░░░░░] 50%
@ -92,6 +92,7 @@ Progress: [█████░░░░░] 50%
| Phase 06 P12 | 13min | 3 tasks | 3 files |
| Phase 06 P13 | 14min | 3 tasks | 4 files |
| Phase 06 P14 | 12min | 3 tasks | 2 files |
| Phase 06 P15 | 12min | 2 tasks | 3 files |
## Accumulated Context
@ -198,6 +199,9 @@ Recent decisions affecting current work:
- [Phase 06]: 06-14:G-06-04-C/A 新增仅经 createReadStream 的 7 命令复杂序列验证(用例体内无 array.get),逐参数 typeof+值、流索引 1..7 递进、末尾 null,并覆盖中间起始索引 createReadStream(3)/(6)
- [Phase 06]: 06-14:G-06-04-C/B 强化既有 expectHeterogeneousRead(使 3 条复用用例受益)+ 两条既有流用例补每参数 typeof 与 stream.index 递进,并新增 add 变更后 expired===true + 告警 155 + 新建流按新次序类型化读回
- [Phase 06]: 06-14:受阻塞增删次序复用既有 #06-04-3/#06-04-4 锚点写正确预期 it.skip(5→7 条),不新建 #06-14-N 条目;可跑绿参数限定单字节 bigint 0..127 与 int32 整数
- [Phase 06]: 06-15:G-06-01-D(`EnemyContext.deleteAura`)补测首次实测即为红灯——`addAura` 生效(atk 2→5)断言通过,但 `deleteAura`(同一 `FakeAura` 实例)+ 再次 `buildup` 后 atk 仍为 5(期望回到基础值 2),故按 D-05 保留正确预期并标记 `it.skip`,不弱化断言也不改写为可跑绿假象
- [Phase 06]: 06-15:#06-15-1 与既有 #06-01-4 同根因(`buildup()` 只清空光环拓扑、未像 `refreshEnemy()` 那样先 `view.reset()`),findings 中交叉引用 #06-01-4 而非另立独立缺陷编号;修复 #06-01-4 后本用例可直接取消 skip
- [Phase 06]: 06-15:删除全局光环判定必须传同一光环实例(`globalAuraList` 为 Set 身份比较)且必须注册 `FakeConverter([])` 打开光环流水线(否则 `buildupBase()` 不执行导致假绿);本计划无新增码、无新增依赖、不测 saveState/loadState、不改动任何生产/核心源码
### Pending Todos
@ -212,6 +216,8 @@ None yet.
- Plan 01-13 records the same repository-wide type gate diagnostics outside its implementation and test files in the phase deferred-items ledger.
- 06-09 阻断项:`pnpm test:ci` 存在先于本计划的既有回归(commit `cee8439` 将录像记录接入 `data-base/src/hero/{equipment,items,mover}.ts`,4 个既有 data-base 测试与 2 个 data-state 文件共 6 文件 / 15 用例失败)。本计划硬约束禁止修改这些越界文件,故 D-44(c) 无法全绿;本计划未新增失败(新增 41 通过 / 6 跳过)。详见 `06-TEST-FINDINGS.md` `#06-09` 阻断项。
- 06-15 待用户裁决:G-06-01-D 用例无法跑绿(`deleteAura` 后再次 `buildup` 不回到基础值),与既有 #06-01-4 同根因(`buildup()` 未在重建前 `reset()` 各视图),已按 D-05 写正确预期 `it.skip` 并登记 `#06-15-1`。D-27/D-30「每公开方法 ≥1 正常用例」判据仍差 `deleteAura` 一条可跑绿用例(现为受阻塞正确预期 skip)。处置需用户确认:① 后续修复批次修复 `buildup` 视图重置(同时解 #06-01-4 与 #06-15-1);② 经确认把 `deleteAura` 从 D-30 判据排除。详见 `06-TEST-FINDINGS.md` `#06-15-1` 与 `06-15-SUMMARY.md`。
### Quick Tasks Completed
| # | Description | Date | Commit | Directory |
@ -227,6 +233,6 @@ None yet.
## Session Continuity
Last session: 2026-09-15T03:52:41.072Z
Stopped at: Completed 06-14-PLAN.md (replay read-stream gap-fill, G-06-04-C)
Last session: 2026-09-15T05:19:06.000Z
Stopped at: Completed 06-15-PLAN.md (combat interface coverage gap-fill, G-06-01-D)
Resume file: None

View File

@ -1,10 +1,10 @@
---
schema_version: 1
open_count: 18
open_count: 19
waived_count: 0
fixed_count: 8
total_count: 26
last_updated: 2026-09-15T03:31:00.000Z
total_count: 27
last_updated: 2026-09-15T05:23:29.159Z
---
# Broken Windows Ledger
@ -41,6 +41,7 @@ last_updated: 2026-09-15T03:31:00.000Z
| 24 | 06 | skipped-test | packages-user/data-base/src/enemy/manager.test.ts | | 受阻塞缺口 G-06-03-A:复用映射未接入 createEnemy/createEnemyById(#06-03-1),四朝向复用生成独立怪物的正确预期用例保持 it.skip | open | | 2026-09-15T02:46:32.772Z | |
| 25 | 06 | skipped-test | packages-user/data-base/src/hero/saveLoad.test.ts | | 受阻塞缺口 G-06-09-B:压缩档 loadDiff 未回退装备原始定义(#06-09-1),EquipmentState 百分比加成 Low/High 档正确预期用例保持 it.skip | open | | 2026-09-15T03:31:00.000Z | |
| 26 | 06 | skipped-test | packages-user/data-base/src/hero/saveLoad.test.ts | | 受阻塞缺口 G-06-09-B:HeroEquipment.saveState 未深拷贝 equipped/slots(#06-09-2),经 HeroState 容器三档恢复装备映射的正确预期用例保持 it.skip | open | | 2026-09-15T03:31:01.000Z | |
| 27 | 06 | skipped-test | packages-user/data-system/src/combat/context.test.ts | 625 | 受阻塞缺口 G-06-01-D:deleteAura 后再次 buildup 不回到基础值(#06-15-1,与 #06-01-4 同根因),正确预期用例保持 it.skip 待用户确认 | open | | 2026-09-15T05:23:29.159Z | |
````json
[
@ -355,6 +356,18 @@ last_updated: 2026-09-15T03:31:00.000Z
"reason": "",
"recorded_at": "2026-09-15T03:31:01.000Z",
"resolved_at": null
},
{
"id": 27,
"kind": "skipped-test",
"phase": "06",
"file": "packages-user/data-system/src/combat/context.test.ts",
"line": 625,
"description": "受阻塞缺口 G-06-01-D:deleteAura 后再次 buildup 不回到基础值(#06-15-1,与 #06-01-4 同根因),正确预期用例保持 it.skip 待用户确认",
"status": "open",
"reason": "",
"recorded_at": "2026-09-15T05:23:29.159Z",
"resolved_at": null
}
]
````

View File

@ -0,0 +1,234 @@
---
phase: 06-unit-tests
plan: 15
subsystem: testing
tags: [vitest, data-system, combat, enemy-context, delete-aura, gap-fill, g-06-01-d, it-skip]
# Dependency graph
requires:
- phase: 06-unit-tests (06-01)
provides: EnemyContext 光环流水线行为单测与既有缺陷锚点 #06-01-4(重复全量构建未从原始怪物重算)
provides:
- G-06-01-D —— `EnemyContext.deleteAura` 的正常用例(`addAura` 生效 `atk 2 → 5` → `deleteAura` 同一实例 → 再次 `buildup` 期望回到 `2`)
- 新增缺陷锚点 #06-15-1(与既有 #06-01-4 同根因:`buildup()` 未在重建前 `reset()` 各视图)
- 06-COVERAGE-MAP.md 06-15 小节(G-06-01-D 缺口 → 用例 → 文件 → 计划映射)
affects: [06-verify-work, phase 6 gap-fill batch, future fix batch for #06-01-4/#06-15-1]
# Actuals (#2632) — same scale as the plan `estimate` (chars/4 over the realized diff).
actuals:
tokens: 1323
tasks: 2
commits: 2
# Tech tracking
tech-stack:
added: []
patterns:
- "删除全局光环的判定必须传入同一光环实例、经再次全量构建(`buildup`)观测,并先注册 `FakeConverter([])` 打开光环流水线(否则 `buildupBase` 不执行,用例假绿)"
- "受实现缺陷阻塞的缺口按 D-05 写正确预期 `it.skip`,并交叉引用同根因的既有锚点,不另立独立缺陷编号"
key-files:
created: []
modified:
- packages-user/data-system/src/combat/context.test.ts
- .planning/phases/06-unit-tests/06-COVERAGE-MAP.md
- .planning/phases/06-unit-tests/06-TEST-FINDINGS.md
key-decisions:
- "G-06-01-D 用例按 D-05 以正确预期编写并标记 `it.skip`:临时取消 skip 实测 `addAura` 生效断言通过(`atk = 5`),但 `deleteAura` + 再次 `buildup` 后仍为 `5`(`AssertionError: expected 5 to be 2`),故不弱化断言、不改为可跑绿假象"
- "#06-15-1 与既有 #06-01-4 同根因(`buildup()` 未在重建前对各视图 `reset()`),已在 06-TEST-FINDINGS.md 交叉引用 #06-01-4;修复 #06-01-4 后本用例可直接取消 skip"
- "只新增 1 条 `it.skip`;`context.test.ts` 既有用例与断言零变化,既有 skip 数量不变"
- "不引入任何新码、不新增依赖、不测 saveState/loadState(D-09/D-32);不修改任何生产/核心源码(D-46)"
patterns-established:
- "同实例删除语义验证:`addAura(aura)` 与 `deleteAura(aura)` 必须传同一 `FakeAura` 实例(`Set` 身份比较),不得两次 `new FakeAura(...)`"
- "同根因缺口复用既有锚点:受阻塞的补测用例把根因指向既有 finding(本次 #06-01-4),避免同一缺陷被登记成多个编号"
requirements-completed: [TEST-01]
# Coverage metadata (#1602)
coverage:
- id: D1
description: "G-06-01-D —— `EnemyContext.deleteAura` 正常用例:注册转换器 → `addAura` → `buildup` 断言 `atk 2 → 5` → `deleteAura`(同一实例)→ 再次 `buildup` 断言回到 `2`"
requirement: "TEST-01"
verification:
- kind: unit
ref: "packages-user/data-system/src/combat/context.test.ts#applies a global aura after addAura and stops applying it after deleteAura (it.skip)"
status: unknown
human_judgment: true
rationale: "用例为受生产缺陷 #06-15-1(与 #06-01-4 同根因:`buildup()` 未在重建前 `reset()` 各视图)阻塞的正确预期 `it.skip`,当前无法跑绿;是否修复核心代码(本批次硬约束禁止)或长期保留 skip,需用户确认后决定"
- id: D2
description: "06-COVERAGE-MAP.md create-or-append 06-15 小节,登记 G-06-01-D → 用例 → 文件 → 计划 映射并注明无新增码"
requirement: "TEST-01"
verification:
- kind: other
ref: ".planning/phases/06-unit-tests/06-COVERAGE-MAP.md#06-15 战斗系统接口覆盖补齐(D-46 / G-06-01-D)"
status: pass
- kind: integration
ref: "pnpm test:ci (66 files / 649 passed / 28 skipped)"
status: pass
human_judgment: false
# Metrics
duration: 12min
completed: 2026-09-15
status: complete
---
# Phase 6 Plan 15: 战斗系统接口覆盖补齐(G-06-01-D)Summary
**为 `EnemyContext.deleteAura` 补上唯一缺失的公开方法正常用例(`addAura` 生效 `atk 2 → 5` → `deleteAura` 同一实例 → 再次 `buildup` 期望回到 `2`);该用例实测暴露与既有 `#06-01-4` 同根因的 `buildup` 未重置缺陷,按 D-05 以正确预期 `it.skip` 登记为 `#06-15-1`,本批次不修改任何生产代码**
> **⚠️ 未达成的成功判据(需用户确认)**:计划 `<success_criteria>` 要求该用例「可跑绿」。
> 实测不可跑绿——`addAura` 生效的前两条断言通过(`atk = 5`),但 `deleteAura` + 再次
> `buildup` 后 `atk` 仍为 `5` 而非回到基础值 `2`。按计划 D-05 的明文约定
> (「不得弱化断言——写正确预期 + `it.skip` 并登记 `#06-15-N`」)执行,
> 未把受阻塞缺口伪装成失败用例或假绿用例。详见下节与 `06-TEST-FINDINGS.md` `#06-15-1`。
## Performance
- **Duration:** 12 min
- **Started:** 2026-09-15T05:07:12Z
- **Completed:** 2026-09-15T05:19:06Z
- **Tasks:** 2/2
- **Files modified:** 3
## Accomplishments
- **阶段 1(构件级,G-06-01-D)**:在 `EnemyContext single aura ranges` 分区新增 1 条用例
`applies a global aura after addAura and stops applying it after deleteAura`,
与既有 `applies a full-range aura to every enemy` 同构(同 `FullRange` +
`onApply: handler => handler.enemy.addAttribute('atk', 3)`),仅增加 `deleteAura` 后的
第二次 `buildup` 与回退断言。三条断言齐备:baseline `2` → 光环生效 `5` → 回退 `2`;
复用文件内既有 `createContextFixture`/`createEnemy`/`FakeAura`/`FakeConverter`,无新增 helper、
无跨文件共享(D-02/D-03)、无新导入。
- **首次实测(临时取消 skip 验证)**:`atk 2 → 5` 两条断言通过,
`deleteAura` 后回退断言失败(`AssertionError: expected 5 to be 2`)——
证明该用例不是空转,而是真实暴露了实现行为。
- **缺陷登记**:按 D-05 保留正确预期并标记 `it.skip`,在 `06-TEST-FINDINGS.md` 追加
`## #06-15` 小节与 `#06-15-1` 条目,交叉引用既有 `#06-01-4`(同根因),
并附最小复现、影响面与建议修复方向;不引入新 warn/error 码。
- **阶段 2(收口)**:以 create-or-append 方式追加 `06-COVERAGE-MAP.md` 06-15 小节,
登记 G-06-01-D → 用例 → 文件 → 计划 映射并注明本计划无新增码;既有小节与 code 表行逐字未变
(`git diff` 仅新增行)。
- **全仓库检索变化**:`deleteAura` 由「仅命中 2 个生产文件」变为「测试文件也命中」
(`context.test.ts:625`、`context.test.ts:654`);`addAura` 在 `context.test.ts` 的命中由 8 增至 10,
既有覆盖无减少。
## Task Commits
Each task was committed atomically:
1. **阶段 1(构件级):G-06-01-D 补 `deleteAura` 正确预期用例 + 登记 `#06-15-1`** - `65251f5` (test)
2. **阶段 2(收口):写入 `06-COVERAGE-MAP.md` 06-15 小节并复核门禁** - `d3eb4d2` (docs)
**Plan metadata:** (this commit) (docs: complete plan)
## Files Created/Modified
- `packages-user/data-system/src/combat/context.test.ts` — 新增 1 条正确预期 `it.skip` 用例
`applies a global aura after addAura and stops applying it after deleteAura`(+41,纯新增;
既有用例、断言与既有 skip 零变化)
- `.planning/phases/06-unit-tests/06-COVERAGE-MAP.md` — create-or-append 追加 06-15 小节(+23,纯新增)
- `.planning/phases/06-unit-tests/06-TEST-FINDINGS.md` — 追加 `## #06-15` 小节与 `#06-15-1` 条目(+32,纯新增)
## Decisions Made
- G-06-01-D 用例按 **D-05** 以正确预期编写并标记 `it.skip`:临时取消 skip 已实测确为真实失败
(`atk = 5`,期望 `2`),因此不弱化断言、不改写成「删除不报错」式的空转断言、
也不改为只断言「新怪不受影响」以绕过缺陷。
- `#06-15-1` 与既有 `#06-01-4` **同根因**(`buildup()` 只清空光环拓扑,未像 `refreshEnemy`
那样先 `view.reset()` 把计算后怪物恢复至原始怪物),故在 findings 中交叉引用 `#06-01-4`
而非包装成两个独立缺陷;修复 `#06-01-4` 后本用例可直接取消 skip 转为回归用例。
- `addAura`/`deleteAura` 使用**同一** `FakeAura` 实例(`globalAuraList` 为 `Set`,按身份比较),
避免用例假绿。
- 必须注册 `new FakeConverter([])`:`buildup()` 仅在 `auraConverter.size > 0 || specialQueryEffects.size > 0`
时才执行 `buildupSpecials()`/`buildupBase()`,否则光环基础效果不会被施加。
- 本计划不引入任何新码、不新增依赖、不测 `saveState`/`loadState`(D-09/D-32),
不修改任何生产/核心源码(D-46)。
## Deviations from Plan
### Plan-sanctioned deviation(非 auto-fix,属计划 D-05 明文路径)
**1. [Plan D-05 / D-43] 用例由「可跑绿」变为「正确预期 `it.skip`」**
- **Found during:** Task 1(阶段 1 构件级)
- **Issue:** 计划 `<success_criteria>` 与硬约束要求该用例可跑绿并断言 `deleteAura` 后 `atk` 回到 `2`。
实测(临时取消 skip)为 `5`:`buildup()` 不在重建前 `reset()` 各视图,
删除光环后此前已叠加到计算后怪物上的 `+3` 不被撤销。
- **Fix:** 按计划 `<action>` 的明文约定——「若该用例在正确预期下无法跑绿(例如 `deleteAura`
后光环仍生效),**不得弱化断言**——按 D-05 写正确预期 + `it.skip` 并登记
`06-TEST-FINDINGS.md` 的 `#06-15-N`」——保留三条正确预期断言并标记 `it.skip`,
追加 `06-TEST-FINDINGS.md` `#06-15-1`(交叉引用 `#06-01-4`)。
- **Files modified:** `packages-user/data-system/src/combat/context.test.ts`(`it.skip` 与注释)、
`.planning/phases/06-unit-tests/06-TEST-FINDINGS.md`(`#06-15-1`)
- **Verification:** 聚焦运行 `pnpm exec vitest run packages-user/data-system/src/combat/context.test.ts`
→ 39 passed / 1 skipped;`pnpm test:ci` → 66 文件 / 649 passed / 28 skipped 全绿
- **Committed in:** `65251f5`(阶段 1)
- **说明:** 计划 `<files_modified>` frontmatter 只列了 `context.test.ts` 与 `06-COVERAGE-MAP.md`,
但计划 `<output>` 与 D-05/D-06 明确要求发现缺陷时登记 `06-TEST-FINDINGS.md`,
故将 `06-TEST-FINDINGS.md` 一并纳入阶段 1 提交。
**未执行的可选加强项:** 计划 `<action>` 中「可选加强」建议在步骤 4 之后再次
`addAura(aura)` + `buildup()` 断言 `atk` 又回到 `5`。因同一根因下该断言同样不可跑绿
(实际会得到 `8` = 5 + 3),且它只是同一缺陷的第三次观测,故未加入,以保持用例最小、
断言最聚焦。
---
**Total deviations:** 1(计划 D-05 明文路径,非 auto-fix;无 Rule 1-4 auto-fix)
**Impact on plan:** G-06-01-D 用例本身落地且真实可判定,但**未能按计划预期跑绿**;
`EnemyContext.deleteAura` 的接口判据仍未由一条可跑绿用例满足,缺口状态从
「0 测试引用」变为「有正确预期 `it.skip` + 已登记缺陷锚点」。**需用户确认后续处置**
(修复 `#06-01-4`/`#06-15-1` 后取消 skip,或长期保留 skip)。无范围蔓延,无生产代码改动。
## Issues Encountered
- **阻断性实现缺陷(计划已预判的失败分支)**:`deleteAura` 后再次 `buildup()` 不会把计算后怪物
恢复至原始怪物,属性停留在旧值 `5`。根因与既有 `#06-01-4` 完全一致——`buildup()` 内只清空
`sortedAura`/`convertedAura` 等拓扑集合,未对每个视图调用 `reset()`;
只有局部刷新路径 `refreshEnemy()`(`context.ts:784`)会 `view.reset()`。
已按 D-05 记录、未修改核心代码。
- 首次聚焦运行即为红灯,验证了该用例不是「删了不报错」式空转——正是计划 `<verification>`
的 `fails_when` 中「未断言属性回到基础值 `2`」之外的更强信号:断言存在且真实失败。
## D-44 Quality Gate Results
| 阶段 | `eslint --fix` | `eslint <改动文件>` | `vue-tsc`(按文件路径过滤) | 聚焦运行 | `pnpm test:ci` |
| --- | --- | --- | --- | --- | --- |
| 1 | exit 0 | 0 错误 | 0 类型错误(全局既有无关错误 28 条不变) | 39 passed / 1 skipped | 66 文件 / **649 passed** / 28 skipped |
| 2 | n/a(`06-COVERAGE-MAP.md` 非 JS,eslint 无匹配配置 → 0 错误) | 0 错误 | 0 类型错误(28 条不变) | — | 66 文件 / **649 passed** / **28 skipped** |
- `vue-tsc --noEmit` 过滤 `combat/context.test.ts` 命中 0 条;28 条既有无关错误全部位于
`client-modules` / `legacy-plugin-data` / `legacy-ui`(D-44 明确排除范围)。
- `git status` 最终仅含本计划三个规划/测试文件;无生产/核心源码改动,
无 06-01..06-14 计划改动。
## User Setup Required
None - no external service configuration required.
## Next Phase Readiness
- **06-15 小节已落地**:`06-COVERAGE-MAP.md` 06-15 小节登记 G-06-01-D 映射并注明无新增码;
既有小节与 code 表行逐字未变。
- **`#06-15-1` 待用户裁决**:与 `#06-01-4` 同根因。处置选项:
1. 在后续修复批次修复 `buildup()` 的视图重置(推荐)→ 同时解 `#06-01-4` 与本条 2 条 skip;
2. 与用户确认后把 `deleteAura` 从 D-30「每公开方法 ≥1 正常用例」判据中排除。
- **接口判据状态**:D-27/D-30 的「每公开方法至少一条正常用例」在 `context.test.ts` 侧
仍差 `deleteAura` 一条**可跑绿**用例(现为受阻塞的正确预期 skip);
该缺口已在覆盖表与 findings 中显式登记,不再是无记录的漏测。
- `pnpm test:ci` 全绿(66 文件 / 649 passed / 28 skipped),D-44 三项文件级门禁全部通过。
---
*Phase: 06-unit-tests*
*Completed: 2026-09-15*
## Self-Check: PASSED
- FOUND: `.planning/phases/06-unit-tests/06-15-SUMMARY.md`
- FOUND: `packages-user/data-system/src/combat/context.test.ts`
- FOUND: `.planning/phases/06-unit-tests/06-COVERAGE-MAP.md`
- FOUND: `.planning/phases/06-unit-tests/06-TEST-FINDINGS.md`
- FOUND: commit `65251f5`(阶段 1)
- FOUND: commit `d3eb4d2`(阶段 2)