feat(thressgame-coverage): Wave 4 (deferred dispatch + 4 new triggers + suppressTriggers)
- T15: deferred trigger queue (PendingTrigger[] + cascadeDepth on PrimitiveApplyContext); HARD_CASCADE_DEPTH=8; runtime.cascade-depth-exceeded; FIFO drain after arm; enqueueTrigger helper - T16: on-rule-activated trigger primitive + fireOnRuleActivatedHooks; OnRuleActivatedHooks attr on GAME_ENTITY; RuleActivatedFiredFor guard on PRESET_STATE_ENTITY; chooser color in event - T17: on-rule-expire trigger primitive + fireOnRuleExpireHooks; OnRuleExpireHooks attr; RuleExpireFiredFor guard - T18: on-piece-entered-marker trigger + fireOnPieceEnteredMarkerHooks; OnPieceEnteredMarkerHooks attr; wired stage 7b in onAfterMove (uses T10 getMarkersAtSquare priority order) - T19: on-marker-expire trigger + decrementMarkerLifetimes (util/marker-lifetime.ts); OnMarkerExpireHooks attr; wired stage 7c after T18 - T20: suppressTriggers flag on PrimitiveApplyContext; runPrimitives skips IMPERATIVE_KINDS under suppress; IMPERATIVE_KINDS exported from validate.ts; runPrimitives now public Registry: 22 -> 26 primitives. Tests: 2058 -> 2120 (+62). bun run check exit 0.
This commit is contained in:
parent
defe56feb9
commit
70a7c50613
46 changed files with 4371 additions and 55 deletions
|
|
@ -933,7 +933,7 @@ Max Concurrent: 8 (Waves 5+6+7+9 overlap)
|
|||
- Message: `feat(validator): imperative-in-passive + chooser-entity ref`
|
||||
- Files: validate.ts + test
|
||||
|
||||
- [ ] 15. Deferred trigger queue + cascade depth guard
|
||||
- [x] 15. Deferred trigger queue + cascade depth guard
|
||||
|
||||
**What to do**:
|
||||
- Edit `packages/chess/src/modifiers/triggers.ts`: add a queue `pendingTriggers: Array<{ kind: TriggerName; pieceId: EntityId; payload: unknown }>` to `PrimitiveApplyContext`
|
||||
|
|
@ -975,7 +975,7 @@ Max Concurrent: 8 (Waves 5+6+7+9 overlap)
|
|||
- Message: `feat(chess): deferred trigger queue + cascade depth guard`
|
||||
- Files: triggers.ts + test
|
||||
|
||||
- [ ] 16. on-rule-activated trigger dispatch
|
||||
- [x] 16. on-rule-activated trigger dispatch
|
||||
|
||||
**What to do**:
|
||||
- Create `packages/chess/src/modifiers/primitives/on-rule-activated.ts` (mirror on-capture.ts shape ~75 lines): kind `"on-rule-activated"`, label `"On Rule Activated"`, seedsAttrs `["OnRuleActivatedHooks"]`, paramsSchema `z.object({ primitives: z.array(NodeSchema) })`
|
||||
|
|
@ -1019,7 +1019,7 @@ Max Concurrent: 8 (Waves 5+6+7+9 overlap)
|
|||
- Message: `feat(chess): on-rule-activated trigger`
|
||||
- Files: new primitive .ts + test, triggers.ts, schema.ts, apply.ts, types.ts (PrimitiveKind union), index.ts
|
||||
|
||||
- [ ] 17. on-rule-expire trigger + per-modifier countdown
|
||||
- [x] 17. on-rule-expire trigger + per-modifier countdown
|
||||
|
||||
**What to do**:
|
||||
- Create `packages/chess/src/modifiers/primitives/on-rule-expire.ts` (mirror T16): kind `"on-rule-expire"`, paramsSchema `z.object({ countMoves: z.number().int().positive(); primitives: z.array(NodeSchema) })`
|
||||
|
|
@ -1057,7 +1057,7 @@ Max Concurrent: 8 (Waves 5+6+7+9 overlap)
|
|||
**Commit**: YES
|
||||
- Message: `feat(chess): on-rule-expire trigger + countdown`
|
||||
|
||||
- [ ] 18. on-piece-entered-marker trigger + marker priority resolver
|
||||
- [x] 18. on-piece-entered-marker trigger + marker priority resolver
|
||||
|
||||
**What to do**:
|
||||
- Create `packages/chess/src/modifiers/primitives/on-piece-entered-marker.ts`: kind `"on-piece-entered-marker"`, paramsSchema `z.object({ markerKind: z.enum([...]); primitives: z.array(NodeSchema) })`
|
||||
|
|
@ -1097,7 +1097,7 @@ Max Concurrent: 8 (Waves 5+6+7+9 overlap)
|
|||
**Commit**: YES
|
||||
- Message: `feat(chess): on-piece-entered-marker trigger`
|
||||
|
||||
- [ ] 19. on-marker-expire trigger + lifetime decrementer
|
||||
- [x] 19. on-marker-expire trigger + lifetime decrementer
|
||||
|
||||
**What to do**:
|
||||
- Create `packages/chess/src/modifiers/primitives/on-marker-expire.ts`: kind `"on-marker-expire"`, paramsSchema `z.object({ markerKind: z.enum([...]); primitives: z.array(NodeSchema) })`
|
||||
|
|
@ -1127,7 +1127,7 @@ Max Concurrent: 8 (Waves 5+6+7+9 overlap)
|
|||
**Commit**: YES
|
||||
- Message: `feat(chess): on-marker-expire trigger + lifetime decrementer`
|
||||
|
||||
- [ ] 20. Move-gen suppressTriggers flag wired through registry
|
||||
- [x] 20. Move-gen suppressTriggers flag wired through registry
|
||||
|
||||
**What to do**:
|
||||
- Edit `packages/chess/src/presets/registry.ts`: extend `getLegalMoveModifiers` and movement-related hooks to accept `opts: { suppressTriggers: boolean }` parameter
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue