You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
I3: mailto: and bare addresses parse to one identity; files and hashes keep the bare form #64
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:
Parse strips a leading mailto: and refuses any other scheme:. model_or_bot_reason judges the address, as it does today.
Display and serde keep writing the bare form, so files and the canonical form are unchanged.
Compare by address everywhere. L009 already compares git's %ae with the bare form.
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.
The emitter's mailto() stays as it is; it does not double-prefix, because Display is bare.
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.rsmailto() 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.
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
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.
Activity
Hafeok commentedon Oct 2, 2026
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:
mailto:x@yandx@yto one identity.x@y, and the canonical form hashesx@y.<mailto:x@y>, asturtle.rsmailto()already does.So there is no canonical-form change, no digest moves, and
CANONICAL_FORMstaysledger.decision-version.v1. What is left for this issue: the parse normalisation, refusing any other URI scheme, keepingDisplayand serde writing the bare form, comparing by address inL009, and a test pinning thatx@yandmailto:x@yhash to today's digest.Generated by Claude Code
[-]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[/+]Hafeok commentedon Nov 3, 2026
Closed as not carried under D1.24`` and the definition's chapter 8:``` the Rust tool is frozen at
rust-finaland 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