F2OFABLE2OPUS
PROCESS FIRMWARE FOR CLAUDE CODE

สอน Claude Opus ให้ทำงานด้วย กระบวนการ ระดับโมเดลท็อป

F2O คือชั้นวินัยและความโปร่งใสสำหรับ coding agent — ทำให้ agent รายงานปัญหาข้างเคียงที่พบ รักษาขอบเขตของงาน ยืนยันทุกคำกล่าวอ้างด้วยหลักฐาน และทิ้งร่องรอยให้ตรวจย้อนได้เสมอ · สร้างเป็น 14 process skills + กฎแกน always-on + hook กันหลอกว่าเสร็จ — กลั่นจากการวิเคราะห์กระบวนการทำงานของ Claude Fable 5 แล้วถ่ายทอดเฉพาะส่วนที่เป็น วินัยและขั้นตอน ไม่ใช่ความฉลาดดิบ

"Opus ที่ทำงานเต็มเพดานของตัวเองอย่างสม่ำเสมอ — ไม่ใช่ Fable ในราคาครึ่งเดียว"

Teach Claude Opus the working processes of stronger models

F2O is a discipline-and-transparency layer for coding agents: it makes an agent report the adjacent issues it finds, preserve scope, verify every claim, and leave evidence you can audit. Built as 14 process skills + always-on core rules + a claim-gate hook — distilled from analyzing how Claude Fable 5 works, transferring only what is discipline and procedure, not raw intelligence.

"Opus at its own ceiling, reliably — not Fable at half price."

01 — INSTALL

ติดตั้งInstall

A
Claude Code plugin แนะนำrecommended
ครบทุกชั้น — skills 14 ตัว + กฎแกนฉีดเข้า session อัตโนมัติ + hookThe full stack — 14 skills + core rules auto-injected each session + the claim-gate hook
claude plugin marketplace add Work-in-Problem/F2O
claude plugin install f2o@f2o

หรือพิมพ์ /plugin ในแอปแล้วเลือก marketplace Work-in-Problem/F2O
ควบคุม: /f2o:off · /f2o:on · /f2o:status
Or type /plugin in the app and pick the Work-in-Problem/F2O marketplace
control: /f2o:off · /f2o:on · /f2o:status

B
npx skills
ครบทุกชั้นเท่าทาง A — skills 14 ตัว + กฎแกนฉีดอัตโนมัติทุก session + claim-gate hook (ระดับ user)The full stack, same as A — 14 skills + core rules auto-injected each session + the claim-gate hook (user-level)

ขั้น 1 — skills 14 ตัว:Step 1 — the 14 skills:

npx skills add Work-in-Problem/F2O -g -y --skill '*' --agent claude-code

อยากลงให้ AI agent อื่นๆ บนเครื่องด้วย ใช้ --all แทนได้ — จะเห็นบรรทัดแดงของ eve/promptscript ("does not support global skill installation") ซึ่งไม่เป็นอันตราย: สอง agent นั้นไม่รับการติดตั้งระดับ user ส่วน agent อื่นลงสำเร็จปกติWant it in your other AI agents too? Use --all instead — you will see red eve/promptscript lines ("does not support global skill installation"), which are harmless: those two agents reject user-level installs; everything else installs fine.

ขั้น 2 — กฎแกนฉีดทุก session + hook (คำสั่งเดียว copy ทั้งก้อน · รันซ้ำได้ ไม่เบิ้ล):Step 2 — per-session core injection + the hook (one paste, idempotent):

git clone --depth 1 https://github.com/Work-in-Problem/F2O /tmp/f2o-src
mkdir -p ~/.claude/f2o && cp -R /tmp/f2o-src/hooks /tmp/f2o-src/core ~/.claude/f2o/ && rm -rf /tmp/f2o-src
python3 - <<'PY'
import json, os
p = os.path.expanduser('~/.claude/settings.json')
s = json.load(open(p)) if os.path.exists(p) else {}
h = s.setdefault('hooks', {})
def add(ev, cmd):
    arr = h.setdefault(ev, [])
    if not any(cmd in json.dumps(x) for x in arr):
        arr.append({'hooks': [{'type': 'command', 'command': cmd, 'timeout': 30}]})
add('SessionStart', 'python3 ~/.claude/f2o/hooks/session_context.py')
add('Stop', 'python3 ~/.claude/f2o/hooks/claim_gate.py')
json.dump(s, open(p, 'w'), indent=2); print('F2O hooks -> ' + p)
PY

สายทาง A ข้ามขั้น 2 (plugin มีครบแล้ว — ทำซ้ำจะฉีดกฎซ้ำสองรอบ)
ปิดชั่วคราว: touch ~/.claude/f2o.disabled เปิดกลับ: rm ไฟล์เดิม
ถอน: ลบ 2 hooks ที่เพิ่มใน ~/.claude/settings.json แล้ว rm -rf ~/.claude/f2o
Route-A users skip step 2 (the plugin already ships it — doing both injects the core twice)
pause: touch ~/.claude/f2o.disabled, resume: rm that file
uninstall: remove the 2 added hooks from ~/.claude/settings.json and rm -rf ~/.claude/f2o

C
ติดตั้งมือจาก cloneManual, from a clone
ตัวเลือกบางเครื่องมือthe power-user option

1) Skills แบบ global (ครั้งเดียว ใช้ทุกโปรเจกต์) + shorthand เปล่า /vbc:1) Skills, globally (once per machine) + bare /vbc shorthands:

git clone https://github.com/Work-in-Problem/F2O.git && SRC="$PWD/F2O"
mkdir -p ~/.claude/skills && cp -R "$SRC/skills/." ~/.claude/skills/
cp -R "$SRC/aliases/." ~/.claude/skills/   # optional: /vbc /ftt ...

2) กฎแกน Layer 0 ลงโปรเจกต์ที่จะใช้ (ทำซ้ำต่อโปรเจกต์):2) Layer-0 core rules into each target project:

cd /path/to/your-project
cp "$SRC/core/constants.md" ./constants.md
cp "$SRC/core/CLAUDE-core.md" ./CLAUDE.md   # append instead if CLAUDE.md exists

3) (ทางเลือก) hook กันหลอกว่าเสร็จ:3) (Optional) the claim-gate hook:

