FIELD NOTES · ACCEPTANCE EXERCISES

What does a character limit count in a bilingual form?

A counter can reject a short-looking name or emoji because the implementation counts storage units rather than visible character clusters. Agree whether the limit concerns graphemes, code points, bytes or another business rule before changing the limit number. A frontend count and backend byte cap are not automatically equivalent.

Who should use this acceptance brief

Service businesses collecting short multilingual briefs. Use this as a scoped website handover task. Where real system evidence is required, teaching examples are not a substitute.

Source-bound platform fact

Intl.Segmenter supports locale-aware segmentation, including grapheme granularity. A grapheme count is not a universal definition of a word or a storage-byte budget. MDN: Intl.Segmenter · Checked 16 October 2026.

Filled teaching example

Synthetic example, not a client case. Finite inputs, expected decisions and counterexamples follow; no live integration is claimed.

On narrow screens, scroll to read the complete table.

Input / caseCheck basisExpected decision
e + combining accentone grapheme1
family emoji sequenceone grapheme in fixture1
中文two graphemes2

Run the acceptance exercise

  1. Write the unit beside the limit and identify any independent storage constraint.
  2. Test combining marks, CJK, emoji and line breaks using the same backend policy.
  3. At the boundary, preserve the input and explain the next correction rather than silently truncating.

Interpret the result and retain evidence

The supplied runtime example counts graphemes with Intl.Segmenter. It does not validate personal names or establish identity; it must not be used to exclude a writing system. Keep expected counts, runtime/version and observed server response in the acceptance record, especially when frontend and backend use different libraries.

Limits before implementation

Unicode segmentation data can evolve by runtime. Excludes byte limits, database encoding and legal identity validation.

Replay the finite example

Save both files in one folder and run with Node22.13 or newer. The example sends no network requests and changes no account or site. Filled inputs and expected outputs · Inspectable functions

node decision-check.mjs multilingual-character-limit-contract.json