{
  "schemaVersion": 4,
  "odfVersion": "1.4",
  "legacyVersionPolicy": "normalize-to-1.4-preserve-unknown",
  "operations": ["Create", "Get", "Find", "Set", "Update", "Remove", "Clear", "RoundTrip", "Interop"],
  "legacyVersionEvidence": {
    "versions": ["1.0", "1.1", "1.2", "1.3"],
    "formats": ["ODT", "ODS", "ODP", "ODG"],
    "test": "OdfKit.Tests/PrimaryFormatCrudCompletionTests.cs",
    "symbol": "LegacyVersionsHighLevelMutationPreservesVersionAndForeignContent"
  },
  "qualityEvidence": [
    {
      "dimension": "ExistingDocument",
      "formats": ["ODT", "ODS", "ODP", "ODG"],
      "test": "OdfKit.Tests/PrimaryFormatCrudCompletionTests.cs",
      "symbol": "LegacyVersionsHighLevelMutationPreservesVersionAndForeignContent"
    },
    {
      "dimension": "UnknownContentPreservation",
      "formats": ["ODT", "ODS", "ODP", "ODG"],
      "test": "OdfKit.Tests/PrimaryFormatCrudCompletionTests.cs",
      "symbol": "LegacyVersionsHighLevelMutationPreservesVersionAndForeignContent"
    },
    {
      "dimension": "LegacyVersions",
      "formats": ["ODT", "ODS", "ODP", "ODG"],
      "test": "OdfKit.Tests/PrimaryFormatCrudCompletionTests.cs",
      "symbol": "LegacyVersionsHighLevelMutationPreservesVersionAndForeignContent"
    },
    {
      "dimension": "DowngradeDiagnostics",
      "formats": ["ODT", "ODS", "ODP", "ODG"],
      "test": "OdfKit.Tests/OdfSaveOptionsVersionTests.cs",
      "symbol": "VersionCompatibilityReportCoversEveryPrimaryFormat"
    },
    {
      "dimension": "InvalidInput",
      "formats": ["ODT"],
      "test": "OdfKit.Tests/TextApiUsabilityTests.cs",
      "symbol": "LoadRejectsNonTextDocument"
    },
    {
      "dimension": "InvalidInput",
      "formats": ["ODS"],
      "test": "OdfKit.Tests/SpreadsheetApiUsabilityTests.cs",
      "symbol": "LoadRejectsNonSpreadsheetDocument"
    },
    {
      "dimension": "InvalidInput",
      "formats": ["ODP"],
      "test": "OdfKit.Tests/PresentationApiUsabilityTests.cs",
      "symbol": "LoadRejectsNonPresentationDocument"
    },
    {
      "dimension": "InvalidInput",
      "formats": ["ODG"],
      "test": "OdfKit.Tests/DrawingApiUsabilityTests.cs",
      "symbol": "LoadRejectsNonDrawingDocument"
    },
    {
      "dimension": "ExistingDocument",
      "formats": ["ODC", "ODB", "ODF", "ODI"],
      "test": "OdfKit.Tests/SecondaryFormatSemanticCoverageTests.cs",
      "symbol": "SecondaryFormatsHighLevelMutationPreservesVersionAndForeignContent"
    },
    {
      "dimension": "UnknownContentPreservation",
      "formats": ["ODC", "ODB", "ODF", "ODI"],
      "test": "OdfKit.Tests/SecondaryFormatSemanticCoverageTests.cs",
      "symbol": "SecondaryFormatsHighLevelMutationPreservesVersionAndForeignContent"
    },
    {
      "dimension": "LegacyVersions",
      "formats": ["ODC", "ODB", "ODF", "ODI"],
      "test": "OdfKit.Tests/SecondaryFormatSemanticCoverageTests.cs",
      "symbol": "SecondaryFormatsHighLevelMutationPreservesVersionAndForeignContent"
    },
    {
      "dimension": "DowngradeDiagnostics",
      "formats": ["ODC", "ODB", "ODF", "ODI"],
      "test": "OdfKit.Tests/SecondaryFormatSemanticCoverageTests.cs",
      "symbol": "VersionCompatibilityReportCoversEverySecondaryFormat"
    },
    {
      "dimension": "InvalidInput",
      "formats": ["ODC", "ODB", "ODF", "ODI"],
      "test": "OdfKit.Tests/SecondaryFormatSemanticCoverageTests.cs",
      "symbol": "SecondaryLoadersRejectMismatchedDocumentKinds"
    }
  ],
  "mutationEvidence": {
    "test": "OdfKit.Tests/PrimaryFormatMutationPropertyTests.cs",
    "randomOperationSequences": [
      "OdtRandomizedParagraphMutationsRemainStable",
      "OdsRandomizedWorksheetMutationsRemainStable",
      "OdpRandomizedSlideMutationsRemainStable",
      "OdgRandomizedPageMutationsRemainStable"
    ],
    "repeatedSaveLoad": true,
    "corpusDifferentialScript": "eng/Test-OdfCorpus.ps1",
    "corpusManifest": "tests/fixtures/corpus/manifest.json"
  },
  "families": [
    {
      "id": "ODT-CONTENT",
      "format": "ODT",
      "topics": ["text", "paragraph", "heading", "list", "table", "section", "style-inheritance"],
      "specification": ["ODF 1.4 Part 3, clauses 5, 16 and 20"],
      "operations": {"Create":"verified","Get":"verified","Find":"verified","Set":"verified","Update":"verified","Remove":"verified","Clear":"verified","RoundTrip":"verified","Interop":"interop-tested"},
      "implementation": ["OdfKit/Text/TextDocument.cs", "OdfKit/Text/OdfParagraph.cs", "OdfKit/Text/OdfTable.cs"],
      "tests": ["OdfKit.Tests/TextHighLevelApiTests.cs", "OdfKit.Tests/TextAdvancedFidelityTests.cs"],
      "interop": ["OdfKit.Tests/LibreOfficeInteropTests.cs", "OdfKit.Tests/OfficeGuiSmokeTests.cs"],
      "limitations": "Physical pagination and pixel rendering are delegated to a rendering backend.",
      "operationEvidence": [
        {"topics":["text","paragraph","heading","list","table","section","style-inheritance"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/PrimaryFormatCrudCompletionTests.cs","symbol":"OdtCollectionsFindRemoveClearAndRoundTrip"},
        {"topics":["text","paragraph","heading","list","table","section","style-inheritance"],"operations":["Interop"],"test":"OdfKit.Tests/LibreOfficeInteropTests.cs","symbol":"LibreOfficeHeadlessLoadsGeneratedDocuments"},
        {"topics":["text","paragraph","heading","list","table"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/PrimaryFormatCrudCompletionTests.cs","symbol":"OdtCollectionsFindRemoveClearAndRoundTrip"},
        {"topics":["section"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/PrimaryFormatCrudCompletionTests.cs","symbol":"OdtSectionsAndIndexesCompleteLifecycleAndRoundTrip"},
        {"topics":["style-inheritance"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/TextHighLevelApiTests.cs","symbol":"StylesGcRemovesUnusedStylesAndKeepsParentChain"}
      ]
    },
    {
      "id": "ODT-REFERENCES",
      "format": "ODT",
      "topics": ["bookmark", "cross-reference", "footnote", "endnote", "table-of-contents", "alphabetical-index", "bibliography"],
      "specification": ["ODF 1.4 Part 3, clauses 6.3, 6.4, 8 and 9"],
      "operations": {"Create":"verified","Get":"verified","Find":"verified","Set":"verified","Update":"verified","Remove":"verified","Clear":"verified","RoundTrip":"verified","Interop":"interop-tested"},
      "implementation": ["OdfKit/Text/TextDocument.Elements.Notes.cs", "OdfKit/Text/TextDocumentTocEngine.cs", "OdfKit/Text/OdfIndex.cs"],
      "tests": ["OdfKit.Tests/TextHighLevelApiTests.cs", "OdfKit.Tests/TextAdvancedFidelityTests.cs"],
      "interop": ["OdfKit.Tests/LibreOfficeInteropTests.cs"],
      "limitations": "Generated index page numbers require an external pagination engine.",
      "operationEvidence": [
        {"topics":["bookmark","cross-reference","footnote","endnote","table-of-contents","alphabetical-index","bibliography"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/TextHighLevelApiTests.cs","symbol":"GetIndexInfosAndMarksRoundTripsAfterAdd"},
        {"topics":["bookmark","cross-reference","footnote","endnote","table-of-contents","alphabetical-index","bibliography"],"operations":["Interop"],"test":"OdfKit.Tests/LibreOfficeInteropTests.cs","symbol":"LibreOfficeHeadlessLoadsIndexTemplatesNestedStructuresAndFontFace"},
        {"topics":["bookmark","cross-reference"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/PrimaryFormatCrudCompletionTests.cs","symbol":"OdtBookmarksAndReferenceMarksMaintainReferencesAndRoundTrip"},
        {"topics":["footnote","endnote"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/PrimaryFormatCrudCompletionTests.cs","symbol":"OdtNotesFindUpdateRemoveClearAndRoundTrip"},
        {"topics":["table-of-contents","alphabetical-index","bibliography"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/PrimaryFormatCrudCompletionTests.cs","symbol":"OdtSectionsAndIndexesCompleteLifecycleAndRoundTrip"}
      ]
    },
    {
      "id": "ODT-AUTOMATION",
      "format": "ODT",
      "topics": ["field", "form", "comment", "tracked-change", "template", "mail-merge", "embedded-object"],
      "specification": ["ODF 1.4 Part 3, clauses 6, 10, 13 and 14"],
      "operations": {"Create":"verified","Get":"verified","Find":"verified","Set":"verified","Update":"verified","Remove":"verified","Clear":"verified","RoundTrip":"verified","Interop":"interop-tested"},
      "implementation": ["OdfKit/Text/TextDocument.Elements.Fields.cs", "OdfKit/Text/TextDocument.FormControls.cs", "OdfKit/Text/TextDocument.TrackChanges.AcceptReject.cs"],
      "tests": ["OdfKit.Tests/TextHighLevelApiTests.cs", "OdfKit.Tests/TrackedChangesInteropTests.cs"],
      "interop": ["OdfKit.Tests/LibreOfficeInteropTests.cs"],
      "limitations": "Arbitrary collaborative conflict resolution is outside the core API.",
      "operationEvidence": [
        {"topics":["field","form","comment","tracked-change","template","mail-merge","embedded-object"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/TextAdvancedFidelityTests.cs","symbol":"AdvancedTextFeaturesRoundTripTogether"},
        {"topics":["field","form","comment","tracked-change","template","mail-merge","embedded-object"],"operations":["Interop"],"test":"OdfKit.Tests/LibreOfficeInteropTests.cs","symbol":"LibreOfficeHeadlessLoadsTrackedChangesOdt"},
        {"topics":["comment"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/PrimaryFormatCrudCompletionTests.cs","symbol":"OdtCommentsFindUpdateRemoveAndRoundTrip"},
        {"topics":["tracked-change"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/TextHighLevelApiTests.cs","symbol":"TrackedChangesWriteDualMetadataForLibreOfficeInterop"},
        {"topics":["mail-merge"],"operations":["Create","Get","Set","Update","RoundTrip"],"test":"OdfKit.Tests/MailMergeGenericApiTests.cs","symbol":"MailMergeBatchTemplateRemainsUnmodified"},
        {"topics":["form"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/PrimaryFormatCrudCompletionTests.cs","symbol":"OdtFormControlsCompleteLifecycleAndRoundTrip"},
        {"topics":["field","template"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/PrimaryFormatCrudCompletionTests.cs","symbol":"OdtUserFieldsCompleteLifecycleAndRoundTrip"},
        {"topics":["embedded-object"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/PrimaryFormatCrudCompletionTests.cs","symbol":"OdtFormulaObjectsCompleteLifecycleAndPackageCleanup"},
        {"topics":["field"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/PrimaryFormatCrudCompletionTests.cs","symbol":"OdtInlineFieldsCompleteTypedLifecycleAndRoundTrip"}
      ]
    },
    {
      "id": "ODS-DATA",
      "format": "ODS",
      "topics": ["workbook", "sheet", "row", "column", "cell", "range", "named-expression", "formula-reference"],
      "specification": ["ODF 1.4 Part 3, clause 9", "ODF 1.4 Part 4"],
      "operations": {"Create":"verified","Get":"verified","Find":"verified","Set":"verified","Update":"verified","Remove":"verified","Clear":"verified","RoundTrip":"verified","Interop":"interop-tested"},
      "implementation": ["OdfKit/Spreadsheet/SpreadsheetDocument.cs", "OdfKit/Spreadsheet/OdfTableSheet.cs", "OdfKit/Spreadsheet/OdfCell.cs"],
      "tests": ["OdfKit.Tests/SpreadsheetHighLevelApiTests.cs", "OdfKit.Tests/SpreadsheetCommonApiTests.cs"],
      "interop": ["OdfKit.Tests/LibreOfficeInteropTests.cs", "OdfKit.Tests/OfficeGuiSmokeTests.cs"],
      "limitations": "Formula syntax and cached values are preserved; a full recalculation engine is not provided.",
      "operationEvidence": [
        {"topics":["workbook","sheet","row","column","cell","range","named-expression","formula-reference"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/PrimaryFormatCrudCompletionTests.cs","symbol":"OdsWorksheetsRemovePreservesFormulaIntegrityAndRoundTrips"},
        {"topics":["workbook","sheet","row","column","cell","range","named-expression","formula-reference"],"operations":["Interop"],"test":"OdfKit.Tests/LibreOfficeInteropTests.cs","symbol":"LibreOfficeHeadlessLoadsGeneratedDocuments"},
        {"topics":["workbook","sheet","formula-reference"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/PrimaryFormatCrudCompletionTests.cs","symbol":"OdsWorksheetsRemovePreservesFormulaIntegrityAndRoundTrips"},
        {"topics":["sheet","named-expression"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/PrimaryFormatCrudCompletionTests.cs","symbol":"OdsWorksheetNamesFindRemoveClearAndRoundTrip"},
        {"topics":["row","column"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/SpreadsheetHighLevelApiTests.cs","symbol":"CopyRowsAndMoveRowsPreserveRowContentOrder"},
        {"topics":["cell","range"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/SpreadsheetHighLevelApiTests.cs","symbol":"RangeDepthHelpersReportClearTrailingAndAppendByKeyColumn"}
      ]
    },
    {
      "id": "ODS-ANALYSIS",
      "format": "ODS",
      "topics": ["validation", "conditional-format", "database-range", "filter", "sort", "pivot-definition", "chart", "external-link"],
      "specification": ["ODF 1.4 Part 3, clauses 9.4, 9.5, 9.6 and 11"],
      "operations": {"Create":"verified","Get":"verified","Find":"verified","Set":"verified","Update":"verified","Remove":"verified","Clear":"verified","RoundTrip":"verified","Interop":"interop-tested"},
      "implementation": ["OdfKit/Spreadsheet/OdfTableSheet.ConditionalFormats.cs", "OdfKit/Spreadsheet/OdfTableSheet.PivotTables.cs", "OdfKit/Spreadsheet/OdfPivotTableBuilder.cs", "OdfKit/Spreadsheet/SpreadsheetDocument.PivotRefresh.cs", "OdfKit/Spreadsheet/OdfTableSheet.Charts.cs"],
      "tests": ["OdfKit.Tests/SpreadsheetHighLevelApiTests.cs", "OdfKit.Tests/PivotAdvancedTests.cs", "OdfKit.Tests/ChartHighLevelApiTests.cs"],
      "interop": ["OdfKit.Tests/LibreOfficeInteropTests.cs"],
      "limitations": "Pivot definitions and bounded in-process aggregation support calculated fields, date/numeric grouping, grand totals, common Show Values As calculations, and persisted refresh. External sources, slicers, pivot charts, full pivot-cache semantics, arbitrary nested subtotals, and office-suite UI behavior remain consumer responsibilities.",
      "operationEvidence": [
        {"topics":["validation","conditional-format","database-range","filter","sort","pivot-definition","chart","external-link"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/SpreadsheetHighLevelApiTests.cs","symbol":"GetPivotTablesRoundTripsAfterBuild"},
        {"topics":["validation","conditional-format","database-range","filter","sort","pivot-definition","chart","external-link"],"operations":["Interop"],"test":"OdfKit.Tests/LibreOfficeInteropTests.cs","symbol":"LibreOfficeHeadlessChartApplyDefinitionAndClearSeriesRoundTripsOds"},
        {"topics":["validation"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/PrimaryFormatCrudCompletionTests.cs","symbol":"OdsDataValidationsFindRemoveClearAndRoundTrip"},
        {"topics":["conditional-format"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/PrimaryFormatCrudCompletionTests.cs","symbol":"OdsConditionalFormatsAndSparklinesFindRemoveClearAndRoundTrip"},
        {"topics":["database-range"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/PrimaryFormatCrudCompletionTests.cs","symbol":"OdsDatabaseRangesFindRemoveClearAndRoundTrip"},
        {"topics":["filter","sort"],"operations":["Create","Get","Find","Set","Update","Clear"],"test":"OdfKit.Tests/SpreadsheetHighLevelApiTests.cs","symbol":"SpreadsheetTableFacadeFindTableEditsAndClearsMetadata"},
        {"topics":["filter","sort"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/PrimaryFormatCrudCompletionTests.cs","symbol":"OdsFiltersAndSortsCompleteLifecycleAndRoundTrip"},
        {"topics":["pivot-definition"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/PrimaryFormatCrudCompletionTests.cs","symbol":"OdsPivotDefinitionsFindUpdateRemoveClearAndRoundTrip"},
        {"topics":["pivot-definition"],"operations":["Create","Get","Update","RoundTrip"],"test":"OdfKit.Tests/PivotAdvancedTests.cs","symbol":"AdvancedSettingsRoundTripAndPersistedPivotRefreshes"},
        {"topics":["external-link"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/SpreadsheetHighLevelApiTests.cs","symbol":"ExternalLinkCachedValuesCrudAndUnknownContentRoundTrip"},
        {"topics":["chart"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/PrimaryFormatCrudCompletionTests.cs","symbol":"OdsEmbeddedChartsFindRemoveClearAndPackageCleanup"}
      ]
    },
    {
      "id": "ODS-LAYOUT",
      "format": "ODS",
      "topics": ["style", "print", "view", "freeze", "split", "grouping", "tracked-change"],
      "specification": ["ODF 1.4 Part 3, clauses 9, 16 and 20"],
      "operations": {"Create":"verified","Get":"verified","Find":"verified","Set":"verified","Update":"verified","Remove":"verified","Clear":"verified","RoundTrip":"verified","Interop":"interop-tested"},
      "implementation": ["OdfKit/Spreadsheet/OdfTableSheet.PrintSettings.cs", "OdfKit/Spreadsheet/OdfTableSheet.View.cs", "OdfKit/Spreadsheet/SpreadsheetDocument.TrackChanges.cs"],
      "tests": ["OdfKit.Tests/SpreadsheetHighLevelApiTests.cs", "OdfKit.Tests/SpreadsheetTrackedChangesTests.cs"],
      "interop": ["OdfKit.Tests/LibreOfficeInteropTests.cs"],
      "limitations": "Application-specific view state may be preserved as foreign content rather than normalized.",
      "operationEvidence": [
        {"topics":["style","print","view","freeze","split","grouping","tracked-change"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/SpreadsheetHighLevelApiTests.cs","symbol":"PrintSettingsApiWritesExpectedXml"},
        {"topics":["style","print","view","freeze","split","grouping","tracked-change"],"operations":["Interop"],"test":"OdfKit.Tests/LibreOfficeInteropTests.cs","symbol":"LibreOfficeHeadlessSheetLayoutApiRoundTripsOds"},
        {"topics":["freeze","split"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/PrimaryFormatCrudCompletionTests.cs","symbol":"OdsFrozenAndSplitPanesCompleteLifecycleAndRoundTrip"},
        {"topics":["view"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/PrimaryFormatCrudCompletionTests.cs","symbol":"OdsFrozenAndSplitPanesCompleteLifecycleAndRoundTrip"},
        {"topics":["print"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/SpreadsheetHighLevelApiTests.cs","symbol":"GetPrintAreasRoundTripsAfterSet"},
        {"topics":["grouping"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip","Interop"],"test":"OdfKit.Tests/LibreOfficeInteropTests.cs","symbol":"LibreOfficeHeadlessUngroupColumnsRoundTripsOdsAndPdf"},
        {"topics":["tracked-change"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/SpreadsheetTrackedChangesTests.cs","symbol":"CellContentChangeCanBeRecordedAcceptedOrRejected"},
        {"topics":["style"],"operations":["Create","Get","Find","Set","Update","RoundTrip","Interop"],"test":"OdfKit.Tests/LibreOfficeInteropTests.cs","symbol":"LibreOfficeHeadlessCellSetBordersRoundTripsOdsAndPdf"}
      ]
    },
    {
      "id": "ODP-STRUCTURE",
      "format": "ODP",
      "topics": ["master-page", "layout", "placeholder", "slide", "notes", "handout", "style-inheritance"],
      "specification": ["ODF 1.4 Part 3, clauses 10, 16 and 20"],
      "operations": {"Create":"verified","Get":"verified","Find":"verified","Set":"verified","Update":"verified","Remove":"verified","Clear":"verified","RoundTrip":"verified","Interop":"interop-tested"},
      "implementation": ["OdfKit/Presentation/PresentationDocument.Slides.cs", "OdfKit/Presentation/PresentationDocument.MasterAdvanced.cs", "OdfKit/Presentation/PresentationNotesAndHandouts.cs"],
      "tests": ["OdfKit.Tests/PresentationHighLevelApiTests.cs", "OdfKit.Tests/PresentationDepthApiTests.cs"],
      "interop": ["OdfKit.Tests/LibreOfficeInteropTests.cs", "OdfKit.Tests/OfficeGuiSmokeTests.cs"],
      "limitations": "Streaming slide generation is not claimed.",
      "operationEvidence": [
        {"topics":["master-page","layout","placeholder","slide","notes","handout","style-inheritance"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/PresentationBoundaryTests.cs","symbol":"TestSlideManipulationBoundaryCases"},
        {"topics":["master-page","layout","placeholder","slide","notes","handout","style-inheritance"],"operations":["Interop"],"test":"OdfKit.Tests/LibreOfficeInteropTests.cs","symbol":"LibreOfficeHeadlessSlideBuilderAddTitlePlaceholderRoundTrips"},
        {"topics":["master-page"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/PrimaryFormatCrudCompletionTests.cs","symbol":"OdpMasterPagesRenameRemoveAndMaintainReferences"},
        {"topics":["layout"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/PrimaryFormatCrudCompletionTests.cs","symbol":"OdpLayoutsRenameRemoveAndMaintainReferences"},
        {"topics":["placeholder"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/PrimaryFormatCrudCompletionTests.cs","symbol":"OdpPlaceholdersFindRemoveClearAndRoundTrip"},
        {"topics":["slide"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/PresentationBoundaryTests.cs","symbol":"TestSlideManipulationBoundaryCases"},
        {"topics":["style-inheritance"],"operations":["Create","Get","Find","Set","Update","RoundTrip"],"test":"OdfKit.Tests/PrimaryFormatCrudCompletionTests.cs","symbol":"OdpAndOdgGraphicStyleInheritanceRoundTrips"},
        {"topics":["notes","handout"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/PrimaryFormatCrudCompletionTests.cs","symbol":"OdpNotesAndHandoutFindClearRemoveAndRoundTrip"}
      ]
    },
    {
      "id": "ODP-CONTENT",
      "format": "ODP",
      "topics": ["text", "table", "picture", "media", "shape", "connector", "group"],
      "specification": ["ODF 1.4 Part 3, clauses 10 and 19"],
      "operations": {"Create":"verified","Get":"verified","Find":"verified","Set":"verified","Update":"verified","Remove":"verified","Clear":"verified","RoundTrip":"verified","Interop":"interop-tested"},
      "implementation": ["OdfKit/Presentation/OdfSlide.DrawingObjects.cs", "OdfKit/Presentation/OdfShape.cs", "OdfKit/Presentation/OdfEmbeddedTable.cs"],
      "tests": ["OdfKit.Tests/PresentationHighLevelApiTests.cs", "OdfKit.Tests/PresentationDepthApiTests.cs"],
      "interop": ["OdfKit.Tests/LibreOfficeInteropTests.cs"],
      "limitations": "SmartArt and Office-specific layout effects are not synthesized.",
      "operationEvidence": [
        {"topics":["text","table","picture","media","shape","connector","group"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/PresentationDepthApiTests.cs","symbol":"PresentationDocumentShapeUpdateAndZOrder"},
        {"topics":["text","table","picture","media","shape","connector","group"],"operations":["Interop"],"test":"OdfKit.Tests/LibreOfficeInteropTests.cs","symbol":"LibreOfficeHeadlessLoadsGeneratedDocuments"},
        {"topics":["text","picture","shape"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/PresentationDepthApiTests.cs","symbol":"PresentationDocumentDepthQueriesAndPictureUpdates"},
        {"topics":["media"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/PrimaryFormatCrudCompletionTests.cs","symbol":"OdpMediaObjectsCompleteLifecycleAndRoundTrip"},
        {"topics":["table"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/PrimaryFormatCrudCompletionTests.cs","symbol":"OdpEmbeddedTablesCompleteLifecycleAndRoundTrip"},
        {"topics":["connector"],"operations":["Create","Get","Find","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/PrimaryFormatCrudCompletionTests.cs","symbol":"OdpConnectorsCompleteLifecycleAndDependencyCleanup"},
        {"topics":["group"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/PrimaryFormatCrudCompletionTests.cs","symbol":"OdpGroupsChildLifecycleAndRoundTrip"}
      ]
    },
    {
      "id": "ODP-TIMING",
      "format": "ODP",
      "topics": ["transition", "animation-timeline", "speaker-notes"],
      "specification": ["ODF 1.4 Part 3, clauses 10.4 and 19"],
      "operations": {"Create":"verified","Get":"verified","Find":"verified","Set":"verified","Update":"verified","Remove":"verified","Clear":"verified","RoundTrip":"verified","Interop":"interop-tested"},
      "implementation": ["OdfKit/Presentation/OdfSlide.Animations.cs", "OdfKit/Presentation/PresentationDocumentAnimationReadEngine.cs", "OdfKit/Presentation/PresentationDocumentTransitionReadEngine.cs"],
      "tests": ["OdfKit.Tests/PresentationHighLevelApiTests.cs", "OdfKit.Tests/PresentationAndRenderingTests.cs"],
      "interop": ["OdfKit.Tests/LibreOfficeInteropTests.cs"],
      "limitations": "Office-specific effects without an ODF equivalent are not emulated.",
      "operationEvidence": [
        {"topics":["transition","animation-timeline","speaker-notes"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/PresentationHighLevelApiTests.cs","symbol":"AnimationTimingRoundTripsAfterWrite"},
        {"topics":["transition","animation-timeline","speaker-notes"],"operations":["Interop"],"test":"OdfKit.Tests/LibreOfficeInteropTests.cs","symbol":"LibreOfficeHeadlessLoadsGeneratedDocuments"},
        {"topics":["transition"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/PresentationHighLevelApiTests.cs","symbol":"GetSlideTransitionsRoundTripsAfterSet"},
        {"topics":["animation-timeline"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/PrimaryFormatCrudCompletionTests.cs","symbol":"OdpAnimationsFindRemoveClearAndRoundTrip"},
        {"topics":["speaker-notes"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/PrimaryFormatCrudCompletionTests.cs","symbol":"OdpNotesAndHandoutFindClearRemoveAndRoundTrip"}
      ]
    },
    {
      "id": "ODG-STRUCTURE",
      "format": "ODG",
      "topics": ["page", "layer", "z-order", "style-inheritance"],
      "specification": ["ODF 1.4 Part 3, clauses 10, 16 and 19"],
      "operations": {"Create":"verified","Get":"verified","Find":"verified","Set":"verified","Update":"verified","Remove":"verified","Clear":"verified","RoundTrip":"verified","Interop":"interop-tested"},
      "implementation": ["OdfKit/Drawing/DrawingDocument.cs", "OdfKit/Drawing/OdfDrawPageCollection.cs", "OdfKit/Drawing/OdfDrawPage.Grouping.cs"],
      "tests": ["OdfKit.Tests/DrawingHighLevelApiTests.cs", "OdfKit.Tests/DrawingApiUsabilityTests.cs"],
      "interop": ["OdfKit.Tests/LibreOfficeInteropTests.cs"],
      "limitations": "Microsoft Office interoperability is limited to conversion paths supported by Office.",
      "operationEvidence": [
        {"topics":["page","layer","z-order","style-inheritance"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/DrawingHighLevelApiTests.cs","symbol":"PageCollectionFindRemoveAndRoundTrip"},
        {"topics":["page","layer","z-order","style-inheritance"],"operations":["Interop"],"test":"OdfKit.Tests/LibreOfficeInteropTests.cs","symbol":"LibreOfficeHeadlessLoadsGeneratedDocuments"},
        {"topics":["page"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/DrawingHighLevelApiTests.cs","symbol":"PageCollectionFindRemoveAndRoundTrip"},
        {"topics":["layer"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/PrimaryFormatCrudCompletionTests.cs","symbol":"OdgLayersRenameRemoveAndMaintainAssignments"},
        {"topics":["z-order"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/PrimaryFormatCrudCompletionTests.cs","symbol":"OdgShapesZOrderClearAndRoundTrip"}
        ,{"topics":["style-inheritance"],"operations":["Create","Get","Find","Set","Update","RoundTrip"],"test":"OdfKit.Tests/PrimaryFormatCrudCompletionTests.cs","symbol":"OdpAndOdgGraphicStyleInheritanceRoundTrips"}
      ]
    },
    {
      "id": "ODG-GEOMETRY",
      "format": "ODG",
      "topics": ["shape", "path", "bezier", "polygon", "connector", "group", "custom-geometry", "transform"],
      "specification": ["ODF 1.4 Part 3, clause 19", "SVG 1.1 paths and transforms"],
      "operations": {"Create":"verified","Get":"verified","Find":"verified","Set":"verified","Update":"verified","Remove":"verified","Clear":"verified","RoundTrip":"verified","Interop":"interop-tested"},
      "implementation": ["OdfKit/Drawing/OdfDrawPage.Creation.cs", "OdfKit/Drawing/OdfDrawPageShapeReadEngine.cs", "OdfKit/Drawing/DrawingDocument.DepthFeatures.cs"],
      "tests": ["OdfKit.Tests/DrawingHighLevelApiTests.cs", "OdfKit.Tests/ImageDrawingDepthTests.cs"],
      "interop": ["OdfKit.Tests/LibreOfficeInteropTests.cs"],
      "limitations": "A SmartArt or automatic complex-shape layout engine is not provided.",
      "operationEvidence": [
        {"topics":["shape","path","bezier","polygon","connector","group","custom-geometry","transform"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/DrawingHighLevelApiTests.cs","symbol":"RemoveShapeRemovesReferencingConnectorsAndRoundTrips"},
        {"topics":["shape","path","bezier","polygon","connector","group","custom-geometry","transform"],"operations":["Interop"],"test":"OdfKit.Tests/LibreOfficeInteropTests.cs","symbol":"LibreOfficeHeadlessLoadsGeneratedDocuments"},
        {"topics":["shape"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/PrimaryFormatCrudCompletionTests.cs","symbol":"OdgShapesZOrderClearAndRoundTrip"},
        {"topics":["path","bezier","polygon","custom-geometry","transform"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/PrimaryFormatCrudCompletionTests.cs","symbol":"OdgGeometryUpdateAndRoundTrip"},
        {"topics":["connector"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/DrawingHighLevelApiTests.cs","symbol":"RemoveShapeRemovesReferencingConnectorsAndRoundTrips"},
        {"topics":["group"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/PrimaryFormatCrudCompletionTests.cs","symbol":"OdgGroupsFindRemoveClearAndRoundTrip"}
      ]
    },
    {
      "id": "ODG-APPEARANCE",
      "format": "ODG",
      "topics": ["text", "picture", "gradient", "marker", "clip", "media-resource"],
      "specification": ["ODF 1.4 Part 3, clauses 10, 16, 18 and 20"],
      "operations": {"Create":"verified","Get":"verified","Find":"verified","Set":"verified","Update":"verified","Remove":"verified","Clear":"verified","RoundTrip":"verified","Interop":"interop-tested"},
      "implementation": ["OdfKit/Drawing/OdfDrawPage.cs", "OdfKit/Drawing/OdfDrawPage.Features.cs", "OdfKit/Drawing/OdfDrawPage.TextFallback.cs"],
      "tests": ["OdfKit.Tests/DrawingHighLevelApiTests.cs", "OdfKit.Tests/Cns11643InteropTests.cs"],
      "interop": ["OdfKit.Tests/LibreOfficeInteropTests.cs"],
      "limitations": "Pixel-identical rendering remains the responsibility of a rendering backend.",
      "operationEvidence": [
        {"topics":["text","picture","gradient","marker","clip","media-resource"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/DrawingHighLevelApiTests.cs","symbol":"GetPicturesRoundTripsAfterAdd"},
        {"topics":["text","picture","gradient","marker","clip","media-resource"],"operations":["Interop"],"test":"OdfKit.Tests/LibreOfficeInteropTests.cs","symbol":"LibreOfficeHeadlessLoadsGeneratedDocuments"},
        {"topics":["text","picture","media-resource"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/DrawingApiUsabilityTests.cs","symbol":"CreateLoadPagesShapesPicturesGroupsAndConnectors"},
        {"topics":["gradient"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/PrimaryFormatCrudCompletionTests.cs","symbol":"OdgGradientsCompleteLifecycleAndReferenceSafety"},
        {"topics":["marker"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/PrimaryFormatCrudCompletionTests.cs","symbol":"OdgMarkersCompleteLifecycleAndReferenceSafety"},
        {"topics":["clip"],"operations":["Get","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/PrimaryFormatCrudCompletionTests.cs","symbol":"OdgClipsUpdateClearAndRoundTrip"}
      ]
    },
    {
      "id": "ODC-CHART-MODEL",
      "format": "ODC",
      "topics": ["chart-model"],
      "specification": ["ODF 1.4 Part 3, clauses 3.8, 11, 19 and 20"],
      "operations": {"Create":"verified","Get":"verified","Find":"verified","Set":"verified","Update":"verified","Remove":"verified","Clear":"verified","RoundTrip":"verified","Interop":"interop-tested"},
      "implementation": ["OdfKit/Chart/OdfChartDocument.cs", "OdfKit/Chart/OdfChartDocument.SeriesAdvanced.cs", "OdfKit/Chart/OdfChartDocument.Styles.cs"],
      "tests": ["OdfKit.Tests/ChartHighLevelApiTests.cs", "OdfKit.Tests/SecondaryFormatApiScenarioTests.cs"],
      "interop": ["OdfKit.Tests/LibreOfficeInteropTests.cs"],
      "limitations": "LibreOffice does not open standalone ODC as a main document; interoperability is verified through embedded ODF charts and package structure.",
      "operationEvidence": [
        {"topics":["chart-model"],"operations":["Create","Get","Find","Set","Update","RoundTrip"],"test":"OdfKit.Tests/SecondaryFormatApiScenarioTests.cs","symbol":"ChartScenarioAxisAdvancedEditingSurvivesRoundTrip"},
        {"topics":["chart-model"],"operations":["Remove"],"test":"OdfKit.Tests/ChartHighLevelApiTests.cs","symbol":"RemoveSeriesAtRemovesOnlySelectedSeriesAndRoundTrips"},
        {"topics":["chart-model"],"operations":["Clear","Interop"],"test":"OdfKit.Tests/LibreOfficeInteropTests.cs","symbol":"LibreOfficeHeadlessChartApplyDefinitionAndClearSeriesRoundTripsOds"}
      ]
    },
    {
      "id": "ODB-DATABASE-MODEL",
      "format": "ODB",
      "topics": ["database-model"],
      "specification": ["ODF 1.4 Part 3, clause 12"],
      "operations": {"Create":"verified","Get":"verified","Find":"verified","Set":"verified","Update":"verified","Remove":"verified","Clear":"verified","RoundTrip":"verified","Interop":"interop-tested"},
      "implementation": ["OdfKit/Database/OdfDatabaseDocument.cs", "OdfKit/Database/OdfDatabaseDocument.Mutations.cs", "OdfKit/Database/OdfDatabaseSchema.cs"],
      "tests": ["OdfKit.Tests/DatabaseHighLevelApiTests.cs", "OdfKit.Tests/SecondaryFormatApiScenarioTests.cs"],
      "interop": ["OdfKit.Tests/LibreOfficeInteropTests.cs"],
      "limitations": "Headless conversion is not a reliable ODB interoperability path; package conformance and manual UNO loading remain the available evidence.",
      "operationEvidence": [
        {"topics":["database-model"],"operations":["Create","Get","Find","Set","Update","Remove","Clear","RoundTrip"],"test":"OdfKit.Tests/DatabaseHighLevelApiTests.cs","symbol":"TableAndQueryCrudUpdateRemoveAndClearRoundTrips"},
        {"topics":["database-model"],"operations":["Interop"],"test":"OdfKit.Tests/LibreOfficeInteropTests.cs","symbol":"DatabaseSchemaPackageUsesLibreOfficeCompatibleMimeType"}
      ]
    },
    {
      "id": "ODF-FORMULA-MODEL",
      "format": "ODF",
      "topics": ["formula-model"],
      "specification": ["ODF 1.4 Part 3, clauses 2.2.9 and 14.6", "MathML Core"],
      "operations": {"Create":"verified","Get":"verified","Find":"verified","Set":"verified","Update":"verified","Remove":"verified","Clear":"verified","RoundTrip":"verified","Interop":"interop-tested"},
      "implementation": ["OdfKit/Formula/OdfFormulaDocument.cs", "OdfKit/Formula/OdfFormulaDocument.Features.cs", "OdfKit/Formula/OdfMathToken.cs"],
      "tests": ["OdfKit.Tests/FormulaHighLevelApiTests.cs", "OdfKit.Tests/SecondaryFormatApiScenarioTests.cs"],
      "interop": ["OdfKit.Tests/LibreOfficeInteropTests.cs"],
      "limitations": "LaTeX reconstruction without a source annotation remains best-effort because MathML and LaTeX are not one-to-one.",
      "operationEvidence": [
        {"topics":["formula-model"],"operations":["Create","Get","Find","Set","Update","RoundTrip"],"test":"OdfKit.Tests/FormulaHighLevelApiTests.cs","symbol":"FormulaTokenSemanticEditingFindReplaceAndSetMathRowPersists"},
        {"topics":["formula-model"],"operations":["Remove","Clear"],"test":"OdfKit.Tests/FormulaHighLevelApiTests.cs","symbol":"RemoveFirstAndClearMathTokensPreserveEditableMathContainer"},
        {"topics":["formula-model"],"operations":["Interop"],"test":"OdfKit.Tests/LibreOfficeInteropTests.cs","symbol":"LibreOfficeHeadlessLoadsFormulaDocument"}
      ]
    },
    {
      "id": "ODI-IMAGE-MODEL",
      "format": "ODI",
      "topics": ["image-model"],
      "specification": ["ODF 1.4 Part 3, clauses 3.9, 10.4.2 and 10.4.4"],
      "operations": {"Create":"verified","Get":"verified","Find":"verified","Set":"verified","Update":"verified","Remove":"verified","Clear":"verified","RoundTrip":"verified","Interop":"interop-tested"},
      "implementation": ["OdfKit/Image/OdfImageDocument.cs", "OdfKit/Image/OdfImageDocument.Mutations.cs", "OdfKit/Image/OdfImageDocument.Effects.cs"],
      "tests": ["OdfKit.Tests/ImageHighLevelApiTests.cs", "OdfKit.Tests/SecondaryFormatApiScenarioTests.cs"],
      "interop": ["OdfKit.Tests/LibreOfficeInteropTests.cs"],
      "limitations": "ODF 1.4 defines a standalone image document as one frame containing one image; multi-frame APIs are extended-document workflows and are not claimed as strict ODI conformance.",
      "operationEvidence": [
        {"topics":["image-model"],"operations":["Create","Get","Find","Set","Update","Remove","RoundTrip"],"test":"OdfKit.Tests/SecondaryFormatApiScenarioTests.cs","symbol":"ImageScenarioMultiFrameLayoutSurvivesRoundTrip"},
        {"topics":["image-model"],"operations":["Update"],"test":"OdfKit.Tests/ImageHighLevelApiTests.cs","symbol":"ReplaceImageFrameContentPreservesFrameMetadataAndRoundTrips"},
        {"topics":["image-model"],"operations":["Clear"],"test":"OdfKit.Tests/ImageHighLevelApiTests.cs","symbol":"ImageRotationAndCropRoundTripAfterSaveAndLoad"},
        {"topics":["image-model"],"operations":["Interop"],"test":"OdfKit.Tests/LibreOfficeInteropTests.cs","symbol":"ImageDocumentPackageStructureMatchesOdf14Schema"}
      ]
    }
  ]
}
