# runtime/entrypoints/binding.entrypoint.ts

> 19 lines of code and 4 definitions.

Tree: GovLab Quality
Language: typescript
Layer: runtime
Canonical: https://banes-lab.com/anatomy/quality#file-quality-runtime-entrypoints-binding-entrypoint-ts
Source text: https://banes-lab.com/source/quality/runtime/entrypoints/binding.entrypoint.ts.txt

Listed in [runtime/entrypoints](https://banes-lab.com/api/source/quality/runtime/entrypoints.md), after [runtime/entrypoints/access.entrypoint.ts](https://banes-lab.com/source/quality/runtime/entrypoints/access.entrypoint.ts.md) and before [runtime/entrypoints/canon.entrypoint.ts](https://banes-lab.com/source/quality/runtime/entrypoints/canon.entrypoint.ts.md).

## Definitions

- `FAILURE` (lexical_declaration, line 8)
- `rules` (lexical_declaration, line 10)
- `contracts` (lexical_declaration, line 11)
- `findings` (lexical_declaration, line 12)

## Contained in

- [runtime/entrypoints](https://banes-lab.com/anatomy/quality/folder-quality-runtime-entrypoints.md)

## Source

```typescript
import { bindingClean, bindingFailed, bindingLine } from "#configuration/strings/binding.strings";
import { bindingFindings } from "#core/validators/binding.validator";
import { createGovlabContext } from "@govlab/context";
import { isRegisteredConcept } from "#configuration/quality/generated/canon.generated";
import { loadRuleSources } from "#core/loaders/binding.loader";
import process from "node:process";

const FAILURE = 1;

const rules = loadRuleSources();
const contracts = new Set(createGovlabContext().algo.ids());
const findings = bindingFindings(rules, contracts, isRegisteredConcept);

if (findings.length === 0) {
    process.stdout.write(bindingClean(rules.length));
} else {
    process.stderr.write(bindingFailed(findings.length));
    for (const finding of findings) {
        process.stderr.write(bindingLine(finding));
    }
    process.exitCode = FAILURE;
}
```
