Repository: JesusFilm/core
Pull request #5922: ci: update workflows to use stickydisk for caching node modules and n…
Author: login: mikeallisonJS
Created: 2025-03-28T19:41:47Z | Merged: 2025-03-31T18:50:12Z

…pm cache

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit

- **Chores**
	- Revamped the CI/CD caching strategy to streamline dependency management and reduce build times.
	- Separated caches for package management and build outputs to improve efficiency.
	- Introduced new caching steps for NPM cache, node_modules, NX cache, and next cache across various workflows.
	- Updated dependency installation commands in testing workflows for smoother execution.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->


Diff:
diff --git a/.github/workflows/api-deploy-worker.yml b/.github/workflows/api-deploy-worker.yml
index cf49d1e1556..b12ba7fd9f2 100644
--- a/.github/workflows/api-deploy-worker.yml
+++ b/.github/workflows/api-deploy-worker.yml
@@ -52,13 +52,21 @@ jobs:
           node-version: ${{ matrix.node-version }}
           cache: 'npm'
 
-      - name: Cache Node Modules
-        id: cache-node-modules
-        uses: useblacksmith/cache@v5
+      - name: Mount NPM Cache
+        uses: useblacksmith/stickydisk@v1
         with:
-          path: node_modules
-          key: node-modules-${{ matrix.node-version }}-${{ hashFiles('package-lock.json') }}
-          restore-keys: node-modules-${{ matrix.node-version }}-
+          key: ${{ github.repository }}-npm-cache
+          path: ~/.npm
+      - name: Mount node_modules
+        uses: useblacksmith/stickydisk@v1
+        with:
+          key: ${{ github.repository }}-node-modules
+          path: ./node_modules
+      - name: Mount nx cache
+        uses: useblacksmith/stickydisk@v1
+        with:
+          key: ${{ github.repository }}-nx-cache
+          path: ./.nx/cache
 
       - name: NPM Install
         run: npm install --silent
diff --git a/.github/workflows/api-gateway-prod-worker.yml b/.github/workflows/api-gateway-prod-worker.yml
index fc843c56cb5..784b56eff59 100644
--- a/.github/workflows/api-gateway-prod-worker.yml
+++ b/.github/workflows/api-gateway-prod-worker.yml
@@ -30,13 +30,21 @@ jobs:
           node-version: ${{ matrix.node-version }}
           cache: 'npm'
 
-      - name: Cache Node Modules
-        id: cache-node-modules
-        uses: useblacksmith/cache@v5
+      - name: Mount NPM Cache
+        uses: useblacksmith/stickydisk@v1
         with:
-          path: node_modules
-          key: node-modules-${{ matrix.node-version }}-${{ hashFiles('package-lock.json') }}
-          restore-keys: node-modules-${{ matrix.node-version }}-
+          key: ${{ github.repository }}-npm-cache
+          path: ~/.npm
+      - name: Mount node_modules
+        uses: useblacksmith/stickydisk@v1
+        with:
+          key: ${{ github.repository }}-node-modules
+          path: ./node_modules
+      - name: Mount nx cache
+        uses: useblacksmith/stickydisk@v1
+        with:
+          key: ${{ github.repository }}-nx-cache
+          path: ./.nx/cache
 
       - name: nx Install
         run: npm install -g nx --silent
diff --git a/.github/workflows/api-gateway-stage-worker.yml b/.github/workflows/api-gateway-stage-worker.yml
index 105e22e707c..eeb9674fe8f 100644
--- a/.github/workflows/api-gateway-stage-worker.yml
+++ b/.github/workflows/api-gateway-stage-worker.yml
@@ -30,13 +30,21 @@ jobs:
           node-version: ${{ matrix.node-version }}
           cache: 'npm'
 
-      - name: Cache Node Modules
-        id: cache-node-modules
-        uses: useblacksmith/cache@v5
+      - name: Mount NPM Cache
+        uses: useblacksmith/stickydisk@v1
         with:
-          path: node_modules
-          key: node-modules-${{ matrix.node-version }}-${{ hashFiles('package-lock.json') }}
-          restore-keys: node-modules-${{ matrix.node-version }}-
+          key: ${{ github.repository }}-npm-cache
+          path: ~/.npm
+      - name: Mount node_modules
+        uses: useblacksmith/stickydisk@v1
+        with:
+          key: ${{ github.repository }}-node-modules
+          path: ./node_modules
+      - name: Mount nx cache
+        uses: useblacksmith/stickydisk@v1
+        with:
+          key: ${{ github.repository }}-nx-cache
+          path: ./.nx/cache
 
       - name: nx Install
         run: npm install -g nx --silent
diff --git a/.github/workflows/app-deploy.yml b/.github/workflows/app-deploy.yml
index 1830092a303..799c388edb1 100644
--- a/.github/workflows/app-deploy.yml
+++ b/.github/workflows/app-deploy.yml
@@ -25,13 +25,21 @@ jobs:
         with:
           node-version: ${{ matrix.node-version }}
           cache: 'npm'
-      - name: Cache Node Modules
-        id: cache-node-modules
-        uses: useblacksmith/cache@v5
+      - name: Mount NPM Cache
+        uses: useblacksmith/stickydisk@v1
         with:
-          path: node_modules
-          key: node-modules-${{ matrix.node-version }}-${{ hashFiles('package-lock.json') }}
-          restore-keys: node-modules-${{ matrix.node-version }}-
+          key: ${{ github.repository }}-npm-cache
+          path: ~/.npm
+      - name: Mount node_modules
+        uses: useblacksmith/stickydisk@v1
+        with:
+          key: ${{ github.repository }}-node-modules
+          path: ./node_modules
+      - name: Mount nx cache
+        uses: useblacksmith/stickydisk@v1
+        with:
+          key: ${{ github.repository }}-nx-cache
+          path: ./.nx/cache
       - name: NPM Install
         run: npm install --silent
       - uses: nrwl/nx-set-shas@v4
@@ -90,13 +98,31 @@ jobs:
         with:
           node-version: ${{ matrix.node-version }}
           cache: 'npm'
-      - name: Cache Node Modules
-        id: cache-node-modules
-        uses: useblacksmith/cache@v5
+      - name: Mount NPM Cache
+        uses: useblacksmith/stickydisk@v1
+        with:
+          key: ${{ github.repository }}-npm-cache
+          path: ~/.npm
+      - name: Mount node_modules
+        uses: useblacksmith/stickydisk@v1
+        with:
+          key: ${{ github.repository }}-node-modules
+          path: ./node_modules
+      - name: Mount nx cache
+        uses: useblacksmith/stickydisk@v1
         with:
-          path: node_modules
-          key: node-modules-${{ matrix.node-version }}-${{ hashFiles('package-lock.json') }}
-          restore-keys: node-modules-${{ matrix.node-version }}-
+          key: ${{ github.repository }}-nx-cache
+          path: ./.nx/cache
+      - name: Mount nx cache
+        uses: useblacksmith/stickydisk@v1
+        with:
+          key: ${{ github.repository }}-nx-cache
+          path: ./.nx/cache
+      - name: Mount playwright cache
+        uses: useblacksmith/stickydisk@v1
+        with:
+          key: ${{ github.repository }}-playwright-cache
+          path: ~/.cache/ms-playwright
       - name: NPM Install
         run: npm install --silent
       - uses: nrwl/nx-set-shas@v4
@@ -158,21 +184,7 @@ jobs:
           state: ${{ job.status }}
           environment-url: ${{ steps.deployment-url.outputs.deployment-url }}
           deployment-id: ${{ steps.deployment.outputs.deployment_id }}
-      - name: Store Playwright's Version
-        run: |
-          PLAYWRIGHT_VERSION=$(npm run playwright -v)
-          echo "Playwright's Version: $PLAYWRIGHT_VERSION"
-          echo "PLAYWRIGHT_VERSION=$PLAYWRIGHT_VERSION" >> $GITHUB_ENV
-      - name: Cache Playwright Browsers for Playwright's Version
-        id: cache-playwright-browsers
-        uses: useblacksmith/cache@v5
-        with:
-          path: ~/.cache/ms-playwright
-          key: playwright-browsers-${{ env.PLAYWRIGHT_VERSION }}
       - run: npx playwright install --with-deps
-        if: steps.cache-playwright-browsers.outputs.cache-hit != 'true'
-      - run: npx playwright install-deps
-        if: steps.cache-playwright-browsers.outputs.cache-hit == 'true'
       - name: Run Playwright tests
         run: npx nx run ${{ matrix.app }}-e2e:e2e
         env:
@@ -245,13 +257,26 @@ jobs:
         with:
           node-version: ${{ matrix.node-version }}
           cache: 'npm'
-      - name: Cache Node Modules
-        id: cache-node-modules
-        uses: useblacksmith/cache@v5
+      - name: Mount NPM Cache
+        uses: useblacksmith/stickydisk@v1
+        with:
+          key: ${{ github.repository }}-npm-cache
+          path: ~/.npm
+      - name: Mount node_modules
+        uses: useblacksmith/stickydisk@v1
+        with:
+          key: ${{ github.repository }}-node-modules
+          path: ./node_modules
+      - name: Mount nx cache
+        uses: useblacksmith/stickydisk@v1
+        with:
+          key: ${{ github.repository }}-nx-cache
+          path: ./.nx/cache
+      - name: Mount next cache
+        uses: useblacksmith/stickydisk@v1
         with:
-          path: node_modules
-          key: node-modules-${{ matrix.node-version }}-${{ hashFiles('package-lock.json') }}
-          restore-keys: node-modules-${{ matrix.node-version }}-
+          key: ${{ github.repository }}-${{ matrix.app }}-next-cache
+          path: ./apps/${{ matrix.app }}/.next
       - name: NPM Install
         run: npm install --silent
       - uses: nrwl/nx-set-shas@v4
diff --git a/.github/workflows/autofix.ci.yml b/.github/workflows/autofix.ci.yml
index 9a84145621b..2fb4c7739e3 100644
--- a/.github/workflows/autofix.ci.yml
+++ b/.github/workflows/autofix.ci.yml
@@ -36,19 +36,21 @@ jobs:
         with:
           node-version: ${{ matrix.node-version }}
           cache: 'npm'
-      - name: Cache Node Modules
-        id: cache-node-modules
-        uses: useblacksmith/cache@v5
+      - name: Mount NPM Cache
+        uses: useblacksmith/stickydisk@v1
         with:
-          path: node_modules
-          key: node-modules-${{ matrix.node-version }}-${{ hashFiles('package-lock.json') }}
-          restore-keys: node-modules-${{ matrix.node-version }}-
-      - name: Setup Cache
-        uses: useblacksmith/cache@v5
+          key: ${{ github.repository }}-npm-cache
+          path: ~/.npm
+      - name: Mount node_modules
+        uses: useblacksmith/stickydisk@v1
         with:
