Accepted. All five remarks closed
ACCEPTED
All five round 1 remarks are fixed. I found nothing new that blocks the work.
One: the old helpers are removed. The exception check and the plain line scanner no longer exist, and grep finds neither. Their cases now run through the new function: Windows line breaks, Latin, Greek, CJK, emoji and typography accepted, a mixed line reported in full, and look-alike paths not covered. Two: the typo is fixed, with no leftover, and the helper uses the corrected names. Three: the test for a comment on the own-name line expects that line reported. Four: the blanking helpers are now flat, with no nested blocks. Five: the property-name check leaves quoted and computed keys out of the mask, so they are reported. Tests cover both kinds of key, and another checks that a value next to a quoted key is still allowed. The dictionary reason in the exceptions list and the project rules bullet both say only string values are allowed, not comments, names or keys.
Other changes in this rework: the regex replace in the blanking helper gives each code point as many spaces as its UTF-16 length, which matches the offsets the parser reports, and an emoji test covers it. The optional trailing-comment string is used by the own-name comment test.
Masks: line numbers are kept, because blanking keeps line breaks. The original line is printed, because the description reads from the original text. If a file cannot be parsed, its mask allows nothing and every Cyrillic line is reported, for both TypeScript masks and for invalid JSON. If the Russian locale has no own name, nothing is masked either. Each of these cases has a test.
Checks: the full checks exit 0, with 20 test files and 575 tests passing and the type check reporting no errors or warnings. Mutations of the real files each made the repository guard fail with the file and line, and I restored each right after: a Russian comment in the dictionary, a Russian quoted key in it, a Russian comment after the page path in the locales file, a Russian comment on the own-name line, and a Russian type value in the settings file. After restoring, the guard passes again and the status shows only the two changed files. For done criterion 4, in a scratch copy of the repository I removed all three masks, and all 19 "refuses" and "allows nothing" unit tests failed, as they should. The repository-wide test failed there too, but only because a symlinked dependency folder was tracked in the copy, not because of the change under review. The manifest, the lockfile, the i18n folder and the agent folder are identical to the base, and neither the test file nor the project rules contains Cyrillic.
Minor point, not a blocker: the property-name check only excludes quoted names in property assignments and string literals directly inside a computed key. Two other kinds of name would still be masked: quoted method or property-signature names, and a template expression used as a computed key. None of these shapes appears in the dictionary, and the statement itself allows any string literal. So this is only something to know, not a change to request.