docs(tasks): backlog index + mark 055 done + rewrite 008 (Playwright suite)#96
Merged
Conversation
…-suite brief - Rename 055-history-asset-pipeline.md -> _DONE (the offline history-asset pipeline shipped; matches the filename-suffix done convention). - Rewrite the badly-stale 008 (its "current state" still claimed 41 files / 220 tests / ~72% coverage from the project's infancy). The unit suite + coverage are long done and rebuilt into the modular per-module architecture; 008 is now ONLY the Playwright integration suite, written for a next session with full context: the current test/CI architecture, the app's boot/serve/auto-load mechanics, a determinism test-hook design (step-ticks over wall-clock), scenario-save fixtures + a generator script, the HUD + canvas baseline suites and scenario tests the maintainer specified, browser-coverage wiring for the scene/HUD gap the jest gate leaves, and an async NON-BLOCKING CI job (never in ci-success's needs). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Add docs/tasks/README.md — the index CLAUDE.md §5.1 refers to but which never existed: a status table of all 79 tasks (76 done, 007 superseded, 008 + 012 open), a short arc overview, and the done/superseded filename conventions. Bundled with marking 055 done and the 008 integration-suite rewrite.
The JSON-array emission piped SELECTED through `grep -v '^$'`, which exits 1 when SELECTED is empty (a PR that touches no module and isn't "shared" — e.g. this docs/tasks change). Under `set -o pipefail` that failed the whole `changes` step, cascading into ci-success. Replace the grep with `jq 'select(length > 0)'` + `jq -cs 'unique'`, which yields `[]` on empty input without a nonzero exit. (Surfaced by PR #96; the bug shipped to main with the reorg merge.)
The `changes` job's "shared → run every module" net included `scripts/` and `.github/workflows/`, so a PR touching only CI config or docs (like this one) ran the full 13-module test matrix for no reason — those files can't change a module test's OUTCOME. Narrow SHARED_RE to things that actually affect test results: shared source (types/util/json, the execution spine, GameManager/City/Clock) and the test toolchain config (package(-lock)/tsconfig/jest.config/babel). Now a module runs iff its own src/app/game/<m>/ or test/<m>/ changed, or genuinely-shared code did. A docs/CI-config PR runs NO module tests.
Switch the `test` job from a dynamic matrix (fromJSON(modules) — only creates jobs for affected modules, so unaffected ones vanish from the checks list) to a STATIC matrix of all 13 modules, each gated by `if: contains(fromJSON(needs.changes.outputs.modules), matrix.module)`. Affected modules run; the rest show as skipped. A docs/CI-config PR now shows all 13 test (<module>) checks as skipped rather than none at all.
…sable workflow) The previous attempt (static matrix + `if: contains(..., matrix.module)`) is an INVALID workflow — `matrix` isn't available in a job-level `if`. To get 13 individually-skippable checks, use one caller job per module whose `if` uses a LITERAL module name (only needs/fromJSON/contains — valid in a job `if`), delegating the shared steps to a new reusable workflow (.github/workflows/test-module.yml). Affected modules run; the rest show SKIPPED. Rewire `coverage` + `ci-success` needs to the 13 test-<module> jobs; ci-success now checks `join(needs.*.result, ' ')` so it scales without listing each.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Three bundled docs-only changes to
docs/tasks/(the reorg PR #93 merged without my last docs commit, so main still has the old 055 name + the stale 008 — this PR lands them):1. New backlog index —
docs/tasks/README.mdThe index
CLAUDE.md§5.1 refers to but which never existed: a status table of all 79 tasks (76 ✅ done, 007 ⛔ superseded, 008 and 012 🚧 open), a short arc overview (foundations / economy / enrichment / history-asset / progression), and the done/superseded filename conventions. Keep it in sync when a task's status changes.2. Mark 055 done
055-history-asset-pipeline.md→…_DONE.md(the offline history-asset pipeline shipped; matches the_DONEfilename convention).3. Rewrite 008 as the Playwright integration-suite brief
The old 008 was badly stale — its "current state" still claimed 41 files / 220 tests / ~72% coverage from the project's infancy. The unit suite + coverage are long done and were rebuilt into the modular per-module architecture (now on main). The rewrite scopes 008 to only the Playwright browser-level suite and gives a next session full context: the current test/CI architecture and what the jest gate deliberately leaves uncovered (scene/HUD), the app's boot/serve/auto-load mechanics, a determinism test-hook design (
stepTicksover wall-clock), scenario-save fixtures + a generator script, the HUD + canvas baseline suites and scenario tests, browser-coverage wiring for the scene/HUD gap, and an async, non-blocking CI job (never inci-success's needs).Docs-only; CI's markdownlint ignores
docs/tasks/.🤖 Generated with Claude Code