# BÁO CÁO NGHIÊN CỨU & KHẢO SÁT TOÁN HỌC: HIỆU CHỈNH ĐƯỜNG CONG KINH NGHIỆM MILESTONE M1
## Mathematical Remedy & Specification Conformance Report for PoE2 Level 1-100 Progression Curve

- **Tác giả**: `explorer_m1_progression_1_gen2` (teamwork_preview_explorer)
- **Đối tượng thụ hưởng**: `orchestrator_4` (`6f4a2aa2-4315-4660-8cb7-8352a7220c95`) & `worker_m1_progression_1`
- **Mục tiêu**: Phân tích toàn diện nguyên nhân gốc rễ thất bại tại Challenger Gate M1, chứng minh tính đúng đắn của phương án hiệu chỉnh $f = 0.35$, kiểm chứng tính đơn điệu ngặt 100 cấp, và cung cấp gói khuyến nghị drop-in sẵn sàng áp dụng.
- **Thời điểm**: 2026-10-01T02:28:30Z

---

## 1. Tóm Tắt Cốt Lõi (Executive Summary)

Tại Milestone 1 Iteration 1, harness thử thách độc lập của Challenger (`challenge_exp_curve.py`) đã kích hoạt phán quyết **REQUEST_CHANGES** do kiểm thử `challenge_level_99_100_delta_ratio` thất bại:
- Tỷ số delta cấp 99 so với Lifetime EXP đạt **$24.812030\%$**, bị hụt $0.188\%$ so với mức sàn tối thiểu bắt buộc **$25.000000\%$** được quy định tại `ORIGINAL_REQUEST.md:173`.
- Nguyên nhân: Việc áp dụng hệ số cứng $f = 0.33$ trên tổng tích lũy cấp 1-98 dẫn đến $\text{Ratio}_{\text{lifetime}} = \frac{0.33}{1.33} \approx 24.812\% < 25.0\%$.

**Giải pháp toán học tối ưu**: Nâng hệ số $f$ từ **$0.33$** lên **$0.35$** trong `server/world/level_progression_curve.py:70`:
- $sum\_1\_98 = 17,989,242,456$
- $deltas[99] = \lfloor 0.35 \times 17,989,242,456 \rfloor = \mathbf{6,296,234,859}$
- $total\_lifetime = 17,989,242,456 + 6,296,234,859 = \mathbf{24,285,477,315}$
- Tỷ số so với cấp 1-98: $6,296,234,859 / 17,989,242,456 = \mathbf{35.000000\%} \ge 30.0\%$ (**ĐẠT**)
- Tỷ số so với Lifetime EXP: $6,296,234,859 / 24,285,477,315 = \mathbf{25.925926\%} \in [25.0\%, 35.0\%]$ (**ĐẠT**)
- **Tính đơn điệu ngặt (Strict Monotonicity)**: $100\%$ bảo toàn, $target\_exp(100) > target\_exp(99)$, delta cấp 99 tăng $+89.04\%$ so với cấp 98.

---

## 2. Phân Tích Toán Học Chi Tiết (Mathematical Analysis & Proof)

### 2.1. Thiết Lập Bài Toán & Ràng Buộc Đồng Thời

Gọi:
- $S = \sum_{k=1}^{98} \Delta_k$ là tổng delta EXP tích lũy từ cấp 1 đến 98 ($target\_exp(99)$).
- $D = \Delta_{99}$ là lượng EXP cần thiết để thăng cấp từ 99 lên 100 ($exp\_to\_next\_level(99)$).
- $L = S + D$ là tổng EXP cả đời của nhân vật khi đạt cấp 100 ($target\_exp(100)$ hay Lifetime EXP).
- $f = \frac{D}{S}$ là hệ số nhân thiết kế được đặt trong mã nguồn: $D = \lfloor f \cdot S \rfloor$.

Bản đặc tả kỹ thuật tại `ORIGINAL_REQUEST.md:165-201` áp đặt đồng thời 2 ràng buộc:
1. **Ràng buộc 1 (Tỷ số so với tích lũy 1-98, Acceptance Criteria:200)**:
   $$\frac{D}{S} \ge 30\% \iff f \ge 0.30$$
