diff --git a/CHANGELOG.md b/CHANGELOG.md index 8ff8f62..9dd13f1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,20 @@ - + # Changelog +## 0.3.5 — 2026-09-22 + +- publication stable du second backend realtime `game-realtime-webtransport-lib`, retenu comme implémentation WebTransport/QUIC supplémentaire tandis que `game-realtime-websocket-lib` reste la baseline et le fallback de référence ; +- établissement natif QUIC/HTTP3 avec TLS et pin SHA-256 exact, stream bidirectionnel fiable compatible `RealtimeConnection`, deadlines/cancellation bornées et client navigateur/WASM WebTransport réel validé contre le serveur Rust natif ; +- composition WebTransport-first validée sans manager générique : fallback WebSocket limité aux erreurs classifiées `Timeout`/`Io`, avec les erreurs ambiguës ou de configuration laissées visibles ; +- datagrams WebTransport conservés comme capacité backend-spécifique non fiable/non ordonnée, avec taille maximale négociée et sans extension du contrat fiable commun ; +- caractérisation loopback bornée de l'établissement, du RTT, de plusieurs patterns de throughput et des datagrams, documentée comme observation locale et non comme classement général ni prédiction Internet/mobile ; +- `0.3.5-rc.1` validée avec audits propres, `cargo check`, Clippy strict, **77 tests workspace**, quatre smokes natifs `PASS`, mesures release, builds WASM/frontend, smoke navigateur réel `PASS`, cross-compilation Android ARM64/API 21 et graphes de dépendances conformes ; +- documentation durable et architectures consolidées ; Android runtime WebTransport et plateformes Apple restent explicitement non validés, et aucun codec wire métier final, protocole session joueur/room, reconnect/resync, synchronisation gameplay, prediction/reconciliation, matchmaking ou simulation authoritative n'est introduit par `0.3.5`. + +Les détails des phases `alpha`, `beta`, `rc` et de leurs correctifs restent dans `deltas/0.3.5/` et `history/0.3.5/`. + ## 0.3.5-rc.1 — 2026-09-22 - gel de la seconde implémentation realtime autour de `game-realtime-webtransport-lib`, conservée comme backend WebTransport/QUIC supplémentaire tandis que `game-realtime-websocket-lib` reste la baseline et le fallback de référence ; diff --git a/Cargo.toml b/Cargo.toml index ea5da1a..037a84b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -30,7 +30,7 @@ members = [ ] [workspace.package] -version = "0.3.5-rc.1" +version = "0.3.5" edition = "2024" license = "MIT" repository = "https://git.sasedev.com/Sasedev/games" diff --git a/README.md b/README.md index 346ea73..6fda647 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ - + # games.sasedev @@ -25,11 +25,11 @@ Workspace expérimental puis productif pour des jeux multiplateformes principale ## Baseline -Version stable de référence : `0.3.4`. +Version stable de référence : `0.3.5`. -Version active : `0.3.5-rc.1`. `0.3.2` reste différée. +Version active : `0.3.5`. Prochaine version planifiée : `0.3.6-alpha.1`. `0.3.2` reste différée. -La stable `0.3.4` livre la première baseline realtime : contrat binaire transport-neutral, backend WebSocket Tokio/tokio-tungstenite, limites et deadlines, tests loopback/robustesse, smoke runtime localhost public et frontières de dépendances empêchant moteurs et gameplay de dépendre d'un backend concret. `0.3.5-rc.1` gèle le résultat consolidé du POC WebTransport/QUIC après validation de `0.3.5-beta.2` : chemins natif et navigateur, composition WebTransport-first avec fallback WebSocket strictement classifié, datagrams backend-spécifiques, caractérisation loopback bornée et cross-compilation Android ARM64/API 21. La candidate `0.3.5-rc.1` conserve la décision de **retenir WebTransport comme second backend realtime** à côté de WebSocket, qui reste la baseline/fallback de référence. Cette décision ne prétend pas qu’un résultat loopback prédit les performances Internet/mobile et ne transforme pas les datagrams en capacité du contrat fiable commun. +La stable `0.3.4` livre la première baseline realtime : contrat binaire transport-neutral, backend WebSocket Tokio/tokio-tungstenite, limites et deadlines, tests loopback/robustesse, smoke runtime localhost public et frontières de dépendances empêchant moteurs et gameplay de dépendre d'un backend concret. La stable `0.3.5` ajoute le second backend WebTransport/QUIC retenu : chemins natif et navigateur, composition WebTransport-first avec fallback WebSocket strictement classifié, datagrams backend-spécifiques, caractérisation loopback bornée et cross-compilation Android ARM64/API 21. WebSocket reste la baseline/fallback de référence ; WebTransport est conservé comme second backend realtime. Cette décision ne prétend pas qu’un résultat loopback prédit les performances Internet/mobile et ne transforme pas les datagrams en capacité du contrat fiable commun. Les deux premiers jeux sont des POC structurels : `game-reflex-poc` et `game-snake-poc`. Ils existent d'abord pour valider les frontières du workspace, le moteur, les assets et le packaging multiplateforme. diff --git a/ROADMAP.md b/ROADMAP.md index 241c709..3ed5d5d 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -1,5 +1,5 @@ - + # Roadmap @@ -50,7 +50,7 @@ Le détail historique des prereleases `0.1.0-*` reste dans `deltas/0.1.0/` et `h - (d) `0.3.2` — Tauri Desktop + Snake est différé tant qu’une solution de monétisation desktop/WebView, notamment vidéo récompensée, n’est pas démontrée techniquement et contractuellement ; ne pas créer cette distribution seulement pour réutiliser le host Web. - (x) `0.3.3` — Android SDL3 natif multi-ABI livré avec Cargo/Gradle natifs, APK universal pour tests, AAB comme cible de distribution, `minSdk 21` fumé et compatibilité 16 KB 64 bits validée, sans script Python de build. - (x) `0.3.4` — API de transport realtime + WebSocket/tokio-tungstenite baseline livrée, sans serveur Uroburas Mode 3. -- ( ) `0.3.5` — POC WebTransport/QUIC sur le même protocole, avec comparaison mesurée et fallback WebSocket. +- (x) `0.3.5` — POC WebTransport/QUIC sur le même protocole, avec comparaison mesurée et fallback WebSocket. - ( ) `0.3.6` — consolidation des POC plateforme/réseau et préparation de la baseline `0.4.x`. La numérotation `0.3.1+` reste révisable à partir des résultats réels ; les lignes ci-dessus décrivent le planning actuel, pas une obligation de créer des versions artificielles. diff --git a/Web/game-realtime-webtransport-browser-smoke/package.json b/Web/game-realtime-webtransport-browser-smoke/package.json index 671ea94..01365f1 100644 --- a/Web/game-realtime-webtransport-browser-smoke/package.json +++ b/Web/game-realtime-webtransport-browser-smoke/package.json @@ -1,7 +1,7 @@ { "name": "game-realtime-webtransport-browser-smoke-web", "private": true, - "version": "0.3.5-rc.1", + "version": "0.3.5", "type": "module", "scripts": { "wasm:dev": "cargo build -p game-realtime-webtransport-browser-smoke --lib --target wasm32-unknown-unknown && wasm-bindgen ../../../builds/sasedev-games/target/wasm32-unknown-unknown/debug/game_realtime_webtransport_browser_smoke.wasm --target web --out-dir ../../../builds/sasedev-games/game-realtime-webtransport-browser-smoke/wasm --out-name game_realtime_webtransport_browser_smoke", diff --git a/deltas/0.3.5/rel.001.md b/deltas/0.3.5/rel.001.md new file mode 100644 index 0000000..7ac9a2d --- /dev/null +++ b/deltas/0.3.5/rel.001.md @@ -0,0 +1,81 @@ + + + +# Delta 0.3.5 — release stable + +## Base + +Base validée : `0.3.5-rc.1`. + +## Objet + +Promouvoir mécaniquement la candidate validée vers `0.3.5` sans introduire de nouveau comportement. + +## Changements + +La release stable : + +- passe `workspace.package.version` de `0.3.5-rc.1` à `0.3.5` ; +- synchronise le host `Web/game-realtime-webtransport-browser-smoke` sur `0.3.5` ; +- positionne `README.md` sur `0.3.5` comme stable de référence et `0.3.6-alpha.1` comme prochaine version planifiée ; +- marque `0.3.5` terminée dans `ROADMAP.md` ; +- ajoute l'entrée stable `0.3.5` dans `CHANGELOG.md` ; +- enregistre la validation effective de la RC dans `history/0.3.5/rc.1.md` ; +- clôt `docs/plans/005-V0_3_5_WEBTRANSPORT_QUIC_POC_PLAN.md` et ses deux entrées d'index ; +- ajuste mécaniquement `prompts/007-V0_3_6_START_PROMPT.md` pour qu'il soit utilisé après publication effective du tag stable `v0.3.5`. + +## Frontière de release + +Aucun fichier Rust, test Rust, manifeste de crate realtime, dépendance tierce, Android/Gradle, gameplay, moteur, comportement WebSocket/WebTransport, fallback, datagram, framing, limite ou timeout n'est modifié après la RC. + +La stable conserve notamment : + +```text +WebSocket -> baseline/fallback de référence +WebTransport -> second backend realtime retained +Datagrams -> capacité WebTransport backend-spécifique, hors RealtimeConnection +``` + +Les preuves de plateforme restent bornées : Linux natif et navigateur/WASM ont une preuve runtime ; Android ARM64/API 21 a une preuve de cross-compilation du backend ; Android runtime WebTransport et Apple restent non validés. + +## Validation proportionnelle + +La RC fonctionnellement identique a déjà validé audits, `cargo check`, Clippy strict, **77 tests workspace**, quatre smokes natifs, mesures release, gates WASM/frontend, smoke navigateur réel, cross-compilation Android ARM64/API 21 et graphes de dépendances. + +La promotion stable demande uniquement les contrôles proportionnels aux changements de version et de documentation/build-metadata : + +```bash +cargo fmt --all -- --check + +python3 scripts/audit_rust_workspace_rules.py +python3 scripts/audit_markdown_tables.py README.md RULES.md ROADMAP.md CHANGELOG.md docs prompts crates Android Web deltas history +python3 scripts/audit_distribution_layout.py + +cargo check --workspace + +(cd Web/game-realtime-webtransport-browser-smoke && npm install && npm run build) +``` + +Clippy strict, full tests, smokes natifs/browser et cross-compilation Android ne sont pas répétés par cérémonie puisque cette promotion ne modifie aucun code ni comportement. Tout échec de la gate ci-dessus doit néanmoins être corrigé avant publication. + +## Contrôles documentaires de release + +Vérifier explicitement que : + +- `CHANGELOG.md` contient une entrée stable `0.3.5` au-dessus de l'entrée `0.3.5-rc.1` ; +- `ROADMAP.md` marque `0.3.5` `(x)` et laisse `0.3.6` planifiée ; +- le host navigateur annonce `0.3.5` ; +- le plan `0.3.5` et ses index sont clôturés ; +- `prompts/007-V0_3_6_START_PROMPT.md` demande `v0.3.5` comme base et précise qu'il ne doit être utilisé qu'après publication effective de ce tag ; +- aucune documentation ne transforme les datagrams en capacité `RealtimeConnection` ; +- aucune preuve de cross-compilation Android n'est décrite comme smoke runtime Android WebTransport. + +## Publication + +Après validation de ce delta : + +- commit de release ; +- tag stable unique `v0.3.5` ; +- archive ZIP téléchargée depuis ce tag utilisée comme baseline autoritaire de la session suivante ; +- démarrage de `0.3.6` uniquement depuis `v0.3.5` avec `prompts/007-V0_3_6_START_PROMPT.md` ; +- première tranche suivante : `0.3.6-alpha.1`, audit/consolidation des POC `0.3.x` et création du plan actif `0.3.6`. diff --git a/docs/000-README.md b/docs/000-README.md index 9fb9f64..6891c54 100644 --- a/docs/000-README.md +++ b/docs/000-README.md @@ -1,5 +1,5 @@ - + # Documentation games.sasedev @@ -21,7 +21,7 @@ - [`plans/002-V0_3_1_TAURI_ANDROID_SNAKE_PLAN.md`](plans/002-V0_3_1_TAURI_ANDROID_SNAKE_PLAN.md) — plan clôturé de `0.3.1`, second host Snake Tauri Android. - [`plans/003-V0_3_3_ANDROID_NATIVE_MULTI_ABI_PLAN.md`](plans/003-V0_3_3_ANDROID_NATIVE_MULTI_ABI_PLAN.md) — plan clôturé de `0.3.3`, pipeline Android SDL3 natif Gradle/Cargo multi-ABI. - [`plans/004-V0_3_4_REALTIME_TRANSPORT_WEBSOCKET_PLAN.md`](plans/004-V0_3_4_REALTIME_TRANSPORT_WEBSOCKET_PLAN.md) — plan clôturé de `0.3.4`, API de transport realtime et baseline WebSocket Tokio/tokio-tungstenite. -- [`plans/005-V0_3_5_WEBTRANSPORT_QUIC_POC_PLAN.md`](plans/005-V0_3_5_WEBTRANSPORT_QUIC_POC_PLAN.md) — plan actif de `0.3.5`, POC WebTransport/QUIC, navigateur, fallback WebSocket et mesures comparatives. +- [`plans/005-V0_3_5_WEBTRANSPORT_QUIC_POC_PLAN.md`](plans/005-V0_3_5_WEBTRANSPORT_QUIC_POC_PLAN.md) — plan clôturé de `0.3.5`, second backend WebTransport/QUIC retenu, navigateur, fallback WebSocket et mesures comparatives. ## Architecture diff --git a/docs/plans/000-README.md b/docs/plans/000-README.md index 67b14ab..67b884a 100644 --- a/docs/plans/000-README.md +++ b/docs/plans/000-README.md @@ -1,5 +1,5 @@ - + # Plans de versions games.sasedev @@ -15,4 +15,4 @@ Le `ROADMAP.md` reste la trajectoire macroscopique du projet ; les deltas décri - [`002-V0_3_1_TAURI_ANDROID_SNAKE_PLAN.md`](002-V0_3_1_TAURI_ANDROID_SNAKE_PLAN.md) — plan clôturé de `0.3.1`, second host Snake Tauri Android. - [`003-V0_3_3_ANDROID_NATIVE_MULTI_ABI_PLAN.md`](003-V0_3_3_ANDROID_NATIVE_MULTI_ABI_PLAN.md) — plan clôturé de `0.3.3`, pipeline Android SDL3 natif Gradle/Cargo multi-ABI. - [`004-V0_3_4_REALTIME_TRANSPORT_WEBSOCKET_PLAN.md`](004-V0_3_4_REALTIME_TRANSPORT_WEBSOCKET_PLAN.md) — plan clôturé de `0.3.4`, API de transport realtime et baseline WebSocket Tokio/tokio-tungstenite. -- [`005-V0_3_5_WEBTRANSPORT_QUIC_POC_PLAN.md`](005-V0_3_5_WEBTRANSPORT_QUIC_POC_PLAN.md) — plan actif de `0.3.5`, POC WebTransport/QUIC, navigateur, fallback WebSocket et comparaison mesurée. +- [`005-V0_3_5_WEBTRANSPORT_QUIC_POC_PLAN.md`](005-V0_3_5_WEBTRANSPORT_QUIC_POC_PLAN.md) — plan clôturé de `0.3.5`, second backend WebTransport/QUIC retenu, navigateur, fallback WebSocket et comparaison mesurée. diff --git a/docs/plans/005-V0_3_5_WEBTRANSPORT_QUIC_POC_PLAN.md b/docs/plans/005-V0_3_5_WEBTRANSPORT_QUIC_POC_PLAN.md index 31d0e9c..c433364 100644 --- a/docs/plans/005-V0_3_5_WEBTRANSPORT_QUIC_POC_PLAN.md +++ b/docs/plans/005-V0_3_5_WEBTRANSPORT_QUIC_POC_PLAN.md @@ -1,11 +1,13 @@ - + # Plan 0.3.5 — POC WebTransport/QUIC et fallback WebSocket ## Statut -Plan actif créé pendant `0.3.5-alpha.1` à partir de l'archive taggée `v0.3.4`, puis réconcilié pour l'implémentation native de `0.3.5-alpha.2`, son correctif de validation `0.3.5-alpha.2.fix.1`, le chemin fiable validé de `0.3.5-alpha.3`, la robustesse validée par `0.3.5-alpha.4.fix.1`, le smoke natif validé de `0.3.5-alpha.5`, le chemin client WASM validé de `0.3.5-alpha.6`, le smoke navigateur validé par `0.3.5-alpha.7.fix.2`, la composition/fallback WebSocket validée par `0.3.5-alpha.8.fix.1`, le POC datagram backend-spécifique validé par `0.3.5-alpha.9.fix.1`, puis la caractérisation comparative bornée validée par `0.3.5-alpha.10.fix.1`. `0.3.5-beta.1` a validé le workspace complet, les smokes natifs, les mesures, le build WASM/frontend et le smoke navigateur réel. `0.3.5-beta.1.fix.1` a ensuite fermé la dérive de version du host navigateur, revalidé son build/smoke réel et confirmé la cross-compilation du backend WebTransport pour Android ARM64/API 21 avec le NDK `28.2.13676358`. `0.3.5-beta.2` a validé la consolidation documentaire pré-RC sans changement fonctionnel. `0.3.5-rc.1` est désormais la candidate gelée : WebTransport reste **retained** comme second backend realtime et WebSocket reste la baseline/fallback de référence. +Plan clôturé avec la promotion stable `0.3.5` du 2026-09-22. Il a été créé pendant `0.3.5-alpha.1` à partir de l'archive taggée `v0.3.4` et reste désormais une référence historique. + +Les tranches `alpha.1`, `alpha.2.fix.1`, `alpha.3`, `alpha.4.fix.1`, `alpha.5`, `alpha.6`, `alpha.7.fix.2`, `alpha.8.fix.1`, `alpha.9.fix.1`, `alpha.10.fix.1`, `beta.1.fix.1`, `beta.2` et `rc.1` ont été validées. Les prereleases intermédiaires ayant nécessité un fix restent documentées dans `deltas/0.3.5/`. La RC finale a repassé les audits, la compilation workspace, Clippy strict, **77 tests workspace**, les quatre smokes natifs, les mesures release, les builds WASM/frontend, le smoke navigateur réel, la cross-compilation Android ARM64/API 21 et les graphes de dépendances sans défaut. La stable est une promotion mécanique de cette RC gelée. WebTransport est **retained** comme second backend realtime et WebSocket reste la baseline/fallback de référence. Le cadrage détaillé et la comparaison des stacks actuelles sont conservés dans `docs/studies/026-V0_3_5_WEBTRANSPORT_QUIC_STACK_AUDIT.md`. Le présent document porte les décisions opérationnelles, le scope, les gates et le forecast vivant de la version. @@ -637,7 +639,7 @@ La RC suivante vérifie cette documentation consolidée et porte l'entrée chang ### `0.3.5-rc.1` — candidate gelée -Tranche active : +Tranche validée : - aucun comportement volontaire nouveau ; - enregistrer `history/0.3.5/beta.2.md` après sa validation ; @@ -653,15 +655,7 @@ Tranche active : ### `0.3.5` — stable -Promotion mécanique autant que possible : - -- version stable ; -- historique RC ; -- changelog stable ; -- clôture du plan ; -- roadmap si nécessaire ; -- delta final ; -- ajustement mécanique du prompt `0.3.6`. +Promotion mécanique réalisée : version `0.3.5`, historique RC, changelog stable, roadmap clôturée, plan et index clôturés, delta `rel.001` et prompt `0.3.6` ajusté pour partir de la stable publiée/taggée après validation du delta final. Aucun comportement n'est modifié après `rc.1`. ## Gates Cargo planifiées diff --git a/history/0.3.5/rc.1.md b/history/0.3.5/rc.1.md new file mode 100644 index 0000000..0a4849a --- /dev/null +++ b/history/0.3.5/rc.1.md @@ -0,0 +1,95 @@ + + + +# Historique 0.3.5-rc.1 + +## Statut + +`0.3.5-rc.1` a été validée par l'utilisateur le 2026-09-22. La candidate gelée passe les audits, la compilation workspace, Clippy strict, le workspace de tests complet, les smokes realtime natifs, la caractérisation release, les gates WASM/frontend, la cross-compilation Android ARM64/API 21, le smoke navigateur réel et les contrôles de dépendances sans défaut de publication. + +Aucun `rc.1.fix.N` n'est requis. La candidate peut être promue mécaniquement vers la stable `0.3.5`. + +## Gates statiques et workspace + +La sortie utilisateur confirme : + +```text +General Rust rule audit: clean +Rust export completeness audit: 0 candidate(s) +games.sasedev workspace audit: clean +Markdown table audit: clean (5 table(s), 318 file(s)) +Distribution layout audit: clean (66 required path(s), 8 forbidden path(s) absent) +cargo check --workspace: clean +cargo clippy --workspace --all-targets --all-features -- -D warnings: clean +``` + +Le workspace compilé porte bien `0.3.5-rc.1`, y compris les crates realtime, les smokes et l'outil de mesure. + +## Tests workspace + +La commande : + +```bash +cargo test --workspace --all-targets --all-features +``` + +valide **77 tests, 0 échec** sur les moteurs, plateformes, assets/logging, jeux, WebSocket, WebTransport, datagrams, fallback et adapters concernés. + +## Smokes realtime natifs + +Les quatre launchers terminent par : + +```text +game-realtime-websocket-smoke: PASS +game-realtime-webtransport-smoke: PASS +game-realtime-webtransport-datagram-smoke: PASS +game-realtime-transport-fallback-smoke: PASS +``` + +Le fallback confirme WebTransport préféré, WebSocket uniquement sur erreur classifiée `Timeout`/`Io`, et visibilité conservée des erreurs non éligibles au fallback. + +## Mesures de la RC + +La caractérisation release bornée termine par `game-realtime-transport-measure: PASS` et observe sur cette exécution loopback : + +```text +establishment median: websocket=65 us, webtransport=720 us +rtt median: websocket=17 us, webtransport=11 us +throughput 128 x 64 KiB: websocket=3036.346 MiB/s, webtransport=634.827 MiB/s +in-flight 64 x 1 KiB: websocket=1.533 MiB/s, webtransport=348.883 MiB/s +datagram bounded burst: attempted=64, received=64, payload=256 bytes, client_max=1381, server_max=1381 +``` + +Ces valeurs restent une observation locale dépendante du pattern ; elles ne constituent ni un classement général des protocoles ni une prédiction Internet/mobile. La conclusion reste : + +```text +CONCLUSION webtransport=retain scope=second-backend reason=reliable-browser-fallback-datagram-capabilities +``` + +## WASM, frontend et navigateur réel + +Les gates `wasm32-unknown-unknown` de `game-realtime-webtransport-lib` passent en check, Clippy strict et build. `game-realtime-webtransport-browser-smoke` compile également pour WASM. + +Le host Vite/TypeScript synchronisé sur `0.3.5-rc.1` passe `npm install` sans vulnérabilité puis son build production. Le smoke navigateur réel contre le serveur Rust natif termine par : + +```text +game-realtime-webtransport-browser-smoke: PASS +``` + +## Android ARM64/API 21 + +Avec le NDK `28.2.13676358` déjà retenu et le Clang ciblé `aarch64-linux-android21-clang` exposé à Cargo/`cc-rs`, la commande : + +```bash +cargo check -p game-realtime-webtransport-lib --target aarch64-linux-android +``` + +termine proprement. Cette preuve valide la **cross-compilation** du backend WebTransport pour Android ARM64/API 21 ; elle ne constitue pas un smoke runtime Android WebTransport. + +## Frontières de dépendances + +Les graphes directs/inverses confirment que les backends realtime restent consommés uniquement par les launchers/outils techniques prévus. Aucun moteur ni gameplay ne dépend directement de `game-realtime-websocket-lib` ou `game-realtime-webtransport-lib`. + +## Conclusion RC + +La candidate est gelée, cohérente et validée sans correctif RC. La stable `0.3.5` peut se limiter aux changements mécaniques de version, changelog, roadmap, clôture du plan/index, historique RC, delta final et ajustement du prompt `0.3.6`. diff --git a/prompts/007-V0_3_6_START_PROMPT.md b/prompts/007-V0_3_6_START_PROMPT.md index a4e68ef..79febe7 100644 --- a/prompts/007-V0_3_6_START_PROMPT.md +++ b/prompts/007-V0_3_6_START_PROMPT.md @@ -1,5 +1,5 @@ - + # Prompt de démarrage `0.3.6` — consolidation des POC plateforme/réseau et baseline 0.4.x @@ -11,7 +11,7 @@ Partir uniquement de la version stable/taggée : v0.3.5 ``` -Ce prompt est préparé pendant la consolidation `0.3.5-beta.2`. Il doit être vérifié en RC puis ajusté mécaniquement à la stable. Ne pas l'utiliser comme preuve que `v0.3.5` existe avant la publication effective du tag. +Ce prompt accompagne la stable `0.3.5`. Il doit être utilisé uniquement après validation du delta stable, commit de release et publication effective du tag `v0.3.5`. L'archive ZIP téléchargée depuis ce tag devient alors la baseline autoritaire de la session `0.3.6`. Une archive annoncée comme téléchargement ZIP du tag Gitea est autoritaire conformément à `CMD-GIT-003` et `CMD-GIT-004`; l'absence de `.git` n'est pas un défaut.