Skip to content

I3: mailto: and bare addresses parse to one identity; files and hashes keep the bare form #64

Closed as not planned

Description

@Hafeok

PRD: §2 (amended 2026-10-01, ruling 6; refined 2026-10-02). Size: S. Depends on: nothing.

Ruled. The stored and hashed form stays the bare address. mailto: is the identity's IRI form in the graph projection, and the form used for equality.

  • Parse normalises mailto:x@y and x@y to one identity.
  • The file keeps the bare form.
  • The export emits <mailto:x@y>.

There is no canonical-form change and no digest moves; see the comment of 2026-10-02.

Today Identity::from_str (ledger-core/src/identity.rs) accepts mailto:x@y as a different identity, whose local part is mailto:x. The Varve interim files spell all 513 acceptances that way.

Work:

  1. Parse strips a leading mailto: and refuses any other scheme:. model_or_bot_reason judges the address, as it does today.
  2. Display and serde keep writing the bare form, so files and the canonical form are unchanged.
  3. Compare by address everywhere. L009 already compares git's %ae with the bare form.
  4. Add a test pinning that a version whose actor or accepted_by is spelt mailto:x@y hashes to the same digest as x@y, and as today.
  5. The emitter's mailto() stays as it is; it does not double-prefix, because Display is bare.

Activity

  1. added theissue type on Oct 1, 2026
  2. Hafeok commented on Oct 2, 2026

    @Hafeok
    CollaboratorAuthor

    Ruled 2026-10-02: the hash concern is closed. The stored and hashed form stays the bare address. mailto: is the identity's IRI form in the graph projection, and it is the form used for equality.

    The rule:

    • Parse normalises mailto:x@y and x@y to one identity.
    • The file keeps the bare form. Writers emit x@y, and the canonical form hashes x@y.
    • The export emits <mailto:x@y>, as turtle.rs mailto() already does.

    So there is no canonical-form change, no digest moves, and CANONICAL_FORM stays ledger.decision-version.v1. What is left for this issue: the parse normalisation, refusing any other URI scheme, keeping Display and serde writing the bare form, comparing by address in L009, and a test pinning that x@y and mailto:x@y hash to today's digest.


    Generated by Claude Code

  3. changed the title [-]I3: mailto: is the canonical identity — normalise bare addresses on parse[/-] [+]I3: mailto: and bare addresses parse to one identity; files and hashes keep the bare form[/+] on Oct 2, 2026
  4. Hafeok commented on Nov 3, 2026

    @Hafeok
    CollaboratorAuthor

    Closed as not carried under D1.24`` and the definition's chapter 8:``` the Rust tool is frozen at rust-final and its tree left `main` in #166 (`53bd547`). This concerns the Rust ledger (its keys, namespaces or authority), which is Writ's authority graph now. The rewrite holds no key and no grant, and `writ import` reads `.decisions/` once, at the tag. Disposition approved on #165.


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Fields

    Priority

    None yet

    Effort

    None yet

    Progress

    None yet

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions