Axioms nectarserve Continuum

Continuum

The foundation nectarserve is built on. Derives from the studio Systems axioms (AX1–AX5) into the theorems and corollaries of a system that reads messages and acts on the world — the Parcel primitive, the 10-gate pipeline, and three levels of memory.

Axioms
T6 · T10–T17 · C1–C14
Version
working
Status
foundation · nectarserve in development
Last updated

Overview

Continuum คือ foundation ของ nectarserve — ระบบที่อ่านข้อความแล้วลงมือกับโลกจริง · ทุกอย่าง derive จาก AX1–AX5

Axioms · Theorems · Corollaries   พิสูจน์แล้ว
Design                            เลือกไว้
รอยต่อ                            จุดที่ต่อกับโลกจริง

Theorems

T1–T5 · T7–T9 เป็น theorem สากล — อยู่ที่ Systems

T6 · เปลี่ยน Resolver ไม่เปลี่ยนสิ่งที่ทำไปแล้ว

จาก T1 + Parcel.provenance (immutable)

เปลี่ยน resolver = เปลี่ยน วิธีทำครั้งต่อไป — ไม่ได้เปลี่ยนสิ่งที่ทำไปแล้ว · provenance เป็น record ที่แก้ไม่ได้

รองรับ — C5

T10 · เวลาที่ผ่านไปโดยไม่ทำงานมีต้นทุน

จาก AX2 + AX3

inaction ไม่ใช่ neutral — โลกขยับระหว่างที่ระบบนิ่ง · idle_ok จึงเป็น constraint ไม่ใช่แค่ alert

T11 · Thread context มี clarity และ staleness เป็นของตัวเอง

จาก AX4 + AX1

จัด thread ผิด → error กระจายแบบ multiplicative ทุก gate หลังจากนั้นทำงานบน context ที่ผิด · staleness ของ thread คือกรณีเฉพาะของ T17 (ความจำทุกชนิด drift)

T12 · Identity confidence กำหนดขอบเขต mandate

จาก AX1 + AX5

confidence สูง → full mandate · confidence ต่ำ → conservative mandate · ต่ำกว่า min → block + verify

T13 · Provenance มีขอบเขตเหมือน Parcel อื่น

จาก T1 + AX2

provenance ยิ่งโต = carrying cost ยิ่งเพิ่ม — ไม่ใช่ free storage · trim ตามกฎ + extract learning data ก่อนเสมอ

รองรับ — C9

T14 · Intent ตัดสินไม่ได้โดยไม่รู้ thread

จาก AX4

“ffffff” อาจเป็น hex color, ความเกรี้ยวกราด, หรือ noise → ต้อง resolve thread ก่อน check intent เสมอ

รองรับ — C8

T15 · Mandate คือ context ที่ครบของ task

จาก AX5 + T9

“ทำ mandate ให้ชัด” = “ทำ context ให้ครบ” = “เพิ่ม clarity” · mandate ที่ไม่ชัด = clarity ต่ำ = execute ไม่ได้

T16 · Gate คือ CommitOperation — pipeline 10 ด่าน

จาก AX1–AX5 + T9 + T14

ทุกข้อความผ่านด่านที่กำหนดไว้แน่นอนก่อน LLM ถูกเรียก — ลำดับนี้ไม่ใช่อิสระ แต่ละด่าน derive จาก axiom:

1.  noise filter      drop ถ้าไม่มีภาษาที่รู้จัก           (AX5)
2.  thread resolve    รู้ context ก่อน                     (AX4)
3.  identity          confidence → ขอบเขต mandate          (T12)
4.  clarity check     block ถ้า < threshold                (AX5 · T9)
5.  idle detect       escalate ถ้านิ่งเกิน                  (T10)
6.  select mandate    block ถ้าไม่มี mandate ตรง            (T15)
7.  constraint check                                       (AX2)
8.  blast radius      external + irreversible → human       (T8)
9.  ack decide                                             (AX3 · T7)
10. dispatch                                               (AX2)

clarity check (4) มาก่อน constraint check (7) เสมอ — ตาม T9

T17 · ความจำคือค่าประมาณที่ drift — จับได้แค่ความแน่ใจ ไม่ใช่ความจริง

จาก AX1 + AX3

