0.3.16-pre.010
This commit is contained in:
692
prompts/036-V0_3_17_START_PROMPT.md
Normal file
692
prompts/036-V0_3_17_START_PROMPT.md
Normal file
@@ -0,0 +1,692 @@
|
||||
<!-- file: prompts/036-V0_3_17_START_PROMPT.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Prompt de démarrage `0.3.17` — résilience opérationnelle et cycle de vie des variantes RAW
|
||||
|
||||
## 1. Identité de la release et base exacte requise
|
||||
|
||||
Ouvrir **uniquement** `0.3.17` depuis la release stable/taggée :
|
||||
|
||||
```text
|
||||
v0.3.16
|
||||
```
|
||||
|
||||
Ne pas démarrer depuis `0.3.16-pre.*`, depuis une archive intermédiaire ou depuis un état de travail non taggé.
|
||||
|
||||
La première livraison attendue est :
|
||||
|
||||
```text
|
||||
0.3.17-pre.001
|
||||
```
|
||||
|
||||
`pre.001` est obligatoirement un gate de **lecture + audit Store API/Store/PostgreSQL/Worker/Transport/Config + audit du cycle de vie durable des variantes/conflits + audit des erreurs transient/terminal + brainstorming + sizing + planification**.
|
||||
|
||||
Il est interdit de commencer directement par une UI Store Desk, un moteur de retry générique, une migration opportuniste ou une boucle de reconnexion parallèle avant fermeture de ce gate.
|
||||
|
||||
## 2. Mission et résultat attendu
|
||||
|
||||
`0.3.16` a livré les fondations multi-variantes : comparaison fail-closed, sélecteur canonique, promotion strictement prouvée, conservation des variantes et quarantaine durable minimale sans arrêt du Worker.
|
||||
|
||||
`0.3.17` doit transformer cette fondation en mécanisme opérable et résilient côté backend/runtime, sans ouvrir encore l'UI Store Desk.
|
||||
|
||||
Le résultat cible est :
|
||||
|
||||
```text
|
||||
plusieurs représentations RAW durables
|
||||
-> inspection backend-neutral
|
||||
-> conflict case complet et revisionné
|
||||
-> participants/historique durable
|
||||
-> résolution explicite et concurrent-safe
|
||||
-> restore/reopen possibles selon contrat
|
||||
-> rétention/pins empêchant la perte d'une variante encore nécessaire
|
||||
|
||||
Store temporairement indisponible
|
||||
-> classification Transient / Terminal
|
||||
-> retry borné avec backpressure explicite
|
||||
-> aucun drop silencieux
|
||||
-> health/activity cohérentes
|
||||
-> cancellation/drain pendant backoff
|
||||
|
||||
Transport live temporairement indisponible
|
||||
-> mécanisme de reconnexion propriétaire réutilisé
|
||||
-> configuration bornée
|
||||
-> aucune confusion entre reconnexion, replay delivery et preuve de coverage
|
||||
```
|
||||
|
||||
La release doit fournir les contrats nécessaires à `0.3.18`, où `ksp-app-store-desk` exposera ensuite l'inspection et les actions opérateur.
|
||||
|
||||
## 3. Principes directeurs acquis
|
||||
|
||||
Les principes suivants sont déjà décidés et ne doivent pas être redébattus sans preuve nouvelle :
|
||||
|
||||
```text
|
||||
une divergence de données != une panne d'acquisition
|
||||
Store est l'autorité de convergence durable
|
||||
une provenance/provider n'est jamais une priorité canonique en soi
|
||||
content_hash seul n'est jamais une preuve d'égalité lorsque les bytes sont disponibles
|
||||
la dominance reste fail-closed
|
||||
seule une complétude explicitement prouvée autorise une promotion automatique
|
||||
un conflit non résolu conserve toutes les variantes nécessaires
|
||||
reconnexion != coverage
|
||||
retry != duplication silencieuse
|
||||
```
|
||||
|
||||
Le Worker ne doit pas réintroduire un arbitre run-local plus fort que le Store.
|
||||
|
||||
## 4. Sources de vérité internes obligatoires — ordre de lecture
|
||||
|
||||
### 4.1 Gouvernance générale
|
||||
|
||||
Lire intégralement, dans cet ordre :
|
||||
|
||||
```text
|
||||
RULES.md
|
||||
ROADMAP.md
|
||||
CHANGELOG.md
|
||||
docs/000-README.md
|
||||
|
||||
docs/rules/RULES_GENERAL.md
|
||||
docs/rules/RULES_KSP.md
|
||||
docs/rules/RULES_RUST.md
|
||||
docs/rules/RULES_DEPENDENCIES.md
|
||||
docs/rules/RULES_DOCUMENTATION.md
|
||||
docs/rules/FILE_CONTRACTS.md
|
||||
docs/rules/VERSION_WORKFLOW.md
|
||||
docs/rules/PROMPT_STRUCTURE.md
|
||||
```
|
||||
|
||||
Le présent prompt complète ces règles ; il ne les remplace pas.
|
||||
|
||||
Rappels bloquants :
|
||||
|
||||
```text
|
||||
Rust 2024
|
||||
unsafe interdit
|
||||
unwrap / expect / panic interdits selon les règles KSP
|
||||
retours explicites ; clippy::implicit_return deny
|
||||
#![warn(missing_docs)]
|
||||
#![deny(unreachable_pub)]
|
||||
#![forbid(unsafe_code)]
|
||||
|
||||
pas de pub mod
|
||||
pub/pub(crate) partagés reexportés via crate root
|
||||
accès partagés via crate::Item, y compris intra-crate
|
||||
unit tests sous unit_tests/
|
||||
integration tests sous tests/
|
||||
```
|
||||
|
||||
### 4.2 Handoff stable `0.3.16`
|
||||
|
||||
Lire intégralement :
|
||||
|
||||
```text
|
||||
prompts/035-V0_3_16_START_PROMPT.md
|
||||
docs/plans/037-V0_3_16_RAW_RESILIENCE_CONFLICT_HANDOFF.md
|
||||
docs/plans/038-V0_3_16_RAW_RESILIENCE_CONFLICT_PLAN.md
|
||||
docs/validation/033-V0_3_16_RAW_RESILIENCE_CONFLICT.md
|
||||
|
||||
deltas/0.3.16/pre.001.md
|
||||
...
|
||||
deltas/0.3.16/pre.010.md
|
||||
deltas/0.3.16/rel.001.md
|
||||
```
|
||||
|
||||
Les `pre.*-fix.*` réellement présents doivent également être lus lorsqu'ils corrigent une tranche citée.
|
||||
|
||||
Lorsque `rel.001.md` n'est pas encore présent dans l'archive fournie à l'ouverture de la session, **ne pas l'inventer** : vérifier d'abord que la base est bien le tag stable `v0.3.16` et utiliser le commit/tag comme autorité.
|
||||
|
||||
### 4.3 Store API et façade
|
||||
|
||||
Lire et auditer réellement :
|
||||
|
||||
```text
|
||||
crates/ksp-store-api/README.md
|
||||
crates/ksp-store-api/USAGE.md
|
||||
crates/ksp-store-api/src/
|
||||
crates/ksp-store-api/tests/
|
||||
|
||||
crates/ksp-store-lib/README.md
|
||||
crates/ksp-store-lib/USAGE.md
|
||||
crates/ksp-store-lib/src/
|
||||
crates/ksp-store-lib/tests/
|
||||
```
|
||||
|
||||
Auditer en particulier :
|
||||
|
||||
```text
|
||||
RawTransactionVariant*
|
||||
RawTransactionVariantComparison
|
||||
RawTransactionVariantWriteOutcome
|
||||
RawAcquisitionWriteOutcome
|
||||
capabilities RawTransaction existantes
|
||||
surface d'inspection actuelle
|
||||
codes d'erreur Store et backend-neutralité
|
||||
object safety et stabilité des traits publics
|
||||
rétention RawTransaction existante
|
||||
```
|
||||
|
||||
`0.3.17-pre.001` doit décider les DTOs/capabilities backend-neutral nécessaires pour :
|
||||
|
||||
```text
|
||||
lister/inspecter variantes
|
||||
lister/inspecter conflict cases
|
||||
lire l'historique de résolution
|
||||
résoudre/promouvoir/conserver/restaurer/réouvrir avec revision attendue
|
||||
classifier les erreurs Store Transient / Terminal sans exposer le backend physique
|
||||
```
|
||||
|
||||
Aucune API publique ne doit exposer `tokio-postgres`, SQL, row handles ou détails provider.
|
||||
|
||||
### 4.4 Backend PostgreSQL et migration V003
|
||||
|
||||
Lire :
|
||||
|
||||
```text
|
||||
crates/ksp-store-postgres-lib/README.md
|
||||
crates/ksp-store-postgres-lib/USAGE.md
|
||||
crates/ksp-store-postgres-lib/src/
|
||||
crates/ksp-store-postgres-lib/tests/
|
||||
crates/ksp-store-postgres-lib/unit_tests/
|
||||
crates/ksp-store-postgres-lib/resources/
|
||||
```
|
||||
|
||||
État acquis à préserver :
|
||||
|
||||
```text
|
||||
V000/V001/V002 figés
|
||||
V003 additive
|
||||
ksp_raw_transaction_variants
|
||||
ksp_raw_transaction_canonical_selectors
|
||||
ksp_raw_transaction_observation_variants
|
||||
ksp_raw_transaction_conflicts
|
||||
```
|
||||
|
||||
Le sélecteur canonique et la projection V001 doivent rester atomiquement cohérents.
|
||||
|
||||
Toute extension physique de `0.3.17` doit être additive, migrationnée et justifiée par un contrat métier réel. Ne pas modifier rétroactivement les ressources/checksums stables.
|
||||
|
||||
Auditer avant conception :
|
||||
|
||||
```text
|
||||
FOR UPDATE / ordre des locks
|
||||
revision compare-and-set
|
||||
participants d'un conflict case
|
||||
historique append-only
|
||||
reopen après résolution
|
||||
races ingestion <-> résolution
|
||||
races résolution <-> rétention
|
||||
rollback transactionnel
|
||||
idempotence des actions opérateur
|
||||
```
|
||||
|
||||
### 4.5 Common RAW et règles de comparaison
|
||||
|
||||
Lire :
|
||||
|
||||
```text
|
||||
crates/ksp-raw-transaction-lib/README.md
|
||||
crates/ksp-raw-transaction-lib/USAGE.md
|
||||
crates/ksp-raw-transaction-lib/src/
|
||||
crates/ksp-raw-transaction-lib/tests/
|
||||
```
|
||||
|
||||
Le comparateur `0.3.16` reste l'autorité de classification automatique. Ne pas élargir la dominance pour faciliter l'UI ou réduire artificiellement le nombre de conflits.
|
||||
|
||||
État acquis :
|
||||
|
||||
```text
|
||||
Exact
|
||||
CompatibleLessComplete
|
||||
CompatibleMoreComplete
|
||||
Conflict
|
||||
Incomparable
|
||||
```
|
||||
|
||||
La seule dominance actuellement prouvée concerne les formes strictes de troncature `logMessages` documentées. Les autres différences restent fail-closed tant qu'une preuve spécifique n'existe pas.
|
||||
|
||||
### 4.6 Worker live
|
||||
|
||||
Lire :
|
||||
|
||||
```text
|
||||
crates/ksp-worker-api/
|
||||
crates/ksp-worker-raw-transaction-ingest-lib/README.md
|
||||
crates/ksp-worker-raw-transaction-ingest-lib/USAGE.md
|
||||
crates/ksp-worker-raw-transaction-ingest-lib/src/
|
||||
crates/ksp-worker-raw-transaction-ingest-lib/tests/
|
||||
crates/ksp-worker-raw-transaction-ingest-lib/unit_tests/
|
||||
```
|
||||
|
||||
État acquis :
|
||||
|
||||
```text
|
||||
chaque acquisition atteint le Store
|
||||
convergence run-local = sérialisation seulement
|
||||
QuarantinedConflict = succès durable non terminal
|
||||
Worker reste Running
|
||||
health devient Degraded
|
||||
legacy ERROR_CODE_RAW_CONFLICT reste terminal uniquement comme compatibilité backend ancien
|
||||
```
|
||||
|
||||
`0.3.17` doit ajouter le comportement Store transient sans perdre cet invariant.
|
||||
|
||||
La politique de retry doit expliciter :
|
||||
|
||||
```text
|
||||
quels codes/classes sont Transient
|
||||
quels codes/classes sont Terminal
|
||||
borne de tentatives ou budget temporel
|
||||
backoff borné
|
||||
jitter éventuel et ownership
|
||||
backpressure amont
|
||||
état Blocked/Degraded/Unhealthy attendu
|
||||
cancellation pendant sleep/backoff
|
||||
shutdown/drain avec tentative en vol
|
||||
absence de double persistence après résultat durable
|
||||
```
|
||||
|
||||
### 4.7 Transport et Config
|
||||
|
||||
Lire :
|
||||
|
||||
```text
|
||||
crates/ksp-onchain-transport-lib/README.md
|
||||
crates/ksp-onchain-transport-lib/USAGE.md
|
||||
crates/ksp-onchain-transport-lib/src/
|
||||
crates/ksp-onchain-transport-lib/tests/
|
||||
|
||||
crates/ksp-config-lib/README.md
|
||||
crates/ksp-config-lib/USAGE.md
|
||||
crates/ksp-config-lib/src/
|
||||
crates/ksp-config-lib/tests/
|
||||
```
|
||||
|
||||
Réutiliser les mécanismes propriétaires actuels HTTP/WebSocket/Yellowstone. Ne pas créer une seconde pile réseau dans le Worker.
|
||||
|
||||
La reconnexion configurable doit conserver la séparation :
|
||||
|
||||
```text
|
||||
reconnect attempt
|
||||
session resume / from_slot / ReplayInfo lorsque disponible
|
||||
replay delivery
|
||||
coverage proof
|
||||
```
|
||||
|
||||
Aucun de ces éléments ne vaut automatiquement un autre.
|
||||
|
||||
### 4.8 Job Backfill existant
|
||||
|
||||
Lire au minimum :
|
||||
|
||||
```text
|
||||
crates/ksp-job-backfill-lib/README.md
|
||||
crates/ksp-job-backfill-lib/USAGE.md
|
||||
crates/ksp-job-backfill-lib/src/persistence.rs
|
||||
crates/ksp-job-backfill-lib/unit_tests/persistence.rs
|
||||
```
|
||||
|
||||
Le Job Backfill reste un producteur indépendant et doit continuer de fonctionner avec les évolutions Store. `0.3.17` n'est pas la release du Backfill multi-route/multi-stratégie.
|
||||
|
||||
### 4.9 Architecture et références durables
|
||||
|
||||
Lire :
|
||||
|
||||
```text
|
||||
docs/architecture/004-COMPONENT_INVENTORY.md
|
||||
docs/architecture/009-ACQUISITION_WORKERS_AND_JOBS.md
|
||||
docs/architecture/011-RAW_TRANSACTION_ACQUISITION.md
|
||||
docs/validation/033-V0_3_16_RAW_RESILIENCE_CONFLICT.md
|
||||
```
|
||||
|
||||
Ces documents décrivent l'état réconcilié à la fermeture de `0.3.16` et doivent servir de baseline, pas les anciens objectifs devenus obsolètes du prompt `035`.
|
||||
|
||||
## 5. Sources externes normatives à réauditer en `pre.001`
|
||||
|
||||
Réauditer uniquement les sources officielles ou upstream réellement nécessaires :
|
||||
|
||||
```text
|
||||
PostgreSQL : transactions, row locking, deadlocks, serialization failures et SQLSTATE
|
||||
Tokio PostgreSQL : erreurs de connexion/IO/DB et possibilités de classification sûres
|
||||
Solana JSON-RPC/WebSocket : comportement de session/subscription/reconnect applicable
|
||||
Yellowstone gRPC upstream : lifecycle de stream, fermeture, reprise/from_slot/ReplayInfo applicable
|
||||
Tokio/Tonic/Tungstenite utilisés par les crates actuelles : cancellation/reconnect lorsque pertinent
|
||||
```
|
||||
|
||||
La réaudition doit distinguer :
|
||||
|
||||
```text
|
||||
fait documenté upstream
|
||||
comportement observé par KSP
|
||||
politique KSP choisie
|
||||
```
|
||||
|
||||
Ne jamais transformer un message d'erreur provider arbitraire en contrat public KSP.
|
||||
|
||||
## 6. État validé de `0.3.16` à préserver
|
||||
|
||||
À l'ouverture de `0.3.17`, considérer comme acquis uniquement ce qui est présent dans le tag `v0.3.16` et confirmé par ses deltas/validation.
|
||||
|
||||
La baseline attendue comprend :
|
||||
|
||||
```text
|
||||
Store API comparator backend-neutral
|
||||
V003 additive et historique V000/V001/V002 intact
|
||||
variants durables
|
||||
canonical selector revisionné
|
||||
observation -> variant mapping
|
||||
conflict case minimal durable
|
||||
promotion CompatibleMoreComplete atomique
|
||||
ancien canonique conservé comme variante
|
||||
Conflict/Incomparable quarantinés sans mutation canonique
|
||||
Worker Running/Degraded après QuarantinedConflict
|
||||
Backfill projection Conflict compatible
|
||||
PostgreSQL live proof exécutée sur PostgreSQL 17
|
||||
```
|
||||
|
||||
Le gate final de `0.3.16` doit être lu dans `docs/validation/033-V0_3_16_RAW_RESILIENCE_CONFLICT.md` et dans les deltas de fermeture ; ne pas inventer un résultat non enregistré.
|
||||
|
||||
## 7. Cycle de vie complet des conflict cases
|
||||
|
||||
Le modèle minimal `0.3.16` ne suffit pas à une résolution opérateur complète.
|
||||
|
||||
`pre.001` doit cadrer précisément :
|
||||
|
||||
```text
|
||||
identité stable du conflict case
|
||||
participants/variantes concernées
|
||||
status Open / Resolved et éventuels états supplémentaires réellement nécessaires
|
||||
reason/relation conservées
|
||||
revision monotone
|
||||
resolved canonical variant
|
||||
actor/reason opérateur si un contrat KSP sûr le justifie
|
||||
journal append-only de transitions
|
||||
reopen quand une nouvelle divergence survient
|
||||
idempotence d'une résolution répétée
|
||||
stale revision explicite
|
||||
```
|
||||
|
||||
Une résolution ne doit jamais détruire immédiatement la variante perdante si elle reste nécessaire à l'historique, au rollback ou à un conflict case ouvert.
|
||||
|
||||
## 8. Actions et concurrence
|
||||
|
||||
Les actions opérateur futures de `0.3.18` doivent être rendues sûres par les contrats backend de `0.3.17`.
|
||||
|
||||
Auditer et définir au minimum :
|
||||
|
||||
```text
|
||||
promote candidate
|
||||
keep current canonical
|
||||
restore previous variant
|
||||
resolve conflict
|
||||
reopen conflict
|
||||
```
|
||||
|
||||
Chaque action mutable doit avoir une sémantique de revision attendue ou équivalent compare-and-set. Une action stale doit échouer explicitement sans écraser une décision concurrente.
|
||||
|
||||
Les races à couvrir incluent :
|
||||
|
||||
```text
|
||||
ingestion -> nouvelle variante pendant résolution
|
||||
promotion automatique -> résolution manuelle concurrente
|
||||
résolution A -> résolution B concurrente
|
||||
réouverture -> résolution précédente
|
||||
rétention/purge -> variante encore référencée
|
||||
force rehydrate -> identité existante avec bytes exacts/différents
|
||||
```
|
||||
|
||||
## 9. Rétention, pins et rollback
|
||||
|
||||
La rétention doit être définie avant tout purge de variante.
|
||||
|
||||
Principe :
|
||||
|
||||
```text
|
||||
une variante nécessaire à un selector, conflict case ouvert, historique de résolution ou rollback autorisé ne peut pas disparaître silencieusement
|
||||
```
|
||||
|
||||
`pre.001` doit décider :
|
||||
|
||||
```text
|
||||
quels objets pin une variante
|
||||
quand un pin peut être relâché
|
||||
archive vs purge
|
||||
interaction avec RawRetentionState V001
|
||||
interaction avec ForceRehydrate
|
||||
restore depuis variante locale conservée
|
||||
comportement si une ancienne variante est déjà physiquement absente
|
||||
```
|
||||
|
||||
Le réseau n'est pas un mécanisme normal de rollback d'une variante précédemment connue.
|
||||
|
||||
## 10. Classification Store `Transient / Terminal`
|
||||
|
||||
La classification doit être backend-neutral à la frontière publique tout en restant suffisamment précise pour le runtime.
|
||||
|
||||
Ne pas classifier par texte libre d'erreur.
|
||||
|
||||
`pre.001` doit produire une matrice au moins pour :
|
||||
|
||||
```text
|
||||
connexion indisponible / reset
|
||||
pool temporairement indisponible
|
||||
timeout/cancellation locale
|
||||
deadlock/serialization retryable si applicable
|
||||
constraint/data-invalid
|
||||
migration/schema mismatch
|
||||
network mismatch KSP
|
||||
stale revision
|
||||
retention conflict
|
||||
secret/config invalid
|
||||
```
|
||||
|
||||
La classe publique doit être stable et sûre ; le backend conserve les détails physiques privés.
|
||||
|
||||
## 11. Retry Store, backpressure et état `Blocked`
|
||||
|
||||
Le retry appartient au Worker/runtime consumer, pas au backend PostgreSQL sous forme de boucle cachée illimitée.
|
||||
|
||||
Le Store backend peut classifier et retourner ; le Worker décide une politique bornée selon les contrats KSP.
|
||||
|
||||
Le design doit éviter :
|
||||
|
||||
```text
|
||||
queue mémoire non bornée
|
||||
retry storm
|
||||
sleep non cancellable
|
||||
perte silencieuse après exhaustion
|
||||
health Healthy pendant une impossibilité persistante de commit
|
||||
double écriture après succès ambigu sans idempotence
|
||||
```
|
||||
|
||||
La relation avec les limites actuelles `in_flight`/admission doit être explicitement testée.
|
||||
|
||||
## 12. Reconnexion Transport configurable
|
||||
|
||||
`0.3.17` étend les mécanismes existants ; il ne crée pas une abstraction universelle inventée au-dessus de toutes les routes.
|
||||
|
||||
La configuration doit être bornée et cohérente avec les contrats Config existants :
|
||||
|
||||
```text
|
||||
attempt/backoff limits
|
||||
connect/session deadlines
|
||||
stop preemption
|
||||
source supervision
|
||||
replay/from_slot lorsque réellement supporté
|
||||
```
|
||||
|
||||
Une reconnexion réussie ne ferme aucun gap à elle seule. Les contrats `0.3.14` de coverage/gap repair restent autoritaires.
|
||||
|
||||
## 13. Frontières de crates et hors UI
|
||||
|
||||
Frontières cibles :
|
||||
|
||||
```text
|
||||
ksp-store-api
|
||||
DTOs/capabilities backend-neutral
|
||||
|
||||
ksp-store-postgres-lib
|
||||
SQL, locks, transactions, migrations, classification physique
|
||||
|
||||
ksp-store-lib
|
||||
façade et dispatch backend-neutral
|
||||
|
||||
ksp-worker-raw-transaction-ingest-lib
|
||||
politique retry/backpressure/health/cancellation
|
||||
|
||||
ksp-onchain-transport-lib
|
||||
sessions/reconnect/replay transport-owned
|
||||
|
||||
ksp-config-lib
|
||||
configuration bornée des mécanismes existants
|
||||
```
|
||||
|
||||
`ksp-app-store-desk` n'est pas à développer dans `0.3.17`. Seuls les contrats nécessaires à sa future utilisation doivent être stabilisés.
|
||||
|
||||
## 14. Sécurité et redaction
|
||||
|
||||
Ne jamais exposer dans erreurs/logs/snapshots publics :
|
||||
|
||||
```text
|
||||
URI PostgreSQL
|
||||
password/token/API key
|
||||
endpoint complet lorsque sa publication n'est pas nécessaire
|
||||
payload RAW
|
||||
signature brute si les règles de surface l'interdisent
|
||||
server error arbitraire
|
||||
SQL complet
|
||||
row/backend handle
|
||||
```
|
||||
|
||||
Les diagnostics de conflits existants restent bornés et structurels.
|
||||
|
||||
Toute nouvelle action de résolution doit journaliser seulement les identifiants/codes sûrs nécessaires à l'audit.
|
||||
|
||||
## 15. Première mission `pre.001` — audit, brainstorming et sizing
|
||||
|
||||
Avant toute implémentation lourde :
|
||||
|
||||
1. vérifier que la base est exactement `v0.3.16` ;
|
||||
2. lire toutes les sources internes de la section 4 ;
|
||||
3. réauditer les sources externes pertinentes de la section 5 ;
|
||||
4. inventorier les contrats publics actuels Store/Worker/Transport/Config ;
|
||||
5. produire le modèle conceptuel complet conflict case / participants / history / resolution / reopen ;
|
||||
6. produire la stratégie de revision/CAS et la matrice des races ;
|
||||
7. produire la politique de rétention/pins/rollback/ForceRehydrate ;
|
||||
8. produire la classification `Transient / Terminal` et son ownership ;
|
||||
9. produire la politique Worker de retry/backpressure/Blocked/cancellation ;
|
||||
10. produire la politique Transport reconnect/config sans confondre coverage ;
|
||||
11. auditer la compatibilité du Job Backfill existant ;
|
||||
12. dimensionner les migrations/tests/live proofs ;
|
||||
13. créer ou réviser le plan `0.3.17` avec prereleases bornées ;
|
||||
14. publier seulement ensuite `0.3.17-pre.001`.
|
||||
|
||||
Critères de sortie `pre.001` :
|
||||
|
||||
```text
|
||||
contrats Store API proposés et bornés
|
||||
modèle conflict lifecycle validé
|
||||
revision/race semantics validées
|
||||
rétention/pins validés
|
||||
classification Transient/Terminal validée
|
||||
retry ownership et bornes validés
|
||||
reconnect ownership et bornes validés
|
||||
compatibilité Backfill explicitée
|
||||
migration strategy validée
|
||||
preuves live nécessaires identifiées
|
||||
prévision souple des prereleases publiée
|
||||
hors-périmètre explicite
|
||||
```
|
||||
|
||||
## 16. Prévision souple initiale des prereleases
|
||||
|
||||
Cette trajectoire provient du plan réconcilié `0.3.16`. Elle doit être réauditée en `pre.001` et peut être subdivisée si le sizing l'exige.
|
||||
|
||||
```text
|
||||
pre.001 audit + contrats Store API inspection/résolution + classification Transient/Terminal + plan
|
||||
pre.002 conflict cases complets : participants, résolution, reopen, historique append-only, races
|
||||
pre.003 rétention des variantes : archive, pins, purge guards, rollback local, ForceRehydrate
|
||||
pre.004 ksp-store-lib : inspection/historique/actions backend-neutral + compatibilité Backfill
|
||||
pre.005 Worker : Store retry/backpressure/Blocked, exhaustion, cancellation et drain pendant backoff
|
||||
pre.006 Transport/Config : reconnect WebSocket/Yellowstone configurable sur mécanismes existants
|
||||
pre.007 hardening cross-layer + preuves live ciblées Store outage/recovery, retry, reconnect, concurrence
|
||||
pre.008 réconciliation documentaire finale
|
||||
pre.009 préparation de publication : CHANGELOG + ROADMAP + prompt 0.3.18
|
||||
rel.001 publication stable mécanique
|
||||
```
|
||||
|
||||
Ne jamais fusionner artificiellement les couloirs de fermeture. Les règles `VER-LIFECYCLE-*` restent autoritaires si le nombre de tranches évolue.
|
||||
|
||||
## 17. Hors périmètre de `0.3.17`
|
||||
|
||||
Ne pas inclure :
|
||||
|
||||
```text
|
||||
frontend/backend Tauri Store Desk de résolution -> 0.3.18
|
||||
backfill multi-route/multi-stratégie -> 0.3.19
|
||||
adaptation Backfill Desk -> 0.3.20
|
||||
RAW -> STRUCTURAL
|
||||
persistence STRUCTURAL
|
||||
DECODED / DOMAIN
|
||||
majority voting provider
|
||||
priorité provider
|
||||
fusion heuristique de JSON arbitraire
|
||||
retry illimité caché dans le backend Store
|
||||
nouvelle pile réseau Worker parallèle à Transport
|
||||
nouvelle dépendance Worker <-> Backfill
|
||||
```
|
||||
|
||||
## 18. Versionnement, deltas, validation et instruction d'ouverture
|
||||
|
||||
Respecter strictement `docs/rules/VERSION_WORKFLOW.md`.
|
||||
|
||||
Les deltas de `0.3.17` utilisent :
|
||||
|
||||
```text
|
||||
ksp-general-0.3.17-pre.NNN.zip
|
||||
ksp-general-0.3.17-pre.NNN-fix.NNN.zip
|
||||
```
|
||||
|
||||
Après toute modification Rust :
|
||||
|
||||
```bash
|
||||
cargo fmt --all
|
||||
cargo fmt --all -- --check
|
||||
python3 scripts/audit_rust_workspace_rules.py
|
||||
cargo check --workspace
|
||||
cargo clippy --workspace --all-targets --all-features -- -D warnings
|
||||
```
|
||||
|
||||
Pour tout Markdown touché :
|
||||
|
||||
```bash
|
||||
python3 scripts/audit_markdown_tables.py README.md RULES.md ROADMAP.md CHANGELOG.md docs prompts crates deltas
|
||||
```
|
||||
|
||||
Les tests ciblés sont préférés pendant le développement ; les gates complets et live proofs sont réservés aux tranches prévues et ne sont déclarés PASS que lorsqu'ils ont réellement été exécutés.
|
||||
|
||||
Les tests PostgreSQL live qui lisent une URI dédiée sur `stdin` doivent continuer à ne jamais l'échoer ni la conserver dans les logs/deltas.
|
||||
|
||||
Pour les applications Desk, ne pas utiliser `npm run build` comme gate manuel. `0.3.17` ne développe normalement pas la Store Desk ; si un smoke Tauri devenait nécessaire pour une compatibilité mécanique, utiliser le workflow Tauri/Vite KSP prévu par les règles.
|
||||
|
||||
### Instruction d'ouverture de la prochaine session
|
||||
|
||||
Commencer par :
|
||||
|
||||
```text
|
||||
1. vérifier que la base est exactement le tag stable v0.3.16 ;
|
||||
2. lire toutes les sources internes de la section 4 dans l'ordre ;
|
||||
3. réauditer les sources externes pertinentes de la section 5 ;
|
||||
4. exécuter la mission pre.001 de la section 15 ;
|
||||
5. produire le plan/sizing avant toute migration ou développement lourd.
|
||||
```
|
||||
|
||||
Ne pas commencer par l'UI Store Desk, par une boucle de retry ou par une migration avant d'avoir fermé le gate `pre.001`.
|
||||
|
||||
La trajectoire suivante est :
|
||||
|
||||
```text
|
||||
0.3.17 résilience opérationnelle + cycle de vie des variantes
|
||||
0.3.18 Store Desk inspection/résolution des variantes et conflits
|
||||
0.3.19 Backfill multi-route/multi-stratégie
|
||||
0.3.20 Backfill Desk correspondant
|
||||
```
|
||||
Reference in New Issue
Block a user