# S5 · ชุดฝึกลำเลียงและรับมอบในพื้นที่เข้าถึงยาก

`TRAIN-CSL-01` เป็น **synthetic_training_data** สำหรับอ่านบนโต๊ะ. `scenario.csv` มี 16 บรรทัดข้อมูล (source_row 2–17) และ `expected.csv` มี 16 บรรทัดที่ผูก source_row เดียวกัน. เวลาเป็น ISO 8601 พร้อม `+07:00` ในวันที่สมมติ 13 ตุลาคม 2026; `RELAY-A`, `SITE-C`, `BOAT-C` และรหัสอื่นเป็นบทบาท/ทรัพยากรแต่ง ไม่มีพิกัดโลก. ของที่ใช้ในโจทย์เป็น connector kit ทั่วไปที่แต่งขึ้น ไม่ใช่ยา ตัวอย่างชีวภาพ หรือวัตถุที่ผ่านการจำแนกขนส่งจริง. ภาพ WebP เป็นสื่อสร้างใหม่และ **ไม่ใช่ภาพของแถว CSV**

## ขอบโจทย์

ถามว่า “จาก Q-A/Q-B/Q-C และทรัพยากรที่เจ้าของตอบไม่เท่ากัน ควรเสนอทางเลือก/ข้อค้างอย่างไร?” ผลที่ส่งได้คือ **แผนเสนอเพื่อทวน** พร้อมเจ้าของข้อค้าง ไม่ใช่คำสั่งบิน คำอนุญาต ข้อรับรอง payload หรือใบรับมอบ. เปรียบเทียบภาคพื้น/บริการ/โดรนด้วยความต้องการ เวลา ผู้รับ ทรัพยากรและหลักฐานเดียวกัน. การยืนยันของเจ้าของในโจทย์เป็นเหตุการณ์แต่ง ไม่ยืนยันสต็อก/เรือ/ผู้รับจริง. ไม่มีมวล จุดศูนย์ถ่วง พลังงาน สภาพอากาศ พื้นที่บินหรือข้ออนุญาตจริง จึงไม่สามารถสรุป go/no-go ภาคสนามหรือเลือกเครื่องรุ่นจริงจากไฟล์นี้

## พจนานุกรมคอลัมน์

| คอลัมน์ | ความหมายและค่าที่ไม่ทราบ |
|---|---|
| `scenario_id`, `record_id`, `revision` | คีย์โจทย์/รายการ/รุ่น; คีย์ร่วม `(scenario_id, record_id, revision)` ต้องไม่ซ้ำ ยกเว้น MSG-A/v0 สองแถวที่ตั้งใจให้ตรวจ duplicate; Q-A และ STOCK-A v0→v1 เป็นประวัติ ไม่ใช่ duplicate |
| `observed_at`, `source` | เวลาแต่งพร้อม offset และชนิดแหล่ง `SYN-*` ทุกแถว; ไม่ใช่เวลาเหตุจริงหรือ source ต้นทางที่ได้รับสิทธิ์ |
| `coverage`, `uncertainty`, `status` | ขอบเหตุการณ์และสิ่งไม่รู้เป็นรหัส; `scenario_only` คือหลักฐานในโจทย์เท่านั้น; `unknown` ไม่เท่ากับศูนย์; `hold` ห้ามแปลงเป็นพร้อมใช้ |
| `rights`, `recipient` | ทุกแถว `training_only`; ผู้รับเป็นรหัสบทบาท; `unknown` ให้พักการแชร์และขอผู้รับที่มีหน้าที่ |
| `event_type`, `request_id`, `resource_id`, `owner_role` | เหตุการณ์ คำขอ ทรัพยากรและเจ้าของในโจทย์; `none` แปลไม่เกี่ยวข้อง มิใช่ทรัพยากรศูนย์ |
| `quantity`, `unit` | จำนวนชุด (`kit`) หรือ package สำหรับข้อความ; `unknown/not_applicable` ไม่มีจำนวนให้คำนวณ และ **ไม่ใช่มวลบรรทุก** |
| `valid_until`, `ref_record`, `detail` | เวลาสิ้นสุดคำยืนยันของเจ้าของ/รายการอ้างอิง/คำอธิบาย. `not_applicable` ไม่ใช่การยืนยันไม่หมดอายุ; `unknown` ต้องขอข้อมูล |
| `expected.csv: source_row` | เลขบรรทัดจริงเริ่ม 2 เพื่อผูกแถว duplicate ที่มีคีย์เดียวกัน; `input_revision`, `rule_revision`, `expected_status`, `reason`, `next_check` เป็นแนวคำตอบผู้เขียน ไม่ใช่ผลรัน |

