docs & feat: add license & attribution notice (Apache-2.0 / GPL-3.0) and core system enhancements
This commit is contained in:
1 parent
507836d367
commit
ce6aabfc55
47 files changed
+5674
-724
No files matched your search
@@ -0,0 +1,53 @@
|
||||
# แก้บัคจาก review งาน Gemini — 2026-11-01
|
||||
|
||||
ขอบเขตคือ 7 findings จาก review ของ CW ที่ commit แล้วและ Warp ที่ยังไม่ commit
|
||||
ไม่ใช่การยืนยันว่าพอร์ต CW ครบทุกระบบหรือแก้บัคทั้ง repository แล้ว
|
||||
|
||||
| Finding | การแก้ |
|
||||
| --- | --- |
|
||||
| Batch formation เซฟช่องซ้ำ/ตำแหน่งผิด | ทั้ง GridFightUpdatePos และ GEBBMDCOLCH เรียก transaction เดียวกัน ตรวจ Battle, preparation, session revision, UID, ขอบเขต, ช่องซ้ำ, avatar ซ้ำ และ capacity ก่อนเปลี่ยน/บันทึก ส่ง failure เมื่อ save ไม่สำเร็จ |
|
||||
| Weekly reward ตอบ success ว่าง | คำสั่งรับรางวัลทั้งสองแบบตอบ RET_GRID_FIGHT_CONF_MISS และไม่เปลี่ยนเซฟ จนกว่าจะมี entitlement/grant/claim persistence ที่ยืนยันได้ |
|
||||
| Talent ปลด ID ใดก็ได้ | Enable/Reset ทั้ง permanent/season ปฏิเสธการเปลี่ยนเซฟ ไม่คืนความสำเร็จปลอม ต้นทาง grid_fight_talent.zig ระบุชัดว่าเป็น stub และยังไม่มีค่าใช้จ่าย/เงื่อนไข/ผลของ talent ที่ยืนยัน |
|
||||
| Tests เขียนเซฟจริง | gameserver TestMain ใช้สำเนา runtime ใน temp directory; helper กลับ root หมายถึง fixture นี้ กาชา common/API ใช้ temp fixture ต่อ test ไม่มีการ restore backup ทับไฟล์ผู้ใช้ |
|
||||
| Pos=0 ถูกนับพันธะ | ตัวนับ board/battle และการเลือกเจ้าของ Trailblaze ใช้ช่วงตำแหน่งจาก constants ของ Client และตัด Pos=0 ออก |
|
||||
| Archive หายหลัง restart | เก็บ serialized archive/favourite ใน snapshot แยกตาม UID โดย archive ถูก append ใน CAS เดียวกับการจบรอบ ไม่มี global in-memory store และไม่สร้างประวัติเมื่อ save ขัดแย้ง |
|
||||
| Warp mode ไม่ถูกใช้ | API กับ GetGachaInfo ใช้ visibility loader เดียวกัน อ่าน mode ล่าสุดตอนเปิด Warp กรองกับ verified Client banner assets ไม่ส่ง ID จาก Client อื่นเพียงเพราะอยู่ในไฟล์นำเข้า |
|
||||
|
||||
คำสั่ง Warp/reload ไม่เขียน roster ทั้งชุดอีกแล้ว เปลี่ยนเฉพาะ warp_unlock_mode
|
||||
ผ่าน persistent patch ที่ล็อกไฟล์ และรายงานจำนวน banner ที่ผ่านการตรวจจริง
|
||||
ข้อความ `/unlockall all` ไม่อ้างว่าแจก player resources; `/unlockall skin`
|
||||
ไม่ตอบสำเร็จเมื่อยังไม่มี implementation
|
||||
|
||||
## Archive และ compatibility
|
||||
|
||||
- Snapshot เดิมอ่านได้โดยไม่มีการ migrate/write ระหว่างอ่าน
|
||||
- เพิ่ม `archives` เป็น serialized protobuf ของ FAIHLAKPABN; unknown fields ใน
|
||||
snapshot/record ยังคงอยู่ การ save CW ปกติไม่ลบ history
|
||||
- เลข archive ใช้ revision ของ transaction ที่บันทึก จึงไม่เริ่มนับใหม่หลัง restart
|
||||
- FavourArchive ตรวจ revision และ commit ภายใต้ persistent lock เช่นเดียวกับ run
|
||||
- ยกเลิก hardcoded archive Client version `4006`; encoding ของ field นี้ยังไม่
|
||||
ยืนยัน จึงเว้นไว้ ไม่คำนวณจากข้อความ patch version โดยเดา
|
||||
- Archive ที่อยู่ในหน่วยความจำของ binary รุ่นก่อนจะไม่มีในไฟล์เก่า งานนี้ไม่
|
||||
สร้างประวัติย้อนหลังจากการคาดเดา
|
||||
|
||||
## การตรวจ
|
||||
|
||||
เพิ่ม regression tests ที่อ่าน response ผ่าน typed dispatcher/KCP จริง:
|
||||
|
||||
- คำสั่ง Talent และรับรางวัลที่ยังไม่รองรับต้องคืน retcode ผิดพลาดและไม่แก้ save
|
||||
- ปฏิเสธ formation ช่องซ้ำ/ขอบเขตผิด/UID ไม่มี/Battle/session เก่า ทั้งสอง handler;
|
||||
valid swap ยังสำเร็จ
|
||||
- Pos=0 และ bench ไม่ให้ board/battle traits; ตัวที่ลงสนามยังมี traits
|
||||
- Archive และ favourite อ่านกลับจาก snapshot ใหม่ได้; stale save ไม่เพิ่ม history;
|
||||
normal save ไม่ลบ history
|
||||
- Warp modes กรองรายการจริงและไม่ปล่อย unverified ID; ค่า off=0 อ่านกลับได้
|
||||
- คำสั่ง banner ไม่เปลี่ยน freesr-data.json
|
||||
|
||||
ผลตรวจ: `go test ./... -count=1`, `go build ./...` และ `git diff --check` ผ่าน
|
||||
ตรวจ SHA-256 ของ `persistent` และ `freesr-data.json` ก่อน/หลังชุดทดสอบแล้วไม่เปลี่ยน
|
||||
เป็นการตรวจอัตโนมัติเท่านั้น ต้องตรวจ Client จริงต่อ โดยเฉพาะ batch formation,
|
||||
archive UI ที่เว้น Client version และการเปิด Warp ตามรายการ asset ที่มีอยู่
|
||||
|
||||
งานนี้ไม่เพิ่มการแจก Talent/weekly reward จนกว่าจะมีข้อมูลรองรับ และไม่เปิด
|
||||
การสุ่มกาชาจาก imported banner schema ที่ยังไม่ยืนยัน การปฏิเสธคำสั่งเหล่านี้
|
||||
เป็นการแก้ success ปลอม ไม่ใช่การอ้างว่าระบบ gameplay นั้นเสร็จแล้ว
|
||||
Reference in new issue
Block a user