From 1a68dfa6dbb9d8bb4f020af3263663316423b668 Mon Sep 17 00:00:00 2001 From: ctan Date: Thu, 17 Sep 2026 23:28:32 +0200 Subject: [PATCH] docs(rules): conformance journal rounds 3-4 (22 fix commits) and residual inventory Round 3 (attack resolution, bestiary/PC stat blocks, action economy) and round 4 (remaining spells, PC feats) found 2 High, ~11 Med and ~70 Low findings. Records the 22 fix commits (e0bf484..0c3f5fd), both justified golden updates (Weapon Focus, Divine Favor), and the residual inventory: ~13 deferred spell effects, 20 feat/racial mismatches, and the missing subsystems (alignment, items, skills). Journal marked paused at round 4. --- README.md | 2 +- docs/conformance-srd.md | 44 ++++++++++++++++++++++++++++++++++++++--- 2 files changed, 42 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 54e0432..aff2f62 100644 --- a/README.md +++ b/README.md @@ -1775,7 +1775,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 # 1491 tests +uv run pytest -q # 1543 tests uv run ruff check src tests uv run basedpyright src # mode strict ``` diff --git a/docs/conformance-srd.md b/docs/conformance-srd.md index 9b7ef94..2c8d634 100644 --- a/docs/conformance-srd.md +++ b/docs/conformance-srd.md @@ -26,7 +26,7 @@ résiduel**. | Contrôle | Résultat | |---|---| -| `uv run pytest -q` | 1521 tests verts | +| `uv run pytest -q` | 1543 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é | @@ -57,7 +57,40 @@ résiduel**. | `3a5948c` | CMD : plus de double comptage de Dextérité (Tiny, CMB pré-calculé) | | `e89ea42` | README/capacités : grapple (pin hors périmètre), `pinned`/`nauseated` sans attaque, Weapon Focus par groupe | -> Transcript doré : mis à jour une seule fois, par le correctif Weapon Focus (`4d45409`) — le +1 du don transforme le jet 15 en 16 contre CA 16, le gobelin meurt au round 4 (justification ligne à ligne dans le docstring du test). +> Transcript doré : mis à jour **deux fois**, chaque fois par un correctif SRD +> justifié ligne à ligne dans le docstring du test — `4d45409` (Weapon Focus : +> le +1 transforme le jet 15 en 16 contre CA 16, le gobelin meurt au round 4) +> puis `bee224a` (Shield of Faith et Divine Favor portent enfin leurs vrais +> buffs : `_find_buff_spell` retient désormais Divine Favor, index 20, ce qui +> remonte la CA de tammara et réécrit son transcript). + +### Correctifs des passes 3 et 4 (commits) + +| Commit | Objet | +|---|---| +| `e0bf484` | Tir dans une mêlée : exemption mesurée **cible → allié le plus proche** (High) | +| `cc9fba3` | CA d'une cible inerte : −5 exact, plus de double comptage d'une Dextérité négative | +| `fa63829` | `trait` et `racial` non cumulables (APG « Traits », CRB) | +| `1c2663d` | Type non cumulable : meilleur bonus **et** pire pénalité conservés séparément | +| `ae037c9` | Dégâts minimum : 1 point sur une touche réduite sous 1 par la RD | +| `b3a7c37` | Types de bonus `alchemical`/`inherent`/`resistance`/`size` (UM Table 2-7) | +| `feaab5e` | `celestial_wolf` aligné sur le loup du SRD + template céleste (DR/RM) | +| `1c94d48` | `harvie` : Sagesse 14, Talons primaires +2 (1d4 ×2), Morsure secondaire | +| `b9477a2` | `ierlieth` : bonus de dégâts −1, Queue secondaire ajoutée | +| `2b5b39a` | Chevaux : sabots 1d4 marqués naturels, Morsure secondaire de Jeanne | +| `611952c` | `misty` : don « Plot Armor » ajouté en no-op tracé | +| `83bbcae` | Ray of Enfeeblement : type `PenaltyEffect` (pénalité de Force lancée, Fort moitié) au lieu de *fatigued* | +| `79d9ff0` | `drunkards_breath` : cône de 30 ft qui rend *nauseated* (niveau 2, conjuration, Fort annule) — l'ancien contenu était **inventé** (High) | +| `48c816b` | `delay_disease` : niveau 2 conjuration (soins) | +| `27f9629` | Données : `alarm` close, `air_bubble`/`endure_elements` touch, `delay_poison` conjuration, conventions 10 ft/0 ft documentées, `daze` 4 DV | +| `47f563e` | Shield of Faith : +2 CA déflexion (+1 / 6 niveaux, max +5) | +| `bee224a` | Divine Favor : +1 chance attaque/dégâts par 3 niveaux (max +3) — doré mis à jour | +| `6d96779` | Spear of Purity / Shard of Chaos : 1d8 / 2 niveaux (max 5d8), Volonté moitié | +| `a5bd3c5` | Défense totale : plus d'attaques d'opportunité | +| `e253b03` | Charge restreinte à 1× pour un accablé/invalide (et au round de surprise) | +| `980d53d` | Aide : expiration au début du tour de **l'aidant** | +| `a144423` | Défense totale et combat défensif non cumulables | +| `0c3f5fd` | Durées de condition scalées au niveau (hold person, doom, touch of fatigue, vanish) | ### Passe 1 — sorts de buff, mouvement/grille, morts-vivants, armes naturelles @@ -205,6 +238,9 @@ ne pas être confondues avec des bogues. | **Réglages du liche non SRD** (pv 100 vs 111, Force, Intelligence, initiative, aura de terreur 30 ft/DD 22 vs 60 ft/DD 18) | Réglages d'équilibrage du scénario doré | Assumé : conservés pour ne pas casser la fiche dorée | | **Dés énergétiques non multipliés par un critique** (contact du liche) | Règle moteur globale (exceptions CRB « Critical Hits ») | Assumé : cohérent avec les autres attaques | | **`selective_channeling` non modélisé** | Le canal d'énergie affecte toutes les créatures du type visé dans la zone | Assumé (documenté au README) | +| **Effets de sorts différés (passe 4)** | `mirror_image` (1d4+1 images, ~67-78 % d'échec au lieu du flou 20 %), `spiritual_weapon` (attaque flottante persistante), buffs utilitaires sans mécanique cible (`guidance`, `resistance`, `virtue`, `stabilize`, `owls_wisdom`, `saving_finale`), `acid_arrow` (cap 7 rounds), `ice_slick` (+1/niveau), `charm_person` (condition *charmed*), `bleed` (seuil ≤ −1 pv), `bane` (pénalité −1), `bears_endurance` (+2 pv/DV), `aid` (pv temporaires), `tears_to_wine` (portée 10 ft) | Écart connu, non corrigé dans cette passe (correctifs à effet de bord potentiel sur le choix de sort de `default_policy`) | +| **20 écarts de dons/raciales (passe 4)** | Effets faux : *Exalted of the Society*, *Fortified Drinker* (Med, ce dernier ne s'applique **jamais** — condition « alcohol » non supportée) ; *Born Damned*, *Half-Forgotten Secrets*, *Axe to Grind*, *Thoroughbred*, *Extremely Fashionable*, *Lonely*/*Bitter* (drawbacks inversés en bonus), *Larger Than Life*, *Friendly Face*, *Breeze-Kissed* ; effets manquants : *Ambitious*, *Focused Study*, *Scaled Skin* ; valeur fausse : *Maw or Claw* (1d4 vs 1d6) ; noms inventés : *Whispering Wind*, *Like the Wind*, *Fey-touched*, *Pingre* | La parité feuille ↔ JSON est parfaite dans les deux sens (aucun don manquant ou en trop, aucun no-op silencieux), mais le résolveur mappe mal ces noms ou accepte des noms non-SRD — non corrigé | +| **Morts-vivants / objets / alignement** | Le moteur n'a ni alignement (Shard of Chaos, Spear of Purity, Protection from Evil), ni piste d'objets (Steal, Sunder), ni sous-système de compétences (Perception opposée, Acrobaties) | Hors périmètre : mécaniques absentes du modèle | --- @@ -233,7 +269,9 @@ Constats explicitement contrôlés et **confirmés conformes** : |---|---|---|---|---| | 1 | Sorts (B), Mouvement/grille (C), Morts-vivants (D), Armes naturelles (A) | `bg_9e9e22e6`, `bg_cda707bf`, `bg_ba80396a`, `bg_6a621d4c` | 1 High, 12 Med, ~20 Low | Corrigés + documentés (ci-dessus) | | 2 | Dons/capacités (E), Manœuvres (F), Conditions (G), Données de sorts (H) | `bg_5314f54c` (re-run), `bg_9fdc610e`, `bg_f5829c68`, `bg_b289533d` + extraction/vérification `bg_e1ccd2da`, `bg_4292da47`, `bg_14d5344a` | 4 High, ~18 Med, ~45 Low | Constats consignés (§ 1 passe 2) ; correctifs data/conditions/dons en cours | -| 3+ | Bestiaire/PJ (stat blocks), résolution d'attaque/défense, économie d'action, sorts restants (68/108 non vérifiés champ par champ) | — | à lancer | À faire | +| 3 | Résolution d'attaque & défense, bestiaire/PJ (blocs de stats), économie d'action & tour, sorts restants | `bg_38d99eac`, `bg_8cdcb3e2`, `bg_73e3f878` | 1 High, ~10 Med, ~40 Low | 11 correctifs (`e0bf484`..`611952c`) + Ray of Enfeeblement (`83bbcae`) ; le reste documenté | +| 4 | Sorts restants (champ par champ), dons des 8 PJ vs feuilles Foundry | `bg_29c36b1a` | 1 High, 1 Med, ~30 Low (dont 20 dons) | 11 correctifs (`79d9ff0`..`0c3f5fd`) ; 20 écarts de dons + effets de sorts différés documentés | +| 5+ | ~60 sorts non encore vérifiés, sous-systèmes non couverts (invocation, métamagie/slots, concentration, observation, runner/métriques) | — | — | **En pause** (demande utilisateur) | ---