# configuration/strings/document.strings.ts

> 66 lines of code and 20 definitions.

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

Listed in [configuration/strings](https://banes-lab.com/api/source/docs/configuration/strings.md), after [configuration/strings/diagram.strings.ts](https://banes-lab.com/source/docs/configuration/strings/diagram.strings.ts.md) and before [configuration/strings/drift.strings.ts](https://banes-lab.com/source/docs/configuration/strings/drift.strings.ts.md).

## Definitions

- `missingSection` (lexical_declaration, line 27, exported)
- `nonActivityConcern` (lexical_declaration, line 1, exported)
- `missingSubject` (lexical_declaration, line 14, exported)
- `missingFrontmatterField` (lexical_declaration, line 23, exported)
- `sectionOutOfOrder` (lexical_declaration, line 31, exported)
- `invalidInteger` (lexical_declaration, line 39, exported)
- `invalidBoolean` (lexical_declaration, line 43, exported)
- `invalidKebab` (lexical_declaration, line 47, exported)
- `invalidList` (lexical_declaration, line 51, exported)
- `invalidListEntry` (lexical_declaration, line 55, exported)
- `deadGovernsEdge` (lexical_declaration, line 63, exported)
- `deadNameEdge` (lexical_declaration, line 67, exported)
- `dependsOnCycle` (lexical_declaration, line 71, exported)
- `duplicateDocName` (lexical_declaration, line 75, exported)
- `docNameFinding` (lexical_declaration, line 79, exported)
- `expectedSuffix` (lexical_declaration, line 83, exported)
- `missingConcernVerb` (lexical_declaration, line 5, exported)
- `SPINE_DETAILS` (lexical_declaration, line 18, exported)
- `missingRequiredField` (lexical_declaration, line 35, exported)
- `invalidEnum` (lexical_declaration, line 59, exported)

## Contained in

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

## Used by

- [core/coordinators/validation.coordinator.ts](https://banes-lab.com/source/docs/core/coordinators/validation.coordinator.ts.md)
- [core/formatters/finding.formatter.ts](https://banes-lab.com/source/docs/core/formatters/finding.formatter.ts.md)
- [core/validators/document.validator.ts](https://banes-lab.com/source/docs/core/validators/document.validator.ts.md)
- [core/validators/filename.validator.ts](https://banes-lab.com/source/docs/core/validators/filename.validator.ts.md)
- [core/validators/metadata.validator.ts](https://banes-lab.com/source/docs/core/validators/metadata.validator.ts.md)
- [core/validators/section.validator.ts](https://banes-lab.com/source/docs/core/validators/section.validator.ts.md)

## Linked from

- [core/coordinators](https://banes-lab.com/anatomy/docs/folder-docs-core-coordinators.md)
- [core/formatters](https://banes-lab.com/anatomy/docs/folder-docs-core-formatters.md)
- [core/validators](https://banes-lab.com/anatomy/docs/folder-docs-core-validators.md)

## Source

```typescript
export const nonActivityConcern = function nonActivityConcern(form: string, concern: string): string {
    return `${form} is directive but concern "${concern}" has no activity verb`;
};

export const missingConcernVerb = function missingConcernVerb(
    name: string,
    verbSegment: string,
    concern: string,
    verb: string,
): string {
    return `name "${name}" must be "${verbSegment}<subject>" (concern "${concern}" → verb "${verb}")`;
};

export const missingSubject = function missingSubject(name: string): string {
    return `name "${name}" has no subject`;
};

export const SPINE_DETAILS = {
    noFrontmatter: "document has no --- frontmatter header",
    noTitle: "body must open with an H1 title",
} as const;

export const missingFrontmatterField = function missingFrontmatterField(key: string): string {
    return `frontmatter is missing "${key}"`;
};

export const missingSection = function missingSection(concern: string): string {
    return `Missing required section "## ${concern}".`;
};

export const sectionOutOfOrder = function sectionOutOfOrder(concern: string): string {
    return `Section "${concern}" is out of order — expected in the schema's sequence.`;
};

export const missingRequiredField = function missingRequiredField(key: string): string {
    return `frontmatter is missing required "${key}"`;
};

export const invalidInteger = function invalidInteger(field: string, value: string): string {
    return `"${field}: ${value}" is invalid — expected an integer`;
};

export const invalidBoolean = function invalidBoolean(field: string, value: string): string {
    return `"${field}: ${value}" is invalid — expected one of: true, false`;
};

export const invalidKebab = function invalidKebab(field: string, value: string): string {
    return `"${field}: ${value}" is invalid — expected lowercase letters, digits, and hyphens only`;
};

export const invalidList = function invalidList(field: string, value: string, sample: string): string {
    return `"${field}: ${value}" is invalid — expected a bracketed list, e.g. [${sample}]`;
};

export const invalidListEntry = function invalidListEntry(field: string, entry: string, allowed: string): string {
    return `"${field}" lists "${entry}" — expected one of: ${allowed}`;
};

export const invalidEnum = function invalidEnum(field: string, value: string, allowed: string): string {
    return `"${field}: ${value}" is invalid — expected one of: ${allowed}`;
};

export const deadGovernsEdge = function deadGovernsEdge(relPath: string, target: string): string {
    return `✖ ${relPath}:1:1 [dead-edge] governs "${target}" — code path does not exist`;
};

export const deadNameEdge = function deadNameEdge(relPath: string, field: string, target: string): string {
    return `✖ ${relPath}:1:1 [dead-edge] ${field} "${target}" resolves to no doc name`;
};

export const dependsOnCycle = function dependsOnCycle(cycle: string): string {
    return `✖ doc-arch:1:1 [dead-edge] depends-on cycle: ${cycle}`;
};

export const duplicateDocName = function duplicateDocName(name: string): string {
    return `✖ doc-arch:1:1 [dead-edge] duplicate doc name "${name}"`;
};

export const docNameFinding = function docNameFinding(relDoc: string, detail: string, expected: string): string {
    return `✖ ${relDoc}:1:1 [doc-name] ${detail}${expected}`;
};

export const expectedSuffix = function expectedSuffix(expected: string): string {
    return ` → expected "${expected}"`;
};
```
