# configuration/strings/binding.strings.ts

> 16 lines of code and 5 definitions.

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

Listed in [configuration/strings](https://banes-lab.com/api/source/quality/configuration/strings.md), before [configuration/strings/canon.strings.ts](https://banes-lab.com/source/quality/configuration/strings/canon.strings.ts.md).

## Definitions

- `bindingClean` (lexical_declaration, line 3, exported)
- `bindingFailed` (lexical_declaration, line 7, exported)
- `REASON_TEXT` (lexical_declaration, line 11)
- `bindingLine` (lexical_declaration, line 17, exported)
- `detail` (lexical_declaration, line 18, exported)

## Contained in

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

## Source

```typescript
import type { BindingFinding } from "#types/binding.types";

export const bindingClean = function bindingClean(count: number): string {
    return `rule bindings: all ${String(count)} rules bind to a remediation contract and declare quality concepts that resolve\n`;
};

export const bindingFailed = function bindingFailed(count: number): string {
    return `rule bindings: ${String(count)} finding(s). A rule's id is the id of the algorithms contract it enforces, and its canonical list names quality concepts.\n`;
};

const REASON_TEXT: Readonly<Record<BindingFinding["reason"], string>> = {
    "no-canonical": "declares no canonical quality concepts; build its meta with govlabMeta and name them",
    "no-contract": "has no algorithms contract with its id; rename it to its contract, or author the contract",
    "unknown-concept": "names a concept the quality catalog does not register",
};

export const bindingLine = function bindingLine(finding: BindingFinding): string {
    const detail = finding.detail.length > 0 ? ` (${finding.detail})` : "";
    return `  ${finding.id}: ${REASON_TEXT[finding.reason]}${detail}\n`;
};
```
