# Findings reference

> Every problem stetdoc check reports in a document, split into violations and notes, with what each one means.

Source: https://stetdoc.clauseo.chat/docs/reference/findings · stetdoc 0.9.1

`stetdoc check` and the receipt of an edit report findings. There are 47 codes. A **violation** is a departure from the schema or from a Word rule, which an edit may not add: an edit that would add one is refused as `validation_failed`, and a violation that the document already had is reported and not blamed on the edit. A **note** is legal and worth saying. A code is stable once released: new codes may be added, and existing ones are never repurposed or removed outside a major version.

## Violations

| Code | What it means |
|---|---|
| `schema_wrong_root` | The root element is not the one the part must have. |
| `schema_unexpected_child` | A known element that the content model does not allow in this parent. |
| `schema_unknown_element` | An element in a namespace the schema does not know, which the part does not list in mc:Ignorable. |
| `schema_out_of_order` | An element that is allowed in its parent but not after what precedes it, or a second copy of one that may occur once. |
| `schema_non_canonical_order` | In a property container that the schema leaves unordered, a child is not in the order Word writes. Word reads it, and the Open XML SDK validator counts it as a schema error. |
| `schema_missing_child` | The content of an element ends before a required child. |
| `schema_must_understand` | mc:MustUnderstand names a namespace that Word does not understand. |
| `mc_prefix_undeclared` | mc:Ignorable, mc:ProcessContent or mc:MustUnderstand names a prefix that no namespace declaration binds. The schema allows the attribute, and Word refuses to open the file or offers to repair it. A report lists it before every other finding, and an edit repairs it in every part it writes (decision 0014). |
| `schema_unexpected_text` | Character data in an element that has element-only content. |
| `schema_unknown_attribute` | An attribute the schema does not define on this element. |
| `schema_missing_attribute` | A required attribute is absent. |
| `schema_invalid_attribute_value` | The value of an attribute does not satisfy its type. |
| `text_in_deletion` | A w:t or w:instrText inside a w:del, where Word writes w:delText and w:delInstrText. |
| `deltext_outside_deletion` | A w:delText or w:delInstrText with no w:del around it in its paragraph. |
| `edge_space_without_preserve` | Text that starts or ends with white space in an element that has no xml:space="preserve", so a reader may drop the space. |
| `revision_id_duplicate` | Two tracked changes of the document have the same w:id. |
| `bookmark_id_duplicate` | Two bookmarks of one part have the same w:id. |
| `revision_nested_in_itself` | A w:ins inside a w:ins, or a w:del inside a w:del, in one paragraph. |
| `bookmark_unpaired` | A bookmark has a start and no end, or an end and no start. |
| `move_range_unpaired` | A move range has a start and no end, or an end and no start. |
| `move_name_unpaired` | A move has a source and no destination, or a destination and no source. |
| `field_split_by_deletion` | A field whose begin, separator and end are not all inside a deletion or all outside one. |
| `cell_without_final_paragraph` | A table cell whose last block is not a paragraph. |
| `table_without_row` | A table with no row. |
| `row_without_cell` | A table row with no cell. |
| `container_without_block` | A footnote, endnote or comment that holds no paragraph or table. |
| `empty_revision` | A w:ins, w:del, w:moveFrom or w:moveTo that holds nothing. |
| `part_without_content_type` | A part that has neither an Override nor a Default for its extension in `[Content_Types].xml`. |
| `relationship_target_missing` | An internal relationship whose target is not a part of the package. |
| `relationship_id_duplicate` | Two relationships of one part have the same id. |
| `comment_id_duplicate` | Two comments have the same w:id. |
| `marker_unpaired` | A comment range has a start and no end, or an end and no start. |
| `marker_without_comment` | A comment range marker or reference whose id is no comment. |
| `reference_missing` | A comment with a range and no reference run. |
| `reference_duplicate` | Two reference runs for one comment. |
| `row_without_comment` | A row of a comment extension part whose paragraph id names no comment. |
| `para_id_duplicate` | Two paragraphs, at least one of them a comment paragraph, have the same w14:paraId. |
| `thread_cycle` | The parents of some comments form a loop. |
| `durable_mismatch` | Two comment parts disagree about a durable id, or a durable id is used twice. |
| `part_unrelated` | A comment extension part that the main part has no relationship to. |

## Notes

| Code | What it means |
|---|---|
| `empty_properties` | A w:rPr or w:pPr that holds nothing, outside the snapshot of a property change. The schema allows it, since every child is optional, so it is a note. |
| `unanchored` | A comment with no marker and no reference. |
| `row_missing` | A comment with a paragraph id and no row in an extension part that exists. |
| `para_id_missing` | A comment whose last paragraph has no w14:paraId, so it cannot be threaded. |
| `para_id_range` | A w14:paraId at or above 0x80000000, which the schema forbids. |
| `parent_missing` | A comment whose parent paragraph id names no comment. |
| `part_unreadable` | A part that could not be read (encrypted, or stored with an unsupported method), so it was not checked. |
