Repository navigation
V0.1 : bascule Windows validée (Lot W) + correctifs de plateforme sur les 4 suites - #527
Merged
Merged
Conversation
POST /api/control/reset relançait le run sur ConfigLoader.LoadDefaults() au lieu du profil de référence : une campagne pilotée longue par reset pouvait redémarrer sur un autre profil que prepare (mesuré le 30/09 : extinction t300 par reset vs survie 1200/1200 par prepare). PrepareCoreAsync applique désormais SimulationProfiles.ReferenceJson() quand aucune surcouche n'est fournie : le chemin HTTP ne dépend plus des défauts intégrés (défaut 1 du RAPPORT-ELEMENTS-OUVERTS §5.1, doctrine ADR-016). Propriété PreparedOptions exposée pour l'assertion. Test de non-régression : reset sans config == prepare sans config == profil de référence. SYNE vert : 590 tests (514 Core + 76 Console), 0 échec, oracles inchangés, engineVersion conservée. 🤖 Generated with Codebuff Co-Authored-By: Codebuff <noreply@codebuff.com>
Réaligne les documents racine et composants sur l'état réel du dépôt (commit a51c95d) : - README : version SYNE 0.13.0 -> 0.15.0 (badge, tableau, engineVersion). - Livex-status : SYNE publie son manifeste et son contrat (J2A accepté), ECHOS est headless avec /analysis/* (J2B accepté) — plus aucune prétention à une interface ECHOS ni à l'absence de manifeste SYNE. - Références mortes : docs/PLAN-CORRECTIFS-CAMPAGNE-RUNS.md (absent de l'historique git) remplacé par RAPPORT-ELEMENTS-OUVERTS §5.1 dans ses 6 citants ; docs/docs_prototype/ (supprimé par PR #502) : tombstones ARCHITECTURE, ADR-002 PRISM, changelogs, docs/README. - ROADMAP : ISSUES/KANBAN racine -> docs/governance/ ; U8 ne référence plus le milestone ph8 ECHOS retiré par ADR-007. - CHANGELOG : section Removed complétée (retrait echos-ui + shell Electron par ADR-007), entrées Electron du 23/09 marquées surclassées. - docs-echos : écrans web [OUVERT] closes par ADR-007 (ISSUES + ROADMAP), milestone ph8 marqué RETRAITÉ, en-têtes datés à jour. Critère : grep de référence cassée = 0 sur les chemins listés (hors tombstones annotés et snapshot Monographie). 🤖 Generated with Codebuff Co-Authored-By: Codebuff <noreply@codebuff.com>
Arbitrage A1 de ROADMAP-V01.md : Docker est retiré définitivement du projet — l'installation et l'orchestration sont portées par le Launcher (artefacts natifs, --check), le jalon T6 de la Monographie n'a plus lieu d'être pour LIVEX. - ROADMAP.md : T6 barré + motif du retrait. - CI_CD.md : principe « Conteneurisation », étape docker du tableau de validation, étapes 2/3 de la release (GHCR) et jalon « compose < 30 s » retirés ; secret GHCR remplacé. - ARCHITECTURE.md : lignes Conteneurisation/GHCR et compose.yml du dépôt retirées. - docs/docs-syne/ARCHITECTURE.md : Dockerfile « à venir » retiré de l'arborescence et des points ouverts. - docs/docs-launcher/OBSERVABILITY.md : piste docker-compose retirée (la mention négative §26 est conservée). - release.yml : TODO de publication d'images supprimé (YAML revalidé). - CHANGELOG : entrée Removed + réécriture de la ligne Unreleased. - ROADMAP-V01.md : fichier ajouté au suivi, étapes 1/3/10 cochées avec leurs preuves (ef878f2, 0c4d223, ce commit). Critère : grep docker sur les sources = annotations/négatifs/historique uniquement ; snapshot Monographie et copies bin/ exclus. 🤖 Generated with Codebuff Co-Authored-By: Codebuff <noreply@codebuff.com>
…-V01) Procédure rejouée sur un environnement vierge et preuves vives consignées dans INTEGRATION_CONTRACT.md §10.3 : - prérequis : Python >= 3.11 (testé 3.14.4) ; piège documenté du paquet python3-venv absent -> contournement --without-pip + get-pip.py ; venv ~212 Mo (pyarrow) ; uv non requis. - pytest echos/tests vert dans le venv. - /health/ready 200 après migrations (< 30 s), base par défaut <LIVEX_DATA>/echos/analytics.sqlite hors work-dir (503 explicite si inutilisable). - GET /api/runs 200 ; POST /analysis/run|experiment|report 422 à erreur de schéma structurée (aucun 500, aucune interface — ADR-007). - /control/shutdown sans jeton 401 (auth) ; SIGTERM sans orphelin. - OS supportés : Linux x86-64 seul (manifeste executable.linux) ; Windows = étape 5. Case J2B de launcher/ROADMAP-V1.md cochée (la porte J3 reste ouverte) et étape 9 de ROADMAP-V01.md cochée avec preuves. 🤖 Generated with Codebuff Co-Authored-By: Codebuff <noreply@codebuff.com>
…P-V01)
POST /api/control/reset accepte une surcouche config (JSON partiel, meme
regle que start/prepare ; contrat API_CONTRACTS.md elargi a
{ seed?, config?, maxTicks? }) — indispensable pour enchainer des runs de
populations differentes par reset, la population n'etant plus portee que
par prepare.
Preuve scientifique : scripts/reset-campaign.py rejoue la campagne
ADR-016 (50 et 100 agents x 2500 ticks x 3 seeds) en une session --serve
enchainee start -> reset x5, flux WS segmente par runId (2500 snapshots
et 125 000/250 000 decisions par run) :
50/12345 -0,0014 | 50/424242 -0,0037 | 50/999 -0,0027
100/12345 -0,0018 | 100/424242 -0,0028 | 100/999 -0,0025
6/6 : 0 extinction, 0 mort, |pente| <= 0,0037 < 0,005/tick, population =
initiale — pentes identiques a celles du chemin prepare. Defaut 1 du
RAPPORT-ELEMENTS-OUVERTS ferme (nouveau paragraphe 5.1 bis).
Tests : suite SYNE verte (514 Core + 78 Console, 0 echec, relances
apres un flaky non reproductible sous charge campagne) ;
ControlServerWireTests.Reset_WithConfig_BuildsTheNewRunWithThatSurcouche
et Reset_WithNonObjectConfig_IsRejected ajoutes.
🤖 Generated with Codebuff
Co-Authored-By: Codebuff <noreply@codebuff.com>
Machine de performance V0.1 figee (arbitrage A3) : i7-8750H 6c/12t, 14 Gio, Ubuntu x86-64, .NET 10.0.401. Deux passes --benchmark le 08/10/2026, protocol identique au ph9 (300 ticks, monde 500x500, seeds 12345/999/7) : checksums FNV-1a identiques, debits a +/-3 %. Premieres mesures honnaises a charge complete — les chiffres ph9 (>=1187 a N=500, >=505 a N=1000) mesuraient des populations mourantes en cours de run : 50 -> 1354-2257 t/s (cible 30) OK ~45x 500 -> 42,8-53,9 t/s (cible 20) OK ~2,1x 1000 -> 5,9-6,5 t/s (cible 10) ECART ~1,7x Part de computation 92-99,8 % (seuil 30 % tenu partout). Goulot : perception, puis evenements (~15 ms/tick a N=1000). Ecart documente comme chantier d'optimisation hors blocage V0.1 (scenarios reels a <= 100 agents). Ligne V5 du RAPPORT cloturee, PERFORMANCE.md ouverts mis a jour. 🤖 Generated with Codebuff Co-Authored-By: Codebuff <noreply@codebuff.com>
… de ROADMAP-V01) - Livex-status.md réédité au 08/10 : inventaire 632 fichiers (tokei 13.0.0), suites 1 205 tests verts / 13 ignorés / 0 échec, couvertures ECHOS 91,57 % et SYNE 85,86 % (Core 88,68 %, Console 73,49 %), statuts J2A/J2B acceptés et installation ECHOS Linux validée intégrés, limites recalées sur les étapes restantes de ROADMAP-V01 (4, 5, 6, 8). - G5 tranché « livré côté Launcher mais non franchi » : scénario vert contre un ECHOS réel non encore prouvé (stubs seulement) — docs/docs-launcher/ ROADMAP.md réécrit, raison obsolète de launcher/README.md corrigée. - J3 ramenée à ses seuls items ouverts dans launcher/ROADMAP-V1.md (reprise sans rejouer un run terminé cochée, preuves CampaignRunnerTests). - RAPPORT-ELEMENTS-OUVERTS.md : V3/V4/V6 restantes (V5 déjà rayée), 13 tests ignorés et long-run A2 reflétés. - docs/docs-installer/ (11 fichiers) versé au dépôt comme prévu par ROADMAP-V01 ; étape 11 cochée. 🤖 Generated with Codebuff Co-Authored-By: Codebuff <noreply@codebuff.com>
…V01) - J3RealComponentsEndToEndTests : campagne contre SYNE publié + ECHOS réel (installation hermétique, base d'analyse dédiée) — interruption après le run 1, reprise sans rejouer RUN-0001, analyses via l'API réelle, rapport archivé octet à octet, empreintes et frontières du paquet vérifiées ; second test : ECHOS arrêté entre deux runs, données SYNE intactes, absence de rapport consignée. - IAnalysisService.AnalysisComponentVersion : la version d'ECHOS qui a produit le rapport est consignée dans le manifeste du paquet. - PublishedSyneInstaller extrait et partagé entre les deux bancs. - CI Linux : le job Launcher crée le venv ECHOS pour exécuter les tests J3. - Cases J3 cochées avec preuves (launcher/ROADMAP-V1.md), étape 4 partie Linux cochée ; critère CI Windows reste à l'étape 5. Suite Launcher : 208 tests (162 unit + 15 intégration + 31 E2E), 0 échec. 🤖 Generated with Codebuff Co-Authored-By: Codebuff <noreply@codebuff.com>
…r (etape 6 de ROADMAP-V01) Correctif : SendTextAsync ne filtrait pas le TimeoutException de WaitAsync(SendTimeout) — un client WS lent n'etait jamais retire et chaque trame rebloquait 2 s, figeant le moteur a 1,5 t/s au lieu de ~77 avec le consommateur gele. TimeoutException ajoutee au catch -> RemoveClient, test de non-regression ObservabilityServer_ClientThatStopsReading_IsRemovedAndBroadcastKeepsWorking. Validation V3 : outillage rejouable scripts/v3-campaign.py (SYNE --serve + worker echos.dev_ingest reels, 3 phases x 2 passes 100 et 50 t/s), reprise du worker apres mort violente automatee (test U8, 3/3 : 0,01 s / 0,55-0,60 s), parcours UI couverts par les 66 tests ViewModel. Rapport complet RAPPORT-ELEMENTS-OUVERTS.md §5.3, artefacts docs/campaign-runs/v3/ (hors git), etape 6 bouclée dans ROADMAP-V01.md. Verifs : SYNE 593/593, ECHOS suite complete 0 echec (+ integree LIVEX_SYNE_E2E=1), Launcher 162 unit + 15 integration + 31 E2E, 0 echec. 🤖 Generated with Codebuff Co-Authored-By: Codebuff <noreply@codebuff.com>
…CI windows-latest (etape 5 de ROADMAP-V01) Manifestes : executable.windows sur les trois composants — SYNE vers la publication win-x64 (.../win-x64/publish/Simulation.Console.exe, CI publie avec -r win-x64), ECHOS vers le nouveau echos-launcher.cmd (venv prioritaire, python en repli), syne-mock vers src/cli.js. validate_manifests.py impose la forme "path" ou les deux cles linux + windows. Portabilite Launcher : ProcessManager execute les .cmd via cmd.exe /c (CreateProcess ne lance que des .exe) ; PublishedSyneInstaller lit la cle de la plateforme courante ; bancs J3 et EarlyExit multi-OS (venv .venv\Scripts, copie des deux lanceurs, junctions Windows, exit-now.cmd). CI : 4 jobs windows-latest — syne-dotnet-windows, echos-python-windows, syne-mock-node-windows, launcher-dotnet-windows (unit + integration + E2E avec SYNE publie et ECHOS reel). Verifies sur Linux : validate_manifests OK, YAML OK, build --warnaserror vert, Launcher 162 + 15 + 31 = 208 tests 0 echec, contrat ECHOS vert, flake8 OK. Constats windows-latest et Lot W (machine Windows) restent a faire (§8). 🤖 Generated with Codebuff Co-Authored-By: Codebuff <noreply@codebuff.com>
… des statuts Decision : aucune release, publication ni tag tant que toute la validation n'est pas complete. ROADMAP-V01 : section etape 8 supprimee, ligne P2 requalifiee, diagramme de sequence et consignes de bascule §8 ajustes (on ne coche plus que les etapes 5 et 4 depuis la machine Windows). Livex-status aligne sur les realisations du jour : J3 (etape 4) et V3 (etape 6) valides, etape 5 Lot L committé — il ne reste que la validation Windows (Lot W + constat CI windows-latest) ; la publication multiplateforme disparait du §7 et de la conclusion. 🤖 Generated with Codebuff Co-Authored-By: Codebuff <noreply@codebuff.com>
Nouveau NAMING_CONVENTIONS.md (identifiants en anglais, commentaires en francais, regles par langage C#, Python, JS, C++/Unreal, structure des commentaires) reference par CONTRIBUTING.md (dependance + checklist PR) et docs/README.md. Ajout de PLAN-REFONTE-DOCUMENTATION.md : refonte de la documentation fondee sur le code reellement implemente, deux supports independants (doc technique / monographie), verite par le code. Lot de documentation saisi pendant le travail des etapes 4 a 6, committi pour rendre le depot coherent avant bascule sur la machine Windows. 🤖 Generated with Codebuff Co-Authored-By: Codebuff <noreply@codebuff.com>
…ifs (étapes 4 et 5 de ROADMAP-V01) Machine DESKTOP-MQQ150J (Windows 11 10.0.26200, dotnet 10.0.401 / SDK .NET 10.0.12, Node 25.9.0, Python 3.12.10, dépôt D:\LIVEX, branche feature/windows-validation-v01). Résultats : build --warnaserror 0 avertissement, Launcher 162 unit + 15 intégration + 31 E2E = 208 tests, 0 échec, aucun processus orphelin après les trois suites. E2E contre SYNE publié win-x64 + ECHOS réel (venv .venv\Scripts, echos-launcher.cmd) : campagne → interruption → reprise → analyse → paquet .livexp scellé et relu. --check : 8 contrôles, code 0 avec SYNE installé via LIVEX_HOME, code 2 sans composant. Tests filtrés Arret|Manifeste|Sonde| Injoignable|Detect|Installation : 24/24. Trois défauts Windows produits corrigés : - app.manifest sans manifestVersion (et portant manifestType, attribut non autorisé) : livex-launcher.exe ne démarrait jamais (SideBySide 11 puis 64, « configuration côté-à-côté incorrecte »), y compris sous PowerShell — aucun test ne lance l'apphost, le défaut était donc invisible en CI. - Journal de session lu sous verrou : export en erreur et panneau « journaux récents » jamais rafraîchi sur Windows (File.ReadAllText/ReadLines sur un fichier encore ouvert en écriture) → SessionFileJournal.ReadSharedLines / ReadSharedTextAsync (FileShare.ReadWrite), réutilisé par le banc J3. - Job Object unique terminé puis fermé à chaque arrêt forcé : tuait aussi les autres composants vivants et retirait KILL_ON_JOB_CLOSE → assignation au démarrage (MakeOwnProcessGroup) et arrêt forcé borné à l'arbre du composant (Kill(entireProcessTree: true)). Bancs rendus valides sous Windows : WaitForHealthyAsync intercepte aussi l'expiration de requête (un port sans écoute ne rend ECONNREFUSED qu'après ~2,05 s sous Windows), manifeste executable.windows du banc CampaignEndToEndTests, libération des compositions et du journal PublishedSyneHarness, horizon de sonde porté au-delà du délai de sondage (assertions inchangées). Docs : ROADMAP-V01 (étapes 4 et 5 cochées avec preuves, §8, points ouverts), CHANGELOG, Livex-status, INTEGRATION_CONTRACT (OS supportés). Reste le constat CI windows-latest : aucun run GitHub Actions pour la branche (total_count = 0) — push explicite requis (arbitrage A4). 🤖 Generated with Codebuff Co-Authored-By: Codebuff <noreply@codebuff.com>
… avant PR Rejoue de TOUTES les suites sous Windows avant la PR : trois défauts invisibles sur Linux, plus les deux tests de non-régression du Lot W. - SYNE : ObservabilityServer fermait le socket pendant qu'une ReceiveAsync était en vol — sur Windows (WebSocketBase.TakeLocks / Monitor.Enter) les deux fils s'attendaient sans fin : 2 tests sur 4 de la classe WebSocket pétaient et le testhost restait bloqué à l'infini, après les assertions, au niveau du await using. Fermeture ordonnée désormais : CTS par session → annuler la réception → attendre DrainAsync (bornée 2 s) → fermer ; RemoveClient ne ferme plus pendant qu'une réception tourne. Preuve : classe rejouée 10/10 (≈2/10 avant), SYNE 593 tests verts, warnaserror 0/0. - ECHOS : 43 lectures/écritures sans encoding= lisaient les fixtures UTF-8 avec l'ANSI cp1252 (6 échecs) ; contrats d'adaptateur POSIX rendus portables — bit d'exécution conditionné à la plateforme, echos-launcher.cmd lancé via COMSPEC /c avec nettoyage d'arbre (WinError 193 avant). - syne-mock : SIGTERM/SIGINT non livrables sous Windows (child.kill vaut TerminateProcess) → 2 tests de fermeture gracieuse ajournés avec motif ; même garde plateforme sur le bit d'exécution de src/cli.js. - Launcher : AppHostLaunchTests lance réellement l'apphost publié (le défaut de manifeste restait invisible car aucune suite ne lançait l'exécutable) et SessionFileJournalTests relit le journal pendant l'écriture — 211 tests. Preuves locales : Launcher 162+17+32 = 211, SYNE 79+514 = 593, ECHOS flake8 0 + pytest 0 échec (+ intégrations U8 et mock→ECHOS), syne-mock 44 pass / 0 fail / 2 skip, manifests validés, 0 processus orphelin. 🤖 Generated with Codebuff Co-Authored-By: Codebuff <noreply@codebuff.com>
… dynamique Les 4 jobs windows-latest ne s'étaient JAMAIS exécutés (le workflow ne se déclenche que sur PR vers develop/main) : deux défauts de CI sont donc apparus au premier passage de la PR #527. - syne-mock (Windows) : `npm test` s'exécute sous PowerShell, qui n'étend pas les glob — `node --test test/*.test.js` cherchait littéralement le fichier `test\*.test.js` et sortait en code 1. `node --test` sans argument utilise la recherche récursive par défaut du test runner (46 tests, mêmes résultats sous bash et PowerShell). - Launcher (Linux) : le saut dynamique `SkipException.ForSkip` n'est pas converti en « ignoré » par xunit 2.9.3 + vstest — le banc de journal déclarait `$XunitDynamicSkip$…` en erreur. Saut posé à la découverte via `[WindowsOnlyFact]` (propriété `Skip` de l'attribut), mécanisme supporté par tous les runners : vérifié en inversant la condition → `ignorée(s): 1`, puis restauré → 17/17 sous Windows. 🤖 Generated with Codebuff Co-Authored-By: Codebuff <noreply@codebuff.com>
…être fixe Deux bancs vérifiaient la cadence 2 t/s en attendant 150 ms puis en exigeant qu'aucun second tick ne soit passé (`Assert.Equal(1ul, Tick)` et `Assert.InRange(Tick, 1, 1)`). La boucle est à délai fixe (tick → 500 ms → tick) : le tick 2 ne pouvait être vu dans la fenêtre que si la reprise du fil de test était tardive — exactement ce que fait un runner CI chargé. Sur `windows-latest`, `PrepareStoresRequestedTickRateForTheFollowingRun` a donc échoué (Expected 1, Actual 2) sans aucune anomalie de cadence, alors que le banc avait passé au passage précédent. L'invariant devient la durée mesurée du run, ancrée sur `start` : deux ticks à 2 t/s exigent deux intervalles (≥ 900 ms), un run à la cadence par défaut (≈ 200 ms) échoue. La latence ne peut plus fausser le constat, et la sœur `UsesConfiguredTicksPerSecondAndKeepsRunIdentityInSnapshots` — même motif — est couverte par le même contrôle. Les trames `[1, 2]` et le `TicksPerSecond` du monde préparé restent vérifiés. Vérifié : build `--warnaserror` 0/0, Simulation.Console.Tests 79/79. 🤖 Generated with Codebuff Co-Authored-By: Codebuff <noreply@codebuff.com>
`windows-latest` échouait 1 fois sur 3 sur `ScaleTargetsTests.FiveHundredEntities_StayAboveRegressionFloor` (« Débit à 500 entités sous le plancher ») alors que le moteur n'avait pas régressé : le job lançait `dotnet test` une seule fois, ce qui exécute `Simulation.Core.Tests` et `Simulation.Console.Tests` dans deux testhost simultanés — le banc de débit, purement CPU, mesurait sous contention. - ci.yml : les deux assemblées SYNE passent en deux étapes séquentielles (même découpage que les jobs Launcher qui, eux, n'ont jamais flaké), Linux et Windows. - ScaleTargetsTests : meilleur de 3 à meilleur de 5 essais (plusieurs fenêtres de charge) et message d'échec portant la valeur mesurée pour calibrer un plancher à partir d'une preuve plutôt que d'une hypothèse. Les planchers (120/30/20 t/s) et l'intention du test sont inchangés. - PERFORMANCE.md §9.4 : convention mise à jour (5 essais, étapes séquentielles). Vérifié : build `--warnaserror` 0/0, Simulation.Core.Tests 514/514. 🤖 Generated with Codebuff Co-Authored-By: Codebuff <noreply@codebuff.com>
…erts Lot W La branche a enfin été poussée et une PR ouverte vers develop : les 4 jobs `windows-latest` — jamais exécutés depuis la création du workflow — ont tourné aux côtés des 9 jobs Linux. **13/13 verts** (run 37843436072, commit 270e586) après quatre passages ayant révélé et fait corriger quatre défauts de CI. - ROADMAP-V01.md : critère de sortie étape 5 coché [x], sous-étape 4 de §8 cochée avec le numéro de run, « Suite immédiate » remportée, points restés ouverts alignés (constat CI fait, défauts Windows couverts par des tests). - CHANGELOG.md : note du Lot W remplacée par le constat CI et les 4 défauts. - Livex-status.md : les trois mentions « reste à constater la CI » deviennent « fait le 08/10/2026 » ; le test de débit n'est plus signalé comme fragile (meilleur de 5 essais + étapes séquentielles en CI). Aucune release ni tag (périmètre V0.1 hors PRISM, arbitrage A4). 🤖 Generated with Codebuff Co-Authored-By: Codebuff <noreply@codebuff.com>
L'archivage lisait stdout.log avec File.ReadAllBytes pendant que la pompe détachée du moteur peut encore l'écrire : sous Windows, violation de partage. Un run réussi devenait Échoué, puis la collecte d'échec levait à son tour et l'exception remplaçait la cause réelle (échec de la reprise J3 en CI). RunLogArchive.Collect (FileShare.ReadWrite) réutilisé par les deux chemins ; un journal illisible est consigné dans logs-unreadable.txt avec sa cause au lieu d'être fatal. 3 tests dont 2 Windows. 🤖 Generated with Codebuff Co-Authored-By: Codebuff <noreply@codebuff.com>
🤖 Generated with Codebuff Co-Authored-By: Codebuff <noreply@codebuff.com>
donovan-dev-web
added a commit
that referenced
this pull request
Oct 12, 2026
… les 4 suites (#527) Étapes 4 et 5 de ROADMAP-V01 : validations Windows de bout en bout (apphost natif, Job Object, journaux de session partagés, --check, E2E contre SYNE publié win-x64 et ECHOS réel) ; suite Launcher 214 tests verts, build --warnaserror 0/0. CI : 4 nouveaux jobs windows-latest, 13/13 verts (Linux + Windows). Cinq défauts trouvés et corrigés au passage : glob shell non étendu par PowerShell, saut dynamique xunit non converti en « ignoré », verrou mortel CloseAsync/ReceiveAsync du serveur d'observabilité SYNE, plancher de débit mesuré sous contention entre assemblées de tests, et archivage des journaux de run en violation de partage (RunLogArchive, lecture FileShare.ReadWrite). Docs : ROADMAP-V01, CHANGELOG, Livex-status alignés sur le constat CI.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Objet
Fusionne la V0.1 validée hors PRISM : la bascule Windows (étapes 4 et 5 de
ROADMAP-V01.md), les correctifs de plateforme découverts en rejouant toutes les suites sous Windows, et la documentation associée. Aucune release ni tag dans cette PR (demande explicite).Contenu (14 commits,
4cc218e..1fa6783)Lot W — validations Windows + correctifs natifs
launcher/Launcher.App/app.manifest:manifestVersion="1.0"ajouté,manifestTyperetiré — sans celalivex-launcher.exene démarrait jamais (SideBySide 11/64) et aucun test ne lançait l'apphost.SessionFileJournal: lecture partagée (FileShare.ReadWrite) — l'export des journaux et le panneau « journaux récents » échouaient en violation de partage sous Windows.ProcessTreeKiller: le Job Object unique était terminé puis fermé à chaque arrêt forcé (tuerait les autres composants vivants et perdait le garde-fou anti-orphelin) → assignation au démarrage + kill borné à l'arbre.executable.windows, compositions/journaux libérés.Correctifs de plateforme (nouveaux dans cette PR, invisibles sur Linux)
ObservabilityServerfermait le socket pendant qu'uneReceiveAsyncétait en vol ; sur Windows (WebSocketBase.TakeLocks/Monitor.Enter) les deux fils s'attendaient sans fin → 2 tests sur 4 de la classe WebSocket pétaient, testhost bloqué à l'infini après les assertions. Fermeture ordonnée (CTS par session → annuler la réception → attendreDrainAsyncbornée → fermer). Classe rejouée 10/10 (≈ 2/10 avant).encoding=lisaient les fixtures UTF-8 en ANSI cp1252 (6 échecs) ; contrats d'adaptateur POSIX rendus portables (bit d'exécution conditionné,echos-launcher.cmdlancé viaCOMSPEC /c, nettoyage d'arbre).SIGTERM/SIGINTnon livrables sous Windows (≈TerminateProcess) : 2 tests de fermeture gracieuse ajournés avec motif (le chemin POSIX reste couvert par Linux) ; bit d'exécution conditionné.AppHostLaunchTests(lance réellement l'apphost publié, 8 contrôles de--check) etSessionFileJournalTests(lecture partagée pendant l'écriture + échec prouvé d'un lecteur naïf).Preuves locales (Windows 11 10.0.26200, branche courante)
--warnaserrorflake8+pytest -qmock → ECHOSnpm testvalidate_manifests.py+ heuristique secretsL'E2E Launcher a été exécuté avec
LIVEX_SYNE_PUBLISHED_ROOT, exactement comme le fait le job CI.À constater en CI
Les 4 jobs
windows-latest(syne-dotnet-windows,echos-python-windows,syne-mock-node-windows,launcher-dotnet-windows) ne se sont jamais exécutés : le workflow ne se déclenche que sur une PR versdevelop/mainou un push sur ces branches. Cette PR les déclenche pour la première fois, avec les jobs Linux correspondants.Périmètre
Hors PRISM, sans release ni tag — la définition de « LIVEX V0.1 livrée » (
ROADMAP-V01.md§7) reste à boucler après constat CI.