{
  "$schema": "./event-codemap.schema.json",
  "$comment": "GENERATED by scripts/generate-event-codemap.mjs from schemas/run-event.schema.json + run-event-payloads.schema.json. v2 names are MECHANICAL PROPOSALS (v2 charter C.4 naming rule: domain.verb-ed, kebab, two segments, no reserved core. prefix); `review: true` marks rows needing a semantic decision. Hand fields v2Override / note / status survive regeneration. No consumer reads this in v1.x; the v2 C.4 child RFC edits it and every host backfills from it. v2 copy (RFC 0176 §A.1): every row decided; shipped in @openwop/spec-artifacts.",
  "version": "2.0",
  "updated": "2026-09-03",
  "grammar": "^[a-z][a-z0-9]*(?:-[a-z0-9]+)*\\.[a-z][a-z0-9]*(?:-[a-z0-9]+)*$",
  "counts": {
    "rows": 118,
    "review": 0,
    "overridden": 20,
    "renamed": 36
  },
  "rows": [
    {
      "v1": "run.started",
      "v2": "run.started",
      "payloadDef": "runStarted",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "run.completed",
      "v2": "run.completed",
      "payloadDef": "runCompleted",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "run.failed",
      "v2": "run.failed",
      "payloadDef": "runFailed",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "run.cancelled",
      "v2": "run.cancelled",
      "payloadDef": "runCancelled",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "run.resuming",
      "v2": "run.resume-started",
      "v2Override": "run.resume-started",
      "payloadDef": "runResuming",
      "status": "decided",
      "review": false,
      "notes": [
        "verb is not past-tense — tense is a C.4 decision, not normalised here"
      ],
      "note": "state descriptor → transition (RFC 0171 §A.2)"
    },
    {
      "v1": "run.paused",
      "v2": "run.paused",
      "payloadDef": "runPaused",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "run.resumed",
      "v2": "run.resumed",
      "payloadDef": "runResumed",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "run.restored-from-snapshot",
      "v2": "run.restored-from-snapshot",
      "payloadDef": "runRestoredFromSnapshot",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "run.dead_lettered",
      "v2": "run.dead-lettered",
      "payloadDef": "runDeadLettered",
      "status": "decided",
      "review": false,
      "notes": [
        "case/separator normalised"
      ]
    },
    {
      "v1": "node.started",
      "v2": "node.started",
      "payloadDef": "nodeStarted",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "node.completed",
      "v2": "node.completed",
      "payloadDef": "nodeCompleted",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "node.failed",
      "v2": "node.failed",
      "payloadDef": "nodeFailed",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "node.suspended",
      "v2": "node.suspended",
      "payloadDef": "nodeSuspended",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "node.suspend-failed",
      "v2": "node.suspend-failed",
      "payloadDef": "nodeSuspendFailed",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "node.resumed",
      "v2": "node.resumed",
      "payloadDef": "nodeResumed",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "node.retried",
      "v2": "node.retried",
      "payloadDef": "nodeRetried",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "node.skipped",
      "v2": "node.skipped",
      "payloadDef": "nodeSkipped",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "node.cancelled",
      "v2": "node.cancelled",
      "payloadDef": "nodeCancelled",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "approval.requested",
      "v2": "approval.requested",
      "payloadDef": "approvalRequested",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "approval.received",
      "v2": "approval.received",
      "payloadDef": "approvalReceived",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "approval.granted",
      "v2": "approval.granted",
      "payloadDef": "approvalGranted",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "approval.rejected",
      "v2": "approval.rejected",
      "payloadDef": "approvalRejected",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "approval.overridden",
      "v2": "approval.overridden",
      "payloadDef": "approvalOverridden",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "clarification.requested",
      "v2": "clarification.requested",
      "payloadDef": "clarificationRequested",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "clarification.resolved",
      "v2": "clarification.resolved",
      "payloadDef": "clarificationResolved",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "interrupt.requested",
      "v2": "interrupt.requested",
      "payloadDef": "interruptRequested",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "interrupt.resolved",
      "v2": "interrupt.resolved",
      "payloadDef": "interruptResolved",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "channel.written",
      "v2": "channel.written",
      "payloadDef": "channelWritten",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "channel.presence",
      "v2": "channel.presence",
      "v2Override": "channel.presence",
      "payloadDef": "channelPresence",
      "status": "decided",
      "review": false,
      "notes": [
        "verb is not past-tense — tense is a C.4 decision, not normalised here"
      ],
      "note": "artifact event; noun form permitted (RFC 0171 §A.2 exception list)"
    },
    {
      "v1": "context.summarized",
      "v2": "context.summarized",
      "payloadDef": "contextSummarized",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "artifact.created",
      "v2": "artifact.created",
      "payloadDef": "artifactCreated",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "output.chunk",
      "v2": "output.chunk",
      "v2Override": "output.chunk",
      "payloadDef": "outputChunk",
      "status": "decided",
      "review": false,
      "notes": [
        "verb is not past-tense — tense is a C.4 decision, not normalised here"
      ],
      "note": "artifact event; noun form permitted"
    },
    {
      "v1": "variable.changed",
      "v2": "variable.changed",
      "payloadDef": "variableChanged",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "log.appended",
      "v2": "log.appended",
      "payloadDef": "logAppended",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "version.pinned",
      "v2": "version.pinned",
      "payloadDef": "versionPinned",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "workflow.restored",
      "v2": "workflow.restored",
      "payloadDef": "workflowRestored",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "workflow.loopback-limit",
      "v2": "workflow.loopback-limit",
      "payloadDef": "workflowLoopbackLimit",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "workflow.stalled",
      "v2": "workflow.stalled",
      "payloadDef": "workflowStalled",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "cap.breached",
      "v2": "cap.breached",
      "payloadDef": "capBreached",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "lease.acquired",
      "v2": "lease.acquired",
      "payloadDef": "leaseLifecycle",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "lease.renewed",
      "v2": "lease.renewed",
      "payloadDef": "leaseLifecycle",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "lease.lost",
      "v2": "lease.lost",
      "payloadDef": "leaseLifecycle",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "lease.handed-off",
      "v2": "lease.handed-off",
      "v2Override": "lease.handed-off",
      "payloadDef": "leaseHandedOff",
      "status": "decided",
      "review": false,
      "notes": [
        "verb is not past-tense — tense is a C.4 decision, not normalised here"
      ],
      "note": "already a past-tense transition"
    },
    {
      "v1": "replay.diverged",
      "v2": "replay.diverged",
      "payloadDef": "replayDiverged",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "replay.divergedAtRefusal",
      "v2": "replay.diverged-at-refusal",
      "v2Override": "replay.diverged-at-refusal",
      "payloadDef": "replayDivergedAtRefusal",
      "status": "decided",
      "review": false,
      "notes": [
        "case/separator normalised",
        "verb is not past-tense — tense is a C.4 decision, not normalised here"
      ],
      "note": "case/separator normalised"
    },
    {
      "v1": "agent.reasoned",
      "v2": "agent.reasoned",
      "payloadDef": "agentReasoned",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "agent.reasoning.delta",
      "v2": "agent.reasoning-delta",
      "v2Override": "agent.reasoning-delta",
      "payloadDef": "agentReasoningDelta",
      "status": "decided",
      "review": false,
      "notes": [
        "3 segments folded to two",
        "verb is not past-tense — tense is a C.4 decision, not normalised here"
      ],
      "note": "artifact event; three segments folded"
    },
    {
      "v1": "provider.usage",
      "v2": "provider.usage",
      "v2Override": "provider.usage",
      "payloadDef": "providerUsage",
      "status": "decided",
      "review": false,
      "notes": [
        "verb is not past-tense — tense is a C.4 decision, not normalised here"
      ],
      "note": "artifact event; noun form permitted"
    },
    {
      "v1": "prompt.composed",
      "v2": "prompt.composed",
      "payloadDef": "promptComposed",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "agent.promptResolved",
      "v2": "agent.prompt-resolved",
      "payloadDef": "agentPromptResolved",
      "status": "decided",
      "review": false,
      "notes": [
        "case/separator normalised"
      ]
    },
    {
      "v1": "model.capability.substituted",
      "v2": "model.capability-substituted",
      "payloadDef": "modelCapabilitySubstituted",
      "status": "decided",
      "review": false,
      "notes": [
        "3 segments folded to two"
      ]
    },
    {
      "v1": "model.capability.insufficient",
      "v2": "model.capability-insufficient",
      "payloadDef": "modelCapabilityInsufficient",
      "status": "decided",
      "review": false,
      "notes": [
        "3 segments folded to two"
      ]
    },
    {
      "v1": "envelope.retry.attempted",
      "v2": "envelope.retry-attempted",
      "payloadDef": "envelopeRetryAttempted",
      "status": "decided",
      "review": false,
      "notes": [
        "3 segments folded to two"
      ]
    },
    {
      "v1": "envelope.retry.exhausted",
      "v2": "envelope.retry-exhausted",
      "payloadDef": "envelopeRetryExhausted",
      "status": "decided",
      "review": false,
      "notes": [
        "3 segments folded to two"
      ]
    },
    {
      "v1": "envelope.refusal",
      "v2": "envelope.refusal",
      "v2Override": "envelope.refusal",
      "payloadDef": "envelopeRefusal",
      "status": "decided",
      "review": false,
      "notes": [
        "verb is not past-tense — tense is a C.4 decision, not normalised here"
      ],
      "note": "artifact event; noun form permitted"
    },
    {
      "v1": "envelope.truncated",
      "v2": "envelope.truncated",
      "payloadDef": "envelopeTruncated",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "envelope.nlToFormat.engaged",
      "v2": "envelope.nl-to-format-engaged",
      "v2Override": "envelope.nl-to-format-engaged",
      "payloadDef": "envelopeNlToFormatEngaged",
      "status": "decided",
      "review": false,
      "notes": [
        "3 segments folded to two",
        "case/separator normalised"
      ],
      "note": "three-segment fold re-verified (RFC 0171 adversarial review 4)"
    },
    {
      "v1": "envelope.recovery.applied",
      "v2": "envelope.recovery-applied",
      "payloadDef": "envelopeRecoveryApplied",
      "status": "decided",
      "review": false,
      "notes": [
        "3 segments folded to two"
      ]
    },
    {
      "v1": "agent.toolCalled",
      "v2": "agent.tool-called",
      "payloadDef": "agentToolCalled",
      "status": "decided",
      "review": false,
      "notes": [
        "case/separator normalised"
      ]
    },
    {
      "v1": "agent.toolReturned",
      "v2": "agent.tool-returned",
      "payloadDef": "agentToolReturned",
      "status": "decided",
      "review": false,
      "notes": [
        "case/separator normalised"
      ]
    },
    {
      "v1": "agent.handoff",
      "v2": "agent.handoff",
      "v2Override": "agent.handoff",
      "payloadDef": "agentHandoff",
      "status": "decided",
      "review": false,
      "notes": [
        "verb is not past-tense — tense is a C.4 decision, not normalised here"
      ],
      "note": "artifact event; noun form permitted"
    },
    {
      "v1": "agent.decided",
      "v2": "agent.decided",
      "payloadDef": "agentDecided",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "agent.verified",
      "v2": "agent.verified",
      "payloadDef": "agentVerified",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "agent.invocation.started",
      "v2": "agent.invocation-started",
      "payloadDef": "agentInvocationStarted",
      "status": "decided",
      "review": false,
      "notes": [
        "3 segments folded to two"
      ]
    },
    {
      "v1": "agent.invocation.completed",
      "v2": "agent.invocation-completed",
      "payloadDef": "agentInvocationCompleted",
      "status": "decided",
      "review": false,
      "notes": [
        "3 segments folded to two"
      ]
    },
    {
      "v1": "eval.started",
      "v2": "eval.started",
      "payloadDef": "evalStarted",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "eval.scored",
      "v2": "eval.scored",
      "payloadDef": "evalScored",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "eval.completed",
      "v2": "eval.completed",
      "payloadDef": "evalCompleted",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "deployment.promoted",
      "v2": "deployment.promoted",
      "payloadDef": "deploymentPromoted",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "deployment.rolled-back",
      "v2": "deployment.rolled-back",
      "v2Override": "deployment.rolled-back",
      "payloadDef": "deploymentRolledBack",
      "status": "decided",
      "review": false,
      "notes": [
        "verb is not past-tense — tense is a C.4 decision, not normalised here"
      ],
      "note": "already a past-tense transition"
    },
    {
      "v1": "deployment.canary.adjusted",
      "v2": "deployment.canary-adjusted",
      "payloadDef": "deploymentCanaryAdjusted",
      "status": "decided",
      "review": false,
      "notes": [
        "3 segments folded to two"
      ]
    },
    {
      "v1": "deployment.state.changed",
      "v2": "deployment.state-changed",
      "payloadDef": "deploymentStateChanged",
      "status": "decided",
      "review": false,
      "notes": [
        "3 segments folded to two"
      ]
    },
    {
      "v1": "roster.run.initiated",
      "v2": "roster.run-initiated",
      "payloadDef": "rosterRunInitiated",
      "status": "decided",
      "review": false,
      "notes": [
        "3 segments folded to two"
      ]
    },
    {
      "v1": "tool.session.opened",
      "v2": "tool.session-opened",
      "payloadDef": "toolSessionOpened",
      "status": "decided",
      "review": false,
      "notes": [
        "3 segments folded to two"
      ]
    },
    {
      "v1": "tool.session.closed",
      "v2": "tool.session-closed",
      "payloadDef": "toolSessionClosed",
      "status": "decided",
      "review": false,
      "notes": [
        "3 segments folded to two"
      ]
    },
    {
      "v1": "egress.decided",
      "v2": "egress.decided",
      "payloadDef": "egressDecided",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "trigger.subscription.state.changed",
      "v2": "trigger.subscription-state-changed",
      "v2Override": "trigger.subscription-state-changed",
      "payloadDef": "triggerSubscriptionStateChanged",
      "status": "decided",
      "review": false,
      "notes": [
        "4 segments folded to two"
      ],
      "note": "four-segment fold re-verified (RFC 0171 adversarial review 4)"
    },
    {
      "v1": "trigger.delivery.attempted",
      "v2": "trigger.delivery-attempted",
      "payloadDef": "triggerDeliveryAttempted",
      "status": "decided",
      "review": false,
      "notes": [
        "3 segments folded to two"
      ]
    },
    {
      "v1": "budget.reserved",
      "v2": "budget.reserved",
      "payloadDef": "budgetReserved",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "budget.consumed",
      "v2": "budget.consumed",
      "payloadDef": "budgetConsumed",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "budget.threshold.crossed",
      "v2": "budget.threshold-crossed",
      "payloadDef": "budgetThresholdCrossed",
      "status": "decided",
      "review": false,
      "notes": [
        "3 segments folded to two"
      ]
    },
    {
      "v1": "budget.exhausted",
      "v2": "budget.exhausted",
      "payloadDef": "budgetExhausted",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "runOrchestrator.decided",
      "v2": "orchestrator.decided",
      "v2Override": "orchestrator.decided",
      "payloadDef": "runOrchestratorDecided",
      "status": "decided",
      "review": false,
      "notes": [
        "case/separator normalised",
        "domain `runOrchestrator` renamed `run-orchestrator` — confirm it is the same domain as `run`"
      ],
      "note": "orchestrator is its own domain, not `run` (RFC 0171 adversarial review 3)"
    },
    {
      "v1": "node.dispatched",
      "v2": "node.dispatched",
      "payloadDef": "nodeDispatched",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "core.dispatch.fanOut",
      "v2": "dispatch.fanned-out",
      "v2Override": "dispatch.fanned-out",
      "payloadDef": "dispatchFanOut",
      "status": "decided",
      "review": false,
      "notes": [
        "reserved `core.` prefix dropped (the vendor regex reserves it)",
        "case/separator normalised"
      ],
      "note": "reserved core. dropped; transition"
    },
    {
      "v1": "core.dispatch.join",
      "v2": "dispatch.joined",
      "v2Override": "dispatch.joined",
      "payloadDef": "dispatchJoin",
      "status": "decided",
      "review": false,
      "notes": [
        "reserved `core.` prefix dropped (the vendor regex reserves it)",
        "verb is not past-tense — tense is a C.4 decision, not normalised here"
      ],
      "note": "reserved core. dropped; transition"
    },
    {
      "v1": "conversation.opened",
      "v2": "conversation.opened",
      "payloadDef": "conversationOpened",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "conversation.exchanged",
      "v2": "conversation.exchanged",
      "payloadDef": "conversationExchanged",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "conversation.closed",
      "v2": "conversation.closed",
      "payloadDef": "conversationClosed",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "memory.compacted",
      "v2": "memory.compacted",
      "payloadDef": "memoryCompacted",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "memory.written",
      "v2": "memory.written",
      "payloadDef": "memoryWritten",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "agent.memory.consolidated",
      "v2": "agent.memory-consolidated",
      "payloadDef": "agentMemoryConsolidated",
      "status": "decided",
      "review": false,
      "notes": [
        "3 segments folded to two"
      ]
    },
    {
      "v1": "commitment.fired",
      "v2": "commitment.fired",
      "payloadDef": "commitmentFired",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "workspace.updated",
      "v2": "workspace.updated",
      "payloadDef": "workspaceUpdated",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "core.workflowChain.event",
      "v2": "workflow-chain.event",
      "v2Override": "workflow-chain.event",
      "payloadDef": "coreWorkflowChainEvent",
      "status": "decided",
      "review": false,
      "notes": [
        "reserved `core.` prefix dropped (the vendor regex reserves it)",
        "case/separator normalised",
        "domain `workflowChain` renamed `workflow-chain` — confirm it is the same domain as `workflow`"
      ],
      "note": "reserved core. dropped; workflow-chain is a distinct domain from workflow"
    },
    {
      "v1": "core.workflowChain.confidence-escalated",
      "v2": "workflow-chain.confidence-escalated",
      "v2Override": "workflow-chain.confidence-escalated",
      "payloadDef": "coreWorkflowChainConfidenceEscalated",
      "status": "decided",
      "review": false,
      "notes": [
        "reserved `core.` prefix dropped (the vendor regex reserves it)",
        "case/separator normalised",
        "domain `workflowChain` renamed `workflow-chain` — confirm it is the same domain as `workflow`"
      ],
      "note": "reserved core. dropped"
    },
    {
      "v1": "connector.authorized",
      "v2": "connector.authorized",
      "payloadDef": "connectorAuthorized",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "connector.auth_expired",
      "v2": "connector.auth-expired",
      "payloadDef": "connectorAuthExpired",
      "status": "decided",
      "review": false,
      "notes": [
        "case/separator normalised"
      ]
    },
    {
      "v1": "authorization.decided",
      "v2": "authorization.decided",
      "payloadDef": "authorizationDecided",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "proposal.created",
      "v2": "proposal.created",
      "payloadDef": "proposalCreated",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "proposal.activated",
      "v2": "proposal.activated",
      "payloadDef": "proposalActivated",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "goal.evaluated",
      "v2": "goal.evaluated",
      "payloadDef": "goalEvaluated",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "goal.closed",
      "v2": "goal.closed",
      "payloadDef": "goalClosed",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "import.applied",
      "v2": "import.applied",
      "payloadDef": "importApplied",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "voice.speech_start",
      "v2": "voice.speech-start",
      "payloadDef": "voiceSpeechStart",
      "status": "decided",
      "review": false,
      "notes": [
        "case/separator normalised"
      ]
    },
    {
      "v1": "voice.transcript",
      "v2": "voice.transcript",
      "payloadDef": "voiceTranscript",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "voice.endpoint_candidate",
      "v2": "voice.endpoint-candidate",
      "v2Override": "voice.endpoint-candidate",
      "payloadDef": "voiceEndpointCandidate",
      "status": "decided",
      "review": false,
      "notes": [
        "case/separator normalised",
        "verb is not past-tense — tense is a C.4 decision, not normalised here"
      ],
      "note": "artifact event; separator normalised"
    },
    {
      "v1": "voice.turn_commit",
      "v2": "voice.turn-commit",
      "payloadDef": "voiceTurnCommit",
      "status": "decided",
      "review": false,
      "notes": [
        "case/separator normalised"
      ]
    },
    {
      "v1": "voice.synthesis_chunk",
      "v2": "voice.synthesis-chunk",
      "v2Override": "voice.synthesis-chunk",
      "payloadDef": "voiceSynthesisChunk",
      "status": "decided",
      "review": false,
      "notes": [
        "case/separator normalised",
        "verb is not past-tense — tense is a C.4 decision, not normalised here"
      ],
      "note": "artifact event; separator normalised"
    },
    {
      "v1": "voice.barge_in",
      "v2": "voice.barge-in",
      "v2Override": "voice.barge-in",
      "payloadDef": "voiceBargeIn",
      "status": "decided",
      "review": false,
      "notes": [
        "case/separator normalised",
        "verb is not past-tense — tense is a C.4 decision, not normalised here"
      ],
      "note": "separator normalised"
    },
    {
      "v1": "voice.cancelled",
      "v2": "voice.cancelled",
      "payloadDef": "voiceCancelled",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "compensation.requested",
      "v2": "compensation.requested",
      "payloadDef": "compensationRequested",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "compensation.started",
      "v2": "compensation.started",
      "payloadDef": "compensationStarted",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "compensation.completed",
      "v2": "compensation.completed",
      "payloadDef": "compensationCompleted",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "compensation.failed",
      "v2": "compensation.failed",
      "payloadDef": "compensationFailed",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "compensation.paused",
      "v2": "compensation.paused",
      "payloadDef": "compensationPaused",
      "status": "decided",
      "review": false,
      "notes": []
    },
    {
      "v1": "compensation.manual_intervention_required",
      "v2": "compensation.manual-intervention-required",
      "payloadDef": "compensationManualInterventionRequired",
      "status": "decided",
      "review": false,
      "notes": [
        "case/separator normalised"
      ]
    },
    {
      "v1": "negotiation.decided",
      "v2": "negotiation.decided",
      "payloadDef": "negotiationDecided",
      "status": "decided",
      "review": false,
      "notes": [],
      "note": "NEW in v2 (RFC 0175 §D.3): no v1 emitter; the v1 name is the v2 name so the codemap stays a total function over the v2 enum. Content-free; peer origin as a digest (RFC 0175 §Unresolved 1)."
    }
  ]
}
