文档对齐批:README/CI/配置说明与现行实现对齐(纯文档零代码零跑闸)——①game/README 运行节:数值调整板→调试浮窗(迭代14.5整合批48c0b34/d0a3c6b,main.gd debug_overlay实证)、冒烟55项→752项(fdd32fe批末闸读数)+60.55s实测引用、九探针→十探针补t17_defer_probe(smoke/ roster清点)、supply_scan退役注记(2026-09-15格面资源批已删)②game/tests/README+unit/README:628+→752+断言、九→十探针、七→十五套件(run_all.gd _suites清点)、production/qa→design/qa、docs/→design/dev/(7f24b640三层收敛失效路径修正)③.github/workflows/tests.yml:根tests/路径→game/tests/+--path game(7f24b640后CI路径失效修正)、git未初始化陈述换代④static_scan.sh头注docs/路径同修正⑤sim-data/README历史锚8份→23份(M-4迭代11a/11b/12/14各批锚入库后清点)⑥CLAUDE.md探针行调整板→调试浮窗。均系可从代码/提交记录直接确认项,历史批条目未动

This commit is contained in:
DKChan committed 2026-10-05 06:47:01 +08:00
1 parent 8642c2d0bc
commit 9446302e9f
7 files changed
+29 -32

No files matched your search

+8 -8
View File
@@ -2,9 +2,9 @@
**Engine**: Godot 4.7.2-stable(GDScript 单语言)
**Test Framework**: 双载体(ADR-0004)——`--headless --script` 逻辑冒烟 + headless 场景探针;gdUnit4 **deferred**(D2 OQ1 关闭形态,正式 CI 期再议)
**CI**: `.github/workflows/tests.yml`(首次 push 到 GitHub 后自动生效;仓库 2026-09-12 尚未初始化 git)
**Setup date**: 2026-09-12
**参考实现**: `game/smoke/`(冒烟 628+ 断言 + 九场景探针——正式工程的活样板)
**CI**: `.github/workflows/tests.yml`(首次 push 到 GitHub 后自动生效;仓库已初始化 git、尚未配置远端)
**Setup date**: 2026-09-12(2026-09-27 `7f24b640` 三层收敛:根 tests/ 并入 `game/tests/`、docs 并入 `design/dev/`、production 解散)
**参考实现**: `game/smoke/`(冒烟 752+ 断言 + 十场景探针——正式工程的活样板)
## Directory Layout
@@ -21,7 +21,7 @@ tests/
## Running Tests
```bash
# 逻辑冒烟(双载体之一)——Windows 须用 console 版 exe 取 stdout
# 逻辑冒烟(双载体之一)——Windows 须用 console 版 exe 取 stdout;工作目录 = game/(含 project.godot 那一层)
godot --headless --script tests/run_all.gd # 统一入口(CI 调用点)
godot --headless --script tests/unit/example_test.gd
@@ -32,7 +32,7 @@ godot --headless --path . res://smoke/<probe>.tscn
timeout 120s godot --headless --script tests/run_all.gd
```
> 单元/契约套件状态(单元测试与契约层批 2026-09-28):`_suites()` manifest 已登记实跑七套件——data_config(ConfigDB 加载/进度坐标 ceil 解析/fatal 退出码/统一随机流)、battle_settlement(DamageMath 纯函数/DamageController 伤害单据五配方)、contracts(系统间接口契约断言);致命类独立进程 `expect=1`。期望值一律由表读值推导(零玩法数值字面量)、随机只经 RngService 统一流。
> 单元/契约套件状态(单元测试与契约层批 2026-09-28 立基,后随迭代 7/8 增补):`_suites()` manifest 已登记实跑十五套件——data_config(ConfigDB 加载/进度坐标 ceil 解析/fatal 退出码/统一随机流)、core(魔法道具结构冻结/断点续玩)、battle_settlement(DamageMath 纯函数/DamageController 伤害单据五配方)、contracts(系统间接口契约断言)、presentation(节奏队列/奖励浮层/字体资产/地形瓦片集);致命类独立进程 `expect=1`。期望值一律由表读值推导(零玩法数值字面量)、随机只经 RngService 统一流。
**协议要点**(D2 冒烟协议 + ADR-0004):
- 冒烟脚本 `extends SceneTree` 以获得 `quit(code)`;成功 `quit(0)`、失败 `quit(1)`
@@ -43,7 +43,7 @@ timeout 120s godot --headless --script tests/run_all.gd
## Test Naming
- **Files**: `[system]_[feature]_test.gd`(领域命名,禁 ID 前缀——docs/code-conventions.md)
- **Files**: `[system]_[feature]_test.gd`(领域命名,禁 ID 前缀——design/dev/code-conventions.md)
- **Functions**: `test_[scenario]_[expected]`
- **Example**: `reward_roll_test.gd` → `test_power_interval_rolls_within_bounds()`
@@ -55,12 +55,12 @@ timeout 120s godot --headless --script tests/run_all.gd
| Integration | Integration test OR playtest doc | `tests/integration/[system]/` |
| Visual/Feel | Screenshot + lead sign-off | `tests/evidence/` |
| UI | Manual walkthrough OR interaction test(场景探针为首选) | `tests/evidence/` |
| Config/Data | Smoke check pass | `production/qa/smoke-*.md` |
| Config/Data | Smoke check pass | `design/qa/` |
## Static Scan(提交前双跑:本地 + CI)
`tests/static_scan.sh` 实现 ADR-0004 扫描域 S1–S8 的可执行子集;规则全集与动机见
`docs/architecture/adr-0004-test-carrier-and-ci.md`。新违规案例必须**先补扫描规则再修码**。
`design/dev/architecture/adr-0004-test-carrier-and-ci.md`。新违规案例必须**先补扫描规则再修码**。
## CI
+2 -2
View File
@@ -1,8 +1,8 @@
#!/usr/bin/env bash
# tests/static_scan.sh — ADR-0004 静态扫描域 S1–S8 可执行子集
# 规则全集与动机:docs/architecture/adr-0004-test-carrier-and-ci.md §Decision 3
# 规则全集与动机:design/dev/architecture/adr-0004-test-carrier-and-ci.md §Decision 3
# 正式工程(core/ 存在)时执行;否则优雅跳过(工程在 game/core——2026-09-24 转正结构批后仓库根布局)。
# 纪律:新违规案例必须先补本脚本规则再修码(docs/code-conventions.md 缺陷-规范对照表)。
# 纪律:新违规案例必须先补本脚本规则再修码(design/dev/code-conventions.md 缺陷-规范对照表)。
set -u
cd "$(dirname "$0")/.."
+2 -2
View File
@@ -1,6 +1,6 @@
# tests/unit/ — 隔离单元测试
每系统一个子目录(`reward_economy/`、`board_generator/`…)。协议与命名见 `tests/README.md`。
每系统一个子目录(现行:`data_config/`、`core/`、`battle_settlement/`、`contracts/`、`presentation/`)。协议与命名见 `tests/README.md`。
**活样板**:`example_test.gd`(本目录)——第一个真实测试请以它为模板。
**参考实现**:`game/smoke/smoke_all.gd`(628+ 条断言的组织方式)。
**参考实现**:`game/smoke/smoke_all.gd`(752+ 条断言的组织方式)。