-          path: .cache
-          key: lint-cache-${{ matrix.node-version }}-${{ hashFiles('**/.eslintrc.json', '**/tsconfig.json') }}
-          restore-keys: lint-cache-${{ matrix.node-version }}-
+          key: ${{ github.repository }}-node-modules
+          path: ./node_modules
+      - name: Mount nx cache
+        uses: useblacksmith/stickydisk@v1
+        with:
+          key: ${{ github.repository }}-nx-cache
+          path: ./.nx/cache
       - name: NPM Install
         run: npm install --silent
       - name: generate prisma imports
@@ -67,7 +69,7 @@ jobs:
           targets: codegen
           all: true
       - name: Run Prettier
-        run: npm run prettier:fix
+        run: npm run prettier:fix --check '!./.nx'
       - name: Run ESLint
         uses: mansagroup/nrwl-nx-action@v3
         with:
diff --git a/.github/workflows/danger.yml b/.github/workflows/danger.yml
index f757cf7c515..d0464dd4e36 100644
--- a/.github/workflows/danger.yml
+++ b/.github/workflows/danger.yml
@@ -31,13 +31,16 @@ jobs:
         with:
           node-version: ${{ matrix.node-version }}
           cache: 'npm'
-      - name: Cache Node Modules
-        id: cache-node-modules
-        uses: useblacksmith/cache@v5
+      - name: Mount NPM Cache
+        uses: useblacksmith/stickydisk@v1
         with:
-          path: node_modules
-          key: node-modules-${{ matrix.node-version }}-${{ hashFiles('package-lock.json') }}
-          restore-keys: node-modules-${{ matrix.node-version }}-
+          key: ${{ github.repository }}-npm-cache
+          path: ~/.npm
+      - name: Mount node_modules
+        uses: useblacksmith/stickydisk@v1
+        with:
+          key: ${{ github.repository }}-node-modules
+          path: ./node_modules
       - name: NPM Install
         run: npm install --silent
       - name: Danger JS
diff --git a/.github/workflows/e2e-tests.yml b/.github/workflows/e2e-tests.yml
index b62be289bd0..6e58dfd46aa 100644
--- a/.github/workflows/e2e-tests.yml
+++ b/.github/workflows/e2e-tests.yml
@@ -33,8 +33,28 @@ jobs:
       - uses: useblacksmith/setup-node@v5
         with:
           node-version: 22
+      - name: Mount NPM Cache
+        uses: useblacksmith/stickydisk@v1
+        with:
+          key: ${{ github.repository }}-npm-cache
+          path: ~/.npm
+      - name: Mount node_modules
+        uses: useblacksmith/stickydisk@v1
+        with:
+          key: ${{ github.repository }}-node-modules
+          path: ./node_modules
+      - name: Mount nx cache
+        uses: useblacksmith/stickydisk@v1
+        with:
+          key: ${{ github.repository }}-nx-cache
+          path: ./.nx/cache
+      - name: Mount playwright cache
+        uses: useblacksmith/stickydisk@v1
+        with:
+          key: ${{ github.repository }}-playwright-cache
+          path: ~/.cache/ms-playwright
       - name: Install dependencies
-        run: npm ci
+        run: npm install --silent
       - name: Install Playwright Browsers
         run: npx playwright install --with-deps
       - name: Run Playwright tests
diff --git a/.github/workflows/ecs-frontend-deploy-prod-worker.yml b/.github/workflows/ecs-frontend-deploy-prod-worker.yml
index 55a46661e86..45bd0bf2241 100644
--- a/.github/workflows/ecs-frontend-deploy-prod-worker.yml
+++ b/.github/workflows/ecs-frontend-deploy-prod-worker.yml
@@ -73,14 +73,26 @@ jobs:
           node-version: ${{ matrix.node-version }}
           cache: 'npm'
 
-      - name: Cache Node Modules
-        id: cache-node-modules
-        uses: useblacksmith/cache@v5
+      - name: Mount NPM Cache
+        uses: useblacksmith/stickydisk@v1
         with:
-          path: node_modules
-          key: node-modules-${{ matrix.node-version }}-${{ hashFiles('package-lock.json') }}
-          restore-keys: node-modules-${{ matrix.node-version }}-
-
+          key: ${{ github.repository }}-npm-cache
+          path: ~/.npm
+      - name: Mount node_modules
+        uses: useblacksmith/stickydisk@v1
+        with:
+          key: ${{ github.repository }}-node-modules
+          path: ./node_modules
+      - name: Mount nx cache
+        uses: useblacksmith/stickydisk@v1
+        with:
+          key: ${{ github.repository }}-nx-cache
+          path: ./.nx/cache
+      - name: Mount next cache
+        uses: useblacksmith/stickydisk@v1
+        with:
+          key: ${{ github.repository }}-${{ inputs.name }}-next-cache
+          path: ./apps/${{ inputs.name }}/.next
       - name: NPM Install
         run: npm install --silent
 
diff --git a/.github/workflows/ecs-frontend-deploy-stage-worker.yml b/.github/workflows/ecs-frontend-deploy-stage-worker.yml
index abb788a1ed9..ceffd87e28f 100644
--- a/.github/workflows/ecs-frontend-deploy-stage-worker.yml
+++ b/.github/workflows/ecs-frontend-deploy-stage-worker.yml
@@ -73,14 +73,26 @@ jobs:
           node-version: ${{ matrix.node-version }}
           cache: 'npm'
 
-      - name: Cache Node Modules
-        id: cache-node-modules
-        uses: useblacksmith/cache@v5
+      - name: Mount NPM Cache
+        uses: useblacksmith/stickydisk@v1
         with:
-          path: node_modules
-          key: node-modules-${{ matrix.node-version }}-${{ hashFiles('package-lock.json') }}
-          restore-keys: node-modules-${{ matrix.node-version }}-
-
+          key: ${{ github.repository }}-npm-cache
+          path: ~/.npm
+      - name: Mount node_modules
+        uses: useblacksmith/stickydisk@v1
+        with:
+          key: ${{ github.repository }}-node-modules
+          path: ./node_modules
+      - name: Mount nx cache
+        uses: useblacksmith/stickydisk@v1
+        with:
+          key: ${{ github.repository }}-nx-cache
+          path: ./.nx/cache
+      - name: Mount next cache
+        uses: useblacksmith/stickydisk@v1
+        with:
+          key: ${{ github.repository }}-${{ inputs.name }}-next-cache
+          path: ./apps/${{ inputs.name }}/.next
       - name: NPM Install
         run: npm install --silent
 
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 9a125aaf871..90daafb3009 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -38,13 +38,21 @@ jobs:
         with:
           node-version: ${{ matrix.node-version }}
           cache: 'npm'
-      - name: Cache Node Modules
-        id: cache-node-modules
-        uses: useblacksmith/cache@v5
+      - name: Mount NPM Cache
+        uses: useblacksmith/stickydisk@v1
         with:
-          path: node_modules
-          key: node-modules-${{ matrix.node-version }}-${{ hashFiles('package-lock.json') }}
-          restore-keys: node-modules-${{ matrix.node-version }}-
+          key: ${{ github.repository }}-npm-cache
+          path: ~/.npm
+      - name: Mount node_modules
+        uses: useblacksmith/stickydisk@v1
+        with:
+          key: ${{ github.repository }}-node-modules
+          path: ./node_modules
+      - name: Mount nx cache
+        uses: useblacksmith/stickydisk@v1
+        with:
+          key: ${{ github.repository }}-nx-cache
+          path: ./.nx/cache
       - name: NPM Install
         run: npm install --silent
       - name: generate prisma imports
@@ -113,13 +121,21 @@ jobs:
         with:
           node-version: ${{ matrix.node-version }}
           cache: 'npm'
-      - name: Cache Node Modules
-        id: cache-node-modules
-        uses: useblacksmith/cache@v5
+      - name: Mount NPM Cache
+        uses: useblacksmith/stickydisk@v1
+        with:
+          key: ${{ github.repository }}-npm-cache
+          path: ~/.npm
+      - name: Mount node_modules
+        uses: useblacksmith/stickydisk@v1
+        with:
+          key: ${{ github.repository }}-node-modules
+          path: ./node_modules
+      - name: Mount nx cache
+        uses: useblacksmith/stickydisk@v1
         with:
-          path: node_modules
-          key: node-modules-${{ matrix.node-version }}-${{ hashFiles('package-lock.json') }}
-          restore-keys: node-modules-${{ matrix.node-version }}-
+          key: ${{ github.repository }}-nx-cache
+          path: ./.nx/cache
       - name: NPM Install
         run: npm install --silent
       - name: generate prisma imports
diff --git a/.github/workflows/task-deploy-worker.yml b/.github/workflows/task-deploy-worker.yml
index fc9c32b114f..152ab4f204a 100644
--- a/.github/workflows/task-deploy-worker.yml
+++ b/.github/workflows/task-deploy-worker.yml
@@ -44,13 +44,21 @@ jobs:
           node-version: ${{ matrix.node-version }}
           cache: 'npm'
 
-      - name: Cache Node Modules
-        id: cache-node-modules
-        uses: useblacksmith/cache@v5
+      - name: Mount NPM Cache
+        uses: useblacksmith/stickydisk@v1
         with:
-          path: node_modules
-          key: node-modules-${{ matrix.node-version }}-${{ hashFiles('package-lock.json') }}
-          restore-keys: node-modules-${{ matrix.node-version }}-
+          key: ${{ github.repository }}-npm-cache
+          path: ~/.npm
+      - name: Mount node_modules
+        uses: useblacksmith/stickydisk@v1
+        with:
+          key: ${{ github.repository }}-node-modules
+          path: ./node_modules
+      - name: Mount nx cache
+        uses: useblacksmith/stickydisk@v1
+        with:
+          key: ${{ github.repository }}-nx-cache
+          path: ./.nx/cache
 
       - name: NPM Install
         run: npm install --silent
diff --git a/.github/workflows/visual-test.yml b/.github/workflows/visual-test.yml
index dc1b0333a6a..630ecb9344a 100644
--- a/.github/workflows/visual-test.yml
+++ b/.github/workflows/visual-test.yml
@@ -26,13 +26,21 @@ jobs:
         with:
           node-version: ${{ matrix.node-version }}
           cache: 'npm'
-      - name: Cache Node Modules
-        id: cache-node-modules
-        uses: useblacksmith/cache@v5
+      - name: Mount NPM Cache
+        uses: useblacksmith/stickydisk@v1
         with:
-          path: node_modules
-          key: node-modules-${{ matrix.node-version }}-${{ hashFiles('package-lock.json') }}
-          restore-keys: node-modules-${{ matrix.node-version }}-
+          key: ${{ github.repository }}-npm-cache
+          path: ~/.npm
+      - name: Mount node_modules
+        uses: useblacksmith/stickydisk@v1
+        with:
+          key: ${{ github.repository }}-node-modules
+          path: ./node_modules
+      - name: Mount nx cache
+        uses: useblacksmith/stickydisk@v1
+        with:
+          key: ${{ github.repository }}-nx-cache
+          path: ./.nx/cache
       - name: NPM Install
         run: npm install --silent
       - uses: nrwl/nx-set-shas@v4
diff --git a/.github/workflows/worker-deploy.yml b/.github/workflows/worker-deploy.yml
index 1428d822843..7561f040c82 100644
--- a/.github/workflows/worker-deploy.yml
+++ b/.github/workflows/worker-deploy.yml
@@ -24,13 +24,21 @@ jobs:
         with:
           node-version: ${{ matrix.node-version }}
           cache: 'npm'
-      - name: Cache Node Modules
-        id: cache-node-modules
-        uses: useblacksmith/cache@v5
+      - name: Mount NPM Cache
+        uses: useblacksmith/stickydisk@v1
         with:
-          path: node_modules
-          key: node-modules-${{ matrix.node-version }}-${{ hashFiles('package-lock.json') }}
-          restore-keys: node-modules-${{ matrix.node-version }}-
+          key: ${{ github.repository }}-npm-cache
+          path: ~/.npm
+      - name: Mount node_modules
+        uses: useblacksmith/stickydisk@v1
+        with:
+          key: ${{ github.repository }}-node-modules
+          path: ./node_modules
+      - name: Mount nx cache
+        uses: useblacksmith/stickydisk@v1
+        with:
+          key: ${{ github.repository }}-nx-cache
+          path: ./.nx/cache
       - name: NPM Install
         run: npm install --silent
       - uses: nrwl/nx-set-shas@v4
@@ -62,13 +70,21 @@ jobs:
         with:
           node-version: ${{ matrix.node-version }}
           cache: 'npm'
-      - name: Cache Node Modules
-        id: cache-node-modules
-        uses: useblacksmith/cache@v5
+      - name: Mount NPM Cache
+        uses: useblacksmith/stickydisk@v1
+        with:
+          key: ${{ github.repository }}-npm-cache
+          path: ~/.npm
+      - name: Mount node_modules
+        uses: useblacksmith/stickydisk@v1
         with:
-          path: node_modules
-          key: node-modules-${{ matrix.node-version }}-${{ hashFiles('package-lock.json') }}
-          restore-keys: node-modules-${{ matrix.node-version }}-
+          key: ${{ github.repository }}-node-modules
+          path: ./node_modules
+      - name: Mount nx cache
+        uses: useblacksmith/stickydisk@v1
+        with:
+          key: ${{ github.repository }}-nx-cache
+          path: ./.nx/cache
       - name: NPM Install
         run: npm install --silent
       - uses: nrwl/nx-set-shas@v4
@@ -100,13 +116,21 @@ jobs:
         with:
           node-version: ${{ matrix.node-version }}
           cache: 'npm'
-      - name: Cache Node Modules
-        id: cache-node-modules
-        uses: useblacksmith/cache@v5
+      - name: Mount NPM Cache
+        uses: useblacksmith/stickydisk@v1
+        with:
+          key: ${{ github.repository }}-npm-cache
+          path: ~/.npm
+      - name: Mount node_modules
+        uses: useblacksmith/stickydisk@v1
+        with:
+          key: ${{ github.repository }}-node-modules
+          path: ./node_modules
+      - name: Mount nx cache
+        uses: useblacksmith/stickydisk@v1
         with:
-          path: node_modules
-          key: node-modules-${{ matrix.node-version }}-${{ hashFiles('package-lock.json') }}
-          restore-keys: node-modules-${{ matrix.node-version }}-
+          key: ${{ github.repository }}-nx-cache
+          path: ./.nx/cache
       - name: NPM Install
         run: npm install --silent
       - uses: nrwl/nx-set-shas@v4
diff --git a/.prettierignore b/.prettierignore
index e543337640a..53a4457ec68 100644
--- a/.prettierignore
+++ b/.prettierignore
@@ -9,8 +9,7 @@ schema.graphql
 .prettierignore
 .docusaurus/
 .storybook/static/mockServiceWorker.js
-/.nx/cache
-/.nx/workspace-data
+.nx/
 .next/
 .terraform/
 playwright-report/


Reviews:
user: login: coderabbitai[bot]
body: **Actionable comments posted: 0**

<details>
<summary>🔭 Outside diff range comments (1)</summary><blockquote>

<details>
<summary>.github/workflows/autofix.ci.yml (1)</summary><blockquote>

`52-55`: _💡 Verification agent_

<details>
<summary>❓ Verification inconclusive</summary>

**Resolve hashFiles usage in Setup Cache**

The use of `hashFiles` with multiple arguments  
```yaml
hashFiles('**/.eslintrc.json', '**/tsconfig.json')
```  
is causing the pipeline failure. GitHub Actions may not support multiple arguments in a single `hashFiles` call. You can resolve this by concatenating separate hash values. For example, consider updating the key as follows:

```diff
-          key: lint-cache-${{ matrix.node-version }}-${{ hashFiles('**/.eslintrc.json', '**/tsconfig.json') }}
+          key: lint-cache-${{ matrix.node-version }}-${{ hashFiles('**/.eslintrc.json') }}-${{ hashFiles('**/tsconfig.json') }}
```

This adjustment should generate a composite key that hashes each file group separately and resolves the template error.

---



</details>

**Action Required: Update caching key generation using separate hashFiles calls**

It appears the use of multiple arguments within a single `hashFiles` call  
```yaml
hashFiles('**/.eslintrc.json', '**/tsconfig.json')
```  
is causing the pipeline to fail because GitHub Actions expects only one pattern per invocation. To resolve this issue, please update the cache key as follows:

- **File:** `.github/workflows/autofix.ci.yml`
- **Affected Lines:** 52-55

```diff
-          key: lint-cache-${{ matrix.node-version }}-${{ hashFiles('**/.eslintrc.json', '**/tsconfig.json') }}
+          key: lint-cache-${{ matrix.node-version }}-${{ hashFiles('**/.eslintrc.json') }}-${{ hashFiles('**/tsconfig.json') }}
```

This change will generate separate hash values for each file group and concatenates them to form a composite key, which should resolve the template error.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 GitHub Actions: autofix.ci</summary>

[error] 53-53: The template is not valid. hashFiles('**/.eslintrc.json, **/tsconfig.json') failed. Fail to hash files under directory '/home/runner/_work/core/core'.

</details>

</details>

</blockquote></details>

</blockquote></details>

<details>
<summary>🧹 Nitpick comments (10)</summary><blockquote>

<details>
<summary>.github/workflows/api-deploy-worker.yml (1)</summary><blockquote>

`55-66`: **Caching Step Update with Stickydisk**  
The new steps for "Mount NPM Cache" and "Mount node_modules" using `useblacksmith/stickydisk@v1` are clear and consistent. The use of the GitHub repository name as a key (with suffixes `-npm-cache` and `-node-modules`) and the specified paths (`~/.npm` and `./node_modules`) look correct. Please verify that these paths and keys meet any environment-specific requirements.

</blockquote></details>
<details>
<summary>.github/workflows/app-deploy.yml (3)</summary><blockquote>

`28-37`: **Updated Caching Strategy Implementation:**  
The newly added "Mount NPM Cache" and "Mount node_modules" steps using `useblacksmith/stickydisk@v1` clearly replace the legacy caching action. Please verify that using only the repository name (`${{ github.repository }}`) for the cache key meets your cache invalidation requirements. If you anticipate issues with stale caches (for example, after dependency updates), you might consider appending additional identifiers such as the branch or commit hash.

---

`96-105`: **Consistent Caching in Deploy Preview Job:**  
The deploy-preview job now uses the same stickydisk steps for both the NPM cache and `node_modules`, ensuring consistency. Double-check that the key and path values are correctly and uniformly applied across all jobs.

---

`254-264`: **Deploy Production Cache Update:**  
The updated caching steps in the deploy-production job adhere to the new caching strategy. Ensure that any legacy references to the old cache mechanism have been fully removed and that the new keys and paths capture all necessary dependency files.

</blockquote></details>
<details>
<summary>.github/workflows/visual-test.yml (1)</summary><blockquote>

`29-38`: **Visual Test Workflow Caching Enhancement:**  
The revised caching steps using `useblacksmith/stickydisk@v1` for both the NPM cache (`~/.npm`) and `node_modules` streamline dependency management for the visual test workflow. The key based on the repository name appears straightforward; just ensure this key structure aligns with your overall cache invalidation strategy in all scenarios.

</blockquote></details>
<details>
<summary>.github/workflows/api-gateway-prod-worker.yml (1)</summary><blockquote>

`33-43`: **API Gateway Production Workflow Cache Update:**  
The migration from the old caching mechanism to the new stickydisk-based caching is implemented cleanly here. Please verify that the simple key (`${{ github.repository }}-npm-cache` for the NPM cache and a similar key for `node_modules`) sufficiently differentiates caches across various environments or configurations.

</blockquote></details>
<details>
<summary>.github/workflows/main.yml (2)</summary><blockquote>

`41-50`: **Streamlined Caching in Build Job:**  
The build job now mounts both the NPM cache and `node_modules` using stickydisk. This simplification improves clarity; however, consider whether including a dynamic element (like a hash of `package-lock.json`) in the cache key might better capture dependency changes.

---

`119-128`: **Test Job Caching Consistency:**  
The test job’s updated caching steps are consistent with the build job and other workflows. Please ensure that parallel runs or multiple test jobs do not inadvertently conflict over the cache, especially given that the key is derived solely from the repository name.

</blockquote></details>
<details>
<summary>.github/workflows/ecs-frontend-deploy-prod-worker.yml (1)</summary><blockquote>

`76-87`: **ECS Frontend Deployment Cache Update:**  
The new caching steps using `useblacksmith/stickydisk@v1` are correctly implemented for mounting both the NPM cache and `node_modules`. Additionally, please remove the trailing spaces noted (e.g., at the end of line 81) to comply with YAML lint guidelines.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 81-81: trailing spaces

(trailing-spaces)

</details>

</details>

</blockquote></details>
<details>
<summary>.github/workflows/ecs-frontend-deploy-stage-worker.yml (1)</summary><blockquote>

`76-81`: **Mount NPM Cache configuration and cleanup**

The "Mount NPM Cache" step is properly configured with `useblacksmith/stickydisk@v1`. One minor issue: line 81 contains trailing spaces. Removing these will help keep the YAML clean and avoid linting warnings.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 81-81: trailing spaces