2. **Ràng buộc 2 (Tỷ số so với Lifetime EXP, Requirement §R1:173)**:
   $$25.0\% \le \frac{D}{L} = \frac{D}{S + D} \le 35.0\%$$

### 2.2. Miền Nghiệm Hợp Lệ Của Hệ Số $f$

Biến đổi Ràng buộc 2 theo $f$:
$$\text{Ratio}_{\text{lifetime}} = \frac{f \cdot S}{S + f \cdot S} = \frac{f}{1 + f}$$
Để thỏa mãn cận dưới $25.0\%$:
$$\frac{f}{1 + f} \ge 0.25 \iff f \ge \frac{0.25}{1 - 0.25} = \frac{0.25}{0.75} = \frac{1}{3} \approx 0.333333...$$
Để thỏa mãn cận trên $35.0\%$:
$$\frac{f}{1 + f} \le 0.35 \iff f \le \frac{0.35}{1 - 0.35} = \frac{0.35}{0.65} = \frac{7}{13} \approx 0.538462...$$

Kết hợp với Ràng buộc 1 ($f \ge 0.30$), miền giá trị hợp lệ tuyệt đối của $f$ là:
$$f \in \left[\frac{1}{3}, \frac{7}{13}\right] \approx [0.333333..., 0.538462...]$$

### 2.3. Đánh Giá Lựa Chọn $f = 0.35$

| Tiêu Chí | Khi $f = 0.33$ (Cũ) | Khi $f = 1/3$ (Biên) | Khi $f = 0.35$ (Đề Xuất) | Trạng Thái Thẩm Định |
|---|---|---|---|---|
| $D = \Delta_{99}$ | $5,936,450,010$ | $5,996,414,152$ | $\mathbf{6,296,234,859}$ | Số nguyên dương 64-bit |
| $L = \text{Lifetime}$ | $23,925,692,466$ | $23,985,656,608$ | $\mathbf{24,285,477,315}$ | $< 2^{53}$ (an toàn Float64) |
| Tỷ số so với $S$ | $33.000000\%$ | $33.333333\%$ | $\mathbf{35.000000\%}$ | $\ge 30.0\%$ (PASS) |
| Tỷ số so với $L$ | $\mathbf{24.812030\%}$ (FAIL) | $25.000000\%$ (Chạm biên) | $\mathbf{25.925926\%}$ (PASS) | Nằm vững trong $[25\%, 35\%]$ |
| Khoảng đệm an toàn | $-0.188\%$ (Vi phạm) | $0.000\%$ (Nguy cơ rounding) | $\mathbf{+0.926\%}$ (Lý tưởng) | Triệt tiêu rủi ro sai số làm tròn |

Lựa chọn $f = 0.35$:
- Là số thập phân hữu hạn sạch ($35\%$), không bị sai số tuần hoàn vô hạn như $1/3 = 0.333333...$
- Tạo khoảng đệm an toàn $+0.926\%$ phía trên cận dưới $25\%$ và $-9.074\%$ phía dưới cận trên $35\%$.
- Gia tăng độ thách thức của "Bức tường cực hạn" thêm $+6.06\%$ EXP cho cấp 99, củng cố mục tiêu thiết kế PoE2 Hardcore Soft-Wall.

---

## 3. Kiểm Chứng Tính Đơn Điệu Ngặt & Các Điều Kiện Biên (Monotonicity & Bounds)

### 3.1. Tính Đơn Điệu Ngặt 100 Cấp Độ

Khảo sát toàn bộ 100 cấp độ với $f = 0.35$:
1. **Target EXP / Cumulative EXP**:
   $$\forall L \in [2, 100]: target\_exp(L) > target\_exp(L-1)$$
   - $target\_exp(98) = 14,658,589,806$
   - $target\_exp(99) = 17,989,242,456$ ($> target\_exp(98)$ bởi $+3,330,652,650$)
   - $target\_exp(100) = 24,285,477,315$ ($> target\_exp(99)$ bởi $+6,296,234,859$)
   - Số vi phạm đơn điệu tích lũy: **0/100**.
