# S3 · Rubric KSEC และหลักฐานที่ตรวจได้

เกณฑ์นี้ใช้กับชิ้นงานบนโต๊ะ `TRAIN-CSS-01` เท่านั้น. K = ความรู้, S = ทักษะ, E = จริยธรรม, C = ลักษณะบุคคลที่สังเกตจากพฤติกรรมในงานนี้. ผู้เขียนมีเพียง expected ของโจทย์; **ไม่มีผลผู้เรียนจริง** (`B/O/D 0/0/0; NOT_RUN`), ไม่มีผู้ตรวจเฉพาะสาขา (`not_assigned; pending_field_review`) และ CLO/PLO ยัง `pending_design`. หากเรียนเดี่ยว ให้ระบุ self-review แทนการอ้างว่ามีผู้ตรวจ. Rubric ไม่ออกใบรับรองบุคคลหรือความพร้อมปฏิบัติ.

| Outcome ID | ผ่านเมื่อมีหลักฐาน | ยังไม่ผ่าน/ต้องแก้เมื่อ |
|---|---|---|
| `APP-CSS-B-K01` | B-v1 อธิบายด้วย R03–R08 ว่าแสง บัง มุม สเกล ตำแหน่งและรุ่นกล้องจำกัดข้ออ้างต่างกัน | ใช้คำว่า “รูปชัดจึงตรวจได้ครบ” หรือสับสน `unknown` กับไม่มีสิ่งผิดปกติ |
| `APP-CSS-B-S01` | ตารางครบ source_row 2–15 แยก baseline 3, candidate 2, history 1 และ unreadable/HOLD 8 พร้อมเหตุและ next_check | ข้าม R08/v0, ยุบสอง revision, เปลี่ยน unreadable เป็น “ไม่พบ”, หรือบอกขนาด R06 |
| `APP-CSS-B-E01` | B-v1 ถอนคำกล่าวปลอดภัย/เสียหายแน่และพัก R09 สิทธิ์ไม่รู้; ติดป้ายข้อมูล/ภาพสร้าง | ส่งข้อมูลแต่งเป็นเหตุจริงหรือแชร์ R09/สรุปโครงสร้างจากภาพ |
| `APP-CSS-B-C01` | มี B-v0/v1, review log อย่างน้อยสองคำทักพร้อมคำตอบ เหตุแก้ owner และวัน/เงื่อนไขทวน | เขียนว่า “แก้แล้ว” โดยไม่มีคำทัก/รุ่นหรือทิ้งข้อค้างไม่มี owner |
| `APP-CSS-O-K01` | O-v1 แยก gate ความสามารถระบบ, ทักษะผู้ควบคุม, คุณภาพภาพ และคำวินิจฉัยผู้ตรวจ พร้อมอธิบายว่าภาพถ่ายไม่แทนสัมผัสวัสดุ | ใช้ผลบินหรือความชัดเป็นหลักฐานโครงสร้างปลอดภัย หรือใช้ข้อกำหนดสหรัฐเป็นกฎหมายไทย |
| `APP-CSS-O-S01` | แผนเจ็ดช่วงเทียบ 4 วิธี, คน/เครื่องมือ requested vs confirmed, เกณฑ์รับก่อนงาน, วิธีซ้ำ/วิธีอื่นต่อ R03–R12 และ fallback | เลือกโดรนจากชื่อประเภทอย่างเดียว หรือถือทรัพยากร requested ว่าพร้อมใช้ |
| `APP-CSS-O-E01` | Package คง unreadable/HOLD/rights unknown และระบุผู้ตรวจมีคุณสมบัติเป็นปลายทาง; handoff ตามเหตุจริง | รับงานทั้งโครงสร้างจากสอง candidate หรือใส่ received/acknowledged โดยไม่มีหลักฐาน |
| `APP-CSS-O-C01` | O-v0/v1 กับ review log อย่างน้อยสองคำทัก, owner, เงื่อนไข/เวลาทวน R03/R08/R09 | ปิดข้อค้างด้วยการคาดเดาหรือไม่มีผู้รับผิดชอบ |
| `APP-CSS-D-K01` | Contract ครบ 24 input fields, composite key/source_row, CAM-A/B calibration, error, evidence level และ claim limit | ทำ `unknown=0`, ไม่เก็บ revision หรือเพิ่มสถานะ `safe` จากคำบรรยาย |
| `APP-CSS-D-S01` | **เมื่อมีการรันจริง** เก็บ hash/command/time/exit/raw/diff ของ baseline 14 แถว, invalid/mutation, before–after และ rollback; ผลตรง expected ในขอบ metadata | ส่งแต่ test plan หรือ expected แทน actual, ไม่ทดสอบ CAM-B/rights/duplicate หรือไม่แสดงการคืนฐาน. หากไม่รันให้ `NOT_RUN` ไม่ให้ผ่าน |
| `APP-CSS-D-E01` | ระบุ `image_binary=NOT_PROVIDED`, สิทธิ์ training_only/unknown และแยก synthetic/author/learner/field; ปฏิเสธ export R09 | แต่ง calibration/ภาพ/ผลผู้เรียนหรือยกระดับ metadata test เป็นการตรวจโครงสร้าง |
| `APP-CSS-D-C01` | D-v0/v1 + issue/reviewer log, trigger rollback, ผล rerun หลังคืน และ owner ข้อค้าง | บอกคืนฐานแล้วโดยไม่มี hash/ผลรัน หรือเปลี่ยน expected เพื่อทำให้ actual ดูผ่าน |

