docs(phase2): record the executed spike (measurements + first danger map)
Measures: observation 64 KB (~16k tokens) for 7 combatants / 22 KB for a 2v2; 124 policy calls per battle, i.e. 124k calls per 1000-run sweep cell -> a per-turn LLM in a sweep is infeasible (D9 validated) and a compact view is mandatory. Danger map (default vs focus-fire monsters, 100 runs): the default policy understates danger (PC deaths 13%->24% and 0%->19%, TPK 0%->2%) and the win rate alone misleads (rises to 98% while deaths rise) -> D12/D13 validated. Notes the spike limits and the remaining P0.2-P0.5 items.
This commit is contained in:
@@ -286,3 +286,50 @@ un coin :
|
|||||||
- Le détachement final devra fournir un **jeu de données d'exemple** et une
|
- Le détachement final devra fournir un **jeu de données d'exemple** et une
|
||||||
documentation de configuration (chemins) pour que le dépôt code reste utilisable
|
documentation de configuration (chemins) pour que le dépôt code reste utilisable
|
||||||
seul.
|
seul.
|
||||||
|
|
||||||
|
## 16. Résultats du spike (exécuté)
|
||||||
|
|
||||||
|
**Livré** : D1 (`LLMPolicy(Observation)` + `LegacyLLMPolicy`), `schema_version`
|
||||||
|
pinné, `objectives.py`, `run_encounter(..., collect_runs=True)`, une politique
|
||||||
|
de monstres **focus fire** (spike) et une **carte de danger** de démonstration.
|
||||||
|
|
||||||
|
### Mesures (décision d'architecture)
|
||||||
|
|
||||||
|
| Mesure | Valeur |
|
||||||
|
|---|---|
|
||||||
|
| Observation, 7 combattants | **64 Ko ≈ 16 000 tokens** (max 67 Ko) |
|
||||||
|
| Observation, duel 2v2 | 22 Ko ≈ 5 500 tokens |
|
||||||
|
| Appels de politique / combat | **124** (7 combattants), 12 (duel) |
|
||||||
|
| Appels par cellule de sweep (1 000 runs) | **124 000** |
|
||||||
|
|
||||||
|
→ **Conclusion 1** : un LLM **par tour** en sweep est infaisable (~2 milliards de
|
||||||
|
tokens par cellule) — **D9 validé**, et la **vue compacte est obligatoire**
|
||||||
|
(cible ~2-4 k tokens, contre 16 k pour le snapshot brut).
|
||||||
|
|
||||||
|
### Carte de danger (RUNS=100, seed=11)
|
||||||
|
|
||||||
|
| Scénario | Monstres | Victoire PJ | Survivent | TPK | ≥1 mort | PV perdus | Rounds |
|
||||||
|
|---|---|---|---|---|---|---|---|
|
||||||
|
| warband 4v4 | défaut | 90,0 % | 87,0 % | 0,0 % | 13,0 % | 66,1 | 12,3 |
|
||||||
|
| warband 4v4 | focus fire | 98,0 % | 76,0 % | 0,0 % | **24,0 %** | 45,0 | 9,6 |
|
||||||
|
| liche 2v2 | défaut | 0,0 % | 100,0 % | 0,0 % | 0,0 % | 44,0 | 3,7 |
|
||||||
|
| liche 2v2 | focus fire | 0,0 % | 81,0 % | **2,0 %** | **19,0 %** | 44,0 | 5,8 |
|
||||||
|
|
||||||
|
→ **Conclusion 2** : mesuré contre la politique par défaut, le danger est
|
||||||
|
**sous-estimé** (morts 13 %→24 % et 0 %→19 %, TPK 0 %→2 %) — **D12 validé**.
|
||||||
|
→ **Conclusion 3** : le **taux de victoire trompe** (il monte à 98 % pendant que
|
||||||
|
les morts augmentent) → les métriques de mort/PV/**queue** sont nécessaires —
|
||||||
|
**D13 validé**.
|
||||||
|
|
||||||
|
**Limites du spike** : n=100 (bandes larges ±9 %), adversaire de niveau spike
|
||||||
|
(focus fire seulement, sans positionnement ni sorts), 2 scénarios. La
|
||||||
|
cartographie réelle (P4) demandera plus de runs, un adversaire complet
|
||||||
|
(`AdversarySpec`) et un balayage de `ScenarioSpec`.
|
||||||
|
|
||||||
|
### État du plan
|
||||||
|
|
||||||
|
- **P0.0 (D1)** ✅, **P0.1 (`schema_version`)** ✅, mesures ✅, `objectives.py` ✅,
|
||||||
|
`collect_runs` ✅.
|
||||||
|
- Restent : **P0.2** (vue compacte), **P0.3** (`candidates`), **P0.4** (`llm_policy`
|
||||||
|
sur le runner + `policy_factory`), **P0.5** (replay `call_seq`) → puis P1 (client
|
||||||
|
+ politiques), P3 (optimiseur), P4 (cartographie complète), P5 (fournisseur + rapport).
|
||||||
|
|||||||
Reference in New Issue
Block a user