v0.4.8-pre.009
This commit is contained in:
@@ -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 d’exiger de longs JSON écrits à la main.
|
||||
## Solana Program Metadata
|
||||
|
||||
L’inventaire 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 l’en-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 n’ont pas été enregistrées. `Close` exige une preuve `account_absence`, car un compte absent ne produit pas de snapshot matérialisé.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user