Enter © 🙂 &unknown;. One decode pass produces © 🙂 &unknown;. The known numeric reference resolves, the newly exposed named reference waits for another pass, and the unknown name stays visible.
A second pass is explicit
If you intentionally submit the first result again, © becomes ©. EntityCodec never repeats decoding silently, so each layer remains reviewable.
Verify the exact destination
Character-reference encoding changes text representation, not the trust level of the data. Keep the output as text until the receiving system applies the correct context-specific escaping or sanitization. Compare the complete result after pasting it into that system. For a repeatable check, keep one literal fixture beside its expected encoded form, run the same selected profile twice, and compare every ampersand, semicolon, code point, space, and line break. Then test the receiving text binding with harmless representative characters. If the destination rewrites, normalizes, repeatedly decodes, or renders the value, document that later behavior separately because it is outside EntityCodec.