Skip to content

docs(tasks): backlog index + mark 055 done + rewrite 008 (Playwright suite)#96

Merged
Maudfer merged 6 commits into
mainfrom
docs/tasks-index
Jul 12, 2026
Merged

docs(tasks): backlog index + mark 055 done + rewrite 008 (Playwright suite)#96
Maudfer merged 6 commits into
mainfrom
docs/tasks-index

Conversation

@Maudfer

@Maudfer Maudfer commented Jul 12, 2026

Copy link
Copy Markdown
Owner

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.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 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 _DONE filename 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 (stepTicks over 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 in ci-success's needs).

Docs-only; CI's markdownlint ignores docs/tasks/.

🤖 Generated with Claude Code

Maudfer and others added 2 commits July 11, 2026 23:36
…-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.
@Maudfer Maudfer self-assigned this Jul 12, 2026
@Maudfer Maudfer added the documentation Improvements or additions to documentation label Jul 12, 2026
Maudfer added 4 commits July 11, 2026 23:41
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.
@Maudfer Maudfer merged commit dd0dcf6 into main Jul 12, 2026
21 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant