{
  "definitions": [
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "interface_declaration",
      "line": 11,
      "name": "RunnerReport",
      "signature": "interface RunnerReport {"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "type_alias_declaration",
      "line": 27,
      "name": "Registered",
      "signature": "type Registered = Awaited<ReturnType<typeof discoverRules>>[\"rules\"][number];"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "interface_declaration",
      "line": 29,
      "name": "RuleJudgment",
      "signature": "interface RuleJudgment {"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 35,
      "name": "UNTESTED",
      "signature": "const UNTESTED: Omit<GateOutcome, \"rule\"> = { detail: NO_FIXTURE_PAIR, state: \"untested\" };"
    },
    {
      "callable": true,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 37,
      "name": "judgeRule",
      "signature": "const judgeRule = function judgeRule("
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 47,
      "name": "missing",
      "signature": "const missing = unsuppliedReads(registered.declaration, fixture);"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 50,
      "name": "judged",
      "signature": "const judged = held.map((fixture) => ({"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 58,
      "name": "broken",
      "signature": "const broken = judged.find(({ outcome }) => !CLEAR_STATES.has(outcome.state))?.outcome;"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 59,
      "name": "outcome",
      "signature": "const outcome = broken ?? {"
    },
    {
      "callable": true,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 67,
      "name": "runGates",
      "signature": "export const runGates = async function runGates(repoRoot: string): Promise<RunnerReport> {"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 68,
      "name": "registry",
      "signature": "const registry = await discoverRules(repoRoot);"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 69,
      "name": "fixtures",
      "signature": "const fixtures = await discoverFixtures(repoRoot);"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 70,
      "name": "declared",
      "signature": "const declared = fixtures.gates;"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 72,
      "name": "judgments",
      "signature": "const judgments = registry.rules.map((registered) =>"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 79,
      "name": "outcomes",
      "signature": "const outcomes = judgments.map((judgment) => judgment.outcome);"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 80,
      "name": "exposed",
      "signature": "const exposed = judgments.flatMap((judgment) => judgment.exposed);"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 81,
      "name": "verdicts",
      "signature": "const verdicts = worstVerdicts(judgments.flatMap((judgment) => judgment.verdicts));"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 82,
      "name": "movedVerdicts",
      "signature": "const movedVerdicts = movedOf(verdicts, priorKindVerdicts(repoRoot), exposed);"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 84,
      "name": "branches",
      "signature": "const branches = fixtures.branches.map((fixture) => judgeBranch(fixture));"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 86,
      "name": "proven",
      "signature": "const proven = countIn(outcomes, \"proven\");"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 87,
      "name": "exempt",
      "signature": "const exempt = countIn(outcomes, \"exempt\");"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 88,
      "name": "untested",
      "signature": "const untested = countIn(outcomes, \"untested\");"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 89,
      "name": "failed",
      "signature": "const failed = outcomes.length - proven - exempt - untested;"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 91,
      "name": "fixtured",
      "signature": "const fixtured = new Set("
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 94,
      "name": "declaredKinds",
      "signature": "const declaredKinds = registry.rules"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 97,
      "name": "unfixturedKinds",
      "signature": "const unfixturedKinds = declaredKinds.filter((kind) => !fixtured.has(kind));"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 99,
      "name": "branchesProven",
      "signature": "const branchesProven = branches.filter((outcome) => outcome.state === \"proven\").length;"
    }
  ],
  "document": null,
  "findings": [],
  "generated": false,
  "href": "https://banes-lab.com/anatomy/coordination#file-coordination-tools-core-runners-gate-runner-ts",
  "language": "typescript",
  "layer": "product",
  "name": "gate.runner.ts",
  "path": "tools/core/runners/gate.runner.ts",
  "ref": "anatomy:file-coordination-tools-core-runners-gate-runner-ts",
  "relations": [
    {
      "links": [
        {
          "href": "https://banes-lab.com/anatomy/coordination#folder-coordination-tools-core-runners",
          "json": "https://banes-lab.com/json/anatomy/coordination/folder-coordination-tools-core-runners",
          "label": "tools/core/runners",
          "markdown": "https://banes-lab.com/anatomy/coordination/folder-coordination-tools-core-runners.md",
          "ref": "chapter:/anatomy/coordination#folder-coordination-tools-core-runners"
        }
      ],
      "relation": "contained-in"
    }
  ],
  "slots": {
    "concern": "runner",
    "subject": "gate",
    "variant": null
  },
  "stats": {
    "bytes": 8735,
    "callable": 2,
    "definitions": 27,
    "edges": 0,
    "exported": 18,
    "files": 1,
    "findings": {},
    "flows": {
      "isolated": 27
    },
    "lines": {
      "blank": 13,
      "code": 145,
      "total": 158
    }
  },
  "summary": "145 lines of code and 27 definitions.",
  "text": "https://banes-lab.com/source/coordination/tools/core/runners/gate.runner.ts.txt",
  "tree": "coordination",
  "siblings": {
    "next": {
      "href": "https://banes-lab.com/anatomy/coordination#file-coordination-tools-core-runners-index-runner-ts",
      "json": "https://banes-lab.com/json/source/coordination/tools/core/runners/index.runner.ts",
      "label": "tools/core/runners/index.runner.ts",
      "markdown": "https://banes-lab.com/source/coordination/tools/core/runners/index.runner.ts.md",
      "ref": "anatomy:file-coordination-tools-core-runners-index-runner-ts"
    },
    "previous": {
      "href": "https://banes-lab.com/anatomy/coordination#file-coordination-tools-core-runners-fixture-runner-ts",
      "json": "https://banes-lab.com/json/source/coordination/tools/core/runners/fixture.runner.ts",
      "label": "tools/core/runners/fixture.runner.ts",
      "markdown": "https://banes-lab.com/source/coordination/tools/core/runners/fixture.runner.ts.md",
      "ref": "anatomy:file-coordination-tools-core-runners-fixture-runner-ts"
    }
  },
  "up": {
    "href": null,
    "json": "https://banes-lab.com/json/api/source/coordination/tools/core/runners",
    "label": "tools/core/runners",
    "markdown": "https://banes-lab.com/api/source/coordination/tools/core/runners.md",
    "ref": "api:source/coordination/tools/core/runners"
  }
}
