Aller au contenu

Étude astronomique de l'EMV/Historique des modifications

De Wiki Valtorta
🤖 Travail réalisé avec une intelligence artificielle. Le relevé, l'encodage, les relectures et la rédaction ont été faits par Claude (modèle d'IA d'Anthropic) et ses sous-agents, à la demande de Matthieu Penchenat ; les calculs astronomiques sont faits par des scripts Python. Les jugements de lecture restent des jugements, à vérifier. Dépôt de travail : find-enigmes, branche astro (privé) ; les chemins de fichiers cités renvoient à ce dépôt. Mis en ligne le 4 octobre 2026.

Toute modification du codebook, du schéma, des consignes ou des mesures est consignée ici (principe P4 du plan).

2026-09-26 — codebook v1-pilot-r1 (après le pilote, avant tout calcul)

Motif. Au pilote, l'accord passe A medium / passe A high reste sous les seuils du point de décision n° 1 : heure 0,637 (seuil 0,85), phase κ 0,754 (seuil 0,8), direction 0,556 sur 9 cas (seuil 0,85). Les corrections s'appuient uniquement sur l'examen des désaccords entre les deux passes. Aucune chronologie (Lavère, De Caro) ni aucun résultat de calcul n'a été consulté ; aucun calcul n'a encore été fait.

Diagnostic.

  • Heure (37 désaccords sur 102) : 17 sont des fenêtres libres ({kind: night} / solar) face à un code ; il n'existait pas de code « en journée » ni « la nuit, sans précision ». Les autres viennent de codes qui se chevauchent (evening / nightfall / first_half_night / dusk) et de fenêtres déduites du ciel décrit (« la luna a perpendicolo » → deep_night), ce qui est en plus circulaire.
  • Phase (4 désaccords sur 40) : plusieurs codes de phase empilés dans une lecture (nearly_full_waxing + age_days ; new_first_crescent + thin_crescent) ; pas de règle pour la lecture préférée de « luna nuova » ; pas de code pour « ai suoi primi giorni » ni pour un décalage en jours avant la pleine lune.
  • Direction (4 désaccords sur 9) : directions déduites (Polaire ⇒ nord, reflet sur la mer ⇒ ouest), conflit repère / direction (« i monti occidentali »).

