Akashik Protocol
Types

Conflict

A detected contradiction between two memory units.

Conflict

A Conflict represents a detected contradiction between two memory units. The protocol treats conflicts as expected events, not errors. Conflicts are detected automatically (at Level 2+) or declared explicitly by agents (via a contradicts relation), and resolved through structured strategies.

Schema

{
  "id": "<string>",
  "type": "factual | interpretive | strategic | priority",
  "status": "detected | resolving | resolved | escalated",
  "unit_a": "<string>",
  "unit_b": "<string>",
  "description": "<string>",
  "detected_by": "explicit | semantic | logical | temporal",
  "resolution": {
    "strategy": "<ConflictStrategy>",
    "winner_id": "<string | null>",
    "rationale": "<string>",
    "resolved_by": "<string>",
    "epoch_resolved": "<number>"
  }
}

Field Reference

FieldTypeRequiredDescription
idstringUnique conflict identifier. Auto-assigned by the Field.
typestringfactual, interpretive, strategic, or priority.
statusstringCurrent state of the conflict.
unit_astringID of the first conflicting memory unit.
unit_bstringID of the second conflicting memory unit.
descriptionstringHuman-readable description of the contradiction.
detected_bystringHow the conflict was discovered.
resolutionobjectPopulated once the conflict is resolved or escalated.

Conflict Types

TypeDescription
factualTwo units make opposing factual claims (e.g., conflicting market size figures)
interpretiveTwo units interpret the same evidence differently
strategicTwo units recommend conflicting courses of action
priorityTwo units assign different priority to the same goal or task

Detection Methods

MethodDescriptionRequired Level
explicitAn agent included a contradicts relation in a RECORD request1+
semanticEmbedding similarity detected opposing claims2+
logicalA finding's assumptions contradict another finding's content2+
temporalA newer finding contradicts an established, higher-confidence finding2+

Status Lifecycle

detected → resolving → resolved
detected → escalated → resolved (human operator resolves)
resolving → escalated (strategy fails or times out)
StatusDescription
detectedConflict found; no resolution initiated yet.
resolvingAn agent or the Field has initiated resolution with a chosen strategy.
resolvedSuccessfully resolved. Both original units updated to superseded or one is superseded.
escalatedAutomatic resolution not possible; flagged for human review.

Conflict Resolution Strategies

StrategyDescriptionRequired Level
last_write_winsMost recent memory unit prevails2+
confidence_weightedHigher confidence score prevails2+
human_escalationFlag for human review2+
authoritySpecified agent/role has final say3
evidence_countUnit with more supporting evidence prevails3
synthesisCreate a new unit reconciling both3
voteMultiple agents vote (requires quorum)3

JSON Schema

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://akashikprotocol.com/schema/0.1.0/conflict.json",
  "type": "object",
  "required": ["id", "type", "status", "unit_a", "unit_b", "description", "detected_by"],
  "properties": {
    "id": { "type": "string", "minLength": 1 },
    "type": { "type": "string", "enum": ["factual", "interpretive", "strategic", "priority"] },
    "status": { "type": "string", "enum": ["detected", "resolving", "resolved", "escalated"] },
    "unit_a": { "type": "string" },
    "unit_b": { "type": "string" },
    "description": { "type": "string" },
    "detected_by": { "type": "string", "enum": ["explicit", "semantic", "logical", "temporal"] },
    "resolution": {
      "type": "object",
      "properties": {
        "strategy": {
          "type": "string",
          "enum": ["last_write_wins", "confidence_weighted", "authority", "evidence_count", "synthesis", "human_escalation", "vote"]
        },
        "winner_id": { "type": ["string", "null"] },
        "rationale": { "type": "string" },
        "resolved_by": { "type": "string" },
        "epoch_resolved": { "type": "integer" }
      }
    }
  }
}