(trailing-spaces)

</details>

</details>

</blockquote></details>

</blockquote></details>

<details>
<summary>📜 Review details</summary>

**Configuration used: CodeRabbit UI**
**Review profile: CHILL**
**Plan: Pro**

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between 973ad09a079efdb5f2611f07be5cd31540a5e593 and 3eb3553adff201ebfea34d4158b6a9f20a97d72e.

</details>

<details>
<summary>📒 Files selected for processing (13)</summary>

* `.github/workflows/api-deploy-worker.yml` (1 hunks)
* `.github/workflows/api-gateway-prod-worker.yml` (1 hunks)
* `.github/workflows/api-gateway-stage-worker.yml` (1 hunks)
* `.github/workflows/app-deploy.yml` (3 hunks)
* `.github/workflows/autofix.ci.yml` (1 hunks)
* `.github/workflows/danger.yml` (1 hunks)
* `.github/workflows/e2e-tests.yml` (1 hunks)
* `.github/workflows/ecs-frontend-deploy-prod-worker.yml` (1 hunks)
* `.github/workflows/ecs-frontend-deploy-stage-worker.yml` (1 hunks)
* `.github/workflows/main.yml` (2 hunks)
* `.github/workflows/task-deploy-worker.yml` (1 hunks)
* `.github/workflows/visual-test.yml` (1 hunks)
* `.github/workflows/worker-deploy.yml` (3 hunks)

</details>

<details>
<summary>🧰 Additional context used</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

<details>
<summary>.github/workflows/ecs-frontend-deploy-stage-worker.yml</summary>

[error] 81-81: trailing spaces

(trailing-spaces)

</details>
<details>
<summary>.github/workflows/ecs-frontend-deploy-prod-worker.yml</summary>

[error] 81-81: trailing spaces

(trailing-spaces)

</details>

</details>
<details>
<summary>🪛 GitHub Actions: autofix.ci</summary>

<details>
<summary>.github/workflows/autofix.ci.yml</summary>

[error] 53-53: The template is not valid. hashFiles('**/.eslintrc.json, **/tsconfig.json') failed. Fail to hash files under directory '/home/runner/_work/core/core'.

</details>

</details>

</details>

<details>
<summary>⏰ Context from checks skipped due to timeout of 90000ms (5)</summary>

* GitHub Check: test (22, 2/3)
* GitHub Check: test (22, 3/3)
* GitHub Check: build (22)
* GitHub Check: test (22, 1/3)
* GitHub Check: Analyze (javascript)

</details>

<details>
<summary>🔇 Additional comments (10)</summary><blockquote>

<details>
<summary>.github/workflows/e2e-tests.yml (1)</summary>

`36-45`: **E2E Workflow Caching and Install Command Change**  
The implementation of the stickydisk caching steps for both the NPM cache and `node_modules` is implemented correctly here. One note: the dependency installation command has been changed from `npm ci` to `npm install --silent` (see line 47). Please verify that this change is intentional, as it may affect reproducibility and the deterministic nature of dependency resolution.

</details>
<details>
<summary>.github/workflows/worker-deploy.yml (2)</summary>

`27-36`: **Worker Deploy – Affected Job Caching Update**  
The updated caching steps using `useblacksmith/stickydisk@v1` (for mounting the NPM cache and the `node_modules` directory) are consistent with the new approach. The keys based on `${{ github.repository }}` are simple and clear. It might be useful to document this change in migration notes if your team needs to reference previous cache key structures.

---

`108-116`: **Deploy Production Caching Update**  
The new stickydisk caching steps in the production deployment job are properly configured with clear keys and paths. This consistent approach should simplify cache management across all deployment jobs.

</details>
<details>
<summary>.github/workflows/task-deploy-worker.yml (1)</summary>

`47-57`: **Task Deploy Workflow – Caching Strategy Update**  
The changes replacing the old cache step with separate "Mount NPM Cache" and "Mount node_modules" steps demonstrate a clear dual-caching strategy. The key naming and path specifications are consistent with the overall update.

</details>
<details>
<summary>.github/workflows/danger.yml (1)</summary>

`34-43`: **Danger Workflow Caching Update**  
The removal of the old caching step in favor of the two new mount steps using `useblacksmith/stickydisk@v1` is well implemented. The keys and paths provided are consistent with the changes across other workflows. Just ensure that these new cache keys align with your intended caching lifecycle for the Danger job.

</details>
<details>
<summary>.github/workflows/api-gateway-stage-worker.yml (2)</summary>

`33-38`: **Mount NPM Cache step is correctly implemented**

The new "Mount NPM Cache" step uses `useblacksmith/stickydisk@v1` to cache the NPM cache located at `~/.npm` with a key based on the repository name. This change aligns with the overall strategy to separate caching for NPM and `node_modules`.

---

`39-43`: **Mount node_modules cache is set up appropriately**

The addition of the "Mount node_modules" step with its own key and cache path (`./node_modules`) is clear and consistent with the updated caching approach.

</details>
<details>
<summary>.github/workflows/ecs-frontend-deploy-stage-worker.yml (1)</summary>

`82-86`: **Mount node_modules cache setup is correct**

The "Mount node_modules" step is similarly configured with an appropriate key and path for caching the `./node_modules` directory. This ensures a granular caching strategy that mirrors changes in the other workflow files.

</details>
<details>
<summary>.github/workflows/autofix.ci.yml (2)</summary>

`39-44`: **Mount NPM Cache configuration is consistent**

The step for mounting the NPM cache using `useblacksmith/stickydisk@v1` with key `${{ github.repository }}-npm-cache` and path `~/.npm` is correctly updated.

---

`44-48`: **Mount node_modules cache configuration is accurate**

The configuration for caching `./node_modules` with its dedicated key is correctly set up, mirroring the approach used in the other workflow files.

</details>

</blockquote></details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-28T19:47:26Z
user: login: coderabbitai[bot]
body: **Actionable comments posted: 1**

<details>
<summary>📜 Review details</summary>

**Configuration used: CodeRabbit UI**
**Review profile: CHILL**
**Plan: Pro**

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between 3eb3553adff201ebfea34d4158b6a9f20a97d72e and 53c91532c4cd9494f2f657fa06b6101c107b14d7.

</details>

<details>
<summary>📒 Files selected for processing (1)</summary>

* `.github/workflows/autofix.ci.yml` (1 hunks)

</details>

<details>
<summary>⏰ Context from checks skipped due to timeout of 90000ms (1)</summary>

* GitHub Check: Analyze (javascript)

</details>

<details>
<summary>🔇 Additional comments (3)</summary><blockquote>

<details>
<summary>.github/workflows/autofix.ci.yml (3)</summary>

`39-43`: **Review of "Mount NPM Cache" Step**  
The new step correctly utilizes `useblacksmith/stickydisk@v1` with the intended cache key (`${{ github.repository }}-npm-cache`) and path (`~/.npm`). This aligns with the PR objectives for separating the NPM cache.

---

`44-48`: **Review of "Mount node_modules" Step**  
This step properly uses the stickydisk action to mount the `node_modules` folder with the key `${{ github.repository }}-node-modules` and path `./node_modules`. It meets the intended changes described in the PR summary.

---

`54-55`: **Changed Dependency Installation Command**  
The update from `npm ci` to `npm install --silent` is noted. While the silent install may reduce log verbosity, it’s important to ensure that this change does not compromise build reproducibility. `npm ci` is generally preferred in CI environments for its deterministic behavior.  

Consider verifying that this change aligns with your intended build strategy and dependency consistency requirements.

</details>

</blockquote></details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-29T02:22:41Z
user: login: coderabbitai[bot]
body: **Actionable comments posted: 0**

<details>
<summary>🧹 Nitpick comments (4)</summary><blockquote>

<details>
<summary>.github/workflows/ecs-frontend-deploy-prod-worker.yml (2)</summary><blockquote>

`76-81`: **Caching Update: "Mount NPM Cache" Step**  
The new step uses `useblacksmith/stickydisk@v1` to mount the NPM cache at `~/.npm` with the key `${{ github.repository }}-npm-cache`. Please verify that this key pattern provides adequate uniqueness (especially across branches or parallel builds) and that the new caching mechanism integrates smoothly with your infrastructure.

---

`82-86`: **Caching Update: "Mount node_modules" Step**  
This step caches the project’s `./node_modules` directory using the key `${{ github.repository }}-node-modules`. Consider whether additional identifiers (e.g., branch name or commit hash) might be needed to further isolate caches between builds to prevent potential conflicts.

</blockquote></details>
<details>
<summary>.github/workflows/ecs-frontend-deploy-stage-worker.yml (2)</summary><blockquote>

`76-81`: **Caching Update: "Mount NPM Cache" Step**  
For the stage deployment, the "Mount NPM Cache" step is configured similarly to production, using `useblacksmith/stickydisk@v1` with the cache path `~/.npm` and the key `${{ github.repository }}-npm-cache`. Ensure this meets your staging cache isolation needs.

---

`82-86`: **Caching Update: "Mount node_modules" Step**  
This new step caches `./node_modules` via `useblacksmith/stickydisk@v1` with the key `${{ github.repository }}-node-modules`. As with production, consider if including an environment or branch identifier in the key might prevent unintended cache collisions during concurrent stage builds.

</blockquote></details>

</blockquote></details>

<details>
<summary>📜 Review details</summary>

**Configuration used: CodeRabbit UI**
**Review profile: CHILL**
**Plan: Pro**

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between 53c91532c4cd9494f2f657fa06b6101c107b14d7 and b883d26e01bff2d879d2909362e4720dbc6fa01a.

</details>

<details>
<summary>📒 Files selected for processing (2)</summary>

* `.github/workflows/ecs-frontend-deploy-prod-worker.yml` (1 hunks)
* `.github/workflows/ecs-frontend-deploy-stage-worker.yml` (1 hunks)

</details>

<details>
<summary>⏰ Context from checks skipped due to timeout of 90000ms (2)</summary>

* GitHub Check: lint (22)
* GitHub Check: Analyze (javascript)

</details>

<details>
<summary>🔇 Additional comments (2)</summary><blockquote>

<details>
<summary>.github/workflows/ecs-frontend-deploy-prod-worker.yml (1)</summary>

`88-90`: **Dependency Installation Command Change**  
The workflow now uses `npm install --silent` instead of `npm ci`. While this may be intentional (perhaps to work better with the new caching mechanism), please confirm that this approach does not compromise build reproducibility or result in inconsistencies when dependencies are updated.

</details>
<details>
<summary>.github/workflows/ecs-frontend-deploy-stage-worker.yml (1)</summary>

