---
layout: layouts/base.njk
title: DOCX Core Traceability Matrix | Safe DOCX
description: Generated spec-to-test scenario mapping for the DOCX Core package.
contentClass: content
permalink: /trust/traceability/docx-core/
---

# DOCX Comparison OpenSpec Traceability Matrix

> Auto-generated by `packages/docx-core/scripts/validate_openspec_coverage.mjs`.
> Do not hand-edit this file.

This matrix maps canonical spec `#### Scenario:` entries to scenario mappings extracted from `src/**/*.test.ts`.

| Scenario | Status | Test Files | Notes |
|---|---|---|---|
| Atom from deleted revision | covered | `src/openspec.traceability.test.ts` |  |
| Atom from inserted revision | covered | `src/openspec.traceability.test.ts` |  |
| Atom marked as format-changed | covered | `src/openspec.traceability.test.ts` |  |
| Atom marked as moved destination | covered | `src/openspec.traceability.test.ts` |  |
| Atom marked as moved source | covered | `src/openspec.traceability.test.ts` |  |
| Atom with ancestor tracking | covered | `src/openspec.traceability.test.ts` |  |
| Below threshold treated as separate changes | covered | `src/openspec.priority-scenarios.test.ts`, `src/openspec.traceability.test.ts` |  |
| Bold added | covered | `src/openspec.traceability.test.ts` |  |
| Bold added markup | covered | `src/openspec.traceability.test.ts` |  |
| Bold removed markup | covered | `src/openspec.traceability.test.ts` |  |
| Building footnote mapping | covered | `src/openspec.traceability.test.ts` |  |
| Continuation pattern inherits formatting | covered | `src/openspec.traceability.test.ts` |  |
| Creating atom with revision detection | covered | `src/openspec.traceability.test.ts` |  |
| Creating atom without revision context | covered | `src/openspec.traceability.test.ts` |  |
| Custom footnote marks respected | covered | `src/openspec.traceability.test.ts` |  |
| Custom threshold applied | covered | `src/openspec.traceability.test.ts` |  |
| Different properties | covered | `src/openspec.traceability.test.ts` |  |
| Element with attributes | covered | `src/openspec.traceability.test.ts` |  |
| Element with text content | covered | `src/openspec.traceability.test.ts` |  |
| Empty properties equal | covered | `src/openspec.traceability.test.ts` |  |
| First footnote displays as 1 | covered | `src/openspec.traceability.test.ts` |  |
| Format change markup structure | covered | `src/openspec.traceability.test.ts` |  |
| Format detection disabled | covered | `src/openspec.priority-scenarios.test.ts`, `src/openspec.traceability.test.ts` |  |
| Format detection enabled by default | covered | `src/openspec.traceability.test.ts` |  |
| Format detection with text change | covered | `src/openspec.traceability.test.ts` |  |
| Get format change revisions | covered | `src/openspec.traceability.test.ts` |  |
| Hash calculation for content identity | covered | `src/openspec.traceability.test.ts` |  |
| Identical text returns 1.0 | covered | `src/openspec.traceability.test.ts` |  |
| Move destination markup structure | covered | `src/openspec.traceability.test.ts` |  |
| Move detected between similar blocks | covered | `src/openspec.priority-scenarios.test.ts`, `src/openspec.traceability.test.ts` |  |
| Move detection disabled | covered | `src/openspec.priority-scenarios.test.ts`, `src/openspec.traceability.test.ts` |  |
| Move source markup structure | covered | `src/openspec.traceability.test.ts` |  |
| Multiple properties changed | covered | `src/openspec.traceability.test.ts` |  |
| No common words returns 0.0 | covered | `src/openspec.traceability.test.ts` |  |
| No format change | covered | `src/openspec.traceability.test.ts` |  |
| Normalize null properties | covered | `src/openspec.traceability.test.ts` |  |
| Orphan list item renders with parent format | covered | `src/openspec.traceability.test.ts` |  |
| Part from main document | covered | `src/openspec.traceability.test.ts` |  |
| Partial overlap | covered | `src/openspec.traceability.test.ts` |  |
| Proper nested list renders hierarchically | covered | `src/openspec.traceability.test.ts` |  |
| Range IDs properly paired | covered | `src/openspec.traceability.test.ts` |  |
| Remove existing revision tracking | covered | `src/openspec.traceability.test.ts` |  |
| Reserved footnote IDs excluded from numbering | covered | `src/openspec.traceability.test.ts` |  |
| Run with properties | covered | `src/openspec.traceability.test.ts` |  |
| Run without properties | covered | `src/openspec.traceability.test.ts` |  |
| Same properties different order | covered | `src/openspec.traceability.test.ts` |  |
| Sequential numbering ignores XML IDs | covered | `src/openspec.traceability.test.ts` |  |
| Short blocks ignored | covered | `src/openspec.priority-scenarios.test.ts`, `src/openspec.traceability.test.ts` |  |
| Status assigned during comparison | covered | `src/openspec.traceability.test.ts` |  |
| Status for deleted content | covered | `src/openspec.traceability.test.ts` |  |
| Status for format-changed content | covered | `src/openspec.traceability.test.ts` |  |
| Status for moved destination content | covered | `src/openspec.traceability.test.ts` |  |
| Status for moved source content | covered | `src/openspec.traceability.test.ts` |  |
| Status for unmatched atoms | covered | `src/openspec.traceability.test.ts` |  |
| Text becomes bold | covered | `src/openspec.priority-scenarios.test.ts`, `src/openspec.traceability.test.ts` |  |
| Unknown property name | covered | `src/openspec.traceability.test.ts` |  |

