v0.2.12-pre.001-fix.001

This commit is contained in:
2026-08-26 20:55:18 +02:00
parent 9a7eda1aa6
commit f7e4ea09bc
2 changed files with 263 additions and 20 deletions

View File

@@ -0,0 +1,154 @@
<!-- file: deltas/0.2.12/pre.001-fix.001.md -->
<!-- version: 1 -->
# Delta `0.2.12-pre.001-fix.001` — Forecast souple éditable et statuts
## 1. Base requise
Ce correctif s'applique exclusivement après :
```text
v0.2.11
+ 0.2.12-pre.001
```
Conformément à `VER-ID-008`, `workspace.package.version` reste :
```text
0.2.12-pre.1
```
Le correctif est strictement documentaire : il ne modifie aucun fichier de code, build, runtime, configuration exécutable ou migration.
## 2. Motif du correctif
Le forecast souple de `pre.001` avait été matérialisé sous forme de tableau. Cette représentation décrit correctement le découpage initial, mais elle est mal adaptée au suivi réel d'une release KSP : elle ne permet pas d'insérer naturellement les correctifs d'une tranche sous la prerelease concernée ni de faire évoluer son statut sans reconstruire le tableau.
Le précédent durable de `0.2.11` utilise déjà le format éditable attendu :
```text
### pre.NNN — responsabilité
**Statut : ...**
paragraphe de scope/gate
#### pre.NNN-fix.MMM — correction
**Statut : ...**
paragraphe de correction
```
Le présent fix applique cette convention à `0.2.12` sans modifier le contenu fonctionnel du forecast.
## 3. Correction du forecast
La section `Forecast souple recalibré` du plan `019` n'est plus un tableau.
Chaque tranche possède désormais :
- un titre `###` avec son identifiant et sa responsabilité ;
- un statut explicite ;
- un paragraphe décrivant scope, dépendances/gates et principaux hors-périmètre de la tranche ;
- la possibilité d'insérer ses correctifs directement en dessous sous forme de titres `####`.
`pre.001-fix.001` est lui-même matérialisé sous `pre.001` afin que le plan reflète dès maintenant la structure qui sera utilisée pendant toute la release.
## 4. Statuts initiaux
Le gate opérateur de `pre.001` fourni avant ce correctif est intégralement propre. Le plan marque donc :
```text
pre.001 réalisé ; gate opérateur complet PASS
pre.001-fix.001 réalisé
pre.002..015 planifié
rel.001 planifié
```
Ces statuts sont éditoriaux et pourront être révisés par les deltas ultérieurs sans rigidifier la prévision souple.
## 5. Forecast technique inchangé
Le correctif ne redécoupe pas la release. La trajectoire reste :
```text
pre.001 audit/sizing/maps/Config/security
pre.002 scaffold SOL Prices Desk
pre.003 Config composite + registry/resources atomiques + bootstrap
pre.004 runtime/registry rows/DTOs
pre.005 refresh row
pre.006 refresh many/all + in-flight/cooldown
pre.007 UX/polish/instrumentation
pre.008 hardening Price Desk
pre.009 Wallet composite/runtime Off-chain
pre.010 Wallet DTO/commands prix
pre.011 Wallet UI prix + non-régressions
pre.012 hardening cross-app
pre.013 gate technique/live + builds finaux
pre.014 réconciliation documentaire
pre.015 prompt suivant + CHANGELOG + ROADMAP
rel.001 publication stable
```
Les couloirs de fermeture restent donc distincts conformément à `VER-LIFECYCLE-006` à `VER-LIFECYCLE-012`.
## 6. Validation opérateur acquise avant le fix
Les résultats fournis par l'opérateur sur `0.2.12-pre.001` sont :
```text
cargo fmt --all PASS
python3 scripts/audit_rust_workspace_rules.py PASS / clean / 0 candidate export
python3 scripts/audit_markdown_tables.py ... deltas/0.2.12 PASS / 144 tables / 105 files
cargo check --workspace PASS
cargo clippy --workspace --all-targets PASS
cargo test --workspace PASS
```
Les tests explicitement `ignored` dans la sortie restent les smokes/live/probes opt-in déjà prévus par leurs contrats ; aucun échec n'est signalé.
## 7. Fichiers modifiés
```text
docs/plans/019-V0_2_12_SOL_PRICES_DESK_PLAN.md
```
Le header documentaire du plan passe de `version: 1` à `version: 2`.
## 8. Fichiers ajoutés
```text
deltas/0.2.12/pre.001-fix.001.md
```
## 9. Fichiers supprimés
```text
aucun
```
## 10. Fichiers volontairement inchangés
```text
Cargo.toml
deltas/0.2.12/pre.001.md
docs/validation/015-V0_2_12_SOL_PRICES_DESK.md
ROADMAP.md
CHANGELOG.md
prompts/017-V0_2_12_START_PROMPT.md
config/**
crates/**
```
Le delta `pre.001.md` publié n'est pas réécrit silencieusement. La validation durable conserve son rôle de matrice de gates ; le forecast détaillé et son historique de fixes restent propriétaires du plan de release.
## 11. Validations du correctif
Le correctif étant documentaire, le gate minimal attendu après application est :
```bash
python3 scripts/audit_markdown_tables.py README.md RULES.md ROADMAP.md CHANGELOG.md docs prompts crates deltas/0.2.12
```
L'audit structurel Rust peut être rejoué sans risque mais aucune commande Cargo n'est requise par ce seul changement documentaire. Un opérateur peut néanmoins refaire le gate complet s'il souhaite conserver une séquence uniforme entre livraisons.
## 12. Scope inchangé
Le correctif n'ajoute aucun scaffold, crate, commande Tauri, DTO, Config runtime, provider, refresh, capability, ressource packagée ou intégration Wallet. La prochaine responsabilité reste exclusivement `0.2.12-pre.002` : scaffold strict de `ksp-app-solprices-desk`.

