Links
Problem
Converting a Word document to markdown silently loses every embedded image. Pandoc writes image references but does not write the image files unless --extract-media is passed, and the server does not expose it.
$ pandoc img.docx -t markdown
{...} ← this file is never created
$ pandoc img.docx -t markdown --extract-media=./media
$ ls media/media
rId9.png ← now it exists
Why it matters
An agent converting an inbound Word document receives broken image links with no error and no warning. It cannot detect that content is missing, so it reasons over an incomplete document and does not know it.
Before designing the fix
Acceptance criteria
Open design question
Implicit extraction is correct by default but writes files the caller did not request. Explicit is predictable but leaves the silent-loss default in place for anyone who does not know to ask.
Note on the API: adding an optional parameter is not a breaking change. additionalProperties: false rejects properties clients send that we do not know; adding a new optional property to the published schema is additive. The contract concern is about removing or renaming, not adding.
Links
docs/audits/2026-08-agent-workflow-audit.md→ Finding 5Problem
Converting a Word document to markdown silently loses every embedded image. Pandoc writes image references but does not write the image files unless
--extract-mediais passed, and the server does not expose it.Why it matters
An agent converting an inbound Word document receives broken image links with no error and no warning. It cannot detect that content is missing, so it reasons over an incomplete document and does not know it.
Before designing the fix
.docxfixture with real embedded images. The current reproduction used a synthetic one-pixel PNG and is not independently re-runnableAcceptance criteria
Open design question
Implicit extraction is correct by default but writes files the caller did not request. Explicit is predictable but leaves the silent-loss default in place for anyone who does not know to ask.
Note on the API: adding an optional parameter is not a breaking change.
additionalProperties: falserejects properties clients send that we do not know; adding a new optional property to the published schema is additive. The contract concern is about removing or renaming, not adding.