## 2026-10-01T00:57:55Z
You are worker_m1_progression_1, a teamwork_preview_worker.
Your working directory is: c:\Projects\FreeExile\.agents\teamwork\worker_m1_progression_1
Your parent is: orchestrator_4 (conversation ID: 6f4a2aa2-4315-4660-8cb7-8352a7220c95)

Read the authoritative requirements in c:\Projects\FreeExile\.agents\teamwork\ORIGINAL_REQUEST.md under section ## 2026-10-01T00:40:44Z.
Read the project architecture in c:\Projects\FreeExile\.agents\teamwork\orchestrator_4\PROJECT.md.
Also read the detailed specifications and drop-in code prepared by the M1 explorers in:
- `c:\Projects\FreeExile\.agents\teamwork\explorer_m1_progression_1\report.md` and `handoff.md`
- `c:\Projects\FreeExile\.agents\teamwork\explorer_m1_progression_2\report.md` and `handoff.md`
- `c:\Projects\FreeExile\.agents\teamwork\explorer_m1_progression_3\report.md` and `handoff.md`

MANDATORY INTEGRITY WARNING:
DO NOT CHEAT. All implementations must be genuine. DO NOT hardcode test results, create dummy/facade implementations, or circumvent the intended task. A teamwork_preview_auditor will independently verify your work. Integrity violations WILL be detected and your work WILL be rejected.

File Ownership:
You exclusively own and may edit the following files:
- `server/world/level_progression_curve.py` (new)
- `server/world/game_design_matrix_schema.py`
- `server/world/game_design_matrix_types.py`
- `server/world/game_design_matrix_service.py`
- `server/world/game_design_matrix_seeder.py`
- `data/game_design_matrix.db`

Task Instructions:
1. Create `server/world/level_progression_curve.py`:
   - Pure mathematical curve calculator containing `@dataclass(slots=True, frozen=True)` for `LevelExpBenchmark` and `calculate_piecewise_exp_curve() -> Dict[int, LevelExpBenchmark]`.
   - Calculate 7 segments: Segment 1 (1-20), Segment 2 (21-40), Segment 3 (41-60), Segment 4 (61-80 linear slope 0.12), Segment 5 (81-90), Segment 6 (91-99), Segment 7 (99->100 delta = 33% of cumulative 1-98 EXP).
   - Enforce: Level 1-20 cumulative EXP < 0.1% total; Level 99->100 delta >= 30% of lifetime 1-98; strictly monotonically increasing cumulative EXP ($target\_exp = cumulative\_exp$ strictly increasing from 1 to 100 with $target\_exp(100) > target\_exp(99)$).
   - Configure tiered death penalty ratio: 1-60: 0.0, 61-80: 0.05, 81-89: 0.10, 90-98: 0.15, 99: 0.25, 100: 0.0.
   - Configure level gap safe range (5), penalty exp (0.60), and benchmark monster exp.
2. Update `server/world/game_design_matrix_schema.py`:
   - Extend `progression_benchmarks` table definition with the 6 new columns: `exp_to_next_level`, `cumulative_exp`, `death_penalty_ratio`, `level_gap_safe_range`, `level_gap_penalty_exp`, `monster_benchmark_exp`.
3. Update `server/world/game_design_matrix_types.py`:
   - Update `ProgressionBenchmarkRow` dataclass with slots and frozen, adding the 6 new fields.
4. Update `server/world/game_design_matrix_service.py`:
   - In `get_level_progression_benchmark()`, map all 13 columns.
   - In `_init_database()`, ensure table schema migration/evolution check (if column count < 13, drop or migrate).
   - In `validate_game_design_integrity()`, ensure monotonicity validation checks pass with 0 violations.
5. Update `server/world/game_design_matrix_seeder.py`:
   - Call `calculate_piecewise_exp_curve()`. Insert 13 values into `progression_benchmarks`. Keep file <= 350 lines.
   - Re-seed `data/game_design_matrix.db`.
6. Run verification commands and capture output:
   - `python tools/lint/verify_game_design_matrix.py --sync`
   - `pytest tests/unit/test_game_design_matrix.py`
   - `pytest tests/e2e/test_level_progression_e2e.py -k "test_f02"`
   - `python tools/lint/check_code_and_doc_hygiene.py --strict`
7. Deliverables:
   - Write full implementation report to `c:\Projects\FreeExile\.agents\teamwork\worker_m1_progression_1\report.md`
   - Write handoff report with test evidence to `c:\Projects\FreeExile\.agents\teamwork\worker_m1_progression_1\handoff.md`
   - Notify parent (6f4a2aa2-4315-4660-8cb7-8352a7220c95) via `send_message`.
