Skip to content

Calibration B1 (ADR-016), archivage > 2 Gio et échelle PRISM/docs - #526

Merged
donovan-dev-web merged 3 commits into
developfrom
feature/calibration-b1-archivage-2go-docs-prism
Oct 7, 2026
Merged

donovan-dev-web merged 3 commits into
developfrom
feature/calibration-b1-archivage-2go-docs-prism

Conversation

@donovan-dev-web

Copy link
Copy Markdown
Owner

Quoi

Trois volets couvrant toutes les modifs en cours, pour mettre develop à jour.

1. fix(launcher) — archivage des runs au-delà de 2 Gio + fiabilisation de l'analyse de campagne

  • Nouveau type RunDataFile : source fichier lue en flux, jamais chargée en byte[] (un stream.jsonl de 2500 ticks × 50 agents = 2,34 Gio dépasse int.MaxValue et échouait avec « The file is too long »).
  • LivexPackageWriter réécrit en mode Create (compression directe, échange atomique via temporaire, déterminisme §5.2 inchangé), hachage d'intégrité en flux ; Seal relit en Read et réécrit en Create.
  • Plafond d'entrée du lecteur relevé de 4 à 16 Gio (PACKAGE_FORMAT §9).
  • runIds vide détecté côté Campagne (avertissement explicite au lieu d'un 422 opaque) ; délai d'analyse ECHOS par requête (30 min pour ingest/run/analysis/* — ingestion mesurée 5 m 30 s).
  • Preuves : 206 tests Launcher verts (dont régression > 2 Gio et archivage du vrai stream.jsonl 2,34 Gio).

2. feat(syne) — calibration B1 des défauts intégrés, stabilité 2500 ticks (ADR-016)

  • Défauts du moteur recalibrés : réserves food/water 20 000 (régén nette 20/10, degradationTick null), moveEnergyCost 0,05 → 0,03, gains Eat/Drink 2,0/1,0, Rest 1,5/2,0, dérives social/curiosité 0,001/0,002 → 0,0002/0,0005, communication neutre.
  • Validation : 6/6 runs (50 et 100 agents × 2500 ticks × 3 seeds) — 0 extinction, 0 mort, |pente| ≤ 0,0037/tick. Outil rejouable scripts/calibration-campaign.py.
  • engineVersion 0.14.0 → 0.15.0, goldens re-pinnés, 27 tests adaptés, reference.json corrigé (catalog.entries), ComputationShare en temps/tick, rejet 413 fiabilisé (broken pipe).

3. docs(prism) — échelle et cadence SYNE ↔ Unreal (ADR-003, nouvelle branche)

  • Convention : k = 100 uu/unité, TPS 6, monde 2240 × 2240 (case 32 uu = 3200 uu WP, MaxWalkSpeed 600 uu/s par défaut).
  • Nouveaux : SCALE_AND_CADENCE_SPEC.md (11 sections) + ADR-003 [Proposed] ; mises en cohérence README/CHANGELOG/index ADR/PRISM_UNREAL_IMPLEMENTATION.md.

Vérifications

  • dotnet build Launcher.sln et Syne.sln (Release) : 0 erreur, 0 avertissement.
  • Jeux de tests ciblés couverts par la CI (voir workflow ci.yml).

…se de campagne

- RunDataFile : source fichier lue en flux, jamais chargée en byte[] (un stream.jsonl
  de 2500 ticks × 50 agents = 2,34 Gio dépasse int.MaxValue) ; LivexPackageWriter écrit
  en mode Create avec échange atomique et hachage d'intégrité en flux, Seal en Read → Create,
  plafond d'entrée du lecteur relevé de 4 à 16 Gio (PACKAGE_FORMAT §9).
- Ensemble vide de runIds détecté côté Campagne : avertissement explicite au lieu d'un 422 opaque.
- Délai d'analyse ECHOS posé par requête : 30 min pour ingest/run et analysis/* (5 m 30 s
  mesurées pour ingérer 2500 ticks × 50 agents), 30 s pour les appels ordinaires.
- Tests : régression > 2 Gio, archivage du vrai stream.jsonl 2,34 Gio, campagne SYNE publié,
  analyse ECHOS ; docs PACKAGE_FORMAT / EXPERIMENTS / CHANGELOG à jour.
…s (ADR-016)

Défauts du moteur recalibrés pour tenir 2500 ticks à 50 et 100 agents (6/6 runs,
0 extinction, 0 mort, |pente| ≤ 0,0037/tick < 0,005) : réserves food/water 20 000
avec régénération nette 20/10 (degradationTick null), moveEnergyCost 0,05 → 0,03,
gains Eat/Drink 2,0/1,0, Rest 1,5/2,0, dérives social/curiosité 0,001/0,002 →
0,0002/0,0005, coûts de communication neutres. engineVersion 0.14.0 → 0.15.0,
goldens re-pinnés (DETERMINISM §7), 27 tests adaptés.

Accompagnement : reference.json corrigé (chemin catalog.entries) et rejouant B1 ;
ComputationShare rapportée en temps/tick ; rejet 413 fiabilisé (vidange bornée du
corps avant réponse, fini le broken pipe) ; script rejouable scripts/calibration-campaign.py.
Convention d'échelle arrêtée : k = 100 uu/unité, ticksPerSecond 6, monde 2240 × 2240
(5 km²), worldCellSize 32 uu = case de grille WP 3200 uu (défaut UE, MaxWalkSpeed
600 uu/s). Ajout de SCALE_AND_CADENCE_SPEC.md (11 sections, checklist de validation)
et de l'ADR-003 [Proposed] ; README, CHANGELOG, index ADR et PRISM_UNREAL_IMPLEMENTATION
mises en cohérence (formule de conversion UnrealX = SyneX × k, tableaux de cadence).
@donovan-dev-web
donovan-dev-web merged commit a51c95d into develop Oct 7, 2026
9 checks passed
@donovan-dev-web
donovan-dev-web deleted the feature/calibration-b1-archivage-2go-docs-prism branch October 7, 2026 17:39
donovan-dev-web added a commit that referenced this pull request Oct 12, 2026
* fix(launcher): archive les runs au-delà de 2 Gio et fiabilise l'analyse de campagne

- RunDataFile : source fichier lue en flux, jamais chargée en byte[] (un stream.jsonl
  de 2500 ticks × 50 agents = 2,34 Gio dépasse int.MaxValue) ; LivexPackageWriter écrit
  en mode Create avec échange atomique et hachage d'intégrité en flux, Seal en Read → Create,
  plafond d'entrée du lecteur relevé de 4 à 16 Gio (PACKAGE_FORMAT §9).
- Ensemble vide de runIds détecté côté Campagne : avertissement explicite au lieu d'un 422 opaque.
- Délai d'analyse ECHOS posé par requête : 30 min pour ingest/run et analysis/* (5 m 30 s
  mesurées pour ingérer 2500 ticks × 50 agents), 30 s pour les appels ordinaires.
- Tests : régression > 2 Gio, archivage du vrai stream.jsonl 2,34 Gio, campagne SYNE publié,
  analyse ECHOS ; docs PACKAGE_FORMAT / EXPERIMENTS / CHANGELOG à jour.

* feat(syne): calibration B1 des défauts intégrés — stabilité 2500 ticks (ADR-016)

Défauts du moteur recalibrés pour tenir 2500 ticks à 50 et 100 agents (6/6 runs,
0 extinction, 0 mort, |pente| ≤ 0,0037/tick < 0,005) : réserves food/water 20 000
avec régénération nette 20/10 (degradationTick null), moveEnergyCost 0,05 → 0,03,
gains Eat/Drink 2,0/1,0, Rest 1,5/2,0, dérives social/curiosité 0,001/0,002 →
0,0002/0,0005, coûts de communication neutres. engineVersion 0.14.0 → 0.15.0,
goldens re-pinnés (DETERMINISM §7), 27 tests adaptés.

Accompagnement : reference.json corrigé (chemin catalog.entries) et rejouant B1 ;
ComputationShare rapportée en temps/tick ; rejet 413 fiabilisé (vidange bornée du
corps avant réponse, fini le broken pipe) ; script rejouable scripts/calibration-campaign.py.

* docs(prism): fixe l'échelle et la cadence SYNE ↔ Unreal (ADR-003)

Convention d'échelle arrêtée : k = 100 uu/unité, ticksPerSecond 6, monde 2240 × 2240
(5 km²), worldCellSize 32 uu = case de grille WP 3200 uu (défaut UE, MaxWalkSpeed
600 uu/s). Ajout de SCALE_AND_CADENCE_SPEC.md (11 sections, checklist de validation)
et de l'ADR-003 [Proposed] ; README, CHANGELOG, index ADR et PRISM_UNREAL_IMPLEMENTATION
mises en cohérence (formule de conversion UnrealX = SyneX × k, tableaux de cadence).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant