{
  "definitions": [
    {
      "callable": true,
      "callees": [
        {
          "file": "runtime/entrypoints/rule.entrypoint.ts",
          "name": "stringField",
          "source": {
            "href": "https://banes-lab.com/anatomy/quality#file-quality-runtime-entrypoints-rule-entrypoint-ts",
            "json": "https://banes-lab.com/json/source/quality/runtime/entrypoints/rule.entrypoint.ts",
            "label": "runtime/entrypoints/rule.entrypoint.ts",
            "markdown": "https://banes-lab.com/source/quality/runtime/entrypoints/rule.entrypoint.ts.md",
            "ref": "anatomy:file-quality-runtime-entrypoints-rule-entrypoint-ts"
          }
        }
      ],
      "callers": [
        {
          "file": "runtime/entrypoints/rule.entrypoint.ts",
          "name": "loadTaxonomy",
          "source": {
            "href": "https://banes-lab.com/anatomy/quality#file-quality-runtime-entrypoints-rule-entrypoint-ts",
            "json": "https://banes-lab.com/json/source/quality/runtime/entrypoints/rule.entrypoint.ts",
            "label": "runtime/entrypoints/rule.entrypoint.ts",
            "markdown": "https://banes-lab.com/source/quality/runtime/entrypoints/rule.entrypoint.ts.md",
            "ref": "anatomy:file-quality-runtime-entrypoints-rule-entrypoint-ts"
          }
        },
        {
          "file": "runtime/entrypoints/rule.entrypoint.ts",
          "name": "loadTaxonomy",
          "source": {
            "href": "https://banes-lab.com/anatomy/quality#file-quality-runtime-entrypoints-rule-entrypoint-ts",
            "json": "https://banes-lab.com/json/source/quality/runtime/entrypoints/rule.entrypoint.ts",
            "label": "runtime/entrypoints/rule.entrypoint.ts",
            "markdown": "https://banes-lab.com/source/quality/runtime/entrypoints/rule.entrypoint.ts.md",
            "ref": "anatomy:file-quality-runtime-entrypoints-rule-entrypoint-ts"
          }
        }
      ],
      "exported": false,
      "flow": "relay",
      "kind": "lexical_declaration",
      "line": 58,
      "name": "tagsOf",
      "signature": "const tagsOf = function tagsOf(rows: unknown[], key: string): Set<string> {"
    },
    {
      "callable": true,
      "callees": [],
      "callers": [
        {
          "file": "runtime/entrypoints/rule.entrypoint.ts",
          "name": "concernFolderSegment",
          "source": {
            "href": "https://banes-lab.com/anatomy/quality#file-quality-runtime-entrypoints-rule-entrypoint-ts",
            "json": "https://banes-lab.com/json/source/quality/runtime/entrypoints/rule.entrypoint.ts",
            "label": "runtime/entrypoints/rule.entrypoint.ts",
            "markdown": "https://banes-lab.com/source/quality/runtime/entrypoints/rule.entrypoint.ts.md",
            "ref": "anatomy:file-quality-runtime-entrypoints-rule-entrypoint-ts"
          }
        },
        {
          "file": "runtime/entrypoints/rule.entrypoint.ts",
          "name": "walk",
          "source": {
            "href": "https://banes-lab.com/anatomy/quality#file-quality-runtime-entrypoints-rule-entrypoint-ts",
            "json": "https://banes-lab.com/json/source/quality/runtime/entrypoints/rule.entrypoint.ts",
            "label": "runtime/entrypoints/rule.entrypoint.ts",
            "markdown": "https://banes-lab.com/source/quality/runtime/entrypoints/rule.entrypoint.ts.md",
            "ref": "anatomy:file-quality-runtime-entrypoints-rule-entrypoint-ts"
          }
        }
      ],
      "exported": false,
      "flow": "leaf",
      "kind": "lexical_declaration",
      "line": 23,
      "name": "posix",
      "signature": "const posix = function posix(value: string): string {"
    },
    {
      "callable": true,
      "callees": [
        {
          "file": "runtime/entrypoints/rule.entrypoint.ts",
          "name": "posix",
          "source": {
            "href": "https://banes-lab.com/anatomy/quality#file-quality-runtime-entrypoints-rule-entrypoint-ts",
            "json": "https://banes-lab.com/json/source/quality/runtime/entrypoints/rule.entrypoint.ts",
            "label": "runtime/entrypoints/rule.entrypoint.ts",
            "markdown": "https://banes-lab.com/source/quality/runtime/entrypoints/rule.entrypoint.ts.md",
            "ref": "anatomy:file-quality-runtime-entrypoints-rule-entrypoint-ts"
          }
        }
      ],
      "callers": [
        {
          "file": "runtime/entrypoints/rule.entrypoint.ts",
          "name": "collectDirs",
          "source": {
            "href": "https://banes-lab.com/anatomy/quality#file-quality-runtime-entrypoints-rule-entrypoint-ts",
            "json": "https://banes-lab.com/json/source/quality/runtime/entrypoints/rule.entrypoint.ts",
            "label": "runtime/entrypoints/rule.entrypoint.ts",
            "markdown": "https://banes-lab.com/source/quality/runtime/entrypoints/rule.entrypoint.ts.md",
            "ref": "anatomy:file-quality-runtime-entrypoints-rule-entrypoint-ts"
          }
        }
      ],
      "exported": false,
      "flow": "relay",
      "kind": "lexical_declaration",
      "line": 29,
      "name": "walk",
      "signature": "const walk = function walk(absDir: string): void {"
    },
    {
      "callable": true,
      "callees": [
        {
          "file": "runtime/entrypoints/rule.entrypoint.ts",
          "name": "isRecord",
          "source": {
            "href": "https://banes-lab.com/anatomy/quality#file-quality-runtime-entrypoints-rule-entrypoint-ts",
            "json": "https://banes-lab.com/json/source/quality/runtime/entrypoints/rule.entrypoint.ts",
            "label": "runtime/entrypoints/rule.entrypoint.ts",
            "markdown": "https://banes-lab.com/source/quality/runtime/entrypoints/rule.entrypoint.ts.md",
            "ref": "anatomy:file-quality-runtime-entrypoints-rule-entrypoint-ts"
          }
        }
      ],
      "callers": [
        {
          "file": "runtime/entrypoints/rule.entrypoint.ts",
          "name": "tagsOf",
          "source": {
            "href": "https://banes-lab.com/anatomy/quality#file-quality-runtime-entrypoints-rule-entrypoint-ts",
            "json": "https://banes-lab.com/json/source/quality/runtime/entrypoints/rule.entrypoint.ts",
            "label": "runtime/entrypoints/rule.entrypoint.ts",
            "markdown": "https://banes-lab.com/source/quality/runtime/entrypoints/rule.entrypoint.ts.md",
            "ref": "anatomy:file-quality-runtime-entrypoints-rule-entrypoint-ts"
          }
        }
      ],
      "exported": false,
      "flow": "relay",
      "kind": "lexical_declaration",
      "line": 49,
      "name": "stringField",
      "signature": "const stringField = function stringField(value: unknown, key: string): string {"
    },
    {
      "callable": true,
      "callees": [
        {
          "file": "runtime/entrypoints/rule.entrypoint.ts",
          "name": "doubleQuoted",
          "source": {
            "href": "https://banes-lab.com/anatomy/quality#file-quality-runtime-entrypoints-rule-entrypoint-ts",
            "json": "https://banes-lab.com/json/source/quality/runtime/entrypoints/rule.entrypoint.ts",
            "label": "runtime/entrypoints/rule.entrypoint.ts",
            "markdown": "https://banes-lab.com/source/quality/runtime/entrypoints/rule.entrypoint.ts.md",
            "ref": "anatomy:file-quality-runtime-entrypoints-rule-entrypoint-ts"
          }
        }
      ],
      "callers": [
        {
          "file": "runtime/entrypoints/rule.entrypoint.ts",
          "name": "scan",
          "source": {
            "href": "https://banes-lab.com/anatomy/quality#file-quality-runtime-entrypoints-rule-entrypoint-ts",
            "json": "https://banes-lab.com/json/source/quality/runtime/entrypoints/rule.entrypoint.ts",
            "label": "runtime/entrypoints/rule.entrypoint.ts",
            "markdown": "https://banes-lab.com/source/quality/runtime/entrypoints/rule.entrypoint.ts.md",
            "ref": "anatomy:file-quality-runtime-entrypoints-rule-entrypoint-ts"
          }
        }
      ],
      "exported": false,
      "flow": "relay",
      "kind": "lexical_declaration",
      "line": 166,
      "name": "findingsInLine",
      "signature": "const findingsInLine = function findingsInLine(rule: string, line: string, index: number): Finding[] {"
    },
    {
      "callable": true,
      "callees": [
        {
          "file": "runtime/entrypoints/rule.entrypoint.ts",
          "name": "isRuleFile",
          "source": {
            "href": "https://banes-lab.com/anatomy/quality#file-quality-runtime-entrypoints-rule-entrypoint-ts",
            "json": "https://banes-lab.com/json/source/quality/runtime/entrypoints/rule.entrypoint.ts",
            "label": "runtime/entrypoints/rule.entrypoint.ts",
            "markdown": "https://banes-lab.com/source/quality/runtime/entrypoints/rule.entrypoint.ts.md",
            "ref": "anatomy:file-quality-runtime-entrypoints-rule-entrypoint-ts"
          }
        }
      ],
      "callers": [
        {
          "file": "runtime/entrypoints/rule.entrypoint.ts",
          "name": "scan",
          "source": {
            "href": "https://banes-lab.com/anatomy/quality#file-quality-runtime-entrypoints-rule-entrypoint-ts",
            "json": "https://banes-lab.com/json/source/quality/runtime/entrypoints/rule.entrypoint.ts",
            "label": "runtime/entrypoints/rule.entrypoint.ts",
            "markdown": "https://banes-lab.com/source/quality/runtime/entrypoints/rule.entrypoint.ts.md",
            "ref": "anatomy:file-quality-runtime-entrypoints-rule-entrypoint-ts"
          }
        }
      ],
      "exported": false,
      "flow": "relay",
      "kind": "lexical_declaration",
      "line": 176,
      "name": "ruleFiles",
      "signature": "const ruleFiles = function ruleFiles(): { name: string; text: string }[] {"
    },
    {
      "callable": true,
      "callees": [],
      "callers": [
        {
          "file": "runtime/entrypoints/rule.entrypoint.ts",
          "name": "stringField",
          "source": {
            "href": "https://banes-lab.com/anatomy/quality#file-quality-runtime-entrypoints-rule-entrypoint-ts",
            "json": "https://banes-lab.com/json/source/quality/runtime/entrypoints/rule.entrypoint.ts",
            "label": "runtime/entrypoints/rule.entrypoint.ts",
            "markdown": "https://banes-lab.com/source/quality/runtime/entrypoints/rule.entrypoint.ts.md",
            "ref": "anatomy:file-quality-runtime-entrypoints-rule-entrypoint-ts"
          }
        }
      ],
      "exported": false,
      "flow": "leaf",
      "kind": "lexical_declaration",
      "line": 45,
      "name": "isRecord",
      "signature": "const isRecord = function isRecord(value: unknown): value is Record<string, unknown> {"
    },
    {
      "callable": true,
      "callees": [],
      "callers": [
        {
          "file": "runtime/entrypoints/rule.entrypoint.ts",
          "name": "loadTaxonomy",
          "source": {
            "href": "https://banes-lab.com/anatomy/quality#file-quality-runtime-entrypoints-rule-entrypoint-ts",
            "json": "https://banes-lab.com/json/source/quality/runtime/entrypoints/rule.entrypoint.ts",
            "label": "runtime/entrypoints/rule.entrypoint.ts",
            "markdown": "https://banes-lab.com/source/quality/runtime/entrypoints/rule.entrypoint.ts.md",
            "ref": "anatomy:file-quality-runtime-entrypoints-rule-entrypoint-ts"
          }
        }
      ],
      "exported": false,
      "flow": "leaf",
      "kind": "lexical_declaration",
      "line": 53,
      "name": "arrayField",
      "signature": "const arrayField = function arrayField(value: unknown, key: string): unknown[] {"
    },
    {
      "callable": true,
      "callees": [],
      "callers": [
        {
          "file": "runtime/entrypoints/rule.entrypoint.ts",
          "name": "literalFinding",
          "source": {
            "href": "https://banes-lab.com/anatomy/quality#file-quality-runtime-entrypoints-rule-entrypoint-ts",
            "json": "https://banes-lab.com/json/source/quality/runtime/entrypoints/rule.entrypoint.ts",
            "label": "runtime/entrypoints/rule.entrypoint.ts",
            "markdown": "https://banes-lab.com/source/quality/runtime/entrypoints/rule.entrypoint.ts.md",
            "ref": "anatomy:file-quality-runtime-entrypoints-rule-entrypoint-ts"
          }
        }
      ],
      "exported": false,
      "flow": "leaf",
      "kind": "lexical_declaration",
      "line": 95,
      "name": "structuralPath",
      "signature": "const structuralPath = function structuralPath(value: string): boolean {"
    },
    {
      "callable": true,
      "callees": [],
      "callers": [
        {
          "file": "runtime/entrypoints/rule.entrypoint.ts",
          "name": "findingsInLine",
          "source": {
            "href": "https://banes-lab.com/anatomy/quality#file-quality-runtime-entrypoints-rule-entrypoint-ts",
            "json": "https://banes-lab.com/json/source/quality/runtime/entrypoints/rule.entrypoint.ts",
            "label": "runtime/entrypoints/rule.entrypoint.ts",
            "markdown": "https://banes-lab.com/source/quality/runtime/entrypoints/rule.entrypoint.ts.md",
            "ref": "anatomy:file-quality-runtime-entrypoints-rule-entrypoint-ts"
          }
        }
      ],
      "exported": false,
      "flow": "leaf",
      "kind": "lexical_declaration",
      "line": 127,
      "name": "doubleQuoted",
      "signature": "const doubleQuoted = function doubleQuoted(line: string): string[] {"
    },
    {
      "callable": true,
      "callees": [],
      "callers": [
        {
          "file": "runtime/entrypoints/rule.entrypoint.ts",
          "name": "ruleFiles",
          "source": {
            "href": "https://banes-lab.com/anatomy/quality#file-quality-runtime-entrypoints-rule-entrypoint-ts",
            "json": "https://banes-lab.com/json/source/quality/runtime/entrypoints/rule.entrypoint.ts",
            "label": "runtime/entrypoints/rule.entrypoint.ts",
            "markdown": "https://banes-lab.com/source/quality/runtime/entrypoints/rule.entrypoint.ts.md",
            "ref": "anatomy:file-quality-runtime-entrypoints-rule-entrypoint-ts"
          }
        }
      ],
      "exported": false,
      "flow": "leaf",
      "kind": "lexical_declaration",
      "line": 144,
      "name": "isRuleFile",
      "signature": "const isRuleFile = function isRuleFile(name: string, text: string): boolean {"
    },
    {
      "callable": true,
      "callees": [
        {
          "file": "runtime/entrypoints/rule.entrypoint.ts",
          "name": "arrayField",
          "source": {
            "href": "https://banes-lab.com/anatomy/quality#file-quality-runtime-entrypoints-rule-entrypoint-ts",
            "json": "https://banes-lab.com/json/source/quality/runtime/entrypoints/rule.entrypoint.ts",
            "label": "runtime/entrypoints/rule.entrypoint.ts",
            "markdown": "https://banes-lab.com/source/quality/runtime/entrypoints/rule.entrypoint.ts.md",
            "ref": "anatomy:file-quality-runtime-entrypoints-rule-entrypoint-ts"
          }
        },
        {
          "file": "runtime/entrypoints/rule.entrypoint.ts",
          "name": "tagsOf",
          "source": {
            "href": "https://banes-lab.com/anatomy/quality#file-quality-runtime-entrypoints-rule-entrypoint-ts",
            "json": "https://banes-lab.com/json/source/quality/runtime/entrypoints/rule.entrypoint.ts",
            "label": "runtime/entrypoints/rule.entrypoint.ts",
            "markdown": "https://banes-lab.com/source/quality/runtime/entrypoints/rule.entrypoint.ts.md",
            "ref": "anatomy:file-quality-runtime-entrypoints-rule-entrypoint-ts"
          }
        },
        {
          "file": "runtime/entrypoints/rule.entrypoint.ts",
          "name": "tagsOf",
          "source": {
            "href": "https://banes-lab.com/anatomy/quality#file-quality-runtime-entrypoints-rule-entrypoint-ts",
            "json": "https://banes-lab.com/json/source/quality/runtime/entrypoints/rule.entrypoint.ts",
            "label": "runtime/entrypoints/rule.entrypoint.ts",
            "markdown": "https://banes-lab.com/source/quality/runtime/entrypoints/rule.entrypoint.ts.md",
            "ref": "anatomy:file-quality-runtime-entrypoints-rule-entrypoint-ts"
          }
        }
      ],
      "callers": [],
      "exported": false,
      "flow": "entry",
      "kind": "lexical_declaration",
      "line": 62,
      "name": "loadTaxonomy",
      "signature": "const loadTaxonomy = async function loadTaxonomy(): Promise<{"
    },
    {
      "callable": true,
      "callees": [
        {
          "file": "runtime/entrypoints/rule.entrypoint.ts",
          "name": "findingsInLine",
          "source": {
            "href": "https://banes-lab.com/anatomy/quality#file-quality-runtime-entrypoints-rule-entrypoint-ts",
            "json": "https://banes-lab.com/json/source/quality/runtime/entrypoints/rule.entrypoint.ts",
            "label": "runtime/entrypoints/rule.entrypoint.ts",
            "markdown": "https://banes-lab.com/source/quality/runtime/entrypoints/rule.entrypoint.ts.md",
            "ref": "anatomy:file-quality-runtime-entrypoints-rule-entrypoint-ts"
          }
        },
        {
          "file": "runtime/entrypoints/rule.entrypoint.ts",
          "name": "ruleFiles",
          "source": {
            "href": "https://banes-lab.com/anatomy/quality#file-quality-runtime-entrypoints-rule-entrypoint-ts",
            "json": "https://banes-lab.com/json/source/quality/runtime/entrypoints/rule.entrypoint.ts",
            "label": "runtime/entrypoints/rule.entrypoint.ts",
            "markdown": "https://banes-lab.com/source/quality/runtime/entrypoints/rule.entrypoint.ts.md",
            "ref": "anatomy:file-quality-runtime-entrypoints-rule-entrypoint-ts"
          }
        }
      ],
      "callers": [],
      "exported": false,
      "flow": "entry",
      "kind": "lexical_declaration",
      "line": 188,
      "name": "scan",
      "signature": "const scan = function scan(): Finding[] {"
    },
    {
      "callable": true,
      "callees": [
        {
          "file": "runtime/entrypoints/rule.entrypoint.ts",
          "name": "walk",
          "source": {
            "href": "https://banes-lab.com/anatomy/quality#file-quality-runtime-entrypoints-rule-entrypoint-ts",
            "json": "https://banes-lab.com/json/source/quality/runtime/entrypoints/rule.entrypoint.ts",
            "label": "runtime/entrypoints/rule.entrypoint.ts",
            "markdown": "https://banes-lab.com/source/quality/runtime/entrypoints/rule.entrypoint.ts.md",
            "ref": "anatomy:file-quality-runtime-entrypoints-rule-entrypoint-ts"
          }
        }
      ],
      "callers": [],
      "exported": false,
      "flow": "entry",
      "kind": "lexical_declaration",
      "line": 27,
      "name": "collectDirs",
      "signature": "const collectDirs = function collectDirs(): Set<string> {"
    },
    {
      "callable": true,
      "callees": [
        {
          "file": "runtime/entrypoints/rule.entrypoint.ts",
          "name": "posix",
          "source": {
            "href": "https://banes-lab.com/anatomy/quality#file-quality-runtime-entrypoints-rule-entrypoint-ts",
            "json": "https://banes-lab.com/json/source/quality/runtime/entrypoints/rule.entrypoint.ts",
            "label": "runtime/entrypoints/rule.entrypoint.ts",
            "markdown": "https://banes-lab.com/source/quality/runtime/entrypoints/rule.entrypoint.ts.md",
            "ref": "anatomy:file-quality-runtime-entrypoints-rule-entrypoint-ts"
          }
        }
      ],
      "callers": [],
      "exported": false,
      "flow": "entry",
      "kind": "lexical_declaration",
      "line": 83,
      "name": "concernFolderSegment",
      "signature": "const concernFolderSegment = function concernFolderSegment(value: string): string | null {"
    },
    {
      "callable": true,
      "callees": [
        {
          "file": "runtime/entrypoints/rule.entrypoint.ts",
          "name": "structuralPath",
          "source": {
            "href": "https://banes-lab.com/anatomy/quality#file-quality-runtime-entrypoints-rule-entrypoint-ts",
            "json": "https://banes-lab.com/json/source/quality/runtime/entrypoints/rule.entrypoint.ts",
            "label": "runtime/entrypoints/rule.entrypoint.ts",
            "markdown": "https://banes-lab.com/source/quality/runtime/entrypoints/rule.entrypoint.ts.md",
            "ref": "anatomy:file-quality-runtime-entrypoints-rule-entrypoint-ts"
          }
        }
      ],
      "callers": [],
      "exported": false,
      "flow": "entry",
      "kind": "lexical_declaration",
      "line": 151,
      "name": "literalFinding",
      "signature": "const literalFinding = function literalFinding(value: string): { kind: Finding[\"kind\"]; tag: string } | null {"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "interface_declaration",
      "line": 10,
      "name": "Finding",
      "signature": "interface Finding {"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 18,
      "name": "RULE_HOST",
      "signature": "const RULE_HOST = absolutePath(\"govlabHost.rules\");"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 19,
      "name": "TAXONOMY_CONFIG",
      "signature": "const TAXONOMY_CONFIG = absolutePath(\"govlabHost.taxonomy\");"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 20,
      "name": "GOVERNED_SRC",
      "signature": "const GOVERNED_SRC = absolutePath(\"app.member\");"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 21,
      "name": "MIN_PATH_SEGMENTS",
      "signature": "const MIN_PATH_SEGMENTS = 2;"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 28,
      "name": "dirs",
      "signature": "const dirs = new Set<string>();"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 31,
      "name": "p",
      "signature": "const p = join(absDir, name);"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 54,
      "name": "declared",
      "signature": "const declared = isRecord(value) ? value[key] : undefined;"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 67,
      "name": "loaded",
      "signature": "const loaded: unknown = await import(pathToFileURL(TAXONOMY_CONFIG).href);"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 68,
      "name": "taxonomy",
      "signature": "const taxonomy = isRecord(loaded) ? loaded[\"taxonomy\"] : undefined;"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 69,
      "name": "rows",
      "signature": "const rows = arrayField(taxonomy, \"concerns\");"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 70,
      "name": "grammar",
      "signature": "const grammar = isRecord(taxonomy) ? taxonomy[\"grammar\"] : undefined;"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 80,
      "name": "DIRS",
      "signature": "const DIRS = collectDirs();"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 81,
      "name": "{ concerns, folders, markers }",
      "signature": "const { concerns, folders, markers } = await loadTaxonomy();"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 99,
      "name": "norm",
      "signature": "const norm = posix(value);"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 103,
      "name": "trimmed",
      "signature": "const trimmed = norm.startsWith(\"/\") ? norm.slice(1) : norm;"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 104,
      "name": "withSlash",
      "signature": "const withSlash = trimmed.endsWith(\"/\") ? trimmed : `${trimmed}/`;"
    },
    {
      "callable": true,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 113,
      "name": "concernSuffix",
      "signature": "const concernSuffix = function concernSuffix(value: string): string | null {"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 117,
      "name": "head",
      "signature": "const head = value.slice(0, value.lastIndexOf(\".\"));"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 125,
      "name": "QUOTE",
      "signature": "const QUOTE = '\"';"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 128,
      "name": "out",
      "signature": "const out: string[] = [];"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 129,
      "name": "at",
      "signature": "let at = line.indexOf(QUOTE);"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 131,
      "name": "close",
      "signature": "const close = line.indexOf(QUOTE, at + 1);"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 135,
      "name": "body",
      "signature": "const body = line.slice(at + 1, close);"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 158,
      "name": "tag",
      "signature": "const tag = concernSuffix(value);"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 162,
      "name": "folder",
      "signature": "const folder = concernFolderSegment(value);"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 171,
      "name": "found",
      "signature": "const found = literalFinding(value);"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 177,
      "name": "files",
      "signature": "const files: { name: string; text: string }[] = [];"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 179,
      "name": "abs",
      "signature": "const abs = join(RULE_HOST, name);"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 180,
      "name": "text",
      "signature": "const text = statSync(abs).isDirectory() ? \"\" : readFileSync(abs, \"utf8\");"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 194,
      "name": "findings",
      "signature": "const findings = scan();"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 203,
      "name": "why",
      "signature": "const why = {"
    }
  ],
  "document": null,
  "findings": [],
  "generated": false,
  "href": "https://banes-lab.com/anatomy/quality#file-quality-runtime-entrypoints-rule-entrypoint-ts",
  "language": "typescript",
  "layer": "runtime",
  "name": "rule.entrypoint.ts",
  "path": "runtime/entrypoints/rule.entrypoint.ts",
  "ref": "anatomy:file-quality-runtime-entrypoints-rule-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-single-source-of-truth",
          "json": "https://banes-lab.com/json/records/architecture/single-source-of-truth",
          "label": "Single Source of Truth",
          "markdown": "https://banes-lab.com/records/architecture/single-source-of-truth.md",
          "ref": "architecture:single-source-of-truth"
        }
      ],
      "relation": "enforces"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology#architecture-hardcoded-configuration",
          "json": "https://banes-lab.com/json/records/architecture/hardcoded-configuration",
          "label": "Hardcoded Configuration",
          "markdown": "https://banes-lab.com/records/architecture/hardcoded-configuration.md",
          "ref": "architecture:hardcoded-configuration"
        }
      ],
      "relation": "detects"
    },
    {
      "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": "rule",
    "variant": null
  },
  "stats": {
    "bytes": 7192,
    "callable": 17,
    "definitions": 48,
    "edges": 13,
    "exported": 0,
    "files": 1,
    "findings": {},
    "flows": {
      "relay": 5,
      "leaf": 6,
      "entry": 5,
      "isolated": 32
    },
    "lines": {
      "blank": 24,
      "code": 186,
      "total": 210
    }
  },
  "summary": "186 lines of code and 48 definitions.",
  "text": "https://banes-lab.com/source/quality/runtime/entrypoints/rule.entrypoint.ts.txt",
  "tree": "quality",
  "siblings": {
    "next": {
      "href": "https://banes-lab.com/anatomy/quality#file-quality-runtime-entrypoints-source-entrypoint-ts",
      "json": "https://banes-lab.com/json/source/quality/runtime/entrypoints/source.entrypoint.ts",
      "label": "runtime/entrypoints/source.entrypoint.ts",
      "markdown": "https://banes-lab.com/source/quality/runtime/entrypoints/source.entrypoint.ts.md",
      "ref": "anatomy:file-quality-runtime-entrypoints-source-entrypoint-ts"
    },
    "previous": {
      "href": "https://banes-lab.com/anatomy/quality#file-quality-runtime-entrypoints-manifest-entrypoint-ts",
      "json": "https://banes-lab.com/json/source/quality/runtime/entrypoints/manifest.entrypoint.ts",
      "label": "runtime/entrypoints/manifest.entrypoint.ts",
      "markdown": "https://banes-lab.com/source/quality/runtime/entrypoints/manifest.entrypoint.ts.md",
      "ref": "anatomy:file-quality-runtime-entrypoints-manifest-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"
  }
}
