{
  "definitions": [
    {
      "callable": true,
      "callees": [],
      "callers": [
        {
          "file": "runtime/entrypoints/coverage.entrypoint.ts",
          "name": "adapterErrors",
          "source": {
            "href": "https://banes-lab.com/anatomy/quality#file-quality-runtime-entrypoints-coverage-entrypoint-ts",
            "json": "https://banes-lab.com/json/source/quality/runtime/entrypoints/coverage.entrypoint.ts",
            "label": "runtime/entrypoints/coverage.entrypoint.ts",
            "markdown": "https://banes-lab.com/source/quality/runtime/entrypoints/coverage.entrypoint.ts.md",
            "ref": "anatomy:file-quality-runtime-entrypoints-coverage-entrypoint-ts"
          }
        },
        {
          "file": "runtime/entrypoints/coverage.entrypoint.ts",
          "name": "checkFullGate",
          "source": {
            "href": "https://banes-lab.com/anatomy/quality#file-quality-runtime-entrypoints-coverage-entrypoint-ts",
            "json": "https://banes-lab.com/json/source/quality/runtime/entrypoints/coverage.entrypoint.ts",
            "label": "runtime/entrypoints/coverage.entrypoint.ts",
            "markdown": "https://banes-lab.com/source/quality/runtime/entrypoints/coverage.entrypoint.ts.md",
            "ref": "anatomy:file-quality-runtime-entrypoints-coverage-entrypoint-ts"
          }
        }
      ],
      "exported": false,
      "flow": "leaf",
      "kind": "lexical_declaration",
      "line": 41,
      "name": "atOf",
      "signature": "const atOf = (record: InstallRecord): string => `polyglot-coverage[tool=${record.tool}]`;"
    },
    {
      "callable": true,
      "callees": [],
      "callers": [
        {
          "file": "runtime/entrypoints/coverage.entrypoint.ts",
          "name": "runnerErrors",
          "source": {
            "href": "https://banes-lab.com/anatomy/quality#file-quality-runtime-entrypoints-coverage-entrypoint-ts",
            "json": "https://banes-lab.com/json/source/quality/runtime/entrypoints/coverage.entrypoint.ts",
            "label": "runtime/entrypoints/coverage.entrypoint.ts",
            "markdown": "https://banes-lab.com/source/quality/runtime/entrypoints/coverage.entrypoint.ts.md",
            "ref": "anatomy:file-quality-runtime-entrypoints-coverage-entrypoint-ts"
          }
        }
      ],
      "exported": false,
      "flow": "leaf",
      "kind": "lexical_declaration",
      "line": 30,
      "name": "coversEcosystem",
      "signature": "const coversEcosystem = (tool: string, ecosystem: string): boolean =>"
    },
    {
      "callable": true,
      "callees": [],
      "callers": [
        {
          "file": "runtime/entrypoints/coverage.entrypoint.ts",
          "name": "adapterErrors",
          "source": {
            "href": "https://banes-lab.com/anatomy/quality#file-quality-runtime-entrypoints-coverage-entrypoint-ts",
            "json": "https://banes-lab.com/json/source/quality/runtime/entrypoints/coverage.entrypoint.ts",
            "label": "runtime/entrypoints/coverage.entrypoint.ts",
            "markdown": "https://banes-lab.com/source/quality/runtime/entrypoints/coverage.entrypoint.ts.md",
            "ref": "anatomy:file-quality-runtime-entrypoints-coverage-entrypoint-ts"
          }
        }
      ],
      "exported": false,
      "flow": "leaf",
      "kind": "lexical_declaration",
      "line": 34,
      "name": "hasAdapter",
      "signature": "const hasAdapter = (tool: string): boolean =>"
    },
    {
      "callable": true,
      "callees": [
        {
          "file": "runtime/entrypoints/coverage.entrypoint.ts",
          "name": "atOf",
          "source": {
            "href": "https://banes-lab.com/anatomy/quality#file-quality-runtime-entrypoints-coverage-entrypoint-ts",
            "json": "https://banes-lab.com/json/source/quality/runtime/entrypoints/coverage.entrypoint.ts",
            "label": "runtime/entrypoints/coverage.entrypoint.ts",
            "markdown": "https://banes-lab.com/source/quality/runtime/entrypoints/coverage.entrypoint.ts.md",
            "ref": "anatomy:file-quality-runtime-entrypoints-coverage-entrypoint-ts"
          }
        },
        {
          "file": "runtime/entrypoints/coverage.entrypoint.ts",
          "name": "hasAdapter",
          "source": {
            "href": "https://banes-lab.com/anatomy/quality#file-quality-runtime-entrypoints-coverage-entrypoint-ts",
            "json": "https://banes-lab.com/json/source/quality/runtime/entrypoints/coverage.entrypoint.ts",
            "label": "runtime/entrypoints/coverage.entrypoint.ts",
            "markdown": "https://banes-lab.com/source/quality/runtime/entrypoints/coverage.entrypoint.ts.md",
            "ref": "anatomy:file-quality-runtime-entrypoints-coverage-entrypoint-ts"
          }
        }
      ],
      "callers": [],
      "exported": false,
      "flow": "entry",
      "kind": "lexical_declaration",
      "line": 56,
      "name": "adapterErrors",
      "signature": "const adapterErrors = function adapterErrors(record: InstallRecord, kind: string): string[] {"
    },
    {
      "callable": true,
      "callees": [
        {
          "file": "runtime/entrypoints/coverage.entrypoint.ts",
          "name": "coversEcosystem",
          "source": {
            "href": "https://banes-lab.com/anatomy/quality#file-quality-runtime-entrypoints-coverage-entrypoint-ts",
            "json": "https://banes-lab.com/json/source/quality/runtime/entrypoints/coverage.entrypoint.ts",
            "label": "runtime/entrypoints/coverage.entrypoint.ts",
            "markdown": "https://banes-lab.com/source/quality/runtime/entrypoints/coverage.entrypoint.ts.md",
            "ref": "anatomy:file-quality-runtime-entrypoints-coverage-entrypoint-ts"
          }
        }
      ],
      "callers": [],
      "exported": false,
      "flow": "entry",
      "kind": "lexical_declaration",
      "line": 43,
      "name": "runnerErrors",
      "signature": "const runnerErrors = function runnerErrors(record: InstallRecord, kind: string): string[] {"
    },
    {
      "callable": true,
      "callees": [
        {
          "file": "runtime/entrypoints/coverage.entrypoint.ts",
          "name": "atOf",
          "source": {
            "href": "https://banes-lab.com/anatomy/quality#file-quality-runtime-entrypoints-coverage-entrypoint-ts",
            "json": "https://banes-lab.com/json/source/quality/runtime/entrypoints/coverage.entrypoint.ts",
            "label": "runtime/entrypoints/coverage.entrypoint.ts",
            "markdown": "https://banes-lab.com/source/quality/runtime/entrypoints/coverage.entrypoint.ts.md",
            "ref": "anatomy:file-quality-runtime-entrypoints-coverage-entrypoint-ts"
          }
        }
      ],
      "callers": [],
      "exported": false,
      "flow": "entry",
      "kind": "lexical_declaration",
      "line": 65,
      "name": "checkFullGate",
      "signature": "const checkFullGate = function checkFullGate(record: InstallRecord): string[] {"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 18,
      "name": "JSON_LOG_INDENT",
      "signature": "const JSON_LOG_INDENT = 2;"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 19,
      "name": "INDEX_FILE",
      "signature": "const INDEX_FILE = \"index.generated.json\";"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 20,
      "name": "VALIDATOR",
      "signature": "const VALIDATOR = \"polyglot-coverage\";"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 22,
      "name": "registryRecords",
      "signature": "const registryRecords: InstallRecord[] = loadInstallRegistry().records;"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 23,
      "name": "descriptorTools",
      "signature": "const descriptorTools = new Set(loadDescriptors().descriptors.map((descriptor) => descriptor.tool));"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 25,
      "name": "runners",
      "signature": "const runners = (await loadTools()).map((runner) => ({ ecosystems: [...runner.ecosystems], tool: runner.tool }));"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 26,
      "name": "runnerTools",
      "signature": "const runnerTools = new Set(runners.map((r) => r.tool));"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 27,
      "name": "runnerEcosystems",
      "signature": "const runnerEcosystems = new Map<string, string[]>(runners.map((r) => [r.tool, r.ecosystems]));"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 28,
      "name": "lintEcosystems",
      "signature": "const lintEcosystems = new Set(CONCERNS.lint.ecosystems);"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 33,
      "name": "adaptersDir",
      "signature": "const adaptersDir = absolutePath(\"govlab.quality.adapters\");"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 37,
      "name": "errors",
      "signature": "const errors = [];"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 38,
      "name": "unclassified",
      "signature": "const unclassified = [];"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 39,
      "name": "classified",
      "signature": "let classified = 0;"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 66,
      "name": "errs",
      "signature": "const errs = [...adapterErrors(record, \"full-gate\"), ...runnerErrors(record, \"full-gate\")];"
    },
    {
      "callable": true,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 75,
      "name": "checkExcluded",
      "signature": "const checkExcluded = function checkExcluded(record: InstallRecord): string[] {"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 80,
      "name": "lowered",
      "signature": "const lowered = record.reason.toLowerCase();"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 81,
      "name": "banned",
      "signature": "const banned = [\"redundant\", \"subsumed by\", \"double-configure\", \"double-gate\", \"double-report\"];"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 82,
      "name": "hit",
      "signature": "const hit = banned.find((phrase) => lowered.includes(phrase));"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 90,
      "name": "CHECKERS",
      "signature": "const CHECKERS: Record<string, (record: InstallRecord) => string[]> = {"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 102,
      "name": "{ disposition }",
      "signature": "const { disposition } = record;"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 107,
      "name": "checker",
      "signature": "const checker = CHECKERS[disposition];"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 135,
      "name": "classification",
      "signature": "const classification = loadEcosystems();"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 136,
      "name": "catalogIndex",
      "signature": "const catalogIndex = jsonRecord(readFileSync(absolutePath(\"govlab.quality.generated\", INDEX_FILE), \"utf8\"));"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 137,
      "name": "catalogEcosystems",
      "signature": "const catalogEcosystems = recordAt(catalogIndex, \"byEcosystem\");"
    },
    {
      "callable": true,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 139,
      "name": "classificationErrors",
      "signature": "const classificationErrors = function classificationErrors(ecosystem: string, entry: unknown): string[] {"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 140,
      "name": "at",
      "signature": "const at = `polyglot-coverage[ecosystem=${ecosystem}]`;"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 147,
      "name": "{ markers }",
      "signature": "const { markers } = entry;"
    }
  ],
  "document": null,
  "findings": [],
  "generated": false,
  "href": "https://banes-lab.com/anatomy/quality#file-quality-runtime-entrypoints-coverage-entrypoint-ts",
  "language": "typescript",
  "layer": "runtime",
  "name": "coverage.entrypoint.ts",
  "path": "runtime/entrypoints/coverage.entrypoint.ts",
  "ref": "anatomy:file-quality-runtime-entrypoints-coverage-entrypoint-ts",
  "relations": [
    {
      "links": [
        {
          "href": "https://banes-lab.com/anatomy/quality#folder-quality-runtime-entrypoints",
          "json": "https://banes-lab.com/json/anatomy/quality/folder-quality-runtime-entrypoints",
          "label": "runtime/entrypoints",
          "markdown": "https://banes-lab.com/anatomy/quality/folder-quality-runtime-entrypoints.md",
          "ref": "chapter:/anatomy/quality#folder-quality-runtime-entrypoints"
        }
      ],
      "relation": "contained-in"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology#architecture-extension-points",
          "json": "https://banes-lab.com/json/records/architecture/extension-points",
          "label": "Extension Points",
          "markdown": "https://banes-lab.com/records/architecture/extension-points.md",
          "ref": "architecture:extension-points"
        }
      ],
      "relation": "enforces"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/anatomy/quality#folder-quality-runtime-entrypoints",
          "json": "https://banes-lab.com/json/anatomy/quality/folder-quality-runtime-entrypoints",
          "label": "runtime/entrypoints",
          "markdown": "https://banes-lab.com/anatomy/quality/folder-quality-runtime-entrypoints.md",
          "ref": "chapter:/anatomy/quality#folder-quality-runtime-entrypoints"
        }
      ],
      "relation": "linked-from"
    }
  ],
  "slots": {
    "concern": "entrypoint",
    "subject": "coverage",
    "variant": null
  },
  "stats": {
    "bytes": 7203,
    "callable": 8,
    "definitions": 33,
    "edges": 4,
    "exported": 0,
    "files": 1,
    "findings": {},
    "flows": {
      "leaf": 3,
      "entry": 3,
      "isolated": 27
    },
    "lines": {
      "blank": 21,
      "code": 149,
      "total": 170
    }
  },
  "summary": "149 lines of code and 33 definitions.",
  "text": "https://banes-lab.com/source/quality/runtime/entrypoints/coverage.entrypoint.ts.txt",
  "tree": "quality",
  "siblings": {
    "next": {
      "href": "https://banes-lab.com/anatomy/quality#file-quality-runtime-entrypoints-dependency-entrypoint-ts",
      "json": "https://banes-lab.com/json/source/quality/runtime/entrypoints/dependency.entrypoint.ts",
      "label": "runtime/entrypoints/dependency.entrypoint.ts",
      "markdown": "https://banes-lab.com/source/quality/runtime/entrypoints/dependency.entrypoint.ts.md",
      "ref": "anatomy:file-quality-runtime-entrypoints-dependency-entrypoint-ts"
    },
    "previous": {
      "href": "https://banes-lab.com/anatomy/quality#file-quality-runtime-entrypoints-config-entrypoint-ts",
      "json": "https://banes-lab.com/json/source/quality/runtime/entrypoints/config.entrypoint.ts",
      "label": "runtime/entrypoints/config.entrypoint.ts",
      "markdown": "https://banes-lab.com/source/quality/runtime/entrypoints/config.entrypoint.ts.md",
      "ref": "anatomy:file-quality-runtime-entrypoints-config-entrypoint-ts"
    }
  },
  "up": {
    "href": null,
    "json": "https://banes-lab.com/json/api/source/quality/runtime/entrypoints",
    "label": "runtime/entrypoints",
    "markdown": "https://banes-lab.com/api/source/quality/runtime/entrypoints.md",
    "ref": "api:source/quality/runtime/entrypoints"
  }
}