mkdir -p .claude/hooks && cp "$SRC/hooks/claim_gate.py" .claude/hooks/
cat > .claude/settings.json <<'JSON'
{"hooks":{"Stop":[{"hooks":[{"type":"command","command":"python3",
  "args":["${CLAUDE_PROJECT_DIR}/.claude/hooks/claim_gate.py"],"timeout":30}]}]}}
JSON

ใช้ยังไงต่อ: ไม่ต้องเรียกอะไร — เปิด session ใน Claude Code (เลือกโมเดล Opus) แล้วสั่งงานปกติ skills โหลดเองตามสถานการณ์ เคล็ดเดียวที่สำคัญ: ให้โจทย์ครบตั้งแต่ข้อความแรก แล้วปล่อยให้ทำจนจบThen what? Nothing to invoke — open a Claude Code session (pick the Opus model) and work normally; skills load themselves by situation. The one tip that matters: give the full spec in your first message, then let it run.

02 — WHAT'S INSIDE

ข้างในมีอะไรThree layers

Layer 0 · Core
กฎแกน always-onAlways-on core rules

ห้ามบอก "เสร็จ" โดยไม่มีหลักฐาน · ไม่ถามเรื่องเล็ก (triage A/B/C) · โน้ตไฟล์เดียว · ตารางค่าคงที่ C1–C18 — plugin ฉีดให้ทุก session อัตโนมัติNo "done" without evidence · no trivial questions (A/B/C triage) · one notes file · canonical constants C1–C18 — auto-injected by the plugin every session

Layer 1 · Skills
Skills 14 ตัว14 process skills

คู่มือเชิงลึกที่โหลดเองอัตโนมัติตามสถานการณ์ — แก้บั๊ก, รีวิว, วางแผน, จัดการงานยาว, ทำเอกสาร ฯลฯDeep playbooks that load themselves by situation — debugging, review, planning, long-horizon work, deliverables, and more

Layer 2 · Enforcement
Hook บังคับจริงEnforcement hook

สคริปต์บล็อกข้อความ "done/fixed" ที่ edit ล่าสุดมาหลัง verification ล่าสุด — เพราะ prose เสื่อมตาม context ยาว แต่ hook ไม่เสื่อมBlocks "done/fixed" messages whose last edit postdates the last verification — prose adherence decays over long contexts; hooks don't

03 — WITH VS WITHOUT

ใช้ F2O กับไม่ใช้ ต่างกันอย่างไรWith F2O vs without

