Charset validation -- the negative corpus

PROVENANCE: OURS, DERIVED FROM THE ABNF (not extracted from the RFC text)

This directory is UNLIKE test/conformance/rfc3986/, whose every file is DERIVED
from the vendored RFC text by cmake/UriCorpus.cmake and re-derived by the lane
uri.harness.corpus-provenance. RFC 3986 lists no invalid URIs, so there is
nothing to extract: negative.scm is HAND-AUTHORED, derived from the collected
ABNF at test/conformance/rfc3986/rfc3986.abnf (itself RFC-derived) and RFC 5234
Appendix B for ALPHA / DIGIT / HEXDIG.

It is therefore a SEPARATE provenance with a SEPARATE count: it is never averaged into the normative §5.4 / §1.1.2
figures, and it is NOT guarded by the corpus-provenance lane. Its guard is
instead:

  - every row's (component, code, offset) is cross-checked against
    (uri test charset-oracle) -- an INDEPENDENT reading of the same ABNF -- by
    the lane uri.unit.charset-oracle; a row inconsistent with the oracle reddens;
  - per-production coverage floors keep the set from silently shrinking; and
  - (uri charset) is run over this corpus and must reject every
    row with the recorded code and absolute offset, and over the positive
    corpora (§5.4, §1.1.2) which it must still ACCEPT.

WHAT IS HERE

  negative.scm   invalid inputs for scheme / path / query / fragment and
                 pct-encoded, each tagged with the ABNF production it violates
                 and the ABSOLUTE offset of the offending byte (the "%" for a
                 malformed pct-encoded). Every offset is defended in the row's
                 note.

WHAT IS NOT HERE, AND WHY

  port and every authority-interior charset (userinfo, host / reg-name,
  IP-literal) belong to the host corpus (test/conformance/host/): the authority
  is one opaque span to (uri charset) until the host grammar splits it, and an
  error cannot name the specific violated production before the split. The
  project has no ABNF-driven generator or charset-aware mutator; this corpus is
  hand-derived.
