v0.4.7-pre.009

This commit is contained in:
2026-08-02 17:53:36 +02:00
parent d6cb4b0cce
commit ebdfd30d5d
21 changed files with 657 additions and 46 deletions

View File

@@ -1,5 +1,10 @@
<!-- file: kb-pipeline-demo-scenarios/CHANGELOG.md -->
<!-- version: 9 -->
<!-- version: 10 -->
## 0.4.7-pre.009-fix-001
- ajout de linventaire Metaplex Devnet simulation et de son test de couverture.
# CHANGELOG — kb-pipeline-demo-scenarios

View File

@@ -209,3 +209,14 @@ fn load_metaplex_matrix(
```
Une validation réseau ne peut passer à `confirmed` que lorsque toutes les preuves déclarées sont présentes. Les statuts `not_run` et `unavailable` nacceptent aucune preuve observée.
## Inventaire Metaplex Devnet
```rust
let scenarios = kb_pipeline_demo_scenarios::metaplex_token_metadata_devnet_scenarios();
assert!(scenarios.iter().all(|scenario| {
scenario.mode == kb_pipeline_demo_scenarios::MetaplexTokenMetadataScenarioMode::NetworkSimulation
}));
```
Cet inventaire prépare les tests et campagnes Devnet simulation-first. Il ne constitue pas à lui seul une validation réseau réussie.

View File

@@ -1,5 +1,5 @@
// file: kb-pipeline-demo-scenarios/src/lib.rs
// version: 6
// version: 7
#![forbid(unsafe_code)]
#![deny(unreachable_pub)]
@@ -73,6 +73,8 @@ pub use self::solana_metaplex_token_metadata_scenarios::MetaplexTokenMetadataAss
pub use self::solana_metaplex_token_metadata_scenarios::MetaplexTokenMetadataScenario;
/// Execution mode accepted by one Metaplex scenario.
pub use self::solana_metaplex_token_metadata_scenarios::MetaplexTokenMetadataScenarioMode;
/// Returns the ordered Metaplex Devnet simulation scenario inventory.
pub use self::solana_metaplex_token_metadata_scenarios::metaplex_token_metadata_devnet_scenarios;
/// Returns the complete ordered synthetic Metaplex scenario inventory.
pub use self::solana_metaplex_token_metadata_scenarios::metaplex_token_metadata_synthetic_scenarios;
/// Maximum evidence entries accepted by one Metaplex validation scenario.

View File

@@ -1,5 +1,5 @@
// file: kb-pipeline-demo-scenarios/src/solana_metaplex_token_metadata_scenarios.rs
// version: 1
// version: 2
//! Deterministic Metaplex Token Metadata scenario inventory for tests and Devnet campaigns.
@@ -120,6 +120,19 @@ pub fn metaplex_token_metadata_synthetic_scenarios()
];
}
/// Returns the ordered Metaplex scenarios intended for opt-in Devnet simulation.
pub fn metaplex_token_metadata_devnet_scenarios()
-> std::vec::Vec<crate::MetaplexTokenMetadataScenario> {
return crate::metaplex_token_metadata_synthetic_scenarios()
.into_iter()
.map(|mut scenario| {
scenario.id = format!("{}_devnet_simulation", scenario.id);
scenario.mode = crate::MetaplexTokenMetadataScenarioMode::NetworkSimulation;
return scenario;
})
.collect::<std::vec::Vec<crate::MetaplexTokenMetadataScenario>>();
}
#[cfg(test)]
mod tests {
#[test]
@@ -148,6 +161,22 @@ mod tests {
}
}
#[test]
fn devnet_inventory_mirrors_every_asset_family_as_network_simulation() {
let synthetic = crate::metaplex_token_metadata_synthetic_scenarios();
let devnet = crate::metaplex_token_metadata_devnet_scenarios();
assert_eq!(devnet.len(), synthetic.len());
assert!(devnet.iter().all(|scenario| return scenario.mode
== crate::MetaplexTokenMetadataScenarioMode::NetworkSimulation));
assert!(devnet.iter().all(|scenario| return scenario.id.ends_with("_devnet_simulation")));
let families = devnet
.iter()
.map(|scenario| return scenario.asset_family)
.collect::<std::collections::BTreeSet<crate::MetaplexTokenMetadataAssetFamily>>(
);
assert_eq!(families.len(), 5);
}
#[test]
fn programmable_and_collection_requirements_are_declared_only_where_needed() {
let scenarios = crate::metaplex_token_metadata_synthetic_scenarios();