diff --git a/Cargo.toml b/Cargo.toml index f11824a..f7bf7c6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,12 +1,12 @@ # file: Cargo.toml -# version: 535 +# version: 536 [workspace] resolver = "3" members = ["crates/ksp-app-backfill-desk", "crates/ksp-app-config-desk", "crates/ksp-app-solprices-desk", "crates/ksp-app-store-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-raw-transaction-lib", "crates/ksp-store-api", "crates/ksp-store-lib", "crates/ksp-store-postgres-lib", "crates/ksp-wallet-lib", "crates/ksp-worker-api", "crates/ksp-worker-raw-transaction-ingest-lib"] [workspace.package] -version = "0.3.12-pre.10" +version = "0.3.12-pre.11" edition = "2024" license = "MIT" repository = "https://git.sasedev.com/Sasedev/khadhroony-solana-project" diff --git a/deltas/0.3.12/pre.011.md b/deltas/0.3.12/pre.011.md new file mode 100644 index 0000000..ed43835 --- /dev/null +++ b/deltas/0.3.12/pre.011.md @@ -0,0 +1,71 @@ + + + +# Delta `0.3.12-pre.011` + +## Base + +`0.3.12-pre.010`. + +## Objectif + +Fermer la tranche de gate technique final et de live opt-in prévue par le plan : workspace complet, Clippy strict, suites ciblées, graphes Cargo, duplicates et smokes réellement accessibles, sans nouveau scope fonctionnel. + +## Fichiers ajoutés + +- `deltas/0.3.12/pre.011.md`. + +## Fichiers modifiés + +- `Cargo.toml` ; +- `docs/validation/029-V0_3_12_YELLOWSTONE_HYDRATION_CONTINUITY.md`. + +## Fichiers supprimés + +Aucun. + +## Décisions + +- la version workspace devient `0.3.12-pre.11` ; +- aucun fichier Rust de production ou de test n'est modifié ; +- le gate `pre.010` réellement communiqué est enregistré sans revendiquer les commandes `cargo tree` ou workspace-all-targets qui n'étaient pas présentes dans ce log ; +- `pre.011` exige le workspace complet `--all-targets --all-features`, les suites cross-layer ciblées, les graphes Worker normal/features et `cargo tree --duplicates` ; +- les smokes HTTP/WS Devnet sans secret sont distingués des smokes Yellowstone token-gated ; +- les tokens Yellowstone restent lus sur stdin et ne doivent pas être passés en argument CLI ni copiés dans les logs/deltas ; +- aucun Worker live smoke artificiel n'est ajouté sans secret Yellowstone, hydration HTTP cohérente et Store réellement provisionné ; +- un smoke non exécutable faute de secret reste `NON EXÉCUTÉ`, jamais PASS ; +- aucun comportement reconnect/replay, frontier, hydration, persistence, Store, Config ou Backfill n'est modifié. + +## Validations exécutées dans l'environnement d'assemblage + +- `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` ; +- vérification statique de l'inventaire des smokes et de leur caractère `#[ignore]` ; +- vérification d'inventaire du delta ; +- `unzip -t` ; +- reproduction byte-à-byte du delta sur `0.3.12-pre.010`. + +## Validations non exécutées localement + +`cargo`, `rustc` et `rustfmt` ne sont pas installés dans l'environnement d'assemblage. Aucun PASS Cargo ou live local n'est revendiqué. + +## Gate opérateur déterministe requis + +```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 +cargo check --workspace +cargo clippy --workspace --all-targets --all-features -- -D warnings +cargo test --workspace --all-targets --all-features +cargo test -p ksp-onchain-transport-lib +cargo test -p ksp-raw-transaction-lib +cargo test -p ksp-store-api +cargo test -p ksp-store-lib --no-default-features +cargo test -p ksp-worker-raw-transaction-ingest-lib +cargo tree -p ksp-worker-raw-transaction-ingest-lib --edges normal +cargo tree -p ksp-worker-raw-transaction-ingest-lib -e features +cargo tree --duplicates +``` + +Les commandes live opt-in sont documentées dans `docs/validation/029-V0_3_12_YELLOWSTONE_HYDRATION_CONTINUITY.md` et leurs résultats doivent être enregistrés séparément du gate déterministe. diff --git a/docs/validation/029-V0_3_12_YELLOWSTONE_HYDRATION_CONTINUITY.md b/docs/validation/029-V0_3_12_YELLOWSTONE_HYDRATION_CONTINUITY.md index 36a04ac..e804d41 100644 --- a/docs/validation/029-V0_3_12_YELLOWSTONE_HYDRATION_CONTINUITY.md +++ b/docs/validation/029-V0_3_12_YELLOWSTONE_HYDRATION_CONTINUITY.md @@ -1,5 +1,5 @@ - + # Validation v0.3.12 — Yellowstone + hydration HTTP + continuité de run du Worker RawTransaction @@ -1923,3 +1923,150 @@ cargo tree --duplicates Dans l'environnement d'assemblage, `cargo`, `rustc` et `rustfmt` ne sont pas installés ; aucun gate Cargo local n'est revendiqué. +## 80. Gate opérateur `pre.010` + +Le gate opérateur communiqué pour `0.3.12-pre.10` est vert sur toutes les commandes effectivement exécutées : + +```text +General Rust rule audit : clean +Rust export completeness audit : 0 candidate(s) +KSP workspace Rust rule audit : clean +Markdown table audit : clean (340 tables, 820 fichiers) +cargo check --workspace : PASS +cargo clippy --workspace --all-targets --all-features -- -D warnings : PASS +``` + +Suites ciblées réellement exécutées : + +```text +ksp-onchain-transport-lib + 388 unit PASS + 51 public_api PASS + 43 release_completeness PASS + 4 doc-tests PASS + smokes live : 5 tests ignored par défaut + +ksp-raw-transaction-lib + 17 unit PASS + 2 dependency_boundary PASS + 5 public_api PASS + 2 release_completeness PASS + 2 security_hardening PASS + +ksp-store-api + 22 unit PASS + 2 dependency_boundary PASS + 1 external_backend PASS + 8 public_api PASS + 5 release_completeness PASS + 5 security_hardening PASS + +ksp-store-lib --no-default-features + 9 unit PASS + 3 dependency_boundary PASS + 1 feature_mismatch PASS + 6 hardening_completeness PASS + 5 public_api PASS + +ksp-worker-raw-transaction-ingest-lib + 66 unit PASS + 4 cross_layer_completeness PASS + 9 dependency_boundary PASS + 16 hardening PASS + 9 public_api PASS + 4 release_completeness PASS +``` + +Les commandes `cargo tree` et le gate `cargo test --workspace --all-targets --all-features` ne figurent pas dans le log opérateur reçu pour `pre.010` ; aucun PASS n'est revendiqué pour ces commandes. Elles appartiennent explicitement au gate `pre.011`. + +`pre.010` devient la base autoritaire de `pre.011`. + +## 81. Gate technique complet et live opt-in `pre.011` + +`pre.011` n'ajoute aucun comportement runtime, aucune API et aucun nouveau test réseau. La tranche ferme le gate technique final prévu par le plan à partir de la candidate déjà qualifiée par `pre.010`. + +Gate déterministe requis : + +```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 +cargo check --workspace +cargo clippy --workspace --all-targets --all-features -- -D warnings +cargo test --workspace --all-targets --all-features +cargo test -p ksp-onchain-transport-lib +cargo test -p ksp-raw-transaction-lib +cargo test -p ksp-store-api +cargo test -p ksp-store-lib --no-default-features +cargo test -p ksp-worker-raw-transaction-ingest-lib +cargo tree -p ksp-worker-raw-transaction-ingest-lib --edges normal +cargo tree -p ksp-worker-raw-transaction-ingest-lib -e features +cargo tree --duplicates +``` + +Les smokes réseau restent hors du gate déterministe. Ils sont exécutés uniquement de manière explicite et leur résultat est enregistré séparément. + +### 81.1 Smokes keyless réellement accessibles + +Ces deux smokes Transport n'exigent aucun secret opérateur : + +```bash +cargo test -p ksp-onchain-transport-lib --test transport_devnet_smoke -- --ignored --nocapture +cargo test -p ksp-onchain-transport-lib --test websocket_devnet_smoke -- --ignored --nocapture +``` + +Ils prouvent respectivement un accès HTTP Devnet et un cycle WebSocket Devnet. Ils ne prouvent ni Yellowstone, ni hydration Worker, ni persistence Store. + +### 81.2 Smokes Yellowstone token-gated + +Les smokes Yellowstone existants restent operator-only et lisent leurs tokens sur stdin. Les secrets ne doivent jamais être passés comme arguments CLI ni copiés dans un delta/log. + +OrbitFlare Devnet, uniquement si un token valide est réellement disponible : + +```bash +read -rsp 'OrbitFlare x-token: ' ORBITFLARE_X_TOKEN; printf '\n' +printf '%s\n' "$ORBITFLARE_X_TOKEN" | cargo test -p ksp-onchain-transport-lib --test yellowstone_orbitflare_smoke -- --ignored --nocapture +unset ORBITFLARE_X_TOKEN +``` + +PublicNode Mainnet/Testnet, uniquement si les deux tokens personnels sont réellement disponibles : + +```bash +read -rsp 'PublicNode Mainnet x-token: ' PUBLICNODE_MAINNET_X_TOKEN; printf '\n' +read -rsp 'PublicNode Testnet x-token: ' PUBLICNODE_TESTNET_X_TOKEN; printf '\n' +printf '%s\n%s\n' "$PUBLICNODE_MAINNET_X_TOKEN" "$PUBLICNODE_TESTNET_X_TOKEN" | cargo test -p ksp-onchain-transport-lib --test yellowstone_publicnode_smoke -- --ignored --nocapture +unset PUBLICNODE_MAINNET_X_TOKEN PUBLICNODE_TESTNET_X_TOKEN +``` + +L'absence de token valide laisse le smoke correspondant `NON EXÉCUTÉ`; elle n'est ni un PASS ni un défaut produit. + +### 81.3 Worker live smoke + +Aucun nouveau smoke Worker end-to-end n'est introduit dans `pre.011`. Une telle preuve exigerait simultanément : + +```text +secret Yellowstone valide +route HTTP d'hydration cohérente +Store réellement provisionné sur le même network +signal transactionnel live observé +persistence vérifiable +stop borné +``` + +Ces ressources ne sont pas fournies dans l'environnement d'assemblage. Conformément au plan, `Worker live smoke` reste donc `NON EXÉCUTÉ` tant qu'un gate opérateur ne fournit pas réellement ces préconditions. Les fixtures déterministes et les gates cross-layer restent les preuves de correction obligatoires. + +### 81.4 Critère de fermeture + +`pre.011` peut être fermé lorsque : + +```text +gate déterministe complet = PASS +arbres Cargo demandés = exécutés et examinés +cargo tree --duplicates = exécuté et enregistré +smokes keyless = exécutés ou échec externe explicitement qualifié +smokes token-gated = PASS si les tokens sont disponibles, sinon NON EXÉCUTÉ explicite +aucun secret n'apparaît dans les logs +aucun nouveau scope fonctionnel n'est ajouté pour contourner un provider indisponible +``` + +Dans l'environnement d'assemblage, `cargo`, `rustc` et `rustfmt` ne sont pas installés ; aucun PASS Cargo ou live local n'est revendiqué.