{"record":{"id":"aa1d6a3b69a902f1","repo":"agalwood/Motrix","slug":"delivery-is-not-legal","errorCode":null,"errorMessage":"delivery is not legal","messagePattern":"delivery is not legal","errorType":"validation","errorClass":"RangeError","httpStatus":null,"severity":"error","filePath":"src/core/inspector-activity/validators.ts","lineNumber":177,"sourceCode":"export function validateHistoryEventInput(input: TaskHistoryEventInput): void {\n  assertTaskId(input.taskId)\n  assertPositiveSafeInteger(input.eventOrdinal, 'eventOrdinal')\n  assertBoundedText(input.eventKey, 'eventKey', MAX_EVENT_KEY_LENGTH)\n  assertBoundedText(\n    input.runtimeGeneration,\n    'runtimeGeneration',\n    MAX_EVENT_KEY_LENGTH\n  )\n  assertPositiveSafeInteger(input.occurredAt, 'occurredAt')\n  assertNonNegativeSafeInteger(input.occurredMonotonicMs, 'occurredMonotonicMs')\n  if (!EVENT_KIND_VALUES.has(input.kind)) {\n    throw new RangeError('kind is not a legal history event kind')\n  }\n  if (!ACCURACY_VALUES.has(input.accuracy)) {\n    throw new RangeError('accuracy is not legal')\n  }\n  if (!DELIVERY_VALUES.has(input.delivery)) {\n    throw new RangeError('delivery is not legal')\n  }\n  assertStatus(input.fromStatus, 'fromStatus')\n  assertStatus(input.toStatus, 'toStatus')\n  if (input.toStatus === null) {\n    throw new RangeError('toStatus is required')\n  }\n  assertBoundedText(input.errorCode, 'errorCode', MAX_ERROR_CODE_LENGTH)\n  assertBoundedText(\n    input.errorMessage,\n    'errorMessage',\n    MAX_ERROR_MESSAGE_LENGTH\n  )\n  assertBoundedText(\n    input.errorDetailKey,\n    'errorDetailKey',\n    MAX_ERROR_DETAIL_KEY_LENGTH\n  )\n  assertBoundedDetailParams(","sourceCodeStart":159,"sourceCodeEnd":195,"githubUrl":"https://github.com/agalwood/Motrix/blob/1a708ee57746c434e2c67a44bbf0906a976afea4/src/core/inspector-activity/validators.ts#L159-L195","documentation":"`input.delivery` must be `TaskHistoryDelivery.Initial` (`'initial'`) or `TaskHistoryDelivery.Retry` (`'retry'`). It marks whether the event is submitted for the first time or redelivered after a failure. Throws this `RangeError` on any other value.","triggerScenarios":"A redelivery path that forgets to set `delivery: 'retry'`, an external caller using `'retransmit'` or omitting the field, or a defaulting layer producing `undefined`.","commonSituations":"New retry infrastructure not setting the flag; tests building events without the delivery context; consumers bridging an external protocol without a delivery concept.","solutions":["Set `delivery` at the boundary: `Initial` on first submission, `Retry` on every redelivery.","Reference the enum, not the literal.","Reject events at the IPC edge whose delivery is not one of the two values."],"exampleFix":"// before\ninput.delivery = attemptCount > 0 ? 'retransmit' : 'first'\n// after\ninput.delivery = attemptCount > 0 ? TaskHistoryDelivery.Retry : TaskHistoryDelivery.Initial","handlingStrategy":"type-guard","validationCode":"import { TaskHistoryDelivery } from '@shared/types/task-inspector-activity'\nfunction coerceDelivery(attempt: number): TaskHistoryDelivery {\n  return attempt > 0 ? TaskHistoryDelivery.Retry : TaskHistoryDelivery.Initial\n}","typeGuard":"import { TaskHistoryDelivery } from '@shared/types/task-inspector-activity'\nconst DEL = new Set(Object.values(TaskHistoryDelivery))\nfunction isDelivery(v: unknown): v is TaskHistoryDelivery {\n  return typeof v === 'string' && DEL.has(v)\n}","tryCatchPattern":null,"preventionTips":["Set delivery explicitly at every submission site.","Track attempt count and derive delivery from it."],"tags":["validation","range-error","enums","delivery"],"backgroundTag":null,"analyzedSha":"1a708ee57746c434e2c67a44bbf0906a976afea4","analyzedAt":"2026-08-12T16:18:09.346Z","schemaVersion":2},"datasetVersion":"2026-08-12T23:17:12.415Z"}