ความจำคือ representation lossy (AX1) ของโลกที่ขยับเอง (AX3) · ตอนบันทึก ความจำตรงกับโลก · เวลาผ่าน → ห่างกันโดยไม่มีสัญญาณเตือน · ∴ ทุกความจำมี ความแน่ใจ (ว่ายังตรงจริงไหม) ติดมาเสมอ แยกจากค่าไม่ได้ · วัดตรงๆ ไม่ได้ — ต้อง re-observe และการ re-observe เปลี่ยนสิ่งที่วัด (Observer Effect) → ระบบถือได้แค่ ค่าประมาณของความแน่ใจ ไม่ใช่ความจริง

รองรับ — T11 (กรณีเฉพาะ: thread staleness)

Corollaries

C6 · C7 · C10 · C11 เป็น corollary สากล — อยู่ที่ Systems

C1 · ออกแบบ interaction space ไม่ใช่ entity space

จาก AX1 + T4

entity ที่ model ล่วงหน้า = ทำก่อนจำเป็น · ออกแบบ interaction ที่เกิดจริงแทน แล้ว entity จะ emerge เอง

C2 · ผูกกับ Unix เพราะ interaction surface

จาก C1 + T4

Unix process ที่ไม่รู้จัก manifest → context ผ่านทั้งหมด · ที่รู้จัก manifest → progressive enhancement · สองกรณีไม่ขัดกัน = backward compatible โดยธรรมชาติ

C3 · เข้าใจขอบเขตของงานก่อน เพื่อ optimize ถึงมันได้อย่างตั้งใจ

จาก T3 + T5

ออกแบบก่อนรู้ขอบเขต = เสี่ยง violation โดยไม่รู้ตัว · ออกแบบหลังรู้ขอบเขต = เลือกได้ว่าจะ optimize ที่จุดไหน

C4 · Local ก่อน Cloud เสมอ

จาก AX2 + T1

code ทำได้ → ทำเลย · local LLM พอ → ใช้ local · local ไม่พอ → escalate · ต้อง best จริง → API

C5 · Parcel เดินทาง, ResolverContext ไม่เดินทาง

จาก AX1 + T6

ส่ง Parcel ข้าม boundary ได้เสมอ · environment ปลายทาง execute ด้วย pool ของตัวเอง

C8 · Thread เป็น unit of meaning ไม่ใช่ message

จาก AX4 + T14

ระบบที่รับ message ทีละข้อความโดยไม่รู้ thread = กำลัง execute โดยมี clarity ต่ำโดยไม่รู้ตัว

C9 · Provenance ไม่ใช่ free storage

จาก T13 + AX2

trim ตาม blast_radius + extract learning data ก่อนเสมอ — ของ external + irreversible เก็บนาน · ของ internal + reversible trim เร็ว

C12 · Bootstrap — loop เริ่มได้เมื่อมีครบสาม

จาก AX2 + AX5 + C11

channel (ทางเข้าข้อมูล) + mandate (ขอบเขตที่ทำได้ อย่างน้อยหนึ่ง) + resolver (กลไกประมวลผล) · ต่ำกว่านี้ ingest ได้แต่ act ไม่ได้ · เท่านี้ loop เริ่มได้ — ไม่สมบูรณ์ แต่พอ (C11)

C13 · Complexity อยู่ข้างใน ไม่ใช่ข้างหน้า

จาก C10 + T4

ผู้ใช้เห็น “ลูกค้าทักมา ระบบตอบได้” · ระบบทำ noise → thread → intent → clarity → mandate → … · complexity ที่ซ่อนข้างใน = คุณค่าที่ระบบส่งมอบ · วัด UX ด้วย: “ผู้ใช้ต้องรู้ internal mechanism ไหมถึงใช้ได้?” ถ้าใช่ = ยังซ่อนไม่พอ

C14 · Channel คือหูของ Resolver

จาก C12 + AX4

channel ที่ไม่มี resolver = ท่อ ไม่ใช่ระบบ · channel ได้ความหมายเมื่อ resolver รับมัน · ∴ mental model ที่ถูกคือ “เชื่อม resolver เข้ากับ channel” ไม่ใช่ “เพิ่ม channel แล้ว resolver จะไปอยู่” — resolver เป็นศูนย์กลาง, channel คือ input path ที่ resolver ฟัง

Design

ไม่ใช่ความจริงที่ปฏิเสธไม่ได้ แต่คือ choice ที่ axioms ทำให้สมเหตุสมผลที่สุด

