e4e39f7b2b
fix(03-10): restore compatibility loading path
...
- Remove Phase 3 legacy dependency and serialized loading adapters
- Restore SaveSystem, converter, bridge, and loading callback assembly
2026-09-11 13:52:54 +08:00
32fb1154e2
test(03-14): cover synchronous replay command completion
...
- Prove movement and pathfinding return without controller waits
- Assert synchronous nested replay-safety restoration
- Guard user-owned attribute decorator placement
2026-09-11 13:43:23 +08:00
7ffc6c4171
fix(03-14): restore synchronous replay command handling
...
- Remove Promise settlement from replay safety restoration
- Adapt command booleans to the existing Promise boundary
- Preserve stable replay interfaces and user-owned decorator placement
2026-09-11 13:38:38 +08:00
7315681272
test(03-13): cover direct event body execution
...
- Exercise eventInsertEvent with an inline Statement[] body
- Prove the body mutates the event layer without an event-store id
- Document the superseding direct-body event contract
2026-09-11 13:28:33 +08:00
2f14d8a0ae
fix(03-13): execute single event bodies directly
...
- Accept anon-tokyo Statement[] bodies for eventInsertEvent
- Execute bodies through the existing interpreter without event-store lookup
- Preserve eventInsertEvents as the ordered id-sequence path
2026-09-11 13:25:48 +08:00
d2ebf1cefc
test(03-12): cover module-owned event registrations
...
- Exercise all eight approved registrations with valid typed parameters
- Retain awaited behavior and missing-target safety without nullish guard tests
2026-09-11 11:11:48 +08:00
9c39895620
refactor(03-12): move event registrations into modules
...
- Keep the barrel limited to registration assembly and exports
- Give map, hero, and control modules typed registration builders without hot-path shape validation
2026-09-11 11:08:49 +08:00
c0444510d1
chore: 调整引入
2026-09-11 09:56:03 +08:00
4b91a0b84f
style(03-07): normalize serialized event files
...
- Apply repository CRLF and Prettier formatting to changed files
2026-09-10 20:17:23 +08:00
1b93deb8c8
test(03-07): prove serialized event replay path
...
- Load the fixed replay event through the internal serialized boundary
- Assert trigger, raw statements, coordinate binding, one execution, and final state
2026-09-10 20:13:51 +08:00
a111b8dcd4
feat(03-07): wire serialized event loading boundary
...
- Register validated serialized events through the CoreState load seam
- Bind raw map event ids with MapState.fromRaw before replay execution
2026-09-10 20:12:47 +08:00
160a0d5c34
test(03-09): prove production replay safety boundaries
...
- Exercise decorated movement, item, and equipment registry calls\n- Assert deferred collection settlement and pure path/validation exclusion
2026-09-10 19:53:26 +08:00
fc9a1adae3
feat(03-09): decorate production replay command entrances
...
- Route all five state-changing command entrances through replay safety collection\n- Keep command validation, slot resolution, and registration helpers outside the decoration boundary
2026-09-10 19:49:54 +08:00
82687b2f56
style(03-08): format event guard coverage
...
- Restore repository CRLF and Prettier layout for the changed event files
2026-09-10 18:50:33 +08:00
f8cae08bd9
test(03-08): cover nullish event registrations
...
- Exercise all eight registration functions with null and undefined\n- Assert resolved void results and unchanged fixture state
2026-09-10 18:48:57 +08:00
95df6a0198
fix(03-08): guard registered event parameters
...
- Return safely before parsing nullish or non-object runtime parameters\n- Cover the real eventSetBlock registration with a null regression
2026-09-10 18:47:26 +08:00
2794dfc32d
style(03-05): normalize scoped data gate formatting
2026-09-10 17:53:33 +08:00
232df083f7
fix(03-05): complete data closure coverage and Node combat gate
2026-09-10 17:52:28 +08:00
64b97bc515
fix(03-05): close data package type and cycle boundaries
2026-09-10 17:40:29 +08:00
704e23fa2d
fix(03-04): share verifier harness with Node replay tests
...
- Keep Vitest imports inside the data-state test package
- Leave the dedicated script as the direct Node process entry
2026-09-10 17:17:40 +08:00
1218504b5c
test(03-04): cover Node replay divergence and factory isolation
...
- Exercise success, false, throw, unknown, hero, and map mismatch paths
- Verify isolated Node CoreState instances and diagnostic parameter fidelity
- Repair replay route parameter encoding required by verifier diagnostics
2026-09-10 17:11:09 +08:00
c06093839a
feat(03-04): add fixed Node replay verifier
...
- Extend the closed-loop fixture across hero and all map matrices
- Throw deterministic local diagnostics at the first replay divergence
- Add the dedicated test:data-node process gate
2026-09-10 17:05:15 +08:00
09481451d4
feat(03-03): assemble CoreState replay registry
...
- Bind the L2 pathfinder to each fresh hero state
- Give each CoreState an independent ReplaySystem
- Assert all eight stable commands are assembled at the top level
2026-09-10 16:44:46 +08:00
e7714894a0
feat(03-03): add async-safe replay commands
...
- Preserve replay collection context through async decorator settlement
- Add stable command items with awaited movement and pathfinding
- Return explicit failures for invalid item and equipment actions
2026-09-10 16:43:30 +08:00
3134537d30
feat(03-02): implement approved event built-ins
...
- Add map, hero, touch, and temporary event controls
- Register exactly eight built-ins through top-level event assembly
- Cover awaited behavior and safe failure with explicit fixtures
2026-09-10 16:25:02 +08:00
f911ac5989
style(03-06): normalize tile migration formatting
...
- Apply repository CRLF and Prettier formatting
- Record remaining out-of-scope type diagnostics
2026-09-10 15:57:59 +08:00
a12b2d2db8
feat(03-06): migrate legacy tiles to events maps
...
- Convert optional legacy events with safe empty defaults
- Cover TileStore consumption without trigger scalar output
2026-09-10 15:55:32 +08:00
89e53a6500
feat(03-06): migrate TileStore to events map
...
- Store raw tile event mappings for getEvent lookups
- Cover missing, replacement, index, and immutability behavior
2026-09-10 15:53:31 +08:00
4eec08638e
feat(03-01): add awaited replay movement tracer
...
- exercise source-aware event mutation on a fixed map
- verify Node replay reaches its normal end state
2026-09-10 15:43:26 +08:00
a707be4856
feat(03-01): add Node-safe core state construction
...
- isolate legacy loading behind internal dependencies
- provide memory saves and remove singleton back-edges
2026-09-10 15:35:01 +08:00
7f19773477
chore(03): checkpoint data layer structure
2026-09-10 13:30:53 +08:00
26f7ad6b2e
refactor(02-06): align pathfinding structure with user scope
2026-09-10 11:21:53 +08:00
93453db417
fix(02-04): guard nullable static event sources
...
- Preserve dynamic event collection while narrowing static tile access
- Record the moverImpl type diagnostic as resolved
2026-09-10 09:38:02 +08:00
a2aedb3969
refactor(02-04): restore authorized path contract
...
- Match path/types.ts to the user-authored baseline plus nullable returns
- Keep graph contracts implementation-owned and preserve the mover bridge
2026-09-10 09:35:21 +08:00
7a3b6e35c1
fix(02-03): support pathfinding interruption handoff
...
- Queue new movement until the stopped controller settles
- Register pathfinding controller diagnostics and regression coverage
2026-09-09 21:22:49 +08:00
6cde84ec31
feat(02-03): add teleport fallback and touch handling
...
- Detect event-bearing paths and fall back to step movement
- Handle adjacent no-pass targets with OnTouch dispatch and facing
2026-09-09 21:18:01 +08:00
2759df531e
feat(02-03): wire hero pathfinding movement
...
- Bind the hero predicate and event layer into the L2 finder
- Execute translated paths through the hero mover and export the L3 entry
2026-09-09 21:13:30 +08:00
68a150882c
refactor(02-03): extract hero pass predicate
...
- Move passability and hit checks behind IPassPredicate
- Keep hero mover event dispatch and move codes unchanged
2026-09-09 21:06:07 +08:00
f1a9e626b6
test(02-02): add real 13x13 game maps to pathfinding performance tests
...
- 夹具 createPerformanceSystem 参数化起始位置与图块定义(合成矩阵默认值不变)
- 真实地图图块语义:数字 1 墙体,0/2/3/4/5/6 均为空地
- 新增六张 13x13 真实地图分段测量用例(20 轮 build/find/search,入口不足时固定种子抽选端点并记录)
2026-09-09 20:28:21 +08:00
2b483cdf2f
test(02-02): switch performance timing to performance.measure and add multi-size map matrix
...
- 计时改用 performance.mark/measure(测量前后清理同名条目,避免累积)
- 新增 10/30/60/100/150 尺寸矩阵,完整流水线与分段测量均按尺寸逐行输出
- sanity 上限改为随节点数放宽的函数,两用例常驻通过
2026-09-09 20:14:26 +08:00
239ac0d790
refactor(02-02): precompute node costs and BFS from start position in graph build
2026-09-09 20:02:00 +08:00
7dd4f39e7e
fix: getLocationData logic
2026-09-09 19:42:37 +08:00
e27015c4d2
fix(02-02): cost 守卫允许 Infinity,仅拦 NaN 与负数
2026-09-09 19:30:12 +08:00
3beef86ac0
test(02-02): merge segmented performance measurement into performance test
...
- Share one fixture (system + buildGraph) across both perf cases, no duplication
- Add multi-run segmented case emitting [pathfinding-segmented] graph_build/full_find/search_only
- Delete temporary performance.segmented.test.ts diagnostic
- Drop IDataCommon import orphaned by 622008f in graph.ts (eslint gate)
2026-09-09 19:21:16 +08:00
6f0f17fbf2
refactor(02-02): replace linear min-scan with binary heap priority queue in pathfinding search
...
- Add internal DistanceHeap (binary min-heap, lazy stale-entry skip) colocated in finder.ts
- search() extraction now pops the heap instead of scanning the full dist map
- Restore NaN-aware cost guard (!Number.isFinite || < 0) dropped in 622008f , fixes NaN warn-174 regression test
2026-09-09 19:15:25 +08:00
622008f67c
refactor: 按审查意见调整寻路模块与开发规范
2026-09-09 19:05:57 +08:00
489e3de106
test(02-02): add full-pipeline pathfinding performance test and record review-fix round
...
- 新增 performance.test.ts:100x100 固定种子障碍图上计时完整 find 流水线
(建图 + 最优路径发现),结构化输出 map/steps/elapsed
- 实测 map=100x100 steps=198 elapsed≈609ms(sanity 上限 5000ms)
- 02-02-SUMMARY 追加 Review Fixes (user audit round 1) 记录
2026-09-09 18:51:31 +08:00
d9ee80f77f
refactor(02-02): apply user review directives on path module
...
- 移除 system.ts 中 'mover' in movable 运行时形状检查与 IMovableWithMover,
依 types.ts 修正后的类型直接绑定 IObjectMover<IObjectMovable>
- path 内导出类型(IPathGraph*、IPathfindingGraphBuilder)归位 types.ts,
graph.ts/finder.ts 改由 types 导入
- 移除类与接口声明上的 jsdoc、类实现侧与接口重复的 jsdoc、region 标记;
实现注释改为仅描述可观察行为(去除 Dijkstra 等实现叙述)
- 私有方法置于调用者之前(resolveFloorId、getNodeCost、search、startMove)
- system.test.ts 对齐 useMover(mover) 新签名并同步测试描述
2026-09-09 18:47:40 +08:00
9a604422f8
fix: IObjectMovable 在寻路时无法实施移动的类型问题
2026-09-09 18:33:21 +08:00
cbcaec83dc
refactor(02-02): comply with updated style rules, extract finder and drop temp function consts
2026-09-09 17:44:31 +08:00