0.5.1-pre.006
This commit is contained in:
@@ -1,8 +1,14 @@
|
||||
<!-- file: ks-pipeline-demo-scenarios/CHANGELOG.md -->
|
||||
<!-- version: 76 -->
|
||||
<!-- version: 77 -->
|
||||
|
||||
# CHANGELOG — ks-pipeline-demo-scenarios
|
||||
|
||||
## `0.5.1-pre.006`
|
||||
|
||||
- remplace la dépendance runtime au document applicatif monolithique par `config/ks-pipeline-demo-scenarios.default.config.json` pour les scénarios Devnet opt-in ;
|
||||
- résout la composition par `ks-config`, puis conserve le contrat `AppConfig/ProfileConfig` runtime existant afin de ne pas requalifier les scénarios réseau ;
|
||||
- aligne les fixtures unitaires sur les snapshots runtime sous `test-fixtures/config/` plutôt que sur une configuration source de binaire.
|
||||
|
||||
## `0.5.1-pre.005`
|
||||
|
||||
- aligne les scénarios et fixtures sur `config/app.config.json` comme document général par défaut ;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!-- file: ks-pipeline-demo-scenarios/USAGE.md -->
|
||||
<!-- version: 29 -->
|
||||
<!-- version: 30 -->
|
||||
|
||||
# Utilisation de ks-pipeline-demo-scenarios
|
||||
|
||||
@@ -113,7 +113,7 @@ KS_SECRET_POSTGRES_TEST_URL='postgresql://…' \
|
||||
cargo test -p ks-pipeline-demo-scenarios optional_devnet_token_2022_metadata_campaign_from_env -- --nocapture
|
||||
```
|
||||
|
||||
`KS_DEVNET_PROFILE` peut sélectionner explicitement le profil Devnet et `KS_DEVNET_CONFIG_PATH` peut remplacer `config/app.config.json`. Le profil doit utiliser un wallet persistant, autoriser les soumissions Devnet et respecter les plafonds de dépense et de frais.
|
||||
`KS_DEVNET_PROFILE` peut sélectionner explicitement le profil Devnet et `KS_DEVNET_CONFIG_PATH` peut remplacer la composition `config/ks-pipeline-demo-scenarios.default.config.json`. La composition résout ensuite les profils transport/listeners et le profil runtime doit utiliser un wallet persistant, autoriser les soumissions Devnet et respecter les plafonds de dépense et de frais.
|
||||
|
||||
La sortie `TOKEN_2022_METADATA_FIXTURE` conserve le mint et la signature de préparation. Chaque ligne `TOKEN_2022_METADATA_STEP` conserve l’opération, la signature, le slot, la postcondition, le nombre de matérialisations et, pour `Emit`, la taille du `returnData`. La campagne de référence de `pre.012` a été exécutée avec succès et ses preuves sont conservées dans `SPL_TOKEN_2022_METADATA_DEVNET_VALIDATION_MATRIX.json` et dans le rapport `docs/validation/V0_4_8_METADATA_VALIDATION_REPORT.md` ; le rapport détaillé `pre.012` est archivé sous `olddocs/archivekbot3/docs/validation/`. Une nouvelle exécution produit de nouvelles transactions et ne remplace ces preuves qu’après validation explicite.
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// file: ks-pipeline-demo-scenarios/src/environment.rs
|
||||
// version: 5
|
||||
// version: 6
|
||||
|
||||
//! Environment initialization for opt-in demonstration scenarios.
|
||||
|
||||
@@ -151,8 +151,9 @@ pub async fn prepare_demo_devnet_profile_store(
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
fn example_config() -> ks_config::AppConfig {
|
||||
return match ks_config::parse_config_json(include_str!("../../config/app.config.json"))
|
||||
{
|
||||
return match ks_config::parse_config_json(include_str!(
|
||||
"../../test-fixtures/config/resolved.app.config.json"
|
||||
)) {
|
||||
std::result::Result::Ok(value) => value,
|
||||
std::result::Result::Err(error) => panic!("example config parse failed: {error}"),
|
||||
};
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// file: ks-pipeline-demo-scenarios/src/metadata/metaplex_token_metadata/collection_verify_campaign.rs
|
||||
// version: 4
|
||||
// version: 5
|
||||
|
||||
//! Confirmed Devnet collection parent/member `Verify -> Unverify` campaign.
|
||||
|
||||
@@ -648,13 +648,16 @@ mod tests {
|
||||
let path = std::path::PathBuf::from(value);
|
||||
if path.is_absolute() { path } else { workspace_root.join(path) }
|
||||
},
|
||||
std::result::Result::Err(_) => workspace_root.join("config/app.config.json"),
|
||||
std::result::Result::Err(_) => {
|
||||
workspace_root.join("config/ks-pipeline-demo-scenarios.default.config.json")
|
||||
},
|
||||
};
|
||||
let config = ks_config::read_config_json_file_with_environment(
|
||||
let composed = ks_config::read_composed_app_config_with_environment(
|
||||
config_path.as_path(),
|
||||
workspace_root,
|
||||
)
|
||||
.unwrap_or_else(|error| panic!("Devnet configuration loading failed: {error}"));
|
||||
let config = composed.app_config;
|
||||
let profile_name = std::env::var("KS_DEVNET_PROFILE").ok();
|
||||
let mut profile = crate::resolve_demo_devnet_profile(&config, profile_name.as_deref())
|
||||
.unwrap_or_else(|error| panic!("Devnet profile resolution failed: {error}"));
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// file: ks-pipeline-demo-scenarios/src/metadata/metaplex_token_metadata/create_mint_campaign.rs
|
||||
// version: 12
|
||||
// version: 13
|
||||
|
||||
//! Confirmed Devnet `Create -> Mint` campaign for one Metaplex asset family.
|
||||
|
||||
@@ -813,13 +813,16 @@ mod tests {
|
||||
let path = std::path::PathBuf::from(value);
|
||||
if path.is_absolute() { path } else { workspace_root.join(path) }
|
||||
},
|
||||
std::result::Result::Err(_) => workspace_root.join("config/app.config.json"),
|
||||
std::result::Result::Err(_) => {
|
||||
workspace_root.join("config/ks-pipeline-demo-scenarios.default.config.json")
|
||||
},
|
||||
};
|
||||
let config = ks_config::read_config_json_file_with_environment(
|
||||
let composed = ks_config::read_composed_app_config_with_environment(
|
||||
config_path.as_path(),
|
||||
workspace_root,
|
||||
)
|
||||
.unwrap_or_else(|error| panic!("Devnet configuration loading failed: {error}"));
|
||||
let config = composed.app_config;
|
||||
let profile_name = std::env::var("KS_DEVNET_PROFILE").ok();
|
||||
let mut profile = crate::resolve_demo_devnet_profile(&config, profile_name.as_deref())
|
||||
.unwrap_or_else(|error| panic!("Devnet profile resolution failed: {error}"));
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// file: ks-pipeline-demo-scenarios/src/metadata/metaplex_token_metadata/devnet_execution.rs
|
||||
// version: 20
|
||||
// version: 21
|
||||
|
||||
//! Real Devnet simulation and submission for current Metaplex Token Metadata operations.
|
||||
|
||||
@@ -1267,7 +1267,7 @@ fn validate_available_signers(
|
||||
mod tests {
|
||||
fn example_devnet_profile() -> ks_config::ProfileConfig {
|
||||
let config = match ks_config::parse_config_json(include_str!(
|
||||
"../../../../config/app.config.json"
|
||||
"../../../../test-fixtures/config/resolved.app.config.json"
|
||||
)) {
|
||||
std::result::Result::Ok(value) => value,
|
||||
std::result::Result::Err(error) => panic!("example config parse failed: {error}"),
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// file: ks-pipeline-demo-scenarios/src/metadata/metaplex_token_metadata/escrow_campaign.rs
|
||||
// version: 4
|
||||
// version: 5
|
||||
|
||||
//! Confirmed Devnet Token Owned Escrow campaign for current Metaplex escrow operations.
|
||||
|
||||
@@ -973,13 +973,16 @@ mod tests {
|
||||
let path = std::path::PathBuf::from(value);
|
||||
if path.is_absolute() { path } else { workspace_root.join(path) }
|
||||
},
|
||||
std::result::Result::Err(_) => workspace_root.join("config/app.config.json"),
|
||||
std::result::Result::Err(_) => {
|
||||
workspace_root.join("config/ks-pipeline-demo-scenarios.default.config.json")
|
||||
},
|
||||
};
|
||||
let config = ks_config::read_config_json_file_with_environment(
|
||||
let composed = ks_config::read_composed_app_config_with_environment(
|
||||
config_path.as_path(),
|
||||
workspace_root,
|
||||
)
|
||||
.unwrap_or_else(|error| panic!("Devnet configuration loading failed: {error}"));
|
||||
let config = composed.app_config;
|
||||
let profile_name = std::env::var("KS_DEVNET_PROFILE").ok();
|
||||
let mut profile = crate::resolve_demo_devnet_profile(&config, profile_name.as_deref())
|
||||
.unwrap_or_else(|error| panic!("Devnet profile resolution failed: {error}"));
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// file: ks-pipeline-demo-scenarios/src/metadata/metaplex_token_metadata/maintenance_campaign.rs
|
||||
// version: 6
|
||||
// version: 7
|
||||
|
||||
//! Final bounded Devnet qualification campaign for current Metaplex maintenance operations.
|
||||
|
||||
@@ -577,13 +577,16 @@ mod tests {
|
||||
let path = std::path::PathBuf::from(value);
|
||||
if path.is_absolute() { path } else { workspace_root.join(path) }
|
||||
},
|
||||
std::result::Result::Err(_) => workspace_root.join("config/app.config.json"),
|
||||
std::result::Result::Err(_) => {
|
||||
workspace_root.join("config/ks-pipeline-demo-scenarios.default.config.json")
|
||||
},
|
||||
};
|
||||
let config = ks_config::read_config_json_file_with_environment(
|
||||
let composed = ks_config::read_composed_app_config_with_environment(
|
||||
config_path.as_path(),
|
||||
workspace_root,
|
||||
)
|
||||
.unwrap_or_else(|error| panic!("Devnet configuration loading failed: {error}"));
|
||||
let config = composed.app_config;
|
||||
let profile_name = std::env::var("KS_DEVNET_PROFILE").ok();
|
||||
let mut profile = crate::resolve_demo_devnet_profile(&config, profile_name.as_deref())
|
||||
.unwrap_or_else(|error| panic!("Devnet profile resolution failed: {error}"));
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// file: ks-pipeline-demo-scenarios/src/metadata/metaplex_token_metadata/pnft_lifecycle_campaign.rs
|
||||
// version: 6
|
||||
// version: 7
|
||||
|
||||
//! Confirmed Devnet pNFT delegate, lock, unlock, revoke and transfer campaign.
|
||||
|
||||
@@ -1071,13 +1071,16 @@ mod tests {
|
||||
let path = std::path::PathBuf::from(value);
|
||||
if path.is_absolute() { path } else { workspace_root.join(path) }
|
||||
},
|
||||
std::result::Result::Err(_) => workspace_root.join("config/app.config.json"),
|
||||
std::result::Result::Err(_) => {
|
||||
workspace_root.join("config/ks-pipeline-demo-scenarios.default.config.json")
|
||||
},
|
||||
};
|
||||
let config = ks_config::read_config_json_file_with_environment(
|
||||
let composed = ks_config::read_composed_app_config_with_environment(
|
||||
config_path.as_path(),
|
||||
workspace_root,
|
||||
)
|
||||
.unwrap_or_else(|error| panic!("Devnet configuration loading failed: {error}"));
|
||||
let config = composed.app_config;
|
||||
let profile_name = std::env::var("KS_DEVNET_PROFILE").ok();
|
||||
let mut profile = crate::resolve_demo_devnet_profile(&config, profile_name.as_deref())
|
||||
.unwrap_or_else(|error| panic!("Devnet profile resolution failed: {error}"));
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// file: ks-pipeline-demo-scenarios/src/metadata/metaplex_token_metadata/print_burn_campaign.rs
|
||||
// version: 7
|
||||
// version: 8
|
||||
|
||||
//! Devnet printable master NFT `Print -> Burn` campaign.
|
||||
|
||||
@@ -1180,13 +1180,16 @@ mod tests {
|
||||
let path = std::path::PathBuf::from(value);
|
||||
if path.is_absolute() { path } else { workspace_root.join(path) }
|
||||
},
|
||||
std::result::Result::Err(_) => workspace_root.join("config/app.config.json"),
|
||||
std::result::Result::Err(_) => {
|
||||
workspace_root.join("config/ks-pipeline-demo-scenarios.default.config.json")
|
||||
},
|
||||
};
|
||||
let config = ks_config::read_config_json_file_with_environment(
|
||||
let composed = ks_config::read_composed_app_config_with_environment(
|
||||
config_path.as_path(),
|
||||
workspace_root,
|
||||
)
|
||||
.unwrap_or_else(|error| panic!("Devnet configuration loading failed: {error}"));
|
||||
let config = composed.app_config;
|
||||
let profile_name = std::env::var("KS_DEVNET_PROFILE").ok();
|
||||
let mut profile = crate::resolve_demo_devnet_profile(&config, profile_name.as_deref())
|
||||
.unwrap_or_else(|error| panic!("Devnet profile resolution failed: {error}"));
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// file: ks-pipeline-demo-scenarios/src/metadata/metaplex_token_metadata/use_campaign.rs
|
||||
// version: 4
|
||||
// version: 5
|
||||
|
||||
//! Bounded Devnet availability probe for the current Metaplex `Use` surface.
|
||||
|
||||
@@ -425,13 +425,16 @@ mod tests {
|
||||
let path = std::path::PathBuf::from(value);
|
||||
if path.is_absolute() { path } else { workspace_root.join(path) }
|
||||
},
|
||||
std::result::Result::Err(_) => workspace_root.join("config/app.config.json"),
|
||||
std::result::Result::Err(_) => {
|
||||
workspace_root.join("config/ks-pipeline-demo-scenarios.default.config.json")
|
||||
},
|
||||
};
|
||||
let config = ks_config::read_config_json_file_with_environment(
|
||||
let composed = ks_config::read_composed_app_config_with_environment(
|
||||
config_path.as_path(),
|
||||
workspace_root,
|
||||
)
|
||||
.unwrap_or_else(|error| panic!("Devnet configuration loading failed: {error}"));
|
||||
let config = composed.app_config;
|
||||
let profile_name = std::env::var("KS_DEVNET_PROFILE").ok();
|
||||
let mut profile = crate::resolve_demo_devnet_profile(&config, profile_name.as_deref())
|
||||
.unwrap_or_else(|error| panic!("Devnet profile resolution failed: {error}"));
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// file: ks-pipeline-demo-scenarios/src/solana.rs
|
||||
// version: 14
|
||||
// version: 15
|
||||
|
||||
//! Devnet Solana execution orchestration with canonical post-validation.
|
||||
|
||||
@@ -1224,11 +1224,12 @@ pub(crate) fn emit<O>(
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
fn example_devnet_profile() -> ks_config::ProfileConfig {
|
||||
let config =
|
||||
match ks_config::parse_config_json(include_str!("../../config/app.config.json")) {
|
||||
std::result::Result::Ok(value) => value,
|
||||
std::result::Result::Err(error) => panic!("example config parse failed: {error}"),
|
||||
};
|
||||
let config = match ks_config::parse_config_json(include_str!(
|
||||
"../../test-fixtures/config/resolved.app.config.json"
|
||||
)) {
|
||||
std::result::Result::Ok(value) => value,
|
||||
std::result::Result::Err(error) => panic!("example config parse failed: {error}"),
|
||||
};
|
||||
return match crate::resolve_demo_devnet_profile(&config, std::option::Option::None) {
|
||||
std::result::Result::Ok(profile) => profile,
|
||||
std::result::Result::Err(error) => panic!("Devnet profile resolution failed: {error}"),
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// file: ks-pipeline-demo-scenarios/src/spl/associated_token_account.rs
|
||||
// version: 13
|
||||
// version: 14
|
||||
|
||||
//! Devnet ATA execution with stateful and canonical post-validation.
|
||||
|
||||
@@ -993,12 +993,12 @@ mod tests {
|
||||
}
|
||||
|
||||
fn example_devnet_profile() -> ks_config::ProfileConfig {
|
||||
let config =
|
||||
match ks_config::parse_config_json(include_str!("../../../config/app.config.json"))
|
||||
{
|
||||
std::result::Result::Ok(value) => value,
|
||||
std::result::Result::Err(error) => panic!("example config parse failed: {error}"),
|
||||
};
|
||||
let config = match ks_config::parse_config_json(include_str!(
|
||||
"../../../test-fixtures/config/resolved.app.config.json"
|
||||
)) {
|
||||
std::result::Result::Ok(value) => value,
|
||||
std::result::Result::Err(error) => panic!("example config parse failed: {error}"),
|
||||
};
|
||||
return match crate::resolve_demo_devnet_profile(&config, std::option::Option::None) {
|
||||
std::result::Result::Ok(profile) => profile,
|
||||
std::result::Result::Err(error) => panic!("Devnet profile resolution failed: {error}"),
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// file: ks-pipeline-demo-scenarios/src/spl/memo.rs
|
||||
// version: 9
|
||||
// version: 10
|
||||
|
||||
//! Devnet SPL Memo v4 execution with canonical post-validation.
|
||||
|
||||
@@ -754,12 +754,12 @@ fn decode_completed(summary: &ks_pipeline::DecodeReplaySummary) -> bool {
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
fn example_devnet_profile() -> ks_config::ProfileConfig {
|
||||
let config =
|
||||
match ks_config::parse_config_json(include_str!("../../../config/app.config.json"))
|
||||
{
|
||||
std::result::Result::Ok(value) => value,
|
||||
std::result::Result::Err(error) => panic!("example config parse failed: {error}"),
|
||||
};
|
||||
let config = match ks_config::parse_config_json(include_str!(
|
||||
"../../../test-fixtures/config/resolved.app.config.json"
|
||||
)) {
|
||||
std::result::Result::Ok(value) => value,
|
||||
std::result::Result::Err(error) => panic!("example config parse failed: {error}"),
|
||||
};
|
||||
return match crate::resolve_demo_devnet_profile(&config, std::option::Option::None) {
|
||||
std::result::Result::Ok(profile) => profile,
|
||||
std::result::Result::Err(error) => panic!("Devnet profile resolution failed: {error}"),
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// file: ks-pipeline-demo-scenarios/src/spl/token/execution.rs
|
||||
// version: 13
|
||||
// version: 14
|
||||
|
||||
//! Devnet classic SPL Token execution with stateful and canonical post-validation.
|
||||
|
||||
@@ -975,7 +975,7 @@ pub(crate) fn decode_completed(summary: &ks_pipeline::DecodeReplaySummary) -> bo
|
||||
mod tests {
|
||||
fn example_devnet_profile() -> ks_config::ProfileConfig {
|
||||
let config = match ks_config::parse_config_json(include_str!(
|
||||
"../../../../config/app.config.json"
|
||||
"../../../../test-fixtures/config/resolved.app.config.json"
|
||||
)) {
|
||||
std::result::Result::Ok(value) => value,
|
||||
std::result::Result::Err(error) => panic!("example config parse failed: {error}"),
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// file: ks-pipeline-demo-scenarios/src/spl/token/lifecycle.rs
|
||||
// version: 12
|
||||
// version: 13
|
||||
|
||||
//! Controlled Devnet lifecycle for freshly prepared classic SPL Token accounts.
|
||||
|
||||
@@ -1688,7 +1688,7 @@ mod tests {
|
||||
|
||||
fn example_devnet_profile() -> ks_config::ProfileConfig {
|
||||
let config = match ks_config::parse_config_json(include_str!(
|
||||
"../../../../config/app.config.json"
|
||||
"../../../../test-fixtures/config/resolved.app.config.json"
|
||||
)) {
|
||||
std::result::Result::Ok(value) => value,
|
||||
std::result::Result::Err(error) => panic!("example config parse failed: {error}"),
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// file: ks-pipeline-demo-scenarios/src/spl/token_2022/metadata/campaign.rs
|
||||
// version: 7
|
||||
// version: 8
|
||||
|
||||
//! Ordered confirmed Devnet campaign for the five Token-2022 Token Metadata instructions.
|
||||
|
||||
@@ -502,13 +502,16 @@ mod tests {
|
||||
let path = std::path::PathBuf::from(value);
|
||||
if path.is_absolute() { path } else { workspace_root.join(path) }
|
||||
},
|
||||
std::result::Result::Err(_) => workspace_root.join("config/app.config.json"),
|
||||
std::result::Result::Err(_) => {
|
||||
workspace_root.join("config/ks-pipeline-demo-scenarios.default.config.json")
|
||||
},
|
||||
};
|
||||
let config = ks_config::read_config_json_file_with_environment(
|
||||
let composed = ks_config::read_composed_app_config_with_environment(
|
||||
config_path.as_path(),
|
||||
workspace_root,
|
||||
)
|
||||
.unwrap_or_else(|error| panic!("Devnet configuration loading failed: {error}"));
|
||||
let config = composed.app_config;
|
||||
let profile_name = std::env::var("KS_DEVNET_PROFILE").ok();
|
||||
let mut profile = crate::resolve_demo_devnet_profile(&config, profile_name.as_deref())
|
||||
.unwrap_or_else(|error| panic!("Devnet profile resolution failed: {error}"));
|
||||
|
||||
Reference in New Issue
Block a user