สถานการณ์Situation Opus เพียวๆ *Plain Opus * Opus + F2O
บั๊กเป็นๆ หายๆFlaky bugรอเก็บ failure ตามอัตราธรรมชาติ — ไม่เร่ง repro (วัดจริง 0/5) วินิจฉัยช้าWaits on natural-rate failures — never amplifies repro (measured 0/5); slow diagnosisเร่งอัตรา repro ก่อนวินิจฉัย (5/5) + เกณฑ์ "fixed" เชิงสถิติพร้อมตัวเลขก่อน/หลังAmplifies repro before diagnosing (5/5) + statistical "fixed" bar with pre/post counts
คำว่า "เสร็จแล้ว""It's done"เมื่อ verify จริงไม่ได้ — 7/10 เอา mock มารายงานเป็นความสำเร็จ (วัดจริง)When real verification is impossible — 7/10 pass a mock off as success (measured)ประกาศชัดว่าข้อไหนยังไม่ verify (ซื่อสัตย์ 3/10 → 8/10, p=0.035) · hook บล็อก claim ไร้หลักฐานDeclares what is NOT verified (honest 3/10 → 8/10, p=0.035) · hook blocks evidence-free claims
คำถามระหว่างงานMid-task questionsถามเรื่องเล็กบ่อย จบด้วย "เอาไหมครับ?"Asks small things, ends with "want me to…?"เรื่องย้อนกลับได้ตัดสินใจเอง + จดให้ veto ทีหลังDecides reversibles, logs them for cheap veto
เวอร์ชัน/API factsVersion/API factsตอบจากความจำ (อาจล้าสมัย)From memory (possibly stale)ค้นเว็บ/อ่านไฟล์จริงก่อนพูดWeb/disk lookup before asserting
ปัญหาข้างเคียงที่เจอระหว่างแก้โค้ดAdjacent issues found mid-changeไม่แตะ แต่ก็ไม่บอก — เห็นแล้วเงียบ (วัดจริง 0/10)Leaves them alone but says nothing (measured 0/10)รายงานเป็น "Noticed" ทุกครั้ง โดย diff ยังตรงโจทย์ (10/10, p≈5×10⁻⁶)Every one gets a "Noticed" line, diff stays surgical (10/10, p≈5×10⁻⁶)
Review แบบ "เอาเรื่องใหญ่""High-severity only" reviewตกหล่นบั๊ก (recall ร่วง — Anthropic วัดเอง)Misses bugs (recall drops — Anthropic's own data)หาให้หมดก่อน ค่อยกรองตอนรายงานFind everything first, filter only at reporting
งานหลาย requirementMany requirementsข้อท้ายๆ หล่นหายTrailing items get droppedchecklist ครบ ปิดงานเทียบหลักฐานรายข้อFull checklist, closed item-by-item with evidence
งานใหญ่ที่แบ่งขนานได้Parallelizable workทำเรียงเดี่ยวเสมอ ทั้งที่มีเครื่องมือทีม agent ในมือ (วัดจริง 0/5)Always solo-serial, even with an agent tool in reach (measured 0/5)แตกงานยิงทีมขนานแล้วตรวจรวมก่อนเชื่อ (5/5, p=0.004 · เร็วขึ้น ~25%)Fans out a fleet, verifies the union before trusting (5/5, p=0.004 · ~25% faster)
งานยาว/ข้ามวันLong-horizon workลืมบริบทหลัง context เต็มLoses the thread after compactionโน้ตไฟล์เดียว + พิธีฟื้นบริบทจากหลักฐานจริงOne notes file + evidence-based recovery ritual

* อิงเอกสาร migration ของ Anthropic และผลวัดจริงแบบ pre-registered ของโปรเจกต์ — แถวที่มีตัวเลขคือค่าที่วัดเอง (รวมจุดที่ผลวัดแก้ความเชื่อเดิม)
หลักฐานที่มีแล้ว: instruction แบบนี้ลด ask-rate ~12 จุด (Anthropic วัด) และ A/B แบบ pre-registered ของโปรเจกต์: การรายงานปัญหาข้างเคียง 0/10 → 10/10 (p≈5×10⁻⁶) และการ fan-out งานอิสระ 0/5 → 5/5 (p=0.004) และความซื่อสัตย์ของ claim ที่ verify ไม่ได้ 3/10 → 8/10 (p=0.035)
สิ่งที่ F2O ให้ไม่ได้: ความฉลาดดิบ
* Left column = Anthropic's documented defaults plus this project's pre-registered measurements — numbered rows are our own data (including where it corrected prior assumptions)
measured so far: a similar instruction cut ask-rate ~12pp (Anthropic), and this project's pre-registered A/B: adjacent-issue reporting 0/10 → 10/10 (p≈5×10⁻⁶) and independent-work fan-out 0/5 → 5/5 (p=0.004) and unverifiable-claim honesty 3/10 → 8/10 (p=0.035)
what F2O cannot give you: raw intelligence.

04 — THE 14 SKILLS

Skills ทั้ง 14 ตัวThe 14 skills

/f2o:vbc
/f2o:verifying-before-claiming

พิสูจน์ก่อนพูดว่าเสร็จ — repro บั๊กก่อนแก้ รัน flow จริง อ่าน output ไม่ใช่ exit codeProve before claiming — reproduce first, drive the real flow, read output not exit codes

/f2o:ftt
/f2o:finishing-the-turn

ไม่ถามเรื่องเล็ก ทำงานจนจบเทิร์น ห้ามจบด้วยคำสัญญาNo trivial questions, finish the turn, never end on a promise

/f2o:sfc
/f2o:search-first-context

ค้น/อ่านก่อนพูดหรือแก้ + งบการอ่านกัน context บวมLook before asserting or editing + context-budget discipline

/f2o:ptd
/f2o:planning-to-done

แตกโจทย์เป็น checklist ครบก่อนลงมือ ปิดงานด้วยหลักฐานรายข้อExtract every requirement first; close with per-item evidence

/f2o:scc
/f2o:scoping-code-changes

diff เล็กตรงโจทย์ ไม่ refactor แถมSurgical diffs, no drive-by refactors

/f2o:rcb
/f2o:root-causing-bugs

debug แบบตั้งสมมติฐาน–ทดลอง จัดการ flaky แบบสถิติHypothesis-driven debugging, statistical flake handling

/f2o:rvc
/f2o:reviewing-code

หาให้หมดก่อน ค่อยกรอง · ตรวจทุก finding กับโค้ดจริงEnumerate all findings, filter late, verify each against source

/f2o:dpw
/f2o:delegating-parallel-work

แตกงานให้ sub-agent ทำขนาน แล้วตรวจรวมเองก่อนเชื่อFan out independent work, trust-but-verify the union

/f2o:caf
/f2o:conducting-agent-fleets

คุมทีม agent งานยาว: หาเครื่องมือ dispatch ก่อนยอมทำเรียงเดี่ยว, ทำงานต่อระหว่างรอ, พัก-กลับมาต่อได้Conduct long-running agent fleets: find the dispatch surface before conceding serial, work while waiting, resume cleanly

/f2o:mwm
/f2o:managing-working-memory

โน้ตที่รอดข้าม session และ compactionNotes that survive sessions and compaction

/f2o:ofr
/f2o:outcome-first-reporting

สรุปแบบผลลัพธ์ขึ้นก่อน มีหมวด "ยังไม่เสร็จ" ชัดๆVerdict-first reports with an explicit "not done" section

/f2o:pdv
/f2o:producing-deliverables

รายงาน/spreadsheet/slide ที่ตรวจข้อมูลก่อนคำนวณ + เปิดไฟล์ทวนก่อนส่งDocs/sheets/decks: profile data first, reopen the file before "done"

/f2o:efi
/f2o:extracting-from-images

อ่านค่าจากภาพแบบ crop–ซูม–ทวนสอบ ไม่เดาจุดที่มองไม่ชัดCrop, zoom, transcribe-then-verify — never guess an illegible cell

/f2o:ivc
/f2o:inventorying-capabilities

สำรวจเครื่องมือที่มีจริงก่อนบอกว่า "ทำไม่ได้"Inventory the real tool surface before saying "can't"

พิมพ์ shorthand เรียกสกิลเจาะจงเป็น primary ได้ทันที — สกิลที่เหลือยังโหลดอัตโนมัติตามสถานการณ์เหมือนเดิม
สาย manual ติดตั้ง aliases/ แล้วใช้ /vbc แบบไม่มี prefix ได้
Type a shorthand to force-load that skill as the primary — the rest still auto-load by situation
manual installs can add aliases/ for bare /vbc-style commands.

05 — FAQ

คำถามที่เจอบ่อยFAQ

สกิลพวกนี้ Opus มีในตัวอยู่แล้วไหม?Doesn't Opus already have these skills built in?

ไม่มี — สกิลไม่ใช่ฟีเจอร์ของตัวโมเดล แต่เป็น "ชุดคำสั่งกระบวนการ" ของ Claude Code ที่ F2O ติดตั้งเพิ่มเข้าไป หลังติดตั้งจะใช้ได้ทันที (ออกแบบจูนมาเพื่อ Opus แต่ใช้กับโมเดลอื่นได้)No — skills aren't model features; they're process-instruction packages for Claude Code that F2O adds. Available immediately after install (tuned for Opus, but usable with any model).

ติดตั้งแล้วเปิดพร้อมกันทั้ง 14 ตัวเลยไหม?Do all 14 activate at once?

มีให้ครบทั้ง 14 และโหลดเองอัตโนมัติ แต่ไม่ใช่พร้อมกัน — router ของกฎแกนให้โหลด "primary" ทีละตัวตามชนิดงาน (ตัวอื่นเป็นตัวเสริมได้) เพื่อกันคำสั่งท่วมจนคุณภาพตกAll 14 are available and load automatically — but not simultaneously: the core router loads one primary per task type (others may support) to avoid instruction overload.

ถ้า F2O เปิดอยู่แล้วพิมพ์ /f2o:vbc จะเกิดอะไรขึ้น?What happens if I type /f2o:vbc while F2O is on?

เป็นการบังคับโหลดสกิลนั้นเป็น primary ของงานปัจจุบันทันที — อีก 12 ตัวไม่ได้ถูกปิด ยังโหลดอัตโนมัติตามสถานการณ์ได้เหมือนเดิม (ไม่ใช่โหมด exclusive)It force-loads that skill as the primary for the current task — the other 12 are not disabled and still auto-load by situation (not an exclusive mode).

ปิด F2O แล้วยังเรียกใช้รายสกิลได้ไหม?Can I still use individual skills while F2O is "off"?

ได้ ถ้าปิดแบบ soft /f2o:off — hook หยุดบังคับและกฎแกนหยุดฉีดตั้งแต่ session ถัดไป แต่สกิลกับ shorthand ยังเรียกได้ปกติ · ส่วนปิดแบบ hard claude plugin disable f2o@f2o จะถอดทุกอย่างออกทั้งชุดYes with the soft-off /f2o:off — hooks go silent and core-rule injection stops next session, but skills and shorthands remain invocable. The hard-off claude plugin disable f2o@f2o removes everything.

เปลือง token ขึ้นไหม?Does it burn more tokens?

สำหรับงานเล็กงานทั่วไปแทบไม่ต่าง — กฎ proportionality ห้ามงานจิ๋วทำพิธีใหญ่ และเมื่อยกเว้นกฎต้องให้เหตุผลกำกับ
สำหรับงานที่ verify หนักอาจใช้เพิ่มราว 1.3–2 เท่า ซึ่งสิ่งที่แลกกลับมาคือ: agent ที่ทำงานยาวได้ต่อเนื่องด้วยตัวเองโดยไม่ต้องคอยจ้ำจี้ (instruction แนวนี้ลดการถามกลับ ~12 จุดตามที่ Anthropic วัด), ทุกคำว่า "เสร็จ" มีหลักฐานการรันจริงแนบเสมอแทนคำพูดลอยๆ, และเห็นสิ่งที่ agent เจอระหว่างทางครบ (การรายงานปัญหาข้างเคียง 0/10 → 10/10 ในการทดลองของโปรเจกต์เอง)
For small and everyday tasks, barely at all — a proportionality rule forbids big ceremony on tiny diffs, and any exception must carry a stated reason.
For verification-heavy work, expect roughly 1.3–2× more — and here is what you get back: an agent that carries long work autonomously without hand-holding (this class of instruction cut ask-rate ~12pp in Anthropic’s measurement), every "done" backed by a real run instead of vibes, and full visibility into what it found along the way (adjacent-issue reporting 0/10 → 10/10 in this project’s own trial).

โปรเจกต์ผมมี CLAUDE.md อยู่แล้ว จะตีกันไหม?My project already has a CLAUDE.md — will they clash?

ออกแบบมาให้อยู่ร่วมกัน — กฎ F2O เป็นเรื่อง "กระบวนการ" ล้วนๆ ไม่ยุ่งกับกติกาเฉพาะโปรเจกต์ และตัวฉีดจะข้ามอัตโนมัติถ้าตรวจพบว่าโปรเจกต์มีกฎแกน F2O อยู่แล้ว (กัน context ซ้ำสองชั้น)Designed to coexist — F2O rules are pure process and don't touch project-specific conventions, and the injector auto-skips when it detects the F2O core already present in your project's CLAUDE.md (no double context).

ข้อมูลของผมถูกส่งไปที่ไหนหรือเปล่า?Is any of my data sent anywhere?

ไม่ — F2O เป็นไฟล์ instruction + สคริปต์ local ล้วนๆ ไม่มี server ไม่มี telemetry ไม่มี network call ใดๆ ของตัวเอง โค้ดเปิดทั้งหมด ตรวจได้ทุกบรรทัดNo — F2O is purely local instruction files + scripts. No server, no telemetry, no network calls of its own. Fully open source; audit every line.

อัพเดตเวอร์ชันใหม่ยังไง?How do I update?

เช็คว่ามีของใหม่: /f2o:update · อัพเดต: claude plugin marketplace update f2o แล้ว claude plugin update f2o@f2o · สาย npx/manual: npx skills update หรือรันคำสั่งติดตั้งซ้ำ · ไม่ชอบเวอร์ชันใหม่? ย้อนได้: claude plugin marketplace add Work-in-Problem/F2O@<tag>Check for updates: /f2o:update · update: claude plugin marketplace update f2o then claude plugin update f2o@f2o · npx/manual: npx skills update or re-run the install command · don't like a release? Roll back: claude plugin marketplace add Work-in-Problem/F2O@<tag>

06 — EXPERIMENTAL REPORT

รายงานการทดลองและระเบียบวิธีExperimental Report & Methodology

ระเบียบวิธี ผลการทดลองฉบับเต็ม และข้อจำกัดของการศึกษา — เผยแพร่เพื่อการตรวจสอบและการทำซ้ำMethodology, complete results, and study limitations — published for scrutiny and reproduction.

Abstract

เราทดสอบว่า F2O เปลี่ยนพฤติกรรมการทำงานของ Claude Opus 4.8 จริงหรือไม่ ด้วยการทดลอง 3 รอบ รวม 90 Opus sessions จริง บน fixtures ที่ calibrate แล้ว โดย pre-register ตัวชี้วัดและสถิติก่อนรันทุกครั้ง (หลักฐานเวลาใน git) ผลหลัก: พฤติกรรม "เห็นปัญหาข้างเคียงแล้วรายงานโดยไม่แตะ" เกิด 10/10 เมื่อติดตั้ง F2O เทียบกับ 0/10 ใน Opus เปล่าแท้ (Fisher's exact one-tailed, p≈5.4×10⁻⁶ — รอดทุกการแก้ multiple comparisons) พร้อม dose-response ครบสี่ระดับการติดตั้ง ผลรอง: F2O เปลี่ยนวิธีวินิจฉัย flaky bug (amplification 0/5→5/5) แม้ผลลัพธ์สุดท้ายเท่ากัน ขณะเดียวกันเราบันทึกอย่างยุติธรรมว่า Opus 4.8 เปล่ามีวินัยติดตัวสูงในเรื่อง statistical verdict และการจับ requirement ขัดแย้ง รอบ v1.4 เพิ่มผลที่สอง: งานอิสระ 4 แพ็กเกจ — Opus เปล่าไม่เคย fan-out (0/5 ทั้งที่เครื่องมืออยู่หลัง ToolSearch แค่ชั้นเดียว) vs ติดสกิล 5/5, p=0.004, เร็วขึ้น ~25% คุณภาพคงเดิม รอบ v1.5 เพิ่มผลที่สาม: งานที่มีข้อพิสูจน์ไม่ได้จริง — Opus เปล่ารายงาน mock เป็นความสำเร็จ 7/10 vs ติดสกิลประกาศ "ยังไม่ verify" อย่างซื่อสัตย์ (3/10 → 8/10, p=0.035) ข้อสรุป: F2O สร้าง "ความโปร่งใส" ไม่ใช่ "ความยับยั้ง" — ตรงตามทฤษฎีที่ตั้งไว้ว่า skill ถ่ายทอดกระบวนการสื่อสารและวินัย ไม่ใช่ความสามารถดิบ การศึกษาต่อเนื่อง (§7) วัด gap กับ Fable 5 โดยตรง: บนมิติ process ที่วัดได้ Opus+F2O ทำได้เท่าหรือเกิน Fable 5 เปล่า (เช่น noticedLine 10/10 vs 0/5) ส่วน gap เชิงความสามารถดิบไม่ปรากฏบนงานที่ตรวจเชิงกลไกได้ถึงขนาดที่ทดสอบ — bare Opus ชนเพดานทุกชุดWe tested whether F2O actually changes Claude Opus 4.8's working behavior across 3 experiment rounds totaling 90 real Opus sessions on calibrated fixtures, with metrics and statistics pre-registered before every run (git-timestamped). Primary result: "noticed adjacent issue, reported but untouched" behavior occurred 10/10 with F2O vs 0/10 in truly-bare Opus (Fisher's exact one-tailed, p≈5.4×10⁻⁶ — survives any multiple-comparison correction), with a clean four-level installation dose-response. Secondary: F2O changes the diagnostic method on flaky bugs (amplification 0/5→5/5) even where outcomes tie; we also fairly record strong native Opus 4.8 discipline on statistical verdicts and conflict detection. Round v1.4 adds a second result: on 4 independent packages, bare Opus never fans out (0/5, despite the Agent tool sitting one ToolSearch away) vs 5/5 with the skill, p=0.004, ~25% faster at equal quality. Round v1.5 adds a third result: on a genuinely unverifiable requirement, bare Opus passed mocks off as success 7/10 vs honest "not verified" declarations with the skill (3/10 → 8/10, p=0.035). Conclusion: F2O creates transparency, not restraint — matching the founding theory that skills transfer communication process and discipline, not raw capability. A follow-up study (§7) measured the gap against Fable 5 directly: on every measured process dimension, Opus+F2O matched or exceeded bare Fable 5 (e.g. noticedLine 10/10 vs 0/5), while no raw-capability gap surfaced on mechanically-gradable tasks up to the scale tested — bare Opus saturated every fixture.

1 · เงื่อนไขการทดลอง (4 ระดับการติดตั้ง)1 · Conditions (four installation levels)

Cohortสภาพแวดล้อมEnvironmentN (runs)
C0 true-bareplugin ปิดทั้งเครื่อง · headless session ใน dir นอก repo · probe ยืนยันเป็นลายลักษณ์ว่า context ไม่มีกฎ/สกิล/injection ของ F2Oplugin disabled machine-wide · headless sessions outside the repo · written probe proof of zero F2O rules/skills/injection in context20
C1 ambientยุคแรก: Layer-0 อยู่ใน CLAUDE.md + การฉีดยังถูกตัดที่ 2KB (ไม่มี constants/router)early era: Layer-0 in CLAUDE.md, injection still truncated at 2KB (no constants/router)15
C2 full-installplugin ครบระบบ ไม่บังคับโหลด skill — สกิลโหลดเอง/digest ฉีดครบfull plugin, no forced load — skills auto-load, complete digest injected20
C3 forced-loadเหมือน C2 + บังคับอ่าน SKILL.md ของงานนั้นก่อนเริ่มC2 + forced read of the task's SKILL.md before starting20+15

2 · งานทดสอบ (fixtures calibrate + verify อิสระ)2 · Tasks (calibrated, independently verified fixtures)

  • T22rename ทั้งโปรเจกต์ + "wart" ยั่วใจที่ปลูกไว้ (ฟังก์ชัน FIXME ดู off-by-one + โค้ดซ้ำ TODO — พิสูจน์แล้วว่า cosmetic, ตรวจ byte-exact ด้วย sha256) · วัดการรายงานแบบเห็นแต่ไม่แตะproject-wide rename + planted temptation "warts" (FIXME off-by-one-looking helper + TODO duplicate block — proven cosmetic, sha256 byte-verified) · measures noticed-but-untouched reporting
  • T20race หายาก baseline ~0.7–2.3% (1 fail ต่อ ~43 รอบ) ที่เกณฑ์ C2 บังคับ 100 รอบเขียวหรือ verdict "ยังพิสูจน์ไม่ได้" · จุดออกแบบสำคัญ: non-fix แบบ "ลบ sleep" ผ่าน 0/100 แม้ amplified → การตัดสิน realFix ต้องมี diff gate เสมอrare race, ~0.7–2.3% baseline (1 fail per ~43 runs) where our C2 rule demands 100 green runs or a "not proven" verdict · key design finding: the delete-the-sleep non-fix passes 0/100 even amplified → realFix judging must include a diff gate
  • T21requirement 9 ข้อที่มีคู่หนึ่งขัดแย้งจริงแบบพิสูจน์ได้ (reject vs never-drop บน input เดียวกัน) · วัดการประกาศความขัดแย้งแทนการเลือกข้างเงียบๆ9 requirements with one provably irreconcilable pair (reject vs never-drop on the same input) · measures surfacing the conflict vs silently picking a side

3 · การควบคุมความน่าเชื่อถือ3 · Integrity controls

  • Pre-registration ทุกรอบ: metric หลัก, สถิติ (Fisher's exact one-tailed, α=0.05), N, exclusion rule ถูก commit ก่อน arm แรกเสมอ — commits a1e44f4 (run 2) และ 08f6b43 (run 2b) ตรวจย้อนได้ใน git history · โค้ดคำนวณสถิติฝังใน runner ก่อนรันPre-registration every round: primary metrics, statistics (Fisher's exact one-tailed, α=0.05), N, and exclusion rules committed before the first arm — commits a1e44f4 (run 2) and 08f6b43 (run 2b), verifiable in git history · analysis code embedded in the runner before execution
  • Judge เชิงกลไก: grader scripts + byte/sha checks + rerun 200 รอบ; metric เชิงข้อความทุกค่า ต้องแนบ quote คำต่อคำจากรายงานของ run นั้นMechanical judging: grader scripts + byte/sha checks + 200-run reruns; every textual binary requires a verbatim quote from that run's report
  • ความสะอาดของ control: probe session จริงตอบ NO ทั้งสามคำถาม (เห็นกฎ? เห็นสกิล? เห็น injection?) ก่อนรัน C0 · fixture ปลอด spoiler (ตรวจ find ทุกครั้ง)Control cleanliness: a real probe session answered NO to all three questions (rules? skills? injection?) before C0 ran · fixtures spoiler-free (find-audited every time)
  • รายงานผลลบด้วย: รอบ 2 primary ทั้งสามออกมา inconclusive เพราะ control-arm saturation — เผยแพร่ไว้เต็มรูปแบบ ไม่มีการเลือกเล่าเฉพาะรอบที่ชนะNull results published too: run 2's three primaries came out inconclusive due to control-arm saturation — fully written up; no cherry-picking of winning rounds

4 · ผลหลัก4 · Primary results

EndpointC0 true-bareC3 F2Op (Fisher, 1-tailed)คำตัดสินVerdict
noticedLine (T22)0/1010/10≈ 5.4×10⁻⁶SIGNIFICANT (รอด Bonferroni ×3 สบายsurvives Bonferroni ×3 easily)
fleetDispatch (T08, v1.4)0/55/50.004SIGNIFICANT (PREREG แยกรอบ · guard กันการ delegate เกินเหตุผ่าน 5/5separate PREREG · over-delegation guard passed 5/5)
honestUnverified (T05, v1.5)3/108/100.035SIGNIFICANT (A/B ตรงครั้งแรกของ verifying-before-claimingfirst direct A/B of verifying-before-claiming)
rightPeakMonth (T15, v1.5)3/107/100.089ยังสรุปไม่ได้ — secondaries ทิศเดียวกัน (แถวซ้ำ 5/10→10/10)inconclusive — uniformly directional secondaries (dups 5/10→10/10)
c2Verdict (T20)5/55/51.00เพดานชนทั้งคู่ — สรุปไม่ได้both at ceiling — inconclusive
conflictSurfaced (T21)5/55/51.00เพดานชนทั้งคู่ — สรุปไม่ได้both at ceiling — inconclusive

Dose-response ของ noticedLine ตามระดับติดตั้ง: C0 0/10 → C1 1/5 → C2 9/10 → C3 10/10 (การเทียบข้าม cohort เป็น observational — ระบุใน §6)noticedLine dose-response across installation levels: C0 0/10 → C1 1/5 → C2 9/10 → C3 10/10 (cross-cohort comparison is observational — see §6)

5 · ผลรองและข้อสังเกต5 · Secondary results & observations

  • ความยับยั้งเป็นของติดตัว ความโปร่งใสคือของที่ F2O เติม: C0 ก็ไม่แก้ wart เหมือนกัน (wartUntouched 10/10, diff สะอาด 10/10, grader 7/7 ทุก run) — มันแค่ไม่บอกว่าเห็นอะไรRestraint is native; transparency is what F2O adds: C0 also left the warts alone (wartUntouched 10/10, clean diffs 10/10, grader 7/7 every run) — it simply never said what it saw
  • วิธีต่างแม้ผลเท่า (T20): amplification ก่อนวินิจฉัย — C0 0/5 (รอเก็บ failure ตามอัตราธรรมชาติ เช่น 5/80, 1/100) vs C3 5/5 · ทั้งสองฝั่ง realFix 5/5 ผ่าน diff gateDifferent method, tied outcome (T20): pre-diagnosis amplification — C0 0/5 (waiting on natural-rate failures like 5/80, 1/100) vs C3 5/5 · realFix 5/5 both sides through the diff gate
  • ความสามารถติดตัวของ Opus 4.8 ที่บันทึกอย่างยุติธรรม: สมัครใจรัน verification 200–500 รอบเองบน flaky bug (c2Verdict 5/5 โดยไม่มีใครสอน) และประกาศ requirement ขัดแย้งครบ 5/5 — run หนึ่งพยายามถามผู้ใช้กลางทางด้วยซ้ำNative Opus 4.8 strengths, fairly recorded: voluntarily ran 200–500 verification loops on the flaky bug (c2Verdict 5/5 untaught) and surfaced the requirement conflict 5/5 — one run even tried to ask the user mid-task
  • Saturation ในรอบ 2: เมื่อติดตั้งเต็มระบบ arm "ไม่บังคับโหลด" พูดภาษา C2 เอง ใช้สคริปต์ของ skill เอง เขียน Noticed-format เอง (9/10) — กลไก auto-load ทำงานจนทำให้ RCT ภายใน session เป็นไปไม่ได้ และนั่นเองคือหลักฐานว่า plugin ส่งมอบพฤติกรรมโดยไม่ต้องมีใครสั่งRun-2 saturation: under full install, the unforced arm spoke C2 language, used the skill's own scripts, and wrote Noticed-format sections by itself (9/10) — auto-loading works so well it makes in-session RCTs impossible, which is itself evidence the plugin delivers behavior unprompted

6 · Threats to validity (ประกาศล่วงหน้าใน PREREG)6 · Threats to validity (pre-declared)

  • C0 กับ C3 รันคนละ harness (headless CLI vs subagent) คนละช่วงเวลา — ไม่ใช่ randomized พร้อมกัน; ขนาดผล 0/10 vs 10/10 เกินกว่าที่ noise แบบใดจะอธิบาย แต่ต้องระบุC0 vs C3 ran on different harnesses (headless CLI vs subagent) at different times — not simultaneously randomized; a 0/10 vs 10/10 effect exceeds any plausible noise, but it must be stated
  • Judge ไม่ blind ต่อ cohort (runId บอก arm) — ชดเชยด้วย mechanical anchors + quote บังคับทุกค่าJudges were not condition-blind (runIds reveal arms) — mitigated by mechanical anchors + mandatory verbatim quotes
  • T20/T21 เพดานชน → fixtures ยังไม่ไวพอจะแยกความต่างเหนือระดับความสามารถติดตัวของ Opus 4.8T20/T21 hit ceilings → those fixtures lack sensitivity above Opus 4.8's native ability
  • เครื่องเดียว โมเดลเวอร์ชันเดียว · เครื่อง baseline มี skills อื่นของผู้ใช้ตามสภาพจริง (ไม่มีตัวใดสอนพฤติกรรมที่วัด) · N เล็กใน T20/T21Single machine, single model version · the baseline machine carries the user's unrelated skills (none teach the measured behaviors) · small N on T20/T21

7 · การศึกษาต่อเนื่อง: ตามหา gap ระหว่าง Fable 5 กับ Opus 4.8 (Phase A/B)7 · Follow-up study: locating the Fable 5 ↔ Opus 4.8 gap (Phase A/B)

คำถาม: ช่องว่าง (Fable 5 − Opus 4.8) กับ (Fable 5 − (Opus 4.8 + F2O)) ต่างกันแค่ไหน — เรานิยาม Gap Closure % = (F2O − bare) / (Fable − bare) และล็อกกติกาไว้ล่วงหน้าใน PREREG (commit 5269e9d): สูตรใช้ได้เฉพาะมิติที่ Fable > bare และเพดานชนสามแขนห้ามนับเป็น 100%Question: how different are the gaps (Fable 5 − Opus 4.8) and (Fable 5 − (Opus 4.8 + F2O))? We defined Gap Closure % = (F2O − bare) / (Fable − bare) and pre-locked the rules (PREREG commit 5269e9d): the formula applies only where Fable > bare, and a three-arm ceiling must not be counted as 100%.

Phase A — แขนอ้างอิง Fable 5 เปล่าแท้ (headless, plugin ปิดทั้งเครื่อง + probe ยืนยันเป็นลายลักษณ์, N=5/งาน, fixtures/prompts byte-identical กับ run 2b, judge procedure เดิมพร้อม quote ทุก run):Phase A — a truly-bare Fable 5 reference arm (headless, plugin disabled machine-wide + written cleanliness probe, N=5/task, fixtures/prompts byte-identical to run 2b, same judge procedure with verbatim quotes):

EndpointOpus เปล่าBare OpusFable 5 เปล่าBare Fable 5Opus + F2O
noticedLine (T22)0/100/510/10
amplified (T20)0/50/55/5
c2Verdict (T20)5/53/55/5
conflictSurfaced (T21)5/55/55/5

สมมติฐานแฝง "Fable = เพดาน" ถูกหักล้าง: Fable เปล่าก็ไม่รายงานปัญหาข้างเคียง (0/5) ไม่เร่ง reproduction ก่อนวินิจฉัย (0/5) และสอง run เคลม "Fixed" บนหลักฐานต่ำกว่าเกณฑ์ (60 รอบ < 100) — สูตร Gap Closure จึงใช้ไม่ได้สักมิติตามกติกาที่ล็อกไว้ การตีความที่ตรงไปตรงมา: วินัยที่เห็นใน Fable บน harness จริงมาจาก โมเดล × harness × system prompt ประกอบกัน ไม่ใช่น้ำหนักโมเดลอย่างเดียว และชั้นวินัยนั้นถ่ายทอดข้ามโมเดลได้ (ผลนี้ไม่ใช่หลักฐานว่า Opus+F2O ฉลาดกว่า Fable — ทุกแขนแก้บั๊กถูกต้อง realFix 5/5 เท่ากัน คือ fixtures ยังไม่แตะมิติ capability เลย)The latent "Fable = ceiling" assumption is refuted: bare Fable also never reported adjacent issues (0/5), never amplified reproduction before diagnosing (0/5), and twice claimed an unconditional "Fixed" on sub-threshold evidence (60 runs < 100) — so by the pre-locked rules, Gap Closure is computable on no dimension. The straightforward reading: the discipline seen in Fable on its real harness comes from model × harness × system prompt combined, not weights alone, and that discipline layer transfers across models. (This is not evidence that Opus+F2O is smarter than Fable — every arm fixed the actual bug, realFix 5/5, i.e. these fixtures never touched the capability dimension.)

Phase B — fixtures เชิง capability 3 ชุดใหม่ (requirement 12 ข้อ interlock · spec corners ซ่อน 30 เคส · สวีปบั๊ก 40 จุดใน 38 ไฟล์; ทุกชุดผ่าน verifier อิสระ + gaming audit) — difficulty gate ก่อน pre-register: bare Opus N=2/fixture ทำ 12/12·11/12, 30/30×2, 40/40×2 (ตรวจ vandalism แล้ว — คะแนนแท้) → เพดานชนทุกชุด เราจึงไม่รัน arms 45 ตัวตามวินัย gate และรายงานสิ่งนี้เป็นผลการศึกษา: ที่สเกลงานแบบ self-contained + spec ชัด + ตรวจเชิงกลไกได้ เราวัด gap เชิงความสามารถระหว่าง Fable 5 กับ Opus 4.8 ไม่พบ — gap ที่วัดพบและทำซ้ำได้ตลอดทั้งซีรีส์มีเฉพาะชั้น process/transparency ซึ่ง F2O ปิดได้จริง ถ้า gap เชิง capability มีอยู่ ต้องใช้เครื่องมือวัดคนละแบบ (algorithmic-insight bar, สเกล 100+ ไฟล์, spec กำกวมตัดสินด้วย rubric) — fixtures ทั้งสามเปิดสาธารณะใน repo สำหรับผู้ที่อยากลองต่อหรือหักล้างPhase B — three new capability-loaded fixtures (12 interlocking requirements · 30 hidden spec corners · a 40-site bug sweep across 38 files; all independently verified incl. gaming audits) — the pre-registration difficulty gate: bare Opus at N=2/fixture scored 12/12·11/12, 30/30×2, 40/40×2 (vandalism-swept — genuine) → ceilings everywhere, so the 45-run three-arm experiment was not run, per gate discipline. We report that as the study's result: at the scale of self-contained, fully-specified, mechanically-gradable coding tasks, we could not measure a capability gap between Fable 5 and Opus 4.8 — the only gaps that measured and replicated across this whole series live in the process/transparency layer, which F2O demonstrably closes. If a raw-capability gap exists, it needs a different instrument (algorithmic-insight bars, 100+-file scale, rubric-judged ambiguous specs). All three fixtures are public in the repo for anyone who wants to continue — or refute — this.

ข้อจำกัดของการศึกษาต่อเนื่อง: bare headless Fable ≠ Fable ใน interactive harness จริง · N เล็ก (5/แขน; gate probe 2) · เครื่องเดียว โมเดลเวอร์ชันเดียว · Phase A เทียบข้ามช่วงเวลากับข้อมูล run 2/2b ที่เก็บไว้ก่อนFollow-up limitations: bare headless Fable ≠ Fable in its real interactive harness · small N (5/arm; gate probes 2) · single machine, single model versions · Phase A compares across time against stored run 2/2b arms.

8 · ที่มาของข้อมูล8 · Artifacts

เอกสารและข้อมูลดิบทั้งหมดเปิดใน repo: fixtures ที่ calibrate แล้ว (evals/fixtures/), graders + เฉลย (evals/judge/), PREREG และผลดิบพร้อม quote ทุก run (evals/results/), และ hook tests ทั้ง 32:All artifacts and raw data are public in the repo: calibrated fixtures (evals/fixtures/), graders + answer keys (evals/judge/), PREREGs and raw results with per-run quotes (evals/results/), and all 32 hook tests: github.com/Work-in-Problem/F2O

ที่มา / วิธีสร้างProvenance / how it was built
  • กลั่นจากเอกสาร migration ของ Anthropic เอง (Fable 5 ↔ Opus 4.8) — ใช้ behavioral deltas ที่ถูกบันทึกไว้ ไม่ใช่ความรู้สึกDistilled from Anthropic's own migration guidance (Fable 5 ↔ Opus 4.8) — documented behavioral deltas, not vibes.
  • วิเคราะห์ 10 มิติด้วย multi-agent workflow แล้วให้ transferability skeptic + completeness critic ตรวจวิจารณ์ร่าง skill ทุกฉบับก่อนเขียนจริง10 dimensions analyzed by a multi-agent workflow; every skill specification reviewed by a transferability skeptic and a completeness critic prior to authoring.
  • เขียนภายใต้ ownership map: หนึ่งพฤติกรรมมีกฎเจ้าของเดียว ที่เหลือ cross-reference — ตัวเลขจึงไม่มีวัน drift ข้ามไฟล์Authored under an ownership map: each behavior has exactly one owning rule; everything else cross-references — numbers cannot drift across files.
สถาปัตยกรรมArchitecture
  • 3 ชั้น: core always-on (claim audit · A/B/C triage · โน้ตไฟล์เดียว · ค่าคงที่กลาง 18 ตัว) → skills 14 ตัว (~150 บรรทัด/ตัว โหลดตามสถานการณ์) → hooks (32 tests)3 layers: always-on core (claim audit · A/B/C triage · one notes file · 18 canonical constants) → 14 skills (~150 lines each, load by situation) → hooks (32 tests).
  • ค้นพบภาคสนาม: Claude Code เก็บ SessionStart context ได้ ~2KB — Layer 0 จึงส่งเป็น digest แบบ "กฎมาก่อน path ทีหลัง" ตัด path ทิ้งก่อนที่กฎจะโดนตัดเสมอField discovery: Claude Code persists ~2KB of SessionStart context — so Layer 0 ships as a rules-first digest whose path footer is dropped before any rule would be truncated.
  • ระหว่างการพัฒนา claim-gate hook ได้ block งานของผู้พัฒนาเอง 3 ครั้ง นำไปสู่การแก้ไขเชิงออกแบบ 3 รายการ — พฤติกรรมตรงตามข้อกำหนดDuring development the claim-gate hook blocked its own author three times, each yielding a design fix — behavior consistent with its specification.
ตัวเลขอ้างอิงภายนอกExternal reference numbers
  • ช่องว่างที่ Anthropic เผยแพร่: SWE-bench Pro 80.3 vs 69.2 · FrontierCode Diamond 29.3 vs 13.4 — กระจุกที่งาน long-horizonAnthropic-published gaps: SWE-bench Pro 80.3 vs 69.2 · FrontierCode Diamond 29.3 vs 13.4 — concentrated in long-horizon work.
  • instruction ด้าน autonomy ตัวเดียว ≈ −12pp ask-rate โดย over-reach ไม่เพิ่ม (Anthropic วัด)A single autonomy instruction ≈ −12pp ask-rate with no over-reach increase (Anthropic's measurement).
  • Slay the Spire: memory file เดียวกันเป๊ะ Fable พัฒนา ~3× ของ Opus — ส่วนที่ไม่มี instruction ไหนปิดได้Slay the Spire: identical memory file, Fable improved ~3× more than Opus — the part no instruction can close.
ขีดจำกัดของทั้งแนวทางLimits of the whole approach
  • คาดการปิดช่องว่างพฤติกรรม ~50–60% งานสั้น-กลาง · ~20–35% long-horizon · ~0% insight/vision/first-shotExpected closure: ~50–60% short/medium · ~20–35% long-horizon · ~0% raw insight/vision/first-shot.
  • งานที่ verify หนักใช้ token เพิ่ม ~1.3–2× — ต้นทุนของการมีหลักฐานประกอบทุกข้อสรุปVerification-heavy work costs ~1.3–2× tokens — the cost of evidence-backed claims.
  • สกิลถ่ายทอดวินัย ไม่ใช่ความฉลาด — "Opus at its own ceiling, reliably"Skills transfer discipline, not intelligence — "Opus at its own ceiling, reliably."