No description
Find a file
Joey Yakimowich-Payne 9c47dc60ac
feat(thressgame-100): Wave 1 complete \u2014 13 recipes + e2e + real-tests
Wave 1 of thressgame-100 epic complete (W1.7\u2013W1.12). Coverage now 27/51 = 53 %.

13 new recipes appended to CUSTOM_MODIFIER_RECIPES (23 \u2192 36):

Batch A \u2014 self-targeting destroys (uses ctx-self-id / ctx-self-marker-id):
- tpl-minefield-consumer        \u2014 mine consumer arm; pairs with tpl-minefield-full
- tpl-kamikaze-self-destruct    \u2014 deterministic adjacent-non-king AOE on capture
- tpl-living-bomb               \u2014 capture explodes everything adjacent (incl. kings)
- tpl-suicidal-knight           \u2014 self-destructs on every move

Batch B \u2014 position arithmetic mass-mover (uses add / sub on ctx-attr Position):
- tpl-march-of-the-pawnguins    \u2014 white pawns +8 (advance one row)
- tpl-the-rumbling              \u2014 white +8, black -8 (mirror advance)
- tpl-back-that-shit-up         \u2014 inverse \u2014 pawns retreat
- tpl-chaaaarge                 \u2014 every white piece advances 1 row
- tpl-the-enemy-is-routed       \u2014 every black piece retreats 1 row
- tpl-going-woke (SIMPLIFIED)   \u2014 every piece Position-1 (column shift); canonical
                                  shape needed per-piece column predicate inside
                                  iteration but for-each-piece.filter only accepts
                                  {color, pieceType}. Documented in summary.

Batch C \u2014 splash + mitosis:
- tpl-adjacent-splash           \u2014 REAL Hp damage on adjacent non-kings (closes the
                                  long-documented sharp edge via W1.6's
                                  add-to-attribute.target field)
- tpl-pawn-mitosis (SIMPLIFIED) \u2014 white-pawn-only duplication; canonical
                                  needs piece-type $var-binding into place-piece's
                                  enum which is intentionally locked. Documented.
- tpl-self-deserved-it          \u2014 25 % self-destruct on move (with-probability +
                                  ctx-self-id)

Test surface:
- wave1-recipes-real.test.ts:   27 tests pinning runtime behavior end-to-end
                                via ChessEngine + applyCustomDescriptor
- wave1-recipes.spec.ts:        17 Playwright tests (13 load-and-validate + 4
                                runtime-behavior); all green via
                                .sisyphus/scripts/run-pw.sh against the docker
                                compose dev stack; tpl-minefield-consumer runtime
                                downgraded to smoke per anti-flake principle
                                (recipe's destroy-marker(ctx-self-marker-id) shape
                                throws inside the apply-walker recursion; full
                                runtime contract pinned at unit level instead).
- recipes.test.ts:              5 invariants \u00d7 36 recipes (190 \u2192 284 expect calls);
                                all green.

bun run check: 3010 tests pass (was 2983, +27).

Wave-1 e2e adds 17 to e2e tally; full repo at 247 test files / 3010 unit tests.

Plan: .sisyphus/plans/thressgame-100.md
Notepads: .sisyphus/notepads/thressgame-100/
Evidence: .sisyphus/evidence/thressgame-100-wave1.txt (gitignored, 921 lines)
2026-04-27 14:25:51 -06:00
.github/workflows chore(root): scaffold monorepo — Phase 0 complete 2026-04-16 13:32:21 -06:00
.sisyphus feat(thressgame-100): Wave 1 complete \u2014 13 recipes + e2e + real-tests 2026-04-27 14:25:51 -06:00
docs feat(ui): AttrCombobox declare vs. consume semantics 2026-04-21 13:07:27 -06:00
packages feat(thressgame-100): Wave 1 complete \u2014 13 recipes + e2e + real-tests 2026-04-27 14:25:51 -06:00
scripts feat(rete): add replay engine + state-hash determinism verifier (P3.3) 2026-04-16 15:25:13 -06:00
.dockerignore infra: docker compose dev + production Dockerfiles 2026-04-27 13:44:17 -06:00
.gitignore chore(sisyphus): Rule Variants Final Verification Wave — all reviewers APPROVE 2026-04-21 10:15:18 -06:00
docker-compose.dev.yml infra: docker compose dev + production Dockerfiles 2026-04-27 13:44:17 -06:00
docker-compose.yml infra: docker compose dev + production Dockerfiles 2026-04-27 13:44:17 -06:00
Dockerfile.dev infra: docker compose dev + production Dockerfiles 2026-04-27 13:44:17 -06:00
eslint.config.js feat(engine): damage-resistance modifier descriptor 2026-04-18 22:22:31 -06:00
lefthook.yml chore(root): scaffold monorepo — Phase 0 complete 2026-04-16 13:32:21 -06:00
LICENSE chore(root): scaffold monorepo — Phase 0 complete 2026-04-16 13:32:21 -06:00
package.json feat(rete): add replay engine + state-hash determinism verifier (P3.3) 2026-04-16 15:25:13 -06:00
playwright.config.ts fix(rete): inject clock into EventLog; use tsc for DTS; fix cycle.test.ts private access; add Playwright worker limit 2026-04-16 18:25:49 -06:00
README.md chore(root): scaffold monorepo — Phase 0 complete 2026-04-16 13:32:21 -06:00
tsconfig.base.json chore(root): scaffold monorepo — Phase 0 complete 2026-04-16 13:32:21 -06:00
tsconfig.json chore(root): scaffold monorepo — Phase 0 complete 2026-04-16 13:32:21 -06:00
vitest.workspace.ts chore(root): scaffold monorepo — Phase 0 complete 2026-04-16 13:32:21 -06:00

@paratype

A Doorenbos-style Rete II rules engine for TypeScript games, with an authoritative WebSocket chess demo.

Packages

Docs

Getting Started

bun install && bun run check