# YAML Schema for source type type: object properties: type: type: string const: "types/source.md" description: Must reference the source type-spec source_type: type: string enum: [transcript, analysis, article, document, notes, tracker, unclassified] description: >- The category of source material. No default - the machine must not pick the vaguest value on the author's behalf. Use `unclassified` when the category is genuinely unclear; it is a visible, advisory-lint catalog slot, not a silent fallback. author: type: string description: Author of the source material minLength: 1 raw_files: type: array items: type: string description: List of raw file paths this source covers minItems: 1 fidelity: type: string enum: [verbatim, published, secondhand, nontextual, unknown] description: >- How faithful the capture is to what was actually said or shown. No default - a capture field, fixed at `raw accept`/`new source` time and never guessed. `unknown` is backfill-only: `raw accept` and `new source` refuse it, only `wikitool touch` (on a page predating this rule) may write it. Deliberately absent from `required:` so an existing instance's source pages keep validating without it. authority: type: string enum: [normative, reporting, opinion, unknown] description: >- What the material is entitled to claim about its subject - independent of `fidelity`, which asks how faithfully it was captured. Same capture, no-default, backfill-only-`unknown` rules as `fidelity`. Deliberately absent from `required:` for the same reason. source_url: type: [string, "null"] description: Upstream URL for external sources format: uri source_language: type: string pattern: "^[a-z]{2}$" description: >- ISO 639-1 code for the language of the raw material, e.g. de, en, fr. The page itself is written in the KB language regardless; this records what had to be translated. Optional - absent on pages predating the rule. date: type: string format: date pattern: "^\\d{4}-\\d{2}-\\d{2}$" description: Publication or creation date in YYYY-MM-DD format tags: type: array items: type: string description: Navigation tags for categorization entities: type: array items: type: string description: Entity titles mentioned in this source concepts: type: array items: type: string description: Concept titles mentioned in this source summary: type: string description: 1-line summary for index.md minLength: 1 required: - type - source_type - author - raw_files - date - summary additionalProperties: false