# shared/manifests/writing.canon.manifest.ts

> 25 lines of code and 5 definitions.

Tree: Governance tree
Language: typescript
Layer: infrastructure
Canonical: https://banes-lab.com/anatomy/governance#file-governance-shared-manifests-writing-canon-manifest-ts
Source text: https://banes-lab.com/source/governance/shared/manifests/writing.canon.manifest.ts.txt

Listed in [shared/manifests](https://banes-lab.com/api/source/governance/shared/manifests.md), after [shared/manifests/vocabulary.manifest.ts](https://banes-lab.com/source/governance/shared/manifests/vocabulary.manifest.ts.md) and before [shared/manifests/writing.document.manifest.ts](https://banes-lab.com/source/governance/shared/manifests/writing.document.manifest.ts.md).

## Definitions

- `isCheckEnforced` (lexical_declaration, line 26, exported)
- `WRITING_CANON` (lexical_declaration, line 10, exported)
- `STRINGS_CHANNEL` (lexical_declaration, line 20, exported)
- `DOCUMENT_CHANNEL` (lexical_declaration, line 22, exported)
- `CANON_PRECEDENCE` (lexical_declaration, line 24, exported)

## Used by

- [rules/eslint/strings-composition.eslint.rule.ts](https://banes-lab.com/source/governance/rules/eslint/strings-composition.eslint.rule.ts.md)
- [shared/analyzers/document.analyzer.ts](https://banes-lab.com/source/governance/shared/analyzers/document.analyzer.ts.md)

## Source

```typescript
import type { CanonCheckId, CanonLayer, CanonLayerId } from "../../types/writing.types.ts";
import { DOCUMENT_LAYER } from "./writing.document.manifest.ts";
import { IDENTIFIER_LAYER } from "./writing.identifier.manifest.ts";
import { NOTE_LAYER } from "./writing.note.manifest.ts";
import { OUTPUT_LAYER } from "./writing.output.manifest.ts";
import { PROSE_LAYER } from "./writing.prose.manifest.ts";
import { ROOT_LAYER } from "./writing.root.manifest.ts";
import { SHORT_LAYER } from "./writing.short.manifest.ts";

export const WRITING_CANON: readonly CanonLayer[] = [
    ROOT_LAYER,
    PROSE_LAYER,
    SHORT_LAYER,
    OUTPUT_LAYER,
    IDENTIFIER_LAYER,
    DOCUMENT_LAYER,
    NOTE_LAYER,
];

export const STRINGS_CHANNEL: CanonLayerId = "prose";

export const DOCUMENT_CHANNEL: CanonLayerId = "document";

export const CANON_PRECEDENCE = "CLAUDE.md > this canon > the rules and manifests on disk > memory";

export const isCheckEnforced = function isCheckEnforced(id: CanonCheckId, channel: CanonLayerId): boolean {
    return WRITING_CANON.some((layer) =>
        layer.rules.some((rule) => rule.checks.some((check) => check.id === id && check.enforcedIn.includes(channel))),
    );
};
```