`88-90`: **Dependency Installation Command Consistency**  
The stage workflow also uses `npm install --silent`. Please double-check that this command, in conjunction with the new cache strategies, reliably installs up-to-date modules and that no side effects arise from not using `npm ci` (which is typically preferred in CI environments for clean installs).

</details>

</blockquote></details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-29T04:46:55Z
user: login: coderabbitai[bot]
body: **Actionable comments posted: 0**

<details>
<summary>♻️ Duplicate comments (1)</summary><blockquote>

<details>
<summary>.github/workflows/autofix.ci.yml (1)</summary><blockquote>

`54-58`: _🛠️ Refactor suggestion_

**Potential Redundancy with Existing Caching Mechanism**  
The "Setup Cache" step remains configured to use `useblacksmith/cache@v5` for caching `./node_modules` with a key that overlaps the new "Mount node_modules" step. This overlap can introduce conflicting cache behaviors. Since the PR objective is to move the caching entirely to stickydisk, please confirm whether the "Setup Cache" step should be removed or updated to align with the new approach.

</blockquote></details>

</blockquote></details>

<details>
<summary>🧹 Nitpick comments (5)</summary><blockquote>

<details>
<summary>.github/workflows/worker-deploy.yml (2)</summary><blockquote>

`27-31`: **Review: Mount NPM Cache in "affected" job**  
The introduction of the "Mount NPM Cache" step using `useblacksmith/stickydisk@v1` simplifies caching by directly targeting the NPM cache stored at `~/.npm`. Ensure that basing the cache key solely on `${{ github.repository }}` is sufficient for invalidation when dependencies change.

---

`32-36`: **Review: Mount node_modules in "affected" job**  
Adding this step to mount the `node_modules` directory enhances caching for project dependencies. Verify that the caching key remains unique and that updates to dependencies are correctly reflected when the cache is restored.

</blockquote></details>
<details>
<summary>.github/workflows/app-deploy.yml (1)</summary><blockquote>

`116-120`: **Review: Duplicate NX cache mount in App Deploy workflow (deploy-preview)**  
There appears to be a duplicate "Mount nx cache" step in the deploy-preview section. Removing the redundant block (lines 116-120) could help avoid unnecessary overhead and potential confusion in the workflow.

</blockquote></details>
<details>
<summary>.github/workflows/visual-test.yml (1)</summary><blockquote>

`29-33`: **Mount NPM Cache Step – Verify Key Uniqueness**  
The new "Mount NPM Cache" step uses `useblacksmith/stickydisk@v1` with a key based on the repository name (`${{ github.repository }}-npm-cache`) and caches the NPM cache at `~/.npm`. Please verify that this key alone provides sufficient uniqueness across branches or workflow runs if that is a requirement.

</blockquote></details>
<details>
<summary>.github/workflows/main.yml (1)</summary><blockquote>

`41-45`: **Build Job – Mount NPM Cache Step Verification**  
In the build job, the "Mount NPM Cache" step is added with key `${{ github.repository }}-npm-cache` and path `~/.npm`. This appears consistent with the new caching strategy. It might be useful to consider whether the `cache: 'npm'` argument passed in the `setup-node` step (lines 37–40) now overlaps with this new caching—if both actions are caching the same data, consider consolidating or clearly delineating their responsibilities.

</blockquote></details>

</blockquote></details>

<details>
<summary>📜 Review details</summary>

**Configuration used: CodeRabbit UI**
**Review profile: CHILL**
**Plan: Pro**

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between b883d26e01bff2d879d2909362e4720dbc6fa01a and 084c7e4a521eabcdb92762118196ba4a466d96b5.

</details>

<details>
<summary>📒 Files selected for processing (13)</summary>

* `.github/workflows/api-deploy-worker.yml` (1 hunks)
* `.github/workflows/api-gateway-prod-worker.yml` (1 hunks)
* `.github/workflows/api-gateway-stage-worker.yml` (1 hunks)
* `.github/workflows/app-deploy.yml` (3 hunks)
* `.github/workflows/autofix.ci.yml` (1 hunks)
* `.github/workflows/e2e-tests.yml` (1 hunks)
* `.github/workflows/ecs-frontend-deploy-prod-worker.yml` (1 hunks)
* `.github/workflows/ecs-frontend-deploy-stage-worker.yml` (1 hunks)
* `.github/workflows/main.yml` (2 hunks)
* `.github/workflows/task-deploy-worker.yml` (1 hunks)
* `.github/workflows/visual-test.yml` (1 hunks)
* `.github/workflows/worker-deploy.yml` (3 hunks)
* `.prettierignore` (1 hunks)

</details>

<details>
<summary>✅ Files skipped from review due to trivial changes (1)</summary>

* .prettierignore

</details>

<details>
<summary>🔇 Additional comments (45)</summary><blockquote>

<details>
<summary>.github/workflows/worker-deploy.yml (7)</summary>

`37-41`: **Review: Mount NX cache in "affected" job**  
The new "Mount nx cache" step is a clear enhancement for caching build artefacts produced by NX. Confirm that the cache stored at `./.nx/cache` is correctly maintained and does not conflict with other jobs.

---

`73-77`: **Review: Mount NPM Cache in "deploy-stage" job**  
The deployment stage now mounts the NPM cache using stickydisk. This change aligns well with the overall caching strategy; just ensure that any environment-specific changes (if needed) are accounted for using this cache.

---

`78-83`: **Review: Mount node_modules in "deploy-stage" job**  
Caching the `node_modules` directory in the deploy-stage is consistent with the new approach and should speed up dependency restoration. Double-check that this does not lead to stale modules upon dependency updates.

---

`84-87`: **Review: Mount NX cache in "deploy-stage" job**  
This step correctly mounts the NX cache for the stage deployment. Ensure that the key and path settings are consistent with your other workflow jobs.

---

`119-123`: **Review: Mount NPM Cache in "deploy-production" job**  
Using stickydisk to mount the NPM cache for production is a straightforward update. Verify that this simplified key strategy suits the production environment where dependency changes might be less frequent.

---

`124-128`: **Review: Mount node_modules in "deploy-production" job**  
This step consistently caches the `node_modules` directory in the production deployment. Ensure that dependency updates trigger the appropriate cache refresh so that production always runs the latest modules.

---

`129-133`: **Review: Mount NX cache in "deploy-production" job**  
Mounting the NX cache in production is a positive move for build performance. Confirm that the chosen cache key and path (`./.nx/cache`) do not conflict with similar steps in other workflows.

</details>
<details>
<summary>.github/workflows/api-deploy-worker.yml (3)</summary>

`55-60`: **Review: Mount NPM Cache in API deployment workflow**  
The new "Mount NPM Cache" step using `useblacksmith/stickydisk@v1` is a good replacement for the previous caching mechanism. This should help streamline the restoration of the NPM cache during API deployments.

---

`61-65`: **Review: Mount node_modules in API deployment workflow**  
This step caches the `node_modules` directory using the new stickydisk action. Its implementation is consistent with other workflows; verify that cache invalidation works as expected when dependencies are updated.

---

`66-70`: **Review: Mount NX cache in API deployment workflow**  
Adding a dedicated NX cache mount can improve build times for API deployments. Ensure that the relative cache path (`./.nx/cache`) is correctly maintained across different environments.

</details>
<details>
<summary>.github/workflows/e2e-tests.yml (4)</summary>

`36-40`: **Review: Mount NPM Cache in E2E Tests workflow**  
Implementing the "Mount NPM Cache" step with stickydisk for E2E tests is a positive change. Confirm that caching at `~/.npm` leads to noticeable performance improvements in your tests.

---

`41-45`: **Review: Mount node_modules in E2E Tests workflow**  
The added step for caching `node_modules` in the E2E job is consistent with other caching updates. This should help speed up dependency resolution during testing.

---

`46-50`: **Review: Mount NX cache in E2E Tests workflow**  
Integrating a dedicated NX cache mount is beneficial for incremental builds during testing. Verify that the cache key and path are correctly applied.

---

`52-52`: **Review: Dependency installation update in E2E Tests workflow**  
Switching from `npm ci` to `npm install --silent` may affect install reproducibility. Please verify that this change still meets your goals for both performance and consistency in dependency installation.

</details>
<details>
<summary>.github/workflows/task-deploy-worker.yml (3)</summary>

`47-51`: **Review: Mount NPM Cache in Task Deployment workflow**  
The new "Mount NPM Cache" step using stickydisk in the task-deploy workflow is aligned with the new caching strategy. Confirm that the cache key based on `${{ github.repository }}` functions as expected across tasks.

---

`52-56`: **Review: Mount node_modules in Task Deployment workflow**  
Caching the `node_modules` directory with stickydisk is a consistent update. Ensure that dependency changes trigger a proper cache refresh in this workflow.

---

`57-61`: **Review: Mount NX cache in Task Deployment workflow**  
Adding the NX cache mount step helps optimize build performance in task deployment events. Verify that the cache path (`./.nx/cache`) is used consistently among all workflows.

</details>
<details>
<summary>.github/workflows/app-deploy.yml (6)</summary>

`28-32`: **Review: Mount NPM Cache in App Deploy workflow (affected job)**  
This new caching step uses `stickydisk@v1` to mount the NPM cache at `~/.npm`. Verify that the cache key, based on the repository name, provides adequate invalidation when dependencies change.

---

`33-37`: **Review: Mount node_modules in App Deploy workflow (affected job)**  
The addition of caching for the `node_modules` directory enhances dependency restoration times. Please ensure that this change does not lead to stale modules when package updates occur.

---

`38-42`: **Review: Mount NX cache in App Deploy workflow (affected job)**  
Using stickydisk to mount the NX cache is a beneficial update. Confirm that the NX cache key is unique and that the cache is refreshed as needed to avoid build inconsistencies.

---

`101-106`: **Review: Mount NPM Cache in App Deploy workflow (deploy-preview)**  
The deploy-preview stage now includes a "Mount NPM Cache" step that mirrors the strategy used elsewhere. This consistency should help streamline preview deployments.

---

`107-111`: **Review: Mount node_modules in App Deploy workflow (deploy-preview)**  
Caching for the `node_modules` directory in the deploy-preview section is in line with your updated caching strategy. Ensure that its restoration does not conflict with other cache entries.

---

`112-115`: **Review: Mount NX cache in App Deploy workflow (deploy-preview)**  
The first NX cache mounting step in deploy-preview is correctly configured. Confirm that it properly reuses cached build artefacts for faster deployments.

</details>
<details>
<summary>.github/workflows/visual-test.yml (2)</summary>

`34-38`: **Mount node_modules Step – Configuration Looks Good**  
This step mounts the `./node_modules` directory using the stickydisk action with a consistent key (`${{ github.repository }}-node-modules`). Ensure that the relative path correctly matches the project structure.