Changements.

  • Codebook (scripts/astro_it/build_codebook.py) :
    • nouveaux codes time.daytime et time.night (repli sans expression explicite, fallback: true) ; time.whole_night réservé à une durée explicite ;
    • nouveaux codes moon.young et moon.days_from_phase (+ clé de contrainte moon_days_from_phase) ;
    • meta.phase_codes (liste des codes qui fixent la phase) et meta.rules (règles T1-T5, P1-P5, D1-D3).
  • Validateur (validate.py) :
    • fenêtre horaire obligatoirement codée ; time.basis_type = explicit (citation exacte présente dans le chapitre) ou fallback (seulement time.night / time.daytime) ;
    • au plus un code de phase par lecture ;
    • dir seulement avec un mot cardinal dans la citation ou dans dir_basis.
  • Consignes : règles recopiées dans prompts/astro-it-extract.md ; prompts/astro-it-encoding-review.md y renvoie.
  • Mesure (pilot_report.py) : phase_class = ensemble des codes de phase de la lecture préférée, au lieu du premier code de la liste (l'ancienne mesure dépendait de l'ordre d'écriture). Sur les sorties du pilote, cette mesure plus stricte donne 0,875, κ 0,695 (contre 0,90, κ 0,754) : les empilements comptent désormais comme désaccords.

Conséquence. Les sorties du pilote ne passent plus le validateur (règles nouvelles). L'accord doit être re-mesuré par un ré-encodage indépendant avant le gel astro-it/instruments-v1.

2026-09-26 — ré-encodage aveugle du pilote (codebook v1-pilot-r1)

194 items fixes (union des passes A du pilote), 6 lots, deux runs Opus indépendants (emv/astro-it/pilot/reencode/, scripts/astro_it/reencode_pilot.py, consigne prompts/astro-it-encode.md). 12 sorties valides.

Champ r0 (passes A) r1 (ré-encodage) Seuil
Phase (κ) 0,695 (mesure par ensemble) 0,893 (n = 43) 0,80 ✅
Heure 0,637 0,825 (n = 114) 0,85 ❌
Direction 0,556 (n = 9) 1,0 (n = 5, non concluant) 0,85
day_rel 0,98 0,904 0,85 ✅
Lieu 0,892 0,772 —
Item / not_item — 0,851 —

Désaccords restants sur l'heure (20) : report d'une expression à travers un temps écoulé implicite (≈ 9) ; items prospectifs « domani » (4) ; expressions d'approche ou de négation (« presto è notte », « la sera si avvicina », « se viene il buio ») (≈ 5) ; expression située après l'item (2) ; l'item solaire pris comme sa propre base (1). Ces mesures portent sur les chapitres qui ont servi à régler les règles : une nouvelle mesure doit se faire sur d'autres chapitres.

2026-09-26 — codebook v1-pilot-r2, gazetteer v0-pilot-r2

Motif. Désaccords restants du ré-encodage r1 et ambiguïtés signalées par les 12 encodeurs. Toujours sans chronologie ni calcul.

Changements.

  • Règles réécrites (meta.rules) :
    • Heure T1-T8 : base = dernière expression qui précède (jamais une section postérieure) ; report jusqu'à une marque explicite de temps écoulé, les activités ne coupent pas ; expressions d'approche / condition / négation → moment qui précède ; un item solaire n'est pas sa propre base ; items prospectifs et rétrospectifs ; time.basis_scope (same_section | carried) pour élargir les fenêtres reportées en analyse de sensibilité.
    • Phase P3 (mot de forme même avec « novella »), P5 (moon.old), P6 (croissant qui éclaire → moon.up).
    • Direction D1 (« cielo d'Oriente » n'est pas une direction), D2 (dir_basis).
    • Nouveau groupe I1-I5 (ce qui est un item) : indices de saison → season_cue hors items ; usage général et durées sans ancrage exclus ; fête nommée dans le titre ; citations imbriquées.
  • Codes : moon.old, time.late_afternoon (vespro), cal.feast_offset (+ clé feast_offset), fête second_passover ; expressions ajoutées (prime ombre, principio di notte, notte affatto, crepuscolo du matin) ; cal.weekday = jour juif.
  • Validateur : base horaire postérieure refusée, basis_scope obligatoire, item solaire base de lui-même refusé, scène exigée seulement pour un item datable, classe season_cue.
  • Gazetteer : nob, jabesh_gilead, ramoth_gilead, bozrah (approximatifs, review_needed) ; repère hermon pour nazareth, capernaum, lake_galilee.

Mesure suivante. Sur des chapitres neufs pour ne pas ajuster les règles à l'échantillon de test : emv/astro-it/validation-r2/ (20 chapitres tirés hors pilote, graine 20260926, 17 riches en termes de ciel, 3 avec seulement soleil / calendrier). Une passe A de relevé, puis deux encodages indépendants de la liste fixe. Effort des agents : ré-encodage r1 en high ; validation r2 en medium (niveau prévu pour le relevé complet). Si l'accord baisse en r2, l'effet des règles et celui de l'effort ne sont pas séparables.

2026-09-26 — validation r2 sur chapitres neufs (codebook v1-pilot-r2, effort medium)

40 chapitres tirés hors pilote (graines 20260926 et 20260927), 6 passes A de relevé → 87 items fixes (7 chapitres sans item) → 6 lots × 2 encodages indépendants. 18 sorties valides.

Champ r1 (pilote, high) r2 (neufs, medium) Seuil
Heure 0,825 (n = 114) 0,867 (n = 60 ; IC 95 % ≈ 0,78-0,95) 0,85 ✅
Phase (κ) 0,893 (n = 43) 1,0 (n = 25) 0,80 ✅
day_rel 0,904 0,967 0,85 ✅
Direction 1,0 (n = 5) 1,0 (n = 1, non testée) 0,85
Lieu 0,772 0,85 —
Item / not_item 0,851 0,977 —
Datable 0,924 0,95 —

Désaccords restants sur l'heure (8) : « la sera scende » lu dusk ou evening (2) ; expression hors liste « il periodo più oscuro della notte » (2) ; heure explicite tirée du ciel par la narratrice (« deve essere verso mezzogiorno ») ; « nel venire della sera » vs « è quasi sera » ; aube corrigée par la narratrice (84.1) ; repas pascal prospectif (593.1). Coût mesuré : passe A ≈ 150-190 k tokens par lot de ≈ 100 Ko (≈ 1,6 k tokens / Ko) ; encodage d'une liste fixe ≈ 120-160 k tokens par lot de ≈ 90 Ko.

2026-09-26 — codebook v1.0 : gel des instruments (tag astro-it/instruments-v1)

Corrections mineures après la validation r2, appliquées sans nouvelle mesure (décision de l'utilisateur) ; l'accord sera re-mesuré en production par le ré-encodage indépendant de 15 % des chapitres (plan § 6.5).

  • T1 : l'expression qui précède l'item prime ; une expression placée après, dans la même section, seulement à défaut. Une heure déduite du soleil par la narratrice est explicite, sauf pour l'item solaire dont elle est tirée.
  • T8bis : soleil « calato / tramontato » → time.dusk ; « tramonta / cala » → time.sunset ; fenêtre qui chevauche le coucher = compatible avec les deux jours juifs pour un jour de semaine ou une fête (à implémenter dans le moteur).
  • Expressions ajoutées : la sera scende / cala, imbruna, nel venire della sera, ultime luci del giorno (dusk) ; la notte è scesa / cade (nightfall) ; è notte, è tardi (night) ; il periodo più oscuro della notte (before_dawn) ; prime ore del giorno (morning) ; il sole tramonta (sunset).
  • I4 : le titre du chapitre est citable sous ref = "<chap>.0" (validateur) ; titre = jour civil de l'autrice.
  • I6 : lieu non nommé mais déductible → lieu le plus proche du gazetteer avec place.approx = true, item datable.

Trous connus, non traités (à relire à la phase 9) : soleil masqué par un relief hors lever / coucher (custom) ; lune « pas encore levée » (moon.set_already détourné) ; fin de scène sur une vision insérée ; direction non testée faute de cas.

2026-09-26 — correctif du validateur pendant la phase 4

detect et microscope acceptent aussi la référence de titre <chap>.0 (oubli lors de l'ajout de I4 ; b-001 a dû retirer la mention du titre du ch. 3, reportée dans sa couverture). Un item cité sur le titre n'a pas à figurer dans une fiche de couverture (a-001 a reporté la fête du titre du ch. 3 dans stated_calendar). Aucune règle modifiée.

2026-09-26 — phase 4 : relevé exhaustif terminé

  • Passe A : 225 lots sur 225 valides ; passe B : 173 sur 173. Couverture 5 801 / 5 801 sections pour chacune. Aucune chronologie consultée (relevé aveugle).
  • Incident : coupure de quota vers 18 h ; environ 20 agents tués en cours de lot. Les sorties partielles (invalides) ont été refaites en entier par un nouvel agent (b-108, b-111) ; aucune sortie partielle conservée.
  • Écarts de méthode sans effet sur le contenu : le validateur detect refuse une fiche de couverture sur le titre (<chap>.0) — les mentions tirées des titres restent dans la liste ; plusieurs agents ont écrit leur JSON par un script du scratchpad au lieu d'un seul appel d'écriture.
  • Bilan brut : 1 561 items A (973 datables ; calendar 877, moon 249, sun 131, star 102, knowledge 83, lexicon 51, extraordinary 50, optics 10, planet 7, transient 1), 6 136 entrées seen ; 9 299 mentions B (6 434 littérales, 959 incertaines) ; filet K : 2 610 sections.
  • Rapprochement (scripts/astro_it/reconcile.py, règle du § 6.4) : 1 158 mentions littérales de B ni items ni seen de A ; 138 sections K inexpliquées (5,3 %) ; observations v1 retrouvées près d'un item A : 238 / 242. Total 1 300 cas, 74 lots d'arbitrage (adjudication-cases/j-NNN.json, chapitres entiers, ≤ 120 Ko, ≤ 50 cas).
  • Points signalés par les agents pour l'arbitrage et la relecture (non corrigés pendant le relevé) : 460.2 soleil levant « dietro i monti occidentali » ; 426.10 « luna nuova » et lune au zénith ; 545.2 lune jeune se levant au crépuscule ; 586.16 / 587.1 lune contradictoire au même instant ; 591.1 plenilunio avant les Rameaux ; 592 profil lunaire proche du premier quartier ; 602.11-12 lune à l'est puis au zénith ; 630.12-20 lune des derniers jours puis « falcetto » au zénith (vu par A et B) ; 632.42 « luna novella » avant l'aube ; 566.1-2 sabbat et marché ; 612.21-23 changement de jour à la seconde veille ; 616 décompte du « terzo giorno » ; 585.1 « cupole del Tempio » ; report horaire T2 souvent trop précoce ; replis time.daytime fréquents ; lieux hors gazetteer (Endor, Tarichée, Masada, Arbela, Gamala, Bétèr, Jiftael, Tofet…).

2026-09-26 — phase 4 : arbitrage, microscope, mesures d'exhaustivité → point de décision n° 2

  • Arbitrage : 74 lots (adjudication/j-NNN.json), tous valides ; 1 300 cas → 8 inclus, 189 fusionnés avec un item A, 1 103 exclus. Items ajoutés : 25.8-j1 (jour liturgique d'une dictée), 85.2-j1/j2 (éclairages solaires Tabor, Carmel), 167.9-j1 (« pianeta » pour la Terre), 485.5-j1 (Tabernacles implicites), 575.8-j1 (Pâque de l'année), 581.7-j1 (« primavera »), 634.16-j1 (banquet pascal passé). Motifs d'exclusion dominants : indices de saison (I1), durées sans ancrage (I3), soleil/ombre/météo sans position d'astre, homonymes du filet (imponente, argento, alabastro, Lucifero). Omissions récurrentes de A : fête nommée sans écart rangée en stated_calendar, saison nommée rangée en season_cue, titres (I4) non rattachés comme citations.
  • Consolidation (scripts/astro_it/consolidate.py) : items.jsonl = 1 569 items (975 datables), scenes.jsonl.
  • Microscope : 30 chapitres tirés par taille (graine 20260928, microscope/selection.json), 13 lots valides, 172 trouvailles littérales ou incertaines (75 implicites). 158 expliquées par un item ou une entrée seen de A (91,9 %) ; les 14 restantes relues à la main : 5 déjà couvertes par un item dont la citation diffère (136.1, 466.1, 466.5, 647.1, 432.5), 9 hors item par règle (chaleur, éblouissement, saison, tremblement de terre, éclairage de lampe, semaines de Daniel). Aucun item datable manqué dans l'échantillon.
  • Capture-recapture (A, B, K) sur 1 434 items ciel/calendrier : Chapman A-B, rappel de A 0,995 ; log-linéaire (meilleur AIC) rappel ≈ 1,0 ; datables : 0,998. Les trois sources sont positivement dépendantes (mêmes modèles, même texte), donc ces estimations sont des bornes hautes ; le microscope est la mesure directe retenue.
  • v1 : 238 / 242 retrouvées près d'un item ; les 4 autres arbitrées (2 fusionnées : 532.5, 566.21 ; 2 exclues : 439.1 repère horaire, 461.10 énoncé générique).
  • Point de décision n° 2 : rappel estimé ≥ 0,97 sur les éléments datables → pas de passe ciblée supplémentaire.

2026-09-27 — phase 5 : relecture de l'encodage et accord inter-annotateurs → point de décision n° 3

  • Script : scripts/astro_it/encoding_review.py (build, apply, iaa) ; validateur review --batch (un verdict par item, chaque item corrigé revalidé avec sa scène) ; survey_status.py suit les passes R et E.
  • Relecture aveugle : 52 lots (encoding-review/batches/r-NNN.json, tous les 1 569 items, ≤ 35 items et ≤ 200 Ko par lot), tous valides. 1 349 ok, 220 fix (14 %), 316 changements tracés dans encoding-review/log.jsonl (notes 81, time 80, readings 79, quote_it 21, place 20, …). Les compléments proposés à l'arbitrage (109 items) ont été montrés comme suggestions ; les relecteurs en ont retenu une partie. Sorties : items.reviewed.jsonl, scenes.reviewed.jsonl (974 datables, contre 975).
  • Erreurs corrigées les plus fréquentes : day_rel de la scène donné à un item rétrospectif ou prospectif non situé (T6), qui aurait appliqué une fête, un mois ou un sabbat à la scène elle-même ; fenêtre horaire tirée de l'astre de l'item (T5) ou d'une section postérieure (T1) ; direction déduite d'une ombre ou d'une face éclairée (D1) ; lieu déductible laissé à null sur un item datable (I6) ; lectures alternatives manquantes ; groupes simultanés trop larges. Correction de fond : 354.2 (deux départs confondus, le clair de lune n'est plus datable).
  • Jours de semaine le soir (437.1, 590.22, 591.6, 632.13) : les relecteurs ont appliqué la note de cal.weekday (jour juif, pas de lecture civile en plus) et retiré la lecture civile. Conforme au codebook gelé ; la lecture civile relève d'une analyse de sensibilité en phase 8.
  • Accord inter-annotateurs : 75 chapitres (15 % des 505 porteurs d'items ciel/calendrier, strates tiers de l'œuvre × présence d'un item de nuit, graine 20260929, reencode/selection.json), 207 cibles ré-encodées à l'aveugle en 22 lots, tous valides. Accord (reencode/iaa.json), avant → après relecture : classe de phase κ 0,929 → 0,929 (seuil 0,8) ; fenêtre horaire 0,874 → 0,906 (0,85) ; day_rel 0,969 → 0,969 (0,85) ; direction 0,833 → 0,833 (0,85, n = 6, un seul désaccord : 105.1) ; lieu exact 0,827 → 0,867, lieu à 25 km 0,961 → 0,992 ; datable 0,948 → 0,958 ; item ou non 0,928.
  • Désaccords sur l'existence de l'item : 15 cibles gardées par l'encodage, rejetées par le ré-encodeur (repères horaires d'aube ou de soleil, saisons figurées ou générales, doublons, dates hors scène) ; surtout des items de force vague. Items douteux signalés par les relecteurs (la relecture ne peut pas retirer un item) : 333.1 « astrologarlo », 422.3 « due lune », 570.10, 579.2.
  • Zones grises du codebook relevées par plusieurs agents indépendants : saison ou mois nommés (I1 contre I2 et la note de cal.season) ; fête à venir ou passée sans écart chiffré (datable ou non, day_rel 0 ou null, bornes de cal.feast_offset) ; lieu nommé absent du gazetteer (lieu voisin approché ou place.new) ; T5 étendue aux étoiles (438.6) ; titre refusé par le validateur comme base horaire explicite ; item lexicon compagnon impossible à ajouter en relecture (629.8).
  • Écart au protocole : l'agent de r-025 a ouvert le début de encoding-review/out/r-001.json pour voir le format de sortie (déclaré, rien d'utilisé ; pas de chronologie ni de donnée astronomique) ; lot conservé.

2026-09-27 — phase 5 : contrôle « item ou non » et gel de l'encodage (tag astro-it/encodings-v1)

  • Décision de l'utilisateur au point n° 3 : passe allégée « item ou non » avant le gel, puis gel avec analyses de sensibilité pré-enregistrées (plan § 8.7).
  • Contrôle (prompts/astro-it-item-check.md, encoding_review.py check-build / check-apply, validateur itemcheck) : 234 items (215 datables de force vague, 15 rejetés par le ré-encodeur, 4 signalés en relecture), 10 lots avec la section et ses voisines, tous valides. Règle : retrait seulement avec une classe et une règle nommées, doute = garder. Résultat : 203 gardés, 31 retirés (29 datables) : repère horaire seul 19, figuré 5, usage général ou durée sans ancrage 4, indice de saison 2, non astronomique 1. 7 des 15 rejets du ré-encodeur confirmés ; 422.3, 570.10, 579.2 retirés, 333.1 « astrologarlo » gardé (lexicon). Sortie : items.checked.jsonl (les items retirés restent, avec excluded), item-check/summary.json.
  • Défaut de la consigne : elle citait comme exemples de non-items des tournures tirées des items signalés (« ad ogni primavera », « due lune », « il sole inizia la discesa », « l'alba rosata a oriente »). Les verdicts sur ces items et les retraits d'aubes à l'orient ne sont donc pas des jugements indépendants : 10 retraits marqués prompt_influenced (349.10, 404.1, 422.3, 455.1, 570.10, 579.2, 617.1-a3, 617.3, 80.1-a3, 80.11). Sur le fond, ils restent conformes à D1 (une lueur d'aube à l'est ne situe pas le soleil) et à I3 ; la sensibilité les réintègre.
  • Gel (scripts/astro_it/freeze.py) : observations.frozen.jsonl (1 569 items, 31 exclus, 1 538 gardés dont 945 datables, 774 candidats à l'ensemble principal avant le filtre p ≤ 0,5), scenes.frozen.jsonl (561 scènes), freeze.json (effectifs, SHA-256 des fichiers gelés, du codebook et du gazetteer). Marqueurs sensitivity par item : vague 625, item_check_dropped 31, prompt_influenced 10, iaa_disputed 15, weekday_civil_removed 4.
  • Analyses de sensibilité ajoutées au plan (§ 8.7) avant tout calcul. Toute modification ultérieure de l'encodage est consignée ici et publiée des deux façons.

2026-09-27 — phase 6 : correctif du moteur (limite du jour juif), avant tout calcul sur les chronologies

  • Défaut trouvé par scripts/astro/tests/test_constraints.py au premier passage complet des tests (passage du portable au Mac mini ; environnement recréé : Python 3.12.14, mêmes versions que scripts/astro/requirements.txt). Un jour de semaine donnait 2/7 des jours de W au lieu de 1/7 et la Pâque 2 jours par an : le dernier instant d'une fenêtre bornée par le coucher (time.daytime, time.late_afternoon) tombait exactement sur le coucher et jewish_calendar.evening_of le rattachait au jour juif suivant ; la fenêtre comptait donc pour deux jours juifs. 148 items datables gelés portent une contrainte de calendrier dans l'une de ces deux fenêtres.
  • Correctif (constraints.py, Ctx.T_cal) : les recherches de calendrier (jour juif, mois, fête, jour de semaine, date julienne) se font sur les instants de la fenêtre ramenés de 30 s vers l'intérieur. Une fenêtre bornée par le coucher (ou par minuit) appartient à un seul jour ; une fenêtre qui chevauche le coucher (time.sunset, time.dusk, time.evening) reste compatible avec les deux jours juifs, comme le prévoit T8bis. Aucune donnée astronomique n'est touchée (soleil, lune, étoiles gardent les instants exacts).
  • Test de la lune corrigé : moon.up sur time.night vaut 0,97 et non 0,55-0,8, car une lecture tient si elle est vraie à un instant de la fenêtre (règle du moteur, § 6.6) ; le test vérifie désormais nuit entière (> 0,93), demi-nuit (0,55-0,85) et time.whole_night (< 0,05), plus un test de la limite du jour juif. 30 tests passent.
  • Rien n'avait encore été calculé avec le moteur fautif (aucun scan, aucun rattachement aux chronologies).
  • Lieu (constraints.place_of) : 8 items datables (295.6-a1, 298.1-a1, 298.2-a1, 456.3-a1, 479.5-a1, 480.1-a1, 516.1-a1, 516.1-a2) portent un lieu nommé absent du gazetteer (place.id null + place.new : Arbela, lac de Meron, Gamala, Jezrael, Gabaon) ; le moteur les rejetait (« place None », jamais vrais). Ils prennent désormais place.new.nearest_id, comme I6 le fait pour un lieu déduit (écart < 25 km). scan.py transmet aussi la scène à l'évaluateur (lieu de la scène à défaut de celui de l'item). Test ajouté ; 31 tests passent.

2026-09-27 — phase 6 : premiers scans (taux de base sur W, sans chronologie)

  • scripts/astro/scan.py, moteur v2.0, 945 items datables, 1 447 lectures, six scénarios (tolérance strict / nominal / lenient × règle de Nisan n15 / n14), ≈ 30 s chacun sur 12 cœurs. Sorties non versionnées : emv/astro-it/scans/v2.0/<niveau>_<nisan>.{npz,json}.
  • Médiane des taux de base : 0,248 (strict), 0,303 (nominal), 0,365 (lenient). Lectures partielles (contrainte non évaluable, surtout des custom sans évaluateur) : 95 dont 56 préférées. Jamais vraies sur W : 43 / 25 / 15. La règle de Nisan change 237 lectures (noms des mois ; débuts de mois identiques).
  • Lectures préférées jamais vraies en nominal, triées sans regarder aucune chronologie :
    • impossibilités astronomiques du texte : 102.6-a1 (premier quartier qui se lève le soir), 105.1-a1, 222.1-a5, 320.7-a1 (croissant croissant à l'orient au crépuscule), 460.2-a1 (lever derrière les monts occidentaux), 630.20-a1 (fin croissant au zénith la nuit), 632.42-a1 (croissant de lune nouvelle qui se couche à l'aurore) ;
    • conflits fenêtre / contrainte hérités de l'encodage gelé, qui compteraient à tort comme des impossibilités en T1 : 175.5-a1, 25.7-a2, 274.1-a1 (star.starry_sky, soleil ≤ −15°, dans time.dusk, soleil ≥ −12°), 617.1-a1 (étoiles sur time.whole_night, donc dès l'instant du coucher), 643.7-a1 (soleil à 10-60° dans time.dawn). À trancher avant T1 (plan § 8.7) : les écarter des impossibilités ou les réencoder, décision consignée ici.

2026-09-27 — phase 6 : verdicts d'impossibilité (plan § 12 bis, 6), décision sur les conflits fenêtre / contrainte

  • Décision (déléguée par l'utilisateur) : ni exclusion au cas par cas, ni réencodage après calcul, qui ne corrigeraient que les items en échec. On applique à toutes les lectures jamais vraies la procédure pré-enregistrée du § 12 bis, 6, qui prime sur le reste du plan : seuils perceptifs retirés (codes perceptual: true du codebook gelé), puis recherche temporelle affinée. L'encodage gelé n'est pas modifié.
  • Moteur : evaluate_reading(..., step_min, drop_perceptual) (échantillonnage de la fenêtre à la minute ; codes perceptifs laissés de côté) ; script scripts/astro/impossibilities.py, étapes dans l'ordre : perceptual (nominal sans codes perceptifs) → refined (même chose, pas d'une minute) → lenient (tolérance large, pas d'une minute). Sorties non versionnées : emv/astro-it/scans/v2.0/impossibilities_<nisan>.json. Test ajouté ; 32 tests passent.
  • Résultat (identique pour n15 et n14) : 25 lectures jamais vraies en nominal → 7 résolues par le retrait des seuils perceptifs (175.5-a1, 25.7-a2, 274.1-a1, 617.1-a1 r1 et r2, 479.5-a1 r2, 639.5-a1 r2), 5 solutions à la tolérance large (208.6-a1 r2, 232.6-a1 r3, 320.7-a1, 5.4-a4 r2 et r3), 13 impossibilités robustes dont 7 en lecture préférée : 102.6-a1, 105.1-a1, 222.1-a5, 460.2-a1, 630.20-a1, 632.42-a1 (partielle : repère « gobba di un monte » hors gazetteer), 643.7-a1. 102.6, 630.20 et 632.42 figuraient déjà parmi les 5 impossibilités de la v1.
  • 643.7-a1 (soleil à 10-60° dans time.dawn) reste une impossibilité robuste au sens mécanique alors qu'il s'agit vraisemblablement d'une fenêtre reportée (« È l'alba », basis_scope carried) : son sort relève de la relecture de phase 9 (défense des impossibilités), comme le troisième verdict (impossibilité géométrique démontrée).

2026-09-27 — phase 6 : validation du moteur (T0), engine-tests/report.json : tout passe

  • Script scripts/astro/engine_tests.py (fetch : références NASA analysées dans engine-tests/ref/, versionnées avec leurs URL ; run : rapport). Aucun item gelé n'est lu.
  • Phases : 1 732 nouvelles et 1 732 pleines lunes de W, appariées une à une à la table d'Espenak (NASA). Écart constant de +6,5 min en TU (max 7,4), dont −2,4 min de modèles de ΔT et +4,1 min en TD. Ce décalage vient de la référence (série abrégée de Meeus, ch. 49) : moteur − PyEphem = +1,2 min, NASA − PyEphem = −2,9 min, et le moteur suit le Canon des éclipses à moins de 0,5 min. Tolérance fixée après le premier passage à « 10 min en TU » (le plan annonçait « quelques minutes ») ; le seuil de 2 min en TD d'abord écrit était plus fin que la référence. Correctif d'analyse : la première ligne d'une année de la table peut porter une phase du décembre précédent.
  • Éclipses de lune (Five Millennium Canon, Espenak et Meeus) : 352 éclipses dans W, toutes retrouvées, aucune de trop, type identique 352/352 ; maximum à 0,42 min TD près, gamma à 0,002, magnitudes ombre et pénombre à 0,001 (ombres agrandies selon Danjon, comme le Canon). 3 avril 33 (julien), Jérusalem : lever de la lune à 18 h 18 (temps moyen local), magnitude ombrale 0,19 au lever : éclipse partielle visible au lever, comme attendu.
  • Levers et couchers : 100 (lieu du gazetteer, jour de W) tirés au sort (graine 20260927), comparés à PyEphem (libastro, VSOP87 et ELP2000, indépendant de skyfield et DE406 ; le plan citait PyMeeus ou astropy, PyEphem est déjà dans requirements.txt) : soleil à 0,005 min, lune à 0,23 min (tolérance 2 min).
  • Calendrier : 14 Nisan un vendredi en 30 (7 avril) et 33 (3 avril) dans la variante nominale. Avec la règle « 14 Nisan après l'équinoxe » (n14, nominale), les seuls vendredis de 26 à 36 sont 30 et 33 (Humphreys et Waddington 1983) ; la visibilité stricte ajoute 27 (croissant vu en retard, leur cas limite) ; nominale n15 ajoute 26 (22 mars, avant la règle de l'équinoxe de H&W).
  • Fenêtres : les 32 tests pytest passent.
  • Non-régression v1 : les 242 observations v1 rejouées avec les primitives v2 aux instants et dates de la v1 (logique v1 conservée, contraintes corrigées à la relecture comprises) : 541 verdicts identiques sur 543 ; les 2 écarts (136.3-1 et 203.1-2, date De Caro) viennent du jour lunaire, écart attendu (âge de la lune en v1, calendrier d'observation en v2). Aux mêmes instants : hauteur du soleil et de la lune à 0,0006°, illumination à 0,002, âge à 0,0005 j, astres à 0,001°. Champs descriptifs des contraintes corrigées (date, window…) ignorés, comme en v1.

2026-09-27 — phase 7 : chronologies du wiki, test unitaire, relecture du rattachement lancée

  • scripts/astro/chronology.py : fetch (copie datée de la page du wiki, chronology/wiki.wikitext, SHA-256 516bb9b50093… ; analyse rows.json par parse_chronology.py), unittest, build, validate, apply, dates. La page n'a pas changé depuis la v1 : 660 lignes, 652 chapitres, 635 dates Lavère, 210 De Caro, 16 plages, analyse identique à celle de la v1.
  • Test unitaire (§ 6.7) : 30 lignes tirées au sort (graine 20260927), cellule brute lue à côté de la date analysée : 30/30 correctes (chronology/unittest.json). Contrôle ajouté sur toutes les lignes : jour de semaine écrit contre date écrite (Lavère grégorien, De Caro julien, années à la façon du wiki, −18 = 18 av. J.-C.) : 799/804 cohérents ; 5 incohérences du wiki lui-même (De Caro : chapitres 47, 225, 312, 350 ; Lavère : 645). On garde la date écrite ; ces lignes sont signalées pour la relecture.
  • Relecture du rattachement (consigne prompts/astro-it-anchor.md) : 387 chapitres porteurs d'items datables et datés par le wiki (12 sans date écartés : 10, 11, 13, 14, 34-36, 38, 39, 646-648), 20 lots (chronology/batches/, ≤ 360 Ko de texte, ≤ 25 chapitres). Pour chaque ligne du wiki, l'agent donne anchor_day_rel (jour du récit que la date désigne, convention des scènes gelées), la fin d'une plage, les sections couvertes, retours en arrière et chapitres sur plusieurs jours. Il voit les lignes du wiki, les scènes gelées et l'italien ; ni items, ni calcul ; interdiction de raisonner sur la lune, les étoiles, les jours de semaine ou les fêtes. Validateur : couverture des chapitres et des lignes, citation italienne retrouvée mot pour mot, types. Chaque agent liste les fichiers ouverts (audit P3). Date d'un item = date de la ligne + day_rel de l'item − anchor_day_rel.
  • Résultat de la relecture (20 agents, tous les lots valides, chronology/anchors.json) : 387 chapitres, 394 lignes du wiki ; ancrage au jour 0 pour 375 lignes, ailleurs pour 19 (épisode du lendemain : 23, 50, 51, 62, 253, 274, 295, 357, 418, 427, 592, 633 ; plages de plusieurs chapitres : Béatitudes 172-174 → −3, −4, −5, Tentes 487-488 → −1, −2, cohérentes entre lots traités séparément ; 651 → 3, confiance faible) ; 30 chapitres sur plusieurs jours, 4 retours en arrière ; confiance haute 342, moyenne 42, faible 3. Problèmes de day_rel gelé signalés, non corrigés (encodage gelé ; phase 9) : 41 (dispute avec les docteurs hors scène), 559 (entretien à l'aube dans une scène de nuit).
  • Audit P3 (listes de fichiers déclarées) : pas de web, aucun fichier d'items ni de résultat. Écarts déclarés : l'agent de a-08 a parcouru scripts/astro/chronology.py par grep (règles du validateur ; ni date ni résultat) ; l'agent de a-10 a recoupé l'ancrage de 427 avec les dates voisines du wiki (déclaré). Plusieurs agents ont lu des chapitres par extraits (début, fin, recherches ciblées) plutôt qu'en entier (a-05, a-14, a-16) ; lots conservés.
  • Convention des nuits. Les scènes gelées étiquettent une nuit par la soirée qui l'ouvre ; le wiki date parfois un épisode d'après minuit par sa date civile (28 → 29 : 10 puis 11 décembre ; 458 → 459 ; procès du vendredi 604), parfois par la soirée (467 → 468 ; 314 → 315). La première passe mêlait les deux lectures. Seconde passe (prompts/astro-it-anchor-night.md, 2 agents, règle fixée avant : B → jour gelé + 1, A et indéterminé → jour gelé, l'autre lecture gardée pour la sensibilité) sur les 27 lignes dont le jour d'ancrage ne compte que des scènes de nuit (et 559) : 15 A, 9 B (29, 30, 148, 422, 432, 555, 559, 604, 605), 3 indéterminées (88, 391, 644). chronology/night/verdicts.json. 103 items concernés ; item_dates.json porte night_alt_shift_days.
  • Dates des items (chronology.py dates, chronology/item_dates.json) : date de la ligne + day_rel de l'item − ancrage. 928 items datables datés (Lavère grégorien et lu en julien : 928 ; De Caro : 374) ; 17 non datés (chapitres sans date dans le wiki). Un titre de chapitre (« N.0 ») prend la ligne qui couvre la première section. Aucun calcul de concordance n'a été fait.

2026-09-27 — chronologie indépendante (niveau 2) : relevé du squelette lancé

  • Décision de l'utilisateur : dater aussi le récit sans Lavère ni De Caro, par la méthode la plus précise. Plan, aveuglement, mesures d'accord et limites pré-enregistrés dans docs/methodology-journal.md (27/09) avant tout relevé. Ce relevé sert aussi d'ajusteur au nouveau E3 (§ 12 bis, 1).
  • Consigne prompts/astro-it-skeleton.md ; script scripts/astro/skeleton.py (build, validate, apply, iaa). Les 652 chapitres, lus en entier, en 31 lots (emv/astro-it/skeleton/batches/, ≤ 360 Ko, ≤ 25 chapitres) : type de chapitre, liens (écart en jours, intervalle, citation), durée interne, repères de calendrier énoncés. Interdit : wiki, chronologies, items, scènes, scans ; lune, étoiles, soleil, météo comme indices de temps.
  • Double lecture à l'aveugle : 99 chapitres (15 % par tiers de l'œuvre, graine 20260928, skeleton/iaa/selection.json), 5 lots ; les relecteurs ne voient pas la première lecture.
  • État au soir du 27/09 : les 31 lots du relevé sont rendus et validés (skeleton/out/) ; double lecture : r-05 rendu, r-01 à r-04 en cours. Solveur scripts/astro/fitter.py écrit (règles du journal de méthode) ; un essai de mise au point sur un squelette partiel (sans aucune description du ciel) a montré 121 repères de calendrier dont la valeur n'est pas reconnue par le normaliseur : à compléter avant l'exécution réelle. Aucun score calculé.

2026-09-27 — squelette consolidé, accord entre lecteurs

  • skeleton.py apply → skeleton/skeleton.json : 652/652 chapitres ; 637 récit, 13 dictées, 2 visions insérées, 0 retour en arrière ; 703 liens (227 explicites, 476 déduits), 15 chapitres sans lien ; 1 136 repères de calendrier ; confiance haute 277, moyenne 222, faible 153.
  • Double lecture à l'aveugle (skeleton.py iaa → skeleton/iaa/agreement.json, 99 chapitres, 5 lots) : type de chapitre 0,99 ; même chapitre de rattachement 0,949 ; sur les 90 chapitres rattachés au même point, intervalles d'écart qui se recouvrent 0,978, écart identique 0,70 ; durée interne identique 0,97 ; repères de calendrier (type, jour) F1 0,85 (131 / 142 / 116 communs).
  • Mesure ajoutée après lecture du premier résultat : l'indicateur pré-enregistré « recouvrement des intervalles » (0,889) comptait comme désaccord les dictées sans lien des deux côtés (9, 15, 606, 620). Les deux chiffres sont gardés ; le taux conditionnel (même rattachement) est ajouté à côté, pas substitué.
  • Désaccords réels : 377 (récit / vision insérée), 462 (écart 1 / 0 jour), 478 (1 / 2 jours), 608, 641, 644, 648 (rattachement à un autre chapitre). Contradictions internes du texte signalées par les deux lectures : 566 (sabbat dit par la narratrice, jour ouvrable dans les dialogues), 194 / 193 (« domani è Parasceve » décalé d'un jour).
  • Audit P3 de la double lecture : pas de web ; aucun relecteur n'a ouvert skeleton/out/ ni les scripts (r-02 a listé le dossier iaa/out/ sans ouvrir r-05).

2026-09-27 — solveur E3 (scripts/astro/fitter.py) : placement par année

  • Normaliseur : « etamin » → Tishri, « secondo mese 14 » → 14 Iyar, « Venerdì Santo » / « Domenica delle Palme » → jour de semaine ; non reconnus (inutilisés) : 6 fêtes non nommées (134, 135, 490, 491, 588, 598). Repère écarté comme date de l'écrivaine : 607 (« Venerdì Santo 1944 »). Repères sans day_rel non retenus (pré-enregistré) : feast 213 / 266, season 70 / 193, month 73 / 131…
  • Liens : vérification de cohérence ajoutée (explicite → déduit, premier lien → liens supplémentaires, ordre des chapitres) ; 1 lien écarté : 631 → 612 [13, 17] (la chaîne 612 → 630 → 631 impose [9, 11]). La propagation initiale ignorait un domaine vide : corrigé (arrêt).
  • Placement sans hypothèse d'année : dégénéré (crucifixion au 16/04/51 jul., 27 repères écartés) → ordre modifié : l'année Y de la crucifixion (ch. 609) est fixée avant les repères (journal de méthode, 27/09, écart 3).
  • fitter.py years (nominal, n15 ; fitter/nominal_n15/years.json, domains_Y.npz) : les 26 hypothèses Y = 20…45 sont réalisables ; crucifixion réduite à 1 jour (2 pour Y = 26) ; domaine médian des chapitres 4 à 16 jours ; repères écartés de 28 (Y = 40) à 142 (Y = 26) sur 387 (29 pour 35, 31 pour 43, 32 pour 24). Résultat purement calendaire, dépendant de l'ordre glouton des repères ; aucune description du ciel utilisée.
  • E3 : ensemble principal restreint aux descriptions du ciel (codes non tous cal.*) : 138 items.
  • Simulations de contrôle (fitter.py simulate, 200 répétitions, Y* tiré entre 26 et 36, 26 années en lice, fitter/nominal_n15/sim.json) : (a) voyant parfait : Y* en tête 100 % ; (b) auteur cohérent avec le calendrier (décalage luni-solaire par item) : Y* en tête 94,5 % ; (c) auteur naïf : 2 % (hasard 3,8 %). Écart médian du pic : 12,7 / 9,1 / −7,4. Critère pré-enregistré non rempli ((b) ne doit pas retrouver Y*) : la vraie courbe n'est pas calculée ; l'ajusteur ou la simulation (b) doit être revu d'abord.
  • Simulations, 2e version ((b) révisé, pré-enregistré ; sim_v2.json, sim_v1.json pour la 1re) : (a) 100 % ; (b0) 92,5 % ; (b) même date juive dans une autre année : 96 % ; (b2) almanach d'une autre année : Y* 90,5 %, Y' 1,5 % ; (c) 4 %. Critère non rempli ; courbe réelle non calculée.
  • Diagnostic : le placement par année n'est pas une chronologie. Le ch. 200 est au 16/04/24 et le ch. 487 (Tentes) en 29 quelle que soit Y ; la crucifixion tombe au 20 Iyar (Y = 30), au 1er Shevat (Y = 26), au 28 Nisan (Y = 33) : les repères de Pâque de la Passion sont écartés par l'ordre glouton, et les écarts ouverts (« più tardi », [1, null]) laissent le début du récit se figer n'importe où. 152 repères sont écartés sous au moins une année, 21 sous toutes. Le pic en Y* des simulations vient de ce que le placement vrai est tiré dans les domaines de Y*, qui ne sont pas des images calendaires de ceux des autres années.

2026-09-27 — liens longs (comptes d'années), révision de l'ajusteur

  • Consigne prompts/astro-it-yearlinks.md, script scripts/astro/yearlinks.py (build, validate, merge). 288 repères count / other en 6 lots de 48, chacun lu par deux agents indépendants (12 lectures, toutes valides ; une première vague de 12 agents coupée par la limite de session n'avait rien écrit et a été relancée).
  • Fusion (skeleton/yearlinks/merged.json) : 155 liens retenus (même repère relié au même chapitre par les deux lecteurs ; intervalle = enveloppe), 39 écartés (un seul lecteur ; dont 11 repères reliés à des chapitres différents, p. ex. « un an de vie publique » compté depuis le ch. 44 par l'un, le ch. 45 par l'autre). Règles : years_round 59, last_year 24, days 20, moons 16, years_less 10, age 10, years_more 8, years_exact 3.
  • Repères recodés : 14 par les deux lecteurs, 13 retenus. Précision de mise en œuvre de la règle de fusion (qui ne comparait que type et jour) : un repère recodé n'est utilisé que si les deux valeurs donnent le même ensemble de jours ; écarté : ch. 40 (« Pasqua » contre « fête non nommée »).
  • Normaliseur : « giorno dell'agnello », « 14 Nisan » → 14 Nisan ; noms anglais des jours de semaine (un lecteur a écrit « sunday »). Auparavant (même jour) : « cena / sacrificio / sera pasquale » → 14 Nisan, « Pasqua supplementare » → 14 Iyar, « vigilia della Pasqua » → 13 Nisan.
  • Écarts de lecteurs à la table de conversion, signalés par eux-mêmes et conservés (la fusion prend l'enveloppe) : « più di sei lustri » compté en lustres (y-06 B), bornes basses abaissées (y-03 A : 212 ; y-04 A : 422), comptes « trenta mesi » lus en années rondes (y-04), liens « entro la fine di questa luna » [−45, 0] (y-05).
  • Incident de procédure. Les agents ont écrit leurs scripts d'aide dans le scratchpad commun ; plusieurs ont utilisé le même nom (build.py) : y-06 A et B, y-05 B, y-04 A et B. y-04 B a exécuté deux fois, sans le savoir, le script de y-05 B, qui a réécrit y-05-B.json avec les données de y-05 B elles-mêmes, et a vu les 3 dernières lignes de ce script (autre lot). Vérifications : tous les scripts ont été écrits par cat > sans lecture du contenu précédent ; chaque sortie porte le lot et le lecteur attendus et les comptes déclarés par son lecteur ; entre les deux lectures de y-06 et de y-04, aucune justification (basis) ni note identique, et des choix différents. Conclusion : pas de contamination entre les deux lectures d'un même lot. Les lecteurs encore actifs ont reçu la consigne d'un sous-dossier privé ; à l'avenir, un sous-dossier par agent dès la consigne.
  • Ajusteur révisé (fitter.py, pré-enregistré au journal) : liens longs (priorité entre liens explicites et déduits), repères de la Passion (41 chapitres à ±7 jours de la crucifixion par les liens seuls : 582 à 627) appliqués en premier, puis 20 ordres aléatoires des autres repères (graine 20260930), le meilleur par année. Résultats de la v1 archivés dans fitter/archive-v1/.
  • Ordre des liens revu : liens longs après tous les liens du squelette (journal, 27/09). Liens écartés : 631 → 612 et 6 liens longs (92 « più di sei lustri », 156 « oltre trent'anni », 436 « trentatrè anni fa », 493 « oltre trenta anni », 611 « la Madre cinquantenne », 621 « da dieci giorni »). 851 liens retenus.
  • scripts/astro/inconsistencies.py → emv/astro-it/inconsistencies.json : toutes les incohérences relevées (7 conflits de chronologie, 13 impossibilités robustes, 19 signalements de lecteurs, 2 problèmes d'encodage ; les repères de calendrier contredits s'y ajoutent après fitter.py years).
  • Étiquette astro-it/e3-prereg-v2 (commit d082367, poussée sur GitHub le 27/09 vers 17 h 50) : état pré-enregistré de l'ajusteur révisé, avant ses simulations de contrôle et avant toute courbe. Le calcul fitter.py years a été lancé sur ce code à 17 h 20 (placement par année, environ 6 h avec les liens longs).
  • Calcul fitter.py years arrêté à la demande de l'utilisateur vers 17 h 55 (environ 35 min sur 6 h) pour optimisation. Profil d'un placement : 346 s, dont plus de 90 % dans la propagation initiale des seuls liens (1,6 million d'appels à dilate), identique pour les 20 ordres d'une même année ; les repères : environ 30 s. Optimisation : ces domaines « liens seuls » sont calculés une fois (sans année, puis par année) et mis en cache (emv/astro-it/fitter/cache/, non versionné, clé = empreinte des liens + année). Même calcul, simplement réutilisé ; égalité vérifiée sur 4 couples (année, ordre) entre l'ancien et le nouveau code (voir ci-dessous). Vérification : (Y, ordre) = (33, 0), (26, 5), (40, 12), (30, 19) ; ancien et nouveau code donnent les mêmes domaines pour les 639 chapitres et la même liste de repères retenus (320, 319, 343, 310). Calcul relancé vers 18 h 15.
  • fitter.py years (révisé, optimisé ; fini à 18 h 52) : 26 années réalisables ; repères gardés de 318 (25, 36) à 350 (21) sur 400 ; 15 repères écartés sous toutes les années, 146 sous au moins une. Crucifixion placée au 14 ou 15 Nisan seulement pour Y = 21, 24, 27, 30 (7 avril 30, 14 Nisan), 40 ; ailleurs à un autre jour de la semaine pascale ou en Iyar (33 : 9 avril, 20 Nisan ; 36 : 27 Nisan ; 26 : 5 Iyar). Résultat calendaire seul.
  • Simulations (3e version, fitter/nominal_n15/sim_v3.json) : (a) 100 % ; (b0) 100 % ; (b) 100 % ; (b2) Y* 100 %, année de l'almanach 0 % ; (c) 5 % (hasard 3,8 %). Critère non rempli pour la troisième fois ; courbe réelle non calculée (règle pré-enregistrée).
  • inconsistencies.json régénéré : 187 entrées (146 repères de calendrier contredits sous au moins une année, dont 15 sous toutes).

2026-09-27 (soir) — phase 8 : T7, puis T3 / T4 (Lavère, De Caro)

  • Script scripts/astro/phase8.py (sim, tests), règles pré-enregistrées au journal. Sorties emv/astro-it/phase8/<chronologie>/sim.json, tests.json.
  • Ensemble du ciel (principal) : 137 items datés chez Lavère (95 chapitres), 51 chez De Caro (35 chapitres) ; ensemble principal complet (secondaire) : 493 / 180.
  • T7 (200 répétitions, années sources = Λ + décalage N3 tiré au hasard) :
    • Lavère grégorien : voyant en tête N3 88 % ; auteur du calendrier 0,5 % ; almanach 0 % ; naïf 0,5 %. Lavère julien : 90 / 1 / 0 / 0,5 %. De Caro : 51 / 1 / 0 / 0,5 % (hasard : 0,9 %). → T4 interprétable.
    • N2 : naïf p ≤ 0,05 dans 16 % (Lavère gr.), 20 % (Lavère jul.), 17,5 % (De Caro) > 10 % → N2 non calibré selon le critère ; tableau N2 non interprété. Diagnostic (après coup) : dans les simulations, décalage de la vérité + décalage N2 font sortir 7 % des dates de W ; à décalage de vérité nul (situation réelle), aucune date ne sort et le taux est de 7,5 %. N2 publié comme exploratoire.
  • T3 / T4, ensemble du ciel, s = 1 (principal) :
    • Lavère grégorien : 54 concordances sur 137, attendu 41,5 (× 1,30 ; N1 p = 0,009, anti-conservateur) ; S_info 57,0 ; N2 p = 0,215 (exploratoire) ; rang N3 64 / 107 (s = 0 : 90,5 ; s = 2 : 53).
    • Lavère julien : 59 / 137, attendu 41,5 (× 1,42) ; N2 p = 0,133 ; rang N3 50 / 107.
    • De Caro : 28 / 51, attendu 15,1 (× 1,85) ; N2 p = 0,001 ; rang N3 2 / 107 (s = 0 : 19 ; s = 2 : 16,5).
    • Ensemble complet avec items de calendrier (secondaire) : Lavère gr. 285 / 493, attendu 128,6 (× 2,2), rang N3 41 ; De Caro 109 / 180 (× 2,3), rang 46,5.
  • Source reçue de l'utilisateur (clé USB, datation-20260927T165951Z-1-001.zip, non versionnée : tableaux publiés de De Caro, « calendrier De Caro.xlsx » et années I à IIII, colonnes date julienne / mois juif / événement / chapitre EMV). Usage : contrôle de qualité des dates De Caro du wiki, après la phase 8. Sur 181 chapitres communs, 171 dans la semaine du tableau, 8 à moins d'une semaine, 2 divergent d'environ un mois (225 « mercredi 4 mai 32 » ; 312 « dimanche 28 novembre 32 » : à vérifier à la main, erreur de mois du wiki ou de lecture du tableau). Couverture : 195 chapitres dans le tableau, 209 dans le wiki (14 et 28 propres à chacun). Pas de nouveau calcul avec cette source : elle confirme les dates utilisées.
  • Sensibilités (phase8.py sens → phase8/<chron>/sensitivity.json), ensemble du ciel, rang N3 S_info s = 1 :
    • Lavère grégorien : 64 (principal) ; stricte 68 ; large 43,5 ; n14 64 ; nuits autre lecture 62 ; narration 38 ; dialogue 96 ; sans vagues 61 ; précis seuls 42,5 ; sans contestés 64 ; meilleur cas 94 ; pire cas 97. Rapport concordances / attendu de 0,66 (dialogue, 23 items) à 1,48 ; N2 p de 0,05 à 0,72.
    • De Caro : 2 (principal) ; stricte 53,5 ; large 18,5 ; n14 2 ; nuits autre lecture 10,5 ; narration 2 ; dialogue 51 (5 items) ; sans vagues 4 ; précis seuls 10 ; sans contestés 4 ; meilleur cas 7 ; pire cas 2.
  • Influence (phase8.py influence → influence.json) : De Caro, retrait d'un chapitre à la fois : rang 2 à 4 (aucun chapitre décisif) ; aucun des 28 items concordants n'est spécifique (chacun concorde aussi pour 36 à 81 % des décalages luni-solaires) : l'avantage de De Caro est diffus. Lavère : rang 56 à 74 selon le chapitre retiré.
  • Lecture selon la règle fixée d'avance : Lavère, année non spécifique : robuste (rang > 10 dans toutes les variantes). De Caro, rang 2 : fragile (rang > 10 dans 4 variantes sur 12 : stricte, large, nuits, dialogue).

2026-09-27 (soir) — fin de la phase 8 : T1, T2, T5 / E4, T6, T8, T9, T10

  • Scripts scripts/astro/phase8b.py (t1t2, t5, t6, t8, t9, t10) et scripts/astro/scan_variant.py (balayages de sensibilité sans toucher au moteur : ΔT ± 30 min par rééchantillonnage de la grille des astres à ± 30 min, temps sidéral inchangé ; lieux déplacés de ± leur incertitude). Sorties emv/astro-it/phase8/*.json, scans/v2.0-variants/ (non versionné).
  • T1 (49 descriptions du ciel ayant un contexte calendaire dans leur chapitre) : taux conditionnel moyen × 1,28 du taux de base (Σ q = 17,9 contre Σ p = 15,0). 7 descriptions jamais possibles avec le calendrier de leur chapitre, dont 4 déjà impossibles partout (25.7-a2, 630.20-a1, 632.42-a1, 643.7-a1) et 3 nouvelles : 287.4-a1 (soleil « à la verticale » à midi, en automne), 532.5-a1 (lune pas encore levée, nuit noire, veille des Encénies), 604.32-a1 (soleil presque vertical entre tierce et sexte, à la Pâque). Ajoutées à inconsistencies.json (type sky_vs_stated_calendar ; 190 entrées).
  • T2 (même ensemble, attendu = Σ q) : Lavère grégorien 21 / 49, attendu saisonnier 17,9 (× 1,18 ; p PB 0,16) ; Lavère julien 25 / 49 (× 1,40 ; p 0,007) ; De Caro 8 / 15 (× 1,38 ; p 0,14).
  • T5 / E4 : (i) vendredi = 14 ou 15 Nisan (journée), années 20-40, 6 variantes : 20, 23, 27, 30, 33, 37, 40 dans toutes les variantes (26 en nominal / large n15) ; 7 avril 30 = 14 Nisan (15 en tolérance large) ; 3 avril 33 = 14 Nisan dans toutes ; 23 avril 34 (De Caro) : ni 14 ni 15 Nisan dans aucune variante. (ii) Repères explicites de jour contredits par le placement (nominal n15) : de 14 (24, 30) à 45 (25) ; 16 pour 21 et 40, 18 pour 27, 35 pour 33, 40 pour 34. Aucune année compatible avec tous les repères explicites.
  • T6 (5 items) : « planètes brillantes » et « Mars / Jupiter visibles » vrais presque toujours (non informatifs) ; « Vénus est visible » (357.2-a10) faux à la date de Lavère (jour vrai le plus proche : 31 jours avant), vrai à celle de De Caro.
  • T8 : v1 (texte français) Lavère 148 / 226, attendu 90,5 (× 1,64) ; v2 ensemble complet × 2,2 à 2,8 ; v2 ensemble du ciel × 1,30. Le rapport élevé vient des items de calendrier, pas des descriptions du ciel.
  • T9 (restant) : ΔT ± 30 min et lieux ± incertitude : aucun changement notable (Lavère rang 64 à 68 ; De Caro 2). Sans les passages cités par Lavère (145 références) : Lavère 38 / 91 (× 1,33), rang N3 52,5 ; De Caro rang 2. Horizon réel : non fait (pas de modèle de relief).
  • T10 : 204 affirmations de Lavère, 159 évaluables ; accord v1 / v2 145 / 159 ; 14 désaccords (9 « jour lunaire », convention différente déjà relevée en T0 ; 2 étoiles, 2 éclipses, 1 lever de lune) ; réussites v1 95, v2 91.

2026-09-27 (nuit) — phase 9 lancée ; vérifications De Caro

  • Phase 9 (protocole au journal) : scripts/astro/phase9.py build → emv/astro-it/phase9/{review,redteam,knowledge, audit,checks}/batches/ ; relecture 135 items (8 impossibilités, 3 incohérences ciel / calendrier, 73 discordances, 51 concordances) en 9 lots ; équipes rouges 4 lots (défense 2, attaque 2) ; savoir 135 énoncés en 27 lots ; audit 30 repères en 3 lots ; vérifications 1 lot. Consignes prompts/astro-it-{review,redteam,knowledge,marker-audit}.md. Calculateur v2 pour les relecteurs : scripts/astro/sky2_cli.py. Un dossier de travail privé par agent.
  • Chapitres 225 et 312 (De Caro) : erreurs de mois du wiki. Wiki « mercredi 4 mai 32 » (le 4 mai 32 julien est un dimanche) : le tableau de De Caro donne la semaine du 1ᵉʳ au 6 juin 32 (« 2a Pentecoste »), et le 4 juin 32 est un mercredi ; wiki « dimanche 28 novembre 32 » (vendredi) : tableau 28 décembre 32 - 3 janvier 33, et le 28 décembre 32 est un dimanche. Items touchés : 225.1-a1, 225.4-a1, 312.1-a1, 312.1-a2. Résultats De Caro à donner avec et sans correction.
  • Crucifixion de De Caro, vendredi 23 avril 34 : 15 Iyar dans notre calendrier (nominal n15 ; 16 Nisan = 26 mars 34). De Caro suppose un mois intercalaire en 34 (Pâque en avril), que nos variantes n15 / n14 ne produisent pas ; la règle de l'orge n'est pas modélisée. Incertitude du calendrier reconstitué, pas erreur démontrée.
  • Bogue du moteur trouvé en relecture (rv-05) : constraints.py, table CUSTOM, la clé body_side est évaluée avec cu_az_sector("sun") (direction du Soleil au lieu de celle de l'astre). Un seul usage : 619.4-a1, lecture r2 (non préférée) ; l'« impossibilité » de cette lecture est un artefact ; aucun résultat principal (lecture préférée) n'est touché. Moteur gelé non modifié à ce stade ; correction et résultats avec / sans à la phase 10.
  • Relecture, erreurs d'encodage confirmées à ce stade : 643.7-a1 (fenêtre « aube » reportée, deux relecteurs indépendants), 511.8-a2 (fenêtre crépuscule), 532.5-a1 (fenêtre nuit entière pour « notte ancora illune » : la veille des Encénies, la lune se lève vers 3 h ; l'incohérence T1 tombe). Conflits fenêtre / seuil par construction relevés (déjà connus en phase 6) : star.starry_sky (soleil ≤ −15°) dans time.dusk (≥ −12°) ; moon.zenith (≥ 70°) inatteignable pour la pleine lune de Pâque à Jérusalem (culmination ≈ 55°).
  • Deuxième bogue du moteur (rv-08) : cu_sun_zodiac_sign ignore le champ state (« not_yet_exited ») ; seule la lecture 435.4-a2 r3 (non préférée) est touchée (évaluée comme « dans le Lion »). Lectures non évaluées (rv-02) : 614.8 r2 (sun_near_meridian : « 'bool' object is not subscriptable ») et 102.1-a2 r2 (constellation) ; leur taux de base de 1,0 est artificiel (lectures non préférées). Défaut du codebook (rv-03) : « jours longs » plafonné à 14,2 h exclut le solstice à ces latitudes. Défaut d'encodage récurrent (rv-09, rv-07) : moon.absent appliqué à toute la nuit là où le texte dit « pas encore de lune » (532.5, 422.1, 243.6).

État au soir du 27/09 (fin de session)

  • Phase 9 en cours. Rendus : relecture rv-01 à rv-09 (9/9), audit au-01 à au-03 (3/3 : 28 repères sur 30 = modèle, 1 relevé, 1 texte), vérifications ck-01, attaque rt-03 et rt-04 (40 concordances sur 51 tombent, 1 résiste), savoir kn-01 à 16, 18, 20 à 22, 25, 27. En attente ou interrompus : défense rt-01 et rt-02, savoir kn-17, 19, 23, 24, 26 ; arbitre non lancé. À la reprise : relancer les manquants (vérifier phase9/*/out/), puis l'arbitre, puis agrégation (script à écrire), mise à jour de inconsistencies.json (retirer 532.5 et 643.7 ; annoter les repères contredits « surtout modèle »), point de décision n° 4, phase 10 (synthèse).

2026-09-27 (reprise) — phase 9 : validation, arbitrage et point de décision n° 4

  • Sorties de phase 9 contrôlées avec phase9.py validate ; le validateur renvoie désormais un échec sur les identifiants manquants ou en double et les brouillons explicites. rt-01 (42 réponses provisoires) et rt-02 (16 réponses manquantes) ont été complétés. Les 58 défenses reprises utilisent les relectures et sont signalées comme analyses secondaires dans l'arbitrage et dans le journal.
  • phase9/redteam/arbiter.json et arbiter.md : 135 cas arbitrés. Sur 8 impossibilités relues : 2 levées, 3 atténuées, 3 persistantes ; sur 73 discordances : 20 levées, 40 atténuées, 13 persistantes ; sur 51 concordances : 40 sans pouvoir de datation, 10 fragiles, 1 résistante (393.4-a1). Le même jour lunaire dans plusieurs années affaiblit les concordances utilisées par Lavère et De Caro.
  • inconsistencies.py régénère inconsistencies.json : 187 entrées. Retrait des artefacts 532.5-a1 et 643.7-a1 ; 30 conflits calendaires annotés d'après leur audit individuel (28 modèle, 1 relevé, 1 texte), 116 non audités ; 13 entrées d'impossibilité ou de conflit ciel/calendrier annotées avec leur verdict de relecture.
  • phase9_recalculate.py → phase9/decision4_t3t4.json : les neuf tableaux originaux reproduisent exactement l'archive ; sept corrections d'encodage hors gel, non contestées par l'arbitrage. Ensemble du ciel, nominal n15, marge ± 1 jour : Lavère grégorien 54/137, rang N3 64 → 56/133, rang 59 ; Lavère julien 59/137, rang 50 → 61/133, rang 49 ; De Caro 28/51, rang 2 → 29/50, rang 2. Voir le journal pour la procédure, les sorties d'ensemble et les limites.
  • kn-17, kn-24, kn-26 ont été refaits ; les 44 sorties de phase 9 passent le validateur renforcé. phase9_aggregate.py → phase9/summary.json (complet=true) : E5, 135 fiches, 69 verdicts ordinaires, 40 défendables, 13 faux positifs, 7 faibles, 6 douteux ; aucun savoir en avance solide/intéressant ni erreur confirmée. La prémisse de kn-09 sur l'absence de mois hébreux est réfutée par les chapitres italiens 87 et 181.
  • Phase 10 : docs/synthese.md présente la démarche, T1–T10, les trois échecs d'E3, les résultats de phase 9, les corrections a posteriori et une note de confiance argumentée.

Plausibilité sans chronologie publiée — décompte complémentaire

  • Catégories lune, soleil, étoiles et planètes, lecture préférée : 436 items scannés ; 37 partiellement évalués écartés du dénominateur. Parmi les 399 entièrement évalués, 388 sont possibles au moins un jour du scan nominal n15 ; 389 après corrections de phase 9, soit 97,49 %. Ce constat individuel selon le modèle n'est pas une validation de la cohérence de toutes les scènes. Méthode et limites consignées dans le journal.
  • Examen des 10 échecs restants : 5 défauts du modèle (star.starry_sky inatteignable dans time.dusk pour 25.7-a2, 175.5-a1, 274.1-a1 ; time.whole_night évalué dès le coucher du soleil pour 617.1-a1 ; plafond de phase pour 320.7-a1), 2 ambiguïtés de portée de « a oriente » (222.1-a5, 105.1-a1), 3 impossibilités littérales (460.2-a1, 102.6-a1, 630.20-a1). Sensibilité a posteriori : 394/399 sans les défauts du modèle, 396/399 en acceptant aussi les lectures alternatives. Gel et moteur inchangés.

← Retour à l'étude astronomique