# TaskUpdate

يُعدِّل مهمة موجودة — حالتها أو محتواها أو ملكيتها أو بياناتها الوصفية أو حواف تبعياتها. هكذا تتقدم المهام عبر دورة حياتها وكيف يُسلَّم العمل بين Claude Code وزملاء الفريق والوكلاء الفرعيين.

## متى يُستخدم

- نقل مهمة عبر سير عمل الحالة أثناء عملك عليها.
- ادعاء مهمة بإسناد نفسك (أو وكيل آخر) بوصفك `owner`.
- تحسين `subject` أو `description` بعد أن تتعلم المزيد عن المشكلة.
- تسجيل تبعيات مُكتشفة حديثاً بـ `addBlocks` / `addBlockedBy`.
- إرفاق `metadata` منظَّم مثل معرفات تذاكر خارجية أو تلميحات أولوية.

## المعاملات

- `taskId` (سلسلة، مطلوب): المهمة المراد تعديلها. احصل عليها من `TaskList` أو `TaskCreate`.
- `status` (سلسلة، اختياري): واحدة من `pending` أو `in_progress` أو `completed` أو `deleted`.
- `subject` (سلسلة، اختياري): عنوان أمري بديل.
- `description` (سلسلة، اختياري): وصف مفصل بديل.
- `activeForm` (سلسلة، اختياري): نص دوَّار بديل بصيغة المضارع المستمر.
- `owner` (سلسلة، اختياري): مُعرِّف وكيل أو زميل فريق يتحمل المسؤولية عن المهمة.
- `metadata` (كائن، اختياري): مفاتيح بيانات وصفية لدمجها في المهمة. اضبط مفتاحاً على `null` لحذفه.
- `addBlocks` (مصفوفة سلاسل، اختياري): معرفات مهام تحجبها هذه المهمة.
- `addBlockedBy` (مصفوفة سلاسل، اختياري): معرفات مهام يجب أن تكتمل قبل هذه.

## سير عمل الحالة

دورة الحياة خطية عمداً: `pending` → `in_progress` → `completed`. `deleted` نهائية وتُستخدم لسحب مهام لن يُعمل عليها أبداً.

- اضبط `in_progress` في اللحظة التي تبدأ فيها العمل فعلاً، لا قبل ذلك. يجب أن تكون مهمة واحدة فقط `in_progress` في كل مرة لمالك معين.
- اضبط `completed` فقط عندما يكتمل العمل تماماً — معايير القبول مُلبَّاة، الاختبارات ناجحة، المخرجات مكتوبة. إذا ظهر عائق، أبقِ المهمة `in_progress` وأضف مهمة جديدة تصف ما يجب حله.
- لا تُعلِّم مهمة `completed` أبداً عندما تفشل الاختبارات، أو يكون التنفيذ جزئياً، أو واجهت أخطاء غير محلولة.
- استخدم `deleted` للمهام المُلغاة أو المُكررة؛ لا تُعد توظيف مهمة لعمل غير مرتبط.

## أمثلة

### مثال 1

ادعِ مهمة وابدأها.

```
TaskUpdate(
  taskId: "t_01HXYZ...",
  status: "in_progress",
  owner: "main-agent"
)
```

### مثال 2

أنهِ العمل وسجل تبعية متابعة.

```
TaskUpdate(
  taskId: "t_01HXYZ...",
  status: "completed"
)

TaskUpdate(
  taskId: "t_01FOLLOWUP...",
  addBlockedBy: ["t_01HXYZ..."]
)
```

## ملاحظات

- `metadata` يدمج مفتاحاً بمفتاح؛ تمرير `null` لمفتاح يُزيله. استدعِ `TaskGet` أولاً إن لم تكن متأكداً من المحتويات الحالية.
- `addBlocks` و`addBlockedBy` تُلحق حوافاً؛ لا تُزيل الحواف الموجودة. تعديل الرسم البياني تدميرياً يتطلب سير عمل مخصصاً — استشر مالك الفريق قبل إعادة كتابة التبعيات.
- أبقِ `activeForm` متزامناً عندما تُغير `subject` حتى يستمر نص الدوَّار في القراءة طبيعياً.
- لا تُعلِّم مهمة `completed` لإسكاتها. إذا ألغى المستخدم العمل، فاستخدم `deleted` مع سبب موجز في `description`.
- اقرأ أحدث حالة لمهمة بـ `TaskGet` قبل التحديث — قد يكون زملاء الفريق قد غيروها بين آخر قراءة وكتابتك.