---

`39-43`: **Mount nx cache Step – Appropriate Addition**  
The addition of a separate step to cache the NX cache in `./.nx/cache` using key `${{ github.repository }}-nx-cache` is a solid update. Confirm that the specified path is correct relative to the repository root.

</details>
<details>
<summary>.github/workflows/ecs-frontend-deploy-prod-worker.yml (3)</summary>

`76-81`: **Mount NPM Cache Configuration is Consistent**  
The "Mount NPM Cache" step is configured with key `${{ github.repository }}-npm-cache` and caches the directory at `~/.npm`. This approach matches the new caching strategy; just double-check if additional differentiators (e.g. branch or workflow ID) might be needed for cache isolation.

---

`82-86`: **Mount node_modules Cache – Setup Verification**  
The added "Mount node_modules" step uses the consistent key and path (`./node_modules`). Ensure that this mount works as expected within the deployment job.

---

`87-90`: **Mount nx cache Step – Integration Check**  
The introduction of the "Mount nx cache" step (key: `${{ github.repository }}-nx-cache`, path: `./.nx/cache`) aligns with the new caching mechanism. Verify that this step does not conflict with any build logic that might expect the cache in another location.

</details>
<details>
<summary>.github/workflows/api-gateway-prod-worker.yml (3)</summary>

`33-37`: **Mount NPM Cache Step – Consistency in Key Usage**  
This step now mounts the npm cache from `~/.npm` using the stickydisk action. The key `${{ github.repository }}-npm-cache` is clear; ensure that its simplicity meets your cache invalidation strategy.

---

`38-42`: **Mount node_modules Step – Clear and Correct**  
The "Mount node_modules" step is correctly configured with key `${{ github.repository }}-node-modules` and path `./node_modules`. This change appears to follow the intended pattern consistently.

---

`43-47`: **Mount nx cache Step – Verify Relative Path**  
The nx cache is mounted with key `${{ github.repository }}-nx-cache` at path `./.nx/cache`. Confirm that this relative path is as expected for the workspace structure and that it integrates well with the build process.

</details>
<details>
<summary>.github/workflows/api-gateway-stage-worker.yml (3)</summary>

`33-37`: **Mount NPM Cache – Validation Needed**  
The updated "Mount NPM Cache" step using stickydisk is consistent with other workflows. Verify that the key (`${{ github.repository }}-npm-cache`) properly isolates caches if different environments need separate caching.

---

`38-42`: **Mount node_modules Step – Configuration Check**  
The step mounts `./node_modules` with key `${{ github.repository }}-node-modules`. The configuration is clear; please confirm its correctness relative to the repository layout.

---

`43-47`: **Mount nx cache Step – Consistency Assurance**  
Adding the "Mount nx cache" step ensures that the NX cache is managed separately. Verify that the configured key and path (`${{ github.repository }}-nx-cache` and `./.nx/cache`) meet the project’s requirements.

</details>
<details>
<summary>.github/workflows/main.yml (5)</summary>

`46-50`: **Build Job – Mount node_modules Cache Step**  
The "Mount node_modules" step mounts the directory `./node_modules` using stickydisk with key `${{ github.repository }}-node-modules`. This configuration is straightforward and consistent with other workflow files.

---

`51-55`: **Build Job – Mount nx cache Step**  
This step uses stickydisk to mount the NX cache at `./.nx/cache` with key `${{ github.repository }}-nx-cache`. Ensure that this path aligns with where the build expects the NX cache to be located.

---

`124-128`: **Test Job – Mount NPM Cache Step**  
In the test job, the "Mount NPM Cache" step is again configured with key `${{ github.repository }}-npm-cache` and path `~/.npm`. Consistency with the build job is maintained; verify if the same cache is intended to be shared between the jobs.

---

`129-133`: **Test Job – Mount node_modules Cache Step**  
The "Mount node_modules" step is added similarly in the test section. Confirm that caching `./node_modules` in tests does not interfere with ephemeral changes that might occur between build and test stages.

---

`134-138`: **Test Job – Mount nx cache Step**  
The addition of the "Mount nx cache" step ensures that the NX cache is available during tests. The configuration uses key `${{ github.repository }}-nx-cache` and path `./.nx/cache`, which is consistent with the overall strategy.

</details>
<details>
<summary>.github/workflows/ecs-frontend-deploy-stage-worker.yml (3)</summary>

`76-80`: **New Caching Step: Mount NPM Cache Setup**  
The new step uses `useblacksmith/stickydisk@v1` to cache the NPM cache directory (`~/.npm`) with a cache key based on the repository name. Verify that this key strategy meets your expectations for cache separation across branches and workflows.

---

`81-85`: **New Caching Step: Mount node_modules Setup**  
This step caches the `./node_modules` directory using stickydisk with the key `${{ github.repository }}-node-modules`. The approach is consistent, but please double-check that this naming convention aligns with other workflows to avoid potential cache collisions.

---

`86-90`: **New Caching Step: Mount nx cache Introduction**  
The addition of caching for the `.nx/cache` directory is a good move to further optimize your builds. Ensure that the key `${{ github.repository }}-nx-cache` is unique enough within your ecosystem to prevent any conflicts with other caches.

</details>
<details>
<summary>.github/workflows/autofix.ci.yml (3)</summary>

`39-43`: **New Caching Step: Mount NPM Cache Setup**  
This step properly leverages `useblacksmith/stickydisk@v1` to cache the NPM cache at `~/.npm` with the key `${{ github.repository }}-npm-cache`. This change aligns with the PR’s objective to migrate to stickydisk for caching.

---

`44-48`: **New Caching Step: Mount node_modules Setup**  
The stickydisk action is correctly used here to cache `./node_modules` with the key `${{ github.repository }}-node-modules`. The configuration is clear and consistent with the changes made in other workflow files.

---

`49-53`: **New Caching Step: Mount nx cache Introduction**  
Caching the `.nx/cache` directory with stickydisk is a solid addition. Please ensure that its key `${{ github.repository }}-nx-cache` does not conflict with any other caching steps and that this cache is being utilized as expected across relevant workflows.

</details>

</blockquote></details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-29T20:58:13Z
user: login: coderabbitai[bot]
body: **Actionable comments posted: 0**

<details>
<summary>🧹 Nitpick comments (2)</summary><blockquote>

<details>
<summary>.github/workflows/app-deploy.yml (2)</summary><blockquote>

`28-42`: **Updated Caching Steps in "affected" Job**  
The new caching steps—Mount NPM Cache, Mount node_modules, and Mount nx cache—are correctly implemented using `useblacksmith/stickydisk@v1` with consistent keys and paths (i.e. using `${{ github.repository }}` as a basis). This covers the caching of both the NPM cache (at `~/.npm`) and the project dependencies (at `./node_modules`), as well as the NX cache.

---

`111-120`: **Duplicate "Mount nx cache" Step Detected**  
There appear to be two consecutive steps named "Mount nx cache" with identical configurations (same key and path). This is likely redundant unless there is an intentional need for remounting. Consider removing the duplicate step to streamline the workflow.

</blockquote></details>

</blockquote></details>

<details>
<summary>📜 Review details</summary>

**Configuration used: CodeRabbit UI**
**Review profile: CHILL**
**Plan: Pro**

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between 084c7e4a521eabcdb92762118196ba4a466d96b5 and b33e447116587ee2aa9a7a96f3a66e16e228480c.

</details>

<details>
<summary>📒 Files selected for processing (4)</summary>

* `.github/workflows/app-deploy.yml` (3 hunks)
* `.github/workflows/ecs-frontend-deploy-prod-worker.yml` (1 hunks)
* `.github/workflows/ecs-frontend-deploy-stage-worker.yml` (1 hunks)
* `.prettierignore` (1 hunks)

</details>

<details>
<summary>🚧 Files skipped from review as they are similar to previous changes (1)</summary>

* .prettierignore

</details>

<details>
<summary>⏰ Context from checks skipped due to timeout of 90000ms (2)</summary>

* GitHub Check: Analyze (javascript)
* GitHub Check: lint (22)

</details>

<details>
<summary>🔇 Additional comments (10)</summary><blockquote>

<details>
<summary>.github/workflows/app-deploy.yml (2)</summary>

`101-110`: **Consistent Caching in "deploy-preview" Job (Part 1)**  
The newly added steps for Mount NPM Cache and Mount node_modules are consistent with the "affected" job, using the same action and key structure. This ensures uniform caching behavior across jobs.

---

`269-289`: **Updated Caching in "deploy-production" Job**  
The new caching steps in the deploy-production job—including Mount NPM Cache, Mount node_modules, Mount nx cache, and the newly added Mount next cache—are well structured and follow the same consistent cache key strategy. This will help in managing both the dependency caches and Next.js build caches for each app.

</details>
<details>
<summary>.github/workflows/ecs-frontend-deploy-prod-worker.yml (4)</summary>

`76-80`: **Mount NPM Cache Step Update**  
The step now uses `useblacksmith/stickydisk@v1` with a key based on `${{ github.repository }}` and caches the NPM cache at `~/.npm`. This change aligns well with the new overall caching strategy.

---

`81-86`: **Mount node_modules Step Update**  
The updated step properly mounts the `./node_modules` directory using the stickydisk action with a clearly defined key. This is consistent with the other workflow updates.

---

`86-90`: **Mount nx cache Step Update**  
The Mount nx cache step correctly caches the NX cache directory at `./.nx/cache` using the new caching mechanism.

---

`91-96`: **New Mount next cache Step Addition**  
Adding the Mount next cache step (caching the Next.js build output) is a useful enhancement. It properly uses a key that incorporates the input name and mounts the cache at the expected directory.

</details>
<details>
<summary>.github/workflows/ecs-frontend-deploy-stage-worker.yml (4)</summary>

`76-80`: **Mount NPM Cache Step Update in Stage Workflow**  
The "Mount NPM Cache" step is updated to use the stickydisk action, caching at `~/.npm` with a key derived from `${{ github.repository }}`. This is clear and consistent with other workflows.

---

`81-85`: **Mount node_modules Step Update in Stage Workflow**  
The step to mount `./node_modules` uses a consistent key and path, ensuring that project dependencies are cached appropriately in the staging deployment.

---

`86-90`: **Mount nx cache Step Update in Stage Workflow**  
Caching of the NX cache directory (`./.nx/cache`) is implemented in the same manner as in the production workflow, ensuring consistency across environments.

---

`91-96`: **Mount next cache Step Addition in Stage Workflow**  
The addition of the Mount next cache step, which caches the `.next` directory under the application folder, is correctly implemented using the stickydisk action with an appropriate key structure.

</details>

</blockquote></details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-29T21:02:00Z
user: login: coderabbitai[bot]
body: **Actionable comments posted: 1**

