docs(rules): conformance journal round 10 - utility spells (guidance, resistance, virtue, stabilize)

Guidance (new OneShotEffect), resistance (+1 resistance save buff, with the
cantrip-skip policy guard), virtue (temporary HP track) and stabilize
(auto-stabilization) are now modeled; spiritual_weapon and saving_finale
remain deferred with a precise engine reason. Gate 1734.
This commit is contained in:
2026-09-20 10:52:22 +02:00
parent f7886135bd
commit 40088e1869
2 changed files with 15 additions and 4 deletions
+1 -1
View File
@@ -1999,7 +1999,7 @@ Limites de sorts (conformance D6-D9, documentées plutôt que bricolées) :
La gate de validation complète (tests + lint + types) :
```bash
uv run pytest -q # 1691 tests
uv run pytest -q # 1734 tests
uv run ruff check src tests
uv run basedpyright src # mode strict
```
+14 -3
View File
@@ -26,7 +26,7 @@ résiduel**.
| Contrôle | Résultat |
|---|---|
| `uv run pytest -q` | 1691 tests verts |
| `uv run pytest -q` | 1734 tests verts |
| `uv run ruff check src tests` (`select=ALL`) | conforme |
| `uv run basedpyright src` (strict) | 0 erreur |
| Transcript doré depuis la passe 1 | inchangé |
@@ -176,6 +176,16 @@ Une passe de vérification adversariale a confirmé que les 15 correctifs High/M
| `d5ad3c3` | Un **cône/trait** ne perd plus de longueur à cause des cases du lanceur effleurées |
| `b775d46` | Origine des **bursts** (centre-à-centre vs intersection) : **différé** et documenté précisément (nécessite une coordonnée d'intersection dans le contrat) |
### Correctifs de la passe 10 — sorts utilitaires résiduels (lot 4)
| Commit | Objet |
|---|---|
| `08f9af9` | **Guidance** : nouveau type `OneShotEffect` (+1 compétence one-shot sur un unique jet d'attaque, non appliqué au jet de confirmation) — implémente le variant attaque du SRD |
| `1238c40` | **Resistance** : +1 résistance aux jets de sauvegarde (1 min) ; `_find_buff_spell` ignore désormais les cantrips sans emplacement (évite de préempter les buffs de niveau et de dégrader la policy) |
| `a8a65b1` | **Virtue** : 1 pv temporaire (track `temp_hp` consommé avant les vrais pv) |
| `f788613` | **Stabilize** : `StabilizeEffect` qui stabilise automatiquement une créature mourante |
| — | `spiritual_weapon` (attaque flottante persistante) et `saving_finale` (reroll immédiat) restent **différés** (mécanique porteuse absente) |
> **Registre des sorts clos** : les 35 derniers sorts ont été vérifiés champ par champ contre le KB — **0 divergence** (niveaux, sauvegardes, RM, portées, zones, formules conformes). Seuls 2 sorts sont absents du KB (`create_alcool`, `hidden_diplomacy`) et 1 nit de description subsiste (`detect_poison` mentionne « acid »).
### Passe 1 — sorts de buff, mouvement/grille, morts-vivants, armes naturelles
@@ -321,7 +331,7 @@ ne pas être confondues avec des bogues.
| **Course en armure lourde (×3)** | Le modèle n'a pas de champ d'armure ; la course est désormais bornée par la CON et le don Run est modélisé | Hors périmètre (reclassé) |
| **Dégâts non létaux** | Aucune source dans les données ; le minimum de dégâts est approximé en dégâts normaux | Hors périmètre (aucune source) |
| **Armes à éclaboussures** | Aucun objet concerné dans les données | Hors périmètre |
| **Sorts utilitaires différés** | `spiritual_weapon` (attaque flottante persistante), `saving_finale` (reroll immédiat), `guidance`/`resistance`/`virtue`/`stabilize` (buffs sans mécanique cible exploitable par la policy) | Documentés (SRD vérifié, raison moteur consignée) |
| **Sorts utilitaires différés** | `spiritual_weapon` (attaque flottante persistante — pas d'attaquant sans porteur dans le moteur) et `saving_finale` (reroll immédiat — pas de crochet de réaction sur un jet de sauvegarde) restent hors d'atteinte ; `guidance`, `resistance`, `virtue` et `stabilize` sont désormais **modélisés** | Différés (raison moteur consignée) |
| **Non vérifiable (KB)** | `create_alcool`, `hidden_diplomacy` absents du KB ; nit de description de `detect_poison` (« acid ») | Indéterminé / nit |
| **Couverture d'audit** | Rendu du transcript et formats de données avancés non encore audités | À reprendre si besoin |
@@ -359,7 +369,8 @@ Constats explicitement contrôlés et **confirmés conformes** :
| 7 | Registre des sorts (35 restants, champ par champ) ; moteur : Low documentés ; sous-systèmes runner/métriques/observation/CLI | `bg_0a3e3844`, `bg_2c4d185a`, `bg_cc8f0788` | 2 High, 2 Med, ~8 Low | 12 correctifs (`792cec1`..`9a087a4`) ; **registre des sorts clos (108/108)** |
| 8 | Vérification adversariale (correctifs réels + chasse aux écarts non documentés : `dice`, `rng`, `foundry`, `map`, `default_policy`, transcript) | `bg_d8cba9d1`, `bg_1bac8900` | 15 claims vérifiés réels ; 2 High/Med + ~6 Low nouveaux | 8 correctifs (`31d47ae`..`1b43f4e`) ; reste = résiduels assumés et hors périmètre |
| 9 | Résiduels assumés (lots 1-3) : course/CON+Run, harmless, centrage Bless/Bane, Selective Channeling, liche, invocations, healing_done, terrain multi-cases, cône effleuré | `bg_0a5b0d6b`, `bg_b304c5a3`, `bg_b277ee2d` | ~10 correctifs, 1 différé | 10 correctifs (`ea83529`..`d5ad3c3`), doré re-pinné une fois (liche) |
| 10+ | Sorts utilitaires différés (guidance, resistance, virtue, stabilize, spiritual_weapon, saving_finale) ; origine des bursts ; rendu du transcript | — | — | **En pause** (demande utilisateur) |
| 10 | Sorts utilitaires résiduels (lot 4) : guidance, resistance, virtue, stabilize, spiritual_weapon, saving_finale | `bg_9c989e12` | 4 implémentés, 2 différés | 4 correctifs (`08f9af9`..`f788613`) |
| 11+ | **Hors périmètre** : alignement, objets/inventaire, compétences, pv non létaux, armes à éclaboussures, champ d'armure ; rendu du transcript non audité | — | — | À reprendre (en cours) |
---