ข้ามไปยังเนื้อหา

/investigate

/investigate <ปัญหาหรือการตัดสินใจ> [--compare]

ใช้ขั้นนี้เมื่อคุณยังรู้ไม่พอที่จะเขียนข้อตกลงที่เชื่อถือได้เท่านั้น มันเป็นขั้นเดียวในวงจรที่เป็นตัวเลือก และการหยิบมาใช้โดยอัตโนมัติมีแต่จะเพิ่มเวลา

เหตุผลที่ควรใช้จริง ๆ

  • ยังไม่รู้ต้นตอของปัญหา
  • มีหลายแนวทางที่ tradeoff ต่างกันอย่างมีนัยสำคัญ
  • ข้อจำกัดเรื่อง compatibility หรือ migration ยังไม่ชัด
  • เป็นเส้นทางโค้ด brownfield ที่ไม่คุ้นเคย
  • เป็น external API ที่ยังไม่ได้อ่านเอกสารตาม version, success path หรือ failure behavior

เขียน input เป็นการตัดสินใจที่คุณตัดไม่ลง ไม่ใช่คำสั่งให้ไป implement อะไร

/investigate why profile updates occasionally overwrite newer data

ถ้าเป็น change ที่มีอยู่แล้ว ให้ใส่ ID พร้อมคำถามใหม่

/investigate add-profile: should updates use last-write-wins or optimistic locking?

agent จะอ่านโค้ดที่เกี่ยวข้องแล้วแยกผลลัพธ์ออกเป็น

  • ข้อเท็จจริงที่ยืนยันจากโค้ดจริง
  • สมมติฐาน ที่ยังไม่ได้พิสูจน์
  • ข้อจำกัด และขอบเขตที่ได้รับผลกระทบ
  • ตัวเลือก พร้อม tradeoff
  • สิ่งที่ยังไม่รู้ ซึ่งต้องให้คุณตัดสินใจ

การแยกนี้คือคุณค่าทั้งหมดของขั้นนี้ เพราะสิ่งที่นำเสนอเป็นข้อเท็จจริงกับสิ่งที่เป็นแค่การเดา นำไปสู่ change ที่ต่างกันมาก และการยุบสองอย่างนี้รวมกันคือวิธีที่ข้อตกลงห่วย ๆ เกิดขึ้น

มันจะจบด้วยหนึ่งในสามอย่างนี้เท่านั้น

ready for /change
needs user decision
not worth changing

not worth changing เป็นผลลัพธ์ที่ถูกต้องและมีประโยชน์

ขั้นสำรวจเป็น read-only ต่อโค้ดของโปรดักต์และ OpenSpec สิ่งเดียวที่เขียนได้คือบันทึกการสำรวจที่ openspec/investigations/<name>.md และเขียนก็ต่อเมื่อผลการสำรวจต้องคงอยู่จริง ๆ

สำหรับทางเลือกด้าน experience, API หรือสถาปัตยกรรมที่ยังตัดสินไม่ได้จริง ๆ ให้เติม --compare

/investigate dashboard filter interaction --compare

จะได้ทางเลือกแบบเบาและใช้แล้วทิ้ง 3–5 แบบใต้ .foundation/prototypes/<id>/ ในโหมดนี้ agent เขียนได้ เฉพาะ ในไดเรกทอรี prototype เท่านั้น ไม่แตะโค้ดโปรดักต์ ไม่แตะ OpenSpec และไม่เพิ่ม lifecycle state ใด ๆ

มันจะเขียน selection.md เสมอ เพื่อบันทึกตัวเลือกที่เลือก เหตุผล ทางเลือกที่ตัดทิ้ง และ path ของ artifact และเมื่อหลักฐานตัดสินไม่ได้ มันจะถามคุณแทนที่จะเลือกเอง

ไปต่อที่ข้อตกลงพร้อมแนบตัวเลือกที่เลือกไว้

/change <intent> --prototype-selection <selection-path>

/change จะสรุปการตัดสินใจนั้นลงใน proposal และ design แต่จะไม่ถือว่าตัวเลือกหรือ artifact ของมันเป็นหลักฐาน สำหรับ integration บันทึกจะเก็บ source กับ version ของเอกสารให้ชัด /change จึงบังคับ scenario ทั้ง success และ failure ส่วน API ที่ยังไม่อ่านหรือไม่มี version เป็น research boundary ไม่ใช่ contract ที่เดาได้