<?xml version="1.0" encoding="UTF-8"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude"
     version="3"
     ipr="trust200902"
     category="info"
     submissionType="independent"
     docName="draft-rayner-proquint-00">

  <front>
    <title abbrev="Proquint">Proquints: Readable, Spellable, and Pronounceable Identifiers</title>
    <seriesInfo name="Internet-Draft" value="draft-rayner-proquint-00"/>

    <author fullname="Thomas" initials="" surname="Rayner">
      <organization>Independent</organization>
      <address>
        <email>thmsrynr@outlook.com</email>
      </address>
    </author>

    <date year="2025" month="August" day="11"/>

    <abstract>
      <t>This document specifies "proquints" (PRO-nounceable QUINT-uplets), a
      human-friendly encoding that maps binary data to pronounceable identifiers
      using fixed consonant-vowel patterns. The concept was originally described
      by Daniel Shawcross Wilkerson in 2009.
      This document formalizes the format for archival and reference.</t>
    </abstract>

  </front>

  <middle>
    <section anchor="intro" numbered="true">
      <name>Introduction</name>
      <t>Proquints encode binary data as alternating consonant-vowel letters grouped
      into five-letter syllables, yielding identifiers that are readable, spellable,
      and pronounceable. The idea and specific letter tables were first described
      by Daniel Shawcross Wilkerson in 2009 (<xref target="WILKERSON2009"/>).
      This document does not claim originality for the concept; it reformulates and
      formalizes the description for archival purposes.</t>
    </section>

    <section anchor="req" numbered="true">
      <name>Requirements Language</name>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD",
      "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this
      document are to be interpreted as described in BCP 14
      [<xref target="RFC2119"/>] [<xref target="RFC8174"/>] when, and only when, they
      appear in all capitals, as shown here.</t>
    </section>

    <section anchor="format" numbered="true">
      <name>Format</name>
      <t>A proquint encodes data in 16-bit blocks. Each block maps to a five-letter
      syllable of the form CVCVC (Consonant-Vowel-Consonant-Vowel-Consonant).</t>
      <t>The mapping tables are fixed:</t>
      <t>Consonants (indices 0..15):</t>
      <ul>
        <li><t>b d f g h j k l m n p r s t v z</t></li>
      </ul>
      <t>Vowels (indices 0..3):</t>
      <ul>
        <li><t>a i o u</t></li>
      </ul>
    </section>

    <section anchor="encoding" numbered="true">
      <name>Encoding</name>
      <ul>
        <li><t>Split the input byte string into 16-bit words (big-endian). If the number
        of bytes is odd, an implementation MAY pad a single zero byte to complete
        the final word; if padding is used, applications MUST define how the
        original length is recovered.</t></li>
        <li><t>For each 16-bit word, map bits 15-12 to the first consonant, bits 11-10 to
        the first vowel, bits 9-6 to the second consonant, bits 5-4 to the second
        vowel, and bits 3-0 to the final consonant.</t></li>
        <li><t>Concatenate syllables. Hyphens MAY be inserted between syllables for
        readability; decoders MUST ignore hyphens.</t></li>
      </ul>
    </section>

    <section anchor="decoding" numbered="true">
      <name>Decoding</name>
      <t>Decoders MUST reverse the mapping in <xref target="encoding"/>. Each five-letter
      syllable maps to one 16-bit value using the same tables and bit ordering.
      Hyphens, if present, MUST be ignored.</t>
    </section>

    <section anchor="examples" numbered="true">
      <name>Examples</name>
      <t>Short values (illustrative):</t>
      <artwork><![CDATA[
"127.0.0.1"  ->  "lusab-babad"
"proquint" ->  "laduf-kutud-lijon-kunuh"
0x1234 -> "damuh"
0xF00D -> "zabat"
]]></artwork>
      <t>Longer byte strings appear as multiple syllables, optionally hyphenated.</t>
    </section>

    <section anchor="security" numbered="true">
      <name>Security Considerations</name>
      <t>Proquint is a presentation encoding. It provides no confidentiality,
      integrity, or authentication services. It does not add or remove entropy,
      and it MUST NOT be used as a cryptographic transform.</t>
    </section>

    <section anchor="iana" numbered="true">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>

    <section anchor="ack" numbered="true">
      <name>Acknowledgments</name>
      <t>The author thanks Daniel Shawcross Wilkerson for originating the proquint
      concept and publishing the initial specification in 2009 (<xref target="WILKERSON2009"/>).</t>
    </section>
  </middle>

<back>
  <references>
    <name>References</name>

    <references anchor="normative">
      <name>Normative References</name>

      <referencegroup anchor="BCP14" target="https://www.rfc-editor.org/info/bcp14">
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author initials="S." surname="Bradner" fullname="Scott Bradner"/>
            <date month="March" year="1997"/>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>

        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author initials="B." surname="Leiba" fullname="Barry Leiba"/>
            <date month="May" year="2017"/>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </referencegroup>
    </references>

    <references anchor="informative">
      <name>Informative References</name>
      <reference anchor="WILKERSON2009" target="https://arxiv.org/html/0901.4016">
        <front>
          <title>Proquints: Identifiers that are Readable, Spellable, and Pronounceable</title>
          <author initials="D.S." surname="Wilkerson" fullname="Daniel Shawcross Wilkerson"/>
          <date month="January" year="2009"/>
        </front>
        <seriesInfo name="arXiv" value="0901.4016"/>
      </reference>
    </references>

  </references>
</back>
</rfc>
