# configuration/strings/package.strings.ts

> 79 lines of code and 20 definitions.

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

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

## Definitions

- `writtenLabel` (lexical_declaration, line 66, exported)
- `principleFinding` (lexical_declaration, line 7, exported)
- `conceptFinding` (lexical_declaration, line 11, exported)
- `declaredDocFinding` (lexical_declaration, line 15, exported)
- `docsFieldFinding` (lexical_declaration, line 25, exported)
- `docsIncomplete` (lexical_declaration, line 34, exported)
- `entryUndeclared` (lexical_declaration, line 42, exported)
- `chartsStale` (lexical_declaration, line 46, exported)
- `noManifest` (lexical_declaration, line 58, exported)
- `noDocsBlock` (lexical_declaration, line 62, exported)
- `checkSummary` (lexical_declaration, line 70, exported)
- `healedCount` (lexical_declaration, line 74, exported)
- `generateSummary` (lexical_declaration, line 78, exported)
- `mermaidFence` (lexical_declaration, line 96, exported)
- `PACKAGE_TEXT` (lexical_declaration, line 1, exported)
- `entryUnresolved` (lexical_declaration, line 38, exported)
- `manifestMissing` (lexical_declaration, line 50, exported)
- `duplicatePrinciple` (lexical_declaration, line 54, exported)
- `WORKSPACE_MAP` (lexical_declaration, line 82, exported)
- `inventoryRow` (lexical_declaration, line 92, exported)

## Contained in

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

## Used by

- [core/converters/dependency.converter.ts](https://banes-lab.com/source/docs/core/converters/dependency.converter.ts.md)
- [core/coordinators/document.coordinator.ts](https://banes-lab.com/source/docs/core/coordinators/document.coordinator.ts.md)
- [core/validators/barrel.validator.ts](https://banes-lab.com/source/docs/core/validators/barrel.validator.ts.md)
- [core/validators/figure.validator.ts](https://banes-lab.com/source/docs/core/validators/figure.validator.ts.md)
- [core/validators/readme.validator.ts](https://banes-lab.com/source/docs/core/validators/readme.validator.ts.md)

## Linked from

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

## Source

```typescript
export const PACKAGE_TEXT = {
    undeclaredEntry:
        "declares docs but resolves no analyzable entry — add an `entries` array (use [] to declare none) or an exports target that resolves to a file",
    usage: "usage: govlab-docs <moduleDir> [--write] | --all | --check | --fix",
} as const;

export const principleFinding = function principleFinding(at: string, axis: string, detail: string): string {
    return `✖ ${at} [governance.principles] ${axis} — ${detail}`;
};

export const conceptFinding = function conceptFinding(at: string, axis: string, detail: string): string {
    return `✖ ${at} [governedBy] ${axis} — ${detail}`;
};

export const declaredDocFinding = function declaredDocFinding(
    at: string,
    doc: string,
    heading: string,
    axis: string,
    detail: string,
): string {
    return `✖ ${at} [documents.${doc}.${heading}] ${axis} ${detail}`;
};

export const docsFieldFinding = function docsFieldFinding(
    at: string,
    field: string,
    axis: string,
    detail: string,
): string {
    return `✖ ${at} [docs.${field}] ${axis} ${detail}`;
};

export const docsIncomplete = function docsIncomplete(label: string): string {
    return `✖ ${label} [docs-incomplete] generated README but manifest has no docs block`;
};

export const entryUnresolved = function entryUnresolved(at: string, pattern: string): string {
    return `✖ ${at} [entry-unresolved] "${pattern}" matches no file on disk`;
};

export const entryUndeclared = function entryUndeclared(at: string, detail: string): string {
    return `✖ ${at} [entry-undeclared] ${detail}`;
};

export const chartsStale = function chartsStale(at: string): string {
    return `✖ ${at} [charts-stale] module is not analyzable — remove the file`;
};

export const manifestMissing = function manifestMissing(dir: string): string {
    return `✖ ${dir}: workspace member without a _manifest.json — every module carries one and its README is generated from it [manifest-missing]`;
};

export const duplicatePrinciple = function duplicatePrinciple(detail: string): string {
    return `✖ @govlab/context ontology [duplicate-principle] ${detail}`;
};

export const noManifest = function noManifest(target: string): string {
    return `✖ ${target}: no _manifest.json found`;
};

export const noDocsBlock = function noDocsBlock(target: string): string {
    return `✖ ${target}: manifest has no docs block; nothing to generate`;
};

export const writtenLabel = function writtenLabel(label: string): string {
    return `✓ ${label}`;
};

export const checkSummary = function checkSummary(findings: number, healed: string): string {
    return `govlab.docs validate: ${findings} module-doc finding(s)${healed}`;
};

export const healedCount = function healedCount(count: number): string {
    return `, ${count} healed`;
};

export const generateSummary = function generateSummary(count: number): string {
    return `govlab.docs generate: ${count} module document(s)`;
};

export const WORKSPACE_MAP = {
    graphHeading: "Sibling-dependency graph",
    inventoryHeading: "Module inventory",
    lead: "Auto-generated from every workspace `_manifest.json` + `package.json`. Dotted edges are `@govlab/*` sibling dependencies; a leaf with no sibling deps appears in the inventory but not the graph.",
    summary:
        "The generated workspace dependency map and inventory — every member package, its group and maturity, and the sibling-dependency graph.",
    tableHead: ["| Module | Group | Maturity | Sibling deps |", "| --- | --- | --- | --- |"],
    title: "Workspace Dependency Map",
} as const;

export const inventoryRow = function inventoryRow(name: string, group: string, maturity: string, deps: number): string {
    return `| \`${name}\` | ${group} | ${maturity} | ${deps} |`;
};

export const mermaidFence = function mermaidFence(body: string): string {
    return `\`\`\`mermaid\n${body}\n\`\`\``;
};
```
