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 optional, and never authoritative. An agent MAY attach a confidence score and a short reason to a unit. When it does, the Field MUST carry that confidence unchanged and surface it on every read path — but MUST NOT use it to rank relevance, weight recency, or auto-resolve a conflict. Confidence is an input to the reading agent's judgment, not the protocol's.

Schema

{
  "id": "<string>",
  "mode": "draft | committed",
  "type": "<MemoryType>",
  "content": "<string>",
  "intent": {
    "purpose": "<string>",
    "task_id": "<string | null>",
    "question": "<string | null>"
  },
  "confidence": {
    "score": "<number>",
    "reason": "<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.scorenumberCertainty between 0.0 and 1.0. OPTIONAL at every level — never required.
confidence.reasonstringWhy this confidence score was assigned.
confidence.evidencestringSources supporting the content. Part of the Extended Confidence form — only meaningful once something downstream reads it (Level 2+).
confidence.assumptionsstringWhat is assumed to be true for this unit to hold. Extended Confidence form; see above.
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 (Level 0+)Committed (Level 0+)
typeREQUIREDREQUIRED
contentREQUIREDREQUIRED
intent.purposeREQUIREDREQUIRED
confidence.scoreOPTIONALOPTIONAL
confidence.reasonOPTIONALOPTIONAL
relationsOPTIONALOPTIONAL

Confidence is never required, at any level — see the note on the protocol's confidence principle above.

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 every level, intent.purpose is the only required field beyond type and content. Confidence is never required — carried when present, absent otherwise. 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" | "retracts"
             | "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. Open to any agent.
retractsThis unit withdraws the target; target MUST transition to retracted. Author-only — the Field MUST reject with RETRACT_NOT_AUTHORIZED if the requesting agent isn't the target's original author.
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 },
        "reason": { "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", "retracts", "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 }
  }
}