diff --git a/Cargo.toml b/Cargo.toml index f508549..968ddef 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,12 +1,12 @@ # file: Cargo.toml -# version: 556 +# version: 557 [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.13-pre.9" +version = "0.3.13-pre.9.fix.1" edition = "2024" license = "MIT" repository = "https://git.sasedev.com/Sasedev/khadhroony-solana-project" diff --git a/crates/ksp-worker-raw-transaction-ingest-lib/tests/dependency_boundary.rs b/crates/ksp-worker-raw-transaction-ingest-lib/tests/dependency_boundary.rs index a01607f..d5d373a 100644 --- a/crates/ksp-worker-raw-transaction-ingest-lib/tests/dependency_boundary.rs +++ b/crates/ksp-worker-raw-transaction-ingest-lib/tests/dependency_boundary.rs @@ -1,5 +1,5 @@ // file: crates/ksp-worker-raw-transaction-ingest-lib/tests/dependency_boundary.rs -// version: 25 +// version: 26 //! Dependency firewall canaries for the RAW transaction ingest Worker foundation. @@ -167,7 +167,9 @@ fn v0_3_12_pre_006_productive_source_uses_transport_session_bounded_coalescence_ "RawTransactionIngestHydrationCoordinator", "std::collections::BTreeMap", "tokio::task::JoinSet", - "max_pending_signals: settings.admission_queue_capacity()", + "RawTransactionIngestHydrationCoordinator::with_global_registry(", + "hydration_pending_limit,", + "hydration_in_flight_limit,", "get_transaction_observed", "admission_sender.send(ingress)", "tasks.abort_all()", @@ -251,7 +253,9 @@ fn v0_3_13_pre_003_standard_logs_source_reuses_transport_facades_and_common_hydr "logs_get_transaction", "solana_ws_http", "get_transaction_observed", - "max_pending_signals: settings.admission_queue_capacity()", + "RawTransactionIngestHydrationCoordinator::with_global_registry(", + "hydration_pending_limit,", + "hydration_in_flight_limit,", "std::option::Option::Some(1)", ] { assert!(resources.contains(required), "required pre.003 standard logs contract missing: {required}"); @@ -331,7 +335,9 @@ fn v0_3_13_pre_005_helius_transaction_source_reuses_transport_facade_and_common_ "project_helius_transaction_signal", "helius_ws_http", "get_transaction_observed", - "max_pending_signals: settings.admission_queue_capacity()", + "RawTransactionIngestHydrationCoordinator::with_global_registry(", + "hydration_pending_limit,", + "hydration_in_flight_limit,", ] { assert!(resources.contains(required), "required pre.005 Helius transaction contract missing: {required}"); } @@ -612,6 +618,8 @@ fn v0_3_13_pre_009_global_bounds_and_fairness_stay_inside_worker_facades() { let resources = include_str!("../src/runtime_resources.rs"); for required in [ "validate_hydration_fairness_capacity", + "let hydration_pending_budget = settings.admission_queue_capacity();", + "let hydration_in_flight_budget = settings.persistence_concurrency();", "hydration_pending_limit", "hydration_in_flight_limit", "tokio::sync::Semaphore", diff --git a/crates/ksp-worker-raw-transaction-ingest-lib/tests/hardening.rs b/crates/ksp-worker-raw-transaction-ingest-lib/tests/hardening.rs index 676919a..5debefd 100644 --- a/crates/ksp-worker-raw-transaction-ingest-lib/tests/hardening.rs +++ b/crates/ksp-worker-raw-transaction-ingest-lib/tests/hardening.rs @@ -1,5 +1,5 @@ // file: crates/ksp-worker-raw-transaction-ingest-lib/tests/hardening.rs -// version: 19 +// version: 20 //! External public, security, redaction and release-boundary hardening canaries for `pre.010`. @@ -408,8 +408,11 @@ fn v0_3_12_pre_006_runtime_resource_contract_opens_one_supervised_transport_sour fn v0_3_12_pre_006_source_coalescence_is_bounded_stop_preemptible_and_redacted() { let resources = include_str!("../src/runtime_resources.rs"); for required in [ - "max_in_flight: settings.persistence_concurrency()", - "max_pending_signals: settings.admission_queue_capacity()", + "max_in_flight: usize", + "max_pending_signals: usize", + "RawTransactionIngestHydrationCoordinator::with_global_registry(", + "hydration_pending_limit,", + "hydration_in_flight_limit,", "pending_signal_count", "stop_receiver.changed()", "tasks.abort_all()", diff --git a/deltas/0.3.13/pre.009-fix.001.md b/deltas/0.3.13/pre.009-fix.001.md new file mode 100644 index 0000000..ca3645f --- /dev/null +++ b/deltas/0.3.13/pre.009-fix.001.md @@ -0,0 +1,137 @@ + + + +# Delta 0.3.13-pre.009-fix.001 — alignement des canaris de quotas et correction du gate cargo tree + +## Base requise + +```text +livraison précédente : 0.3.13-pre.009 +Cargo base : 0.3.13-pre.9 +delta base : deltas/0.3.13/pre.009.md +archive delta base : ksp-general-0.3.13-pre.009.zip +``` + +Le gate opérateur du 10 septembre 2026 confirme : + +```text +cargo fmt + --check : PASS +audits Rust : clean / export completeness 0 +Markdown : clean, 340 tables / 845 files +cargo check --workspace : PASS +Clippy strict workspace/all-targets/all-features : PASS +Transport unit : 389/389 PASS +Transport public API : 52/52 PASS +Transport release completeness : 44/44 PASS +Transport doc-tests : 4/4 PASS +Transport smokes live opt-in : 5 ignored comme prévu +Worker unit : 99/99 PASS +Worker cross-layer : 4/4 PASS +Worker dependency-boundary : 13 PASS / 3 FAIL +``` + +La suite Worker s'arrête sur ces trois canaris `dependency_boundary`; `hardening`, `public_api`, `release_completeness` et les doc-tests Worker ne sont donc pas déclarés PASS pour ce gate. + +Les trois échecs exigent encore la chaîne historique : + +```text +max_pending_signals: settings.admission_queue_capacity() +``` + +Cette assertion n'est plus correcte depuis `pre.009`. Les sources reference-bearing reçoivent désormais des quotas `hydration_pending_limit` et `hydration_in_flight_limit` calculés à partir des budgets globaux, tandis que les preuves `pre.009` verrouillent la partition exacte des capacités configurées. + +Une revue préventive trouve également le même canari obsolète dans `tests/hardening.rs`, avec l'ancienne hypothèse `max_in_flight: settings.persistence_concurrency()`. Il est corrigé dans le même fix avant qu'il ne devienne le prochain échec. + +## Objectif du fix + +Mettre à jour les preuves sans modifier la logique runtime : + +```text +anciens canaris source-specific : vérifient with_global_registry + quotas source locaux +canari pre.009 dependency : vérifie aussi le lien budgets globaux -> settings +hardening historique : vérifie les champs bornés + quotas, sans ancienne égalité locale +runtime : inchangé +``` + +Les anciens canaris ne sont pas affaiblis : la relation directe entre capacités Worker et budgets globaux est désormais vérifiée par le canari `pre.009`, et les canaris historiques continuent à vérifier que chaque source utilise le coordinator borné commun. + +## Correction du workflow cargo tree + +Le gate opérateur avant `pre.010` ne doit pas imposer `cargo tree` : `pre.009` ne modifie aucune dépendance ni feature et `pre.010` n'est pas la fermeture technique de `0.3.13`. + +La règle courante est explicitée dans le prompt `0.3.13` : + +```text +cargo tree requis si le graphe dépendances/features change +ou à la fermeture technique de 0.3.13 +pas à chaque prerelease sans changement de graphe +``` + +Le plan, la validation et le delta `pre.009` sont alignés sur cette règle pour le gate avant `pre.010`. + +## Version + +```text +livraison : 0.3.13-pre.009-fix.001 +workspace.package.version : 0.3.13-pre.9.fix.1 +archive : ksp-general-0.3.13-pre.009-fix.001.zip +``` + +`Cargo.toml` passe de la version de fichier `556` à `557`. + +## Fichiers modifiés + +```text +Cargo.toml +crates/ksp-worker-raw-transaction-ingest-lib/tests/dependency_boundary.rs +crates/ksp-worker-raw-transaction-ingest-lib/tests/hardening.rs +prompts/032-V0_3_13_START_PROMPT.md +docs/plans/034-V0_3_13_MULTI_SOURCE_LIVE_CONVERGENCE_PLAN.md +docs/validation/030-V0_3_13_MULTI_SOURCE_LIVE_CONVERGENCE.md +deltas/0.3.13/pre.009.md +``` + +Versions de fichiers : + +```text +dependency_boundary.rs : 25 -> 26 +hardening.rs : 19 -> 20 +032 start prompt : 1 -> 2 +plan 034 : 9 -> 10 +validation 030 : 9 -> 10 +pre.009.md : 1 -> 2 +``` + +## Fichiers ajoutés + +```text +deltas/0.3.13/pre.009-fix.001.md +``` + +## Fichiers supprimés + +```text +aucun +``` + +## Non-claims + +Ce fix ne modifie aucune source production, aucun quota calculé, aucune borne globale, aucun sémaphore, aucune registry, aucune logique de disagreement, aucune dépendance, aucune feature et aucune API publique. + +## Validation dans l'environnement d'assemblage + +Le toolchain Rust/Cargo/Rustfmt n'est pas disponible dans l'environnement d'assemblage. Les commandes Cargo post-fix restent donc `NON EXÉCUTÉ LOCAL`. Les audits statiques KSP et le contrôle exhaustif du delta sont exécutés avant packaging. + +## Gate opérateur requis avant pre.010 + +```bash +cargo fmt --all +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 -p ksp-worker-raw-transaction-ingest-lib +``` + +Aucun `cargo tree` n'est requis pour ce gate. Le test Transport n'a pas besoin d'être répété par ce fix, qui ne modifie ni Transport, ni dépendance, ni feature. diff --git a/deltas/0.3.13/pre.009.md b/deltas/0.3.13/pre.009.md index b35ef35..9e817fa 100644 --- a/deltas/0.3.13/pre.009.md +++ b/deltas/0.3.13/pre.009.md @@ -1,5 +1,5 @@ - + # Delta 0.3.13-pre.009 — disagreements, duplicate storms, bornes globales et fairness @@ -216,7 +216,6 @@ cargo check --workspace cargo clippy --workspace --all-targets --all-features -- -D warnings cargo test -p ksp-onchain-transport-lib 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 ``` + +Aucun `cargo tree` n'est requis pour ce gate : `pre.009` ne modifie ni dépendance ni feature. Les graphes seront réaudités si le graphe change ou à la fermeture technique de `0.3.13`. diff --git a/docs/plans/034-V0_3_13_MULTI_SOURCE_LIVE_CONVERGENCE_PLAN.md b/docs/plans/034-V0_3_13_MULTI_SOURCE_LIVE_CONVERGENCE_PLAN.md index fadbb9b..fc1bf9b 100644 --- a/docs/plans/034-V0_3_13_MULTI_SOURCE_LIVE_CONVERGENCE_PLAN.md +++ b/docs/plans/034-V0_3_13_MULTI_SOURCE_LIVE_CONVERGENCE_PLAN.md @@ -1,5 +1,5 @@ - + # Plan v0.3.13 — WS standard / Helius / HTTP live + convergence multi-source RawTransaction @@ -1403,7 +1403,6 @@ cargo check --workspace cargo clippy --workspace --all-targets --all-features -- -D warnings cargo test -p ksp-onchain-transport-lib 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 ``` + +Aucun `cargo tree` n'est requis pour ce gate : `pre.009` ne modifie ni dépendance ni feature. Les graphes seront réaudités si le graphe change ou à la fermeture technique de `0.3.13`. diff --git a/docs/validation/030-V0_3_13_MULTI_SOURCE_LIVE_CONVERGENCE.md b/docs/validation/030-V0_3_13_MULTI_SOURCE_LIVE_CONVERGENCE.md index 51fd6c6..5226dbe 100644 --- a/docs/validation/030-V0_3_13_MULTI_SOURCE_LIVE_CONVERGENCE.md +++ b/docs/validation/030-V0_3_13_MULTI_SOURCE_LIVE_CONVERGENCE.md @@ -1,5 +1,5 @@ - + # Validation v0.3.13 — WS standard / Helius / HTTP live + convergence multi-source @@ -1408,7 +1408,6 @@ cargo check --workspace cargo clippy --workspace --all-targets --all-features -- -D warnings cargo test -p ksp-onchain-transport-lib 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 ``` + +Aucun `cargo tree` n'est requis pour ce gate : `pre.009` ne modifie ni dépendance ni feature. Les graphes seront réaudités si le graphe change ou à la fermeture technique de `0.3.13`. diff --git a/prompts/032-V0_3_13_START_PROMPT.md b/prompts/032-V0_3_13_START_PROMPT.md index bae9179..a41d9a1 100644 --- a/prompts/032-V0_3_13_START_PROMPT.md +++ b/prompts/032-V0_3_13_START_PROMPT.md @@ -1,5 +1,5 @@ - + # Prompt de démarrage `0.3.13` — WS standard / Helius / HTTP live + convergence multi-source du Worker `RawTransaction` @@ -555,7 +555,7 @@ Si Config/profils Helius sont modifiés : cargo test -p ksp-config-lib ``` -Graphes à maintenir/auditer : +Graphes à auditer uniquement si le graphe de dépendances/features change, ou à la fermeture technique : ```bash cargo tree -p ksp-worker-raw-transaction-ingest-lib --edges normal