Skip to content

docs: citation/documentation sweep (PUNY-ccaxoxfa)#21

Merged
bart-turczynski merged 1 commit into
mainfrom
docs/puny-ccaxoxfa-citation-sweep
Jun 16, 2026
Merged

docs: citation/documentation sweep (PUNY-ccaxoxfa)#21
bart-turczynski merged 1 commit into
mainfrom
docs/puny-ccaxoxfa-citation-sweep

Conversation

@bart-turczynski

Copy link
Copy Markdown
Owner

What

Item F of the standards-compliance audit (PUNY-emjvtzlr) — the final subtask. Documentation only — no behaviour change.

Cites the standards behaviour the package already implements and makes the UTS #46 ≠ IDNA2008 distinction explicit everywhere it matters.

  • docs/normalization-contract.md: new normative Standards and references section mapping each standard to where it is used:
    • RFC 3492 (Punycode transform), RFC 5890 (xn-- ACE framing), RFC 5891 (canonical A-label — cited for that check only, not a conformance claim), RFC 5892 (ContextJ via CheckJoiners; explicitly NOT full CONTEXTO — CONTEXTO points marked valid by the mapping table are accepted, which is conformant UTS #46), RFC 5893 (Bidi via CheckBidi), UAX test: UTS #46 IdnaTestV2 conformance for host_normalize (PUNY-huogtrqn) #15 (NFC), UAX #44 (UCD properties), STD 3 = RFC 952 + RFC 1123 (UseSTD3ASCIIRules), RFC 8753 (version pinning).
    • IDNA2003 / Nameprep / Stringprep (RFC 3490/3491/3454) noted as the rejected alternative; RFC 5894 as informational background.
    • URL-surface citations (RFC 3986/3987, WHATWG URL, RFC 5952/4291/6874) listed as scope-conditional, moving with that surface.
  • host_normalize() roxygen: "UTS #46 profile, not IDNA2008 / RFC 5891 conformance" with the ☕.examplexn--53h.example example and per-standard pointers.
  • README: two-tier overview (codec vs IDNA/UTS-46), UTS #46 ≠ IDNA2008 note, host_normalize() / normalization_profile_info() added to the feature list, link to the contract.

Test

devtools::test()[ FAIL 0 | WARN 0 | SKIP 0 | PASS 375 ]

This completes all subtasks (A–F) of the audit umbrella.

🤖 Generated with Claude Code

Cite the standards behaviour we already implement and make the UTS #46 !=
IDNA2008 distinction explicit. No behaviour change.

- normalization-contract.md: new "Standards and references" section mapping
  each standard to where it is used — RFC 3492 (Punycode transform), RFC 5890
  (xn-- ACE framing), RFC 5891 (canonical A-label, cited for that check only),
  RFC 5892 (ContextJ via CheckJoiners; NOT full CONTEXTO), RFC 5893 (Bidi via
  CheckBidi), UAX #15 (NFC), UAX #44 (UCD properties), STD 3 = RFC 952+1123
  (UseSTD3), RFC 8753 (version pinning). Notes IDNA2003/Nameprep (RFC
  3490/3491/3454) as the rejected alternative and the URL-surface citations as
  scope-conditional.
- host_normalize roxygen: spell out "UTS #46 profile, not IDNA2008/RFC 5891
  conformance" with the coffee.example example and per-standard pointers.
- README: two-tier overview, UTS #46 != IDNA2008 note, host_normalize/
  normalization_profile_info added to the feature list, link to the contract.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@bart-turczynski bart-turczynski merged commit 6e952c2 into main Jun 16, 2026
@bart-turczynski bart-turczynski deleted the docs/puny-ccaxoxfa-citation-sweep branch June 16, 2026 19:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant