diff --git a/docs/DEVELOPMENT.md b/docs/DEVELOPMENT.md index 9198982..0fc712e 100644 --- a/docs/DEVELOPMENT.md +++ b/docs/DEVELOPMENT.md @@ -205,6 +205,21 @@ Every PR to `main` runs through `.gitea/workflows/ci.yml`. A `changes` path-filt All five jobs must pass (or be legitimately skipped) before a PR can merge. See [docs/TESTING.md](TESTING.md) for test suite details. +### CI dependency caches + +CI uses two persistent cache paths inside job containers: + +| Path | Content | +| ---------------- | ----------------------------------------------------------------------- | +| `/pnpm-store` | pnpm content-addressable store (`--store-dir /pnpm-store`) | +| `/ms-playwright` | Playwright browser binaries (`PLAYWRIGHT_BROWSERS_PATH=/ms-playwright`) | + +These paths must be bind-mounted from host directories in the act_runner `config.yaml` +`container.options` field — that is a **host-side change, not tracked in this repo**. Without the +mounts, CI still works correctly — pnpm creates an ephemeral store at `/pnpm-store` inside the +container and Playwright downloads browsers fresh each run. The mounts only eliminate repeat +downloads across runs. + ## Drizzle Migration Workflow Schema changes follow a strict two-step process. **`drizzle-kit push` is not available** — it has been removed from the scripts because it emits a false destructive diff (table truncation) on populated MariaDB databases.