2. **Delta EXP ($\Delta_L$) từ cấp 1 đến 99**:
   $$\forall L \in [2, 99]: \Delta_L > \Delta_{L-1}$$
   - $\Delta_{98} = 3,330,652,650$
   - $\Delta_{99} = 6,296,234,859 > \Delta_{98}$ ($+89.04\%$ gia tốc tăng trưởng).
   - $\Delta_{100} = 0$ (Đạt cấp tối đa, không còn thăng cấp).
   - Số vi phạm đơn điệu delta: **0/99**.

### 3.2. Bảng Tra Cứu Cấp Độ Cuối Game (Levels 90 - 100)

| Cấp | Target EXP / Cumulative EXP | Delta EXP (Lên cấp kế) | Tỷ Lệ Phạt Chết | Giai Đoạn Tiến Trình |
|---|---|---|---|---|
| **90** | $4,179,825,986$ | $488,296,867$ | $15\%$ | Atlas T14 Red Maps bắt đầu |
| **91** | $4,668,122,853$ | $620,746,977$ | $15\%$ | Atlas T14-T15 |
| **92** | $5,288,869,830$ | $789,124,067$ | $15\%$ | Atlas T15 |
| **93** | $6,077,993,897$ | $1,003,173,300$ | $15\%$ | Bắt đầu vượt mốc 1 tỷ delta |
| **94** | $7,081,167,197$ | $1,275,283,205$ | $15\%$ | Atlas T16 |
| **95** | $8,356,450,402$ | $1,621,202,691$ | $15\%$ | Atlas T16 Corrupted |
| **96** | $9,977,653,093$ | $2,060,952,543$ | $15\%$ | Bắt đầu vượt mốc 2 tỷ delta |
| **97** | $12,038,605,636$ | $2,619,984,170$ | $15\%$ | Pinnacle Bossing |
| **98** | $14,658,589,806$ | $3,330,652,650$ | $15\%$ | Cửa ngõ Soft-Wall |
| **99** | $17,989,242,456$ | $\mathbf{6,296,234,859}$ | $\mathbf{25\%}$ | **Bức Tường Cực Hạn (Soft-Wall)** |
| **100** | $\mathbf{24,285,477,315}$ | $0$ | $0\%$ | **Cực Hạn Thăng Hoa (Trial 10)** |

### 3.3. Ràng Buộc Tân Thủ Cấp 1-20 (< 0.1% Lifetime EXP)

- Tổng EXP tích lũy cấp 1-20 (tổng $\Delta_1$ đến $\Delta_{20}$): $3,248,870$.
- Tỷ số so với Lifetime EXP mới:
  $$\frac{3,248,870}{24,285,477,315} = 0.00013378 = \mathbf{0.013378\%} \ll 0.100000\%$$
- Thỏa mãn xuất sắc tiêu chuẩn tân thủ tăng tốc dễ dàng.

### 3.4. Giới Hạn Bộ Nhớ & Định Dạng Số Nguyên

- $Lifetime = 24,285,477,315 > 2^{31} - 1$ ($2,147,483,647$) $\implies$ Bắt buộc sử dụng 64-bit integer.
- $Lifetime = 24,285,477,315 \ll 2^{63} - 1 \approx 9.22 \times 10^{18} \implies$ Khớp hoàn hảo với `INTEGER` trong SQLite.
- $Lifetime = 24,285,477,315 \ll 2^{53} \approx 9.007 \times 10^{15} \implies$ Bảo đảm không bị mất độ chính xác dấu chấm động trong JavaScript WebApp client / JSON serialization.

---

## 4. Khuyến Nghị Drop-in Triển Khai Cho Worker M1 (Actionable Recommendations)

Khuyến nghị Worker M1 thực hiện chính xác các bước sau (không sửa lan man):

