v0.3.6-pre.005

This commit is contained in:
2026-09-01 13:00:21 +02:00
parent 478548b7f4
commit 4fdeab4d67
18 changed files with 2132 additions and 70 deletions

View File

@@ -1,5 +1,5 @@
<!-- file: docs/validation/023-V0_3_6_JOB_API_BACKFILL.md -->
<!-- version: 7 -->
<!-- version: 8 -->
# Validation v0.3.6 — Job API et premier backfill RAW
@@ -55,15 +55,15 @@ Aucune entrée absolue, traversée, avec séparateur inversé ou lien symbolique
- [X] Les arbres Cargo normal/features de ce gate confirment que `ksp-job-api` dépend toujours uniquement de `ksp-core-lib` et n'ouvre aucune feature.
- [X] `pre.003-fix.001` remplace uniquement la construction via le re-export racine par le constructeur privé directement visible dans le module `notification`, sans changer l'API publique ni le nombre de tests.
- [X] Gate opérateur de `pre.003-fix.001` : `cargo fmt`, audits Rust/Markdown, `cargo check`, Clippy, treize unitaires + quatorze canaries `ksp-job-api` et arbres Cargo normal/features verts.
- [X] `pre.004` matérialise une voie observée additive de `getTransaction` sans modifier le client, les settings, le routage ni la politique de retry Transport.
- [X] Le workspace compte 14 crates et aucune crate Job au point de départ.
- [X] `pre.004` matérialise une voie observée additive de `getTransaction` sans modifier le client, les settings, le routage ni la politique de retry Transport ; gate opérateur vert.
- [X] Le workspace comptait 14 crates avant `pre.005`; `ksp-job-backfill-lib` devient la 15e crate membre sans créer d'exécutable ni de Worker.
## 4. Autorités et cohérence documentaire
- [X] `RULES.md` et la hiérarchie documentaire ont été appliqués.
- [X] Les chemins canoniques réels sous `docs/rules/` ont été retenus lorsque le prompt utilisait un chemin abrégé.
- [X] Le nom fixé est `ksp-job-backfill-lib`.
- [X] Les occurrences historiques de `ksp-job-backfill` sont identifiées pour réconciliation avant fermeture.
- [X] Les documents d'architecture courants sont réconciliés sur `ksp-job-backfill-lib`; les anciens plans historiques restent historiques et ne sont pas réécrits.
- [X] `ksp-job-api` et `ksp-job-backfill-lib` sont obligatoires en parallèle dans la release finale.
- [X] Worker API, application et pipeline RAW partagé sont explicitement hors v0.3.6.
- [ ] Architecture, README, roadmap et contrats finaux réconciliés avant publication.
@@ -97,6 +97,8 @@ Aucune entrée absolue, traversée, avec séparateur inversé ou lien symbolique
## 7. Admission et portées
`pre.005` matérialise les contrats et leurs tests, mais les critères comportementaux ci-dessous restent ouverts jusqu'au gate Cargo opérateur. L'identité candidate est auditée statiquement comme `(RawNetworkId, signature)` ; rôle HTTP, provider, endpoint et protocole ne participent ni à cette identité ni au fingerprint sémantique du scope.
- [ ] `LatestAddress`, `BeforeAddress`, `AfterAddress` et `ExplicitSignatures` couverts.
- [ ] Adresse validée par le type Core existant.
- [ ] Signature Base58 décodée vers exactement 64 octets.
@@ -123,8 +125,8 @@ Aucune entrée absolue, traversée, avec séparateur inversé ou lien symbolique
## 9. Acquisition Transport et retry
- [ ] Les wrappers typés officiels restent l'unique chemin RPC.
- [X] Retour observé additif de `getTransaction` matérialisé ; gate opérateur à rejouer.
- [X] Canarie déterministe : un `429` sur le premier endpoint reroute et rapporte le second provider/endpoint victorieux ; gate opérateur à rejouer.
- [X] Retour observé additif de `getTransaction` matérialisé et gate opérateur vert.
- [X] Canarie déterministe : un `429` sur le premier endpoint reroute et rapporte le second provider/endpoint victorieux ; gate opérateur vert.
- [X] `HttpObservedValue<T>` ne contient que valeur typée, endpoint sûr et provider ; URL, headers et body HTTP brut restent privés.
- [ ] Aucun retry, pacing ou sélection d'endpoint dans Job.
- [ ] Aucune détection d'erreur par chaîne.
@@ -132,6 +134,8 @@ Aucune entrée absolue, traversée, avec séparateur inversé ou lien symbolique
## 10. RAW v1 et provenance
- [X] Identité logique future auditée : transaction/signature scoping par `RawNetworkId`, jamais par rôle/provider/endpoint/protocole.
- [X] Le Store PostgreSQL actuel est mono-réseau via `ksp_store_identity`; un futur backend multi-réseaux devra préserver `(network, signature)` par clé/partition équivalente.
- [ ] Format `ksp.solana.raw_transaction`, version `1`, figé.
- [ ] `getTransaction` demandé en `base64` avec version maximale `0`.
- [ ] Bytes JSON compacts déterministes et golden tests stables.
@@ -183,12 +187,13 @@ Aucune entrée absolue, traversée, avec séparateur inversé ou lien symbolique
## 14. Firewalls et qualité Rust
- [X] `ksp-job-api` dépend exactement de Core et n'a aucune feature, dev-dependency ou build-dependency.
- [ ] `ksp-job-backfill-lib` ne dépend pas de Config, App, Wallet, Program, Interface ou backend Store.
- [X] `ksp-job-backfill-lib` ne dépend pas de Config, App, Wallet, Program, Interface ou backend Store ; `ksp-store-lib` est consommée avec `default-features = false`.
- [ ] Aucun retour de dépendance vers Job depuis les couches basses.
- [ ] Versions et features des nouvelles dépendances auditées avant ajout.
- [X] Versions/features auditées : aucune nouvelle version externe ; `sha2` et `tokio` réutilisent les entrées workspace existantes, Tokio étant dev-only en `pre.005`.
- [X] `pre.005` matérialise 11 tests unitaires et 6 canaries dintégration ; leur exécution Cargo reste ouverte jusquau gate opérateur.
- [ ] `cargo fmt --all -- --check` vert.
- [X] `scripts/audit_rust_workspace_rules.py` vert sur `pre.003` dans l'environnement d'assemblage.
- [X] `scripts/audit_markdown_tables.py` vert sur `pre.003` dans l'environnement d'assemblage (264 tables / 144 fichiers).
- [X] `scripts/audit_rust_workspace_rules.py` vert sur `pre.005` dans l'environnement d'assemblage.
- [X] `scripts/audit_markdown_tables.py` vert sur `pre.005` dans l'environnement d'assemblage (264 tables / 147 fichiers, delta inclus).
- [X] Contrats de fichiers de `FILE_CONTRACTS.md` vérifiés sur chaque ajout de `pre.001`.
- [ ] `cargo check --workspace` vert.
- [ ] `cargo clippy --workspace --all-targets --all-features -- -D warnings` vert.