{
  "repository": "novuhq/novu",
  "ref": "5972adc92aca758581874b916f5833e0d31be570",
  "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": "biome",
      "method": "static_analysis",
      "commands": [
        "biome ci --changed --since=origin/$EXPR --no-errors-on-unmatched --reporter=github --max-diagnostics=none",
        "biome ci --changed --since=$since --no-errors-on-unmatched --reporter=github --max-diagnostics=none",
        "biome lint --changed --since=origin/next --no-errors-on-unmatched",
        "biome check --write .",
        "biome format ."
      ],
      "triggers": [
        "ci",
        "local"
      ],
      "evidence": [
        {
          "path": ".github/workflows/contributor-checks.yml",
          "locator": "jobs.contributor-install-build-lint.steps[6] (Lint changed files)"
        },
        {
          "path": ".github/workflows/on-pr.yml",
          "locator": "jobs.lint-changed.steps[3] (Biome on changed files)"
        },
        {
          "path": "package.json",
          "locator": "scripts.lint"
        },
        {
          "path": "package.json",
          "locator": "scripts.lint:fix"
        },
        {
          "path": "package.json",
          "locator": "scripts.format"
        },
        {
          "path": "package.json",
          "locator": "scripts.format:fix"
        },
        {
          "path": "package.json",
          "locator": "scripts.check"
        },
        {
          "path": "package.json",
          "locator": "scripts.check:fix"
        },
        {
          "path": "package.json",
          "locator": "devDependencies: @biomejs/biome"
        },
        {
          "path": "apps/mcp-server/biome.json",
          "locator": "config file"
        },
        {
          "path": "biome.json",
          "locator": "config file"
        }
      ],
      "upstream": "https://github.com/biomejs/biome",
      "docs": null,
      "exit_codes": {},
      "autofix": true,
      "declared_only": false
    },
    {
      "tool": "codeql",
      "method": "static_analysis",
      "commands": [
        "uses github/codeql-action/analyze"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/codeql-analysis.yml",
          "locator": "jobs.analyze.steps[3] (Perform CodeQL Analysis)"
        }
      ],
      "upstream": "https://github.com/github/codeql",
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": "eslint",
      "method": "static_analysis",
      "commands": [],
      "triggers": [],
      "evidence": [
        {
          "path": "docs/platform/sdks/javascript/.eslintrc.json",
          "locator": "config file"
        },
        {
          "path": "docs/platform/sdks/react/.eslintrc.json",
          "locator": "config file"
        },
        {
          "path": "libs/internal-sdk/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": "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": "ci-matrix",
      "method": "testing",
      "commands": [
        "analyze (language: 2)"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/codeql-analysis.yml",
          "locator": "jobs.analyze.strategy.matrix"
        }
      ],
      "upstream": "https://docs.github.com/en/actions/how-tos/write-workflows/choose-what-workflows-do/run-job-variations",
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": "jest",
      "method": "testing",
      "commands": [],
      "triggers": [],
      "evidence": [
        {
          "path": "package.json",
          "locator": "devDependencies: jest"
        },
        {
          "path": "jest.config.js",
          "locator": "config file"
        },
        {
          "path": "packages/stateless/jest.config.js",
          "locator": "config file"
        }
      ],
      "upstream": "https://github.com/jestjs/jest",
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": true
    },
    {
      "tool": "mocha",
      "method": "testing",
      "commands": [],
      "triggers": [],
      "evidence": [
        {
          "path": "apps/api/.mocharc.json",
          "locator": "config file"
        },
        {
          "path": "apps/worker/.mocharc.json",
          "locator": "config file"
        }
      ],
      "upstream": "https://github.com/mochajs/mocha",
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": true
    },
    {
      "tool": "playwright",
      "method": "testing",
      "commands": [],
      "triggers": [],
      "evidence": [
        {
          "path": "apps/dashboard/playwright.config.ts",
          "locator": "config file"
        },
        {
          "path": "apps/human-dashboard/playwright.config.ts",
          "locator": "config file"
        }
      ],
      "upstream": "https://github.com/microsoft/playwright",
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": true
    },
    {
      "tool": "vitest",
      "method": "testing",
      "commands": [],
      "triggers": [],
      "evidence": [
        {
          "path": "apps/human-dashboard/vitest.config.ts",
          "locator": "config file"
        },
        {
          "path": "libs/agent-evals/vitest.config.ts",
          "locator": "config file"
        },
        {
          "path": "libs/application-generic/vitest.config.ts",
          "locator": "config file"
        },
        {
          "path": "libs/maily-render/vitest.config.ts",
          "locator": "config file"
        },
        {
          "path": "packages/add-inbox/vitest.config.js",
          "locator": "config file"
        },
        {
          "path": "packages/agent-event-protocol/vitest.config.ts",
          "locator": "config file"
        },
        {
          "path": "packages/chat-adapter-photon-imessage/vitest.config.ts",
          "locator": "config file"
        },
        {
          "path": "packages/chat-adapter-sendblue/vitest.config.ts",
          "locator": "config file"
        },
        {
          "path": "packages/chat-adapter-web-chat/vitest.config.ts",
          "locator": "config file"
        },
        {
          "path": "packages/chat-adapter/vitest.config.ts",
          "locator": "config file"
        },
        {
          "path": "packages/framework/vitest.config.ts",
          "locator": "config file"
        },
        {
          "path": "packages/js/vitest.config.ts",
          "locator": "config file"
        }
      ],
      "upstream": "https://github.com/vitest-dev/vitest",
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": true
    },
    {
      "tool": "dependency-review",
      "method": "supply_chain",
      "commands": [
        "uses actions/dependency-review-action"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/on-pr.yml",
          "locator": "jobs.dependency-review.steps[1] (Dependency Review)"
        }
      ],
      "upstream": "https://github.com/actions/dependency-review-action",
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "all under docs/: $all_docs\""
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/on-pr.yml",
          "locator": "jobs.get-affected.steps[4] (Detect docs-only changes)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "case $current_section in"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/deployment-summary.yml",
          "locator": "jobs.generate-deployment-summary.steps[8] (Prepare Slack payload)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "cross-env nx run-many --target=start:test --projects=@novu/api-service"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "package.json",
          "locator": "scripts.start:api:test"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "cross-env nx run-many --target=start:test --projects=@novu/webhook"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "package.json",
          "locator": "scripts.start:webhook:test"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "cross-env nx run-many --target=start:test --projects=@novu/worker"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "package.json",
          "locator": "scripts.start:worker:test"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "cross-env nx run-many --target=start:test --projects=@novu/ws"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "package.json",
          "locator": "scripts.start:ws:test"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "cross-env pnpm --filter ./packages/providers/** test"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "package.json",
          "locator": "scripts.test:providers"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "elif [ $INPUT_RELEASE_TYPE = rc ]"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/release-packages.yml",
          "locator": "jobs.release.steps[6] (Set version for nightly or rc)"
        },
        {
          "path": ".github/workflows/release-packages.yml",
          "locator": "jobs.release.steps[8] (Release version (without commit))"
        },
        {
          "path": ".github/workflows/release-packages.yml",
          "locator": "jobs.release.steps[11] (Publish packages (nightly and rc only))"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "hygen usecase new --name=$pnpm_config_name --module=$pnpm_config_module"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "package.json",
          "locator": "scripts.g:usecase"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "lint-staged"
      ],
      "triggers": [
        "pre_commit",
        "local"
      ],
      "evidence": [
        {
          "path": ".husky/pre-commit",
          "locator": "line 13"
        },
        {
          "path": "package.json",
          "locator": "scripts.lint-staged"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "node scripts/set-package-dependencies.mjs latest"
      ],
      "triggers": [
        "ci",
        "local"
      ],
      "evidence": [
        {
          "path": ".github/workflows/preview-packages.yml",
          "locator": "jobs.publish_preview_packages.steps[5] (Teach Novu preview packages to work with latest dependencies)"
        },
        {
          "path": "package.json",
          "locator": "scripts.packages:set-latest"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "python .github/workflows/scripts/check-workflow-security.py"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/workflow-security-lint.yml",
          "locator": "jobs.workflow-security-lint.steps[1] (Run security lint)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "wait-on --timeout=180000 http://127.0.0.1:1336/v1/health-check http://127.0.0.1:1342/v1/health-check"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/reusable-dashboard-e2e.yml",
          "locator": "jobs.e2e_dashboard.steps[11] (Wait on API and Worker)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "wait-on --timeout=180000 http://127.0.0.1:1340/v1/health-check"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/reusable-dashboard-e2e.yml",
          "locator": "jobs.e2e_dashboard.steps[13] (Wait on Services)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "wait-on --timeout=180000 http://127.0.0.1:1340/v1/health-check http://127.0.0.1:4200/"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/reusable-web-e2e.yml",
          "locator": "jobs.e2e_web.steps[10] (Wait on Services)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "wait-on --timeout=180000 http://127.0.0.1:1342/v1/health-check"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/reusable-api-e2e.yml",
          "locator": "jobs.e2e_api.steps[6] (Wait on worker)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    }
  ]
}
