Skip to the content.

Task 74 — NATS JetStream ack/fail implementation

Phase: 5 Initiative: 45 Status: done Owner: — Slug: nats-jetstream-ack

Goal

NatsTaskQueue.AckAsync и FailAsync (Mesh/Backends/Nats/NatsTaskQueue.cs:266-278) — no-ops (await Task.CompletedTask). JetStream ack/nak никогда не отправляется → сообщения redeliver’ятся бесконечно (до MaxDeliver/AckWait). Это критический баг: задача считается “обработанной”, но остаётся в потоке и доставляется снова и снова. Дополнительно MaxDeliver = 10 hardcoded.

Acceptance criteria

Sub-tasks

Scope / Likely files

src/agent/Mesh/Backends/Nats/NatsTaskQueue.cs, src/agent/Mesh/Backends/Nats/NatsMeshConfig.cs, src/agent/Mesh/Abstractions/ITaskQueue.cs (metadata field)

Dependencies

Implementation notes

2026-08-14

Реализовано:

src/agent/Mesh/Backends/Nats/NatsTaskInFlightTracker.cs (новый файл, 60 строк) — внутренний tracker:

src/agent/Mesh/Backends/Nats/NatsTaskDlqStore.cs (новый файл, 160 строк) — локальный DLQ на JSONL-файле:

src/agent/Mesh/Backends/Nats/NatsTaskQueue.cs — рефакторинг:

src/agent/Mesh/Backends/Nats/NatsMeshConfig.cs — новые поля:

Тесты (3 файла, 31 тест):

Validation:

Изменённые файлы:

Risks / Rollback

NATS client API может отличаться между версиями; проверить совместимость с установленной NATS.Net package. Rollback: вернуть no-ops (но баг останется). Если NATS backend не используется в production — понизить priority.