跳转到内容

ak.schema.controller_account_gate_attestation_issue_outcome.v1

← Schemas

Arkret Agent Authority Portable Evidence
ak.schema.controller_account_gate_attestation_issue_outcome.v1 · file: schemas/agent-authority-evidence.schema.json

Portable Agent signer evidence carried to a Station or peer verifier: the Agent Authority state evidence over one exact confirmed RealmCommit state, and the Account Authority controller gate. Both objects anchor their own local detached signature under their own registered domain separation; neither reuses the shared Event proof leaf. Agent and controller private keys, MLS private state, service-local account_id and raw account typed current results never appear here.

* $ · oneOf[4]
Portable Agent signer evidence carried to a Station or peer verifier: the Agent Authority state evidence over one exact confirmed RealmCommit state, and the Account Authority controller gate. Both objects anchor their own local detached signature under their own registered domain separation; neither reuses the shared Event proof leaf. Agent and controller private keys, MLS private state, service-local account_id and raw account typed current results never appear here.
oneOf · oneOf[0] · object · $ref #/$defs/agent_authority_state_evidence
Portable Agent Authority state evidence. state_digest is the RFC 8785 JCS SHA-256 of state alone, so a compact transport root MAY omit state when the receiver already holds that exact digest fully verified; the receiver MUST restore the complete state before recomputing any digest or verifying any signature.
* schema · const "ak.schema.agent_authority_state_evidence.v1"
enum: "ak.schema.agent_authority_state_evidence.v1"
state · object · $ref #/$defs/agent_authority_state
One exact confirmed RealmCommit state of the Agent Principal Control Realm, carrying the complete PCR genesis Event, key authorization Event, key authorization, key state witness and Agent lifecycle witness together.
* authority_id · string · $ref ./common-ids.schema.json#/$defs/did_core_id
Canonical stable DID-derived identity core. The lowercase DID method name follows ak:did_core:, and the remaining method-adapter-defined core is opaque to generic consumers. The did:web v1 adapter uses the complete canonical method-specific-id, never a digest or truncated host. Principal-core and service-core equality is byte-for-byte equality of the complete did_core_id. Event actor and Realm membership equality instead use the complete closed ActorId, and account-scoped equality uses the complete AccountId; neither may be reduced to a principal core. A did_core_id is not a DID and cannot be resolved without a did or AuthenticatedServiceResolution.
pattern: ^ak:did_core:[a-z0-9]+:[^\s/?#]+$
* agent_id · string · $ref ./common-ids.schema.json#/$defs/did_core_id
Canonical stable DID-derived identity core. The lowercase DID method name follows ak:did_core:, and the remaining method-adapter-defined core is opaque to generic consumers. The did:web v1 adapter uses the complete canonical method-specific-id, never a digest or truncated host. Principal-core and service-core equality is byte-for-byte equality of the complete did_core_id. Event actor and Realm membership equality instead use the complete closed ActorId, and account-scoped equality uses the complete AccountId; neither may be reduced to a principal core. A did_core_id is not a DID and cannot be resolved without a did or AuthenticatedServiceResolution.
pattern: ^ak:did_core:[a-z0-9]+:[^\s/?#]+$
* source_commit_id · string · $ref ./common-ids.schema.json#/$defs/realm_commit_id
Content-addressed identity of a closed unsigned RealmCommit body. The suffix uses the fixed v1 digest suite and the same canonical 33-octet token encoding as Event IDs.
pattern: ^ak:realm_commit:[A-Za-z0-9_-]{44}$
* pcr_genesis_event · object · $ref ./event-envelope.schema.json
Closed producer-signed Event. Shared persistent Events become final only when the current Realm governance Station issues a RealmCommit in the derived Realm, Circle, or Sidecar stream.
allOf · allOf[0] · ?
allOf · allOf[1] · ?
allOf · allOf[2] · ?
allOf · allOf[3] · ?
allOf · allOf[4] · ?
allOf · allOf[5] · $ref #/$defs/registered_admission_shape · $ref #/$defs/registered_admission_shape
allOf · allOf[6] · $ref #/$defs/registered_execution_shape · $ref #/$defs/registered_execution_shape
allOf · allOf[7] · ?
allOf · allOf[8] · ?
allOf · allOf[9] · ?
allOf · allOf[10] · ?
allOf · allOf[11] · ?
allOf · allOf[12] · ?
allOf · allOf[13] · ?
allOf · allOf[14] · ?
allOf · allOf[15] · ?
allOf · allOf[16] · ?
allOf · allOf[17] · ?
allOf · allOf[18] · ?
allOf · allOf[19] · ?
allOf · allOf[20] · ?
allOf · allOf[21] · ?
allOf · allOf[22] · ?
allOf · allOf[23] · ?
allOf · allOf[24] · ?
allOf · allOf[25] · ?
allOf · allOf[26] · ?
allOf · allOf[27] · ?
allOf · allOf[28] · ?
allOf · allOf[29] · ?
allOf · allOf[30] · ?
allOf · allOf[31] · ?
allOf · allOf[32] · ?
allOf · allOf[33] · ?
allOf · allOf[34] · ?
allOf · allOf[35] · ?
allOf · allOf[36] · ?
allOf · allOf[37] · ?
allOf · allOf[38] · ?
allOf · allOf[39] · ?
allOf · allOf[40] · ?
allOf · allOf[41] · ?
allOf · allOf[42] · ?
allOf · allOf[43] · ?
allOf · allOf[44] · ?
allOf · allOf[45] · ?
allOf · allOf[46] · ?
allOf · allOf[47] · ?
allOf · allOf[48] · ?
allOf · allOf[49] · ?
allOf · allOf[50] · ?
allOf · allOf[51] · ?
allOf · allOf[52] · ?
allOf · allOf[53] · ?
allOf · allOf[54] · ?
allOf · allOf[55] · ?
allOf · allOf[56] · ?
allOf · allOf[57] · ?
allOf · allOf[58] · ?
allOf · allOf[59] · ?
allOf · allOf[60] · ?
allOf · allOf[61] · ?
allOf · allOf[62] · ?
allOf · allOf[63] · ?
allOf · allOf[64] · ?
allOf · allOf[65] · ?
allOf · allOf[66] · ?
allOf · allOf[67] · ?
allOf · allOf[68] · ?
allOf · allOf[69] · ?
allOf · allOf[70] · ?
allOf · allOf[71] · ?
allOf · allOf[72] · ?
allOf · allOf[73] · ?
allOf · allOf[74] · ?
allOf · allOf[75] · ?
allOf · allOf[76] · ?
allOf · allOf[77] · ?
allOf · allOf[78] · ?
allOf · allOf[79] · ?
allOf · allOf[80] · ?
allOf · allOf[81] · ?
allOf · allOf[82] · ?
allOf · allOf[83] · ?
allOf · allOf[84] · ?
allOf · allOf[85] · ?
allOf · allOf[86] · ?
allOf · allOf[87] · ?
allOf · allOf[88] · ?
allOf · allOf[89] · ?
allOf · allOf[90] · ?
allOf · allOf[91] · ?
allOf · allOf[92] · ?
allOf · allOf[93] · ?
allOf · allOf[94] · ?
allOf · allOf[95] · ?
allOf · allOf[96] · ?
allOf · allOf[97] · ?
allOf · allOf[98] · ?
allOf · allOf[99] · ?
allOf · allOf[100] · ?
allOf · allOf[101] · ?
allOf · allOf[102] · ?
allOf · allOf[103] · ?
allOf · allOf[104] · ?
allOf · allOf[105] · ?
allOf · allOf[106] · ?
allOf · allOf[107] · ?
allOf · allOf[108] · ?
allOf · allOf[109] · ?
allOf · allOf[110] · ?
allOf · allOf[111] · ?
allOf · allOf[112] · ?
allOf · allOf[113] · ?
allOf · allOf[114] · ?
allOf · allOf[115] · ?
allOf · allOf[116] · ?
allOf · allOf[117] · ?
allOf · allOf[118] · ?
allOf · allOf[119] · ?
allOf · allOf[120] · ?
allOf · allOf[121] · ?
allOf · allOf[122] · ?
allOf · allOf[123] · ?
allOf · allOf[124] · ?
allOf · allOf[125] · ?
allOf · allOf[126] · ?
allOf · allOf[127] · ?
allOf · allOf[128] · ?
allOf · allOf[129] · ?
allOf · allOf[130] · ?
allOf · allOf[131] · ?
allOf · allOf[132] · ?
allOf · allOf[133] · ?
allOf · allOf[134] · ?
allOf · allOf[135] · ?
allOf · allOf[136] · ?
allOf · allOf[137] · ?
allOf · allOf[138] · ?
allOf · allOf[139] · ?
allOf · allOf[140] · ?
* event_id · string · $ref ./common-ids.schema.json#/$defs/event_id
Complete Arkret Event cryptographic identity. The suffix is the canonical unpadded Base64URL encoding of exactly 33 octets: fixed current-v1 suite code 0x01 followed by all 32 octets of the SHA-256 Event digest. Regex validation is only lexical; receivers MUST decode, require 33 octets, require byte 0 == 0x01, canonical re-encode, and verify the full digest before use. Other registered digest suites remain available only to the typed domains that explicitly select them and MUST NOT appear in Event IDs.
pattern: ^ak:event:[A-Za-z0-9_-]{44}$
* kind · string
Standard ak.* Event kinds MUST appear in artifacts/registry/event-kind-registry.json. State convergence is defined by the registered pure reducer over kind + payload; producers do not submit typed current result writes.
pattern: ^ak\.[a-z0-9_]+(\.[a-z0-9_]+)*$
realm_id · string · $ref ./common-ids.schema.json#/$defs/realm_id
Retyped ak.realm.create Event token. It therefore carries the same fixed current-v1 0x01/SHA-256 content-address identity and is not selected by Realm state.
pattern: ^ak:realm:[A-Za-z0-9_-]{44}$
* scope_ref · $ref #/$defs/scope_ref · $ref #/$defs/scope_ref
Required producer-signed security scope. The closed union is ordinary existing realm, circle, or native sidecar scope plus the create-only realm_genesis exception. It enters proof.event_digest and E2EE AAD. Reducers independently derive the exact scope from schema-validated payload and accepted references; missing dependencies, nonexistent scope, realm_id mismatch, omitted sidecar_id, substituting circle for sidecar, or any unequal field is fail closed. Sidecar domain Event kinds remain Extension-owned; recognizing this native security shape does not make Kernel interpret the Sidecar reducer. Exact product targets remain inside recipient-visible ciphertext.
* actor_id · oneOf[2] · $ref ./common-ids.schema.json#/$defs/actor_id
Complete protocol identity for an Event author or Realm member: account carries the exact AccountId for every Station-hosted principal; service identifies a service acting as itself. The discriminator is validated against accepted registration and admission evidence; it never authorizes itself. Account and service are distinct, and no comparison may fall back to a bare principal_id. Agent and integration classification, provisioning, controller binding and credential authorization are independently verified facts, not identity variants. Account actors at different Stations MUST NOT share or inherit authority merely because their principal_id, DID controller or signing key matches, including membership, capability, RealmCommit-signing and recovery authority.
oneOf · oneOf[0] · object
* kind · const "account"
enum: "account"
* account_id · $ref #/$defs/account_id · $ref #/$defs/account_id
oneOf · oneOf[1] · object
* kind · const "service"
enum: "service"
* service_id · $ref #/$defs/did_core_id · $ref #/$defs/did_core_id
executed_by · oneOf[2] · $ref ./common-ids.schema.json#/$defs/actor_id
Complete protocol identity for an Event author or Realm member: account carries the exact AccountId for every Station-hosted principal; service identifies a service acting as itself. The discriminator is validated against accepted registration and admission evidence; it never authorizes itself. Account and service are distinct, and no comparison may fall back to a bare principal_id. Agent and integration classification, provisioning, controller binding and credential authorization are independently verified facts, not identity variants. Account actors at different Stations MUST NOT share or inherit authority merely because their principal_id, DID controller or signing key matches, including membership, capability, RealmCommit-signing and recovery authority.
oneOf · oneOf[0] · object
* kind · const "account"
enum: "account"
* account_id · $ref #/$defs/account_id · $ref #/$defs/account_id
oneOf · oneOf[1] · object
* kind · const "service"
enum: "service"
* service_id · $ref #/$defs/did_core_id · $ref #/$defs/did_core_id
authorization_ref · oneOf[6]
Optional. Required when executed_by is present. It identifies an accepted Grant, delegation Event, DID-document delegation, or one of the closed profile-specific authority constants. The current governance Station evaluates the reference against the target stream's committed state.
oneOf · oneOf[0] · $ref #/$defs/grant_ref · $ref #/$defs/grant_ref
oneOf · oneOf[1] · $ref #/$defs/event_ref · $ref #/$defs/event_ref
oneOf · oneOf[2] · $ref #/$defs/did_delegation_ref · $ref #/$defs/did_delegation_ref
oneOf · oneOf[3] · $ref #/$defs/direct_conversation_participant_authority_ref · $ref #/$defs/direct_conversation_participant_authority_ref
oneOf · oneOf[4] · $ref #/$defs/direct_conversation_bootstrap_authority_ref · $ref #/$defs/direct_conversation_bootstrap_authority_ref
oneOf · oneOf[5] · $ref #/$defs/membership_compensation_delegation_ref · $ref #/$defs/membership_compensation_delegation_ref
applet_id · $ref #/$defs/applet_id · $ref #/$defs/applet_id
Optional signed Applet provenance. Required by ak.profile.applet_* when the Event is introduced by an Applet, Ghost Actor, bridge, or delegated applet path. Enters canonical event bytes and therefore is covered by proof.event_digest. When present, authorization_ref MUST also be present and resolve to a real active registration/capability grant binding this applet_id, registration_epoch, action and resource per zh/extensions/applet-integration.md sections 4, 8 and 11. Service-actor self-signature proves provenance but is not an authorization substitute. Capability-gated actions require a grant covering action/resource. For subject_only operations the referenced grant binds only the exact active install and cannot replace the subject signature, FSM or independent action authority. Service self-authored Events use ActorId.service; the install grant subject MUST be the same exact ActorId.service as its producer; hosting Station and effective scope are verified separately without coercing a Service into an account variant.
external_ref · $ref #/$defs/external_ref · $ref #/$defs/external_ref
Optional signed external provenance reference for Applet / bridge-originated Events. It is covered by event_digest and MUST NOT be carried only in unsigned when used for loop prevention, audit, or external-message idempotency. Must not contain unauthorized external plaintext.
* created_at · $ref #/$defs/canonical_event_timestamp · $ref #/$defs/canonical_event_timestamp
semantic_refs · array<$ref #/$defs/semantic_ref>
Optional semantic refs with role. Omit when there are no semantic references; an explicitly empty array is not canonical. Admission selectors determine any required references. PCR policy recovery has no DID-root anchor reference; its policy/session/replacement-key authority is verified separately.
items · $ref #/$defs/semantic_ref · $ref #/$defs/semantic_ref
* payload · object
* producer_proof · $ref #/$defs/event_proof · $ref #/$defs/event_proof
The Event's sole portable producer proof. Storage receipts are separate objects and never authorize this Event. producer_proof and unsigned remain outside the canonical Event digest. Exact retries preserve the verified producer proof.
* key_authorization_event · object · $ref ./event-envelope.schema.json
Closed producer-signed Event. Shared persistent Events become final only when the current Realm governance Station issues a RealmCommit in the derived Realm, Circle, or Sidecar stream.
allOf · allOf[0] · ?
allOf · allOf[1] · ?
allOf · allOf[2] · ?
allOf · allOf[3] · ?
allOf · allOf[4] · ?
allOf · allOf[5] · $ref #/$defs/registered_admission_shape · $ref #/$defs/registered_admission_shape
allOf · allOf[6] · $ref #/$defs/registered_execution_shape · $ref #/$defs/registered_execution_shape
allOf · allOf[7] · ?
allOf · allOf[8] · ?
allOf · allOf[9] · ?
allOf · allOf[10] · ?
allOf · allOf[11] · ?
allOf · allOf[12] · ?
allOf · allOf[13] · ?
allOf · allOf[14] · ?
allOf · allOf[15] · ?
allOf · allOf[16] · ?
allOf · allOf[17] · ?
allOf · allOf[18] · ?
allOf · allOf[19] · ?
allOf · allOf[20] · ?
allOf · allOf[21] · ?
allOf · allOf[22] · ?
allOf · allOf[23] · ?
allOf · allOf[24] · ?
allOf · allOf[25] · ?
allOf · allOf[26] · ?
allOf · allOf[27] · ?
allOf · allOf[28] · ?
allOf · allOf[29] · ?
allOf · allOf[30] · ?
allOf · allOf[31] · ?
allOf · allOf[32] · ?
allOf · allOf[33] · ?
allOf · allOf[34] · ?
allOf · allOf[35] · ?
allOf · allOf[36] · ?
allOf · allOf[37] · ?
allOf · allOf[38] · ?
allOf · allOf[39] · ?
allOf · allOf[40] · ?
allOf · allOf[41] · ?
allOf · allOf[42] · ?
allOf · allOf[43] · ?
allOf · allOf[44] · ?
allOf · allOf[45] · ?
allOf · allOf[46] · ?
allOf · allOf[47] · ?
allOf · allOf[48] · ?
allOf · allOf[49] · ?
allOf · allOf[50] · ?
allOf · allOf[51] · ?
allOf · allOf[52] · ?
allOf · allOf[53] · ?
allOf · allOf[54] · ?
allOf · allOf[55] · ?
allOf · allOf[56] · ?
allOf · allOf[57] · ?
allOf · allOf[58] · ?
allOf · allOf[59] · ?
allOf · allOf[60] · ?
allOf · allOf[61] · ?
allOf · allOf[62] · ?
allOf · allOf[63] · ?
allOf · allOf[64] · ?
allOf · allOf[65] · ?
allOf · allOf[66] · ?
allOf · allOf[67] · ?
allOf · allOf[68] · ?
allOf · allOf[69] · ?
allOf · allOf[70] · ?
allOf · allOf[71] · ?
allOf · allOf[72] · ?
allOf · allOf[73] · ?
allOf · allOf[74] · ?
allOf · allOf[75] · ?
allOf · allOf[76] · ?
allOf · allOf[77] · ?
allOf · allOf[78] · ?
allOf · allOf[79] · ?
allOf · allOf[80] · ?
allOf · allOf[81] · ?
allOf · allOf[82] · ?
allOf · allOf[83] · ?
allOf · allOf[84] · ?
allOf · allOf[85] · ?
allOf · allOf[86] · ?
allOf · allOf[87] · ?
allOf · allOf[88] · ?
allOf · allOf[89] · ?
allOf · allOf[90] · ?
allOf · allOf[91] · ?
allOf · allOf[92] · ?
allOf · allOf[93] · ?
allOf · allOf[94] · ?
allOf · allOf[95] · ?
allOf · allOf[96] · ?
allOf · allOf[97] · ?
allOf · allOf[98] · ?
allOf · allOf[99] · ?
allOf · allOf[100] · ?
allOf · allOf[101] · ?
allOf · allOf[102] · ?
allOf · allOf[103] · ?
allOf · allOf[104] · ?
allOf · allOf[105] · ?
allOf · allOf[106] · ?
allOf · allOf[107] · ?
allOf · allOf[108] · ?
allOf · allOf[109] · ?
allOf · allOf[110] · ?
allOf · allOf[111] · ?
allOf · allOf[112] · ?
allOf · allOf[113] · ?
allOf · allOf[114] · ?
allOf · allOf[115] · ?
allOf · allOf[116] · ?
allOf · allOf[117] · ?
allOf · allOf[118] · ?
allOf · allOf[119] · ?
allOf · allOf[120] · ?
allOf · allOf[121] · ?
allOf · allOf[122] · ?
allOf · allOf[123] · ?
allOf · allOf[124] · ?
allOf · allOf[125] · ?
allOf · allOf[126] · ?
allOf · allOf[127] · ?
allOf · allOf[128] · ?
allOf · allOf[129] · ?
allOf · allOf[130] · ?
allOf · allOf[131] · ?
allOf · allOf[132] · ?
allOf · allOf[133] · ?
allOf · allOf[134] · ?
allOf · allOf[135] · ?
allOf · allOf[136] · ?
allOf · allOf[137] · ?
allOf · allOf[138] · ?
allOf · allOf[139] · ?
allOf · allOf[140] · ?
* event_id · string · $ref ./common-ids.schema.json#/$defs/event_id
Complete Arkret Event cryptographic identity. The suffix is the canonical unpadded Base64URL encoding of exactly 33 octets: fixed current-v1 suite code 0x01 followed by all 32 octets of the SHA-256 Event digest. Regex validation is only lexical; receivers MUST decode, require 33 octets, require byte 0 == 0x01, canonical re-encode, and verify the full digest before use. Other registered digest suites remain available only to the typed domains that explicitly select them and MUST NOT appear in Event IDs.
pattern: ^ak:event:[A-Za-z0-9_-]{44}$
* kind · string
Standard ak.* Event kinds MUST appear in artifacts/registry/event-kind-registry.json. State convergence is defined by the registered pure reducer over kind + payload; producers do not submit typed current result writes.
pattern: ^ak\.[a-z0-9_]+(\.[a-z0-9_]+)*$
realm_id · string · $ref ./common-ids.schema.json#/$defs/realm_id
Retyped ak.realm.create Event token. It therefore carries the same fixed current-v1 0x01/SHA-256 content-address identity and is not selected by Realm state.
pattern: ^ak:realm:[A-Za-z0-9_-]{44}$
* scope_ref · $ref #/$defs/scope_ref · $ref #/$defs/scope_ref
Required producer-signed security scope. The closed union is ordinary existing realm, circle, or native sidecar scope plus the create-only realm_genesis exception. It enters proof.event_digest and E2EE AAD. Reducers independently derive the exact scope from schema-validated payload and accepted references; missing dependencies, nonexistent scope, realm_id mismatch, omitted sidecar_id, substituting circle for sidecar, or any unequal field is fail closed. Sidecar domain Event kinds remain Extension-owned; recognizing this native security shape does not make Kernel interpret the Sidecar reducer. Exact product targets remain inside recipient-visible ciphertext.
* actor_id · oneOf[2] · $ref ./common-ids.schema.json#/$defs/actor_id
Complete protocol identity for an Event author or Realm member: account carries the exact AccountId for every Station-hosted principal; service identifies a service acting as itself. The discriminator is validated against accepted registration and admission evidence; it never authorizes itself. Account and service are distinct, and no comparison may fall back to a bare principal_id. Agent and integration classification, provisioning, controller binding and credential authorization are independently verified facts, not identity variants. Account actors at different Stations MUST NOT share or inherit authority merely because their principal_id, DID controller or signing key matches, including membership, capability, RealmCommit-signing and recovery authority.
oneOf · oneOf[0] · object
* kind · const "account"
enum: "account"
* account_id · $ref #/$defs/account_id · $ref #/$defs/account_id
oneOf · oneOf[1] · object
* kind · const "service"
enum: "service"
* service_id · $ref #/$defs/did_core_id · $ref #/$defs/did_core_id
executed_by · oneOf[2] · $ref ./common-ids.schema.json#/$defs/actor_id
Complete protocol identity for an Event author or Realm member: account carries the exact AccountId for every Station-hosted principal; service identifies a service acting as itself. The discriminator is validated against accepted registration and admission evidence; it never authorizes itself. Account and service are distinct, and no comparison may fall back to a bare principal_id. Agent and integration classification, provisioning, controller binding and credential authorization are independently verified facts, not identity variants. Account actors at different Stations MUST NOT share or inherit authority merely because their principal_id, DID controller or signing key matches, including membership, capability, RealmCommit-signing and recovery authority.
oneOf · oneOf[0] · object
* kind · const "account"
enum: "account"
* account_id · $ref #/$defs/account_id · $ref #/$defs/account_id
oneOf · oneOf[1] · object
* kind · const "service"
enum: "service"
* service_id · $ref #/$defs/did_core_id · $ref #/$defs/did_core_id
authorization_ref · oneOf[6]
Optional. Required when executed_by is present. It identifies an accepted Grant, delegation Event, DID-document delegation, or one of the closed profile-specific authority constants. The current governance Station evaluates the reference against the target stream's committed state.
oneOf · oneOf[0] · $ref #/$defs/grant_ref · $ref #/$defs/grant_ref
oneOf · oneOf[1] · $ref #/$defs/event_ref · $ref #/$defs/event_ref
oneOf · oneOf[2] · $ref #/$defs/did_delegation_ref · $ref #/$defs/did_delegation_ref
oneOf · oneOf[3] · $ref #/$defs/direct_conversation_participant_authority_ref · $ref #/$defs/direct_conversation_participant_authority_ref
oneOf · oneOf[4] · $ref #/$defs/direct_conversation_bootstrap_authority_ref · $ref #/$defs/direct_conversation_bootstrap_authority_ref
oneOf · oneOf[5] · $ref #/$defs/membership_compensation_delegation_ref · $ref #/$defs/membership_compensation_delegation_ref
applet_id · $ref #/$defs/applet_id · $ref #/$defs/applet_id
Optional signed Applet provenance. Required by ak.profile.applet_* when the Event is introduced by an Applet, Ghost Actor, bridge, or delegated applet path. Enters canonical event bytes and therefore is covered by proof.event_digest. When present, authorization_ref MUST also be present and resolve to a real active registration/capability grant binding this applet_id, registration_epoch, action and resource per zh/extensions/applet-integration.md sections 4, 8 and 11. Service-actor self-signature proves provenance but is not an authorization substitute. Capability-gated actions require a grant covering action/resource. For subject_only operations the referenced grant binds only the exact active install and cannot replace the subject signature, FSM or independent action authority. Service self-authored Events use ActorId.service; the install grant subject MUST be the same exact ActorId.service as its producer; hosting Station and effective scope are verified separately without coercing a Service into an account variant.
external_ref · $ref #/$defs/external_ref · $ref #/$defs/external_ref
Optional signed external provenance reference for Applet / bridge-originated Events. It is covered by event_digest and MUST NOT be carried only in unsigned when used for loop prevention, audit, or external-message idempotency. Must not contain unauthorized external plaintext.
* created_at · $ref #/$defs/canonical_event_timestamp · $ref #/$defs/canonical_event_timestamp
semantic_refs · array<$ref #/$defs/semantic_ref>
Optional semantic refs with role. Omit when there are no semantic references; an explicitly empty array is not canonical. Admission selectors determine any required references. PCR policy recovery has no DID-root anchor reference; its policy/session/replacement-key authority is verified separately.
items · $ref #/$defs/semantic_ref · $ref #/$defs/semantic_ref
* payload · object
* producer_proof · $ref #/$defs/event_proof · $ref #/$defs/event_proof
The Event's sole portable producer proof. Storage receipts are separate objects and never authorize this Event. producer_proof and unsigned remain outside the canonical Event digest. Exact retries preserve the verified producer proof.
* authorization · object · $ref #/$defs/agent_key_authorization
Projection of the key authenticated by one complete ak.agent.key.authorize Event. It is never a second wire certificate and never an authority source: the consumer separately verifies the Event producer proof and the authority-signed RealmCommit that covers it.
* agent_id · string · $ref ./common-ids.schema.json#/$defs/did_core_id
Canonical stable DID-derived identity core. The lowercase DID method name follows ak:did_core:, and the remaining method-adapter-defined core is opaque to generic consumers. The did:web v1 adapter uses the complete canonical method-specific-id, never a digest or truncated host. Principal-core and service-core equality is byte-for-byte equality of the complete did_core_id. Event actor and Realm membership equality instead use the complete closed ActorId, and account-scoped equality uses the complete AccountId; neither may be reduced to a principal core. A did_core_id is not a DID and cannot be resolved without a did or AuthenticatedServiceResolution.
pattern: ^ak:did_core:[a-z0-9]+:[^\s/?#]+$
* agent_key_id · string · $ref ./event-payload.schema.json#/$defs/agent_key_id
Stable key identifier within the agent DID. Prefer the DID URL verification method id when available.
pattern: ^(did:[a-z0-9]+:[^\s#]+#[^\s#]+|[a-zA-Z0-9._:-]{1,256})$
* verification_method · string · $ref ./account-operations.schema.json#/$defs/did_url
pattern: ^did:[a-z0-9]+:[^\s#?]+#[A-Za-z0-9._:-]+$
* public_key · object · $ref ./agent-operations.schema.json#/$defs/agent_runtime_public_key
Closed v1 Agent runtime signing-key profile. Ed25519 is the fully-specified JOSE algorithm identifier from RFC 9864; polymorphic algorithm identifiers are rejected.
* kty · const "OKP"
enum: "OKP"
* kid · $ref #/$defs/non_empty_string · $ref #/$defs/non_empty_string
* algorithm · const "Ed25519"
enum: "Ed25519"
* key · string
pattern: ^[A-Za-z0-9_-]{43}$
* public_key_digest · string · $ref ./account-operations.schema.json#/$defs/sha256_digest
SHA-256 over the decoded 32 raw Ed25519 octets. It is never a hash of the PublicKey DTO, a JWK, a multibase form or a hex string.
pattern: ^sha256:[0-9a-f]{64}$
* controller_principal_id · string · $ref ./common-ids.schema.json#/$defs/did_core_id
Canonical stable DID-derived identity core. The lowercase DID method name follows ak:did_core:, and the remaining method-adapter-defined core is opaque to generic consumers. The did:web v1 adapter uses the complete canonical method-specific-id, never a digest or truncated host. Principal-core and service-core equality is byte-for-byte equality of the complete did_core_id. Event actor and Realm membership equality instead use the complete closed ActorId, and account-scoped equality uses the complete AccountId; neither may be reduced to a principal core. A did_core_id is not a DID and cannot be resolved without a did or AuthenticatedServiceResolution.
pattern: ^ak:did_core:[a-z0-9]+:[^\s/?#]+$
* accepted_commit_id · string · $ref ./common-ids.schema.json#/$defs/realm_commit_id
Content-addressed identity of a closed unsigned RealmCommit body. The suffix uses the fixed v1 digest suite and the same canonical 33-octet token encoding as Event IDs.
pattern: ^ak:realm_commit:[A-Za-z0-9_-]{44}$
* accepted_at · string (date-time) · format=date-time · $ref ./time.schema.json#/$defs/timestamp
Canonical Arkret-owned absolute instant. UTC Z form with exactly three millisecond digits. Whole seconds MUST use .000Z; offsets, missing/finer fractions, lowercase separators, leap seconds, and invalid Gregorian calendar dates are forbidden. Shape validation by this pattern is supplemented by semantic date validation.
pattern: ^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\.[0-9]{3}Z$
* issued_at · string (date-time) · format=date-time · $ref ./time.schema.json#/$defs/timestamp
Canonical Arkret-owned absolute instant. UTC Z form with exactly three millisecond digits. Whole seconds MUST use .000Z; offsets, missing/finer fractions, lowercase separators, leap seconds, and invalid Gregorian calendar dates are forbidden. Shape validation by this pattern is supplemented by semantic date validation.
pattern: ^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\.[0-9]{3}Z$
expires_at · string (date-time) · format=date-time · $ref ./time.schema.json#/$defs/timestamp
Canonical Arkret-owned absolute instant. UTC Z form with exactly three millisecond digits. Whole seconds MUST use .000Z; offsets, missing/finer fractions, lowercase separators, leap seconds, and invalid Gregorian calendar dates are forbidden. Shape validation by this pattern is supplemented by semantic date validation.
pattern: ^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\.[0-9]{3}Z$
* key_state_witness · object · $ref #/$defs/agent_key_state_witness
Signed RealmCommit plus the closed agent_key typed current result it covers. v1 has no state_root, leaf digest, index, count or Merkle inclusion proof: the Commit itself is the commitment.
* commit_id · string · $ref ./common-ids.schema.json#/$defs/realm_commit_id
Content-addressed identity of a closed unsigned RealmCommit body. The suffix uses the fixed v1 digest suite and the same canonical 33-octet token encoding as Event IDs.
pattern: ^ak:realm_commit:[A-Za-z0-9_-]{44}$
* commit · object · $ref ./realm-commit.schema.json
The only shared Realm acceptance, ordering, finality and replication record. Every visibility scope has an authority-signed predecessor chain.
allOf · allOf[0] · ?
* commit_id · string · $ref ./common-ids.schema.json#/$defs/realm_commit_id
Content-addressed identity of a closed unsigned RealmCommit body. The suffix uses the fixed v1 digest suite and the same canonical 33-octet token encoding as Event IDs.
pattern: ^ak:realm_commit:[A-Za-z0-9_-]{44}$
* realm_id · string · $ref ./common-ids.schema.json#/$defs/realm_id
Retyped ak.realm.create Event token. It therefore carries the same fixed current-v1 0x01/SHA-256 content-address identity and is not selected by Realm state.
pattern: ^ak:realm:[A-Za-z0-9_-]{44}$
* stream_ref · $ref #/$defs/stream_ref · $ref #/$defs/stream_ref
* stream_position · integer
* previous_commit_ref · oneOf[2]
oneOf · oneOf[0] · string · $ref ./common-ids.schema.json#/$defs/realm_commit_id
Content-addressed identity of a closed unsigned RealmCommit body. The suffix uses the fixed v1 digest suite and the same canonical 33-octet token encoding as Event IDs.
pattern: ^ak:realm_commit:[A-Za-z0-9_-]{44}$
oneOf · oneOf[1] · null
* event_ref · string · $ref ./common-ids.schema.json#/$defs/event_id
Complete Arkret Event cryptographic identity. The suffix is the canonical unpadded Base64URL encoding of exactly 33 octets: fixed current-v1 suite code 0x01 followed by all 32 octets of the SHA-256 Event digest. Regex validation is only lexical; receivers MUST decode, require 33 octets, require byte 0 == 0x01, canonical re-encode, and verify the full digest before use. Other registered digest suites remain available only to the typed domains that explicitly select them and MUST NOT appear in Event IDs.
pattern: ^ak:event:[A-Za-z0-9_-]{44}$
* governance_generation · integer
Tenure counter of the governing Station that signed this Commit; it advances only on an accepted ak.realm.governance_station.change. It is not the Realm authority-root delegation generation of typed-current-result.schema.json#/$defs/realm_authority_root_value, which advances only on ak.realm.authority.reset.
* authority_ref · oneOf[2]
oneOf · oneOf[0] · string · $ref ./common-ids.schema.json#/$defs/event_id
Complete Arkret Event cryptographic identity. The suffix is the canonical unpadded Base64URL encoding of exactly 33 octets: fixed current-v1 suite code 0x01 followed by all 32 octets of the SHA-256 Event digest. Regex validation is only lexical; receivers MUST decode, require 33 octets, require byte 0 == 0x01, canonical re-encode, and verify the full digest before use. Other registered digest suites remain available only to the typed domains that explicitly select them and MUST NOT appear in Event IDs.
pattern: ^ak:event:[A-Za-z0-9_-]{44}$
oneOf · oneOf[1] · string · $ref ./common-ids.schema.json#/$defs/realm_authority_handoff_id
Content-addressed identity of one closed old-to-new Realm authority handoff.
pattern: ^ak:realm_authority_handoff:[A-Za-z0-9_-]{44}$
* committed_at · string (date-time) · format=date-time · $ref ./time.schema.json#/$defs/timestamp
Canonical Arkret-owned absolute instant. UTC Z form with exactly three millisecond digits. Whole seconds MUST use .000Z; offsets, missing/finer fractions, lowercase separators, leap seconds, and invalid Gregorian calendar dates are forbidden. Shape validation by this pattern is supplemented by semantic date validation.
pattern: ^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\.[0-9]{3}Z$
producer_signer_fact_digest · string · $ref ./account-operations.schema.json#/$defs/sha256_digest
Fixed SHA256 over RFC8785 JCS of the original immutable Human or Applet Service producer fact, excluding the outer target coordinate. Freeze before Commit identity/signature and retain with acceptance; exact replay, replica and handoff preserve this original digest.
pattern: ^sha256:[0-9a-f]{64}$
* signature · allOf[2] · $ref ./detached-object-signature.schema.json#/$defs/realm_commit_signature
allOf · allOf[0] · oneOf[4] · $ref #
Portable Agent signer evidence carried to a Station or peer verifier: the Agent Authority state evidence over one exact confirmed RealmCommit state, and the Account Authority controller gate. Both objects anchor their own local detached signature under their own registered domain separation; neither reuses the shared Event proof leaf. Agent and controller private keys, MLS private state, service-local account_id and raw account typed current results never appear here.
oneOf · oneOf[0] · object · $ref #/$defs/agent_authority_state_evidence
Portable Agent Authority state evidence. state_digest is the RFC 8785 JCS SHA-256 of state alone, so a compact transport root MAY omit state when the receiver already holds that exact digest fully verified; the receiver MUST restore the complete state before recomputing any digest or verifying any signature.
* schema · const "ak.schema.agent_authority_state_evidence.v1"
enum: "ak.schema.agent_authority_state_evidence.v1"
state · object · $ref #/$defs/agent_authority_state
One exact confirmed RealmCommit state of the Agent Principal Control Realm, carrying the complete PCR genesis Event, key authorization Event, key authorization, key state witness and Agent lifecycle witness together.
* authority_id · …
recursion truncated at depth 8; see source schema for full shape
* agent_id · …
recursion truncated at depth 8; see source schema for full shape
* source_commit_id · …
recursion truncated at depth 8; see source schema for full shape
* pcr_genesis_event · …
recursion truncated at depth 8; see source schema for full shape
* key_authorization_event · …
recursion truncated at depth 8; see source schema for full shape
* authorization · …
recursion truncated at depth 8; see source schema for full shape
* key_state_witness · …
recursion truncated at depth 8; see source schema for full shape
* agent_lifecycle_witness · …
recursion truncated at depth 8; see source schema for full shape
* commit_lineages · …
recursion truncated at depth 8; see source schema for full shape
* commits · …
recursion truncated at depth 8; see source schema for full shape
* authority_bundle · …
recursion truncated at depth 8; see source schema for full shape
* signer_dependencies · …
recursion truncated at depth 8; see source schema for full shape
* producer_bindings · …
recursion truncated at depth 8; see source schema for full shape
* state_digest · string · $ref ./account-operations.schema.json#/$defs/sha256_digest
pattern: ^sha256:[0-9a-f]{64}$
* attestation · object · $ref #/$defs/agent_authority_state_attestation
The single Agent Authority state signature, made under ak.agent_authority_state_evidence.v1 by the authoritative service DID of that PCR. It binds the exact authority, verification method, state digest and observation window verbatim; the controller proof, the Account Authority gate and the RealmCommit signatures each stay separate.
* authority_id · …
recursion truncated at depth 8; see source schema for full shape
* verification_method · …
recursion truncated at depth 8; see source schema for full shape
* state_digest · …
recursion truncated at depth 8; see source schema for full shape
* issued_at · …
recursion truncated at depth 8; see source schema for full shape
* expires_at · …
recursion truncated at depth 8; see source schema for full shape
* proof · …
recursion truncated at depth 8; see source schema for full shape
oneOf · oneOf[1] · object · $ref #/$defs/controller_account_gate_attestation
Account Authority answer to one question: is the controller principal behind an Agent key authorization still eligible? Signed under ak.controller_account_gate.v1. Member order is byte-for-byte the binding_fields order of that domain_separations row; proof follows as the detached signature over exactly those bound members. It is privacy minimised by construction: a service-local account_id, a raw account typed current result or a caller-asserted active boolean is a schema violation, not an optional member.
allOf · allOf[0] · ?
status active holds exactly when eligibility is active; every other status is inactive.
allOf · allOf[1] · ?
Stable absence or exact initial binding Active is the only default basis. Every non-active status, and restored Active after any successor, requires the original signed record basis.
* schema · const "ak.schema.controller_account_gate_attestation.v1"
enum: "ak.schema.controller_account_gate_attestation.v1"
* principal_id · string · $ref ./common-ids.schema.json#/$defs/did_core_id
Canonical stable DID-derived identity core. The lowercase DID method name follows ak:did_core:, and the remaining method-adapter-defined core is opaque to generic consumers. The did:web v1 adapter uses the complete canonical method-specific-id, never a digest or truncated host. Principal-core and service-core equality is byte-for-byte equality of the complete did_core_id. Event actor and Realm membership equality instead use the complete closed ActorId, and account-scoped equality uses the complete AccountId; neither may be reduced to a principal core. A did_core_id is not a DID and cannot be resolved without a did or AuthenticatedServiceResolution.
pattern: ^ak:did_core:[a-z0-9]+:[^\s/?#]+$
* eligibility · string (enum)
The only decision a consumer acts on. It is active if and only if status is active.
enum: "active" "inactive"
* status · string (enum) · $ref ./account-operations.schema.json#/$defs/account_state
Account lifecycle projection; mirrors zh/identity/account-lifecycle.md §3.
enum: "active" "soft_logged_out" "locked" "suspended" "deactivated" "erasure_pending"
* basis · oneOf[2] · $ref #/$defs/controller_account_gate_basis
Private Account Authority current basis. account_binding_default is stable absence or the exact initial active binding record; account_status_record binds the original immutable signed AccountStatusRecord current head. It is not an Event, RealmCommit or Station checkpoint, and the record body remains private.
oneOf · oneOf[0] · …
recursion truncated at depth 8; see source schema for full shape
oneOf · oneOf[1] · …
recursion truncated at depth 8; see source schema for full shape
* basis_digest · string · $ref ./account-operations.schema.json#/$defs/sha256_digest
SHA-256(JCS({principal_id:gate.principal_id,accepted_id:gate.authority_id,status:gate.status,basis:gate.basis})), without a domain prefix. accepted_id is a derived preimage key equal to the original internal request agent_authority_id and owning AA/Station; it is not another wire member. Consumers MUST recompute exact equality from these public Gate fields, independently of signature verification; this does not authenticate the hidden original Record/current ledger head.
pattern: ^sha256:[0-9a-f]{64}$
* authority_id · string · $ref ./common-ids.schema.json#/$defs/did_core_id
Canonical stable DID-derived identity core. The lowercase DID method name follows ak:did_core:, and the remaining method-adapter-defined core is opaque to generic consumers. The did:web v1 adapter uses the complete canonical method-specific-id, never a digest or truncated host. Principal-core and service-core equality is byte-for-byte equality of the complete did_core_id. Event actor and Realm membership equality instead use the complete closed ActorId, and account-scoped equality uses the complete AccountId; neither may be reduced to a principal core. A did_core_id is not a DID and cannot be resolved without a did or AuthenticatedServiceResolution.
pattern: ^ak:did_core:[a-z0-9]+:[^\s/?#]+$
* verification_method · string · $ref ./account-operations.schema.json#/$defs/did_url
pattern: ^did:[a-z0-9]+:[^\s#?]+#[A-Za-z0-9._:-]+$
* issued_at · string (date-time) · format=date-time · $ref ./time.schema.json#/$defs/timestamp
Canonical Arkret-owned absolute instant. UTC Z form with exactly three millisecond digits. Whole seconds MUST use .000Z; offsets, missing/finer fractions, lowercase separators, leap seconds, and invalid Gregorian calendar dates are forbidden. Shape validation by this pattern is supplemented by semantic date validation.
pattern: ^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\.[0-9]{3}Z$
* expires_at · string (date-time) · format=date-time · $ref ./time.schema.json#/$defs/timestamp
Canonical Arkret-owned absolute instant. UTC Z form with exactly three millisecond digits. Whole seconds MUST use .000Z; offsets, missing/finer fractions, lowercase separators, leap seconds, and invalid Gregorian calendar dates are forbidden. Shape validation by this pattern is supplemented by semantic date validation.
pattern: ^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\.[0-9]{3}Z$
* proof · object · $ref #/$defs/detached_jws
Local detached signature leaf of this file. The signing bytes are the registered domain separation label, a newline, then the JCS bytes of the enclosing object with this member jws removed; kind stays covered like every other closed member.
* kind · …
recursion truncated at depth 8; see source schema for full shape
* jws · …
recursion truncated at depth 8; see source schema for full shape
oneOf · oneOf[2] · object · $ref #/$defs/controller_account_gate_attestation_issue_request_body
Deployment-authenticated request an Agent Authority sends to obtain the Account Authority-owned controller gate. Caller identity comes only from the authenticated deployment relationship: the body carries no service resolution carrier, and a self-asserted DID, URL, bearer subject, public key or account-active boolean is a schema violation rather than an identity source.
* request_id · string · $ref ./account-operations.schema.json#/$defs/request_id
pattern: ^ak:request:[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
* principal_id · string · $ref ./common-ids.schema.json#/$defs/did_core_id
Canonical stable DID-derived identity core. The lowercase DID method name follows ak:did_core:, and the remaining method-adapter-defined core is opaque to generic consumers. The did:web v1 adapter uses the complete canonical method-specific-id, never a digest or truncated host. Principal-core and service-core equality is byte-for-byte equality of the complete did_core_id. Event actor and Realm membership equality instead use the complete closed ActorId, and account-scoped equality uses the complete AccountId; neither may be reduced to a principal core. A did_core_id is not a DID and cannot be resolved without a did or AuthenticatedServiceResolution.
pattern: ^ak:did_core:[a-z0-9]+:[^\s/?#]+$
* agent_authority_id · string · $ref ./common-ids.schema.json#/$defs/did_core_id
Canonical stable DID-derived identity core. The lowercase DID method name follows ak:did_core:, and the remaining method-adapter-defined core is opaque to generic consumers. The did:web v1 adapter uses the complete canonical method-specific-id, never a digest or truncated host. Principal-core and service-core equality is byte-for-byte equality of the complete did_core_id. Event actor and Realm membership equality instead use the complete closed ActorId, and account-scoped equality uses the complete AccountId; neither may be reduced to a principal core. A did_core_id is not a DID and cannot be resolved without a did or AuthenticatedServiceResolution.
pattern: ^ak:did_core:[a-z0-9]+:[^\s/?#]+$
oneOf · oneOf[3] · object · $ref #/$defs/controller_account_gate_attestation_issue_outcome
Byte-stable issuance result. A replay of the same request_id and canonical intent returns these original bytes; a different intent under the same request_id is a duplicate_conflict with zero issuance.
* request_id · string · $ref ./account-operations.schema.json#/$defs/request_id
pattern: ^ak:request:[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
* controller_account_gate_attestation · object · $ref #/$defs/controller_account_gate_attestation
Account Authority answer to one question: is the controller principal behind an Agent key authorization still eligible? Signed under ak.controller_account_gate.v1. Member order is byte-for-byte the binding_fields order of that domain_separations row; proof follows as the detached signature over exactly those bound members. It is privacy minimised by construction: a service-local account_id, a raw account typed current result or a caller-asserted active boolean is a schema violation, not an optional member.
allOf · allOf[0] · …
recursion truncated at depth 8; see source schema for full shape
allOf · allOf[1] · …
recursion truncated at depth 8; see source schema for full shape
* schema · …
recursion truncated at depth 8; see source schema for full shape
* principal_id · …
recursion truncated at depth 8; see source schema for full shape
* eligibility · …
recursion truncated at depth 8; see source schema for full shape
* status · …
recursion truncated at depth 8; see source schema for full shape
* basis · …
recursion truncated at depth 8; see source schema for full shape
* basis_digest · …
recursion truncated at depth 8; see source schema for full shape
* authority_id · …
recursion truncated at depth 8; see source schema for full shape
* verification_method · …
recursion truncated at depth 8; see source schema for full shape
* issued_at · …
recursion truncated at depth 8; see source schema for full shape
* expires_at · …
recursion truncated at depth 8; see source schema for full shape
* proof · …
recursion truncated at depth 8; see source schema for full shape
allOf · allOf[1] · object
context · const "ak.realm_commit_signature.v1"
enum: "ak.realm_commit_signature.v1"
* result · object · $ref ./typed-current-result.schema.json#/$defs/agent_key_result
Registered reducer projection of one Agent signing key. It is the single state source a portable state witness may quote; a service-private key table is not an alternative.
* selector · object
Composite subject derived from (agent_id, agent_key_id). Producers MUST NOT spell it by string concatenation.
* kind · const "agent_key"
enum: "agent_key"
* agent_id · string · $ref ./common-ids.schema.json#/$defs/did_core_id
Canonical stable DID-derived identity core. The lowercase DID method name follows ak:did_core:, and the remaining method-adapter-defined core is opaque to generic consumers. The did:web v1 adapter uses the complete canonical method-specific-id, never a digest or truncated host. Principal-core and service-core equality is byte-for-byte equality of the complete did_core_id. Event actor and Realm membership equality instead use the complete closed ActorId, and account-scoped equality uses the complete AccountId; neither may be reduced to a principal core. A did_core_id is not a DID and cannot be resolved without a did or AuthenticatedServiceResolution.
pattern: ^ak:did_core:[a-z0-9]+:[^\s/?#]+$
* agent_key_id · string · $ref ./event-payload.schema.json#/$defs/agent_key_id
Stable key identifier within the agent DID. Prefer the DID URL verification method id when available.
pattern: ^(did:[a-z0-9]+:[^\s#]+#[^\s#]+|[a-zA-Z0-9._:-]{1,256})$
* source_stream_ref · oneOf[3] · $ref ./realm-commit.schema.json#/$defs/stream_ref
Closed visibility-stream selector. Realm, each Circle and each Sidecar have independent continuous positions so hidden scopes do not leak through global gaps.
oneOf · oneOf[0] · object
* kind · const "realm"
enum: "realm"
* realm_id · string · $ref ./common-ids.schema.json#/$defs/realm_id
Retyped ak.realm.create Event token. It therefore carries the same fixed current-v1 0x01/SHA-256 content-address identity and is not selected by Realm state.
pattern: ^ak:realm:[A-Za-z0-9_-]{44}$
oneOf · oneOf[1] · object
* kind · const "circle"
enum: "circle"
* realm_id · string · $ref ./common-ids.schema.json#/$defs/realm_id
Retyped ak.realm.create Event token. It therefore carries the same fixed current-v1 0x01/SHA-256 content-address identity and is not selected by Realm state.
pattern: ^ak:realm:[A-Za-z0-9_-]{44}$
* circle_id · string · $ref ./common-ids.schema.json#/$defs/circle_id
pattern: ^ak:circle:[A-Za-z0-9_-]{44}$
oneOf · oneOf[2] · object
* kind · const "sidecar"
enum: "sidecar"
* realm_id · string · $ref ./common-ids.schema.json#/$defs/realm_id
Retyped ak.realm.create Event token. It therefore carries the same fixed current-v1 0x01/SHA-256 content-address identity and is not selected by Realm state.
pattern: ^ak:realm:[A-Za-z0-9_-]{44}$
* sidecar_id · string · $ref ./common-ids.schema.json#/$defs/sidecar_id
pattern: ^ak:sidecar:[A-Za-z0-9_-]{44}$
* revision · $ref #/$defs/revision · $ref #/$defs/revision
* value · $ref #/$defs/agent_key_value · $ref #/$defs/agent_key_value
* agent_lifecycle_witness · object · $ref #/$defs/agent_lifecycle_witness
Signed RealmCommit, the closed agent_status typed current result it covers, the accepted status Event and its closed provenance branch. The receiver recomputes the lifecycle result and its transition from the signed Event before trusting any of them.
* commit_id · string · $ref ./common-ids.schema.json#/$defs/realm_commit_id
Content-addressed identity of a closed unsigned RealmCommit body. The suffix uses the fixed v1 digest suite and the same canonical 33-octet token encoding as Event IDs.
pattern: ^ak:realm_commit:[A-Za-z0-9_-]{44}$
* commit · object · $ref ./realm-commit.schema.json
The only shared Realm acceptance, ordering, finality and replication record. Every visibility scope has an authority-signed predecessor chain.
allOf · allOf[0] · ?
* commit_id · string · $ref ./common-ids.schema.json#/$defs/realm_commit_id
Content-addressed identity of a closed unsigned RealmCommit body. The suffix uses the fixed v1 digest suite and the same canonical 33-octet token encoding as Event IDs.
pattern: ^ak:realm_commit:[A-Za-z0-9_-]{44}$
* realm_id · string · $ref ./common-ids.schema.json#/$defs/realm_id
Retyped ak.realm.create Event token. It therefore carries the same fixed current-v1 0x01/SHA-256 content-address identity and is not selected by Realm state.
pattern: ^ak:realm:[A-Za-z0-9_-]{44}$
* stream_ref · $ref #/$defs/stream_ref · $ref #/$defs/stream_ref
* stream_position · integer
* previous_commit_ref · oneOf[2]
oneOf · oneOf[0] · string · $ref ./common-ids.schema.json#/$defs/realm_commit_id
Content-addressed identity of a closed unsigned RealmCommit body. The suffix uses the fixed v1 digest suite and the same canonical 33-octet token encoding as Event IDs.
pattern: ^ak:realm_commit:[A-Za-z0-9_-]{44}$
oneOf · oneOf[1] · null
* event_ref · string · $ref ./common-ids.schema.json#/$defs/event_id
Complete Arkret Event cryptographic identity. The suffix is the canonical unpadded Base64URL encoding of exactly 33 octets: fixed current-v1 suite code 0x01 followed by all 32 octets of the SHA-256 Event digest. Regex validation is only lexical; receivers MUST decode, require 33 octets, require byte 0 == 0x01, canonical re-encode, and verify the full digest before use. Other registered digest suites remain available only to the typed domains that explicitly select them and MUST NOT appear in Event IDs.
pattern: ^ak:event:[A-Za-z0-9_-]{44}$
* governance_generation · integer
Tenure counter of the governing Station that signed this Commit; it advances only on an accepted ak.realm.governance_station.change. It is not the Realm authority-root delegation generation of typed-current-result.schema.json#/$defs/realm_authority_root_value, which advances only on ak.realm.authority.reset.
* authority_ref · oneOf[2]
oneOf · oneOf[0] · string · $ref ./common-ids.schema.json#/$defs/event_id
Complete Arkret Event cryptographic identity. The suffix is the canonical unpadded Base64URL encoding of exactly 33 octets: fixed current-v1 suite code 0x01 followed by all 32 octets of the SHA-256 Event digest. Regex validation is only lexical; receivers MUST decode, require 33 octets, require byte 0 == 0x01, canonical re-encode, and verify the full digest before use. Other registered digest suites remain available only to the typed domains that explicitly select them and MUST NOT appear in Event IDs.
pattern: ^ak:event:[A-Za-z0-9_-]{44}$
oneOf · oneOf[1] · string · $ref ./common-ids.schema.json#/$defs/realm_authority_handoff_id
Content-addressed identity of one closed old-to-new Realm authority handoff.
pattern: ^ak:realm_authority_handoff:[A-Za-z0-9_-]{44}$
* committed_at · string (date-time) · format=date-time · $ref ./time.schema.json#/$defs/timestamp
Canonical Arkret-owned absolute instant. UTC Z form with exactly three millisecond digits. Whole seconds MUST use .000Z; offsets, missing/finer fractions, lowercase separators, leap seconds, and invalid Gregorian calendar dates are forbidden. Shape validation by this pattern is supplemented by semantic date validation.
pattern: ^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\.[0-9]{3}Z$
producer_signer_fact_digest · string · $ref ./account-operations.schema.json#/$defs/sha256_digest
Fixed SHA256 over RFC8785 JCS of the original immutable Human or Applet Service producer fact, excluding the outer target coordinate. Freeze before Commit identity/signature and retain with acceptance; exact replay, replica and handoff preserve this original digest.
pattern: ^sha256:[0-9a-f]{64}$
* signature · allOf[2] · $ref ./detached-object-signature.schema.json#/$defs/realm_commit_signature
allOf · allOf[0] · oneOf[4] · $ref #
Portable Agent signer evidence carried to a Station or peer verifier: the Agent Authority state evidence over one exact confirmed RealmCommit state, and the Account Authority controller gate. Both objects anchor their own local detached signature under their own registered domain separation; neither reuses the shared Event proof leaf. Agent and controller private keys, MLS private state, service-local account_id and raw account typed current results never appear here.
oneOf · oneOf[0] · object · $ref #/$defs/agent_authority_state_evidence
Portable Agent Authority state evidence. state_digest is the RFC 8785 JCS SHA-256 of state alone, so a compact transport root MAY omit state when the receiver already holds that exact digest fully verified; the receiver MUST restore the complete state before recomputing any digest or verifying any signature.
* schema · const "ak.schema.agent_authority_state_evidence.v1"
enum: "ak.schema.agent_authority_state_evidence.v1"
state · object · $ref #/$defs/agent_authority_state
One exact confirmed RealmCommit state of the Agent Principal Control Realm, carrying the complete PCR genesis Event, key authorization Event, key authorization, key state witness and Agent lifecycle witness together.
* authority_id · …
recursion truncated at depth 8; see source schema for full shape
* agent_id · …
recursion truncated at depth 8; see source schema for full shape
* source_commit_id · …
recursion truncated at depth 8; see source schema for full shape
* pcr_genesis_event · …
recursion truncated at depth 8; see source schema for full shape
* key_authorization_event · …
recursion truncated at depth 8; see source schema for full shape
* authorization · …
recursion truncated at depth 8; see source schema for full shape
* key_state_witness · …
recursion truncated at depth 8; see source schema for full shape
* agent_lifecycle_witness · …
recursion truncated at depth 8; see source schema for full shape
* commit_lineages · …
recursion truncated at depth 8; see source schema for full shape
* commits · …
recursion truncated at depth 8; see source schema for full shape
* authority_bundle · …
recursion truncated at depth 8; see source schema for full shape
* signer_dependencies · …
recursion truncated at depth 8; see source schema for full shape
* producer_bindings · …
recursion truncated at depth 8; see source schema for full shape
* state_digest · string · $ref ./account-operations.schema.json#/$defs/sha256_digest
pattern: ^sha256:[0-9a-f]{64}$
* attestation · object · $ref #/$defs/agent_authority_state_attestation
The single Agent Authority state signature, made under ak.agent_authority_state_evidence.v1 by the authoritative service DID of that PCR. It binds the exact authority, verification method, state digest and observation window verbatim; the controller proof, the Account Authority gate and the RealmCommit signatures each stay separate.
* authority_id · …
recursion truncated at depth 8; see source schema for full shape
* verification_method · …
recursion truncated at depth 8; see source schema for full shape
* state_digest · …
recursion truncated at depth 8; see source schema for full shape
* issued_at · …
recursion truncated at depth 8; see source schema for full shape
* expires_at · …
recursion truncated at depth 8; see source schema for full shape
* proof · …
recursion truncated at depth 8; see source schema for full shape
oneOf · oneOf[1] · object · $ref #/$defs/controller_account_gate_attestation
Account Authority answer to one question: is the controller principal behind an Agent key authorization still eligible? Signed under ak.controller_account_gate.v1. Member order is byte-for-byte the binding_fields order of that domain_separations row; proof follows as the detached signature over exactly those bound members. It is privacy minimised by construction: a service-local account_id, a raw account typed current result or a caller-asserted active boolean is a schema violation, not an optional member.
allOf · allOf[0] · ?
status active holds exactly when eligibility is active; every other status is inactive.
allOf · allOf[1] · ?
Stable absence or exact initial binding Active is the only default basis. Every non-active status, and restored Active after any successor, requires the original signed record basis.
* schema · const "ak.schema.controller_account_gate_attestation.v1"
enum: "ak.schema.controller_account_gate_attestation.v1"
* principal_id · string · $ref ./common-ids.schema.json#/$defs/did_core_id
Canonical stable DID-derived identity core. The lowercase DID method name follows ak:did_core:, and the remaining method-adapter-defined core is opaque to generic consumers. The did:web v1 adapter uses the complete canonical method-specific-id, never a digest or truncated host. Principal-core and service-core equality is byte-for-byte equality of the complete did_core_id. Event actor and Realm membership equality instead use the complete closed ActorId, and account-scoped equality uses the complete AccountId; neither may be reduced to a principal core. A did_core_id is not a DID and cannot be resolved without a did or AuthenticatedServiceResolution.
pattern: ^ak:did_core:[a-z0-9]+:[^\s/?#]+$
* eligibility · string (enum)
The only decision a consumer acts on. It is active if and only if status is active.
enum: "active" "inactive"
* status · string (enum) · $ref ./account-operations.schema.json#/$defs/account_state
Account lifecycle projection; mirrors zh/identity/account-lifecycle.md §3.
enum: "active" "soft_logged_out" "locked" "suspended" "deactivated" "erasure_pending"
* basis · oneOf[2] · $ref #/$defs/controller_account_gate_basis
Private Account Authority current basis. account_binding_default is stable absence or the exact initial active binding record; account_status_record binds the original immutable signed AccountStatusRecord current head. It is not an Event, RealmCommit or Station checkpoint, and the record body remains private.
oneOf · oneOf[0] · …
recursion truncated at depth 8; see source schema for full shape
oneOf · oneOf[1] · …
recursion truncated at depth 8; see source schema for full shape
* basis_digest · string · $ref ./account-operations.schema.json#/$defs/sha256_digest
SHA-256(JCS({principal_id:gate.principal_id,accepted_id:gate.authority_id,status:gate.status,basis:gate.basis})), without a domain prefix. accepted_id is a derived preimage key equal to the original internal request agent_authority_id and owning AA/Station; it is not another wire member. Consumers MUST recompute exact equality from these public Gate fields, independently of signature verification; this does not authenticate the hidden original Record/current ledger head.
pattern: ^sha256:[0-9a-f]{64}$
* authority_id · string · $ref ./common-ids.schema.json#/$defs/did_core_id
Canonical stable DID-derived identity core. The lowercase DID method name follows ak:did_core:, and the remaining method-adapter-defined core is opaque to generic consumers. The did:web v1 adapter uses the complete canonical method-specific-id, never a digest or truncated host. Principal-core and service-core equality is byte-for-byte equality of the complete did_core_id. Event actor and Realm membership equality instead use the complete closed ActorId, and account-scoped equality uses the complete AccountId; neither may be reduced to a principal core. A did_core_id is not a DID and cannot be resolved without a did or AuthenticatedServiceResolution.
pattern: ^ak:did_core:[a-z0-9]+:[^\s/?#]+$
* verification_method · string · $ref ./account-operations.schema.json#/$defs/did_url
pattern: ^did:[a-z0-9]+:[^\s#?]+#[A-Za-z0-9._:-]+$
* issued_at · string (date-time) · format=date-time · $ref ./time.schema.json#/$defs/timestamp
Canonical Arkret-owned absolute instant. UTC Z form with exactly three millisecond digits. Whole seconds MUST use .000Z; offsets, missing/finer fractions, lowercase separators, leap seconds, and invalid Gregorian calendar dates are forbidden. Shape validation by this pattern is supplemented by semantic date validation.
pattern: ^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\.[0-9]{3}Z$
* expires_at · string (date-time) · format=date-time · $ref ./time.schema.json#/$defs/timestamp
Canonical Arkret-owned absolute instant. UTC Z form with exactly three millisecond digits. Whole seconds MUST use .000Z; offsets, missing/finer fractions, lowercase separators, leap seconds, and invalid Gregorian calendar dates are forbidden. Shape validation by this pattern is supplemented by semantic date validation.
pattern: ^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\.[0-9]{3}Z$
* proof · object · $ref #/$defs/detached_jws
Local detached signature leaf of this file. The signing bytes are the registered domain separation label, a newline, then the JCS bytes of the enclosing object with this member jws removed; kind stays covered like every other closed member.
* kind · …
recursion truncated at depth 8; see source schema for full shape
* jws · …
recursion truncated at depth 8; see source schema for full shape
oneOf · oneOf[2] · object · $ref #/$defs/controller_account_gate_attestation_issue_request_body
Deployment-authenticated request an Agent Authority sends to obtain the Account Authority-owned controller gate. Caller identity comes only from the authenticated deployment relationship: the body carries no service resolution carrier, and a self-asserted DID, URL, bearer subject, public key or account-active boolean is a schema violation rather than an identity source.
* request_id · string · $ref ./account-operations.schema.json#/$defs/request_id
pattern: ^ak:request:[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
* principal_id · string · $ref ./common-ids.schema.json#/$defs/did_core_id
Canonical stable DID-derived identity core. The lowercase DID method name follows ak:did_core:, and the remaining method-adapter-defined core is opaque to generic consumers. The did:web v1 adapter uses the complete canonical method-specific-id, never a digest or truncated host. Principal-core and service-core equality is byte-for-byte equality of the complete did_core_id. Event actor and Realm membership equality instead use the complete closed ActorId, and account-scoped equality uses the complete AccountId; neither may be reduced to a principal core. A did_core_id is not a DID and cannot be resolved without a did or AuthenticatedServiceResolution.
pattern: ^ak:did_core:[a-z0-9]+:[^\s/?#]+$
* agent_authority_id · string · $ref ./common-ids.schema.json#/$defs/did_core_id
Canonical stable DID-derived identity core. The lowercase DID method name follows ak:did_core:, and the remaining method-adapter-defined core is opaque to generic consumers. The did:web v1 adapter uses the complete canonical method-specific-id, never a digest or truncated host. Principal-core and service-core equality is byte-for-byte equality of the complete did_core_id. Event actor and Realm membership equality instead use the complete closed ActorId, and account-scoped equality uses the complete AccountId; neither may be reduced to a principal core. A did_core_id is not a DID and cannot be resolved without a did or AuthenticatedServiceResolution.
pattern: ^ak:did_core:[a-z0-9]+:[^\s/?#]+$
oneOf · oneOf[3] · object · $ref #/$defs/controller_account_gate_attestation_issue_outcome
Byte-stable issuance result. A replay of the same request_id and canonical intent returns these original bytes; a different intent under the same request_id is a duplicate_conflict with zero issuance.
* request_id · string · $ref ./account-operations.schema.json#/$defs/request_id
pattern: ^ak:request:[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
* controller_account_gate_attestation · object · $ref #/$defs/controller_account_gate_attestation
Account Authority answer to one question: is the controller principal behind an Agent key authorization still eligible? Signed under ak.controller_account_gate.v1. Member order is byte-for-byte the binding_fields order of that domain_separations row; proof follows as the detached signature over exactly those bound members. It is privacy minimised by construction: a service-local account_id, a raw account typed current result or a caller-asserted active boolean is a schema violation, not an optional member.
allOf · allOf[0] · …
recursion truncated at depth 8; see source schema for full shape
allOf · allOf[1] · …
recursion truncated at depth 8; see source schema for full shape
* schema · …
recursion truncated at depth 8; see source schema for full shape
* principal_id · …
recursion truncated at depth 8; see source schema for full shape
* eligibility · …
recursion truncated at depth 8; see source schema for full shape
* status · …
recursion truncated at depth 8; see source schema for full shape
* basis · …
recursion truncated at depth 8; see source schema for full shape
* basis_digest · …
recursion truncated at depth 8; see source schema for full shape
* authority_id · …
recursion truncated at depth 8; see source schema for full shape
* verification_method · …
recursion truncated at depth 8; see source schema for full shape
* issued_at · …
recursion truncated at depth 8; see source schema for full shape
* expires_at · …
recursion truncated at depth 8; see source schema for full shape
* proof · …
recursion truncated at depth 8; see source schema for full shape
allOf · allOf[1] · object
context · const "ak.realm_commit_signature.v1"
enum: "ak.realm_commit_signature.v1"
* result · object · $ref ./typed-current-result.schema.json#/$defs/agent_status_result
Registered Agent lifecycle projection. The first active value has exactly one provenance: the delegated PCR genesis ak.realm.create conditional write of zh/models/realm-and-space.md section 2.5.1.
* selector · object
* kind · const "agent_status"
enum: "agent_status"
* agent_id · string · $ref ./common-ids.schema.json#/$defs/did_core_id
Canonical stable DID-derived identity core. The lowercase DID method name follows ak:did_core:, and the remaining method-adapter-defined core is opaque to generic consumers. The did:web v1 adapter uses the complete canonical method-specific-id, never a digest or truncated host. Principal-core and service-core equality is byte-for-byte equality of the complete did_core_id. Event actor and Realm membership equality instead use the complete closed ActorId, and account-scoped equality uses the complete AccountId; neither may be reduced to a principal core. A did_core_id is not a DID and cannot be resolved without a did or AuthenticatedServiceResolution.
pattern: ^ak:did_core:[a-z0-9]+:[^\s/?#]+$
* source_stream_ref · oneOf[3] · $ref ./realm-commit.schema.json#/$defs/stream_ref
Closed visibility-stream selector. Realm, each Circle and each Sidecar have independent continuous positions so hidden scopes do not leak through global gaps.
oneOf · oneOf[0] · object
* kind · const "realm"
enum: "realm"
* realm_id · string · $ref ./common-ids.schema.json#/$defs/realm_id
Retyped ak.realm.create Event token. It therefore carries the same fixed current-v1 0x01/SHA-256 content-address identity and is not selected by Realm state.
pattern: ^ak:realm:[A-Za-z0-9_-]{44}$
oneOf · oneOf[1] · object
* kind · const "circle"
enum: "circle"
* realm_id · string · $ref ./common-ids.schema.json#/$defs/realm_id
Retyped ak.realm.create Event token. It therefore carries the same fixed current-v1 0x01/SHA-256 content-address identity and is not selected by Realm state.
pattern: ^ak:realm:[A-Za-z0-9_-]{44}$
* circle_id · string · $ref ./common-ids.schema.json#/$defs/circle_id
pattern: ^ak:circle:[A-Za-z0-9_-]{44}$
oneOf · oneOf[2] · object
* kind · const "sidecar"
enum: "sidecar"
* realm_id · string · $ref ./common-ids.schema.json#/$defs/realm_id
Retyped ak.realm.create Event token. It therefore carries the same fixed current-v1 0x01/SHA-256 content-address identity and is not selected by Realm state.
pattern: ^ak:realm:[A-Za-z0-9_-]{44}$
* sidecar_id · string · $ref ./common-ids.schema.json#/$defs/sidecar_id
pattern: ^ak:sidecar:[A-Za-z0-9_-]{44}$
* revision · $ref #/$defs/revision · $ref #/$defs/revision
* value · string (enum)
enum: "uninitialized" "active" "paused" "deactivated"
* accepted_status_event · object · $ref ./event-envelope.schema.json
Closed producer-signed Event. Shared persistent Events become final only when the current Realm governance Station issues a RealmCommit in the derived Realm, Circle, or Sidecar stream.
allOf · allOf[0] · ?
allOf · allOf[1] · ?
allOf · allOf[2] · ?
allOf · allOf[3] · ?
allOf · allOf[4] · ?
allOf · allOf[5] · $ref #/$defs/registered_admission_shape · $ref #/$defs/registered_admission_shape
allOf · allOf[6] · $ref #/$defs/registered_execution_shape · $ref #/$defs/registered_execution_shape
allOf · allOf[7] · ?
allOf · allOf[8] · ?
allOf · allOf[9] · ?
allOf · allOf[10] · ?
allOf · allOf[11] · ?
allOf · allOf[12] · ?
allOf · allOf[13] · ?
allOf · allOf[14] · ?
allOf · allOf[15] · ?
allOf · allOf[16] · ?
allOf · allOf[17] · ?
allOf · allOf[18] · ?
allOf · allOf[19] · ?
allOf · allOf[20] · ?
allOf · allOf[21] · ?
allOf · allOf[22] · ?
allOf · allOf[23] · ?
allOf · allOf[24] · ?
allOf · allOf[25] · ?
allOf · allOf[26] · ?
allOf · allOf[27] · ?
allOf · allOf[28] · ?
allOf · allOf[29] · ?
allOf · allOf[30] · ?
allOf · allOf[31] · ?
allOf · allOf[32] · ?
allOf · allOf[33] · ?
allOf · allOf[34] · ?
allOf · allOf[35] · ?
allOf · allOf[36] · ?
allOf · allOf[37] · ?
allOf · allOf[38] · ?
allOf · allOf[39] · ?
allOf · allOf[40] · ?
allOf · allOf[41] · ?
allOf · allOf[42] · ?
allOf · allOf[43] · ?
allOf · allOf[44] · ?
allOf · allOf[45] · ?
allOf · allOf[46] · ?
allOf · allOf[47] · ?
allOf · allOf[48] · ?
allOf · allOf[49] · ?
allOf · allOf[50] · ?
allOf · allOf[51] · ?
allOf · allOf[52] · ?
allOf · allOf[53] · ?
allOf · allOf[54] · ?
allOf · allOf[55] · ?
allOf · allOf[56] · ?
allOf · allOf[57] · ?
allOf · allOf[58] · ?
allOf · allOf[59] · ?
allOf · allOf[60] · ?
allOf · allOf[61] · ?
allOf · allOf[62] · ?
allOf · allOf[63] · ?
allOf · allOf[64] · ?
allOf · allOf[65] · ?
allOf · allOf[66] · ?
allOf · allOf[67] · ?
allOf · allOf[68] · ?
allOf · allOf[69] · ?
allOf · allOf[70] · ?
allOf · allOf[71] · ?
allOf · allOf[72] · ?
allOf · allOf[73] · ?
allOf · allOf[74] · ?
allOf · allOf[75] · ?
allOf · allOf[76] · ?
allOf · allOf[77] · ?
allOf · allOf[78] · ?
allOf · allOf[79] · ?
allOf · allOf[80] · ?
allOf · allOf[81] · ?
allOf · allOf[82] · ?
allOf · allOf[83] · ?
allOf · allOf[84] · ?
allOf · allOf[85] · ?
allOf · allOf[86] · ?
allOf · allOf[87] · ?
allOf · allOf[88] · ?
allOf · allOf[89] · ?
allOf · allOf[90] · ?
allOf · allOf[91] · ?
allOf · allOf[92] · ?
allOf · allOf[93] · ?
allOf · allOf[94] · ?
allOf · allOf[95] · ?
allOf · allOf[96] · ?
allOf · allOf[97] · ?
allOf · allOf[98] · ?
allOf · allOf[99] · ?
allOf · allOf[100] · ?
allOf · allOf[101] · ?
allOf · allOf[102] · ?
allOf · allOf[103] · ?
allOf · allOf[104] · ?
allOf · allOf[105] · ?
allOf · allOf[106] · ?
allOf · allOf[107] · ?
allOf · allOf[108] · ?
allOf · allOf[109] · ?
allOf · allOf[110] · ?
allOf · allOf[111] · ?
allOf · allOf[112] · ?
allOf · allOf[113] · ?
allOf · allOf[114] · ?
allOf · allOf[115] · ?
allOf · allOf[116] · ?
allOf · allOf[117] · ?
allOf · allOf[118] · ?
allOf · allOf[119] · ?
allOf · allOf[120] · ?
allOf · allOf[121] · ?
allOf · allOf[122] · ?
allOf · allOf[123] · ?
allOf · allOf[124] · ?
allOf · allOf[125] · ?
allOf · allOf[126] · ?
allOf · allOf[127] · ?
allOf · allOf[128] · ?
allOf · allOf[129] · ?
allOf · allOf[130] · ?
allOf · allOf[131] · ?
allOf · allOf[132] · ?
allOf · allOf[133] · ?
allOf · allOf[134] · ?
allOf · allOf[135] · ?
allOf · allOf[136] · ?
allOf · allOf[137] · ?
allOf · allOf[138] · ?
allOf · allOf[139] · ?
allOf · allOf[140] · ?
* event_id · string · $ref ./common-ids.schema.json#/$defs/event_id
Complete Arkret Event cryptographic identity. The suffix is the canonical unpadded Base64URL encoding of exactly 33 octets: fixed current-v1 suite code 0x01 followed by all 32 octets of the SHA-256 Event digest. Regex validation is only lexical; receivers MUST decode, require 33 octets, require byte 0 == 0x01, canonical re-encode, and verify the full digest before use. Other registered digest suites remain available only to the typed domains that explicitly select them and MUST NOT appear in Event IDs.
pattern: ^ak:event:[A-Za-z0-9_-]{44}$
* kind · string
Standard ak.* Event kinds MUST appear in artifacts/registry/event-kind-registry.json. State convergence is defined by the registered pure reducer over kind + payload; producers do not submit typed current result writes.
pattern: ^ak\.[a-z0-9_]+(\.[a-z0-9_]+)*$
realm_id · string · $ref ./common-ids.schema.json#/$defs/realm_id
Retyped ak.realm.create Event token. It therefore carries the same fixed current-v1 0x01/SHA-256 content-address identity and is not selected by Realm state.
pattern: ^ak:realm:[A-Za-z0-9_-]{44}$
* scope_ref · $ref #/$defs/scope_ref · $ref #/$defs/scope_ref
Required producer-signed security scope. The closed union is ordinary existing realm, circle, or native sidecar scope plus the create-only realm_genesis exception. It enters proof.event_digest and E2EE AAD. Reducers independently derive the exact scope from schema-validated payload and accepted references; missing dependencies, nonexistent scope, realm_id mismatch, omitted sidecar_id, substituting circle for sidecar, or any unequal field is fail closed. Sidecar domain Event kinds remain Extension-owned; recognizing this native security shape does not make Kernel interpret the Sidecar reducer. Exact product targets remain inside recipient-visible ciphertext.
* actor_id · oneOf[2] · $ref ./common-ids.schema.json#/$defs/actor_id
Complete protocol identity for an Event author or Realm member: account carries the exact AccountId for every Station-hosted principal; service identifies a service acting as itself. The discriminator is validated against accepted registration and admission evidence; it never authorizes itself. Account and service are distinct, and no comparison may fall back to a bare principal_id. Agent and integration classification, provisioning, controller binding and credential authorization are independently verified facts, not identity variants. Account actors at different Stations MUST NOT share or inherit authority merely because their principal_id, DID controller or signing key matches, including membership, capability, RealmCommit-signing and recovery authority.
oneOf · oneOf[0] · object
* kind · const "account"
enum: "account"
* account_id · $ref #/$defs/account_id · $ref #/$defs/account_id
oneOf · oneOf[1] · object
* kind · const "service"
enum: "service"
* service_id · $ref #/$defs/did_core_id · $ref #/$defs/did_core_id
executed_by · oneOf[2] · $ref ./common-ids.schema.json#/$defs/actor_id
Complete protocol identity for an Event author or Realm member: account carries the exact AccountId for every Station-hosted principal; service identifies a service acting as itself. The discriminator is validated against accepted registration and admission evidence; it never authorizes itself. Account and service are distinct, and no comparison may fall back to a bare principal_id. Agent and integration classification, provisioning, controller binding and credential authorization are independently verified facts, not identity variants. Account actors at different Stations MUST NOT share or inherit authority merely because their principal_id, DID controller or signing key matches, including membership, capability, RealmCommit-signing and recovery authority.
oneOf · oneOf[0] · object
* kind · const "account"
enum: "account"
* account_id · $ref #/$defs/account_id · $ref #/$defs/account_id
oneOf · oneOf[1] · object
* kind · const "service"
enum: "service"
* service_id · $ref #/$defs/did_core_id · $ref #/$defs/did_core_id
authorization_ref · oneOf[6]
Optional. Required when executed_by is present. It identifies an accepted Grant, delegation Event, DID-document delegation, or one of the closed profile-specific authority constants. The current governance Station evaluates the reference against the target stream's committed state.
oneOf · oneOf[0] · $ref #/$defs/grant_ref · $ref #/$defs/grant_ref
oneOf · oneOf[1] · $ref #/$defs/event_ref · $ref #/$defs/event_ref
oneOf · oneOf[2] · $ref #/$defs/did_delegation_ref · $ref #/$defs/did_delegation_ref
oneOf · oneOf[3] · $ref #/$defs/direct_conversation_participant_authority_ref · $ref #/$defs/direct_conversation_participant_authority_ref
oneOf · oneOf[4] · $ref #/$defs/direct_conversation_bootstrap_authority_ref · $ref #/$defs/direct_conversation_bootstrap_authority_ref
oneOf · oneOf[5] · $ref #/$defs/membership_compensation_delegation_ref · $ref #/$defs/membership_compensation_delegation_ref
applet_id · $ref #/$defs/applet_id · $ref #/$defs/applet_id
Optional signed Applet provenance. Required by ak.profile.applet_* when the Event is introduced by an Applet, Ghost Actor, bridge, or delegated applet path. Enters canonical event bytes and therefore is covered by proof.event_digest. When present, authorization_ref MUST also be present and resolve to a real active registration/capability grant binding this applet_id, registration_epoch, action and resource per zh/extensions/applet-integration.md sections 4, 8 and 11. Service-actor self-signature proves provenance but is not an authorization substitute. Capability-gated actions require a grant covering action/resource. For subject_only operations the referenced grant binds only the exact active install and cannot replace the subject signature, FSM or independent action authority. Service self-authored Events use ActorId.service; the install grant subject MUST be the same exact ActorId.service as its producer; hosting Station and effective scope are verified separately without coercing a Service into an account variant.
external_ref · $ref #/$defs/external_ref · $ref #/$defs/external_ref
Optional signed external provenance reference for Applet / bridge-originated Events. It is covered by event_digest and MUST NOT be carried only in unsigned when used for loop prevention, audit, or external-message idempotency. Must not contain unauthorized external plaintext.
* created_at · $ref #/$defs/canonical_event_timestamp · $ref #/$defs/canonical_event_timestamp
semantic_refs · array<$ref #/$defs/semantic_ref>
Optional semantic refs with role. Omit when there are no semantic references; an explicitly empty array is not canonical. Admission selectors determine any required references. PCR policy recovery has no DID-root anchor reference; its policy/session/replacement-key authority is verified separately.
items · $ref #/$defs/semantic_ref · $ref #/$defs/semantic_ref
* payload · object
* producer_proof · $ref #/$defs/event_proof · $ref #/$defs/event_proof
The Event's sole portable producer proof. Storage receipts are separate objects and never authorize this Event. producer_proof and unsigned remain outside the canonical Event digest. Exact retries preserve the verified producer proof.
* provenance · oneOf[4] · $ref #/$defs/agent_lifecycle_provenance
Closed provenance branch of the witnessed lifecycle value. Each branch carries only the accepted status Event ID of its own transition; a provision Event ID or a predecessor lifecycle pointer has no independent proof carrier and MUST NOT appear.
oneOf · oneOf[0] · object
* kind · const "genesis"
enum: "genesis"
* realm_create_event_id · string · $ref ./common-ids.schema.json#/$defs/event_id
Complete Arkret Event cryptographic identity. The suffix is the canonical unpadded Base64URL encoding of exactly 33 octets: fixed current-v1 suite code 0x01 followed by all 32 octets of the SHA-256 Event digest. Regex validation is only lexical; receivers MUST decode, require 33 octets, require byte 0 == 0x01, canonical re-encode, and verify the full digest before use. Other registered digest suites remain available only to the typed domains that explicitly select them and MUST NOT appear in Event IDs.
pattern: ^ak:event:[A-Za-z0-9_-]{44}$
oneOf · oneOf[1] · object
* kind · const "pause"
enum: "pause"
* pause_event_id · string · $ref ./common-ids.schema.json#/$defs/event_id
Complete Arkret Event cryptographic identity. The suffix is the canonical unpadded Base64URL encoding of exactly 33 octets: fixed current-v1 suite code 0x01 followed by all 32 octets of the SHA-256 Event digest. Regex validation is only lexical; receivers MUST decode, require 33 octets, require byte 0 == 0x01, canonical re-encode, and verify the full digest before use. Other registered digest suites remain available only to the typed domains that explicitly select them and MUST NOT appear in Event IDs.
pattern: ^ak:event:[A-Za-z0-9_-]{44}$
oneOf · oneOf[2] · object
* kind · const "resume"
enum: "resume"
* resume_event_id · string · $ref ./common-ids.schema.json#/$defs/event_id
Complete Arkret Event cryptographic identity. The suffix is the canonical unpadded Base64URL encoding of exactly 33 octets: fixed current-v1 suite code 0x01 followed by all 32 octets of the SHA-256 Event digest. Regex validation is only lexical; receivers MUST decode, require 33 octets, require byte 0 == 0x01, canonical re-encode, and verify the full digest before use. Other registered digest suites remain available only to the typed domains that explicitly select them and MUST NOT appear in Event IDs.
pattern: ^ak:event:[A-Za-z0-9_-]{44}$
oneOf · oneOf[3] · object
* kind · const "deactivate"
enum: "deactivate"
* deactivate_event_id · string · $ref ./common-ids.schema.json#/$defs/event_id
Complete Arkret Event cryptographic identity. The suffix is the canonical unpadded Base64URL encoding of exactly 33 octets: fixed current-v1 suite code 0x01 followed by all 32 octets of the SHA-256 Event digest. Regex validation is only lexical; receivers MUST decode, require 33 octets, require byte 0 == 0x01, canonical re-encode, and verify the full digest before use. Other registered digest suites remain available only to the typed domains that explicitly select them and MUST NOT appear in Event IDs.
pattern: ^ak:event:[A-Za-z0-9_-]{44}$
* commit_lineages · array<$ref #/$defs/commit_lineage>
items · object · $ref #/$defs/commit_lineage
Complete, duplicate-free predecessor closure connecting one witness RealmCommit to source_commit_id inside the same stream. An unknown, forked, cross-Realm or unsigned predecessor, or a missing link, rejects the whole evidence.
* witness_commit_id · string · $ref ./common-ids.schema.json#/$defs/realm_commit_id
Content-addressed identity of a closed unsigned RealmCommit body. The suffix uses the fixed v1 digest suite and the same canonical 33-octet token encoding as Event IDs.
pattern: ^ak:realm_commit:[A-Za-z0-9_-]{44}$
* predecessor_commit_ids · array<$ref ./common-ids.schema.json#/$defs/realm_commit_id>
Ordered inclusive path from witness_commit_id to source_commit_id, increasing stream_position by exactly one at each step. Every ID addresses the matching complete member of state.commits.
items · string · $ref ./common-ids.schema.json#/$defs/realm_commit_id
Content-addressed identity of a closed unsigned RealmCommit body. The suffix uses the fixed v1 digest suite and the same canonical 33-octet token encoding as Event IDs.
pattern: ^ak:realm_commit:[A-Za-z0-9_-]{44}$
* commits · array<$ref ./realm-commit.schema.json>
Exact union of genesis, witness and lineage Commits through source_commit_id, sorted by stream_position. No gaps, duplicate IDs/positions, forks or unrelated Commits.
items · object · $ref ./realm-commit.schema.json
The only shared Realm acceptance, ordering, finality and replication record. Every visibility scope has an authority-signed predecessor chain.
allOf · allOf[0] · ?
* commit_id · string · $ref ./common-ids.schema.json#/$defs/realm_commit_id
Content-addressed identity of a closed unsigned RealmCommit body. The suffix uses the fixed v1 digest suite and the same canonical 33-octet token encoding as Event IDs.
pattern: ^ak:realm_commit:[A-Za-z0-9_-]{44}$
* realm_id · string · $ref ./common-ids.schema.json#/$defs/realm_id
Retyped ak.realm.create Event token. It therefore carries the same fixed current-v1 0x01/SHA-256 content-address identity and is not selected by Realm state.
pattern: ^ak:realm:[A-Za-z0-9_-]{44}$
* stream_ref · $ref #/$defs/stream_ref · $ref #/$defs/stream_ref
* stream_position · integer
* previous_commit_ref · oneOf[2]
oneOf · oneOf[0] · string · $ref ./common-ids.schema.json#/$defs/realm_commit_id
Content-addressed identity of a closed unsigned RealmCommit body. The suffix uses the fixed v1 digest suite and the same canonical 33-octet token encoding as Event IDs.
pattern: ^ak:realm_commit:[A-Za-z0-9_-]{44}$
oneOf · oneOf[1] · null
* event_ref · string · $ref ./common-ids.schema.json#/$defs/event_id
Complete Arkret Event cryptographic identity. The suffix is the canonical unpadded Base64URL encoding of exactly 33 octets: fixed current-v1 suite code 0x01 followed by all 32 octets of the SHA-256 Event digest. Regex validation is only lexical; receivers MUST decode, require 33 octets, require byte 0 == 0x01, canonical re-encode, and verify the full digest before use. Other registered digest suites remain available only to the typed domains that explicitly select them and MUST NOT appear in Event IDs.
pattern: ^ak:event:[A-Za-z0-9_-]{44}$
* governance_generation · integer
Tenure counter of the governing Station that signed this Commit; it advances only on an accepted ak.realm.governance_station.change. It is not the Realm authority-root delegation generation of typed-current-result.schema.json#/$defs/realm_authority_root_value, which advances only on ak.realm.authority.reset.
* authority_ref · oneOf[2]
oneOf · oneOf[0] · string · $ref ./common-ids.schema.json#/$defs/event_id
Complete Arkret Event cryptographic identity. The suffix is the canonical unpadded Base64URL encoding of exactly 33 octets: fixed current-v1 suite code 0x01 followed by all 32 octets of the SHA-256 Event digest. Regex validation is only lexical; receivers MUST decode, require 33 octets, require byte 0 == 0x01, canonical re-encode, and verify the full digest before use. Other registered digest suites remain available only to the typed domains that explicitly select them and MUST NOT appear in Event IDs.
pattern: ^ak:event:[A-Za-z0-9_-]{44}$
oneOf · oneOf[1] · string · $ref ./common-ids.schema.json#/$defs/realm_authority_handoff_id
Content-addressed identity of one closed old-to-new Realm authority handoff.
pattern: ^ak:realm_authority_handoff:[A-Za-z0-9_-]{44}$
* committed_at · string (date-time) · format=date-time · $ref ./time.schema.json#/$defs/timestamp
Canonical Arkret-owned absolute instant. UTC Z form with exactly three millisecond digits. Whole seconds MUST use .000Z; offsets, missing/finer fractions, lowercase separators, leap seconds, and invalid Gregorian calendar dates are forbidden. Shape validation by this pattern is supplemented by semantic date validation.
pattern: ^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\.[0-9]{3}Z$
producer_signer_fact_digest · string · $ref ./account-operations.schema.json#/$defs/sha256_digest
Fixed SHA256 over RFC8785 JCS of the original immutable Human or Applet Service producer fact, excluding the outer target coordinate. Freeze before Commit identity/signature and retain with acceptance; exact replay, replica and handoff preserve this original digest.
pattern: ^sha256:[0-9a-f]{64}$
* signature · allOf[2] · $ref ./detached-object-signature.schema.json#/$defs/realm_commit_signature
allOf · allOf[0] · oneOf[4] · $ref #
Portable Agent signer evidence carried to a Station or peer verifier: the Agent Authority state evidence over one exact confirmed RealmCommit state, and the Account Authority controller gate. Both objects anchor their own local detached signature under their own registered domain separation; neither reuses the shared Event proof leaf. Agent and controller private keys, MLS private state, service-local account_id and raw account typed current results never appear here.
oneOf · oneOf[0] · object · $ref #/$defs/agent_authority_state_evidence
Portable Agent Authority state evidence. state_digest is the RFC 8785 JCS SHA-256 of state alone, so a compact transport root MAY omit state when the receiver already holds that exact digest fully verified; the receiver MUST restore the complete state before recomputing any digest or verifying any signature.
* schema · const "ak.schema.agent_authority_state_evidence.v1"
enum: "ak.schema.agent_authority_state_evidence.v1"
state · object · $ref #/$defs/agent_authority_state
One exact confirmed RealmCommit state of the Agent Principal Control Realm, carrying the complete PCR genesis Event, key authorization Event, key authorization, key state witness and Agent lifecycle witness together.
* authority_id · …
recursion truncated at depth 8; see source schema for full shape
* agent_id · …
recursion truncated at depth 8; see source schema for full shape
* source_commit_id · …
recursion truncated at depth 8; see source schema for full shape
* pcr_genesis_event · …
recursion truncated at depth 8; see source schema for full shape
* key_authorization_event · …
recursion truncated at depth 8; see source schema for full shape
* authorization · …
recursion truncated at depth 8; see source schema for full shape
* key_state_witness · …
recursion truncated at depth 8; see source schema for full shape
* agent_lifecycle_witness · …
recursion truncated at depth 8; see source schema for full shape
* commit_lineages · …
recursion truncated at depth 8; see source schema for full shape
* commits · …
recursion truncated at depth 8; see source schema for full shape
* authority_bundle · …
recursion truncated at depth 8; see source schema for full shape
* signer_dependencies · …
recursion truncated at depth 8; see source schema for full shape
* producer_bindings · …
recursion truncated at depth 8; see source schema for full shape
* state_digest · string · $ref ./account-operations.schema.json#/$defs/sha256_digest
pattern: ^sha256:[0-9a-f]{64}$
* attestation · object · $ref #/$defs/agent_authority_state_attestation
The single Agent Authority state signature, made under ak.agent_authority_state_evidence.v1 by the authoritative service DID of that PCR. It binds the exact authority, verification method, state digest and observation window verbatim; the controller proof, the Account Authority gate and the RealmCommit signatures each stay separate.
* authority_id · …
recursion truncated at depth 8; see source schema for full shape
* verification_method · …
recursion truncated at depth 8; see source schema for full shape
* state_digest · …
recursion truncated at depth 8; see source schema for full shape
* issued_at · …
recursion truncated at depth 8; see source schema for full shape
* expires_at · …
recursion truncated at depth 8; see source schema for full shape
* proof · …
recursion truncated at depth 8; see source schema for full shape
oneOf · oneOf[1] · object · $ref #/$defs/controller_account_gate_attestation
Account Authority answer to one question: is the controller principal behind an Agent key authorization still eligible? Signed under ak.controller_account_gate.v1. Member order is byte-for-byte the binding_fields order of that domain_separations row; proof follows as the detached signature over exactly those bound members. It is privacy minimised by construction: a service-local account_id, a raw account typed current result or a caller-asserted active boolean is a schema violation, not an optional member.
allOf · allOf[0] · ?
status active holds exactly when eligibility is active; every other status is inactive.
allOf · allOf[1] · ?
Stable absence or exact initial binding Active is the only default basis. Every non-active status, and restored Active after any successor, requires the original signed record basis.
* schema · const "ak.schema.controller_account_gate_attestation.v1"
enum: "ak.schema.controller_account_gate_attestation.v1"
* principal_id · string · $ref ./common-ids.schema.json#/$defs/did_core_id
Canonical stable DID-derived identity core. The lowercase DID method name follows ak:did_core:, and the remaining method-adapter-defined core is opaque to generic consumers. The did:web v1 adapter uses the complete canonical method-specific-id, never a digest or truncated host. Principal-core and service-core equality is byte-for-byte equality of the complete did_core_id. Event actor and Realm membership equality instead use the complete closed ActorId, and account-scoped equality uses the complete AccountId; neither may be reduced to a principal core. A did_core_id is not a DID and cannot be resolved without a did or AuthenticatedServiceResolution.
pattern: ^ak:did_core:[a-z0-9]+:[^\s/?#]+$
* eligibility · string (enum)
The only decision a consumer acts on. It is active if and only if status is active.
enum: "active" "inactive"
* status · string (enum) · $ref ./account-operations.schema.json#/$defs/account_state
Account lifecycle projection; mirrors zh/identity/account-lifecycle.md §3.
enum: "active" "soft_logged_out" "locked" "suspended" "deactivated" "erasure_pending"
* basis · oneOf[2] · $ref #/$defs/controller_account_gate_basis
Private Account Authority current basis. account_binding_default is stable absence or the exact initial active binding record; account_status_record binds the original immutable signed AccountStatusRecord current head. It is not an Event, RealmCommit or Station checkpoint, and the record body remains private.
oneOf · oneOf[0] · …
recursion truncated at depth 8; see source schema for full shape
oneOf · oneOf[1] · …
recursion truncated at depth 8; see source schema for full shape
* basis_digest · string · $ref ./account-operations.schema.json#/$defs/sha256_digest
SHA-256(JCS({principal_id:gate.principal_id,accepted_id:gate.authority_id,status:gate.status,basis:gate.basis})), without a domain prefix. accepted_id is a derived preimage key equal to the original internal request agent_authority_id and owning AA/Station; it is not another wire member. Consumers MUST recompute exact equality from these public Gate fields, independently of signature verification; this does not authenticate the hidden original Record/current ledger head.
pattern: ^sha256:[0-9a-f]{64}$
* authority_id · string · $ref ./common-ids.schema.json#/$defs/did_core_id
Canonical stable DID-derived identity core. The lowercase DID method name follows ak:did_core:, and the remaining method-adapter-defined core is opaque to generic consumers. The did:web v1 adapter uses the complete canonical method-specific-id, never a digest or truncated host. Principal-core and service-core equality is byte-for-byte equality of the complete did_core_id. Event actor and Realm membership equality instead use the complete closed ActorId, and account-scoped equality uses the complete AccountId; neither may be reduced to a principal core. A did_core_id is not a DID and cannot be resolved without a did or AuthenticatedServiceResolution.
pattern: ^ak:did_core:[a-z0-9]+:[^\s/?#]+$
* verification_method · string · $ref ./account-operations.schema.json#/$defs/did_url
pattern: ^did:[a-z0-9]+:[^\s#?]+#[A-Za-z0-9._:-]+$
* issued_at · string (date-time) · format=date-time · $ref ./time.schema.json#/$defs/timestamp
Canonical Arkret-owned absolute instant. UTC Z form with exactly three millisecond digits. Whole seconds MUST use .000Z; offsets, missing/finer fractions, lowercase separators, leap seconds, and invalid Gregorian calendar dates are forbidden. Shape validation by this pattern is supplemented by semantic date validation.
pattern: ^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\.[0-9]{3}Z$
* expires_at · string (date-time) · format=date-time · $ref ./time.schema.json#/$defs/timestamp
Canonical Arkret-owned absolute instant. UTC Z form with exactly three millisecond digits. Whole seconds MUST use .000Z; offsets, missing/finer fractions, lowercase separators, leap seconds, and invalid Gregorian calendar dates are forbidden. Shape validation by this pattern is supplemented by semantic date validation.
pattern: ^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\.[0-9]{3}Z$
* proof · object · $ref #/$defs/detached_jws
Local detached signature leaf of this file. The signing bytes are the registered domain separation label, a newline, then the JCS bytes of the enclosing object with this member jws removed; kind stays covered like every other closed member.
* kind · …
recursion truncated at depth 8; see source schema for full shape
* jws · …
recursion truncated at depth 8; see source schema for full shape
oneOf · oneOf[2] · object · $ref #/$defs/controller_account_gate_attestation_issue_request_body
Deployment-authenticated request an Agent Authority sends to obtain the Account Authority-owned controller gate. Caller identity comes only from the authenticated deployment relationship: the body carries no service resolution carrier, and a self-asserted DID, URL, bearer subject, public key or account-active boolean is a schema violation rather than an identity source.
* request_id · string · $ref ./account-operations.schema.json#/$defs/request_id
pattern: ^ak:request:[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
* principal_id · string · $ref ./common-ids.schema.json#/$defs/did_core_id
Canonical stable DID-derived identity core. The lowercase DID method name follows ak:did_core:, and the remaining method-adapter-defined core is opaque to generic consumers. The did:web v1 adapter uses the complete canonical method-specific-id, never a digest or truncated host. Principal-core and service-core equality is byte-for-byte equality of the complete did_core_id. Event actor and Realm membership equality instead use the complete closed ActorId, and account-scoped equality uses the complete AccountId; neither may be reduced to a principal core. A did_core_id is not a DID and cannot be resolved without a did or AuthenticatedServiceResolution.
pattern: ^ak:did_core:[a-z0-9]+:[^\s/?#]+$
* agent_authority_id · string · $ref ./common-ids.schema.json#/$defs/did_core_id
Canonical stable DID-derived identity core. The lowercase DID method name follows ak:did_core:, and the remaining method-adapter-defined core is opaque to generic consumers. The did:web v1 adapter uses the complete canonical method-specific-id, never a digest or truncated host. Principal-core and service-core equality is byte-for-byte equality of the complete did_core_id. Event actor and Realm membership equality instead use the complete closed ActorId, and account-scoped equality uses the complete AccountId; neither may be reduced to a principal core. A did_core_id is not a DID and cannot be resolved without a did or AuthenticatedServiceResolution.
pattern: ^ak:did_core:[a-z0-9]+:[^\s/?#]+$
oneOf · oneOf[3] · object · $ref #/$defs/controller_account_gate_attestation_issue_outcome
Byte-stable issuance result. A replay of the same request_id and canonical intent returns these original bytes; a different intent under the same request_id is a duplicate_conflict with zero issuance.
* request_id · string · $ref ./account-operations.schema.json#/$defs/request_id
pattern: ^ak:request:[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
* controller_account_gate_attestation · object · $ref #/$defs/controller_account_gate_attestation
Account Authority answer to one question: is the controller principal behind an Agent key authorization still eligible? Signed under ak.controller_account_gate.v1. Member order is byte-for-byte the binding_fields order of that domain_separations row; proof follows as the detached signature over exactly those bound members. It is privacy minimised by construction: a service-local account_id, a raw account typed current result or a caller-asserted active boolean is a schema violation, not an optional member.
allOf · allOf[0] · …
recursion truncated at depth 8; see source schema for full shape
allOf · allOf[1] · …
recursion truncated at depth 8; see source schema for full shape
* schema · …
recursion truncated at depth 8; see source schema for full shape
* principal_id · …
recursion truncated at depth 8; see source schema for full shape
* eligibility · …
recursion truncated at depth 8; see source schema for full shape
* status · …
recursion truncated at depth 8; see source schema for full shape
* basis · …
recursion truncated at depth 8; see source schema for full shape
* basis_digest · …
recursion truncated at depth 8; see source schema for full shape
* authority_id · …
recursion truncated at depth 8; see source schema for full shape
* verification_method · …
recursion truncated at depth 8; see source schema for full shape
* issued_at · …
recursion truncated at depth 8; see source schema for full shape
* expires_at · …
recursion truncated at depth 8; see source schema for full shape
* proof · …
recursion truncated at depth 8; see source schema for full shape
allOf · allOf[1] · object
context · const "ak.realm_commit_signature.v1"
enum: "ak.realm_commit_signature.v1"
* authority_bundle · object · $ref #/$defs/agent_accepted_authority_bundle
Minimal accepted-at RealmAuthorityBundle projection for this PCR closure only. No online nonce/current assertion or routing authority. The genesis and consecutive handoffs determine each Commit generation; signer_histories are exactly the method-native histories used by Commit, producer dependency and state signatures. Unused records are surplus. It does not authorize other Events or controller binding.
* realm_id · string · $ref ./common-ids.schema.json#/$defs/realm_id
Retyped ak.realm.create Event token. It therefore carries the same fixed current-v1 0x01/SHA-256 content-address identity and is not selected by Realm state.
pattern: ^ak:realm:[A-Za-z0-9_-]{44}$
* genesis_event · object · $ref ./event-envelope.schema.json
Closed producer-signed Event. Shared persistent Events become final only when the current Realm governance Station issues a RealmCommit in the derived Realm, Circle, or Sidecar stream.
allOf · allOf[0] · ?
allOf · allOf[1] · ?
allOf · allOf[2] · ?
allOf · allOf[3] · ?
allOf · allOf[4] · ?
allOf · allOf[5] · $ref #/$defs/registered_admission_shape · $ref #/$defs/registered_admission_shape
allOf · allOf[6] · $ref #/$defs/registered_execution_shape · $ref #/$defs/registered_execution_shape
allOf · allOf[7] · ?
allOf · allOf[8] · ?
allOf · allOf[9] · ?
allOf · allOf[10] · ?
allOf · allOf[11] · ?
allOf · allOf[12] · ?
allOf · allOf[13] · ?
allOf · allOf[14] · ?
allOf · allOf[15] · ?
allOf · allOf[16] · ?
allOf · allOf[17] · ?
allOf · allOf[18] · ?
allOf · allOf[19] · ?
allOf · allOf[20] · ?
allOf · allOf[21] · ?
allOf · allOf[22] · ?
allOf · allOf[23] · ?
allOf · allOf[24] · ?
allOf · allOf[25] · ?
allOf · allOf[26] · ?
allOf · allOf[27] · ?
allOf · allOf[28] · ?
allOf · allOf[29] · ?
allOf · allOf[30] · ?
allOf · allOf[31] · ?
allOf · allOf[32] · ?
allOf · allOf[33] · ?
allOf · allOf[34] · ?
allOf · allOf[35] · ?
allOf · allOf[36] · ?
allOf · allOf[37] · ?
allOf · allOf[38] · ?
allOf · allOf[39] · ?
allOf · allOf[40] · ?
allOf · allOf[41] · ?
allOf · allOf[42] · ?
allOf · allOf[43] · ?
allOf · allOf[44] · ?
allOf · allOf[45] · ?
allOf · allOf[46] · ?
allOf · allOf[47] · ?
allOf · allOf[48] · ?
allOf · allOf[49] · ?
allOf · allOf[50] · ?
allOf · allOf[51] · ?
allOf · allOf[52] · ?
allOf · allOf[53] · ?
allOf · allOf[54] · ?
allOf · allOf[55] · ?
allOf · allOf[56] · ?
allOf · allOf[57] · ?
allOf · allOf[58] · ?
allOf · allOf[59] · ?
allOf · allOf[60] · ?
allOf · allOf[61] · ?
allOf · allOf[62] · ?
allOf · allOf[63] · ?
allOf · allOf[64] · ?
allOf · allOf[65] · ?
allOf · allOf[66] · ?
allOf · allOf[67] · ?
allOf · allOf[68] · ?
allOf · allOf[69] · ?
allOf · allOf[70] · ?
allOf · allOf[71] · ?
allOf · allOf[72] · ?
allOf · allOf[73] · ?
allOf · allOf[74] · ?
allOf · allOf[75] · ?
allOf · allOf[76] · ?
allOf · allOf[77] · ?
allOf · allOf[78] · ?
allOf · allOf[79] · ?
allOf · allOf[80] · ?
allOf · allOf[81] · ?
allOf · allOf[82] · ?
allOf · allOf[83] · ?
allOf · allOf[84] · ?
allOf · allOf[85] · ?
allOf · allOf[86] · ?
allOf · allOf[87] · ?
allOf · allOf[88] · ?
allOf · allOf[89] · ?
allOf · allOf[90] · ?
allOf · allOf[91] · ?
allOf · allOf[92] · ?
allOf · allOf[93] · ?
allOf · allOf[94] · ?
allOf · allOf[95] · ?
allOf · allOf[96] · ?
allOf · allOf[97] · ?
allOf · allOf[98] · ?
allOf · allOf[99] · ?
allOf · allOf[100] · ?
allOf · allOf[101] · ?
allOf · allOf[102] · ?
allOf · allOf[103] · ?
allOf · allOf[104] · ?
allOf · allOf[105] · ?
allOf · allOf[106] · ?
allOf · allOf[107] · ?
allOf · allOf[108] · ?
allOf · allOf[109] · ?
allOf · allOf[110] · ?
allOf · allOf[111] · ?
allOf · allOf[112] · ?
allOf · allOf[113] · ?
allOf · allOf[114] · ?
allOf · allOf[115] · ?
allOf · allOf[116] · ?
allOf · allOf[117] · ?
allOf · allOf[118] · ?
allOf · allOf[119] · ?
allOf · allOf[120] · ?
allOf · allOf[121] · ?
allOf · allOf[122] · ?
allOf · allOf[123] · ?
allOf · allOf[124] · ?
allOf · allOf[125] · ?
allOf · allOf[126] · ?
allOf · allOf[127] · ?
allOf · allOf[128] · ?
allOf · allOf[129] · ?
allOf · allOf[130] · ?
allOf · allOf[131] · ?
allOf · allOf[132] · ?
allOf · allOf[133] · ?
allOf · allOf[134] · ?
allOf · allOf[135] · ?
allOf · allOf[136] · ?
allOf · allOf[137] · ?
allOf · allOf[138] · ?
allOf · allOf[139] · ?
allOf · allOf[140] · ?
* event_id · string · $ref ./common-ids.schema.json#/$defs/event_id
Complete Arkret Event cryptographic identity. The suffix is the canonical unpadded Base64URL encoding of exactly 33 octets: fixed current-v1 suite code 0x01 followed by all 32 octets of the SHA-256 Event digest. Regex validation is only lexical; receivers MUST decode, require 33 octets, require byte 0 == 0x01, canonical re-encode, and verify the full digest before use. Other registered digest suites remain available only to the typed domains that explicitly select them and MUST NOT appear in Event IDs.
pattern: ^ak:event:[A-Za-z0-9_-]{44}$
* kind · string
Standard ak.* Event kinds MUST appear in artifacts/registry/event-kind-registry.json. State convergence is defined by the registered pure reducer over kind + payload; producers do not submit typed current result writes.
pattern: ^ak\.[a-z0-9_]+(\.[a-z0-9_]+)*$
realm_id · string · $ref ./common-ids.schema.json#/$defs/realm_id
Retyped ak.realm.create Event token. It therefore carries the same fixed current-v1 0x01/SHA-256 content-address identity and is not selected by Realm state.
pattern: ^ak:realm:[A-Za-z0-9_-]{44}$
* scope_ref · $ref #/$defs/scope_ref · $ref #/$defs/scope_ref
Required producer-signed security scope. The closed union is ordinary existing realm, circle, or native sidecar scope plus the create-only realm_genesis exception. It enters proof.event_digest and E2EE AAD. Reducers independently derive the exact scope from schema-validated payload and accepted references; missing dependencies, nonexistent scope, realm_id mismatch, omitted sidecar_id, substituting circle for sidecar, or any unequal field is fail closed. Sidecar domain Event kinds remain Extension-owned; recognizing this native security shape does not make Kernel interpret the Sidecar reducer. Exact product targets remain inside recipient-visible ciphertext.
* actor_id · oneOf[2] · $ref ./common-ids.schema.json#/$defs/actor_id
Complete protocol identity for an Event author or Realm member: account carries the exact AccountId for every Station-hosted principal; service identifies a service acting as itself. The discriminator is validated against accepted registration and admission evidence; it never authorizes itself. Account and service are distinct, and no comparison may fall back to a bare principal_id. Agent and integration classification, provisioning, controller binding and credential authorization are independently verified facts, not identity variants. Account actors at different Stations MUST NOT share or inherit authority merely because their principal_id, DID controller or signing key matches, including membership, capability, RealmCommit-signing and recovery authority.
oneOf · oneOf[0] · object
* kind · const "account"
enum: "account"
* account_id · $ref #/$defs/account_id · $ref #/$defs/account_id
oneOf · oneOf[1] · object
* kind · const "service"
enum: "service"
* service_id · $ref #/$defs/did_core_id · $ref #/$defs/did_core_id
executed_by · oneOf[2] · $ref ./common-ids.schema.json#/$defs/actor_id
Complete protocol identity for an Event author or Realm member: account carries the exact AccountId for every Station-hosted principal; service identifies a service acting as itself. The discriminator is validated against accepted registration and admission evidence; it never authorizes itself. Account and service are distinct, and no comparison may fall back to a bare principal_id. Agent and integration classification, provisioning, controller binding and credential authorization are independently verified facts, not identity variants. Account actors at different Stations MUST NOT share or inherit authority merely because their principal_id, DID controller or signing key matches, including membership, capability, RealmCommit-signing and recovery authority.
oneOf · oneOf[0] · object
* kind · const "account"
enum: "account"
* account_id · $ref #/$defs/account_id · $ref #/$defs/account_id
oneOf · oneOf[1] · object
* kind · const "service"
enum: "service"
* service_id · $ref #/$defs/did_core_id · $ref #/$defs/did_core_id
authorization_ref · oneOf[6]
Optional. Required when executed_by is present. It identifies an accepted Grant, delegation Event, DID-document delegation, or one of the closed profile-specific authority constants. The current governance Station evaluates the reference against the target stream's committed state.
oneOf · oneOf[0] · $ref #/$defs/grant_ref · $ref #/$defs/grant_ref
oneOf · oneOf[1] · $ref #/$defs/event_ref · $ref #/$defs/event_ref
oneOf · oneOf[2] · $ref #/$defs/did_delegation_ref · $ref #/$defs/did_delegation_ref
oneOf · oneOf[3] · $ref #/$defs/direct_conversation_participant_authority_ref · $ref #/$defs/direct_conversation_participant_authority_ref
oneOf · oneOf[4] · $ref #/$defs/direct_conversation_bootstrap_authority_ref · $ref #/$defs/direct_conversation_bootstrap_authority_ref
oneOf · oneOf[5] · $ref #/$defs/membership_compensation_delegation_ref · $ref #/$defs/membership_compensation_delegation_ref
applet_id · $ref #/$defs/applet_id · $ref #/$defs/applet_id
Optional signed Applet provenance. Required by ak.profile.applet_* when the Event is introduced by an Applet, Ghost Actor, bridge, or delegated applet path. Enters canonical event bytes and therefore is covered by proof.event_digest. When present, authorization_ref MUST also be present and resolve to a real active registration/capability grant binding this applet_id, registration_epoch, action and resource per zh/extensions/applet-integration.md sections 4, 8 and 11. Service-actor self-signature proves provenance but is not an authorization substitute. Capability-gated actions require a grant covering action/resource. For subject_only operations the referenced grant binds only the exact active install and cannot replace the subject signature, FSM or independent action authority. Service self-authored Events use ActorId.service; the install grant subject MUST be the same exact ActorId.service as its producer; hosting Station and effective scope are verified separately without coercing a Service into an account variant.
external_ref · $ref #/$defs/external_ref · $ref #/$defs/external_ref
Optional signed external provenance reference for Applet / bridge-originated Events. It is covered by event_digest and MUST NOT be carried only in unsigned when used for loop prevention, audit, or external-message idempotency. Must not contain unauthorized external plaintext.
* created_at · $ref #/$defs/canonical_event_timestamp · $ref #/$defs/canonical_event_timestamp
semantic_refs · array<$ref #/$defs/semantic_ref>
Optional semantic refs with role. Omit when there are no semantic references; an explicitly empty array is not canonical. Admission selectors determine any required references. PCR policy recovery has no DID-root anchor reference; its policy/session/replacement-key authority is verified separately.
items · $ref #/$defs/semantic_ref · $ref #/$defs/semantic_ref
* payload · object
* producer_proof · $ref #/$defs/event_proof · $ref #/$defs/event_proof
The Event's sole portable producer proof. Storage receipts are separate objects and never authorize this Event. producer_proof and unsigned remain outside the canonical Event digest. Exact retries preserve the verified producer proof.
* genesis_commit · object · $ref ./realm-commit.schema.json
The only shared Realm acceptance, ordering, finality and replication record. Every visibility scope has an authority-signed predecessor chain.
allOf · allOf[0] · ?
* commit_id · string · $ref ./common-ids.schema.json#/$defs/realm_commit_id
Content-addressed identity of a closed unsigned RealmCommit body. The suffix uses the fixed v1 digest suite and the same canonical 33-octet token encoding as Event IDs.
pattern: ^ak:realm_commit:[A-Za-z0-9_-]{44}$
* realm_id · string · $ref ./common-ids.schema.json#/$defs/realm_id
Retyped ak.realm.create Event token. It therefore carries the same fixed current-v1 0x01/SHA-256 content-address identity and is not selected by Realm state.
pattern: ^ak:realm:[A-Za-z0-9_-]{44}$
* stream_ref · $ref #/$defs/stream_ref · $ref #/$defs/stream_ref
* stream_position · integer
* previous_commit_ref · oneOf[2]
oneOf · oneOf[0] · string · $ref ./common-ids.schema.json#/$defs/realm_commit_id
Content-addressed identity of a closed unsigned RealmCommit body. The suffix uses the fixed v1 digest suite and the same canonical 33-octet token encoding as Event IDs.
pattern: ^ak:realm_commit:[A-Za-z0-9_-]{44}$
oneOf · oneOf[1] · null
* event_ref · string · $ref ./common-ids.schema.json#/$defs/event_id
Complete Arkret Event cryptographic identity. The suffix is the canonical unpadded Base64URL encoding of exactly 33 octets: fixed current-v1 suite code 0x01 followed by all 32 octets of the SHA-256 Event digest. Regex validation is only lexical; receivers MUST decode, require 33 octets, require byte 0 == 0x01, canonical re-encode, and verify the full digest before use. Other registered digest suites remain available only to the typed domains that explicitly select them and MUST NOT appear in Event IDs.
pattern: ^ak:event:[A-Za-z0-9_-]{44}$
* governance_generation · integer
Tenure counter of the governing Station that signed this Commit; it advances only on an accepted ak.realm.governance_station.change. It is not the Realm authority-root delegation generation of typed-current-result.schema.json#/$defs/realm_authority_root_value, which advances only on ak.realm.authority.reset.
* authority_ref · oneOf[2]
oneOf · oneOf[0] · string · $ref ./common-ids.schema.json#/$defs/event_id
Complete Arkret Event cryptographic identity. The suffix is the canonical unpadded Base64URL encoding of exactly 33 octets: fixed current-v1 suite code 0x01 followed by all 32 octets of the SHA-256 Event digest. Regex validation is only lexical; receivers MUST decode, require 33 octets, require byte 0 == 0x01, canonical re-encode, and verify the full digest before use. Other registered digest suites remain available only to the typed domains that explicitly select them and MUST NOT appear in Event IDs.
pattern: ^ak:event:[A-Za-z0-9_-]{44}$
oneOf · oneOf[1] · string · $ref ./common-ids.schema.json#/$defs/realm_authority_handoff_id
Content-addressed identity of one closed old-to-new Realm authority handoff.
pattern: ^ak:realm_authority_handoff:[A-Za-z0-9_-]{44}$
* committed_at · string (date-time) · format=date-time · $ref ./time.schema.json#/$defs/timestamp
Canonical Arkret-owned absolute instant. UTC Z form with exactly three millisecond digits. Whole seconds MUST use .000Z; offsets, missing/finer fractions, lowercase separators, leap seconds, and invalid Gregorian calendar dates are forbidden. Shape validation by this pattern is supplemented by semantic date validation.
pattern: ^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\.[0-9]{3}Z$
producer_signer_fact_digest · string · $ref ./account-operations.schema.json#/$defs/sha256_digest
Fixed SHA256 over RFC8785 JCS of the original immutable Human or Applet Service producer fact, excluding the outer target coordinate. Freeze before Commit identity/signature and retain with acceptance; exact replay, replica and handoff preserve this original digest.
pattern: ^sha256:[0-9a-f]{64}$
* signature · allOf[2] · $ref ./detached-object-signature.schema.json#/$defs/realm_commit_signature
allOf · allOf[0] · oneOf[4] · $ref #
Portable Agent signer evidence carried to a Station or peer verifier: the Agent Authority state evidence over one exact confirmed RealmCommit state, and the Account Authority controller gate. Both objects anchor their own local detached signature under their own registered domain separation; neither reuses the shared Event proof leaf. Agent and controller private keys, MLS private state, service-local account_id and raw account typed current results never appear here.
oneOf · oneOf[0] · object · $ref #/$defs/agent_authority_state_evidence
Portable Agent Authority state evidence. state_digest is the RFC 8785 JCS SHA-256 of state alone, so a compact transport root MAY omit state when the receiver already holds that exact digest fully verified; the receiver MUST restore the complete state before recomputing any digest or verifying any signature.
* schema · const "ak.schema.agent_authority_state_evidence.v1"
enum: "ak.schema.agent_authority_state_evidence.v1"
state · object · $ref #/$defs/agent_authority_state
One exact confirmed RealmCommit state of the Agent Principal Control Realm, carrying the complete PCR genesis Event, key authorization Event, key authorization, key state witness and Agent lifecycle witness together.
* authority_id · …
recursion truncated at depth 8; see source schema for full shape
* agent_id · …
recursion truncated at depth 8; see source schema for full shape
* source_commit_id · …
recursion truncated at depth 8; see source schema for full shape
* pcr_genesis_event · …
recursion truncated at depth 8; see source schema for full shape
* key_authorization_event · …
recursion truncated at depth 8; see source schema for full shape
* authorization · …
recursion truncated at depth 8; see source schema for full shape
* key_state_witness · …
recursion truncated at depth 8; see source schema for full shape
* agent_lifecycle_witness · …
recursion truncated at depth 8; see source schema for full shape
* commit_lineages · …
recursion truncated at depth 8; see source schema for full shape
* commits · …
recursion truncated at depth 8; see source schema for full shape
* authority_bundle · …
recursion truncated at depth 8; see source schema for full shape
* signer_dependencies · …
recursion truncated at depth 8; see source schema for full shape
* producer_bindings · …
recursion truncated at depth 8; see source schema for full shape
* state_digest · string · $ref ./account-operations.schema.json#/$defs/sha256_digest
pattern: ^sha256:[0-9a-f]{64}$
* attestation · object · $ref #/$defs/agent_authority_state_attestation
The single Agent Authority state signature, made under ak.agent_authority_state_evidence.v1 by the authoritative service DID of that PCR. It binds the exact authority, verification method, state digest and observation window verbatim; the controller proof, the Account Authority gate and the RealmCommit signatures each stay separate.
* authority_id · …
recursion truncated at depth 8; see source schema for full shape
* verification_method · …
recursion truncated at depth 8; see source schema for full shape
* state_digest · …
recursion truncated at depth 8; see source schema for full shape
* issued_at · …
recursion truncated at depth 8; see source schema for full shape
* expires_at · …
recursion truncated at depth 8; see source schema for full shape
* proof · …
recursion truncated at depth 8; see source schema for full shape
oneOf · oneOf[1] · object · $ref #/$defs/controller_account_gate_attestation
Account Authority answer to one question: is the controller principal behind an Agent key authorization still eligible? Signed under ak.controller_account_gate.v1. Member order is byte-for-byte the binding_fields order of that domain_separations row; proof follows as the detached signature over exactly those bound members. It is privacy minimised by construction: a service-local account_id, a raw account typed current result or a caller-asserted active boolean is a schema violation, not an optional member.
allOf · allOf[0] · ?
status active holds exactly when eligibility is active; every other status is inactive.
allOf · allOf[1] · ?
Stable absence or exact initial binding Active is the only default basis. Every non-active status, and restored Active after any successor, requires the original signed record basis.
* schema · const "ak.schema.controller_account_gate_attestation.v1"
enum: "ak.schema.controller_account_gate_attestation.v1"
* principal_id · string · $ref ./common-ids.schema.json#/$defs/did_core_id
Canonical stable DID-derived identity core. The lowercase DID method name follows ak:did_core:, and the remaining method-adapter-defined core is opaque to generic consumers. The did:web v1 adapter uses the complete canonical method-specific-id, never a digest or truncated host. Principal-core and service-core equality is byte-for-byte equality of the complete did_core_id. Event actor and Realm membership equality instead use the complete closed ActorId, and account-scoped equality uses the complete AccountId; neither may be reduced to a principal core. A did_core_id is not a DID and cannot be resolved without a did or AuthenticatedServiceResolution.
pattern: ^ak:did_core:[a-z0-9]+:[^\s/?#]+$
* eligibility · string (enum)
The only decision a consumer acts on. It is active if and only if status is active.
enum: "active" "inactive"
* status · string (enum) · $ref ./account-operations.schema.json#/$defs/account_state
Account lifecycle projection; mirrors zh/identity/account-lifecycle.md §3.
enum: "active" "soft_logged_out" "locked" "suspended" "deactivated" "erasure_pending"
* basis · oneOf[2] · $ref #/$defs/controller_account_gate_basis
Private Account Authority current basis. account_binding_default is stable absence or the exact initial active binding record; account_status_record binds the original immutable signed AccountStatusRecord current head. It is not an Event, RealmCommit or Station checkpoint, and the record body remains private.
oneOf · oneOf[0] · …
recursion truncated at depth 8; see source schema for full shape
oneOf · oneOf[1] · …
recursion truncated at depth 8; see source schema for full shape
* basis_digest · string · $ref ./account-operations.schema.json#/$defs/sha256_digest
SHA-256(JCS({principal_id:gate.principal_id,accepted_id:gate.authority_id,status:gate.status,basis:gate.basis})), without a domain prefix. accepted_id is a derived preimage key equal to the original internal request agent_authority_id and owning AA/Station; it is not another wire member. Consumers MUST recompute exact equality from these public Gate fields, independently of signature verification; this does not authenticate the hidden original Record/current ledger head.
pattern: ^sha256:[0-9a-f]{64}$
* authority_id · string · $ref ./common-ids.schema.json#/$defs/did_core_id
Canonical stable DID-derived identity core. The lowercase DID method name follows ak:did_core:, and the remaining method-adapter-defined core is opaque to generic consumers. The did:web v1 adapter uses the complete canonical method-specific-id, never a digest or truncated host. Principal-core and service-core equality is byte-for-byte equality of the complete did_core_id. Event actor and Realm membership equality instead use the complete closed ActorId, and account-scoped equality uses the complete AccountId; neither may be reduced to a principal core. A did_core_id is not a DID and cannot be resolved without a did or AuthenticatedServiceResolution.
pattern: ^ak:did_core:[a-z0-9]+:[^\s/?#]+$
* verification_method · string · $ref ./account-operations.schema.json#/$defs/did_url
pattern: ^did:[a-z0-9]+:[^\s#?]+#[A-Za-z0-9._:-]+$
* issued_at · string (date-time) · format=date-time · $ref ./time.schema.json#/$defs/timestamp
Canonical Arkret-owned absolute instant. UTC Z form with exactly three millisecond digits. Whole seconds MUST use .000Z; offsets, missing/finer fractions, lowercase separators, leap seconds, and invalid Gregorian calendar dates are forbidden. Shape validation by this pattern is supplemented by semantic date validation.
pattern: ^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\.[0-9]{3}Z$
* expires_at · string (date-time) · format=date-time · $ref ./time.schema.json#/$defs/timestamp
Canonical Arkret-owned absolute instant. UTC Z form with exactly three millisecond digits. Whole seconds MUST use .000Z; offsets, missing/finer fractions, lowercase separators, leap seconds, and invalid Gregorian calendar dates are forbidden. Shape validation by this pattern is supplemented by semantic date validation.
pattern: ^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\.[0-9]{3}Z$
* proof · object · $ref #/$defs/detached_jws
Local detached signature leaf of this file. The signing bytes are the registered domain separation label, a newline, then the JCS bytes of the enclosing object with this member jws removed; kind stays covered like every other closed member.
* kind · …
recursion truncated at depth 8; see source schema for full shape
* jws · …
recursion truncated at depth 8; see source schema for full shape
oneOf · oneOf[2] · object · $ref #/$defs/controller_account_gate_attestation_issue_request_body
Deployment-authenticated request an Agent Authority sends to obtain the Account Authority-owned controller gate. Caller identity comes only from the authenticated deployment relationship: the body carries no service resolution carrier, and a self-asserted DID, URL, bearer subject, public key or account-active boolean is a schema violation rather than an identity source.
* request_id · string · $ref ./account-operations.schema.json#/$defs/request_id
pattern: ^ak:request:[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
* principal_id · string · $ref ./common-ids.schema.json#/$defs/did_core_id
Canonical stable DID-derived identity core. The lowercase DID method name follows ak:did_core:, and the remaining method-adapter-defined core is opaque to generic consumers. The did:web v1 adapter uses the complete canonical method-specific-id, never a digest or truncated host. Principal-core and service-core equality is byte-for-byte equality of the complete did_core_id. Event actor and Realm membership equality instead use the complete closed ActorId, and account-scoped equality uses the complete AccountId; neither may be reduced to a principal core. A did_core_id is not a DID and cannot be resolved without a did or AuthenticatedServiceResolution.
pattern: ^ak:did_core:[a-z0-9]+:[^\s/?#]+$
* agent_authority_id · string · $ref ./common-ids.schema.json#/$defs/did_core_id
Canonical stable DID-derived identity core. The lowercase DID method name follows ak:did_core:, and the remaining method-adapter-defined core is opaque to generic consumers. The did:web v1 adapter uses the complete canonical method-specific-id, never a digest or truncated host. Principal-core and service-core equality is byte-for-byte equality of the complete did_core_id. Event actor and Realm membership equality instead use the complete closed ActorId, and account-scoped equality uses the complete AccountId; neither may be reduced to a principal core. A did_core_id is not a DID and cannot be resolved without a did or AuthenticatedServiceResolution.
pattern: ^ak:did_core:[a-z0-9]+:[^\s/?#]+$
oneOf · oneOf[3] · object · $ref #/$defs/controller_account_gate_attestation_issue_outcome
Byte-stable issuance result. A replay of the same request_id and canonical intent returns these original bytes; a different intent under the same request_id is a duplicate_conflict with zero issuance.
* request_id · string · $ref ./account-operations.schema.json#/$defs/request_id
pattern: ^ak:request:[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
* controller_account_gate_attestation · object · $ref #/$defs/controller_account_gate_attestation
Account Authority answer to one question: is the controller principal behind an Agent key authorization still eligible? Signed under ak.controller_account_gate.v1. Member order is byte-for-byte the binding_fields order of that domain_separations row; proof follows as the detached signature over exactly those bound members. It is privacy minimised by construction: a service-local account_id, a raw account typed current result or a caller-asserted active boolean is a schema violation, not an optional member.
allOf · allOf[0] · …
recursion truncated at depth 8; see source schema for full shape
allOf · allOf[1] · …
recursion truncated at depth 8; see source schema for full shape
* schema · …
recursion truncated at depth 8; see source schema for full shape
* principal_id · …
recursion truncated at depth 8; see source schema for full shape
* eligibility · …
recursion truncated at depth 8; see source schema for full shape
* status · …
recursion truncated at depth 8; see source schema for full shape
* basis · …
recursion truncated at depth 8; see source schema for full shape
* basis_digest · …
recursion truncated at depth 8; see source schema for full shape
* authority_id · …
recursion truncated at depth 8; see source schema for full shape
* verification_method · …
recursion truncated at depth 8; see source schema for full shape
* issued_at · …
recursion truncated at depth 8; see source schema for full shape
* expires_at · …
recursion truncated at depth 8; see source schema for full shape
* proof · …
recursion truncated at depth 8; see source schema for full shape
allOf · allOf[1] · object
context · const "ak.realm_commit_signature.v1"
enum: "ak.realm_commit_signature.v1"
* authority_transitions · array<$ref ./realm-authority-bundle.schema.json#/$defs/authority_transition>
items · object · $ref ./realm-authority-bundle.schema.json#/$defs/authority_transition
The Event must be ak.realm.governance_station.change in the Realm stream; all IDs and consecutive generations must match the handoff.
* change_event · object · $ref ./event-envelope.schema.json
Closed producer-signed Event. Shared persistent Events become final only when the current Realm governance Station issues a RealmCommit in the derived Realm, Circle, or Sidecar stream.
allOf · allOf[0] · ?
allOf · allOf[1] · ?
allOf · allOf[2] · ?
allOf · allOf[3] · ?
allOf · allOf[4] · ?
allOf · allOf[5] · $ref #/$defs/registered_admission_shape · $ref #/$defs/registered_admission_shape
allOf · allOf[6] · $ref #/$defs/registered_execution_shape · $ref #/$defs/registered_execution_shape
allOf · allOf[7] · ?
allOf · allOf[8] · ?
allOf · allOf[9] · ?
allOf · allOf[10] · ?
allOf · allOf[11] · ?
allOf · allOf[12] · ?
allOf · allOf[13] · ?
allOf · allOf[14] · ?
allOf · allOf[15] · ?
allOf · allOf[16] · ?
allOf · allOf[17] · ?
allOf · allOf[18] · ?
allOf · allOf[19] · ?
allOf · allOf[20] · ?
allOf · allOf[21] · ?
allOf · allOf[22] · ?
allOf · allOf[23] · ?
allOf · allOf[24] · ?
allOf · allOf[25] · ?
allOf · allOf[26] · ?
allOf · allOf[27] · ?
allOf · allOf[28] · ?
allOf · allOf[29] · ?
allOf · allOf[30] · ?
allOf · allOf[31] · ?
allOf · allOf[32] · ?
allOf · allOf[33] · ?
allOf · allOf[34] · ?
allOf · allOf[35] · ?
allOf · allOf[36] · ?
allOf · allOf[37] · ?
allOf · allOf[38] · ?
allOf · allOf[39] · ?
allOf · allOf[40] · ?
allOf · allOf[41] · ?
allOf · allOf[42] · ?
allOf · allOf[43] · ?
allOf · allOf[44] · ?
allOf · allOf[45] · ?
allOf · allOf[46] · ?
allOf · allOf[47] · ?
allOf · allOf[48] · ?
allOf · allOf[49] · ?
allOf · allOf[50] · ?
allOf · allOf[51] · ?
allOf · allOf[52] · ?
allOf · allOf[53] · ?
allOf · allOf[54] · ?
allOf · allOf[55] · ?
allOf · allOf[56] · ?
allOf · allOf[57] · ?
allOf · allOf[58] · ?
allOf · allOf[59] · ?
allOf · allOf[60] · ?
allOf · allOf[61] · ?
allOf · allOf[62] · ?
allOf · allOf[63] · ?
allOf · allOf[64] · ?
allOf · allOf[65] · ?
allOf · allOf[66] · ?
allOf · allOf[67] · ?
allOf · allOf[68] · ?
allOf · allOf[69] · ?
allOf · allOf[70] · ?
allOf · allOf[71] · ?
allOf · allOf[72] · ?
allOf · allOf[73] · ?
allOf · allOf[74] · ?
allOf · allOf[75] · ?
allOf · allOf[76] · ?
allOf · allOf[77] · ?
allOf · allOf[78] · ?
allOf · allOf[79] · ?
allOf · allOf[80] · ?
allOf · allOf[81] · ?
allOf · allOf[82] · ?
allOf · allOf[83] · ?
allOf · allOf[84] · ?
allOf · allOf[85] · ?
allOf · allOf[86] · ?
allOf · allOf[87] · ?
allOf · allOf[88] · ?
allOf · allOf[89] · ?
allOf · allOf[90] · ?
allOf · allOf[91] · ?
allOf · allOf[92] · ?
allOf · allOf[93] · ?
allOf · allOf[94] · ?
allOf · allOf[95] · ?
allOf · allOf[96] · ?
allOf · allOf[97] · ?
allOf · allOf[98] · ?
allOf · allOf[99] · ?
allOf · allOf[100] · ?
allOf · allOf[101] · ?
allOf · allOf[102] · ?
allOf · allOf[103] · ?
allOf · allOf[104] · ?
allOf · allOf[105] · ?
allOf · allOf[106] · ?
allOf · allOf[107] · ?
allOf · allOf[108] · ?
allOf · allOf[109] · ?
allOf · allOf[110] · ?
allOf · allOf[111] · ?
allOf · allOf[112] · ?
allOf · allOf[113] · ?
allOf · allOf[114] · ?
allOf · allOf[115] · ?
allOf · allOf[116] · ?
allOf · allOf[117] · ?
allOf · allOf[118] · ?
allOf · allOf[119] · ?
allOf · allOf[120] · ?
allOf · allOf[121] · ?
allOf · allOf[122] · ?
allOf · allOf[123] · ?
allOf · allOf[124] · ?
allOf · allOf[125] · ?
allOf · allOf[126] · ?
allOf · allOf[127] · ?
allOf · allOf[128] · ?
allOf · allOf[129] · ?
allOf · allOf[130] · ?
allOf · allOf[131] · ?
allOf · allOf[132] · ?
allOf · allOf[133] · ?
allOf · allOf[134] · ?
allOf · allOf[135] · ?
allOf · allOf[136] · ?
allOf · allOf[137] · ?
allOf · allOf[138] · ?
allOf · allOf[139] · ?
allOf · allOf[140] · ?
* event_id · string · $ref ./common-ids.schema.json#/$defs/event_id
Complete Arkret Event cryptographic identity. The suffix is the canonical unpadded Base64URL encoding of exactly 33 octets: fixed current-v1 suite code 0x01 followed by all 32 octets of the SHA-256 Event digest. Regex validation is only lexical; receivers MUST decode, require 33 octets, require byte 0 == 0x01, canonical re-encode, and verify the full digest before use. Other registered digest suites remain available only to the typed domains that explicitly select them and MUST NOT appear in Event IDs.
pattern: ^ak:event:[A-Za-z0-9_-]{44}$
* kind · string
Standard ak.* Event kinds MUST appear in artifacts/registry/event-kind-registry.json. State convergence is defined by the registered pure reducer over kind + payload; producers do not submit typed current result writes.
pattern: ^ak\.[a-z0-9_]+(\.[a-z0-9_]+)*$
realm_id · string · $ref ./common-ids.schema.json#/$defs/realm_id
Retyped ak.realm.create Event token. It therefore carries the same fixed current-v1 0x01/SHA-256 content-address identity and is not selected by Realm state.
pattern: ^ak:realm:[A-Za-z0-9_-]{44}$
* scope_ref · $ref #/$defs/scope_ref · $ref #/$defs/scope_ref
Required producer-signed security scope. The closed union is ordinary existing realm, circle, or native sidecar scope plus the create-only realm_genesis exception. It enters proof.event_digest and E2EE AAD. Reducers independently derive the exact scope from schema-validated payload and accepted references; missing dependencies, nonexistent scope, realm_id mismatch, omitted sidecar_id, substituting circle for sidecar, or any unequal field is fail closed. Sidecar domain Event kinds remain Extension-owned; recognizing this native security shape does not make Kernel interpret the Sidecar reducer. Exact product targets remain inside recipient-visible ciphertext.
* actor_id · oneOf[2] · $ref ./common-ids.schema.json#/$defs/actor_id
Complete protocol identity for an Event author or Realm member: account carries the exact AccountId for every Station-hosted principal; service identifies a service acting as itself. The discriminator is validated against accepted registration and admission evidence; it never authorizes itself. Account and service are distinct, and no comparison may fall back to a bare principal_id. Agent and integration classification, provisioning, controller binding and credential authorization are independently verified facts, not identity variants. Account actors at different Stations MUST NOT share or inherit authority merely because their principal_id, DID controller or signing key matches, including membership, capability, RealmCommit-signing and recovery authority.
oneOf · oneOf[0] · object
* kind · …
recursion truncated at depth 8; see source schema for full shape
* account_id · …
recursion truncated at depth 8; see source schema for full shape
oneOf · oneOf[1] · object
* kind · …
recursion truncated at depth 8; see source schema for full shape
* service_id · …
recursion truncated at depth 8; see source schema for full shape
executed_by · oneOf[2] · $ref ./common-ids.schema.json#/$defs/actor_id
Complete protocol identity for an Event author or Realm member: account carries the exact AccountId for every Station-hosted principal; service identifies a service acting as itself. The discriminator is validated against accepted registration and admission evidence; it never authorizes itself. Account and service are distinct, and no comparison may fall back to a bare principal_id. Agent and integration classification, provisioning, controller binding and credential authorization are independently verified facts, not identity variants. Account actors at different Stations MUST NOT share or inherit authority merely because their principal_id, DID controller or signing key matches, including membership, capability, RealmCommit-signing and recovery authority.
oneOf · oneOf[0] · object
* kind · …
recursion truncated at depth 8; see source schema for full shape
* account_id · …
recursion truncated at depth 8; see source schema for full shape
oneOf · oneOf[1] · object
* kind · …
recursion truncated at depth 8; see source schema for full shape
* service_id · …
recursion truncated at depth 8; see source schema for full shape
authorization_ref · oneOf[6]
Optional. Required when executed_by is present. It identifies an accepted Grant, delegation Event, DID-document delegation, or one of the closed profile-specific authority constants. The current governance Station evaluates the reference against the target stream's committed state.
oneOf · oneOf[0] · $ref #/$defs/grant_ref · $ref #/$defs/grant_ref
oneOf · oneOf[1] · $ref #/$defs/event_ref · $ref #/$defs/event_ref
oneOf · oneOf[2] · $ref #/$defs/did_delegation_ref · $ref #/$defs/did_delegation_ref
oneOf · oneOf[3] · $ref #/$defs/direct_conversation_participant_authority_ref · $ref #/$defs/direct_conversation_participant_authority_ref
oneOf · oneOf[4] · $ref #/$defs/direct_conversation_bootstrap_authority_ref · $ref #/$defs/direct_conversation_bootstrap_authority_ref
oneOf · oneOf[5] · $ref #/$defs/membership_compensation_delegation_ref · $ref #/$defs/membership_compensation_delegation_ref
applet_id · $ref #/$defs/applet_id · $ref #/$defs/applet_id
Optional signed Applet provenance. Required by ak.profile.applet_* when the Event is introduced by an Applet, Ghost Actor, bridge, or delegated applet path. Enters canonical event bytes and therefore is covered by proof.event_digest. When present, authorization_ref MUST also be present and resolve to a real active registration/capability grant binding this applet_id, registration_epoch, action and resource per zh/extensions/applet-integration.md sections 4, 8 and 11. Service-actor self-signature proves provenance but is not an authorization substitute. Capability-gated actions require a grant covering action/resource. For subject_only operations the referenced grant binds only the exact active install and cannot replace the subject signature, FSM or independent action authority. Service self-authored Events use ActorId.service; the install grant subject MUST be the same exact ActorId.service as its producer; hosting Station and effective scope are verified separately without coercing a Service into an account variant.
external_ref · $ref #/$defs/external_ref · $ref #/$defs/external_ref
Optional signed external provenance reference for Applet / bridge-originated Events. It is covered by event_digest and MUST NOT be carried only in unsigned when used for loop prevention, audit, or external-message idempotency. Must not contain unauthorized external plaintext.
* created_at · $ref #/$defs/canonical_event_timestamp · $ref #/$defs/canonical_event_timestamp
semantic_refs · array<$ref #/$defs/semantic_ref>
Optional semantic refs with role. Omit when there are no semantic references; an explicitly empty array is not canonical. Admission selectors determine any required references. PCR policy recovery has no DID-root anchor reference; its policy/session/replacement-key authority is verified separately.
items · $ref #/$defs/semantic_ref · $ref #/$defs/semantic_ref
* payload · object
* producer_proof · $ref #/$defs/event_proof · $ref #/$defs/event_proof
The Event's sole portable producer proof. Storage receipts are separate objects and never authorize this Event. producer_proof and unsigned remain outside the canonical Event digest. Exact retries preserve the verified producer proof.
* change_commit · object · $ref ./realm-commit.schema.json
The only shared Realm acceptance, ordering, finality and replication record. Every visibility scope has an authority-signed predecessor chain.
allOf · allOf[0] · ?
* commit_id · string · $ref ./common-ids.schema.json#/$defs/realm_commit_id
Content-addressed identity of a closed unsigned RealmCommit body. The suffix uses the fixed v1 digest suite and the same canonical 33-octet token encoding as Event IDs.
pattern: ^ak:realm_commit:[A-Za-z0-9_-]{44}$
* realm_id · string · $ref ./common-ids.schema.json#/$defs/realm_id
Retyped ak.realm.create Event token. It therefore carries the same fixed current-v1 0x01/SHA-256 content-address identity and is not selected by Realm state.
pattern: ^ak:realm:[A-Za-z0-9_-]{44}$
* stream_ref · $ref #/$defs/stream_ref · $ref #/$defs/stream_ref
* stream_position · integer
* previous_commit_ref · oneOf[2]
oneOf · oneOf[0] · string · $ref ./common-ids.schema.json#/$defs/realm_commit_id
Content-addressed identity of a closed unsigned RealmCommit body. The suffix uses the fixed v1 digest suite and the same canonical 33-octet token encoding as Event IDs.
pattern: ^ak:realm_commit:[A-Za-z0-9_-]{44}$
oneOf · oneOf[1] · null
* event_ref · string · $ref ./common-ids.schema.json#/$defs/event_id
Complete Arkret Event cryptographic identity. The suffix is the canonical unpadded Base64URL encoding of exactly 33 octets: fixed current-v1 suite code 0x01 followed by all 32 octets of the SHA-256 Event digest. Regex validation is only lexical; receivers MUST decode, require 33 octets, require byte 0 == 0x01, canonical re-encode, and verify the full digest before use. Other registered digest suites remain available only to the typed domains that explicitly select them and MUST NOT appear in Event IDs.
pattern: ^ak:event:[A-Za-z0-9_-]{44}$
* governance_generation · integer
Tenure counter of the governing Station that signed this Commit; it advances only on an accepted ak.realm.governance_station.change. It is not the Realm authority-root delegation generation of typed-current-result.schema.json#/$defs/realm_authority_root_value, which advances only on ak.realm.authority.reset.
* authority_ref · oneOf[2]
oneOf · oneOf[0] · string · $ref ./common-ids.schema.json#/$defs/event_id
Complete Arkret Event cryptographic identity. The suffix is the canonical unpadded Base64URL encoding of exactly 33 octets: fixed current-v1 suite code 0x01 followed by all 32 octets of the SHA-256 Event digest. Regex validation is only lexical; receivers MUST decode, require 33 octets, require byte 0 == 0x01, canonical re-encode, and verify the full digest before use. Other registered digest suites remain available only to the typed domains that explicitly select them and MUST NOT appear in Event IDs.
pattern: ^ak:event:[A-Za-z0-9_-]{44}$
oneOf · oneOf[1] · string · $ref ./common-ids.schema.json#/$defs/realm_authority_handoff_id
Content-addressed identity of one closed old-to-new Realm authority handoff.
pattern: ^ak:realm_authority_handoff:[A-Za-z0-9_-]{44}$
* committed_at · string (date-time) · format=date-time · $ref ./time.schema.json#/$defs/timestamp
Canonical Arkret-owned absolute instant. UTC Z form with exactly three millisecond digits. Whole seconds MUST use .000Z; offsets, missing/finer fractions, lowercase separators, leap seconds, and invalid Gregorian calendar dates are forbidden. Shape validation by this pattern is supplemented by semantic date validation.
pattern: ^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\.[0-9]{3}Z$
producer_signer_fact_digest · string · $ref ./account-operations.schema.json#/$defs/sha256_digest
Fixed SHA256 over RFC8785 JCS of the original immutable Human or Applet Service producer fact, excluding the outer target coordinate. Freeze before Commit identity/signature and retain with acceptance; exact replay, replica and handoff preserve this original digest.
pattern: ^sha256:[0-9a-f]{64}$
* signature · allOf[2] · $ref ./detached-object-signature.schema.json#/$defs/realm_commit_signature
allOf · allOf[0] · oneOf[4] · $ref #
Portable Agent signer evidence carried to a Station or peer verifier: the Agent Authority state evidence over one exact confirmed RealmCommit state, and the Account Authority controller gate. Both objects anchor their own local detached signature under their own registered domain separation; neither reuses the shared Event proof leaf. Agent and controller private keys, MLS private state, service-local account_id and raw account typed current results never appear here.
oneOf · oneOf[0] · …
recursion truncated at depth 8; see source schema for full shape
oneOf · oneOf[1] · …
recursion truncated at depth 8; see source schema for full shape
oneOf · oneOf[2] · …
recursion truncated at depth 8; see source schema for full shape
oneOf · oneOf[3] · …
recursion truncated at depth 8; see source schema for full shape
allOf · allOf[1] · object
context · …
recursion truncated at depth 8; see source schema for full shape
* handoff · object · $ref ./realm-authority-handoff.schema.json
Closed planned transfer from one Realm authority generation to its unique successor. Both service signatures and the controller-authored change Event are required; this is not a quorum vote.
* handoff_id · string · $ref ./common-ids.schema.json#/$defs/realm_authority_handoff_id
Content-addressed identity of one closed old-to-new Realm authority handoff.
pattern: ^ak:realm_authority_handoff:[A-Za-z0-9_-]{44}$
* realm_id · string · $ref ./common-ids.schema.json#/$defs/realm_id
Retyped ak.realm.create Event token. It therefore carries the same fixed current-v1 0x01/SHA-256 content-address identity and is not selected by Realm state.
pattern: ^ak:realm:[A-Za-z0-9_-]{44}$
* from_generation · integer
* to_generation · integer
* from_service_id · string · $ref ./common-ids.schema.json#/$defs/did_core_id
Canonical stable DID-derived identity core. The lowercase DID method name follows ak:did_core:, and the remaining method-adapter-defined core is opaque to generic consumers. The did:web v1 adapter uses the complete canonical method-specific-id, never a digest or truncated host. Principal-core and service-core equality is byte-for-byte equality of the complete did_core_id. Event actor and Realm membership equality instead use the complete closed ActorId, and account-scoped equality uses the complete AccountId; neither may be reduced to a principal core. A did_core_id is not a DID and cannot be resolved without a did or AuthenticatedServiceResolution.
pattern: ^ak:did_core:[a-z0-9]+:[^\s/?#]+$
* to_service_id · string · $ref ./common-ids.schema.json#/$defs/did_core_id
Canonical stable DID-derived identity core. The lowercase DID method name follows ak:did_core:, and the remaining method-adapter-defined core is opaque to generic consumers. The did:web v1 adapter uses the complete canonical method-specific-id, never a digest or truncated host. Principal-core and service-core equality is byte-for-byte equality of the complete did_core_id. Event actor and Realm membership equality instead use the complete closed ActorId, and account-scoped equality uses the complete AccountId; neither may be reduced to a principal core. A did_core_id is not a DID and cannot be resolved without a did or AuthenticatedServiceResolution.
pattern: ^ak:did_core:[a-z0-9]+:[^\s/?#]+$
* final_stream_heads_digest · string · $ref ./event-envelope.schema.json#/$defs/digest
pattern: ^(sha256|blake3):[0-9a-f]{64}$
historical_signer_facts_digest · string · $ref ./account-operations.schema.json#/$defs/sha256_digest
New handoffs require SHA256(JCS complete sorted {target,producer_signer_fact} inventory); existing_original-only schema absence cannot transfer new digest-bearing history. Both original handoff contexts sign it.
pattern: ^sha256:[0-9a-f]{64}$
* snapshot_ref · string · $ref ./common-ids.schema.json#/$defs/realm_snapshot_id
Content-addressed identity of an authority-signed typed Realm snapshot.
pattern: ^ak:realm_snapshot:[A-Za-z0-9_-]{44}$
* change_event_ref · string · $ref ./common-ids.schema.json#/$defs/event_id
Complete Arkret Event cryptographic identity. The suffix is the canonical unpadded Base64URL encoding of exactly 33 octets: fixed current-v1 suite code 0x01 followed by all 32 octets of the SHA-256 Event digest. Regex validation is only lexical; receivers MUST decode, require 33 octets, require byte 0 == 0x01, canonical re-encode, and verify the full digest before use. Other registered digest suites remain available only to the typed domains that explicitly select them and MUST NOT appear in Event IDs.
pattern: ^ak:event:[A-Za-z0-9_-]{44}$
* change_commit_id · string · $ref ./common-ids.schema.json#/$defs/realm_commit_id
Content-addressed identity of a closed unsigned RealmCommit body. The suffix uses the fixed v1 digest suite and the same canonical 33-octet token encoding as Event IDs.
pattern: ^ak:realm_commit:[A-Za-z0-9_-]{44}$
* old_authority_signature · allOf[2] · $ref ./detached-object-signature.schema.json#/$defs/realm_authority_handoff_old_signature
allOf · allOf[0] · oneOf[4] · $ref #
Portable Agent signer evidence carried to a Station or peer verifier: the Agent Authority state evidence over one exact confirmed RealmCommit state, and the Account Authority controller gate. Both objects anchor their own local detached signature under their own registered domain separation; neither reuses the shared Event proof leaf. Agent and controller private keys, MLS private state, service-local account_id and raw account typed current results never appear here.
oneOf · oneOf[0] · …
recursion truncated at depth 8; see source schema for full shape
oneOf · oneOf[1] · …
recursion truncated at depth 8; see source schema for full shape
oneOf · oneOf[2] · …
recursion truncated at depth 8; see source schema for full shape
oneOf · oneOf[3] · …
recursion truncated at depth 8; see source schema for full shape
allOf · allOf[1] · object
context · …
recursion truncated at depth 8; see source schema for full shape
* new_authority_acceptance_signature · allOf[2] · $ref ./detached-object-signature.schema.json#/$defs/realm_authority_handoff_new_acceptance_signature
allOf · allOf[0] · oneOf[4] · $ref #
Portable Agent signer evidence carried to a Station or peer verifier: the Agent Authority state evidence over one exact confirmed RealmCommit state, and the Account Authority controller gate. Both objects anchor their own local detached signature under their own registered domain separation; neither reuses the shared Event proof leaf. Agent and controller private keys, MLS private state, service-local account_id and raw account typed current results never appear here.
oneOf · oneOf[0] · …
recursion truncated at depth 8; see source schema for full shape
oneOf · oneOf[1] · …
recursion truncated at depth 8; see source schema for full shape
oneOf · oneOf[2] · …
recursion truncated at depth 8; see source schema for full shape
oneOf · oneOf[3] · …
recursion truncated at depth 8; see source schema for full shape
allOf · allOf[1] · object
context · …
recursion truncated at depth 8; see source schema for full shape
* signer_histories · array<$ref ./identity-resolution.schema.json#/$defs/authenticated_service_resolution>
items · object · $ref ./identity-resolution.schema.json#/$defs/authenticated_service_resolution
Public method-native service evidence. All route coordinates are derived from the independently verified DID state; this carrier creates no signed address history.
* service_id · string · $ref ./common-ids.schema.json#/$defs/did_core_id
Canonical stable DID-derived identity core. The lowercase DID method name follows ak:did_core:, and the remaining method-adapter-defined core is opaque to generic consumers. The did:web v1 adapter uses the complete canonical method-specific-id, never a digest or truncated host. Principal-core and service-core equality is byte-for-byte equality of the complete did_core_id. Event actor and Realm membership equality instead use the complete closed ActorId, and account-scoped equality uses the complete AccountId; neither may be reduced to a principal core. A did_core_id is not a DID and cannot be resolved without a did or AuthenticatedServiceResolution.
pattern: ^ak:did_core:[a-z0-9]+:[^\s/?#]+$
* service_kind · string
pattern: ^[a-z][a-z0-9_]{0,63}$
* method_history_evidence · $ref #/$defs/method_history_evidence · $ref #/$defs/method_history_evidence
* normalized_did_document · object · $ref ./did-binding-contracts.schema.json#/$defs/normalized_did_document
The sole canonical normalized DID Document projection used by document_digest. It retains every v1-normative member, including also_known_as and metadata.primary_handle, and losslessly retains unknown extensions. contexts preserves source order because JSON-LD context order can affect interpretation; every other set-like array is sorted in unsigned UTF-8 order with duplicates rejected. Duplicate/conflicting source properties, ids, relationship entries, services, metadata keys, or extension names fail before digesting. document_digest is exactly sha256:lowercase_hex(SHA-256(RFC8785_JCS(this object))); raw resolver bytes use raw_document_digest and no third DID-document digest name exists.
* did · $ref #/$defs/did · $ref #/$defs/did
* contexts · array<oneOf[2]>
items · oneOf[2]
oneOf · oneOf[0] · …
recursion truncated at depth 8; see source schema for full shape
oneOf · oneOf[1] · …
recursion truncated at depth 8; see source schema for full shape
* controller_dids · array<$ref #/$defs/did>
items · $ref #/$defs/did · $ref #/$defs/did
* also_known_as · array<string>
items · string
Canonical URI validated by the DID resolver before projection; this array may contain non-network schemes such as acct: and therefore is not a URL field.
pattern: ^[A-Za-z][A-Za-z0-9+.-]*:[^\s]+$
* verification_methods · array<$ref #/$defs/normalized_did_verification_method>
items · $ref #/$defs/normalized_did_verification_method · $ref #/$defs/normalized_did_verification_method
* authentication · $ref #/$defs/normalized_did_relationship · $ref #/$defs/normalized_did_relationship
* assertion_methods · $ref #/$defs/normalized_did_relationship · $ref #/$defs/normalized_did_relationship
* key_agreements · $ref #/$defs/normalized_did_relationship · $ref #/$defs/normalized_did_relationship
* capability_invocations · $ref #/$defs/normalized_did_relationship · $ref #/$defs/normalized_did_relationship
* capability_delegations · $ref #/$defs/normalized_did_relationship · $ref #/$defs/normalized_did_relationship
* services · array<$ref #/$defs/normalized_did_service>
items · $ref #/$defs/normalized_did_service · $ref #/$defs/normalized_did_service
* metadata · $ref #/$defs/normalized_did_document_metadata · $ref #/$defs/normalized_did_document_metadata
* extensions · array<$ref #/$defs/normalized_did_document_extension>
items · $ref #/$defs/normalized_did_document_extension · $ref #/$defs/normalized_did_document_extension
* signer_dependencies · array<$ref #/$defs/agent_signer_dependency>
Exactly the recursive producer proof dependencies used by genesis, authorization, lifecycle and authority transition Events. Sorted by signer_resolution_evidence_ref UTF-8 bytes. Missing ref is unresolved; duplicate ref, conflicting bytes, cycle or surplus is rejected.
items · oneOf[3] · $ref #/$defs/agent_signer_dependency
oneOf · oneOf[0] · object
Ref is the JCS SHA-256 content address of account_device_signer_evidence. Validate the original accepted producer at its accepted_at, not against a newly issued current device projection.
* signer_resolution_evidence_ref · string · $ref ./authenticated-signer-resolution-evidence.schema.json#/$defs/signer_evidence_ref
pattern: ^ak:signer_evidence:sha256:[0-9a-f]{64}$
* account_device_signer_evidence · object · $ref ./account-device-signer-evidence.schema.json
Immutable account_device evidence for a human device producer. The origin Station persists this complete object before returning a keys/query row or before sending it as authority_forward producer_device_evidence, which it signs fresh for every forwarding attempt; the signer_evidence_ref is SHA-256(RFC 8785 JCS of this object). This sibling does not add a branch or member to AuthenticatedSignerResolutionEvidence. Conformance vector ak.vector.device.account_device_signer_evidence.v1 checks the exact closure and negative mutations.
* device_projection_attestation · object · $ref ./keys-operations.schema.json#/$defs/device_projection_attestation
Complete origin-Station-signed device projection attestation. The detached proof signs the ak.device_projection_attestation_proof.v1 transcript; proof.created_at MUST equal attestation.attested_at.
* attestation · $ref #/$defs/device_projection_attestation_core · $ref #/$defs/device_projection_attestation_core
* proof · object · $ref ./principal-operations.schema.json#/$defs/signature
* verification_method · …
recursion truncated at depth 8; see source schema for full shape
* created_at · …
recursion truncated at depth 8; see source schema for full shape
* jws · …
recursion truncated at depth 8; see source schema for full shape
* service_resolution · object · $ref ./identity-resolution.schema.json#/$defs/authenticated_service_resolution
Public method-native service evidence. All route coordinates are derived from the independently verified DID state; this carrier creates no signed address history.
* service_id · string · $ref ./common-ids.schema.json#/$defs/did_core_id
Canonical stable DID-derived identity core. The lowercase DID method name follows ak:did_core:, and the remaining method-adapter-defined core is opaque to generic consumers. The did:web v1 adapter uses the complete canonical method-specific-id, never a digest or truncated host. Principal-core and service-core equality is byte-for-byte equality of the complete did_core_id. Event actor and Realm membership equality instead use the complete closed ActorId, and account-scoped equality uses the complete AccountId; neither may be reduced to a principal core. A did_core_id is not a DID and cannot be resolved without a did or AuthenticatedServiceResolution.
pattern: ^ak:did_core:[a-z0-9]+:[^\s/?#]+$
* service_kind · string
pattern: ^[a-z][a-z0-9_]{0,63}$
* method_history_evidence · $ref #/$defs/method_history_evidence · $ref #/$defs/method_history_evidence
* normalized_did_document · object · $ref ./did-binding-contracts.schema.json#/$defs/normalized_did_document
The sole canonical normalized DID Document projection used by document_digest. It retains every v1-normative member, including also_known_as and metadata.primary_handle, and losslessly retains unknown extensions. contexts preserves source order because JSON-LD context order can affect interpretation; every other set-like array is sorted in unsigned UTF-8 order with duplicates rejected. Duplicate/conflicting source properties, ids, relationship entries, services, metadata keys, or extension names fail before digesting. document_digest is exactly sha256:lowercase_hex(SHA-256(RFC8785_JCS(this object))); raw resolver bytes use raw_document_digest and no third DID-document digest name exists.
* did · …
recursion truncated at depth 8; see source schema for full shape
* contexts · …
recursion truncated at depth 8; see source schema for full shape
* controller_dids · …
recursion truncated at depth 8; see source schema for full shape
* also_known_as · …
recursion truncated at depth 8; see source schema for full shape
* verification_methods · …
recursion truncated at depth 8; see source schema for full shape
* authentication · …
recursion truncated at depth 8; see source schema for full shape
* assertion_methods · …
recursion truncated at depth 8; see source schema for full shape
* key_agreements · …
recursion truncated at depth 8; see source schema for full shape
* capability_invocations · …
recursion truncated at depth 8; see source schema for full shape
* capability_delegations · …
recursion truncated at depth 8; see source schema for full shape
* services · …
recursion truncated at depth 8; see source schema for full shape
* metadata · …
recursion truncated at depth 8; see source schema for full shape
* extensions · …
recursion truncated at depth 8; see source schema for full shape
oneOf · oneOf[1] · object
Ref addresses authenticated_signer_evidence alone. Verify its exact method/key/subject using the carried method-native history at the original accepted-at instant.
* signer_resolution_evidence_ref · string · $ref ./authenticated-signer-resolution-evidence.schema.json#/$defs/signer_evidence_ref
pattern: ^ak:signer_evidence:sha256:[0-9a-f]{64}$
* authenticated_signer_evidence · allOf[2] · $ref ./authenticated-signer-resolution-evidence.schema.json#/$defs/service_signer_evidence
allOf · allOf[0] · $ref #/$defs/base · $ref #/$defs/base
allOf · allOf[1] · object
signer_kind · const "service"
enum: "service"
* service_resolution · object · $ref ./identity-resolution.schema.json#/$defs/authenticated_service_resolution
Public method-native service evidence. All route coordinates are derived from the independently verified DID state; this carrier creates no signed address history.
* service_id · string · $ref ./common-ids.schema.json#/$defs/did_core_id
Canonical stable DID-derived identity core. The lowercase DID method name follows ak:did_core:, and the remaining method-adapter-defined core is opaque to generic consumers. The did:web v1 adapter uses the complete canonical method-specific-id, never a digest or truncated host. Principal-core and service-core equality is byte-for-byte equality of the complete did_core_id. Event actor and Realm membership equality instead use the complete closed ActorId, and account-scoped equality uses the complete AccountId; neither may be reduced to a principal core. A did_core_id is not a DID and cannot be resolved without a did or AuthenticatedServiceResolution.
pattern: ^ak:did_core:[a-z0-9]+:[^\s/?#]+$
* service_kind · string
pattern: ^[a-z][a-z0-9_]{0,63}$
* method_history_evidence · $ref #/$defs/method_history_evidence · $ref #/$defs/method_history_evidence
* normalized_did_document · object · $ref ./did-binding-contracts.schema.json#/$defs/normalized_did_document
The sole canonical normalized DID Document projection used by document_digest. It retains every v1-normative member, including also_known_as and metadata.primary_handle, and losslessly retains unknown extensions. contexts preserves source order because JSON-LD context order can affect interpretation; every other set-like array is sorted in unsigned UTF-8 order with duplicates rejected. Duplicate/conflicting source properties, ids, relationship entries, services, metadata keys, or extension names fail before digesting. document_digest is exactly sha256:lowercase_hex(SHA-256(RFC8785_JCS(this object))); raw resolver bytes use raw_document_digest and no third DID-document digest name exists.
* did · $ref #/$defs/did · $ref #/$defs/did
* contexts · array<oneOf[2]>
items · …
recursion truncated at depth 8; see source schema for full shape
* controller_dids · array<$ref #/$defs/did>
items · …
recursion truncated at depth 8; see source schema for full shape
* also_known_as · array<string>
items · …
recursion truncated at depth 8; see source schema for full shape
* verification_methods · array<$ref #/$defs/normalized_did_verification_method>
items · …
recursion truncated at depth 8; see source schema for full shape
* authentication · $ref #/$defs/normalized_did_relationship · $ref #/$defs/normalized_did_relationship
* assertion_methods · $ref #/$defs/normalized_did_relationship · $ref #/$defs/normalized_did_relationship
* key_agreements · $ref #/$defs/normalized_did_relationship · $ref #/$defs/normalized_did_relationship
* capability_invocations · $ref #/$defs/normalized_did_relationship · $ref #/$defs/normalized_did_relationship
* capability_delegations · $ref #/$defs/normalized_did_relationship · $ref #/$defs/normalized_did_relationship
* services · array<$ref #/$defs/normalized_did_service>
items · …
recursion truncated at depth 8; see source schema for full shape
* metadata · $ref #/$defs/normalized_did_document_metadata · $ref #/$defs/normalized_did_document_metadata
* extensions · array<$ref #/$defs/normalized_did_document_extension>
items · …
recursion truncated at depth 8; see source schema for full shape
oneOf · oneOf[2] · object
Ref addresses agent_evidence.authenticated_signer_evidence alone. Recursively validate the complete accepted-at Agent closure; repeated refs are deduplicated and cycles rejected.
* signer_resolution_evidence_ref · string · $ref ./authenticated-signer-resolution-evidence.schema.json#/$defs/signer_evidence_ref
pattern: ^ak:signer_evidence:sha256:[0-9a-f]{64}$
* agent_evidence · object · $ref #/$defs/agent_producer_evidence
authority_forward Agent sibling. The retained producer signer_resolution_evidence_ref addresses the six-member authenticated_signer_evidence alone; authority state and controller gate are independent signed siblings. authority_resolution supplies method-native history for the state attestation and controller gate at their respective observation times. It carries no participation selection. Canonical persistence restores compact state first.
* authenticated_signer_evidence · allOf[2] · $ref ./authenticated-signer-resolution-evidence.schema.json#/$defs/agent_signer_evidence
allOf · allOf[0] · $ref #/$defs/base · $ref #/$defs/base
allOf · allOf[1] · object
signer_kind · …
recursion truncated at depth 8; see source schema for full shape
* agent_authority_state_evidence · object · $ref #/$defs/agent_authority_state_evidence
Portable Agent Authority state evidence. state_digest is the RFC 8785 JCS SHA-256 of state alone, so a compact transport root MAY omit state when the receiver already holds that exact digest fully verified; the receiver MUST restore the complete state before recomputing any digest or verifying any signature.
* schema · const "ak.schema.agent_authority_state_evidence.v1"
enum: "ak.schema.agent_authority_state_evidence.v1"
state · object · $ref #/$defs/agent_authority_state
One exact confirmed RealmCommit state of the Agent Principal Control Realm, carrying the complete PCR genesis Event, key authorization Event, key authorization, key state witness and Agent lifecycle witness together.
* authority_id · …
recursion truncated at depth 8; see source schema for full shape
* agent_id · …
recursion truncated at depth 8; see source schema for full shape
* source_commit_id · …
recursion truncated at depth 8; see source schema for full shape
* pcr_genesis_event · …
recursion truncated at depth 8; see source schema for full shape
* key_authorization_event · …
recursion truncated at depth 8; see source schema for full shape
* authorization · …
recursion truncated at depth 8; see source schema for full shape
* key_state_witness · …
recursion truncated at depth 8; see source schema for full shape
* agent_lifecycle_witness · …
recursion truncated at depth 8; see source schema for full shape
* commit_lineages · …
recursion truncated at depth 8; see source schema for full shape
* commits · …
recursion truncated at depth 8; see source schema for full shape
* authority_bundle · …
recursion truncated at depth 8; see source schema for full shape
* signer_dependencies · …
recursion truncated at depth 8; see source schema for full shape
* producer_bindings · …
recursion truncated at depth 8; see source schema for full shape
* state_digest · string · $ref ./account-operations.schema.json#/$defs/sha256_digest
pattern: ^sha256:[0-9a-f]{64}$
* attestation · object · $ref #/$defs/agent_authority_state_attestation
The single Agent Authority state signature, made under ak.agent_authority_state_evidence.v1 by the authoritative service DID of that PCR. It binds the exact authority, verification method, state digest and observation window verbatim; the controller proof, the Account Authority gate and the RealmCommit signatures each stay separate.
* authority_id · …
recursion truncated at depth 8; see source schema for full shape
* verification_method · …
recursion truncated at depth 8; see source schema for full shape
* state_digest · …
recursion truncated at depth 8; see source schema for full shape
* issued_at · …
recursion truncated at depth 8; see source schema for full shape
* expires_at · …
recursion truncated at depth 8; see source schema for full shape
* proof · …
recursion truncated at depth 8; see source schema for full shape
* controller_account_gate_attestation · object · $ref #/$defs/controller_account_gate_attestation
Account Authority answer to one question: is the controller principal behind an Agent key authorization still eligible? Signed under ak.controller_account_gate.v1. Member order is byte-for-byte the binding_fields order of that domain_separations row; proof follows as the detached signature over exactly those bound members. It is privacy minimised by construction: a service-local account_id, a raw account typed current result or a caller-asserted active boolean is a schema violation, not an optional member.
allOf · allOf[0] · ?
status active holds exactly when eligibility is active; every other status is inactive.
allOf · allOf[1] · ?
Stable absence or exact initial binding Active is the only default basis. Every non-active status, and restored Active after any successor, requires the original signed record basis.
* schema · const "ak.schema.controller_account_gate_attestation.v1"
enum: "ak.schema.controller_account_gate_attestation.v1"
* principal_id · string · $ref ./common-ids.schema.json#/$defs/did_core_id
Canonical stable DID-derived identity core. The lowercase DID method name follows ak:did_core:, and the remaining method-adapter-defined core is opaque to generic consumers. The did:web v1 adapter uses the complete canonical method-specific-id, never a digest or truncated host. Principal-core and service-core equality is byte-for-byte equality of the complete did_core_id. Event actor and Realm membership equality instead use the complete closed ActorId, and account-scoped equality uses the complete AccountId; neither may be reduced to a principal core. A did_core_id is not a DID and cannot be resolved without a did or AuthenticatedServiceResolution.
pattern: ^ak:did_core:[a-z0-9]+:[^\s/?#]+$
* eligibility · string (enum)
The only decision a consumer acts on. It is active if and only if status is active.
enum: "active" "inactive"
* status · string (enum) · $ref ./account-operations.schema.json#/$defs/account_state
Account lifecycle projection; mirrors zh/identity/account-lifecycle.md §3.
enum: "active" "soft_logged_out" "locked" "suspended" "deactivated" "erasure_pending"
* basis · oneOf[2] · $ref #/$defs/controller_account_gate_basis
Private Account Authority current basis. account_binding_default is stable absence or the exact initial active binding record; account_status_record binds the original immutable signed AccountStatusRecord current head. It is not an Event, RealmCommit or Station checkpoint, and the record body remains private.
oneOf · oneOf[0] · …
recursion truncated at depth 8; see source schema for full shape
oneOf · oneOf[1] · …
recursion truncated at depth 8; see source schema for full shape
* basis_digest · string · $ref ./account-operations.schema.json#/$defs/sha256_digest
SHA-256(JCS({principal_id:gate.principal_id,accepted_id:gate.authority_id,status:gate.status,basis:gate.basis})), without a domain prefix. accepted_id is a derived preimage key equal to the original internal request agent_authority_id and owning AA/Station; it is not another wire member. Consumers MUST recompute exact equality from these public Gate fields, independently of signature verification; this does not authenticate the hidden original Record/current ledger head.
pattern: ^sha256:[0-9a-f]{64}$
* authority_id · string · $ref ./common-ids.schema.json#/$defs/did_core_id
Canonical stable DID-derived identity core. The lowercase DID method name follows ak:did_core:, and the remaining method-adapter-defined core is opaque to generic consumers. The did:web v1 adapter uses the complete canonical method-specific-id, never a digest or truncated host. Principal-core and service-core equality is byte-for-byte equality of the complete did_core_id. Event actor and Realm membership equality instead use the complete closed ActorId, and account-scoped equality uses the complete AccountId; neither may be reduced to a principal core. A did_core_id is not a DID and cannot be resolved without a did or AuthenticatedServiceResolution.
pattern: ^ak:did_core:[a-z0-9]+:[^\s/?#]+$
* verification_method · string · $ref ./account-operations.schema.json#/$defs/did_url
pattern: ^did:[a-z0-9]+:[^\s#?]+#[A-Za-z0-9._:-]+$
* issued_at · string (date-time) · format=date-time · $ref ./time.schema.json#/$defs/timestamp
Canonical Arkret-owned absolute instant. UTC Z form with exactly three millisecond digits. Whole seconds MUST use .000Z; offsets, missing/finer fractions, lowercase separators, leap seconds, and invalid Gregorian calendar dates are forbidden. Shape validation by this pattern is supplemented by semantic date validation.
pattern: ^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\.[0-9]{3}Z$
* expires_at · string (date-time) · format=date-time · $ref ./time.schema.json#/$defs/timestamp
Canonical Arkret-owned absolute instant. UTC Z form with exactly three millisecond digits. Whole seconds MUST use .000Z; offsets, missing/finer fractions, lowercase separators, leap seconds, and invalid Gregorian calendar dates are forbidden. Shape validation by this pattern is supplemented by semantic date validation.
pattern: ^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\.[0-9]{3}Z$
* proof · object · $ref #/$defs/detached_jws
Local detached signature leaf of this file. The signing bytes are the registered domain separation label, a newline, then the JCS bytes of the enclosing object with this member jws removed; kind stays covered like every other closed member.
* kind · …
recursion truncated at depth 8; see source schema for full shape
* jws · …
recursion truncated at depth 8; see source schema for full shape
* authority_resolution · object · $ref ./identity-resolution.schema.json#/$defs/authenticated_service_resolution
Public method-native service evidence. All route coordinates are derived from the independently verified DID state; this carrier creates no signed address history.
* service_id · string · $ref ./common-ids.schema.json#/$defs/did_core_id
Canonical stable DID-derived identity core. The lowercase DID method name follows ak:did_core:, and the remaining method-adapter-defined core is opaque to generic consumers. The did:web v1 adapter uses the complete canonical method-specific-id, never a digest or truncated host. Principal-core and service-core equality is byte-for-byte equality of the complete did_core_id. Event actor and Realm membership equality instead use the complete closed ActorId, and account-scoped equality uses the complete AccountId; neither may be reduced to a principal core. A did_core_id is not a DID and cannot be resolved without a did or AuthenticatedServiceResolution.
pattern: ^ak:did_core:[a-z0-9]+:[^\s/?#]+$
* service_kind · string
pattern: ^[a-z][a-z0-9_]{0,63}$
* method_history_evidence · $ref #/$defs/method_history_evidence · $ref #/$defs/method_history_evidence
* normalized_did_document · object · $ref ./did-binding-contracts.schema.json#/$defs/normalized_did_document
The sole canonical normalized DID Document projection used by document_digest. It retains every v1-normative member, including also_known_as and metadata.primary_handle, and losslessly retains unknown extensions. contexts preserves source order because JSON-LD context order can affect interpretation; every other set-like array is sorted in unsigned UTF-8 order with duplicates rejected. Duplicate/conflicting source properties, ids, relationship entries, services, metadata keys, or extension names fail before digesting. document_digest is exactly sha256:lowercase_hex(SHA-256(RFC8785_JCS(this object))); raw resolver bytes use raw_document_digest and no third DID-document digest name exists.
* did · …
recursion truncated at depth 8; see source schema for full shape
* contexts · …
recursion truncated at depth 8; see source schema for full shape
* controller_dids · …
recursion truncated at depth 8; see source schema for full shape
* also_known_as · …
recursion truncated at depth 8; see source schema for full shape
* verification_methods · …
recursion truncated at depth 8; see source schema for full shape
* authentication · …
recursion truncated at depth 8; see source schema for full shape
* assertion_methods · …
recursion truncated at depth 8; see source schema for full shape
* key_agreements · …
recursion truncated at depth 8; see source schema for full shape
* capability_invocations · …
recursion truncated at depth 8; see source schema for full shape
* capability_delegations · …
recursion truncated at depth 8; see source schema for full shape
* services · …
recursion truncated at depth 8; see source schema for full shape
* metadata · …
recursion truncated at depth 8; see source schema for full shape
* extensions · …
recursion truncated at depth 8; see source schema for full shape
* producer_bindings · array<$ref #/$defs/agent_producer_binding>
items · object · $ref #/$defs/agent_producer_binding
* event_ref · string · $ref ./common-ids.schema.json#/$defs/event_id
Complete Arkret Event cryptographic identity. The suffix is the canonical unpadded Base64URL encoding of exactly 33 octets: fixed current-v1 suite code 0x01 followed by all 32 octets of the SHA-256 Event digest. Regex validation is only lexical; receivers MUST decode, require 33 octets, require byte 0 == 0x01, canonical re-encode, and verify the full digest before use. Other registered digest suites remain available only to the typed domains that explicitly select them and MUST NOT appear in Event IDs.
pattern: ^ak:event:[A-Za-z0-9_-]{44}$
* accepted_commit_id · string · $ref ./common-ids.schema.json#/$defs/realm_commit_id
Content-addressed identity of a closed unsigned RealmCommit body. The suffix uses the fixed v1 digest suite and the same canonical 33-octet token encoding as Event IDs.
pattern: ^ak:realm_commit:[A-Za-z0-9_-]{44}$
* signer_resolution_evidence_ref · string · $ref ./authenticated-signer-resolution-evidence.schema.json#/$defs/signer_evidence_ref
pattern: ^ak:signer_evidence:sha256:[0-9a-f]{64}$
* state_digest · string · $ref ./account-operations.schema.json#/$defs/sha256_digest
pattern: ^sha256:[0-9a-f]{64}$
* attestation · object · $ref #/$defs/agent_authority_state_attestation
The single Agent Authority state signature, made under ak.agent_authority_state_evidence.v1 by the authoritative service DID of that PCR. It binds the exact authority, verification method, state digest and observation window verbatim; the controller proof, the Account Authority gate and the RealmCommit signatures each stay separate.
* authority_id · string · $ref ./common-ids.schema.json#/$defs/did_core_id
Canonical stable DID-derived identity core. The lowercase DID method name follows ak:did_core:, and the remaining method-adapter-defined core is opaque to generic consumers. The did:web v1 adapter uses the complete canonical method-specific-id, never a digest or truncated host. Principal-core and service-core equality is byte-for-byte equality of the complete did_core_id. Event actor and Realm membership equality instead use the complete closed ActorId, and account-scoped equality uses the complete AccountId; neither may be reduced to a principal core. A did_core_id is not a DID and cannot be resolved without a did or AuthenticatedServiceResolution.
pattern: ^ak:did_core:[a-z0-9]+:[^\s/?#]+$
* verification_method · string · $ref ./account-operations.schema.json#/$defs/did_url
pattern: ^did:[a-z0-9]+:[^\s#?]+#[A-Za-z0-9._:-]+$
* state_digest · string · $ref ./account-operations.schema.json#/$defs/sha256_digest
pattern: ^sha256:[0-9a-f]{64}$
* issued_at · string (date-time) · format=date-time · $ref ./time.schema.json#/$defs/timestamp
Canonical Arkret-owned absolute instant. UTC Z form with exactly three millisecond digits. Whole seconds MUST use .000Z; offsets, missing/finer fractions, lowercase separators, leap seconds, and invalid Gregorian calendar dates are forbidden. Shape validation by this pattern is supplemented by semantic date validation.
pattern: ^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\.[0-9]{3}Z$
* expires_at · string (date-time) · format=date-time · $ref ./time.schema.json#/$defs/timestamp
Canonical Arkret-owned absolute instant. UTC Z form with exactly three millisecond digits. Whole seconds MUST use .000Z; offsets, missing/finer fractions, lowercase separators, leap seconds, and invalid Gregorian calendar dates are forbidden. Shape validation by this pattern is supplemented by semantic date validation.
pattern: ^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\.[0-9]{3}Z$
* proof · object · $ref #/$defs/detached_jws
Local detached signature leaf of this file. The signing bytes are the registered domain separation label, a newline, then the JCS bytes of the enclosing object with this member jws removed; kind stays covered like every other closed member.
* kind · const "detached_jws"
enum: "detached_jws"
* jws · string
Compact detached JWS. Its verification method is the enclosing object verification_method, resolved through the published DID document of the signer at the signing instant.
pattern: ^[A-Za-z0-9_-]+\.\.[A-Za-z0-9_-]+$
oneOf · oneOf[1] · object · $ref #/$defs/controller_account_gate_attestation
Account Authority answer to one question: is the controller principal behind an Agent key authorization still eligible? Signed under ak.controller_account_gate.v1. Member order is byte-for-byte the binding_fields order of that domain_separations row; proof follows as the detached signature over exactly those bound members. It is privacy minimised by construction: a service-local account_id, a raw account typed current result or a caller-asserted active boolean is a schema violation, not an optional member.
allOf · allOf[0] · ?
status active holds exactly when eligibility is active; every other status is inactive.
allOf · allOf[1] · ?
Stable absence or exact initial binding Active is the only default basis. Every non-active status, and restored Active after any successor, requires the original signed record basis.
* schema · const "ak.schema.controller_account_gate_attestation.v1"
enum: "ak.schema.controller_account_gate_attestation.v1"
* principal_id · string · $ref ./common-ids.schema.json#/$defs/did_core_id
Canonical stable DID-derived identity core. The lowercase DID method name follows ak:did_core:, and the remaining method-adapter-defined core is opaque to generic consumers. The did:web v1 adapter uses the complete canonical method-specific-id, never a digest or truncated host. Principal-core and service-core equality is byte-for-byte equality of the complete did_core_id. Event actor and Realm membership equality instead use the complete closed ActorId, and account-scoped equality uses the complete AccountId; neither may be reduced to a principal core. A did_core_id is not a DID and cannot be resolved without a did or AuthenticatedServiceResolution.
pattern: ^ak:did_core:[a-z0-9]+:[^\s/?#]+$
* eligibility · string (enum)
The only decision a consumer acts on. It is active if and only if status is active.
enum: "active" "inactive"
* status · string (enum) · $ref ./account-operations.schema.json#/$defs/account_state
Account lifecycle projection; mirrors zh/identity/account-lifecycle.md §3.
enum: "active" "soft_logged_out" "locked" "suspended" "deactivated" "erasure_pending"
* basis · oneOf[2] · $ref #/$defs/controller_account_gate_basis
Private Account Authority current basis. account_binding_default is stable absence or the exact initial active binding record; account_status_record binds the original immutable signed AccountStatusRecord current head. It is not an Event, RealmCommit or Station checkpoint, and the record body remains private.
oneOf · oneOf[0] · object
* kind · const "account_binding_default"
enum: "account_binding_default"
* binding_version · integer
* binding_receipt_digest · string · $ref ./account-operations.schema.json#/$defs/sha256_digest
pattern: ^sha256:[0-9a-f]{64}$
oneOf · oneOf[1] · object
* kind · const "account_status_record"
enum: "account_status_record"
* account_status_record_id · string · $ref ./common-ids.schema.json#/$defs/account_status_record_id
Account Authority issuer-ledger record identity derived from the complete closed unsigned AccountStatusRecord core.
pattern: ^ak:account_status_record:[A-Za-z0-9_-]{44}$
* status_record_digest · string · $ref ./account-operations.schema.json#/$defs/sha256_digest
SHA-256 of JCS of the complete original signed AccountStatusRecord, including account_status_record_id and proof; not the unsigned core, a reconstructed record or an aggregate checkpoint.
pattern: ^sha256:[0-9a-f]{64}$
* basis_digest · string · $ref ./account-operations.schema.json#/$defs/sha256_digest
SHA-256(JCS({principal_id:gate.principal_id,accepted_id:gate.authority_id,status:gate.status,basis:gate.basis})), without a domain prefix. accepted_id is a derived preimage key equal to the original internal request agent_authority_id and owning AA/Station; it is not another wire member. Consumers MUST recompute exact equality from these public Gate fields, independently of signature verification; this does not authenticate the hidden original Record/current ledger head.
pattern: ^sha256:[0-9a-f]{64}$
* authority_id · string · $ref ./common-ids.schema.json#/$defs/did_core_id
Canonical stable DID-derived identity core. The lowercase DID method name follows ak:did_core:, and the remaining method-adapter-defined core is opaque to generic consumers. The did:web v1 adapter uses the complete canonical method-specific-id, never a digest or truncated host. Principal-core and service-core equality is byte-for-byte equality of the complete did_core_id. Event actor and Realm membership equality instead use the complete closed ActorId, and account-scoped equality uses the complete AccountId; neither may be reduced to a principal core. A did_core_id is not a DID and cannot be resolved without a did or AuthenticatedServiceResolution.
pattern: ^ak:did_core:[a-z0-9]+:[^\s/?#]+$
* verification_method · string · $ref ./account-operations.schema.json#/$defs/did_url
pattern: ^did:[a-z0-9]+:[^\s#?]+#[A-Za-z0-9._:-]+$
* issued_at · string (date-time) · format=date-time · $ref ./time.schema.json#/$defs/timestamp
Canonical Arkret-owned absolute instant. UTC Z form with exactly three millisecond digits. Whole seconds MUST use .000Z; offsets, missing/finer fractions, lowercase separators, leap seconds, and invalid Gregorian calendar dates are forbidden. Shape validation by this pattern is supplemented by semantic date validation.
pattern: ^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\.[0-9]{3}Z$
* expires_at · string (date-time) · format=date-time · $ref ./time.schema.json#/$defs/timestamp
Canonical Arkret-owned absolute instant. UTC Z form with exactly three millisecond digits. Whole seconds MUST use .000Z; offsets, missing/finer fractions, lowercase separators, leap seconds, and invalid Gregorian calendar dates are forbidden. Shape validation by this pattern is supplemented by semantic date validation.
pattern: ^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\.[0-9]{3}Z$
* proof · object · $ref #/$defs/detached_jws
Local detached signature leaf of this file. The signing bytes are the registered domain separation label, a newline, then the JCS bytes of the enclosing object with this member jws removed; kind stays covered like every other closed member.
* kind · const "detached_jws"
enum: "detached_jws"
* jws · string
Compact detached JWS. Its verification method is the enclosing object verification_method, resolved through the published DID document of the signer at the signing instant.
pattern: ^[A-Za-z0-9_-]+\.\.[A-Za-z0-9_-]+$
oneOf · oneOf[2] · object · $ref #/$defs/controller_account_gate_attestation_issue_request_body
Deployment-authenticated request an Agent Authority sends to obtain the Account Authority-owned controller gate. Caller identity comes only from the authenticated deployment relationship: the body carries no service resolution carrier, and a self-asserted DID, URL, bearer subject, public key or account-active boolean is a schema violation rather than an identity source.
* request_id · string · $ref ./account-operations.schema.json#/$defs/request_id
pattern: ^ak:request:[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
* principal_id · string · $ref ./common-ids.schema.json#/$defs/did_core_id
Canonical stable DID-derived identity core. The lowercase DID method name follows ak:did_core:, and the remaining method-adapter-defined core is opaque to generic consumers. The did:web v1 adapter uses the complete canonical method-specific-id, never a digest or truncated host. Principal-core and service-core equality is byte-for-byte equality of the complete did_core_id. Event actor and Realm membership equality instead use the complete closed ActorId, and account-scoped equality uses the complete AccountId; neither may be reduced to a principal core. A did_core_id is not a DID and cannot be resolved without a did or AuthenticatedServiceResolution.
pattern: ^ak:did_core:[a-z0-9]+:[^\s/?#]+$
* agent_authority_id · string · $ref ./common-ids.schema.json#/$defs/did_core_id
Canonical stable DID-derived identity core. The lowercase DID method name follows ak:did_core:, and the remaining method-adapter-defined core is opaque to generic consumers. The did:web v1 adapter uses the complete canonical method-specific-id, never a digest or truncated host. Principal-core and service-core equality is byte-for-byte equality of the complete did_core_id. Event actor and Realm membership equality instead use the complete closed ActorId, and account-scoped equality uses the complete AccountId; neither may be reduced to a principal core. A did_core_id is not a DID and cannot be resolved without a did or AuthenticatedServiceResolution.
pattern: ^ak:did_core:[a-z0-9]+:[^\s/?#]+$
oneOf · oneOf[3] · object · $ref #/$defs/controller_account_gate_attestation_issue_outcome
Byte-stable issuance result. A replay of the same request_id and canonical intent returns these original bytes; a different intent under the same request_id is a duplicate_conflict with zero issuance.
* request_id · string · $ref ./account-operations.schema.json#/$defs/request_id
pattern: ^ak:request:[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
* controller_account_gate_attestation · object · $ref #/$defs/controller_account_gate_attestation
Account Authority answer to one question: is the controller principal behind an Agent key authorization still eligible? Signed under ak.controller_account_gate.v1. Member order is byte-for-byte the binding_fields order of that domain_separations row; proof follows as the detached signature over exactly those bound members. It is privacy minimised by construction: a service-local account_id, a raw account typed current result or a caller-asserted active boolean is a schema violation, not an optional member.
allOf · allOf[0] · ?
status active holds exactly when eligibility is active; every other status is inactive.
allOf · allOf[1] · ?
Stable absence or exact initial binding Active is the only default basis. Every non-active status, and restored Active after any successor, requires the original signed record basis.
* schema · const "ak.schema.controller_account_gate_attestation.v1"
enum: "ak.schema.controller_account_gate_attestation.v1"
* principal_id · string · $ref ./common-ids.schema.json#/$defs/did_core_id
Canonical stable DID-derived identity core. The lowercase DID method name follows ak:did_core:, and the remaining method-adapter-defined core is opaque to generic consumers. The did:web v1 adapter uses the complete canonical method-specific-id, never a digest or truncated host. Principal-core and service-core equality is byte-for-byte equality of the complete did_core_id. Event actor and Realm membership equality instead use the complete closed ActorId, and account-scoped equality uses the complete AccountId; neither may be reduced to a principal core. A did_core_id is not a DID and cannot be resolved without a did or AuthenticatedServiceResolution.
pattern: ^ak:did_core:[a-z0-9]+:[^\s/?#]+$
* eligibility · string (enum)
The only decision a consumer acts on. It is active if and only if status is active.
enum: "active" "inactive"
* status · string (enum) · $ref ./account-operations.schema.json#/$defs/account_state
Account lifecycle projection; mirrors zh/identity/account-lifecycle.md §3.
enum: "active" "soft_logged_out" "locked" "suspended" "deactivated" "erasure_pending"
* basis · oneOf[2] · $ref #/$defs/controller_account_gate_basis
Private Account Authority current basis. account_binding_default is stable absence or the exact initial active binding record; account_status_record binds the original immutable signed AccountStatusRecord current head. It is not an Event, RealmCommit or Station checkpoint, and the record body remains private.
oneOf · oneOf[0] · object
* kind · const "account_binding_default"
enum: "account_binding_default"
* binding_version · integer
* binding_receipt_digest · string · $ref ./account-operations.schema.json#/$defs/sha256_digest
pattern: ^sha256:[0-9a-f]{64}$
oneOf · oneOf[1] · object
* kind · const "account_status_record"
enum: "account_status_record"
* account_status_record_id · string · $ref ./common-ids.schema.json#/$defs/account_status_record_id
Account Authority issuer-ledger record identity derived from the complete closed unsigned AccountStatusRecord core.
pattern: ^ak:account_status_record:[A-Za-z0-9_-]{44}$
* status_record_digest · string · $ref ./account-operations.schema.json#/$defs/sha256_digest
SHA-256 of JCS of the complete original signed AccountStatusRecord, including account_status_record_id and proof; not the unsigned core, a reconstructed record or an aggregate checkpoint.
pattern: ^sha256:[0-9a-f]{64}$
* basis_digest · string · $ref ./account-operations.schema.json#/$defs/sha256_digest
SHA-256(JCS({principal_id:gate.principal_id,accepted_id:gate.authority_id,status:gate.status,basis:gate.basis})), without a domain prefix. accepted_id is a derived preimage key equal to the original internal request agent_authority_id and owning AA/Station; it is not another wire member. Consumers MUST recompute exact equality from these public Gate fields, independently of signature verification; this does not authenticate the hidden original Record/current ledger head.
pattern: ^sha256:[0-9a-f]{64}$
* authority_id · string · $ref ./common-ids.schema.json#/$defs/did_core_id
Canonical stable DID-derived identity core. The lowercase DID method name follows ak:did_core:, and the remaining method-adapter-defined core is opaque to generic consumers. The did:web v1 adapter uses the complete canonical method-specific-id, never a digest or truncated host. Principal-core and service-core equality is byte-for-byte equality of the complete did_core_id. Event actor and Realm membership equality instead use the complete closed ActorId, and account-scoped equality uses the complete AccountId; neither may be reduced to a principal core. A did_core_id is not a DID and cannot be resolved without a did or AuthenticatedServiceResolution.
pattern: ^ak:did_core:[a-z0-9]+:[^\s/?#]+$
* verification_method · string · $ref ./account-operations.schema.json#/$defs/did_url
pattern: ^did:[a-z0-9]+:[^\s#?]+#[A-Za-z0-9._:-]+$
* issued_at · string (date-time) · format=date-time · $ref ./time.schema.json#/$defs/timestamp
Canonical Arkret-owned absolute instant. UTC Z form with exactly three millisecond digits. Whole seconds MUST use .000Z; offsets, missing/finer fractions, lowercase separators, leap seconds, and invalid Gregorian calendar dates are forbidden. Shape validation by this pattern is supplemented by semantic date validation.
pattern: ^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\.[0-9]{3}Z$
* expires_at · string (date-time) · format=date-time · $ref ./time.schema.json#/$defs/timestamp
Canonical Arkret-owned absolute instant. UTC Z form with exactly three millisecond digits. Whole seconds MUST use .000Z; offsets, missing/finer fractions, lowercase separators, leap seconds, and invalid Gregorian calendar dates are forbidden. Shape validation by this pattern is supplemented by semantic date validation.
pattern: ^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\.[0-9]{3}Z$
* proof · object · $ref #/$defs/detached_jws
Local detached signature leaf of this file. The signing bytes are the registered domain separation label, a newline, then the JCS bytes of the enclosing object with this member jws removed; kind stays covered like every other closed member.
* kind · const "detached_jws"
enum: "detached_jws"
* jws · string
Compact detached JWS. Its verification method is the enclosing object verification_method, resolved through the published DID document of the signer at the signing instant.
pattern: ^[A-Za-z0-9_-]+\.\.[A-Za-z0-9_-]+$

Source