{
  "repository": "n8n-io/n8n",
  "ref": "d5e7db2bf57dbc06e65648cdbec7f5db6b91bedc",
  "methods": [
    {
      "slug": "formal",
      "title": "Formal verification and model checking"
    },
    {
      "slug": "static_analysis",
      "title": "Static analysis"
    },
    {
      "slug": "testing",
      "title": "Testing"
    },
    {
      "slug": "formatting",
      "title": "Formatting and hygiene"
    },
    {
      "slug": "supply_chain",
      "title": "Supply chain"
    },
    {
      "slug": "unclassified",
      "title": "Unclassified"
    }
  ],
  "verifications": [
    {
      "tool": "actionlint",
      "method": "static_analysis",
      "commands": [
        "actionlint {staged_files}"
      ],
      "triggers": [
        "pre_commit"
      ],
      "evidence": [
        {
          "path": "lefthook.yml",
          "locator": "pre-commit.commands.actionlint_check"
        }
      ],
      "upstream": "https://github.com/rhysd/actionlint",
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": "biome",
      "method": "static_analysis",
      "commands": [],
      "triggers": [],
      "evidence": [
        {
          "path": "package.json",
          "locator": "devDependencies: @biomejs/biome"
        },
        {
          "path": "biome.jsonc",
          "locator": "config file"
        },
        {
          "path": "packages/@n8n/module-cli/biome.jsonc",
          "locator": "config file"
        },
        {
          "path": "packages/@n8n/tournament/biome.jsonc",
          "locator": "config file"
        },
        {
          "path": "packages/@n8n/utils/biome.jsonc",
          "locator": "config file"
        },
        {
          "path": "packages/frontend/@n8n/composables/biome.jsonc",
          "locator": "config file"
        },
        {
          "path": "packages/frontend/@n8n/design-system/biome.jsonc",
          "locator": "config file"
        },
        {
          "path": "packages/frontend/@n8n/frontend-constants/biome.jsonc",
          "locator": "config file"
        },
        {
          "path": "packages/frontend/@n8n/frontend-module-sdk/biome.jsonc",
          "locator": "config file"
        },
        {
          "path": "packages/frontend/@n8n/frontend-test-utils/biome.jsonc",
          "locator": "config file"
        },
        {
          "path": "packages/frontend/@n8n/frontend-utils/biome.jsonc",
          "locator": "config file"
        },
        {
          "path": "packages/frontend/@n8n/frontend-vite-config/biome.jsonc",
          "locator": "config file"
        }
      ],
      "upstream": "https://github.com/biomejs/biome",
      "docs": null,
      "exit_codes": {},
      "autofix": true,
      "declared_only": true
    },
    {
      "tool": "eslint",
      "method": "static_analysis",
      "commands": [],
      "triggers": [],
      "evidence": [
        {
          "path": "package.json",
          "locator": "devDependencies: eslint"
        },
        {
          "path": "packages/@n8n/agents/eslint.config.mjs",
          "locator": "config file"
        },
        {
          "path": "packages/@n8n/ai-node-sdk/eslint.config.mjs",
          "locator": "config file"
        },
        {
          "path": "packages/@n8n/ai-utilities/eslint.config.mjs",
          "locator": "config file"
        },
        {
          "path": "packages/@n8n/ai-workflow-builder.ee/eslint.config.mjs",
          "locator": "config file"
        },
        {
          "path": "packages/@n8n/backend-common/eslint.config.mjs",
          "locator": "config file"
        },
        {
          "path": "packages/@n8n/backend-network/eslint.config.mjs",
          "locator": "config file"
        },
        {
          "path": "packages/@n8n/backend-services/eslint.config.mjs",
          "locator": "config file"
        },
        {
          "path": "packages/@n8n/backend-test-utils/eslint.config.mjs",
          "locator": "config file"
        },
        {
          "path": "packages/@n8n/blob-storage/eslint.config.mjs",
          "locator": "config file"
        },
        {
          "path": "packages/@n8n/cli/eslint.config.mjs",
          "locator": "config file"
        },
        {
          "path": "packages/@n8n/client-oauth2/eslint.config.mjs",
          "locator": "config file"
        }
      ],
      "upstream": "https://github.com/eslint/eslint",
      "docs": "https://eslint.org/docs/latest/use/command-line-interface#exit-codes",
      "exit_codes": {
        "0": "no errors",
        "1": "linting errors found",
        "2": "configuration problem or internal error"
      },
      "autofix": true,
      "declared_only": true
    },
    {
      "tool": "pyright",
      "method": "static_analysis",
      "commands": [],
      "triggers": [],
      "evidence": [
        {
          "path": "packages/@n8n/task-runner-python/pyrightconfig.json",
          "locator": "config file"
        }
      ],
      "upstream": "https://github.com/microsoft/pyright",
      "docs": "https://microsoft.github.io/pyright/#/command-line",
      "exit_codes": {
        "0": "no errors",
        "1": "errors reported",
        "2": "fatal error",
        "3": "config file could not be read or parsed",
        "4": "illegal command-line parameters"
      },
      "autofix": false,
      "declared_only": true
    },
    {
      "tool": "tsc",
      "method": "static_analysis",
      "commands": [],
      "triggers": [],
      "evidence": [
        {
          "path": "package.json",
          "locator": "devDependencies: typescript"
        }
      ],
      "upstream": "https://github.com/microsoft/TypeScript",
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": true
    },
    {
      "tool": "node-test",
      "method": "testing",
      "commands": [
        "node --test scripts/instance-seeding/*.test.mjs"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "package.json",
          "locator": "scripts.seed:test"
        }
      ],
      "upstream": "https://github.com/nodejs/node",
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": "playwright",
      "method": "testing",
      "commands": [
        "playwright test --project=e2e tests/e2e/building-blocks/ --workers=1 --retries=2 --reporter=list"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/test-e2e-helm.yml",
          "locator": "jobs.helm-e2e.steps[6] (Run Building Blocks E2E Tests)"
        },
        {
          "path": "packages/quality/efficiency/playwright.config.ts",
          "locator": "config file"
        },
        {
          "path": "packages/quality/testing/playwright/playwright.config.ts",
          "locator": "config file"
        },
        {
          "path": "packages/quality/testing/playwright/tests/framework/playwright.config.ts",
          "locator": "config file"
        }
      ],
      "upstream": "https://github.com/microsoft/playwright",
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": "pytest",
      "method": "testing",
      "commands": [
        "pytest --cov=src --cov-report=xml --cov-report=term-missing"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/ci-python.yml",
          "locator": "jobs.checks.steps[8] (Python unit tests)"
        },
        {
          "path": ".github/workflows/test-e2e-coverage-nightly.yml",
          "locator": "jobs.python-coverage.steps[5] (Test task-runner-python)"
        },
        {
          "path": ".github/workflows/test-e2e-coverage-nightly.yml",
          "locator": "jobs.python-coverage.steps[8] (Test ai-workflow-builder evals)"
        }
      ],
      "upstream": "https://github.com/pytest-dev/pytest",
      "docs": "https://docs.pytest.org/en/stable/reference/exit-codes.html",
      "exit_codes": {
        "0": "all tests passed",
        "1": "some tests failed",
        "2": "interrupted by the user",
        "3": "internal error",
        "4": "command line usage error",
        "5": "no tests were collected"
      },
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": "stryker",
      "method": "testing",
      "commands": [],
      "triggers": [],
      "evidence": [
        {
          "path": "package.json",
          "locator": "devDependencies: @stryker-mutator/core"
        },
        {
          "path": "packages/@n8n/scheduler/stryker.config.mjs",
          "locator": "config file"
        },
        {
          "path": "packages/workflow/stryker.config.mjs",
          "locator": "config file"
        }
      ],
      "upstream": "https://github.com/stryker-mutator/stryker-js",
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": true
    },
    {
      "tool": "vitest",
      "method": "testing",
      "commands": [],
      "triggers": [],
      "evidence": [
        {
          "path": "packages/@n8n/ai-node-sdk/vitest.config.ts",
          "locator": "config file"
        },
        {
          "path": "packages/@n8n/backend-services/vitest.config.ts",
          "locator": "config file"
        },
        {
          "path": "packages/@n8n/cli/vitest.config.ts",
          "locator": "config file"
        },
        {
          "path": "packages/@n8n/codemirror-lang-html/vitest.config.ts",
          "locator": "config file"
        },
        {
          "path": "packages/@n8n/codemirror-lang-sql/vitest.config.ts",
          "locator": "config file"
        },
        {
          "path": "packages/@n8n/codemirror-lang/vitest.config.ts",
          "locator": "config file"
        },
        {
          "path": "packages/@n8n/crdt/vitest.config.ts",
          "locator": "config file"
        },
        {
          "path": "packages/@n8n/decorators/vitest.config.ts",
          "locator": "config file"
        },
        {
          "path": "packages/@n8n/di/vitest.config.ts",
          "locator": "config file"
        },
        {
          "path": "packages/@n8n/engine/vitest.config.ts",
          "locator": "config file"
        },
        {
          "path": "packages/@n8n/errors/vitest.config.ts",
          "locator": "config file"
        },
        {
          "path": "packages/@n8n/expression-runtime/vitest.config.ts",
          "locator": "config file"
        }
      ],
      "upstream": "https://github.com/vitest-dev/vitest",
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": true
    },
    {
      "tool": "prettier",
      "method": "formatting",
      "commands": [],
      "triggers": [],
      "evidence": [
        {
          "path": "package.json",
          "locator": "devDependencies: prettier"
        },
        {
          "path": ".prettierrc.js",
          "locator": "config file"
        },
        {
          "path": "packages/@n8n/node-cli/src/template/templates/shared/default/.prettierrc.js",
          "locator": "config file"
        }
      ],
      "upstream": "https://github.com/prettier/prettier",
      "docs": "https://prettier.io/docs/cli#exit-codes",
      "exit_codes": {
        "0": "everything formatted",
        "1": "something was not formatted (--check)",
        "2": "prettier error"
      },
      "autofix": true,
      "declared_only": true
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "Required Checks failed on the ${HEAD_REF} PR> - the batched fixes stay unpublished until it is green.\""
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/ci-pull-requests.yml",
          "locator": "jobs.notify-bundle-pr-failure.steps[1] (Notify Slack)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "Write-Host Running smoke test: pnpm start -- -- --version"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/build-windows.yml",
          "locator": "jobs.build.steps[2] (Smoke test pnpm start -- -- --version)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "Write-Host `n✓ Smoke test passed"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/build-windows.yml",
          "locator": "jobs.build.steps[2] (Smoke test pnpm start -- -- --version)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "Write-Host `n❌ Smoke test failed (exit code: $LASTEXITCODE)"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/build-windows.yml",
          "locator": "jobs.build.steps[2] (Smoke test pnpm start -- -- --version)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "cosign attest --yes --type openvex --predicate security/vex.openvex.json $EXPR@$EXPR"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/docker-build-push.yml",
          "locator": "jobs.vex-attestation.steps[4] (Attest VEX to n8n image)"
        },
        {
          "path": ".github/workflows/docker-build-push.yml",
          "locator": "jobs.vex-attestation.steps[5] (Attest VEX to n8n-pc image)"
        },
        {
          "path": ".github/workflows/docker-build-push.yml",
          "locator": "jobs.vex-attestation.steps[6] (Attest VEX to runners image)"
        },
        {
          "path": ".github/workflows/docker-build-push.yml",
          "locator": "jobs.vex-attestation.steps[7] (Attest VEX to runners-distroless image)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "elif [ $MATRIX_SPECS_JSON = null ]"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/test-e2e-reusable.yml",
          "locator": "jobs.test.steps[6] (Resolve shard args)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "inspect --format {{.Name}} $c"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/test-evals-instance-ai.yml",
          "locator": "jobs.run-evals.steps[10] (Capture n8n container logs (debug))"
        },
        {
          "path": ".github/workflows/test-evals-mcp.yml",
          "locator": "jobs.run-evals.steps[8] (Capture n8n container logs (debug))"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "node ./.github/scripts/set-latest-for-monorepo-packages.mjs"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/release-set-stable-npm-packages-to-latest.yml",
          "locator": "jobs.promote-github-releases.steps[2] (Set npm packages to latest)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "node .github/scripts/attest-image-sbom.mjs"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/docker-build-push.yml",
          "locator": "jobs.sbom-attestation.steps[5] (Generate, enrich, gate and attest SBOM per image)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "node .github/scripts/docker/assert-manifest-format.mjs $PRIMARY_TAG --expect-platforms 2"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/docker-build-push.yml",
          "locator": "jobs.create_multi_arch_manifest.steps[4] (Create Docker Hub manifests)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "node .github/scripts/docker/assert-manifest-format.mjs $TAG --expect-platforms $EXPECT"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/docker-build-push.yml",
          "locator": "jobs.create_multi_arch_manifest.steps[3] (Assert merged GHCR manifests are OCI image indexes)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "node .github/scripts/docker/assert-manifest-format.mjs ${IMAGE}:${SCRATCH_TAG} --expect-platforms 2"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/docker-sbom-probe.yml",
          "locator": "jobs.verify.steps[4] (Assert OCI image index)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "node .github/scripts/docker/assert-manifest-format.mjs ${IMAGE}:${TAG} --expect-platforms 2"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/docker-sbom-probe.yml",
          "locator": "jobs.format-matrix.steps[4] (Report merged format)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "node .github/scripts/ensure-provenance-fields.mjs"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/release-publish.yml",
          "locator": "jobs.publish-to-npm.steps[5] (Pre publishing changes)"
        },
        {
          "path": ".github/workflows/release-standalone-package.yml",
          "locator": "jobs.publish-to-npm.steps[2] (Pre publishing changes)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "node .github/scripts/owners/owners.mjs --check"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/ci-owners-validation.yml",
          "locator": "jobs.validate.steps[1]"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "node .github/scripts/quality/check-cubic-config.mjs"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "package.json",
          "locator": "scripts.check:cubic-config"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "node packages/quality/testing/janitor/dist/cli.js filter-shard"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/test-e2e-reusable.yml",
          "locator": "jobs.test.steps[5] (Filter specs to previous-attempt failures)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "node packages/quality/testing/playwright/scripts/canvas-perf-sentinels.mjs ${RESULTS_PATHS[@]}"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/test-e2e-performance-reusable.yml",
          "locator": "jobs.canvas-perf-sentinels.steps[2] (Run canvas perf sentinels)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "node packages/quality/testing/playwright/scripts/coverage-analysis.mjs --md --top=15 --out-json=coverage-gaps.json >> $GITHUB_STEP_SUMMARY"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/test-e2e-coverage-nightly.yml",
          "locator": "jobs.aggregate.steps[9] (Analyse Coverage Gaps)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "node packages/quality/testing/playwright/scripts/fetch-impact-map-commit.mjs"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/ci-pull-requests.yml",
          "locator": "jobs.e2e-matrix.steps[3] (Fetch impact map commit)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "node scripts/agent-check.mjs lint"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "package.json",
          "locator": "scripts.agent:lint"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "node scripts/agent-check.mjs playwright"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "package.json",
          "locator": "scripts.agent:playwright"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "node scripts/agent-check.mjs test"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "package.json",
          "locator": "scripts.agent:test"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "node scripts/agent-check.mjs typecheck"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "package.json",
          "locator": "scripts.agent:typecheck"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "node scripts/aggregate-coverage.mjs --shards=/tmp/shards --unit-shards=/tmp/unit-lcovs --out=coverage"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/test-e2e-coverage-nightly.yml",
          "locator": "jobs.aggregate.steps[5] (Aggregate coverage + build impact map)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "node scripts/build-n8n.mjs"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "package.json",
          "locator": "scripts.build:docker:coverage"
        },
        {
          "path": "package.json",
          "locator": "scripts.build:docker:scan"
        },
        {
          "path": "package.json",
          "locator": "scripts.build:docker:test"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "node scripts/check-boundaries.mjs"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "package.json",
          "locator": "scripts.lint:ci"
        },
        {
          "path": "package.json",
          "locator": "scripts.boundaries:check"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "node scripts/check-boundaries.mjs --write"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "package.json",
          "locator": "scripts.boundaries:baseline"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "node scripts/check-workspace-deps.mjs {staged_files}"
      ],
      "triggers": [
        "pre_commit"
      ],
      "evidence": [
        {
          "path": "lefthook.yml",
          "locator": "pre-commit.commands.workspace_deps_check"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "node scripts/check-workspace-private-deps.mjs"
      ],
      "triggers": [
        "pre_commit",
        "local"
      ],
      "evidence": [
        {
          "path": "lefthook.yml",
          "locator": "pre-commit.commands.workspace_private_deps_check"
        },
        {
          "path": "package.json",
          "locator": "scripts.lint:ci"
        },
        {
          "path": "package.json",
          "locator": "scripts.check:workspace-private-deps"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "node scripts/ci-test-phase-profile.mjs"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "package.json",
          "locator": "scripts.profile:ci-tests"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "node scripts/dockerize-n8n.mjs"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "package.json",
          "locator": "scripts.build:docker:coverage"
        },
        {
          "path": "package.json",
          "locator": "scripts.build:docker:scan"
        },
        {
          "path": "package.json",
          "locator": "scripts.build:docker:test"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "node scripts/format.mjs"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "package.json",
          "locator": "scripts.format"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "node scripts/instance-seeding/checkPreferenceProfile.mjs"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "package.json",
          "locator": "scripts.seed:account:check"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "node scripts/instance-seeding/inspectActivity.mjs"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "package.json",
          "locator": "scripts.inspect:activity"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "node scripts/licenses/check-sbom-licenses.mjs sbom-source.cdx.json --allow-ref=LicenseRef-n8n-sustainable-use --allow-ref=LicenseRef-n8n-enterprise"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/sbom-generation-callable.yml",
          "locator": "jobs.generate-sbom.steps[2] (Gate SBOM on resolved SPDX licenses)"
        },
        {
          "path": ".github/workflows/sbom-validation-callable.yml",
          "locator": "jobs.validate-sbom.steps[3] (Gate SBOM on resolved SPDX licenses)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "node scripts/scan-n8n-image.mjs"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "package.json",
          "locator": "scripts.build:docker:scan"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "node scripts/sync-agent-skill-links.mjs --check"
      ],
      "triggers": [
        "pre_commit",
        "local"
      ],
      "evidence": [
        {
          "path": "lefthook.yml",
          "locator": "pre-commit.commands.skill_links_check"
        },
        {
          "path": "lefthook.yml",
          "locator": "pre-commit.commands.skill_links_check_plugin"
        },
        {
          "path": "package.json",
          "locator": "scripts.check:skill-links"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "node scripts/test-inventory.mjs"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "package.json",
          "locator": "scripts.test:inventory"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "node scripts/vitest-profile.mjs"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "package.json",
          "locator": "scripts.profile:vitest"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "require_secret EVALS_AZURE_FOUNDRY_KEY $EVALS_AZURE_FOUNDRY_KEY"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/test-evals-instance-ai.yml",
          "locator": "jobs.run-evals.steps[5] (Start n8n containers)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "require_secret EVALS_VERTEX_KEY $EVALS_VERTEX_KEY"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/test-evals-instance-ai.yml",
          "locator": "jobs.run-evals.steps[5] (Start n8n containers)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "require_secret EVALS_VERTEX_PROJECT_ID $EVALS_VERTEX_PROJECT_ID"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/test-evals-instance-ai.yml",
          "locator": "jobs.run-evals.steps[5] (Start n8n containers)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "terraform fmt -check -recursive"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/ci-terraform.yml",
          "locator": "jobs.checks.steps[2] (Format check)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "tr   ,)"
      ],
      "triggers": [
        "pre_commit"
      ],
      "evidence": [
        {
          "path": "lefthook.yml",
          "locator": "pre-commit.commands.migration_timestamp_check"
        },
        {
          "path": "lefthook.yml",
          "locator": "pre-commit.commands.playwright_janitor"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "turbo run build --filter=@n8n/db"
      ],
      "triggers": [
        "pre_commit",
        "local"
      ],
      "evidence": [
        {
          "path": "lefthook.yml",
          "locator": "pre-commit.commands.db_schema_check"
        },
        {
          "path": "package.json",
          "locator": "scripts.db:schema:check:sqlite"
        },
        {
          "path": "package.json",
          "locator": "scripts.db:schema:docs"
        },
        {
          "path": "package.json",
          "locator": "scripts.db:schema:check"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "turbo run build:unchecked"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "package.json",
          "locator": "scripts.build:unchecked"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "turbo run format"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "package.json",
          "locator": "scripts.format"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "turbo run format:check"
      ],
      "triggers": [
        "ci",
        "local"
      ],
      "evidence": [
        {
          "path": ".github/workflows/ci-master.yml",
          "locator": "jobs.build-and-format.steps[3] (Run format check)"
        },
        {
          "path": "package.json",
          "locator": "scripts.format:check"
        },
        {
          "path": ".github/workflows/ci-pull-requests.yml",
          "locator": "jobs.format-check.steps[2] (Run format check)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "turbo run lint"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "package.json",
          "locator": "scripts.lint"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "turbo run lint --affected"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "package.json",
          "locator": "scripts.lint:affected"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "turbo run lint lint:styles --concurrency=2"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "package.json",
          "locator": "scripts.lint:ci"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "turbo run lint:fix"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "package.json",
          "locator": "scripts.lint:fix"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "turbo run lint:styles"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "package.json",
          "locator": "scripts.lint:styles"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "turbo run lint:styles:fix"
      ],
      "triggers": [
        "pre_commit",
        "local"
      ],
      "evidence": [
        {
          "path": "lefthook.yml",
          "locator": "pre-commit.commands.styles_check"
        },
        {
          "path": "package.json",
          "locator": "scripts.lint:styles:fix"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "turbo run test"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "package.json",
          "locator": "scripts.test"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "turbo run test --affected --concurrency=1"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "package.json",
          "locator": "scripts.test:affected"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "turbo run test --continue --concurrency=1"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "package.json",
          "locator": "scripts.test:ci"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "turbo run test --continue --concurrency=1 --filter=!./packages/frontend/** --filter=!./packages/modules/*/frontend"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "package.json",
          "locator": "scripts.test:ci:backend"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "turbo run test --continue --filter=./packages/frontend/** --filter=./packages/modules/*/frontend"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "package.json",
          "locator": "scripts.test:ci:frontend"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "turbo run test:changed --continue --filter=./packages/frontend/** --filter=./packages/modules/*/frontend"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "package.json",
          "locator": "scripts.test:ci:frontend:changed"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "turbo run test:container:standard --filter=n8n-playwright"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "package.json",
          "locator": "scripts.build:docker:test"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "turbo run test:integration --continue --concurrency=1 --filter=!./packages/frontend/** --filter=!./packages/modules/*/frontend"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "package.json",
          "locator": "scripts.test:ci:backend:integration"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "turbo run test:integration:changed --continue --concurrency=1 --filter=!./packages/frontend/** --filter=!./packages/modules/*/frontend"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "package.json",
          "locator": "scripts.test:ci:backend:integration:changed"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "turbo run test:unit --continue --concurrency=2 --filter=!./packages/frontend/** --filter=!./packages/modules/*/frontend"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "package.json",
          "locator": "scripts.test:ci:backend:unit"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "turbo typecheck"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "package.json",
          "locator": "scripts.typecheck"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    }
  ]
}
