v0.3.5-pre.005-fix.001
This commit is contained in:
@@ -1,12 +1,12 @@
|
|||||||
# file: Cargo.toml
|
# file: Cargo.toml
|
||||||
# version: 387
|
# version: 388
|
||||||
|
|
||||||
[workspace]
|
[workspace]
|
||||||
resolver = "3"
|
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-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"]
|
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-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]
|
[workspace.package]
|
||||||
version = "0.3.5-pre.5"
|
version = "0.3.5-pre.5.fix.1"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
repository = "https://git.sasedev.com/Sasedev/khadhroony-solana-project"
|
repository = "https://git.sasedev.com/Sasedev/khadhroony-solana-project"
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// file: crates/ksp-interface-lib/tests/dependency_boundary.rs
|
// file: crates/ksp-interface-lib/tests/dependency_boundary.rs
|
||||||
// version: 7
|
// version: 8
|
||||||
|
|
||||||
//! Dependency and passive-surface canaries for the Interface foundation.
|
//! Dependency and passive-surface canaries for the Interface foundation.
|
||||||
|
|
||||||
@@ -166,7 +166,17 @@ fn v0_3_5_pre_005_manifest_keeps_exact_core_only_graph_without_features_or_hidde
|
|||||||
assert!(!manifest.contains("[features]"));
|
assert!(!manifest.contains("[features]"));
|
||||||
assert!(!manifest.contains("[dev-dependencies]"));
|
assert!(!manifest.contains("[dev-dependencies]"));
|
||||||
assert!(!manifest.contains("[build-dependencies]"));
|
assert!(!manifest.contains("[build-dependencies]"));
|
||||||
assert_eq!(manifest.matches("ksp-core-lib").count(), 1);
|
|
||||||
assert_eq!(manifest.matches("[dependencies]").count(), 1);
|
assert_eq!(manifest.matches("[dependencies]").count(), 1);
|
||||||
|
let dependencies_tail = manifest.split("[dependencies]").nth(1);
|
||||||
|
assert!(dependencies_tail.is_some(), "Interface dependencies section must exist");
|
||||||
|
let dependencies_tail = match dependencies_tail {
|
||||||
|
std::option::Option::Some(value) => value,
|
||||||
|
std::option::Option::None => return,
|
||||||
|
};
|
||||||
|
let dependencies = match dependencies_tail.split("[lints]").next() {
|
||||||
|
std::option::Option::Some(value) => value,
|
||||||
|
std::option::Option::None => return,
|
||||||
|
};
|
||||||
|
assert_eq!(manifest_dependency_names(dependencies), std::vec!["ksp-core-lib"]);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
78
deltas/0.3.5/pre.005-fix.001.md
Normal file
78
deltas/0.3.5/pre.005-fix.001.md
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
# Delta `0.3.5-pre.005-fix.001`
|
||||||
|
|
||||||
|
## Objet
|
||||||
|
|
||||||
|
Corriger le faux négatif du canari de manifeste ajouté par `0.3.5-pre.005`, sans modifier le contrat fonctionnel ni le graphe de dépendances de `ksp-interface-lib`.
|
||||||
|
|
||||||
|
## Base
|
||||||
|
|
||||||
|
```text
|
||||||
|
0.3.5-pre.005
|
||||||
|
workspace.package.version = 0.3.5-pre.5
|
||||||
|
```
|
||||||
|
|
||||||
|
## Diagnostic opérateur
|
||||||
|
|
||||||
|
Le gate du `2026-08-31` est propre pour les audits Rust/Markdown et `cargo check --workspace`, mais le nouveau test :
|
||||||
|
|
||||||
|
```text
|
||||||
|
v0_3_5_pre_005_manifest_keeps_exact_core_only_graph_without_features_or_hidden_dependency_sections
|
||||||
|
```
|
||||||
|
|
||||||
|
échoue avec :
|
||||||
|
|
||||||
|
```text
|
||||||
|
left: 2
|
||||||
|
right: 1
|
||||||
|
```
|
||||||
|
|
||||||
|
La cause est le comptage textuel `manifest.matches("ksp-core-lib")` appliqué à la déclaration :
|
||||||
|
|
||||||
|
```text
|
||||||
|
ksp-core-lib = { path = "../ksp-core-lib" }
|
||||||
|
```
|
||||||
|
|
||||||
|
Cette ligne contient légitimement deux occurrences de la chaîne tout en déclarant une seule dépendance. Le manifeste lui-même est correct.
|
||||||
|
|
||||||
|
## Correction
|
||||||
|
|
||||||
|
- conserver les interdictions de sections `[features]`, `[dev-dependencies]` et `[build-dependencies]` ;
|
||||||
|
- conserver l'exigence d'une seule section `[dependencies]` ;
|
||||||
|
- extraire cette section puis réutiliser `manifest_dependency_names(...)` ;
|
||||||
|
- vérifier l'inventaire exact des clés de dépendance : `ksp-core-lib` uniquement ;
|
||||||
|
- ne modifier aucun manifeste de crate, source de production, type public ou dependency graph.
|
||||||
|
|
||||||
|
## Version
|
||||||
|
|
||||||
|
Le fix modifie une source Rust de test ; la version workspace devient :
|
||||||
|
|
||||||
|
```text
|
||||||
|
workspace.package.version = 0.3.5-pre.5.fix.1
|
||||||
|
```
|
||||||
|
|
||||||
|
Le numéro documentaire reste :
|
||||||
|
|
||||||
|
```text
|
||||||
|
0.3.5-pre.005-fix.001
|
||||||
|
```
|
||||||
|
|
||||||
|
## Fichiers modifiés
|
||||||
|
|
||||||
|
```text
|
||||||
|
Cargo.toml
|
||||||
|
crates/ksp-interface-lib/tests/dependency_boundary.rs
|
||||||
|
docs/validation/022-V0_3_5_INTERFACE_ACQUISITION_EVENTS.md
|
||||||
|
deltas/0.3.5/pre.005-fix.001.md
|
||||||
|
```
|
||||||
|
|
||||||
|
## Gate demandé
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cargo fmt --all
|
||||||
|
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.5
|
||||||
|
cargo check --workspace
|
||||||
|
cargo clippy --workspace --all-targets
|
||||||
|
cargo test -p ksp-interface-lib
|
||||||
|
cargo test -p ksp-program-api
|
||||||
|
```
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
<!-- file: docs/validation/022-V0_3_5_INTERFACE_ACQUISITION_EVENTS.md -->
|
<!-- file: docs/validation/022-V0_3_5_INTERFACE_ACQUISITION_EVENTS.md -->
|
||||||
<!-- version: 6 -->
|
<!-- version: 7 -->
|
||||||
|
|
||||||
# Validation `0.3.5` — Interface passive acquisition events
|
# Validation `0.3.5` — Interface passive acquisition events
|
||||||
|
|
||||||
@@ -17,7 +17,7 @@ workspace.package.version = 0.3.4
|
|||||||
Version de travail :
|
Version de travail :
|
||||||
|
|
||||||
```text
|
```text
|
||||||
0.3.5-pre.3
|
0.3.5-pre.5.fix.1
|
||||||
```
|
```
|
||||||
|
|
||||||
## 2. Gate d'entrée `v0.3.4`
|
## 2. Gate d'entrée `v0.3.4`
|
||||||
@@ -750,3 +750,29 @@ cargo test -p ksp-program-api
|
|||||||
```
|
```
|
||||||
|
|
||||||
Les gates Cargo de `pre.005` restent à exécuter par l'opérateur dans le repository réel.
|
Les gates Cargo de `pre.005` restent à exécuter par l'opérateur dans le repository réel.
|
||||||
|
|
||||||
|
## 33. Gate opérateur `pre.005` et correction `pre.005-fix.001`
|
||||||
|
|
||||||
|
Le gate opérateur du `2026-08-31` confirme que les audits Rust/Markdown et `cargo check --workspace` sont propres, mais révèle un défaut dans le nouveau canari de manifeste :
|
||||||
|
|
||||||
|
```text
|
||||||
|
v0_3_5_pre_005_manifest_keeps_exact_core_only_graph_without_features_or_hidden_dependency_sections: FAILED
|
||||||
|
left: 2
|
||||||
|
right: 1
|
||||||
|
```
|
||||||
|
|
||||||
|
Le manifeste Interface reste pourtant strictement Core-only. Le canari comptait naïvement les occurrences textuelles de `ksp-core-lib` dans :
|
||||||
|
|
||||||
|
```text
|
||||||
|
ksp-core-lib = { path = "../ksp-core-lib" }
|
||||||
|
```
|
||||||
|
|
||||||
|
Le nom apparaît donc deux fois sur une seule déclaration de dépendance : une fois comme clé et une fois dans le chemin. `pre.005-fix.001` corrige uniquement ce faux négatif en réutilisant le parseur de clés de dépendances déjà présent dans `dependency_boundary.rs`. Le canari vérifie désormais que la section `[dependencies]` existe exactement une fois et que son inventaire de clés vaut exactement `ksp-core-lib`, tout en conservant les interdictions `[features]`, `[dev-dependencies]` et `[build-dependencies]`.
|
||||||
|
|
||||||
|
Le fix modifie une source Rust de test ; la version workspace évolue donc vers :
|
||||||
|
|
||||||
|
```text
|
||||||
|
0.3.5-pre.5.fix.1
|
||||||
|
```
|
||||||
|
|
||||||
|
Aucun manifeste de crate, source de production, contrat public ou dependency graph n'est modifié.
|
||||||
|
|||||||
Reference in New Issue
Block a user