Skip to content

Fidelity ledger

What this covers, before any number below. The round-trip guarantee is scoped to decks written by @shbernal/ts-pptx, which is what these 27 decks are. Decks authored in PowerPoint are a deliberate second tier and are not gated by any of this. See Invariant R and the round-trip oracle for what the gate does and does not promise.

This table is not a pass/fail list, and reading it as one gets it backwards. "How many round-trips are green" says nothing while the supported subset is small: a converter that models three constructs and warns about everything else would be entirely green. What moves is the shape of the loss: notes leaving dropped, causes leaving unread, slides leaving the carried lane.

That is also what the hard tier is for. 5 of the decks below are there to be watched moving, not to pass today; they hold features with a known-hard or absent path through the writer, and they earn their place by making a regression visible rather than by being green.

Per deck

Every deck name links to the playground with that deck loaded, so a row is something you can run rather than something you have to take on trust.

DeckTierSlidesWrite callsNotes
text-boxprimitive1 (1 authored / 0 carried)14
autoshapeprimitive1 (1 authored / 0 carried)14
preset-geometryprimitive1 (1 authored / 0 carried)84
custgeomprimitive1 (1 authored / 0 carried)15
tableprimitive1 (1 authored / 0 carried)16
cell-fillprimitive1 (1 authored / 0 carried)16
pictureprimitive1 (1 authored / 0 carried)14
picture-svgprimitive1 (1 authored / 0 carried)15
connectorprimitive1 (1 authored / 0 carried)14
gradientprimitive1 (1 authored / 0 carried)14
groupprimitive1 (1 authored / 0 carried)14
nested-groupprimitive1 (1 authored / 0 carried)14
hyperlinkprimitive2 (2 authored / 0 carried)24
line-capprimitive1 (1 authored / 0 carried)14
bulletprimitive1 (1 authored / 0 carried)25
autofit-shrinkprimitive1 (1 authored / 0 carried)34
text-decorationprimitive1 (1 authored / 0 carried)14
paragraph-alignprimitive1 (1 authored / 0 carried)14
paragraph-bulletprimitive1 (1 authored / 0 carried)16
paragraph-indentprimitive1 (1 authored / 0 carried)16
master-backgroundprimitive1 (1 authored / 0 carried)17
layout-chromeprimitive1 (1 authored / 0 carried)17
charthard1 (1 authored / 0 carried)15
layout-placeholderhard1 (1 authored / 0 carried)29
noteshard1 (1 authored / 0 carried)14
rotated-flippedhard1 (1 authored / 0 carried)24
theme-colorhard1 (1 authored / 0 carried)24

Where the losses sit

Fidelity notes across the whole corpus, by disposition (what happened to the construct) × cause (why). Both axes are upstream FidelityNote values, not a local restatement of them: one vocabulary, so the differ and this page cannot drift apart.

The cause is also the triage: unread and unwritable name a specific subsystem of the writer and are fixable there, while unsupported is a property of OOXML or of the output tier and will not move however much converter work happens.

unreadunwritableunsupported
dropped28277
flattened02710
approximated2705

Constructs named

DeckConstructs
text-boxdeck.docProps, master.background, master.txStyles, theme.fmtScheme
autoshapedeck.docProps, master.background, master.txStyles, theme.fmtScheme
preset-geometrydeck.docProps, master.background, master.txStyles, theme.fmtScheme
custgeomdeck.docProps, master.background, master.txStyles, shape.custGeom.guides, theme.fmtScheme
tabledeck.docProps, master.background, master.txStyles, table.rowAuto, table.style, theme.fmtScheme
cell-filldeck.docProps, master.background, master.txStyles, table.rowAuto, table.style, theme.fmtScheme
picturedeck.docProps, master.background, master.txStyles, theme.fmtScheme
picture-svgdeck.docProps, image.svg, master.background, master.txStyles, theme.fmtScheme
connectordeck.docProps, master.background, master.txStyles, theme.fmtScheme
gradientdeck.docProps, master.background, master.txStyles, theme.fmtScheme
groupdeck.docProps, master.background, master.txStyles, theme.fmtScheme
nested-groupdeck.docProps, master.background, master.txStyles, theme.fmtScheme
hyperlinkdeck.docProps, master.background, master.txStyles, theme.fmtScheme
line-capdeck.docProps, master.background, master.txStyles, theme.fmtScheme
bulletdeck.docProps, master.background, master.txStyles, text.bullet.picture, theme.fmtScheme
autofit-shrinkdeck.docProps, master.background, master.txStyles, theme.fmtScheme
text-decorationdeck.docProps, master.background, master.txStyles, theme.fmtScheme
paragraph-aligndeck.docProps, master.background, master.txStyles, theme.fmtScheme
paragraph-bulletdeck.docProps, master.background, master.placeholders, master.txStyles, shape.placeholder, theme.fmtScheme
paragraph-indentdeck.docProps, master.background, master.placeholders, master.txStyles, shape.placeholder, theme.fmtScheme
master-backgrounddeck.docProps, master.background, master.placeholders, master.txStyles, shape.placeholder, text.color.inherited, theme.fmtScheme
layout-chromedeck.docProps, master.background, master.placeholders, master.txStyles, shape.placeholder, text.color.inherited, theme.fmtScheme
chartchart.workbook, deck.docProps, master.background, master.txStyles, theme.fmtScheme
layout-placeholderdeck.docProps, master.background, master.placeholders, master.txStyles, shape.placeholder, text.color.inherited, theme.fmtScheme
notesdeck.docProps, master.background, master.txStyles, theme.fmtScheme
rotated-flippeddeck.docProps, master.background, master.txStyles, theme.fmtScheme
theme-colordeck.docProps, master.background, master.txStyles, theme.fmtScheme

Notes the differ cannot match

None. Every fidelity note in the corpus names a construct the differ has a matcher for. A note it does not know is inert (it looks like honesty while excusing nothing), so the oracle holds this at zero.

Released under the MIT License.