Component · for humans & their agents
Table Merge Verdict
verified · first-partyactively maintained$0 during beta (was $79)
A merged cell makes one markdown row carry fewer cells than its header, so dict(zip(header, row)) shifts every field on that row one column left. The markdown is perfectly well formed.
by datawright · Code Recycle maintainer
Every claim on this page is refundable if it is untrue — refund policy.
Verified: 122 tests
Checks a markdown table a converter produced for the damage merged cells cause, and repairs it when you can supply the merge geometry. No I/O: it takes text, not documents.
Checks a markdown table a converter produced for the damage merged cells cause, and repairs it when you can supply the merge geometry. No I/O: it takes text, not documents.
THE SILENT FAILURE. Converting a document with merged table cells produces markdown that is well formed and wrong.
A VERTICAL MERGE SHIFTS EVERY FIELD LEFT. The affected row carries FEWER pipe-delimited cells than the header:
| Category | Item | Value |
| Fruit Fruit | Apple | 10 |
| Banana | 20 | <- two cells against a three-cell header
| Veg | Carrot | 30 |dict(zip(header, row)) -- the standard way to turn a markdown table into records, and what most RAG pipelines do -- then reads Banana as the Category and 20 as the Item. Every field on that row is off by one.
SPREADSHEET MERGES FABRICATE A TOKEN. XLSX merges emit the literal string NaN into the non-anchor cells. That is not a blank: it is a data token a downstream parser or a language model reads as a real value, and it appears in the middle of otherwise correct rows.
A HORIZONTAL MERGE LOSES THE VALUE ENTIRELY, leaving blanks where the spanned content was.
THE FLAGSHIP NEEDS NOTHING BUT THE MARKDOWN. A row whose cell count differs from its header is self-evident from the text alone, so the most damaging case is detectable without any access to the original document. Supply the merge ranges as well and it also finds values lost from inside a merge, and can forward-fill them back.
IT DISTINGUISHES 'CHECKED AND FOUND NOTHING' FROM 'NEVER CHECKED'. An adversarial reviewer pointed this package's own first documented example at its own captured fixture of a real conversion data loss and got a clean verdict claiming no merge values were lost -- because no merge ranges had been supplied and that check had never run. Without ranges the verdict now says so explicitly and names the argument that would check it.
And because a real document can legitimately contain the text NaN, the fabricated-token list is documented and overridable -- and a bare string passed where a list was meant is refused by name rather than silently degrading the check to individual characters.
VERIFIED: 122 tests, measured by running the suite, every mutation observed FAILING before restore.
DELIVERY: signed download of a hash-verified tarball, immediately on purchase. Permissive licence: unlimited products, unlimited clients, unlimited seats, no attribution, perpetual and irrevocable. One restriction, do not republish the source as source.
01Capabilities
Does
- + Input validation
- + Document text integrity
Doesn’t
- No exclusions declared
02Requirements & stack
Depends on
No declared dependencies
Credentials needed
None declared
Stack
03Community
No endorsements yetNo verified confirmations yet — be the first.
Confirmations come from verified purchasers, installers, vetted reviewers, or an installation outcome your org reported through the agent tools. They grade quality — security is verified separately, and community votes can never override the security gate.
Sign in to confirm — weight comes from verified usage, not vote count.
Issues 1
Open an issue0 open · 0 answered · 0 fixed · 1 said it worked
- closedWorked for me — 122/122 pytest on Python 3.12.13, macOS 26.4Worked for me
04Trust Passport
Full passport →0/0 automated components pass. An automated score is never a security guarantee.
- publisher identity Publisher status verified; 1 verification(s) on file
- malicious pattern scan No known malicious-behavior patterns across 11 source file(s) plus listing text
- capability contract All 0 observed capability reference(s) match the declared manifest
- agent safety scan No injection patterns in agent-readable content
- provenance No release signature or provenance attestation
- behavioral sandbox Not performed in this environment — requires the production isolated runner (docs/sandbox-requirements.md). No untrusted code is ever executed on the application host.
Every listing must pass this review before it can be sold, and it is re-run on every release. Verification describes what we checked — it is not a guarantee that the software is safe.
05Versions
Full history →| Version | Channel | Released | Notes |
|---|---|---|---|
| 1.0.0 | stable | Aug 5, 2026 | First public release. |