Systems
Cross-product axioms for building software systems — the portable spine: representation loss, finite resources, an independent world, context, and clarity. AX1–AX5 plus the theorems and corollaries that follow.
Overview
ทุกระบบที่เราสร้างทำสิ่งเดียวกัน — จดของจริงลงเป็นข้อมูล แล้วลงมือจากสิ่งที่จดไว้ · แต่ byte ที่จำค่า 74 ลืมไปแล้วว่ามันเคยแปลว่าอะไร · ระหว่างสิ่งที่จดกับของจริงที่มันชี้ไป มีรอยห่างที่ปิดไม่ลง — และทุกอย่างในหน้านี้ตามมาจากรอยห่างนั้น
ห้า axiom ข้างล่างจริงกับทุกระบบที่ต้อง ตัดสินใจแล้วลงมือกับของจริง ไม่ว่าจะสร้าง product ตัวไหน · ชุดนี้ derive ระหว่างสร้าง nectarserve — ซอฟต์แวร์ตัวแรกของสตูดิโอ — แต่ axiom เองไม่ผูกกับมัน · ส่วนที่เป็นของ nectarserve โดยเฉพาะอยู่ที่ Continuum ซึ่ง derive ลงมาจากชุดนี้
ขอบเขต: AX1–AX5 · T1·T3·T4·T5·T7·T8·T9 · C6·C7·C10·C11 — axiom ที่พกพาได้กับทุกระบบที่ตัดสินใจแล้วลงมือกับของจริง
Axioms
ห้าข้อนี้เราเลือกตั้งเป็นจุดเริ่มเอง แล้วสร้างทุกอย่างในหน้านี้ขึ้นจากมัน
AX1 · ทุก representation สูญเสียข้อมูลบางส่วนเสมอ
การบันทึกสิ่งใดลงในรูปแบบใด ย่อมเสียข้อมูลในมิติที่ไม่ได้บันทึก — คานเสียรูปเมื่อรับน้ำหนัก นั่นคือธรรมชาติ ไม่ใช่ความบกพร่อง · representation ที่ดีไม่ใช่อันที่สมบูรณ์ แต่คืออันที่ loss เล็กกว่า threshold ของ decision ที่ต้องทำ
เกณฑ์ — “ผิดแล้ว decision เปลี่ยนไหม?” · ไม่เปลี่ยน = พอแล้ว · เปลี่ยน = ต้องปรับ รองรับ — T1 · T3 · T4 · C11
AX2 · ณ เวลาหนึ่ง ทรัพยากรมีจำกัด
ไม่ว่า moment ใดของการตัดสินใจ ทรัพยากรที่ใช้ได้จริง ณ ขณะนั้นไม่มี infinity
รองรับ — T1 · T5 · C10
AX3 · ของจริงเปลี่ยนเองได้ โดยไม่ขึ้นกับระบบ
“ส่งงานสำเร็จ” ≠ “ผลสำเร็จ” — พนักงานวางพัสดุหน้าบ้าน ถ่ายรูป กลับไป = ส่งแล้ว · แต่ถ้าลมพัดพัสดุหาย ผู้รับยังไม่กลับบ้าน = ไม่รู้ผล · state ที่ถูกคือ pending ไม่ใช่ delivered
รองรับ — T7 · T8 · C6
AX4 · ความหมายเชิงปฏิบัติของ message ขึ้นกับ context ที่สะสมมาก่อน
“โอนเงินไปแล้วครับ” — รู้ว่าเป็นการแจ้งโอนเงิน (semantic) แต่ไม่รู้โอนให้ใคร เพื่ออะไร (pragmatic) → ระบบที่ต้อง act on ทำอะไรไม่ได้ · หน่วยที่ระบบ act on ได้คือ thread ไม่ใช่ message เดี่ยว
รองรับ — T11 · T14 · C8 (ที่ Continuum)
AX5 · ข้อมูลไม่พอ แก้ปัญหาไม่ได้ — ไม่ว่า resolver จะแรงแค่ไหน
clarity ≥ threshold → แก้ได้ · clarity < threshold → ต้องถามหรือ drop ไม่ใช่เดา · threshold ไม่ใช่ตัวเลขสากล ขึ้นกับ decision: “ไม่รู้ field นี้ → resolver ตัดสินใจผิดในแบบที่รับไม่ได้ไหม?”
รองรับ — T9 · C7 · C11
บันทึกคือภาพนิ่ง · ของจริงไม่เคยนิ่ง
รอยห่างเมื่อกี้ไม่ได้แค่ มีอยู่ — มันยัง กว้างขึ้นเรื่อยๆ หลังจากที่เราจด เพราะ AX3 บอกว่าของจริงเดินต่อตลอดเวลา ส่วนบันทึกหยุดค้างอยู่กับที่
ตอนจด บันทึกตรงกับของจริงพอดี · จากวินาทีนั้นของจริงก็เดินจากไป ส่วนบันทึกยังค้างอยู่ที่เดิม · สิ่งที่เราถือจึงไม่ใช่ “ความจริงตอนนี้” แต่เป็น ภาพนิ่ง ณ เวลาที่เห็นล่าสุด — ยิ่งนานนับจากตอนนั้น ของจริงยิ่งเดินห่างออกไป
และเรารู้ของจริงแค่ ตอนที่มองมัน · ช่วงที่ไม่ได้มอง เราไม่รู้เลยว่ามันเดินไปไกลแค่ไหน — จะถือว่า “ค่านี้ยังตรงอยู่” ก็เป็นได้แค่ การเดาที่ดีที่สุดเท่าที่มี ไม่ใช่สิ่งที่ยืนยันได้ · (จะยืนยันต้องกลับไปมองใหม่ และการกลับไปมองก็เปลี่ยนสิ่งที่มอง)
∴ บันทึกทุกชิ้นมาพร้อมคำถามเดียว: ของจริงเดินห่างไปแค่ไหนแล้ว? — ยิ่งห่าง ยิ่งไม่แน่ใจ · ตอบได้คร่าวๆ จาก เวลาที่ผ่าน × ความเร็วที่ของชนิดนั้นเปลี่ยน — ชื่อร้านเดินช้า (ห่างเป็นปี) ยอดสต็อกเดินเร็ว (ห่างเป็นชั่วโมง) · สิ่งที่เราถือจริงๆ จึงไม่ใช่แค่ ค่า แต่เป็น ค่า + เวลาที่เห็น + ความเร็วที่มันเปลี่ยน
สรุปได้แล้ว — บันทึกคือภาพนิ่งของของจริงที่ยังเดินอยู่ · “เห็นเมื่อไหร่” สำคัญพอ ๆ กับ “ค่าอะไร” ยังสรุปไม่ได้ — แต่ละชนิดเดินเร็วแค่ไหน และจะทำให้ “ระยะที่ห่าง” โผล่ให้คนเห็นและจัดการยังไง · ยังเป็นรอยต่อที่เปิดอยู่ — nectarserve ลงมือกับมันใน Continuum (T17 + รอยต่อความแน่ใจของความจำ)
Theorems
Theorem ในที่นี้ = ข้อที่ตามมาจาก axiom อย่างสอดคล้อง ไม่ใช่บทพิสูจน์เชิงรูปนัย · เลขคือรหัส ไม่ใช่ลำดับอ่าน — มีช่องว่างได้ (ไม่มี T2, T6 อยู่ที่ Continuum) และไม่ไล่เลขใหม่เพราะรหัสถูกอ้างฝังในโค้ดแล้ว
| รหัส | ใจความ | จาก |
|---|---|---|
| T1 | ต้นทุนเกิดที่การทำ ไม่ใช่ที่การมีอยู่ | AX1 · AX2 |
| T3 | งานต่างชนิดมีขอบเขตต่างกัน — เลือก resolver ให้ตรง | AX1 |
| T4 | คุณค่าเกิดจาก action ที่ทำไปแล้ว | AX1 |
| T5 | ระบบที่ดีรู้ขอบเขตตัวเอง เข้าใกล้อย่างตั้งใจ | T1 · T3 · AX2 |
| T7 | ส่งแล้ว ≠ ได้รับแล้ว — external มีสอง completion | AX3 |
| T8 | blast radius กำหนด authority ที่ต้องการ | AX3 · T7 |
| T9 | clarity ต่ำกว่า threshold → ไม่ควร execute | AX5 |
T5 ขยายความ: เมื่อ constraint active จุด optimal มักถูกผลักไปชนขอบของ feasible region · ขอบเขตจึงเป็นสิ่งที่ต้องรู้จักและเข้าถึงได้แม่นยำ ไม่ใช่สิ่งที่ต้องหลีกเลี่ยง
Corollaries
| รหัส | ใจความ | จาก |
|---|---|---|
| C6 | internal fail fast · external fail never | T8 · AX3 |
| C7 | เพิ่ม clarity ก่อน execute ดีกว่า retry ทีหลัง | AX5 · T9 |
| C10 | เงียบคือ default สื่อสารคือ exception | AX2 |
| C11 | sufficient fidelity ไม่ใช่ perfect fidelity | AX1 · AX5 |