<details>
<summary>📜 Review details</summary>

**Configuration used: CodeRabbit UI**
**Review profile: CHILL**
**Plan: Pro**

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between b33e447116587ee2aa9a7a96f3a66e16e228480c and 0ddd0a5286ce455610b1c9da7c6cb87d95ed6860.

</details>

<details>
<summary>📒 Files selected for processing (1)</summary>

* `.github/workflows/autofix.ci.yml` (2 hunks)

</details>

<details>
<summary>⏰ Context from checks skipped due to timeout of 90000ms (1)</summary>

* GitHub Check: Analyze (javascript)

</details>

<details>
<summary>🔇 Additional comments (5)</summary><blockquote>

<details>
<summary>.github/workflows/autofix.ci.yml (5)</summary>

`39-43`: **Adopted Stickydisk for NPM Cache.**

The new "Mount NPM Cache" step aligns with the PR objectives by using `stickydisk@v1` to cache the npm cache at `~/.npm` with a repository-based key. This looks well integrated; just verify that it doesn’t conflict with any other caching configuration.

---

`44-48`: **Consistent Caching for node_modules.**

The "Mount node_modules" step is a solid addition. It uses `stickydisk@v1` to cache the `./node_modules` directory with a repository-based key, which is in line with the updated caching strategy.

---

`49-53`: **Addition of NX Cache for Improved Build Performance.**

The introduction of the "Mount nx cache" step using `stickydisk@v1` effectively adds caching for the `.nx/cache` directory. This should help speed up NX operations as intended.

---

`77-77`: **Update Prettier Command with Ignore Path.**

The Prettier command now includes the `--ignore-path ./.prettierignore` option, ensuring that the files specified in the ignore file are properly skipped. This improvement should help maintain code quality consistently.

---

`35-38`: <details>
<summary>❓ Verification inconclusive</summary>

**Evaluate Potential Redundant Caching Mechanisms.**

The `setup-node@v5` action is configured with `cache: 'npm'` on line 38. Since the new steps using `stickydisk@v1` are now handling caching for npm (and related directories), please confirm whether the built-in caching should continue to be enabled here or be removed to avoid potential redundancy or conflicts.

---

🏁 Script executed:

```shell
#!/bin/bash
# Search for stickydisk caching steps across all GitHub workflow files
rg -i "stickydisk@v1" .github/workflows/
```

Length of output: 4596

---



</details>

**Action: Review and Resolve Redundant npm Caching in Workflow**

It appears that in `.github/workflows/autofix.ci.yml` the `setup-node@v5` step is still configured with `cache: 'npm'` (lines 35–38), even though multiple steps in the workflow are already using `useblacksmith/stickydisk@v1` for caching. This may lead to overlapping caching mechanisms. Please verify that:
- The `stickydisk@v1` steps fully cover the caching needs for npm (and related directories).
- No part of the workflow explicitly depends on the caching functionality provided by `setup-node@v5`.

If the built-in caching is redundant, consider removing the `cache: 'npm'` configuration from the `setup-node` action to prevent potential conflicts.

</details>

</blockquote></details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-29T21:09:42Z
user: login: coderabbitai[bot]
body: **Actionable comments posted: 0**

<details>
<summary>♻️ Duplicate comments (1)</summary><blockquote>

<details>
<summary>.github/workflows/autofix.ci.yml (1)</summary><blockquote>

`55-58`: _⚠️ Potential issue_

**Redundant Setup Cache Step**

The "Setup Cache" step is still using `useblacksmith/cache@v5` to cache `./node_modules`, which is redundant now that the "Mount node_modules" step is in place. This overlap can lead to unexpected caching behavior and inconsistencies. It is recommended to remove or refactor this step so that the caching strategy remains unified.

</blockquote></details>

</blockquote></details>

<details>
<summary>🧹 Nitpick comments (2)</summary><blockquote>

<details>
<summary>.prettierignore (1)</summary><blockquote>

`12-12`: **Broad .nx Ignore Pattern**

The new pattern `.nx/**/*` broadens the scope by ignoring all files and subdirectories within the `.nx` directory. Please verify that this exclusion is fully intentional. In some cases, the `.nx` folder might contain configuration or other essential files that you may not wish to ignore.

</blockquote></details>
<details>
<summary>.github/workflows/autofix.ci.yml (1)</summary><blockquote>

`44-48`: **Mount node_modules Step and Potential Duplication**

The "Mount node_modules" step correctly uses `useblacksmith/stickydisk@v1` with an appropriate key and the path `./node_modules`. However, please review its interaction with the subsequent "Setup Cache" step, as both target the `node_modules` directory. There may be overlapping responsibilities causing redundant or conflicting caching behavior.

</blockquote></details>

</blockquote></details>

<details>
<summary>📜 Review details</summary>

**Configuration used: CodeRabbit UI**
**Review profile: CHILL**
**Plan: Pro**

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between 0ddd0a5286ce455610b1c9da7c6cb87d95ed6860 and f6b3c2d0d23e49df5746aeb03842582ac3a11b5a.

</details>

<details>
<summary>📒 Files selected for processing (2)</summary>

* `.github/workflows/autofix.ci.yml` (1 hunks)
* `.prettierignore` (1 hunks)

</details>

<details>
<summary>⏰ Context from checks skipped due to timeout of 90000ms (1)</summary>

* GitHub Check: Analyze (javascript)

</details>

<details>
<summary>🔇 Additional comments (2)</summary><blockquote>

<details>
<summary>.github/workflows/autofix.ci.yml (2)</summary>

`39-43`: **Mount NPM Cache Step Implementation**

The newly added "Mount NPM Cache" step leverages `useblacksmith/stickydisk@v1` and is configured with a repository-based key (`${{ github.repository }}-npm-cache`) and a path (`~/.npm`), which aligns with the updated caching strategy for NPM.

---

`49-53`: **Mount nx Cache Step Verification**

The "Mount nx cache" step is configured to cache `./.nx/cache` using a repository-based key (`${{ github.repository }}-nx-cache`), which fits well with the updated ignore rules in `.prettierignore`. Just ensure that this path is indeed the intended target for caching, and that it matches the broader caching strategy across the project.

</details>

</blockquote></details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-29T21:13:30Z
user: login: coderabbitai[bot]
body: **Actionable comments posted: 0**

<details>
<summary>🧹 Nitpick comments (4)</summary><blockquote>

<details>
<summary>.github/workflows/autofix.ci.yml (4)</summary><blockquote>

`39-43`: **Updated Caching for NPM Cache**  
The "Mount NPM Cache" step now uses `useblacksmith/stickydisk@v1` with a repository-based key. This simplifies the key structure but consider whether incorporating additional factors (e.g., dependency manifest hashes) might be needed in the future to help invalidate the cache when dependencies change.

---

`44-48`: **Mounting the node_modules Directory**  
The "Mount node_modules" step has been updated to use stickydisk with a key formatted as `${{ github.repository }}-node-modules`. This change should help maintain cache isolation across repositories. It’s advisable to verify that caching the local `./node_modules` directory does not lead to inconsistencies when branches have divergent dependency trees.

---

`49-53`: **Introducing nx Cache**  
The newly added "Mount nx cache" step caches the `.nx/cache` directory using the repository-based key. Ensure that the relative path (`./.nx/cache`) resolves correctly in all execution environments and that this cached data does not conflict with any other caching layers in the workflow.

---

`72-72`: **Enhanced Prettier Command with Exclusion**  
The Prettier command now includes the argument `--check '!./.nx'` to ignore files in the `.nx` directory. Please confirm that this exclusion is intentional and that no files requiring formatting are overlooked by this pattern.

</blockquote></details>

</blockquote></details>

<details>
<summary>📜 Review details</summary>

**Configuration used: CodeRabbit UI**
**Review profile: CHILL**
**Plan: Pro**

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between f6b3c2d0d23e49df5746aeb03842582ac3a11b5a and 45dadb073798c97a1a3eb475bb13bf00d0c2894b.

</details>

<details>
<summary>📒 Files selected for processing (2)</summary>

* `.github/workflows/autofix.ci.yml` (2 hunks)
* `.prettierignore` (1 hunks)

</details>

<details>
<summary>🚧 Files skipped from review as they are similar to previous changes (1)</summary>

* .prettierignore

</details>

<details>
<summary>⏰ Context from checks skipped due to timeout of 90000ms (1)</summary>

* GitHub Check: Analyze (javascript)

</details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-29T21:27:12Z
user: login: coderabbitai[bot]
body: **Actionable comments posted: 1**

<details>
<summary>🧹 Nitpick comments (2)</summary><blockquote>

<details>
<summary>.github/workflows/e2e-tests.yml (2)</summary><blockquote>

`41-45`: **Review: Mount node_modules Caching**  
The step caching the `node_modules` directory employs a key `${{ github.repository }}-node-modules`. While this ensures a separate cache for node modules, it may not update when dependencies change (e.g., when `package.json` is modified). Consider incorporating a hash of the lock file or commit identifier into the cache key if cache staleness is a concern.

---

`56-56`: **Review: Dependency Installation Command Change**  
The dependency installation command has been modified from `npm ci` to `npm install --silent`. While this suppresses output and may speed up the install, it loses the clean, deterministic install benefits of `npm ci`. Confirm that this change aligns with your project's requirements and that you handle potential issues with dependency state drift.

</blockquote></details>

</blockquote></details>

<details>
<summary>📜 Review details</summary>

**Configuration used: CodeRabbit UI**
**Review profile: CHILL**
**Plan: Pro**

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between 45dadb073798c97a1a3eb475bb13bf00d0c2894b and 8f8028617dd124d5c24f6e91d3e3552436d7977c.

</details>

<details>
<summary>📒 Files selected for processing (2)</summary>

* `.github/workflows/app-deploy.yml` (3 hunks)
* `.github/workflows/e2e-tests.yml` (1 hunks)

</details>

<details>
<summary>🚧 Files skipped from review as they are similar to previous changes (1)</summary>

* .github/workflows/app-deploy.yml

</details>

<details>
<summary>⏰ Context from checks skipped due to timeout of 90000ms (1)</summary>

* GitHub Check: Analyze (javascript)

</details>

<details>
<summary>🔇 Additional comments (2)</summary><blockquote>

<details>
<summary>.github/workflows/e2e-tests.yml (2)</summary>

`36-40`: **New Step: Mount NPM Cache Configuration**  
The job now includes a step to cache the NPM cache directory using `useblacksmith/stickydisk@v1` with a key based on `${{ github.repository }}-npm-cache` and the path `~/.npm`. This is a good approach to speed up dependency fetching. Please verify that the tilde (`~`) is correctly expanded in this workflow’s environment.

---