### Thay đổi 1: Cập nhật hệ số trong `server/world/level_progression_curve.py`
- **File**: `server/world/level_progression_curve.py`
- **Dòng**: 68 - 70
- **Nội dung thay đổi**:
```python
<<<< BEFORE (Line 68-70)
    # Segment 7 (99->100): Hardcore Soft-Wall (33% of cumulative 1-98 EXP)
    sum_1_98 = sum(deltas[k] for k in range(1, 99))
    deltas[99] = int(math.floor(0.33 * sum_1_98))
====
>>>> AFTER
    # Segment 7 (99->100): Hardcore Soft-Wall (35% of cumulative 1-98 EXP)
    sum_1_98 = sum(deltas[k] for k in range(1, 99))
    deltas[99] = int(math.floor(0.35 * sum_1_98))
<<<<
```

### Thay đổi 2: Đồng bộ Oracle và Siết Chặt Assertion trong `tests/e2e/test_level_progression_e2e.py`
- **File**: `tests/e2e/test_level_progression_e2e.py`
- **Dòng**: 52 - 55 và 135 - 142
- **Nội dung thay đổi**:
```python
<<<< BEFORE (Line 52-55)
    elif level == 99:
        sum_1_98 = sum(calc_delta_exp(i) for i in range(1, 99))
        return int(math.floor(0.33 * sum_1_98))
====
>>>> AFTER
    elif level == 99:
        sum_1_98 = sum(calc_delta_exp(i) for i in range(1, 99))
        return int(math.floor(0.35 * sum_1_98))
<<<<
```
Và:
```python
<<<< BEFORE (Line 135-142)
    def test_f01_exp_curve_pinnacle_softwall_tier7_ratio(self) -> None:
        """Level 99->100 delta is >= 30% of total 1-99 EXP and 25-35% of lifetime EXP."""
        sum_1_98 = sum(calc_delta_exp(i) for i in range(1, 99))
        delta_99 = calc_delta_exp(99)
        total_lifetime = sum_1_98 + delta_99
        assert delta_99 >= 0.30 * sum_1_98
        assert 0.20 <= (delta_99 / total_lifetime) <= 0.35
====
>>>> AFTER
    def test_f01_exp_curve_pinnacle_softwall_tier7_ratio(self) -> None:
        """Level 99->100 delta is >= 30% of total 1-99 EXP and 25-35% of lifetime EXP."""
        sum_1_98 = sum(calc_delta_exp(i) for i in range(1, 99))
        delta_99 = calc_delta_exp(99)
        total_lifetime = sum_1_98 + delta_99
        assert delta_99 >= 0.30 * sum_1_98
        assert 0.25 <= (delta_99 / total_lifetime) <= 0.35
<<<<
```

### Thay đổi 3: Tái đồng bộ Central SQLite Matrix Database
Sau khi sửa code Python, chạy lệnh seeder đồng bộ database:
```powershell
python tools/lint/verify_game_design_matrix.py --sync
```
Lệnh này tự động cập nhật lại toàn bộ 100 hàng trong bảng `progression_benchmarks` của `data/game_design_matrix.db` với giá trị mới.

---

## 5. Quy Trình Kiểm Thử Xác Nhận Khép Kín (Closed-Loop Verification Protocol)

Để bảo đảm nghiệm thu sạch 100% không phát sinh lỗi hồi quy:

```powershell
# 1. Chạy E2E Unit Test kiểm tra EXP curve và tỷ số 25-35%
python -m pytest tests/e2e/test_level_progression_e2e.py -k "test_f01" -v

# 2. Chạy Harness thẩm định thực nghiệm của Challenger
python .agents/teamwork/challenger_m1_progression_1/challenge_exp_curve.py
# -> Dự kiến: Kết quả sẽ PASS 7/7 hạng mục, verdict: APPROVED!

# 3. Chạy kiểm toán ma trận thiết kế game
python tools/lint/verify_game_design_matrix.py

# 4. Chạy kiểm toán vệ sinh mã nguồn nghiêm ngặt
python tools/lint/check_code_and_doc_hygiene.py --strict
```
