# M05 D ผู้พัฒนา/ผู้ปรับแต่ง: ข้อเสนอ R01–R08 และ D01–D20

ชุด construction-monitoring · ปรับบทฝึก 14 ตุลาคม 2026 · PK-Research / Drone-Hub

ใช้กับ [บท M05](https://drone.pk-research.work/knowledge/drone-applications/construction-monitoring/) และ [rubric](https://drone.pk-research.work/downloads/drone-applications/construction-monitoring-rubric.md) ผลงานเป็นการเรียนด้วยข้อมูลแต่งขึ้น ไม่ใช่ความพร้อมบินหรือการรับรองงานก่อสร้าง ยังไม่มีผู้ตรวจเฉพาะสาขาที่ได้รับมอบหมายและคง pending_field_review; P3 readiness gate ยังเปิด ไม่มีผลผู้เรียน สนามหรือ validator จริง

รหัสผู้เรียน/ทีม: ____ ผู้ตรวจ/บทบาท: ____ วิธีตรวจ (ตนเอง/เพื่อน/ผู้สอน): ____ รุ่นก่อน/หลัง: ____ วันกิจกรรม: ____

## พื้นฐานก่อนออกแบบ

K/S เป็นพื้นฐานที่ตรวจได้จากคำอธิบายและชิ้นงานสั้นตามตาราง E/C เป็นความพร้อมร่วมกิจกรรม เช่น ยอมรับข้อไม่รู้ เก็บต้นฉบับและตอบคำทัก หากยังขาดให้ทำงานเติมก่อนแล้วเก็บผลทวนใหม่ ไม่ติดป้ายคุณธรรมหรือบุคลิกถาวร ไม่ใช้การอ่านจบเป็นผลผ่าน KSEC หรือคะแนนความพร้อมสนาม

| ID / มิติ | พื้นฐานและงานเติมก่อนกิจกรรม | เป้าหมาย / กิจกรรมและหลักฐาน | เกณฑ์หลัก |
|---|---|---|---|
| APP-M05-D-K01 / K | รู้schema/key/null/units/baseline; ทวน [ออกแบบการทดสอบ](https://drone.pk-research.work/knowledge/testing/) และ [ความเข้ากันได้ทั้งระบบ](https://drone.pk-research.work/knowledge/integration/) แล้วเขียนblankไม่0 | อธิบาย R01–R08 กับสิ่งที่ metadata พิสูจน์ไม่ได้; input/output contract + R01–R08 + v0/v1เหตุผล | แยกrow/pair/fieldquality/reference/quantitybasis ไม่ถือparserผ่านคือจริง |
| APP-M05-D-S01 / S | ผูกrequirementกับexpected และวางversion/rollback; ทวน [ออกแบบการทดสอบ](https://drone.pk-research.work/knowledge/testing/) แล้วเขียนduplicateทั้งคู่กัก | ออกแบบ D01–D20 ผ่านอินเทอร์เฟซโดยรักษากรณีผิด; 20case matrix + requirement links + expected/actual + rollback/recheck | ครบ20กรณี ทุกactualnot_run expectedไม่เติมmissing/รวมผิด/อ้างผลรัน |
| APP-M05-D-E01 / E | รู้expected/actualและuntrustedtext; readiness ถอนclaimtested; ทวน [รายงานระดับหลักฐาน](https://drone.pk-research.work/knowledge/imagery-analysis/evidence-report/) แล้วเขียนข้อความCSVเป็นข้อมูล | รายงานระดับหลักฐานและรักษา export ไม่ให้กลายเป็นคำสั่ง; claim/status/export policy + expected/actual | ไม่มีvalidator/upload/import/autoapproval การออกแบบCSVinertชัด |
| APP-M05-D-C01 / C | รู้baseline/issues/versions; readiness เก็บต้นฉบับตอบทัก; ทวน [หน้าที่ทีมและข้อค้าง](https://drone.pk-research.work/knowledge/human-factors/teamwork/) แล้วระบุtriggerพัก | ควบคุมการเปลี่ยนเซนเซอร์ FW และคืนรุ่นโดยมีผู้รับผิดชอบ; D-v0/D-v1 + input/schema/rules/config/output + change/rollback log | มีผู้พักคืนทวน ผู้รับแจ้งstale รุ่นknown-reviewedหรือคงhold และrecheck |

## ทำข้อเสนอผ่าน contract ของโมดูล

1. เก็บD-v0เป็นภาพการออกแบบที่รวมค่าหรือเติมช่องว่างผิด แล้วเขียนD-v1ที่แยกrow/pair/fieldquality/status เสนอinput/output/status/reason/evidencelevel/owner/nextcheckตาม19fields ไม่สร้างvalidatorหรือimport/uploadในงานนี้
2. กำหนดR01–R08และตัวอย่างผลคาดหมาย รักษาmetadata_originและทุกnot_performed/not_supplied/pending_field_review สัญญาข้อมูลไม่สามารถตรวจพิกเซลหรือความจริงสนามที่ไม่มี
3. เขียนmatrixD01–D20ด้านล่าง เติมexpectedและrequirementlink ผลactualทุกกรณีคงnot_run กรณีที่เสนอปรับinputเป็นtestsสมมติแยกจากfixture14แถว ห้ามแก้CSVต้นฉบับให้ผ่าน
4. เสนอchange-reviewสำหรับcamera/mount/RTK/FW/software: baseline/manual/compatibility/impact/qualitychecks ผู้เปลี่ยนผู้ทวนและevidenceที่ต้องมี ไม่รับผลผ่านเดิมเป็นผลชุดใหม่
5. เก็บinput/schema/rules/config/output/baselineรุ่นก่อนหลัง เสนอtriggerพัก/คืน ผู้คืน/ผู้ทวน รุ่นknown-reviewedหรือholdเมื่อไม่มีรุ่นใช้ได้ แจ้งผู้รับstale/replacedและเสนอrecheckD01/D02รวมcaseที่เคยผิดหลังคืน
6. ให้ผู้ตรวจทักCSV/duplicate/denominatorหนึ่งข้อ ตอบทุกทักด้วยเหตุ เก็บD-v0/D-v1 issue/change/rollbacklogและลง4IDในKSECrecord

## เงื่อนไขเวลาในข้อเสนอ D10

เพิ่มในข้อเสนอ R02/R03 และ D10 เดิม: รายงานที่ `issued_at` ใหม่กว่า `captured_at` หรือ `status_date` ต้องไม่ทำให้สถานะภาพหรือแผนเป็น `current` อัตโนมัติ. ทดสอบกรณีแต่งภาพวัน 1, แผนตัดยอดวัน 3, รายงานวัน 5; expected คือเก็บสามค่าแยกกันและคง `hold_missing_progress_record` สำหรับข้อสรุปวัน 3 เมื่อไม่มีบันทึกเชื่อม. หากไม่มีเวลาจริงใน input ให้คง `unknown`, ไม่แปลง `period_day` ของ fixture เป็น timestamp. นี่เป็นการออกแบบเพิ่มเติมใน D10 ไม่เพิ่มรหัสผลลัพธ์ KSEC, ไม่เพิ่มกรณีรัน และ actual ยังคง `not_run`

## Requirements ที่เสนอ ไม่มี implementation

| ข้อเสนอ | Contract และเหตุผลที่ต้องรักษา |
|---|---|
| R01 | อ่าน19fields ชนิด/หน่วย/key/provenance/statusตามสัญญา; เก็บrawข้อความต้นฉบับ แยกnull/invalid/nonfinite ไม่ให้parserพิสูจน์ความจริง |
| R02 | target/planned/proxyเป็นค่าตามนิยามงาน; blankไม่0 zero targetให้undefined; ค่าติดลบ/เกินtargetเปิดreasonให้ทวนตามbasis ไม่clampหรือpassอัตโนมัติ; period_dayมีลำดับและdata-dateขอบชัด |
| R03 | logical keyซ้ำกักทั้งคู่; pairเฉพาะงาน/หน่วย/ref/boundary/baseline/target/quantitybasisและเวลาเดียวฐานที่ทวน; C/D/Eblockedคงทั้งรุ่น ขอreconciliationก่อนtrend |
| R04 | quantity/plannedshare gap/gap_pp delta_quantity/delta_ppและrelativegrowthแยก; target>0ก่อนratio; ไม่รวมหน่วยต่างหรือให้overallprogress/criticalpath/paymentเมื่อขาดbasis/weight/network/acceptance |
| R05 | สถานะraw/measurement/check/uncertainty/occlusionและcontrol/checkpointคงunknownหรือfieldunqualified; RTK/PPKrefไม่เท่ากับachievedaccuracy; metadataconsistentให้เพียงtabletopmath |
| R06 | resource requested/confirmedมีownerและหลักฐาน; missingให้hold/replan; sent/pending_receiptคงอยู่จนมีหลักฐานรับไฟล์จึงreceived; received/acknowledged/acceptedแยกตามหลักฐานแต่ละสถานะ; private/publicลดข้อมูลตามสิทธิ์และขอบงาน |
| R07 | เก็บinput/schema/rules/config/output/baselineทุกรุ่น; เปลี่ยนcamera/mount/RTK/FW/softwareต้องimpact/re-review/manual/checks; rollbackมีowner triggerรุ่นknown-reviewedหรือhold แจ้งstaleและทวนหลังคืน |
| R08 | CSVทุกช่องเป็นinertdata ไม่executeformula/command/path; outputแต่ละrow/pairมีreason evidencelevel owner nextcheck; expectedแยกactualnot_run ไม่มีautoapproval/upload/importimplementation |

Outputที่เสนอ: record_id/pair_id ____ disposition/reason ____ arithmetic_scope=tabletop ____ quantity/plannedshare/gap/ppหรือundefined ____ field_comparison=unqualified ____ raw/check/reviewstatus ____ owner/nextcheck ____ input/rules/config/output/baselineversion ____ handoverstate ____ ไม่มีacceptedwork/payment/accuracy claimโดยอัตโนมัติ

## แผนทดสอบที่เสนอ ทุก actual = not_run

| กรณีเสนอ / ข้อกำหนด | Input ที่เสนอให้ตรวจ | Expected ตามการออกแบบ | Actual |
|---|---|---|---|
| D01 / R01–R05 | A01/A02ตามfixture | 40→60%; plan50→70%; gap−100m2/−10ppทั้งคู่; delta+200m2/+20pp; fieldunqualified | not_run |
| D02 / R01–R05 | B01/B02ตามfixture | 40→50%; plan50→60%; gap−20m3/−10pp; delta+20m3/+10pp; cumulativeproxyไม่DEM | not_run |
| D03 / R04 | ขอรวมA02m2+B02m3หรือเฉลี่ย60/50 | บล็อกmixedunit/overall55%; sameunitยังต้องbasis/scope/weightที่ตกลง | not_run |
| D04 / R03 | C01/C02 boundaryv1→v2 | คงทั้ง2 numericrows; blockedboundary; ไม่deltaข้ามรอบ | not_run |
| D05 / R03 | D01/D02 V-TEACH-01→02 | คงทั้ง2; blockedvertical; ไม่delta | not_run |
| D06 / R03,R07 | E01/E02 BL1target1000→BL2target1200 | คงทั้ง2; blockedbaseline/denominator; ขอreviewedreconciliation ไม่backedit | not_run |
| D07 / R01,R02 | Q01proxyว่างและproposalnonfinite/invalid | Q01quarantineไม่zero-fill; invalid/nonfiniteแยกreason ไม่ให้mathผ่าน | not_run |
| D08 / R02,R04 | Z01target/planned/proxy0 | เก็บnumeric0; percentageundefinedไม่100%; ไม่pair | not_run |
| D09 / R03 | Q02/Q03logicalkeyซ้ำ | quarantineทั้งคู่ ไม่choosefirst/lastหรือเพิ่มปริมาณ | not_run |
| D10 / R02,R03 | proposalสลับแถวday8ก่อน1; ไม่มีdata-dateหรือdayเกินdeclaredcutoff | เรียงตามdeclaredtimeโดยเก็บต้นฉบับ; ขาด/ขัดdata-dateให้holdreasonไม่แก้เวลาเพื่อผ่าน | not_run |
| D11 / R03 | proposalเปลี่ยนcumulativeเป็นstockpile/loose/compactedbasis | blockedbasis ไม่ลบผิวหรือแปลงปริมาณโดยไม่มีbasisที่ทวน | not_run |
| D12 / R05 | ทั้งfixtureQCnot_performed/rawnot_supplied/uncertaintyไม่มี | คงfieldunqualifiedแม้A/Bmathได้ ไม่สร้างcheckpoint/hash/uncertainty | not_run |
| D13 / R05 | proposalพื้นที่ถูกบังบางส่วน | คงcoveragegap/unknown ไม่ตีพื้นที่ไม่เห็นเป็นงานเสร็จหรือศูนย์ | not_run |
| D14 / R02,R04 | proposalproxy1100target1000หรือค่าติดลบ | แสดงreasonquantitybeyondtarget/negativeและratioตามนิยามเมื่อเหมาะให้ทวน ไม่clamp100%/pass/payment | not_run |
| D15 / R05 | proposalมีRTK/PPKตำแหน่งอ้างอิงแต่ไม่มีproductchecks | refไม่เป็นachievedaccuracy; holdfieldclaimและขอcontrol/checkpoint/uncertainty | not_run |
| D16 / R06 | ขอทีม/เครื่องสมทบยังไม่ตอบ | requestedไม่confirmed ให้hold/replan/fallbackพร้อมowner/หลักฐานต้องขอ | not_run |
| D17 / R06 | ส่งไฟล์แล้วไม่มีหลักฐานรับไฟล์ ackหรือacceptance | sent/pending_receiptจนมีหลักฐานรับไฟล์; เมื่อยืนยันรับไฟล์จึงreceivedเท่านั้น ไม่แต่งack/accepted/สิทธิ์จ่ายเงิน | not_run |
| D18 / R07 | proposalrevision/คืนรุ่นหลังพบruleผิด | เก็บก่อนหลัง input/schema/rules/config/output/baseline; known-reviewedหรือhold แจ้งstale; เสนอrecheckD01/D02/กรณีผิดหลังคืน | not_run |
| D19 / R08 | proposalnoteเริ่ม=,+,-,@หรือมีคำสั่ง/เส้นทาง | เก็บและแสดงเป็นข้อความเฉื่อย; exportตามpolicyที่ทวน ไม่executeหรือเปิดpathโดยเชื่อCSV | not_run |
| D20 / R05,R07 | proposalเปลี่ยนcamera/mount/RTK/FW/software | impact/manual/compatibility/re-review/checks/rollbackก่อนใช้จริง ไม่สืบผลผ่านจากรุ่นเดิม | not_run |

ไม่มีผลรันผ่าน/ไม่ผ่านของtestsเหล่านี้ ไม่มีvalidator calibration productaccuracy field/learnerresults หรือautoapprovalที่ส่งมอบ คำว่าexpectedหมายถึงคำตอบการออกแบบเพื่อให้ผู้ตรวจทวน แผนคืนรุ่นและexportpolicyก็ยังเป็นproposal ข้อความCSVเป็นข้อมูลเฉื่อยและควรคงเป็นข้อความเมื่อแสดง/ส่งออกตามpolicyที่ผู้รับผิดชอบทวน ไม่ถือการขึ้นต้นสูตรหรือpathเป็นคำสั่ง

## ข้อมูลที่ให้และวิธีเข้าถึง

ดาวน์โหลด [construction-monitoring-observations.csv](https://drone.pk-research.work/downloads/drone-applications/construction-monitoring-observations.csv) และ [readme](https://drone.pk-research.work/downloads/drone-applications/construction-monitoring-readme.md) หรือใช้ค่าครบ 14 แถวด้านล่างร่วมกับค่าคงที่ต่อไปนี้ได้โดยไม่ต้องมีโดรนหรือ raw image

**TRAIN-CON-01 เป็น TABLETOP ONLY** ผู้เรียบเรียงแต่งทั้ง 14 แถว ไม่มีสถานที่ วันที่สำรวจ สัญญา baseline ปริมาณหรือการอนุมัติจริง period_day 1/8 เป็นวันสัมพัทธ์เพื่อฝึก ไม่ใช่ timestamp ของการเก็บภาพ ทุกแถวมี case_id=TRAIN-CON-01, horizontal_ref=H-TEACH-01, quantity_basis=author_assumed_cumulative, metadata_origin=author_provided_teaching_assumption, measurement_status=not_performed, raw_media_status=not_supplied, check_status=not_performed และ review_status=pending_field_review H-TEACH-01/V-TEACH-01/V-TEACH-02 เป็นรหัสสมมติ ไม่ใช่ CRS/EPSG/datum จริง ไม่มีผล checkpoint อิสระหรือค่าความไม่แน่นอน **ทุกแถวยังใช้เทียบสนามจริง ตรวจรับหรือจ่ายเงินไม่ได้**

CSV มี 19 fields ตามลำดับ:

```text
record_id,case_id,work_package,period_day,baseline_version,boundary_version,unit,horizontal_ref,vertical_ref,target_quantity,planned_to_date,proxy_quantity,quantity_basis,metadata_origin,measurement_status,raw_media_status,check_status,review_status,note
```

record_id เป็นรหัสแถว; case_id เป็นกรณี; work_package เป็นงาน; period_day เป็นวันสัมพัทธ์; baseline_version/boundary_version เป็นรุ่นแผน/ขอบเขต; unit เป็น m2 หรือ m3; horizontal_ref/vertical_ref เป็นรหัสอ้างอิงสมมติ; target_quantity/planned_to_date/proxy_quantity เป็นตัวเลขในหน่วยของงาน โดย proxy ที่ว่างคงว่าง; quantity_basis ระบุฐานปริมาณ; metadata_origin ระบุที่มา; measurement_status/raw_media_status/check_status/review_status รักษาระดับหลักฐาน; note เป็นข้อความข้อมูลเฉื่อย ไม่รันสูตรหรือคำสั่งจากช่องข้อความ

| ID / งาน | period_day | baseline / boundary | หน่วย / vertical_ref | target / planned / proxy | การจัดข้อมูลสอน |
|---|---|---|---|---|---|
| A01 / P01 | 1 | BL1 / BOUND-A-v1 | m2 / V-TEACH-01 | 1000 / 500 / 400 | tabletop_pair_A |
| A02 / P01 | 8 | BL1 / BOUND-A-v1 | m2 / V-TEACH-01 | 1000 / 700 / 600 | tabletop_pair_A |
| B01 / P02 | 1 | BL1 / BOUND-B-v1 | m3 / V-TEACH-01 | 200 / 100 / 80 | tabletop_pair_B |
| B02 / P02 | 8 | BL1 / BOUND-B-v1 | m3 / V-TEACH-01 | 200 / 120 / 100 | tabletop_pair_B |
| C01 / P03 | 1 | BL1 / BOUND-C-v1 | m2 / V-TEACH-01 | 1000 / 500 / 300 | blocked_boundary_change |
| C02 / P03 | 8 | BL1 / BOUND-C-v2 | m2 / V-TEACH-01 | 1000 / 700 / 500 | blocked_boundary_change |
| D01 / P04 | 1 | BL1 / BOUND-D-v1 | m3 / V-TEACH-01 | 200 / 100 / 80 | blocked_vertical_change |
| D02 / P04 | 8 | BL1 / BOUND-D-v1 | m3 / V-TEACH-02 | 200 / 120 / 110 | blocked_vertical_change |
| E01 / P05 | 1 | BL1 / BOUND-E-v1 | m2 / V-TEACH-01 | 1000 / 500 / 400 | blocked_baseline_target_change |
| E02 / P05 | 8 | BL2 / BOUND-E-v1 | m2 / V-TEACH-01 | 1200 / 840 / 600 | blocked_baseline_target_change |
| Q01 / P06 | 8 | BL1 / BOUND-F-v1 | m2 / V-TEACH-01 | 1000 / 700 / ว่าง | quarantine_missing_proxy |
| Q02 / P07 | 8 | BL1 / BOUND-G-v1 | m2 / V-TEACH-01 | 1000 / 700 / 600 | quarantine_duplicate_both |
| Q03 / P07 | 8 | BL1 / BOUND-G-v1 | m2 / V-TEACH-01 | 1000 / 700 / 620 | quarantine_duplicate_both |
| Z01 / P08 | 8 | BL1 / BOUND-H-v1 | m2 / V-TEACH-01 | 0 / 0 / 0 | zero_target_percentage_undefined |

จัดได้ 4 แถวใน 2 คู่ A/B ที่ใช้คณิตศาสตร์ตามสมมติฐานสอนได้; 6 แถวตัวเลขคงไว้ใน 3 คู่ C/D/E ที่บล็อกการเทียบต่างรอบ; 3 แถว Q01/Q02/Q03 กักแยก; และ 1 แถว Z01 ตัวหารศูนย์ ไม่มีร้อยละผ่านจาก 14 แถว C เปลี่ยนขอบเขต D เปลี่ยนระดับอ้างอิง E เปลี่ยน baseline และ target จึงไม่คำนวณ delta ข้ามรอบ Q01 ว่างไม่ใช่ศูนย์ Q02/Q03 มี logical key ซ้ำ (case_id, work_package, period_day, baseline_version) ต้องกักทั้งคู่ ไม่เลือกแถวแรกหรือสุดท้าย Z01 เก็บตัวเลข 0 ได้ แต่ percentage ไม่มีนิยามและไม่มีคู่ต่างรอบ

## Expected authored math สำหรับ contract

quantity_share = 100 × proxy_quantity / target_quantity และ planned_share = 100 × planned_to_date / target_quantity เมื่อ target_quantity > 0; gap = proxy_quantity − planned_to_date; gap_pp = quantity_share − planned_share เมื่อเป็นคู่ฐานเดียวกันในแบบฝึก delta_quantity = proxy รอบหลัง − proxy รอบก่อน และ delta_pp = quantity_share รอบหลัง − รอบก่อน pp หมายถึงจุดร้อยละ

| แถว | quantity_share / planned_share | gap / gap_pp | แนวคำตอบต่างรอบในสอน |
|---|---|---|---|
| A01 | 40% / 50% | −100 m² / −10 pp | A01→A02: +200 m² / +20 pp |
| A02 | 60% / 70% | −100 m² / −10 pp | relative growth = 200/400 ×100 = 50% เป็นคนละความหมายกับ +20 pp |
| B01 | 40% / 50% | −20 m³ / −10 pp | B01→B02: +20 m³ / +10 pp |
| B02 | 50% / 60% | −20 m³ / −10 pp | relative growth = 20/80 ×100 = 25% เป็นคนละความหมายกับ +10 pp |

ค่าข้างต้นเป็น **authored cumulative quantity proxy** ไม่ใช่งานที่วัดหรือรับแล้ว B01/B02 ไม่ใช่ผลลบผิว DEM หรือกองวัสดุที่สังเกตจริง ห้ามบวก m² กับ m³ หรือเฉลี่ย 60% กับ 50% เป็นความคืบหน้าโครงการ 55% แม้หน่วยเหมือนกันก็ต้องตกลงนิยาม ขอบเขตและน้ำหนักก่อนรวม ชุดนี้ไม่มีน้ำหนัก มูลค่า EVM schedule network ผลตรวจรับ หรือ measured uncertainty จึงไม่ให้ความคืบหน้ารวม เส้นทางวิกฤต การจ่ายเงิน หรือการผ่านคุณภาพจากตาราง

## ตรวจตนเองและแก้ส่งซ้ำ

| ID | ต้องแสดงตามเกณฑ์ | ตัวอย่างต้องแก้ | ตัวอย่างมีหลักฐานตามเกณฑ์ | แก้และตรวจซ้ำ |
|---|---|---|---|
| APP-M05-D-K01 | แยกrow/pair/fieldquality/reference/quantitybasis ไม่ถือparserผ่านคือจริง; ใช้ input/output contract + R01–R08 + v0/v1เหตุผล | ตัวตรวจยืนยันrawหรือaccuracyจากRTKflag | สัญญาคงprovenanceและfieldunqualifiedแม้A/Bคำนวณได้ | เติมreasonและunknownในcontract แล้วทวนกับผู้ตรวจ |
| APP-M05-D-S01 | ครบ20กรณี ทุกactualnot_run expectedไม่เติมmissing/รวมผิด/อ้างผลรัน; ใช้ 20case matrix + requirement links + expected/actual + rollback/recheck | เขียนDผ่านแล้วหรือclampเกินtargetเป็น100% | คงproposalsnot_run และreasonแต่ละcaseรวมtime/CSV/FW | เติมกรณีหรือexpectedที่ขาด แล้วทวนD01/D02/failedproposalหลังคืนรุ่น |
| APP-M05-D-E01 | ไม่มีvalidator/upload/import/autoapproval การออกแบบCSVinertชัด; ใช้ claim/status/export policy + expected/actual | ประกาศระบบทดสอบแล้วหรือให้สูตรจากCSVทำงาน | รายงานnot_runและการแสดงข้อความเฉื่อยตามสิทธิ์พร้อมข้อจำกัด | ถอนclaimเกินหลักฐานและทวนexportpolicyซ้ำ |
| APP-M05-D-C01 | มีผู้พักคืนทวน ผู้รับแจ้งstale รุ่นknown-reviewedหรือคงhold และrecheck; ใช้ D-v0/D-v1 + input/schema/rules/config/output + change/rollback log | ทับbaselineหรือคืนv0ที่ผิดแล้วเรียกพร้อมใช้ | รักษาทุกรุ่นและขอre-reviewเมื่อcamera/mount/RTK/FW/softwareเปลี่ยน | เติมเจ้าของtriggerผลกระทบและการทวนหลังคืน แล้วให้ผู้รับอ่านกลับ |

หลักฐานต้องมีR01–R08/D01–D20กับactualnot_run, contract/status/reasons, D-v0/D-v1 และversion/change/rollback/recheckproposal ใช้มีหลักฐานตามเกณฑ์/ต้องฝึกเพิ่ม/ยังไม่มีหลักฐานรายID ไม่ประกาศtestedหรือfieldready แหล่ง/ขอบอ่านอยู่ในบทM05 เกณฑ์ชุดจริงและอำนาจรับงานยังต้องมีผู้รับผิดชอบกับหลักฐานจริง

ใบงาน rubric และ fixture ที่เรียบเรียงใหม่โดย PK-Research / Drone-Hub ใช้ [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/) ระบุผู้เรียบเรียง ชุด/รุ่น แหล่งและสิ่งที่เปลี่ยน เอกสารอ้างอิง โลโก้และสื่อภายนอกคงสิทธิ์เจ้าของเดิม ไม่ขยายสิทธิ์จากใบอนุญาตชุดเรียน