`46-50`: **Good Implementation: Mount NX Cache**  
The NX cache step correctly caches the `./.nx/cache` directory with a repository-based key `${{ github.repository }}-nx-cache`. This should help improve build performance when using NX.

</details>

</blockquote></details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-29T21:52:35Z
user: login: tanflem
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-03-31T18:47:13Z

Review comments:
diff_hunk: @@ -36,19 +36,26 @@ jobs:
         with:
           node-version: ${{ matrix.node-version }}
           cache: 'npm'
-      - name: Cache Node Modules
-        id: cache-node-modules
-        uses: useblacksmith/cache@v5
+      - name: Mount NPM Cache
+        uses: useblacksmith/stickydisk@v1
+        with:
+          key: ${{ github.repository }}-npm-cache
+          path: ~/.npm
+      - name: Mount node_modules
+        uses: useblacksmith/stickydisk@v1
+        with:
+          key: ${{ github.repository }}-node-modules
+          path: ./node_modules
+      - name: Mount nx cache
+        uses: useblacksmith/stickydisk@v1
         with:
-          path: node_modules
-          key: node-modules-${{ matrix.node-version }}-${{ hashFiles('package-lock.json') }}
-          restore-keys: node-modules-${{ matrix.node-version }}-
+          key: ${{ github.repository }}-nx-cache
+          path: ./.nx/cache
       - name: Setup Cache
         uses: useblacksmith/cache@v5
         with:
-          path: .cache
-          key: lint-cache-${{ matrix.node-version }}-${{ hashFiles('**/.eslintrc.json', '**/tsconfig.json') }}
-          restore-keys: lint-cache-${{ matrix.node-version }}-
+          key: ${{ github.repository }}-node-modules
+          path: ./node_modules
path: .github/workflows/autofix.ci.yml
user: login: coderabbitai[bot]
body: _🛠️ Refactor suggestion_

_⚠️ Potential issue_

**Remove Redundant Setup Cache Step.**

The current "Setup Cache" step still uses `useblacksmith/cache@v5` to cache the `./node_modules` directory. This duplicates the functionality of the new "Mount node_modules" step and may lead to conflicting or unexpected caching behavior. It is recommended to remove this redundant step to maintain a unified caching strategy.

<!-- This is an auto-generated comment by CodeRabbit -->

✅ Addressed in commits 4549403 to 45dadb0
created_at: 2025-03-29T21:09:41Z
author_association: CONTRIBUTOR
diff_hunk: @@ -33,8 +33,27 @@ jobs:
       - uses: useblacksmith/setup-node@v5
         with:
           node-version: 22
+      - name: Mount NPM Cache
+        uses: useblacksmith/stickydisk@v1
+        with:
+          key: ${{ github.repository }}-npm-cache
+          path: ~/.npm
+      - name: Mount node_modules
+        uses: useblacksmith/stickydisk@v1
+        with:
+          key: ${{ github.repository }}-node-modules
+          path: ./node_modules
+      - name: Mount nx cache
+        uses: useblacksmith/stickydisk@v1
+        with:
+          key: ${{ github.repository }}-nx-cache
+          path: ./.nx/cache
+      - name: Mount playwright cache
+        uses: useblacksmith/stickydisk@v1
+        with:
+          key: ${{ github.repository }}-playwright-cache
       - name: Install dependencies
path: .github/workflows/e2e-tests.yml
user: login: coderabbitai[bot]
body: _⚠️ Potential issue_

**Critical Issue: Missing Cache Path for Playwright Cache**  
The "Mount playwright cache" step defines a key `${{ github.repository }}-playwright-cache` but does not specify a `path`. If the intention is to cache Playwright-related files, you should provide the appropriate directory path. Otherwise, if this omission is intentional, please add an inline comment to clarify.

<!-- This is an auto-generated comment by CodeRabbit -->

✅ Addressed in commit 17bcd15
created_at: 2025-03-29T21:52:34Z
author_association: CONTRIBUTOR

PR comments:
user: login: linear[bot]
created_at: 2025-03-28T19:41:51Z
body: <p><a href="https://linear.app/jesus-film-project/issue/PRJ-2256/add-sticky-disks-to-blacksmith-integration-no-qa">PRJ-2256 add sticky disks to blacksmith integration-no-qa</a></p>
author_association: NONE
user: login: coderabbitai[bot]
created_at: 2025-03-28T19:41:57Z
body: <!-- This is an auto-generated comment: summarize by coderabbit.ai -->
<!-- walkthrough_start -->

"""
## Walkthrough
This pull request updates multiple GitHub Actions workflows to restructure the caching approach for Node.js dependencies. The previous “Cache Node Modules” step using `useblacksmith/cache@v5` has been removed and replaced with multiple mount steps—such as “Mount NPM Cache,” “Mount node_modules,” and “Mount nx cache” (with some workflows also adding “Mount next cache”)—using `useblacksmith/stickydisk@v1`. Additionally, key names and cache paths have been updated to use repository-based identifiers, and in one case, the dependency installation command was modified.

## Changes

| File(s) | Change Summary |
|---------|----------------|
| `.../api-deploy-worker.yml`, `.../api-gateway-prod-worker.yml`, `.../api-gateway-stage-worker.yml`, `.../danger.yml`, `.../task-deploy-worker.yml`, `.../visual-test.yml`, `.../worker-deploy.yml` | Replaced the single “Cache Node Modules” step (using `useblacksmith/cache@v5`) with three distinct mounting steps (“Mount NPM Cache”, “Mount node_modules”, “Mount nx cache”) using `useblacksmith/stickydisk@v1` along with updated keys and paths. |
| `.../app-deploy.yml`, `.../ecs-frontend-deploy-prod-worker.yml`, `.../ecs-frontend-deploy-stage-worker.yml` | In addition to the basic caching overhaul, added a “Mount next cache” step (caching the `.next` directory) alongside the updated NPM and node_modules caching steps. |
| `.../autofix.ci.yml` | Removed the legacy caching step and introduced mount steps for NPM, node_modules, and nx cache; also updated the “Setup Cache” key/path and modified the Prettier command options. |
| `.../e2e-tests.yml` | Added mount steps for NPM cache, node_modules, and nx cache and changed the dependency installation command from `npm ci` to `npm install --silent`. |
| `.../main.yml` | Overhauled caching by replacing `useblacksmith/cache@v5` with three mount steps for NPM cache, node_modules, and NX cache using repository-based keys and a simplified configuration. |

## Sequence Diagram(s)
```mermaid
sequenceDiagram
    participant W as Workflow
    participant C as Caching Action (stickydisk)
    participant I as Installer

    W->>C: Mount NPM Cache (~/.npm) with repo-based key
    W->>C: Mount node_modules (./node_modules) with repo-based key
    W->>C: Mount nx cache (./.nx/cache) with repo-based key
    alt Workflow requires Next cache
      W->>C: Mount next cache (.next) with repo/app-based key
    end
    W->>I: Install dependencies (npm install or similar)
    I-->>W: Return installation result
    W->>W: Continue with build/deploy steps
```

## Possibly related PRs
- **JesusFilm/core#5350**: Addresses similar updates to the caching mechanism in GitHub Actions workflows, focusing on modifying cache steps and actions for Node.js dependencies.
"""

<!-- walkthrough_end -->


---

<details>
<summary>📜 Recent review details</summary>

**Configuration used: CodeRabbit UI**
**Review profile: CHILL**
**Plan: Pro**

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between 8f8028617dd124d5c24f6e91d3e3552436d7977c and 17bcd15d3ccdd4e278fe21f14cc7dc41c209d57c.

</details>

<details>
<summary>📒 Files selected for processing (1)</summary>

* `.github/workflows/e2e-tests.yml` (1 hunks)

</details>

<details>
<summary>🚧 Files skipped from review as they are similar to previous changes (1)</summary>

* .github/workflows/e2e-tests.yml

</details>

<details>
<summary>⏰ Context from checks skipped due to timeout of 90000ms (1)</summary>

* GitHub Check: Analyze (javascript)

</details>

</details>
<!-- internal state start -->


<!-- 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 -->

<!-- internal state end -->
<!-- tips_start -->

---



<details>
<summary>🪧 Tips</summary>

### Chat

There are 3 ways to chat with [CodeRabbit](https://coderabbit.ai?utm_source=oss&utm_medium=github&utm_campaign=JesusFilm/core&utm_content=5922):

- Review comments: Directly reply to a review comment made by CodeRabbit. Example:
  - `I pushed a fix in commit <commit_id>, please review it.`
  - `Generate unit testing code for this file.`
  - `Open a follow-up GitHub issue for this discussion.`
- Files and specific lines of code (under the "Files changed" tab): Tag `@coderabbitai` in a new review comment at the desired location with your query. Examples:
  - `@coderabbitai generate unit testing code for this file.`
  -	`@coderabbitai modularize this function.`
- PR comments: Tag `@coderabbitai` in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
  - `@coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.`
  - `@coderabbitai read src/utils.ts and generate unit testing code.`
  - `@coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.`
  - `@coderabbitai help me debug CodeRabbit configuration file.`

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

### CodeRabbit Commands (Invoked using PR comments)

- `@coderabbitai pause` to pause the reviews on a PR.
- `@coderabbitai resume` to resume the paused reviews.
- `@coderabbitai review` to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
- `@coderabbitai full review` to do a full review from scratch and review all the files again.
- `@coderabbitai summary` to regenerate the summary of the PR.
- `@coderabbitai generate docstrings` to [generate docstrings](https://docs.coderabbit.ai/finishing-touches/docstrings) for this PR.
- `@coderabbitai resolve` resolve all the CodeRabbit review comments.
- `@coderabbitai plan` to trigger planning for file edits and PR creation.
- `@coderabbitai configuration` to show the current CodeRabbit configuration for the repository.
- `@coderabbitai help` to get help.

### Other keywords and placeholders

- Add `@coderabbitai ignore` anywhere in the PR description to prevent this PR from being reviewed.
- Add `@coderabbitai summary` to generate the high-level summary at a specific location in the PR description.
- Add `@coderabbitai` anywhere in the PR title to generate the title automatically.

### CodeRabbit Configuration File (`.coderabbit.yaml`)

- You can programmatically configure CodeRabbit by adding a `.coderabbit.yaml` file to the root of your repository.
- Please see the [configuration documentation](https://docs.coderabbit.ai/guides/configure-coderabbit) for more information.
- If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: `# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json`

### Documentation and Community

- Visit our [Documentation](https://docs.coderabbit.ai) for detailed information on how to use CodeRabbit.
- Join our [Discord Community](http://discord.gg/coderabbit) to get help, request features, and share feedback.
- Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.

</details>

<!-- tips_end -->
author_association: CONTRIBUTOR