From b6a4739b1f7928ea5f0f702fd54e351a46988166 Mon Sep 17 00:00:00 2001 From: Xiangzhe Date: Tue, 25 Aug 2026 08:41:17 -0300 Subject: [PATCH] fix(ci): set NODE_OPTIONS on the unit-shard step and prune stale eslint suppressions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The previous heap bump only touched test:unit:ci:shard, i.e. the node the shard script spawns. The process that actually runs out of memory is the `c8` wrapper around it — it aggregates ~577 MB of raw V8 coverage JSON — so the ceiling stayed at the V8 default (~4 GB) and the shards kept aborting at ~4083 MB, byte for byte the same failure. Setting NODE_OPTIONS on the step covers c8 and every child, which is the pattern the coverage-merge job already uses. Also prunes three eslint suppression entries whose violations no longer exist: videoBridgeContactSheet.ts and videoBridgeRuntime.ts (no-unused-vars, fixed during this cycle) and cli-oneproxy-commands.test.ts (no-explicit-any 14 -> 13, a consequence of restoring the real mock in that test). Stale entries make `npm run lint` exit 2 with 'There are suppressions left that do not occur anymore'. Pruned and verified on an uncontaminated checkout, not the devbox. Refs #10692 --- .github/workflows/ci.yml | 6 ++++++ config/quality/eslint-suppressions.json | 14 ++------------ 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7a5d741049..4491f10df1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -803,6 +803,12 @@ jobs: - name: Unit tests (shard ${{ matrix.shard }}/8) with V8 coverage env: TEST_SHARD: ${{ matrix.shard }}/8 + # NODE_OPTIONS (nao so o flag em test:unit:ci:shard) porque quem estoura o + # heap e o processo `c8` que embrulha a suite — ele agrega ~577 MB de JSON + # de cobertura bruta. Subir o teto so no node filho deixa o pai no default + # do V8 (~4 GB) e o OOM continua igual, em ~4083 MB. Mesmo padrao ja usado + # pelo job de merge de cobertura mais abaixo. + NODE_OPTIONS: --max-old-space-size=8192 run: | rm -rf coverage-shard coverage-shard-report npx c8 \ diff --git a/config/quality/eslint-suppressions.json b/config/quality/eslint-suppressions.json index 5926a541ba..cca4a3fb1c 100644 --- a/config/quality/eslint-suppressions.json +++ b/config/quality/eslint-suppressions.json @@ -2372,16 +2372,6 @@ "count": 2 } }, - "src/lib/guardrails/videoBridgeContactSheet.ts": { - "@typescript-eslint/no-unused-vars": { - "count": 1 - } - }, - "src/lib/guardrails/videoBridgeRuntime.ts": { - "@typescript-eslint/no-unused-vars": { - "count": 1 - } - }, "src/lib/guardrails/visionBridgeHelpers.ts": { "@typescript-eslint/no-unused-vars": { "count": 1 @@ -4130,7 +4120,7 @@ }, "tests/unit/cli-oneproxy-commands.test.ts": { "@typescript-eslint/no-explicit-any": { - "count": 14 + "count": 13 }, "@typescript-eslint/no-unused-vars": { "count": 1 @@ -6617,4 +6607,4 @@ "count": 2 } } -} \ No newline at end of file +}