# Handoff — เว็บไซต์ตัวอย่างรายวิชา 977-121

## สถานะรอบนี้

อัปเดตเอกสารตามข้อกำหนดที่ได้รับเพิ่มแล้ว โดยไม่ได้แก้ `index.html`, `style.css` หรือ `main.js`; ไม่ได้รัน server, deploy หรือโมเดลอื่น. ยังไม่อ้างว่าเผยแพร่ public เพราะหลักฐาน browser ระบุว่าไม่ได้ทดสอบ public deployment.

## ไฟล์

| ไฟล์ | บทบาท/สถานะ |
| --- | --- |
| `brief.md` | บันทึก FACT, CTA, state ของ interaction, การปิด GAP และข้อจำกัดที่ยังไม่ยืนยัน |
| `evidence.csv` | เก็บหลักฐานรอบแรกไว้ แล้วเพิ่ม FACT/VERIFIED/STATUS_CHANGE ของ D1–D3 และสถานะ public ที่ยังเป็น GAP |
| `implementation-decisions.md` | ต้นทางคำสั่ง D1–D3 จาก parent; ไม่ได้แก้ |
| `browser-verification.json` | ผลทดสอบที่ parent runner แนบมา; ไม่ได้รันซ้ำ |
| `index.html`, `style.css`, `main.js` | อ่านเพื่อตรวจความสอดคล้องเท่านั้น; ไม่ได้แก้ |

## CTA ที่ยืนยัน

- CTA หลัก `เริ่มจากบทเรียน 00` → `/learn/lessons/00-setup-and-web-basics/`
- CTA รอง `ดูบทเรียนทั้งหมด` → `#lessons` (ไม่ใช่ `/`)
- คู่มือ/ทรัพยากร → `/handbook/` และ `/resources/`

## Interaction และ token

- Day 1 = บท 00–05; Day 2 = บท 06–10 จาก `dayData`. เป็นเส้นทางเลือกเนื้อหา ไม่ได้ทำให้ workshop 8 ชั่วโมงครอบคลุมทุกบทโดยอัตโนมัติ.
- Theme toggle: light เป็น default แม้ OS dark; หลังผู้ใช้เลือกจึงใช้/บันทึกค่าด้วย storage key `psu-course-website-theme-v1`; หาก storage ใช้ไม่ได้ toggle ยังทำงานใน session นั้น.
- Design tokens ที่อ้างอิง: light `#F7F7F7`/`#0A0A0A`/`#3EDC81`/`#17653F`; dark `#0A0A0A`/`#171717`/`#F7F7F7`; Inter และ Noto Sans Thai.

## หลักฐานตรวจ

`browser-verification.json` ระบุว่า **parent runner** เป็นผู้รัน Playwright (`npx playwright test tests/course-website.spec.mjs --reporter=json`) ที่ `http://127.0.0.1:3320` ไม่ใช่การรัน browser โดย Codex รอบนี้. ผล: 5 expected, 0 unexpected, 0 flaky; ครอบคลุม mapping 11 บท, search/filter/reset, default-light/storage fallback, no-JS, keyboard, viewport และ axe.

## สิ่งที่ยังไม่ทำ / ยังไม่ยืนยัน

- ไม่มีหลักฐาน deploy/public; JSON ระบุ `publication: not yet tested in public`.
- ยังไม่ยืนยันข้อมูลผู้สอน, หน่วยกิต, ภาคเรียน, เกณฑ์คะแนน, ช่องทางสมัคร หรือ LMS — ต้องไม่อ้างว่าได้รับการยืนยันหรือแสดงข้อมูลเหล่านี้.
- ยังรอยืนยันวันเผยแพร่ลิงก์บทความทีละขั้น, ข้อความ disclaimer ฉบับเจ้าของ, และการคงเครดิต Rawinnipa.

เมื่อข้อกำหนดได้รับคำตอบแล้ว ต้องอัปเดตทั้ง `brief.md` และ `evidence.csv` ให้มีแหล่งยืนยัน/สถานะ GAP ที่ตรงกัน และทำให้ implementation สอดคล้องก่อนจึงจะถือว่าพร้อมตรวจรอบถัดไป.
