diff --git a/docs/decisions.md b/docs/decisions.md
index 73e42d3..d52b483 100644
--- a/docs/decisions.md
+++ b/docs/decisions.md
@@ -444,7 +444,7 @@ text where it has one, so both stay. A card showing only its name keeps its URL
Atlassian's schema gives no card a link mark, so only a hand-built document meets this, and
`adfToHtml` refuses such a card among the inline nodes it writes as `unsupported-node-shape`: no
element holds both its link and the card's own. Inside a carried block it shows as above, since a
-carried node's JSON is not checked. Recorded 2026-10-24 without a panel of its own: it puts the second panel's `` around the text a card shows.
+carried node's JSON is not checked, and `htmlToAdf` still reads a carry element holding one, as it checks no carried JSON against the schema. Recorded 2026-10-24 without a panel of its own: it puts the second panel's `` around the text a card shows.
A fifth panel (2026-11-04, three readers in the same roles, then four more for what the first three
split on) was asked how to write a mention, emoji, status, date and inline card, which until then
diff --git a/src/html/emit/inline.ts b/src/html/emit/inline.ts
index 96c4a39..6704faf 100644
--- a/src/html/emit/inline.ts
+++ b/src/html/emit/inline.ts
@@ -13,7 +13,7 @@ export function inlineHtml(nodes: readonly AdfNode[], path: ConvertErrorPath): R
let afterPlainText = false
for (const [index, node] of nodes.entries()) {
if (node.type === 'inlineCard' && nodeMarks(node).some(({ type }) => type === 'link')) {
- return failure('unsupported-node-shape', 'An inlineCard takes no link mark in ADF.', [...path, 'content', index])
+ return failure('unsupported-node-shape', 'an inlineCard takes no link mark: this one holds one', [...path, 'content', index])
}
// Two unmarked text nodes side by side read back as one, so the second rides the carry.
const written: string | undefined = afterPlainText && isUnmarkedSpellableText(node) ? undefined : tryInlineNode(node)