ไฟล์เป็น UTF-8 คั่นด้วย comma, หัวตารางหนึ่งแถว, ไม่มีตัวเลขพิกัดหรือข้อมูลบุคคลจริง. รักษา raw scenario ไว้ ไม่แก้ทับเมื่อทำใบงาน

## กฎ CSL-RULE-v1

1. เลือกรุ่นปัจจุบันจากประวัติที่ระบุชัด: Q-A/v1 แก้จำนวน 4→3; STOCK-A/v1 เป็นคำยืนยันเจ้าของ **ในโจทย์** ถึง 09:00. เก็บ v0 ทั้งคู่ไว้ตรวจย้อนหลัง. รุ่นใหม่ไม่ได้ลบประวัติ
2. `requested` ของ STOCK-B ไม่เพิ่มยอดพร้อมใช้. `ALLOC-A` กันสามชุดให้ Q-A ในโจทย์เท่านั้นและห้ามนับซ้ำให้ Q-B. การกันไม่ใช่คำสั่งส่งหรือหลักฐานว่าชุดอากาศยานรองรับ
3. Q-A/v1 เป็นเพียง `planning_candidate_only`; AIR-A/ห้วงอากาศ unknown, มวล/พลังงาน/คน/จุดรับและสิทธิ์ปฏิบัติจริงยังไม่มี. PLAN-A เวลา 09:05 เกิน `valid_until=09:00` จึงพักจนเจ้าของยืนยันใหม่
4. Q-B พักเพราะผู้รับ unknown และ STOCK-B ยัง requested. Q-C มีทางเลือก BOAT-C ที่เจ้าของตอบในโจทย์ จึงเสนอ **ตรวจแผนภาคพื้น** ไม่ถือว่าเรือใช้งานจริงแล้ว
5. คีย์ MSG-A/v0 ซ้ำสองแถว (source_row 13–14): เก็บทั้งสองและพักการตีความ retry. MSG-A/v1 เป็น `sent_in_scenario` ของ **planning package**, ไม่มี `received` หรือ `acknowledged`. HAND-A เป็นช่องใบรับของว่าง ไม่มีสิ่งของถูกส่งหรือรับจริง. การส่งแผนไม่ใช่การส่งสินค้า
6. `expected.csv` ต้องมี 16 แถว source_row 2–17 ตามลำดับ, ทุกแถวอ้างคีย์ต้นทางที่ตรง และคงสถานะ hold/unknown ทั้งหมดตามเหตุ. ไม่มีผลผ่านเชิงความพร้อมหรือร้อยละภารกิจสำเร็จ

## วิธีทวนและระดับหลักฐาน

อ่าน `scenario.csv` ทั้ง 16 แถว ทำคำตอบเองก่อนเปิด `expected.csv`; เก็บฉบับ B/O/D v0, คำทัก, v1 และเจ้าของข้อค้าง. ใช้ [rubric](rubric.md) เทียบราย KSEC. ผู้พัฒนาที่รัน verifier ต้องบันทึก input SHA-256, คำสั่ง, เวลา, exit status, raw result และ diff แยกเป็น `local_author_run` หรือผลผู้เรียนจริงตามผู้รัน; การมี expected ไม่ใช่ผลรัน. ป้าย `source_row` ช่วยพิสูจน์ duplicate และแถวเก่าโดยไม่ยุบข้อมูล

ระดับหลักฐาน ณ เผยแพร่: `synthetic_training_data` + `expected_training_result`; ผลตรวจในเครื่องผู้เขียนบันทึกแยก; `learner_result=NOT_RUN` (B/O/D = 0/0/0), `field_verified_result=NOT_RUN`, specialist=`not_assigned`, P3=`pending_field_review`, CLO/PLO=`pending_design`. ข้อกำหนดไทยและการปฏิบัติจริงต้องตรวจจากหน่วยงาน/คนมีหน้าที่ในวันและพื้นที่จริง. CPX-Sim ยังพัก