Parcel — primitive เดียวของระบบ

จาก AX1 + T6

Parcel = {
  form:       bytes            ← สิ่งที่ทำไปแล้ว
  manifest:   Context          ← สิ่งที่รออยู่
  provenance: CommitRecord[]   ← ประวัติ immutable
}

Parcel = data เดินทางผ่านระบบได้เสมอ · ResolverContext = runtime รู้จัก environment ไม่เดินทาง · CommitOperation = boundary ที่นิ่งระหว่างสองอย่าง

Memory — สามระดับ

จาก AX1 + AX2 + AX4

memory ≠ log · memory คือ distilled context สำหรับ resolver · เช็คง่าย: “ลบ node นี้แล้ว resolver ตัดสินใจแย่ลงไหม?” ไม่ = เป็นแค่ log

L1 — Raw observation   ลบได้ (log ชั่วคราว · TTL + evict)
L2 — Distilled         ลืมยากแต่ decay ได้ (weight = e^(−λ·days))
L3 — Core pattern      update ได้ถ้าผิด

L2 คือ inference ไม่ใช่ fact — “somchai ชอบกาแฟร้อน” = น่าจะจริง (confidence=0.78) ไม่ใช่ จริงแน่นอน · และ inference ที่พูดออกไปเปลี่ยน state ของลูกค้า → ใช้เงียบๆ เพื่อตัดสินใจเท่านั้น ไม่ประกาศว่ารู้ (Observer Effect · AX3)

รอยต่อ

รอยต่อคือจุดที่ระบบไปต่อกับโลกจริง · ส่วนใหญ่เป็นรอยต่อตื้น — ของจริงเติมค่าครั้งเดียวก็กลายเป็น setting แล้วปิด

แต่มีรอยต่อหนึ่งที่ปิดไม่ได้เลย — ความจำของระบบกับโลกที่มันอ้างถึง · โลกขยับเองได้ (AX3) และการกลับไปเช็กก็เปลี่ยนสิ่งที่วัด (Observer Effect) ช่องว่างนี้จึงไม่มีวันปิดสนิท (T17) · รอยต่อที่เหลืออยู่จริงจึงเป็นเรื่องเดียว — ความแน่ใจของความจำ

ที่ยังเปิดอยู่คือ จะทำให้ความแน่ใจนั้นโผล่ให้เห็นและจัดการยังไง

เพราะความแน่ใจของแต่ละความจำไม่เท่ากัน ระบบจึงแสดงมันไม่เท่ากัน — เงียบกับของที่ยังสด ยกขึ้นเฉพาะของที่ความแน่ใจตก ให้เจ้าของยืนยันเมื่อว่าง · ไม่มีอะไรน่าสงสัยก็ไม่ต้องถาม

ผลคือระบบที่บอกได้ว่าจำอะไรไว้ และไม่แน่ใจกับอันไหน

สองเหตุการณ์ที่ยังเปิดอยู่

ทั้งคู่คือ เหตุการณ์ที่ขยับความแน่ใจ ไม่ใช่ชนิดของความจำ:

#1 · เรียนจากคำติ — เหตุการณ์ที่ แก้ ความแน่ใจ · ลูกค้าบ่น → รู้ว่าความจำหรือการตัดสินใจไหนผิด → ปรับ · แก่นคือ credit assignment: โทษให้ถูกตัวจากสัญญาณที่กำกวม เบาบาง และมาช้า

#2 · เครื่องมือเปลี่ยน — เหตุการณ์ที่ ลด ความแน่ใจ · ความจำที่เรียนจากพฤติกรรมเก่าของเครื่องมืออาจผิดเมื่อเครื่องมือเปลี่ยน → ต้องรู้ว่าความจำชิ้นไหนผูกกับเครื่องมือไหน แล้วดึงความแน่ใจลงให้ทบทวน

ทั้งสองไม่ใช่ฟีเจอร์แยก — ลงเอยที่กลไกเดียวกัน

หลักของชั้นนี้

เริ่มจากสิ่งที่วัดได้ (สังเกต/log ก่อน) → ปล่อยให้ structure emerge → ค่อย tune · กฎที่เขียนก่อนมี data มักผิด จึงให้ของจริงเป็นคนตั้งค่าตรงรอยต่อ ไม่เดาล่วงหน้า (สอดคล้อง C13)