# Rubric S1 · น้ำท่วมและการส่งข้อมูลเพื่อการช่วยเหลือ

**ฐานร่วม:** สัญญา S0 อยู่ใน repository ที่ `docs/drone-applications-case-study-contract.md`; ชุดนี้ใช้ `readme.md`, `scenario.csv` และ `expected.csv`. ทุกผล KSEC เป็นเกณฑ์ของ **แบบฝึกโต๊ะ**; ไม่รับรองบิน ค้นหาคน ความปลอดภัย หรือการสื่อสารจริง. CLO/PLO = `pending_design`; P3 ผู้ตรวจเฉพาะสาขา = `not_assigned/pending_field_review`; P5 ผู้เรียน B/O/D = `0/0/0, NOT_RUN`. ผู้ตรวจระบุ evidence ของชิ้นงานจริงก่อนให้ผล; ตัวอย่าง expected ไม่ใช่ผลผู้เรียน.

| Outcome ID | พื้นฐานก่อนทำและเป้าหมาย | กิจกรรม/หลักฐาน **ผ่าน** | ยังไม่ผ่านและงานแก้ |
|---|---|---|---|
| `APP-CSF-B-K01` | อ่านเวลา/รุ่น/coverage/สิทธิ์จาก M06; อธิบายความหมายต่างกัน | B-v1 แยก observed/received/cutoff/decision; R01 revision, R11 duplicate, coverage partial/point/none, observation vs verification, sent/received/acknowledged พร้อมตัวอย่างจาก fixture | เอา receive time แทน observe, คิด unknown=0 หรือส่ง=รับ; อธิบายใหม่ด้วย R04/R11 และ event log |
| `APP-CSF-B-S01` | อ่าน CSV/expected; ทำ brief ที่ตามแถวได้ | ตารางครบ 13 `source_row`, 3 candidate/10 hold-history ตรง expected, สี่ทางเลือกเกณฑ์เดียวกัน, brief มี request/scope/unknowns/limit/owner/handoff | ลบ R11, นับ R01 สองเหตุ, เลือกโดรนอัตโนมัติ; คืนแถวและทวนวิธี |
| `APP-CSF-B-E01` | แยกผู้รับ/สิทธิ์; จำกัดการอ้าง | สอง package ต่างกัน, ไม่เปิด R07/raw rows ต่อ PUBLIC, ไม่กล่าวพบคน/พื้นที่ปลอดภัย, ระบุสิทธิ์ unknown ของ R08 และงานตรวจต่อ | ส่ง restricted หรืออ้างปลอดภัย; ถอน package/คำอ้างแล้วให้ผู้รับทวน |
| `APP-CSF-B-C01` | รับคำทักอย่างมีร่องรอย; แก้ brief | B-v0/v1 + คำทักอย่างน้อย 2 ข้อ, คำตอบ/เหตุแก้หรือคง, owner/เวลาทวน R04/R05-R06/R11, ผลทวนผู้ตรวจ | v1 เปลี่ยนข้อความโดยไม่ตอบคำทักหรือปิดข้อค้างเอง; เติม log และส่งทวน |
| `APP-CSF-O-K01` | รู้บทบาท/ระบบจาก M07/M10; เทียบวิธีตามผลส่งมอบ | ตาราง 4 วิธีและเหตุเลือก/พักด้วย deadline/coverage/QA/rights/cost; เปรียบเทียบ multirotor/fixed-wing/VTOL และ sensor/task fit โดยไม่แต่งสมรรถนะ | อ้าง range/endurance/permission ทั่วไปหรือบังคับโดรน; ขอคู่มือและประเมินใหม่ |
| `APP-CSF-O-S01` | อ่าน resource ledger; วางหกช่วงงาน | O-v1 มี owner/เวลา/หลักฐาน/จุดพัก/fallback ทุกช่วง, QA ครบ 13 แถว, requested/confirmed แยก, manifest และ receipt ที่ไม่ข้ามสถานะ | นับ requested เป็นพร้อม, ข้าม R11/ความขัดแย้ง, กรอก acknowledged เอง; แก้แผนและ log |
| `APP-CSF-O-E01` | รู้สิทธิ์ข้อมูล; ส่งเท่าที่รับได้ | package INCIDENT/PUBLIC, redaction log, R07 restricted เฉพาะผู้รับตามสิทธิ์, unknown/ข้อไม่ยืนยันยังมองเห็น, ไม่ยืนยันคน/เส้นทาง | public มี raw row หรือรายงานความปลอดภัย; ถอน/แก้รุ่นและแจ้งผู้รับเดิมหากเคยส่ง |
| `APP-CSF-O-C01` | รู้ว่า requested ไม่เท่ากับ confirmed; ติดตามการขอ | ledger ระบุผู้ขอ/ผู้มีอำนาจตอบ/หลักฐาน/เวลา/สถานะของทีมและอุปกรณ์, O-v0/v1 ตอบคำทัก 2 ข้อ, owner/ทางเลือกเมื่อไม่ยืนยัน | “ทีมพร้อม” จากคำขออย่างเดียว; คืน pending และทวนตาม owner |
| `APP-CSF-D-K01` | อ่าน schema/เวลา/rights M06/M10; นิยาม contract | D-v1 ระบุ 14 input, logical key+source_row, offset/cutoff/freshness, precedence, output/error, audience filter และ event-state; แยก expected/local/learner/field | parse เวลาที่ไม่มี offset หรือรวม duplicate; แก้ contract ก่อนรันใหม่ |
| `APP-CSF-D-S01` | เขียน parser/test; พิสูจน์ disposition | **ผลรันจริงของผู้เรียน** ที่ตรวจย้อนกลับ 13 row และ mutation normal/duplicate/revision/conflict/missing/boundary/late/invalid/rights/offline-retry; actual เทียบ expected ทุกกรณีพร้อม input/rule hash คำสั่ง เวลา exit และ diff | matrix ที่วางแผนไว้หรือรายงาน `NOT_RUN` อย่างซื่อสัตย์ยังไม่พอให้ผ่าน S01; ต้องรันและแก้ผลต่างก่อนทวน |
| `APP-CSF-D-E01` | รู้ขอบหลักฐาน/สิทธิ์; ปฏิเสธ export เกินขอบ | ทดสอบ R07→PUBLIC ถูกปฏิเสธ, R08/R09 hold, ไม่สร้าง receipt/ack จาก retry, ระบุผลเครื่องไม่ใช่ผลคน/วิทยุ/บิน | leak raw row หรือบอก “ส่งถึงคน” จาก queue; ถอนผลและทดสอบ filter ใหม่ |
| `APP-CSF-D-C01` | รู้ baseline/rollback; ปรับแล้วทวน | D-v0/v1, issue+เหตุ+ผู้แก้/ผู้ตรวจ, trigger/รุ่นคืน, retest รวม duplicate/rights/offline, แจ้งผู้รับหากมีผลผิดส่งไป; คำทัก/คำตอบ 2 ข้อ | แก้แล้วไม่มี retest หรือ rollback plan อย่างเดียว; ทำคืนฐาน/ทวนและคง HOLD จนมีหลักฐาน |