View File

@@ -1,5 +1,5 @@
<!-- file: docs/plans/019-V0_2_12_SOL_PRICES_DESK_PLAN.md -->
<!-- version: 1 -->
<!-- version: 2 -->
# Plan `0.2.12` — SOL Prices Desk + intégration prix Wallet Desk
@@ -452,26 +452,115 @@ nouvelle crate API/UI partagée spéculative
## 19. Forecast souple recalibré
| Tranche | Responsabilité | Dépendances/gate |
|-----------|---------------------------------------------------------------------------------------------------|----------------------------------------------------|
| `pre.001` | audit/sizing, screen map, DTO/commands, Config, sécurité, Wallet map | présent document + validation |
| `pre.002` | scaffold `ksp-app-solprices-desk`, lib/bin/Tauri, splash/shell/logging, 1434/1435 | aucune logique prix |
| `pre.003` | composite Price Desk + registry Config + resources **atomiques des 3 apps** + bootstrap Off-chain | packaging Config vert |
| `pre.004` | MarketPriceRuntime, registry rows, DTOs, état initial/loading/empty | TS-RS + unit tests |
| `pre.005` | refresh row, observation exacte, availability/fraîcheur, erreur sûre | single refresh |
| `pre.006` | refresh selected/many/all, in-flight, ordre, cooldown/retry projection | batch déterministe |
| `pre.007` | UX table/responsive/instrumentation/polish Price Desk | aucun auto-refresh |
| `pre.008` | hardening Price Desk, desktop/security/package, parcours fonctionnel | Price Desk stable avant Wallet |
| `pre.009` | extension composite Wallet + dépendance/runtime Off-chain | non-régression bootstrap Wallet |
| `pre.010` | DTO/commands prix Wallet provider-neutral | aucun secret/wire |
| `pre.011` | panneau Dashboard Wallet + refresh + non-régression balance/VIEW/OWNER | aucune valorisation USD |
| `pre.012` | hardening cross-app, capabilities/resources/completeness | tests deux Desks |
| `pre.013` | gate technique/live final + builds Tauri finaux des apps modifiées | workspace + live composition |
| `pre.014` | réconciliation documentaire finale | plan/validation/README/USAGE |
| `pre.015` | préparation publication minimale | prompt suivant + CHANGELOG + ROADMAP + Cargo/delta |
| `rel.001` | publication stable `v0.2.12` | mécanique uniquement |
Chaque tranche technique vise **environ 15 à 20 minutes de travail effectif** lorsque le sujet s'y prête. Cette durée est une cible de granularité et non une durée maximale : build Tauri, live test, diagnostic ou difficulté réelle peuvent légitimement prolonger une tranche.
Chaque tranche intermédiaire reste dimensionnée à environ 1520 minutes effectives. Le point le plus risqué est `pre.003`; son scope reste néanmoins borné parce qu'il ne contient aucune UI prix et traite ensemble le seul invariant de packaging transversal. Le scope global reste raisonnablement clôturable dans une session de release KSP : aucun redécoupage n'est requis avant `pre.002`.
Le forecast reste volontairement souple. Une tranche peut être scindée, fusionnée ou réordonnée par delta si la réalité technique l'exige, à condition de préserver les responsabilités de clôture. Le nombre de prereleases prévu n'impose ni une session de conversation par tranche, ni une clôture artificielle sur le numéro initialement prévu.
Chaque prerelease possède un statut directement modifiable. Lorsqu'un correctif d'une tranche est nécessaire, il est ajouté sous la prerelease concernée avec un titre `#### pre.NNN-fix.MMM`, ce qui conserve l'historique de progression sans transformer le forecast en tableau.
### `pre.001` — Audit, sizing et cadrage SOL Prices Desk
**Statut : réalisé ; gate opérateur complet PASS.**
Audit/sizing de la base `v0.2.11`, screen map, DTO/command map, composition Config, threat model, stratégie de tests/build/live, intégration Wallet Desk et recalibrage de la release. Aucun scaffold Tauri ni code prix fonctionnel n'est avancé dans cette tranche.
#### `pre.001-fix.001` — Forecast souple éditable et statuts
**Statut : réalisé.**
Remplacement du forecast tabulaire par des sous-sections éditables avec statut explicite. Les futurs correctifs peuvent être insérés sous leur prerelease avec un titre `####`, sans modifier le découpage technique, le scope fonctionnel ni les responsabilités de clôture de `0.2.12`.
### `pre.002` — Scaffold `ksp-app-solprices-desk`
**Statut : planifié.**
Création du scaffold strict de `ksp-app-solprices-desk` : crate lib/bin, shell Tauri, frontend de base, splash, logging et paire de ports réservée `1434/1435`. La tranche n'implémente encore ni table prix, ni `MarketPriceService`, ni refresh réseau.
### `pre.003` — Composite Config et bootstrap Off-chain
**Statut : planifié.**
Ajout atomique du composite `cfg.composite.ksp-app-solprices-desk`, de son descriptor registry et des resources packagées nécessaires aux trois Desks concernés, puis bootstrap Config -> Off-chain Transport du nouveau Desk. Le gate exige que le packaging Config reste cohérent ; aucune UI prix n'est ajoutée ici.
### `pre.004` — Runtime prix, registry rows et DTOs
**Statut : planifié.**
Création du `MarketPriceRuntime` applicatif, projection provider-neutral du registry, DTOs TS-RS et états initiaux/loading/empty. Les providers restent opaques à l'UI et le prix exact traverse l'IPC sous forme de chaîne décimale, jamais comme vérité `f64`.
### `pre.005` — Refresh individuel
**Statut : planifié.**
Branchement du refresh d'une ligne via `MarketPriceService::refresh`, projection de l'observation exacte, de la fraîcheur et de l'availability, gestion d'erreur sûre et maintien du dernier état applicatif uniquement en mémoire backend.
### `pre.006` — Refresh multiple et global
**Statut : planifié.**
Ajout des refresh selected/many/all, suivi `in-flight`, ordre déterministe et projection des cooldown/retry deadlines sans scheduling consommateur. Aucun polling périodique, fallback automatique ou consensus provider n'est introduit.
### `pre.007` — UX et instrumentation SOL Prices Desk
**Statut : planifié.**
Finalisation de la table responsive, interactions utilisateur, états visuels, instrumentation frontend/backend et polish du Desk. La tranche reste manuelle : aucun auto-refresh ni persistance navigateur n'est ajouté.
### `pre.008` — Hardening SOL Prices Desk
**Statut : planifié.**
Durcissement des boundaries desktop/security/package, canaris de capabilities minimales, parcours fonctionnel complet et non-régression du bootstrap avant d'étendre Wallet Desk. Le Desk doit être stable isolément à la sortie de cette tranche.
### `pre.009` — Extension composite/runtime Wallet Desk
**Statut : planifié.**
Extension additive du composite Wallet Desk avec Off-chain Transport et intégration du runtime prix backend, sans modifier les contrats Wallet existants, le lifecycle VIEW/OWNER ni le chemin `getBalance`.
### `pre.010` — DTOs et commands prix Wallet Desk
**Statut : planifié.**
Ajout de la surface IPC provider-neutral nécessaire au Wallet Desk pour l'inventaire et le refresh prix. Aucun secret, URL provider, wire provider-specific ou valorisation USD du solde ne traverse cette surface.
### `pre.011` — Panneau prix Wallet Desk
**Statut : planifié.**
Ajout du panneau Dashboard prix avec refresh manuel et projection des observations/availability, puis vérification des non-régressions balance et autorisations VIEW/OWNER. Le solde SOL et les prix restent deux informations distinctes ; aucune valorisation USD canonique n'est calculée.
### `pre.012` — Hardening cross-app et complétude
**Statut : planifié.**
Revue croisée des deux Desks, capabilities/resources, contracts IPC, dépendances, sécurité et canaris de complétude. Cette tranche ferme le comportement applicatif avant le gate technique/live final.
### `pre.013` — Gate technique/live final
**Statut : planifié.**
Gate workspace complet, tests applicatifs pertinents, smoke live keyless de composition application -> Config -> `MarketPriceService`, graphes de dépendances utiles et builds Tauri finaux des applications modifiées. Cette tranche ne réconcilie pas README/USAGE ni les documents finaux.
### `pre.014` — Réconciliation documentaire finale
**Statut : planifié.**
Réconciliation du plan, de la validation, des README/USAGE et autres documents durables concernés avec le runtime réellement livré après le gate technique. Cette tranche ne finalise ni `CHANGELOG.md`, ni `ROADMAP.md`, ni le prompt suivant.
### `pre.015` — Préparation minimale de publication
**Statut : planifié.**
Préparation du prompt de la release suivante, de `CHANGELOG.md` et de `ROADMAP.md`, avec la mécanique Cargo/delta imposée par le workflow. Aucun code, test, plan, validation, README ou USAGE n'est rouvert dans cette dernière prerelease.
### `rel.001` — Publication stable `v0.2.12`
**Statut : planifié.**
Mécanique de publication stable uniquement, après validation de la dernière prerelease et vérification de la cohérence de release. Aucun défaut fonctionnel ou documentaire ne doit être absorbé par `rel.001`.
Le point le plus risqué reste `pre.003`; son scope est néanmoins borné parce qu'il ne contient aucune UI prix et traite ensemble le seul invariant de packaging transversal. Le scope global reste raisonnablement clôturable dans une session de release KSP : aucun redécoupage n'est requis avant `pre.002`.
## 20. Critères de sortie `pre.001`