v0.4.7-pre.007

This commit is contained in:
2026-08-02 11:46:25 +02:00
parent d34d70f619
commit d831623980
12 changed files with 747 additions and 13 deletions

View File

@@ -1,5 +1,5 @@
<!-- file: kb-pipeline/USAGE.md -->
<!-- version: 2 -->
<!-- version: 4 -->
# Utilisation de kb-pipeline
@@ -178,3 +178,97 @@ Les campagnes longues exposent des traits dobservation distincts pour le back
- la crate orchestre les traitements mais ne fournit pas dinterface opérateur ;
- elle ne conserve pas de secret de wallet ;
- elle ne remplace pas les scénarios Devnet et validations explicites de `kb-pipeline-demo-scenarios`.
## Lire un compte Metaplex Token Metadata
La lecture stateful exige un endpoint HTTP, une catégorie de compte explicite et une borne stricte sur les données décodées.
```rust
async fn read_metaplex_metadata(
pool: &kb_onchain_transport::HttpEndpointPool,
metadata: kb_lib::MdPubkey,
) -> kb_core::Result<kb_pipeline::MetaplexTokenMetadataStatefulReadResult> {
let request = kb_pipeline::MetaplexTokenMetadataStatefulReadRequest {
query_role: "rpc".to_string(),
account: metadata,
kind: kb_pipeline::MetaplexTokenMetadataAccountKind::Metadata,
min_context_slot: std::option::Option::None,
max_data_bytes: kb_pipeline::MAX_METAPLEX_TOKEN_METADATA_ACCOUNT_BYTES,
};
let result = kb_pipeline::read_metaplex_token_metadata_stateful_snapshot(
pool,
&request,
)
.await;
match result {
Ok(snapshot) => Ok(snapshot),
Err(error) => Err(error),
}
}
```
Pour une edition, fournir le mint dans `MetaplexTokenMetadataAccountKind::Edition`. Pour un token record programmable, fournir le mint et le token account dans `TokenRecord`.
## Inspecter le préflight Metaplex
Le préflight lie un plan préparé par `kb-lib` à des snapshots confirmés et applique la politique des opérations dépréciées.
```rust
fn inspect_metaplex_preflight(
plan: kb_lib::ExApiPreparedExecutionPlan,
snapshots: Vec<kb_pipeline::MetaplexTokenMetadataStatefulReadResult>,
allow_deprecated_operation: bool,
) -> kb_core::Result<kb_pipeline::MetaplexTokenMetadataPreflightReport> {
let request = kb_pipeline::MetaplexTokenMetadataPreflightRequest {
plan,
snapshots,
allow_deprecated_operation,
};
kb_pipeline::inspect_metaplex_token_metadata_preflight(&request)
}
```
Une opération marquée dépréciée par `kb-lib` est refusée lorsque `allow_deprecated_operation` vaut `false`.
## Valider lenveloppe dexécution Metaplex
Lorchestration refuse la signature ou la soumission tant que la simulation exacte du message, les signers et la confirmation opérateur ne sont pas cohérents.
```rust
fn validate_metaplex_execution(
plan: kb_lib::ExApiPreparedExecutionPlan,
preflight: kb_pipeline::MetaplexTokenMetadataPreflightReport,
message_hash: String,
resolved_signers: Vec<kb_lib::MdPubkey>,
) -> kb_core::Result<kb_pipeline::MetaplexTokenMetadataExecutionReadinessReport> {
let request = kb_pipeline::MetaplexTokenMetadataExecutionReadinessRequest {
plan,
preflight,
message_hash: message_hash.clone(),
simulated_message_hash: message_hash,
simulated: true,
simulation_succeeded: true,
resolved_signers,
submit: false,
operator_confirmed: false,
};
kb_pipeline::validate_metaplex_token_metadata_execution_readiness(&request)
}
```
Pour une soumission réelle, `submit` et `operator_confirmed` doivent être vrais et le plan ne doit plus être en `dry_run`.
## Agréger les postconditions Metaplex
```rust
fn summarize_metaplex_postconditions(
statuses: &[kb_pipeline::MetaplexTokenMetadataPostconditionStatus],
) -> kb_pipeline::MetaplexTokenMetadataPostconditionStatus {
kb_pipeline::summarize_metaplex_token_metadata_postconditions(statuses)
}
```
`Contradicted` est prioritaire sur `Confirmed`, et labsence de postcondition applicable reste `NotApplicable`.