**Gate ร่วม:** แม้ครบ K/S/E/C และภาพที่แสดงอ่านได้ ผู้ตรวจเฉพาะสาขายังต้องกำหนดการตรวจทางวิศวกรรมที่เหมาะสม; P3 คงเปิด. การทดลองผู้เรียน P5 ต้องเก็บชิ้นงาน/คำทัก/ผลทวนจริงของ B/O/D ก่อนอ้างความสำเร็จหลักสูตร. รหัสใหม่ `APP-CSS-*` ออกเพราะโจทย์นี้ใช้ 14 แถวและการเปลี่ยนกล้อง/คำอ่านไม่ได้เฉพาะกรณี; rubric ของ M04/C01 เดิมผูก fixture และพฤติกรรมคนละชุด ไม่ย้ายผลผ่านเดิมมาอ้าง.

## การเทียบรหัสผู้สมัครจากสัญญา S0 ก่อนใช้รหัสใหม่

เทียบเกณฑ์เดิมทีละ ID ตาม [สัญญากรณีศึกษา S0](https://github.com/krich-intratip/Drone-Hub/blob/codex/drone-applications/docs/drone-applications-case-study-contract.md). การตัดสินทุกแถวคือ `new_id_proposed`: รหัสเดิมคงความหมายและ fixture เดิม, รหัสใหม่ใน S3 ยังเป็นผลลัพธ์ที่ออกแบบ ไม่ใช่ผลผ่านหรือ CLO/PLO ที่อนุมัติ. แม้บางพฤติกรรมคล้ายกัน จำนวนแถว ตัวอย่างการทวน และเกณฑ์ละเอียดต่างกัน จึงไม่ `reuse_exact`.

| Candidate S0 | Decision | เหตุไม่ reuse exact → S3 ID |
|---|---|---|
| `APP-M04-B-K01` | `new_id_proposed` | เดิมแยก RGB/thermal กับ I02/I06; S3 ฝึกแสง/มุม/สเกล/CAM-B ของ R03–R08 โดยไม่มี I02/I06 → `APP-CSS-B-K01` |
| `APP-M04-B-S01` | `new_id_proposed` | เดิมคัด 8 rows เป็น 6 targets พร้อมผล 3 usable, F01 ครบ 1/6; S3 คัด 14 แถวเป็น 3+2+1+8 → `APP-CSS-B-S01` |
| `APP-M04-B-E01` | `new_id_proposed` | เดิมแก้ premise “8 รายการไม่มีภาพ” และลดข้อมูลตามสิทธิ์; S3 เป็นคำบรรยายภาพ ไม่มี image binary และต้องพัก R09 → `APP-CSS-B-E01` |
| `APP-M04-B-C01` | `new_id_proposed` | เดิมตาม F02–F06 พร้อม owner; S3 ทวนคำทัก R03/R08 กับ record และ revision คนละชุด → `APP-CSS-B-C01` |
| `APP-M04-O-K01` | `new_id_proposed` | เดิมเทียบ RGB/zoom/thermal และ manual/interface/power/mass/CG ของชุดจริง; S3 ใช้ gate ระบบ/คน/ภาพ/ผู้ตรวจโดยไม่มี spec ชุดจริง → `APP-CSS-O-K01` |
| `APP-M04-O-S01` | `new_id_proposed` | เดิมแผน 7 ขั้นกับ F01 ครบ 1/6 และ F02–F06 ค้าง 5/6; S3 วางแผนกับ 14 แถวและ R03–R12 เฉพาะกรณี → `APP-CSS-O-S01` |
| `APP-M04-O-E01` | `new_id_proposed` | เดิมต้องมี private/public package และ redaction log สองขอบสิทธิ์; S3 ฝึกพัก rights unknown และ handoff ผู้ตรวจ ยังไม่มีสอง package → `APP-CSS-O-E01` |
| `APP-M04-O-C01` | `new_id_proposed` | เดิมติดตามผู้ขอ/ผู้ยืนยัน support กับทางเลือก; S3 เก็บ review log และ owner ของภาพ/กล้อง/สิทธิ์โดยไม่มี support confirmation แบบเดิม → `APP-CSS-O-C01` |
| `APP-C01-D-K01` | `new_id_proposed` | เดิมสูตร sampling/storage และ CAM01–CAM03; S3 ใช้ contract metadata CAM-A/B ไม่มีสูตรเดิม → `APP-CSS-D-K01` |
| `APP-C01-D-S01` | `new_id_proposed` | เดิมทดสอบ expected/actual/replay/rollback ของ fixture กล้องเชิงตัวเลข; S3 ใช้ 14 แถวพร้อม mutation มุม/สิทธิ์/metadata กล้อง → `APP-CSS-D-S01` |
| `APP-C01-D-E01` | `new_id_proposed` | เดิมปฏิเสธ fixture ตัวเลขผิดและไม่แต่ง actual/hardware; S3 ต้องคง `image_binary=NOT_PROVIDED`, rights unknown และไม่ยก metadata เป็น diagnosis → `APP-CSS-D-E01` |
| `APP-C01-D-C01` | `new_id_proposed` | เดิม change record/retest/คืนฐานของ CAM01–CAM03; S3 ทวน R08/R12 และคืน CAM-A โดยรักษา HOLD เฉพาะกรณี → `APP-CSS-D-C01` |

รหัส M05 หรือบทฐานอื่นเป็นแหล่งเรียนต่อ ไม่ย้าย outcome เดิมมาเป็นผลผ่าน. ผู้รับผิดชอบหลักสูตรต้องทวนความซ้ำ/ความครอบคลุมอีกครั้งก่อนกำหนด CLO/PLO.
