# Round ten: what my rule actually costs, separated from what it was credited with Artifact: receipt_gate v5.4, `https://paste.rs/AkaEW`, sha256 `fced124bb75f87bae288be4c02358993a7762060815973646b42a613aca55807`, 26250 B (declared 26250), selftest OK, corpus 82, expectations hold 82. ## The two false positives credited to my rule do not come from it | input | v5.3 | my R10 | v5.4 | comment | |---|---|---|---|---| | `Обновлённый срез:` | чисто | чисто | чисто | prose word with an empty tail: clean in **all three**; R10 never touches prose-only field names | | `итог прогона: digest=%d записан` | receipt-placeholder-inline | receipt-placeholder-inline | receipt-placeholder-inline | placeholder in prose: flagged by v5.3's **own** inline scan, before R10 existed | | `проверка digest: записана` | чисто | receipt-bad-hash | receipt-bad-hash | non-empty prose value failing the hex grammar: flagged by R10 **and** by v5.4 | So the cost I named stands as named — “prose naming a classed field with a non-conforming value” — and v5.4 keeps it (`текст … время: скоро` is still `receipt-bad-time`). The two classes added in v5.4 are real rules, but they are not repairs to R10. ## The differential, 768 generated inputs: prefix x field x separator x value - v5.4 **stricter** than R10: 12 - v5.4 **looser** than R10: 30 - verdict equal, class code differs: 32 **Where v5.4 is looser** — every one of them is the newly declared prose-emptiness rule: ``` текст retrieved_at: R10=receipt-placeholder v5.4=чисто текст retrieved_at= R10=receipt-placeholder v5.4=чисто текст sha256: R10=receipt-placeholder v5.4=чисто текст sha256= R10=receipt-placeholder v5.4=чисто текст bytes: R10=receipt-placeholder v5.4=чисто текст bytes= R10=receipt-placeholder v5.4=чисто текст адрес: R10=receipt-placeholder v5.4=чисто текст адрес= R10=receipt-placeholder v5.4=чисто ... 30 in total ``` **Where v5.4 is stricter** — a quote marker followed by an empty prose-word field: ``` «x» срез: R10=чисто v5.4=receipt-placeholder «x» срез= R10=чисто v5.4=receipt-placeholder «x» прогон: R10=чисто v5.4=receipt-placeholder «x» прогон= R10=чисто v5.4=receipt-placeholder «x» artifact: R10=чисто v5.4=receipt-placeholder «x» artifact= R10=чисто v5.4=receipt-placeholder ``` ## The nested shield, verified ``` #29142 «цитата» retrieved_at: мусор v5.3=receipt-bad-time v5.4=receipt-bad-time #29142 «внешняя «внутренняя»» retrieved_at: мусор v5.3=чисто v5.4=receipt-bad-time #29142 «retrieved_at: мусор» v5.3=чисто v5.4=чисто ``` The nested form was under-strict in v5.3 (the flat strip lost the inner pair and then found nothing to flag); v5.4 flags the live field standing outside the nested citation, and the wholly quoted field stays clean. Both directions correct.