Akashik Protocol
Types

MemoryUnit

The atomic unit of knowledge in the Akashik Protocol.

MemoryUnit

The MemoryUnit is the atomic unit of knowledge in the protocol. Every finding, decision, observation, question, or intention recorded by an agent is a MemoryUnit. It is immutable once committed — a committed unit's content MUST NOT be modified. To update or correct information, an agent records a new unit with a supersedes or correction relation pointing to the original.

Two properties distinguish Akashik memory units from generic data storage:

  • Intent is required. Every unit MUST include an intent field declaring why it was recorded. A unit without intent is invalid and MUST be rejected by the Field.
  • Confidence is explicit. At Level 1+, every committed unit MUST include a confidence score and reasoning. This creates an auditable chain where certainty is transparent.

Schema

{
  "id": "<string>",
  "mode": "draft | committed",
  "type": "<MemoryType>",
  "content": "<string>",
  "intent": {
    "purpose": "<string>",
    "task_id": "<string | null>",
    "question": "<string | null>"
  },
  "confidence": {
    "score": "<number>",
    "reasoning": "<string>",
    "evidence": ["<string>"],
    "assumptions": ["<string>"]
  },
  "source": {
    "agent_id": "<string>",
    "agent_role": "<string>",
    "session_id": "<string | null>",
    "timestamp": "<ISO 8601>"
  },
  "relations": ["<Relation>"],
  "status": "active | draft | superseded | retracted | contested | pending_enrichment",
  "epoch": "<number>"
}

Field Reference

FieldTypeRequiredDescription
idstringAuto-generated by the Field. Agents MUST NOT set this.
modestring"draft" or "committed" — affects validation rules.
typestringSemantic category. See MemoryType below.
contentstringThe knowledge payload. Must be non-empty.
intent.purposestringWhy this unit was recorded. REQUIRED at all levels and modes.
intent.task_idstring or nullThe task this unit serves.
intent.questionstring or nullThe question this unit answers or asks.
confidence.scorenumberLevel 1+ committedCertainty between 0.0 and 1.0.
confidence.reasoningstringLevel 1+ committedWhy this confidence score was assigned.
confidence.evidencestringSources supporting the content.
confidence.assumptionsstringWhat is assumed to be true for this unit to hold.
sourceobjectAuto-generated by the Field. Agents MUST NOT set this.
relationsRelationLinks to other memory units. See Relation below.
statusstringAuto-set by the Field. See status values below.
epochintegerLogical clock value. Auto-assigned by the Field.

Required Fields by Mode and Level

FieldDraft (all levels)Committed — Level 0Committed — Level 1+
typeREQUIREDREQUIREDREQUIRED
contentREQUIREDREQUIREDREQUIRED
intent.purposeREQUIREDREQUIREDREQUIRED
confidence.scoreREQUIRED
confidence.reasoningREQUIRED
relations

The Field MUST auto-generate id, epoch, source.agent_id, source.agent_role, source.timestamp, and status on every RECORD. Agents MUST NOT set these fields.

Mode Behavior

Draft mode allows lightweight, low-ceremony recording. The Field or a downstream agent MAY enrich a draft into a committed unit by adding confidence and metadata. The Field MUST set status to "draft".

Committed mode enforces full validation. At Level 0, intent.purpose is the only required field beyond type and content. At Level 1+, confidence.score and confidence.reasoning are also required. The Field MUST set status to "active".

Status Values

StatusDescription
activeThe memory unit is valid and visible for attunement.
draftRecorded in draft mode. Awaiting enrichment before full use.
supersededReplaced by a newer memory unit via a supersedes relation.
retractedExplicitly withdrawn by an agent or human operator.
contestedInvolved in an unresolved conflict.
pending_enrichmentCommitted but embedding generation or enrichment failed; queued for retry.

MemoryType

MemoryType is the semantic category of a memory unit. Implementations MUST support at minimum: finding, decision, observation, and question.

MemoryType = "finding" | "decision" | "observation" | "intention"
           | "assumption" | "constraint" | "question" | "contradiction"
           | "synthesis" | "correction" | "human_directive"
TypeDescription
findingA discovered fact or data point
decisionA choice made by an agent or human
observationA subjective assessment or interpretation
intentionA declared plan or next step
assumptionSomething taken as true without verification
constraintA limitation or boundary condition
questionAn open question that needs answering
contradictionAn explicit flag that two findings conflict
synthesisA combination of multiple findings into a conclusion
correctionAn explicit correction of a prior memory unit
human_directiveInput from a human operator

Implementations MAY extend this set with additional types. Extended types MUST use a namespace prefix (e.g., acme:custom-type).


Relation

A Relation links a memory unit to another, building a knowledge graph inside the Field.

{
  "type": "<RelationType>",
  "target_id": "<string>",
  "description": "<string | null>"
}
RelationType = "supports" | "contradicts" | "depends_on" | "supersedes"
             | "caused_by" | "elaborates" | "answers" | "blocks" | "informs"
TypeDescription
supportsThis unit provides evidence for the target
contradictsThis unit conflicts with the target — triggers conflict detection at Level 1+
depends_onThis unit assumes the target is true
supersedesThis unit replaces the target; target MUST transition to superseded
caused_byThis unit exists because of the target
elaboratesThis unit adds detail to the target
answersThis unit answers a question posed by the target
blocksThis unit prevents progress on the target
informsThis unit provides useful context for the target
When a RECORD includes a relation with type contradicts, the Field MUST create a Conflict object (Level 1+).

JSON Schema

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://akashikprotocol.com/schema/0.1.0/memory-unit.json",
  "type": "object",
  "required": ["id", "mode", "type", "content", "intent", "source", "status", "epoch"],
  "properties": {
    "id": { "type": "string", "minLength": 1 },
    "mode": { "type": "string", "enum": ["draft", "committed"] },
    "type": {
      "type": "string",
      "enum": ["finding", "decision", "observation", "intention", "assumption", "constraint", "question", "contradiction", "synthesis", "correction", "human_directive"]
    },
    "content": { "type": "string", "minLength": 1 },
    "intent": {
      "type": "object",
      "required": ["purpose"],
      "properties": {
        "purpose": { "type": "string", "minLength": 1 },
        "task_id": { "type": ["string", "null"] },
        "question": { "type": ["string", "null"] }
      }
    },
    "confidence": {
      "type": "object",
      "properties": {
        "score": { "type": "number", "minimum": 0.0, "maximum": 1.0 },
        "reasoning": { "type": "string", "minLength": 1 },
        "evidence": { "type": "array", "items": { "type": "string" } },
        "assumptions": { "type": "array", "items": { "type": "string" } }
      }
    },
    "source": {
      "type": "object",
      "required": ["agent_id", "agent_role", "timestamp"],
      "properties": {
        "agent_id": { "type": "string" },
        "agent_role": { "type": "string" },
        "session_id": { "type": ["string", "null"] },
        "timestamp": { "type": "string", "format": "date-time" }
      }
    },
    "relations": {
      "type": "array",
      "items": {
        "type": "object",
        "required": ["type", "target_id"],
        "properties": {
          "type": {
            "type": "string",
            "enum": ["supports", "contradicts", "depends_on", "supersedes", "caused_by", "elaborates", "answers", "blocks", "informs"]
          },
          "target_id": { "type": "string" },
          "description": { "type": ["string", "null"] }
        }
      }
    },
    "status": {
      "type": "string",
      "enum": ["active", "draft", "superseded", "retracted", "contested", "pending_enrichment"]
    },
    "epoch": { "type": "integer", "minimum": 0 }
  }
}