**วิธีให้ผล:** `ผ่าน` เฉพาะเมื่อมีหลักฐานตรงทุกส่วนของแถว; `ต้องฝึกเพิ่ม` เมื่อชิ้นงานมีแต่ผิดเกณฑ์; `ยังไม่มีหลักฐาน` เมื่อไม่ส่ง/ไม่รัน/ไม่มี event นั้น. บันทึก ID, ผู้ตรวจ, วัน, v0/v1, คำทัก/คำตอบ, record/source_row ที่ทวน, เหตุผล และวันทวนใหม่. การตรวจตนเองให้ระบุผู้ตรวจว่าเป็นตนเองและคง P5 `NOT_RUN` ของโครงการจนมีการทดลองที่บันทึกจริง.

## การตัดสินรหัสผู้สมัครจาก S0

ตรวจเกณฑ์เดิมกับ fixture และ rubric นี้ **ทีละ ID** แล้วเลือก `new_id_proposed` ทั้ง 12 ข้อ: พฤติกรรมกว้างใกล้กัน แต่เกณฑ์เดิมผูก E01–E08 / S01–S06, จำนวน 9/6, ผลคัด 3+6, deadline และ interface 12 ช่องของ fixture M06/M07; S1 ใช้ 13 source rows, 3+10, cutoff 10:20, ผู้รับ/สิทธิ์อีกแบบ และ contract 14 ช่อง. การใช้รหัสเดิมจะเปลี่ยนเกณฑ์เงียบ ๆ.

| S0 candidate ID | Decision | เหตุไม่ reuse exact และรหัส S1 |
|---|---|---|
| APP-M06-B-K01 | new_id_proposed | คำศัพท์/เวลา 7 ข้อเดิมเทียบกับ fixture M06; ใช้ APP-CSF-B-K01 |
| APP-M06-B-S01 | new_id_proposed | 9 แถว E01/E03/E07 และ A/B/C 10:30 เดิม; ใช้ APP-CSF-B-S01 |
| APP-M06-B-E01 | new_id_proposed | premise สะพาน/สอง audience เดิมต่างจาก R07/restricted; ใช้ APP-CSF-B-E01 |
| APP-M06-B-C01 | new_id_proposed | ข้อค้าง/คำทักเดิมอ้าง E06 และ B-v0/v1; ใช้ APP-CSF-B-C01 |
| APP-M07-O-K01 | new_id_proposed | 7 เกณฑ์/3 platform เดิมใช้ชุด M07; ใช้ APP-CSF-O-K01 |
| APP-M07-O-S01 | new_id_proposed | 6 sector และ S01/S03/S05 เดิม; ใช้ APP-CSF-O-S01 |
| APP-M07-O-E01 | new_id_proposed | package rights เดิมอ้างจุดค้นหา M07; ใช้ APP-CSF-O-E01 |
| APP-M07-O-C01 | new_id_proposed | mutual aid/คำทัก M07 เดิมใช้ resource อื่น; ใช้ APP-CSF-O-C01 |
| APP-M06-D-K01 | new_id_proposed | R01–R06/schema 12 ช่องเดิม; ใช้ APP-CSF-D-K01 |
| APP-M06-D-S01 | new_id_proposed | normal 9/3+6 และ boundary 0/60/>60 เดิม; ใช้ APP-CSF-D-S01 |
| APP-M06-D-E01 | new_id_proposed | แผน/fixture/export ของ M06 เดิม; ใช้ APP-CSF-D-E01 |
| APP-M06-D-C01 | new_id_proposed | rollback และผลรับผิดของ fixture เดิม; ใช้ APP-CSF-D-C01 |

ID ใหม่เป็นข้อเสนอ mapping สำหรับกรณีนี้ ไม่ได้เปลี่ยน 188 ID เดิมหรือประกาศ CLO/PLO ผ่านแล้ว. ถ้าผู้จัดหลักสูตรจะใช้จริง ต้องตรวจความซ้ำและอนุมัติผลลัพธ์หลักสูตรอีกครั้ง.
