pub struct AiDelegationEntry {
pub delegation_verifier: String,
pub delegation_salt: Option<String>,
pub created: DateTime<Utc>,
pub rotated: Option<DateTime<Utc>>,
}Expand description
A stable per-(human, AI) delegation key.
Under ADR-037 the delegation seed is deterministically derived from the
human’s Argon2id-derived identity material (derive_key(passphrase, kdf_nonce))
plus the per-(human, AI) delegation_salt recorded here. Identical inputs
on any of the human’s machines yield the same Ed25519 keypair, so the same
delegation is reachable from anywhere without per-machine state in
project.yaml. The matching private seed is cached at
~/.local/state/joy/delegations/<project>/<ai-member>.key (0600); a missing
cache is regenerated transparently from passphrase + salt at next use.
Legacy entries (created under ADR-033 §1, before ADR-037) carry no
delegation_salt. They keep working on the machine whose local cache holds
the matching random seed; rotating under the new code populates the salt
and unblocks every other machine going forward.
Fields§
§delegation_verifier: StringPublic verifier of the stable delegation keypair (hex-encoded Ed25519). Used to verify the binding signature on delegation tokens.
delegation_salt: Option<String>32-byte hex salt feeding HKDF-SHA256 over the human’s identity material
(ADR-037). None for legacy entries created under ADR-033 §1; populated
by joy ai rotate and by every fresh delegation issued under ADR-037.
created: DateTime<Utc>When this delegation was first issued.
rotated: Option<DateTime<Utc>>When this delegation was last rotated, if ever.
Trait Implementations§
Source§impl Clone for AiDelegationEntry
impl Clone for AiDelegationEntry
Source§fn clone(&self) -> AiDelegationEntry
fn clone(&self) -> AiDelegationEntry
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for AiDelegationEntry
impl Debug for AiDelegationEntry
Source§impl<'de> Deserialize<'de> for AiDelegationEntry
impl<'de> Deserialize<'de> for AiDelegationEntry
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl PartialEq for AiDelegationEntry
impl PartialEq for AiDelegationEntry
Source§fn eq(&self, other: &AiDelegationEntry) -> bool
fn eq(&self, other: &AiDelegationEntry) -> bool
self and other values to be equal, and is used by ==.