v0.4.8-pre.009

This commit is contained in:
2026-08-06 06:45:18 +02:00
parent f576fbade2
commit b314bfc244
21 changed files with 2688 additions and 32 deletions

View File

@@ -1,5 +1,5 @@
<!-- file: kb-pipeline-demo-scenarios/USAGE.md -->
<!-- version: 9 -->
<!-- version: 10 -->
# Utilisation de kb-pipeline-demo-scenarios
@@ -337,3 +337,53 @@ fn creator_verify_request(
`devnet_metaplex_creator_unverify_request` fournit le parcours inverse. Les deux requêtes restent en simulation-only par défaut.
Le test générique accepte toujours `KB_DEVNET_METAPLEX_OPERATION_JSON`, mais rejette explicitement le placeholder documentaire `...`. Les opérations plus complexes recevront des préparateurs de fixtures dédiés au lieu dexiger de longs JSON écrits à la main.
## Solana Program Metadata
Linventaire fermé est exposé par :
```rust
fn program_metadata_scenarios(
) -> Vec<kb_pipeline_demo_scenarios::SolanaProgramMetadataScenario> {
kb_pipeline_demo_scenarios::solana_program_metadata_devnet_scenarios()
}
```
Les deux parcours sont ordonnés ainsi :
1. `Allocate → Extend → Write → Trim → Close` pour le `Buffer` ;
2. `Initialize → SetData → SetAuthority → SetImmutable` pour le compte `Metadata`.
`Extend` précède volontairement `Write` : `Allocate` ne réserve que len-tête du Buffer, alors que lécriture exige une capacité suffisante.
La préparation crée deux PDA non canoniques, les préfinance avec deux transferts System Program confirmés, puis produit neuf opérations typées avec leurs lectures, preuves de rent et postconditions. Elle exige un profil Devnet persistant, `devnet_send_enabled` et une confirmation opérateur explicite.
```rust
async fn run_program_metadata_campaign<O>(
pool: &kb_onchain_transport::HttpEndpointPool,
profile: &kb_config::ProfileConfig,
workspace_root: &std::path::Path,
observer: &O,
) -> kb_core::Result<kb_pipeline_demo_scenarios::DevnetSolanaProgramMetadataCampaignSummary>
where
O: kb_pipeline_demo_scenarios::SolanaExecutionObserver,
{
let options = kb_pipeline_demo_scenarios::SolanaProgramMetadataFixturePreparationOptions {
query_role: "http_queries".to_string(),
transaction_role: "http_transactions".to_string(),
operator_confirmed: true,
};
kb_pipeline_demo_scenarios::execute_devnet_solana_program_metadata_campaign(
pool,
profile,
workspace_root,
&options,
observer,
)
.await
}
```
Cet appel crée des comptes et soumet onze transactions réelles au minimum : deux transferts de préfinancement et neuf opérations `ProgM6…`. Il ne doit jamais être déclenché implicitement par une ouverture de fenêtre ou une simple demande de simulation.
La matrice `SOLANA_PROGRAM_METADATA_DEVNET_VALIDATION_MATRIX.json` reste à `not_run` tant que les signatures, simulations, postconditions et preuves matérialisées nont pas été enregistrées. `Close` exige une preuve `account_absence`, car un compte absent ne produit pas de snapshot matérialisé.