diff --git a/Cargo.toml b/Cargo.toml index 6c8ca3d..d295fa6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,12 +1,12 @@ # file: Cargo.toml -# version: 411 +# version: 412 [workspace] resolver = "3" members = ["crates/ksp-app-config-desk", "crates/ksp-app-solprices-desk", "crates/ksp-app-wallet-desk", "crates/ksp-config-lib", "crates/ksp-core-lib", "crates/ksp-interface-lib", "crates/ksp-job-api", "crates/ksp-job-backfill-lib", "crates/ksp-logging-lib", "crates/ksp-offchain-transport-lib", "crates/ksp-onchain-transport-lib", "crates/ksp-program-api", "crates/ksp-store-api", "crates/ksp-store-lib", "crates/ksp-store-postgres-lib", "crates/ksp-wallet-lib"] [workspace.package] -version = "0.3.6-pre.10" +version = "0.3.6-pre.11" edition = "2024" license = "MIT" repository = "https://git.sasedev.com/Sasedev/khadhroony-solana-project" diff --git a/deltas/0.3.6/pre.011.md b/deltas/0.3.6/pre.011.md new file mode 100644 index 0000000..f94b254 --- /dev/null +++ b/deltas/0.3.6/pre.011.md @@ -0,0 +1,106 @@ + + + +# Delta `0.3.6-pre.011` — gate technique final Job/Backfill + +## 1. Base requise + +Base directe attendue : + +```text +0.3.6-pre.10 +``` + +Le gate opérateur de `pre.010` est intégralement vert : audits Rust/Markdown, `cargo check --workspace`, Clippy `--workspace --all-targets`, 47 tests unitaires et 20 canaries d'intégration de `ksp-job-backfill-lib` passent sans warning. + +## 2. Objectif + +Ouvrir exclusivement le gate technique final de `0.3.6` sans nouveau développement fonctionnel ni réconciliation documentaire durable. + +Cette tranche ne modifie aucun : + +```text +src/** +test fonctionnel +manifest de crate +dépendance ou feature +README/USAGE +CHANGELOG/ROADMAP +prompt suivant +``` + +## 3. Version + +```text +workspace.package.version = 0.3.6-pre.11 +``` + +Aucune autre propriété Cargo n'est modifiée. + +## 4. Gate technique final attendu + +```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 deltas/0.3.6 + +cargo check --workspace +cargo clippy --workspace --all-targets --all-features -- -D warnings +cargo test --workspace --all-targets --all-features + +cargo tree -p ksp-job-api --edges normal +cargo tree -p ksp-job-api -e features +cargo tree -p ksp-job-backfill-lib --edges normal +cargo tree -p ksp-job-backfill-lib -e features +cargo tree --duplicates +``` + +Les arbres Cargo sont rejoués ici au titre de la clôture technique finale. Un `cargo clean` préalable peut être utilisé ponctuellement par l'opérateur pour purger `target/` et forcer une reconstruction froide ; il constitue une raison valable de réexaminer les arbres, mais n'est ni automatique ni requis avant `cargo tree`. + +## 5. Smoke live + +Le smoke PostgreSQL reste opt-in et conditionnel à une URI dédiée explicitement disponible. Aucun environnement live n'étant fourni dans cette tranche, son absence ne bloque pas la preuve déterministe et aucun résultat live n'est revendiqué. + +## 6. Fichiers ajoutés + +```text +deltas/0.3.6/pre.011.md +``` + +## 7. Fichiers modifiés + +```text +Cargo.toml +docs/plans/027-V0_3_6_JOB_API_BACKFILL_PLAN.md +docs/validation/023-V0_3_6_JOB_API_BACKFILL.md +``` + +## 8. Fichiers supprimés + +Aucun. + +## 9. Validations exécutées dans l'environnement de génération + +```text +python3 scripts/audit_rust_workspace_rules.py +python3 scripts/audit_markdown_tables.py README.md RULES.md ROADMAP.md CHANGELOG.md docs prompts crates deltas/0.3.6 +contrôle statique version/payload +contrôle des versions d'en-tête +replay exact de l'archive sur la base pre.010 +``` + +Cargo/rustc/rustfmt ne sont pas disponibles dans l'environnement de génération ; aucun gate Cargo de `pre.011` n'est déclaré PASS ici. + +## 10. Questions ouvertes + +Aucune question de design. Tout défaut découvert par ce gate ouvre `pre.011-fix.NNN` avant la réconciliation documentaire. + +## 11. Suite + +Après gate technique final entièrement vert : + +```text +0.3.6-pre.012 — réconciliation documentaire finale +0.3.6-pre.013 — préparation publication minimale + prompt 0.3.7 +0.3.6-rel.001 — publication stable +``` diff --git a/docs/plans/027-V0_3_6_JOB_API_BACKFILL_PLAN.md b/docs/plans/027-V0_3_6_JOB_API_BACKFILL_PLAN.md index 5944be7..95983fe 100644 --- a/docs/plans/027-V0_3_6_JOB_API_BACKFILL_PLAN.md +++ b/docs/plans/027-V0_3_6_JOB_API_BACKFILL_PLAN.md @@ -1,5 +1,5 @@ - + # Plan v0.3.6 — Job API et premier backfill RAW @@ -520,7 +520,7 @@ Le gate de `pre.009-fix.001` révèle une erreur `E0423` : le type public `Backf ### `pre.010` — Hardening et canaries externes -**Statut : réalisé ; gate opérateur à rejouer.** +**Statut : réalisé ; gate opérateur intégralement vert.** Budget cible : **15-20 min**. Entrée : vertical déterministe complet. Fermer scénarios adversariaux, API externe, dépendances et sécurité ; exécuter la preuve live si justifiée et disponible. Sortie : aucun défaut fonctionnel ou firewall ouvert. @@ -528,9 +528,11 @@ La tranche n'élargit aucune API de production et ne modifie aucune dépendance ### `pre.011` — Gate technique final -**Statut : planifié.** +**Statut : matérialisé ; gate opérateur final à exécuter.** -Budget cible : **15-20 min**. Entrée : hardening vert. Rejouer le workspace complet, Clippy, tests et cargo trees, plus le smoke opt-in retenu. Sortie : preuve technique finale consignée sans réconciliation documentaire. +Budget cible : **15-20 min**. Entrée : hardening `pre.010` intégralement vert avec 47 unitaires + 20 canaries. La tranche ne rouvre aucun code, test fonctionnel, manifeste de crate, dépendance, README/USAGE, CHANGELOG/ROADMAP ou prompt suivant ; elle synchronise uniquement la version workspace, le plan, la validation et son delta. + +Le gate final rejoue le workspace en configuration large : format en mode check, audits Rust/Markdown, `cargo check --workspace`, Clippy `--all-targets --all-features -- -D warnings`, tests `--workspace --all-targets --all-features`, puis graphes de `ksp-job-api`, `ksp-job-backfill-lib` et doublons workspace. Les arbres sont ici justifiés par la clôture technique finale même sans nouveau changement de dépendances dans `pre.011`. Le smoke PostgreSQL reste opt-in et conditionnel à une URI dédiée explicitement disponible ; son absence ne bloque pas la preuve déterministe. Sortie attendue : preuve technique finale consignée, sans réconciliation documentaire durable avant `pre.012`. ### `pre.012` — Réconciliation documentaire finale diff --git a/docs/validation/023-V0_3_6_JOB_API_BACKFILL.md b/docs/validation/023-V0_3_6_JOB_API_BACKFILL.md index c2020cf..3bfb723 100644 --- a/docs/validation/023-V0_3_6_JOB_API_BACKFILL.md +++ b/docs/validation/023-V0_3_6_JOB_API_BACKFILL.md @@ -1,5 +1,5 @@ - + # Validation v0.3.6 — Job API et premier backfill RAW @@ -205,7 +205,7 @@ Aucune entrée absolue, traversée, avec séparateur inversé ou lien symbolique - [X] `ksp-job-api` dépend exactement de Core et n'a aucune feature, dev-dependency ou build-dependency. - [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 ; canarie externe `pre.010` matérialisée. +- [X] Aucun retour de dépendance vers Job depuis les couches basses ; canarie externe `pre.010` exécutée avec succès. - [X] Versions/features auditées : aucune nouvelle version externe ; `sha2`, `futures-util` et `tokio` réutilisent les entrées workspace existantes. `futures-util` reste un détail normal privé depuis `pre.008` et `pre.009` promeut Tokio en dépendance normale privée limitée à `macros` + `sync`; aucun type Tokio n'est exposé. - [X] `pre.005` matérialise 11 tests unitaires et 6 canaries d’intégration ; le gate opérateur les exécute tous avec succès. - [X] `pre.006` matérialise 19 tests unitaires et 7 canaries d’intégration ; le gate opérateur les exécute tous avec succès, avec uniquement le warning Clippy corrigé par `pre.006-fix.001`. @@ -223,19 +223,47 @@ Aucune entrée absolue, traversée, avec séparateur inversé ou lien symbolique ### Hardening externe `pre.010` -La tranche ajoute 9 canaries externes et une canarie de complétude, portant le total d'intégration attendu à 20 sans modifier les 47 unitaires. Le gate Rust reste à rejouer. +La tranche ajoute 9 canaries externes et une canarie de complétude, portant le total d'intégration à 20 sans modifier les 47 unitaires. Le gate opérateur est intégralement vert : audits Rust/Markdown, `cargo check`, Clippy sans warning, 47 unitaires et 20 canaries d'intégration passent sur `0.3.6-pre.10`. -- [ ] Neuf codes d'erreur publics Backfill stables, uniques et dans le domaine `job_backfill`; canarie externe matérialisée. -- [ ] Signature Base58 hostile et bornes de requête invalides retournent les codes stables attendus ; canarie externe matérialisée. -- [ ] Fingerprint sensible au réseau mais indépendant du JobId et du rôle Transport ; canarie externe matérialisée. -- [ ] `Debug` des signatures/fingerprint/requête/handle ne révèle ni signature brute ni payload snapshot ; canarie externe matérialisée. -- [ ] Handle public créé en état `Created`, annulation acceptée une fois puis idempotemment rejetée ; canarie externe matérialisée. -- [ ] Surface de dépendances exacte et backend-neutral, avec Store façade `default-features = false`; canarie externe matérialisée. -- [ ] Surface source Backfill conforme aux chemins crate-root pour les items partagés et sans `crate::module::Item`; canarie externe matérialisée. -- [ ] Aucun retour des couches Core/Logging/Transport/Store vers Job ; canarie externe matérialisée. -- [ ] Façade publique sans fuite Tokio/Futures/Serde/Store backend/HTTP ; canarie externe matérialisée. +- [X] Neuf codes d'erreur publics Backfill stables, uniques et dans le domaine `job_backfill`; canarie externe `pre.010` verte. +- [X] Signature Base58 hostile et bornes de requête invalides retournent les codes stables attendus ; canarie externe `pre.010` verte. +- [X] Fingerprint sensible au réseau mais indépendant du JobId et du rôle Transport ; canarie externe `pre.010` verte. +- [X] `Debug` des signatures/fingerprint/requête/handle ne révèle ni signature brute ni payload snapshot ; canarie externe `pre.010` verte. +- [X] Handle public créé en état `Created`, annulation acceptée une fois puis idempotemment rejetée ; canarie externe `pre.010` verte. +- [X] Surface de dépendances exacte et backend-neutral, avec Store façade `default-features = false`; canarie externe `pre.010` verte. +- [X] Surface source Backfill conforme aux chemins crate-root pour les items partagés et sans `crate::module::Item`; canarie externe `pre.010` verte. +- [X] Aucun retour des couches Core/Logging/Transport/Store vers Job ; canarie externe `pre.010` verte. +- [X] Façade publique sans fuite Tokio/Futures/Serde/Store backend/HTTP ; canarie externe `pre.010` verte. -## 15. Preuves d'intégration et fermeture +## 15. Gate technique final `pre.011` + +`pre.011` n'ajoute aucun code, test fonctionnel, manifeste de crate, dépendance, README/USAGE, CHANGELOG/ROADMAP ni prompt suivant. Il synchronise uniquement `workspace.package.version`, le plan, la validation et son delta afin de rejouer la preuve technique finale sur la surface `pre.010` déjà durcie. + +Matrice opérateur attendue : + +```text +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 deltas/0.3.6 + +cargo check --workspace +cargo clippy --workspace --all-targets --all-features -- -D warnings +cargo test --workspace --all-targets --all-features + +cargo tree -p ksp-job-api --edges normal +cargo tree -p ksp-job-api -e features +cargo tree -p ksp-job-backfill-lib --edges normal +cargo tree -p ksp-job-backfill-lib -e features +cargo tree --duplicates +``` + +Les arbres Cargo sont rejoués ici au titre de la clôture technique finale, même si `pre.011` ne modifie aucune dépendance. Un `cargo clean` préalable reste optionnel et peut être utilisé par l'opérateur pour une reconstruction froide ; il n'est pas un prérequis de `cargo tree`. + +Le smoke PostgreSQL reste conditionnel à une URI dédiée explicitement disponible. En l'absence d'environnement live fourni, il reste non exécuté et non bloquant ; aucune réussite live n'est inventée. + +**Statut : matérialisé ; gate opérateur final à exécuter.** + +## 16. Preuves d'intégration et fermeture - [X] Fake Transport et fake Store déterministes sans backend direct exécutés avec succès au gate `pre.007`; fake processor concurrent `pre.008-fix.001` exécuté avec succès. - [ ] Vertical découverte, hydratation, conversion, persistance et observation couvert. @@ -246,7 +274,7 @@ La tranche ajoute 9 canaries externes et une canarie de complétude, portant le - [ ] Archives de release minimales et vérifiées. - [ ] Version stable publiée uniquement après tous les critères obligatoires. -## 16. Règle de vérité +## 17. Règle de vérité Une case n'est cochée que par une preuve effectivement exécutée ou un audit effectivement réalisé. L'absence de `cargo`, de PostgreSQL configuré ou d'accès live est rapportée comme non exécutée ; elle n'est jamais convertie en succès implicite.