|
| 1 | +# Engine V2 Combat Runtime Closeout |
| 2 | + |
| 3 | +PR: PR_26152_233-engine-v2-combat-runtime-closeout |
| 4 | +Date: 2026-06-03 |
| 5 | + |
| 6 | +## Scope |
| 7 | + |
| 8 | +- Closed the Engine V2 combat runtime capability lane for abilities, projectiles, status effects, and weapons. |
| 9 | +- Validated the four combat slices together through targeted headless engine tests. |
| 10 | +- Documented reuse/adapt/new decisions for existing runtime and legacy combat helpers. |
| 11 | +- Kept samples, tools, and game-specific combat logic out of scope. |
| 12 | + |
| 13 | +## Validation |
| 14 | + |
| 15 | +Commands: |
| 16 | + |
| 17 | +```powershell |
| 18 | +node tests/engine/EngineV2AbilitySystem.test.mjs |
| 19 | +node tests/engine/EngineV2ProjectileSystem.test.mjs |
| 20 | +node tests/engine/EngineV2StatusEffectSystem.test.mjs |
| 21 | +node tests/engine/EngineV2WeaponSystem.test.mjs |
| 22 | +``` |
| 23 | + |
| 24 | +Result: PASS. |
| 25 | + |
| 26 | +## Reuse / Adapt / New Decisions |
| 27 | + |
| 28 | +| Surface | Decision | Notes | |
| 29 | +| --- | --- | --- | |
| 30 | +| `src/engine/runtime/runtimeDamageProcessing.js` | Reuse | Status effects integrate with the existing manifest-driven damage processor. | |
| 31 | +| `src/engine/runtime/runtimeCooldownProcessing.js` | Adapt by contract | Ability system consumes explicit cooldown results instead of embedding cooldown state. | |
| 32 | +| `src/engine/runtime/runtimeConditionSystem.js` | Adapt by contract | Ability system consumes condition matches as runtime input. | |
| 33 | +| `src/engine/runtime/runtimeEventSystem.js` | Adapt by contract | Ability system consumes runtime events as runtime input. | |
| 34 | +| `src/engine/runtime/runtimeActionSystem.js` | Adapt by contract | Abilities and weapons emit action/damage/status requests for downstream systems. | |
| 35 | +| `src/engine/combat/Combat.js` | Reference only | Legacy helper mutates combatants and contains defaults that do not fit Engine V2 cleanly. | |
| 36 | +| `src/engine/systems/ProjectileSystem.js` | Reference only | Legacy projectile system mutates projectile arrays and owns movement state directly. | |
| 37 | +| `src/engine/events/EventBus.js` | Reference only | Event emitter helper is not needed for this deterministic headless runtime slice. | |
| 38 | + |
| 39 | +## Lane Status |
| 40 | + |
| 41 | +| Area | Status | Notes | |
| 42 | +| --- | --- | --- | |
| 43 | +| Abilities | PASS | Active/passive abilities resolve from explicit cooldown, condition, event, and action inputs. | |
| 44 | +| Projectiles | PASS | Manifest projectile definitions produce runtime records, movement commands, and collision outcomes. | |
| 45 | +| Status effects | PASS | Runtime status effects produce damage and movement modifier outputs. | |
| 46 | +| Weapons | PASS | Weapons compose abilities, projectiles, damage, and status effects through generic outputs. | |
| 47 | +| Samples | SKIP | Permanently out of scope. | |
| 48 | +| Tools | SKIP | Out of scope. | |
| 49 | + |
| 50 | +## Next Runtime Capability Slice |
| 51 | + |
| 52 | +Next lane: combat application and playable-loop integration. |
| 53 | + |
| 54 | +Expected first slice: |
| 55 | + |
| 56 | +- attach ability and weapon outputs to the existing runtime action flow |
| 57 | +- route projectile movement commands through the runtime movement processor |
| 58 | +- route projectile/status damage outputs through runtime damage processing |
| 59 | +- connect status movement modifiers to movement processing without hidden defaults |
| 60 | +- preserve manifest-driven configuration and visible error handling |
| 61 | +- keep samples and tool work out of scope |
| 62 | + |
| 63 | +## Lanes Executed |
| 64 | + |
| 65 | +- engine - Engine V2 combat runtime closeout validation. |
| 66 | +- runtime - headless ability, projectile, status effect, and weapon processing only. |
| 67 | + |
| 68 | +## Lanes Skipped |
| 69 | + |
| 70 | +- samples - permanently out of scope. |
| 71 | +- tools - out of scope. |
| 72 | +- browser Playwright - not part of this headless engine validation. |
| 73 | + |
| 74 | +## Playwright |
| 75 | + |
| 76 | +Playwright impacted: No browser/tool UI impact. This closeout validates headless runtime processors through targeted Node tests. |
| 77 | + |
| 78 | +## Manual Validation |
| 79 | + |
| 80 | +Review the four new Engine V2 combat modules and tests to confirm the lane remains manifest-driven, generic, and independent from samples, tools, and hard-coded combat behavior. |
| 81 | + |
| 82 | +## Blocker Scope |
| 83 | + |
| 84 | +No blocker for the Engine V2 combat runtime lane. |
0 commit comments