{
  "repository": "mermaid-js/mermaid",
  "ref": "ea53556f130b397fb6f781818ee0f1e924b429eb",
  "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": "codeql",
      "method": "static_analysis",
      "commands": [
        "uses github/codeql-action/analyze"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/codeql.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": [
        "eslint --cache --cache-strategy content --fix .",
        "eslint --quiet --stats --cache --cache-strategy content ."
      ],
      "triggers": [
        "ci",
        "local"
      ],
      "evidence": [
        {
          "path": ".github/workflows/autofix.yml",
          "locator": "jobs.autofix.steps[4] (Fix Linting)"
        },
        {
          "path": "package.json",
          "locator": "scripts.lint:fix"
        },
        {
          "path": "package.json",
          "locator": "scripts.lint"
        },
        {
          "path": "package.json",
          "locator": "scripts.test"
        },
        {
          "path": "package.json",
          "locator": "devDependencies: eslint"
        },
        {
          "path": "eslint.config.js",
          "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": false
    },
    {
      "tool": "tsc",
      "method": "static_analysis",
      "commands": [
        "tsc -p ./packages/mermaid/tsconfig.json --emitDeclarationOnly --watch"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "package.json",
          "locator": "scripts.build:types:watch"
        },
        {
          "path": "package.json",
          "locator": "devDependencies: typescript"
        }
      ],
      "upstream": "https://github.com/microsoft/TypeScript",
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": "ci-matrix",
      "method": "testing",
      "commands": [
        "analyze (language: 2)",
        "e2e (containers: 4)"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/codeql.yml",
          "locator": "jobs.analyze.strategy.matrix"
        },
        {
          "path": ".github/workflows/nightly-e2e.yml",
          "locator": "jobs.e2e.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": "playwright",
      "method": "testing",
      "commands": [
        "playwright test",
        "playwright test ${SPECS[@]} --shard=${SHARD}/${SHARD_TOTAL}",
        "playwright test --shard=${SHARD}/${SHARD_TOTAL}",
        "playwright test --ui",
        "playwright test $(node scripts/e2e-tier-scope.mjs pr-check nightly-check"
      ],
      "triggers": [
        "ci",
        "local"
      ],
      "evidence": [
        {
          "path": ".github/workflows/e2e-applitools.yml",
          "locator": "jobs.e2e-applitools.steps[6] (Playwright run (Applitools))"
        },
        {
          "path": ".github/workflows/e2e.yml",
          "locator": "jobs.e2e.steps[8] (Playwright run)"
        },
        {
          "path": ".github/workflows/nightly-e2e.yml",
          "locator": "jobs.e2e.steps[6] (Playwright run)"
        },
        {
          "path": ".github/workflows/refresh-sheet-order.yml",
          "locator": "jobs.refresh.steps[5] (Capture screenshots (full suite))"
        },
        {
          "path": "package.json",
          "locator": "scripts.playwright"
        },
        {
          "path": "package.json",
          "locator": "scripts.playwright:ui"
        },
        {
          "path": "package.json",
          "locator": "scripts.playwright:release-test"
        },
        {
          "path": "package.json",
          "locator": "scripts.playwright:release-test:extended"
        },
        {
          "path": "package.json",
          "locator": "devDependencies: @playwright/test"
        },
        {
          "path": "playwright.config.ts",
          "locator": "config file"
        }
      ],
      "upstream": "https://github.com/microsoft/playwright",
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": "vitest",
      "method": "testing",
      "commands": [
        "vitest --coverage",
        "vitest run ./packages/mermaid/src/diagrams/gantt/ganttDb.spec.ts",
        "vitest run",
        "vitest --watch",
        "vitest --watch packages/parser/tests/eventmodeling.test.ts"
      ],
      "triggers": [
        "ci",
        "local"
      ],
      "evidence": [
        {
          "path": ".github/workflows/test.yml",
          "locator": "jobs.unit-test.steps[4] (Run Unit Tests)"
        },
        {
          "path": "package.json",
          "locator": "scripts.test:coverage"
        },
        {
          "path": ".github/workflows/test.yml",
          "locator": "jobs.unit-test.steps[5] (Run ganttDb tests using California timezone)"
        },
        {
          "path": "package.json",
          "locator": "scripts.coverage"
        },
        {
          "path": "package.json",
          "locator": "scripts.ci"
        },
        {
          "path": "package.json",
          "locator": "scripts.test"
        },
        {
          "path": "package.json",
          "locator": "scripts.test:watch"
        },
        {
          "path": "package.json",
          "locator": "scripts.test:watch:em"
        },
        {
          "path": "package.json",
          "locator": "devDependencies: vitest"
        }
      ],
      "upstream": "https://github.com/vitest-dev/vitest",
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": "jest",
      "method": "testing",
      "commands": [],
      "triggers": [],
      "evidence": [
        {
          "path": "package.json",
          "locator": "devDependencies: jest"
        }
      ],
      "upstream": "https://github.com/jestjs/jest",
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": true
    },
    {
      "tool": "prettier",
      "method": "formatting",
      "commands": [
        "prettier --write .",
        "prettier --cache --check ."
      ],
      "triggers": [
        "ci",
        "local"
      ],
      "evidence": [
        {
          "path": ".github/workflows/autofix.yml",
          "locator": "jobs.autofix.steps[4] (Fix Linting)"
        },
        {
          "path": "package.json",
          "locator": "scripts.lint:fix"
        },
        {
          "path": "package.json",
          "locator": "scripts.lint"
        },
        {
          "path": "package.json",
          "locator": "scripts.test"
        },
        {
          "path": "package.json",
          "locator": "devDependencies: prettier"
        },
        {
          "path": ".prettierrc.json",
          "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": false
    },
    {
      "tool": "dependency-review",
      "method": "supply_chain",
      "commands": [
        "uses actions/dependency-review-action"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/dependency-review.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": [
        "argos upload e2e/argos-baseline --files ${globs[@]} --parallel --parallel-total $K --parallel-index $i"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/e2e.yml",
          "locator": "jobs.argos-batch.steps[6] (Upload images to Argos)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "argos upload e2e/screenshots --build-name Nightly E2E --files ${globs[@]} --parallel --parallel-total $K --parallel-index $i 2>&1"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/nightly-e2e.yml",
          "locator": "jobs.argos-upload.steps[5] (Upload screenshots to Argos)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "argos upload e2e/screenshots --files ${globs[@]} --parallel --parallel-total $K --parallel-index $i"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/e2e.yml",
          "locator": "jobs.argos-batch.steps[8] (Upload individual screenshots to Argos)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "case ${E2E_RESULT} in"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/e2e.yml",
          "locator": "jobs.e2e-required.steps[0] (Verify e2e outcome)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "diff README.md docs/README.md -u"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/check-readme-in-sync.yml",
          "locator": "jobs.check-readme.steps[1] (Check for difference in README.md and docs/README.md)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "emit_scoped $SPEC"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/e2e.yml",
          "locator": "jobs.detect-scope.steps[2] (Detect e2e scope)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "emit_scoped $SPEC_PATTERN_INPUT"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/e2e.yml",
          "locator": "jobs.detect-scope.steps[2] (Detect e2e scope)"
        }
      ],
      "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 2"
        },
        {
          "path": "package.json",
          "locator": "scripts.pre-commit"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "node scripts/e2e-diagram-scope.mjs"
      ],
      "triggers": [
        "ci",
        "local"
      ],
      "evidence": [
        {
          "path": ".github/workflows/e2e.yml",
          "locator": "jobs.detect-scope.steps[2] (Detect e2e scope)"
        },
        {
          "path": "package.json",
          "locator": "scripts.e2e:scope:detect"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "read -ra SPECS <<< $SPEC_PATTERN"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/e2e.yml",
          "locator": "jobs.e2e.steps[8] (Playwright run)"
        },
        {
          "path": ".github/workflows/nightly-e2e.yml",
          "locator": "jobs.e2e.steps[6] (Playwright run)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "rimraf .nyc_output coverage/playwright"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "package.json",
          "locator": "scripts.dev:coverage"
        },
        {
          "path": "package.json",
          "locator": "scripts.coverage:e2e:clean"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "set_output fixture_tier pr-check"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/e2e.yml",
          "locator": "jobs.detect-scope.steps[2] (Detect e2e scope)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "set_output fixture_tier pr-check,nightly-check"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/e2e.yml",
          "locator": "jobs.detect-scope.steps[2] (Detect e2e scope)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "set_output matrix $E2E_FULL_MATRIX"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/e2e.yml",
          "locator": "jobs.detect-scope.steps[2] (Detect e2e scope)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "set_output matrix $E2E_PR_NIGHTLY_MATRIX"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/e2e.yml",
          "locator": "jobs.detect-scope.steps[2] (Detect e2e scope)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "set_output matrix $E2E_SCOPED_MATRIX"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/e2e.yml",
          "locator": "jobs.detect-scope.steps[2] (Detect e2e scope)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "set_output required_tests_missing true"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/e2e.yml",
          "locator": "jobs.detect-scope.steps[2] (Detect e2e scope)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "set_output spec_pattern "
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/e2e.yml",
          "locator": "jobs.detect-scope.steps[2] (Detect e2e scope)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "set_output spec_pattern $1"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/e2e.yml",
          "locator": "jobs.detect-scope.steps[2] (Detect e2e scope)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "set_output spec_pattern $SPEC"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/e2e.yml",
          "locator": "jobs.detect-scope.steps[2] (Detect e2e scope)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "set_output spec_pattern SKIP"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/e2e.yml",
          "locator": "jobs.detect-scope.steps[2] (Detect e2e scope)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "tr ,  )"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "package.json",
          "locator": "scripts.playwright:release-test"
        },
        {
          "path": "package.json",
          "locator": "scripts.playwright:release-test:extended"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "tsx ./scripts/jison/lint.mts"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "package.json",
          "locator": "scripts.lint"
        },
        {
          "path": "package.json",
          "locator": "scripts.lint:jison"
        },
        {
          "path": "package.json",
          "locator": "scripts.test"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "tsx .build/types.ts"
      ],
      "triggers": [
        "ci",
        "local"
      ],
      "evidence": [
        {
          "path": ".github/workflows/e2e.yml",
          "locator": "jobs.e2e.steps[5] (Build)"
        },
        {
          "path": "package.json",
          "locator": "scripts.build"
        },
        {
          "path": "package.json",
          "locator": "scripts.build:types"
        },
        {
          "path": ".github/workflows/nightly-e2e.yml",
          "locator": "jobs.e2e.steps[4] (Build)"
        },
        {
          "path": ".github/workflows/refresh-sheet-order.yml",
          "locator": "jobs.refresh.steps[4] (Build)"
        },
        {
          "path": "package.json",
          "locator": "scripts.changeset:version"
        },
        {
          "path": "package.json",
          "locator": "scripts.prepare"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "tsx scripts/coverage.ts"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "package.json",
          "locator": "scripts.coverage:merge"
        },
        {
          "path": "package.json",
          "locator": "scripts.coverage"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "tsx scripts/fixCSpell.ts"
      ],
      "triggers": [
        "ci",
        "local"
      ],
      "evidence": [
        {
          "path": ".github/workflows/autofix.yml",
          "locator": "jobs.autofix.steps[4] (Fix Linting)"
        },
        {
          "path": "package.json",
          "locator": "scripts.lint:fix"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "tsx scripts/run-e2e-scoped.ts"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "package.json",
          "locator": "scripts.e2e:scope:run"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "tsx scripts/swimlanes-size.ts --compare --fail-on-growth"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "package.json",
          "locator": "scripts.swimlanes:size:check"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "tsx scripts/tsc-check.ts"
      ],
      "triggers": [
        "ci",
        "local"
      ],
      "evidence": [
        {
          "path": ".github/workflows/test.yml",
          "locator": "jobs.unit-test.steps[6] (Verify out-of-tree build with TypeScript)"
        },
        {
          "path": "package.json",
          "locator": "scripts.test:check:tsc"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    }
  ]
}
