0.5.1-pre.004

This commit is contained in:
2026-08-09 22:52:37 +02:00
parent 6151bb25e7
commit ec07ddbd80
53 changed files with 989 additions and 886 deletions

View File

@@ -1,5 +1,5 @@
// file: ks-pipeline-demo-scenarios/src/spl/token/lifecycle.rs
// version: 10
// version: 11
//! Controlled Devnet lifecycle for freshly prepared classic SPL Token accounts.
@@ -1500,24 +1500,24 @@ mod tests {
#[tokio::test]
async fn optional_devnet_controlled_lifecycle_from_env() {
if std::env::var("KB_DEVNET_SPL_TOKEN_LIFECYCLE_TEST").ok().as_deref()
if std::env::var("KS_DEVNET_SPL_TOKEN_LIFECYCLE_TEST").ok().as_deref()
!= std::option::Option::Some("1")
{
return;
}
if std::env::var("KB_DEVNET_SPL_TOKEN_LIFECYCLE_SUBMIT").ok().as_deref()
if std::env::var("KS_DEVNET_SPL_TOKEN_LIFECYCLE_SUBMIT").ok().as_deref()
!= std::option::Option::Some("1")
{
panic!("controlled lifecycle requires KB_DEVNET_SPL_TOKEN_LIFECYCLE_SUBMIT=1");
panic!("controlled lifecycle requires KS_DEVNET_SPL_TOKEN_LIFECYCLE_SUBMIT=1");
}
let mut profile = example_devnet_profile();
if let std::result::Result::Ok(directory) = std::env::var("KB_DEVNET_WALLET_DIR") {
if let std::result::Result::Ok(directory) = std::env::var("KS_DEVNET_WALLET_DIR") {
profile.wallet.wallet_dir = directory;
}
let database_url = match std::env::var("KB_POSTGRES_TEST_URL") {
let database_url = match std::env::var("KS_SECRET_POSTGRES_TEST_URL") {
std::result::Result::Ok(value) => value,
std::result::Result::Err(error) => {
panic!("KB_POSTGRES_TEST_URL is required for lifecycle submission: {error}");
panic!("KS_SECRET_POSTGRES_TEST_URL is required for lifecycle submission: {error}");
},
};
profile.database.backend = "postgres".to_string();
@@ -1547,7 +1547,7 @@ mod tests {
std::option::Option::None => panic!("workspace root cannot be resolved"),
};
let observer = LifecycleTestObserver;
let prepared_accounts = if std::env::var("KB_DEVNET_SPL_TOKEN_LIFECYCLE_PREPARE")
let prepared_accounts = if std::env::var("KS_DEVNET_SPL_TOKEN_LIFECYCLE_PREPARE")
.ok()
.as_deref()
== std::option::Option::Some("1")
@@ -1589,7 +1589,7 @@ mod tests {
};
if prepared_accounts.is_some() {
tokio::time::sleep(std::time::Duration::from_millis(optional_u64_env(
"KB_DEVNET_SPL_TOKEN_LIFECYCLE_PREPARATION_SETTLE_DELAY_MS",
"KS_DEVNET_SPL_TOKEN_LIFECYCLE_PREPARATION_SETTLE_DELAY_MS",
10_000,
)))
.await;
@@ -1603,11 +1603,11 @@ mod tests {
value.authority.clone(),
),
std::option::Option::None => (
required_pubkey_env("KB_DEVNET_SPL_TOKEN_LIFECYCLE_MINT"),
required_pubkey_env("KB_DEVNET_SPL_TOKEN_LIFECYCLE_SOURCE"),
required_pubkey_env("KB_DEVNET_SPL_TOKEN_LIFECYCLE_DESTINATION"),
required_pubkey_env("KB_DEVNET_SPL_TOKEN_LIFECYCLE_DELEGATE"),
required_pubkey_env("KB_DEVNET_SPL_TOKEN_LIFECYCLE_AUTHORITY"),
required_pubkey_env("KS_DEVNET_SPL_TOKEN_LIFECYCLE_MINT"),
required_pubkey_env("KS_DEVNET_SPL_TOKEN_LIFECYCLE_SOURCE"),
required_pubkey_env("KS_DEVNET_SPL_TOKEN_LIFECYCLE_DESTINATION"),
required_pubkey_env("KS_DEVNET_SPL_TOKEN_LIFECYCLE_DELEGATE"),
required_pubkey_env("KS_DEVNET_SPL_TOKEN_LIFECYCLE_AUTHORITY"),
),
};
let mut request = crate::DevnetSplTokenLifecycleRequest::new(
@@ -1618,33 +1618,33 @@ mod tests {
delegate,
authority,
);
request.decimals = optional_u8_env("KB_DEVNET_SPL_TOKEN_LIFECYCLE_DECIMALS", 9);
request.decimals = optional_u8_env("KS_DEVNET_SPL_TOKEN_LIFECYCLE_DECIMALS", 9);
request.mint_amount = ks_lib::ExSplClassicTokenAmount(optional_string_env(
"KB_DEVNET_SPL_TOKEN_LIFECYCLE_MINT_AMOUNT",
"KS_DEVNET_SPL_TOKEN_LIFECYCLE_MINT_AMOUNT",
"10",
));
request.transfer_amount = ks_lib::ExSplClassicTokenAmount(optional_string_env(
"KB_DEVNET_SPL_TOKEN_LIFECYCLE_TRANSFER_AMOUNT",
"KS_DEVNET_SPL_TOKEN_LIFECYCLE_TRANSFER_AMOUNT",
"4",
));
request.approve_amount = ks_lib::ExSplClassicTokenAmount(optional_string_env(
"KB_DEVNET_SPL_TOKEN_LIFECYCLE_APPROVE_AMOUNT",
"KS_DEVNET_SPL_TOKEN_LIFECYCLE_APPROVE_AMOUNT",
"2",
));
request.submit = true;
request.operator_confirmed = true;
request.post_validation_max_retries = 20;
request.first_step_index =
optional_u8_env("KB_DEVNET_SPL_TOKEN_LIFECYCLE_FIRST_STEP_INDEX", 0);
optional_u8_env("KS_DEVNET_SPL_TOKEN_LIFECYCLE_FIRST_STEP_INDEX", 0);
request.resume_predecessor_signature = if request.first_step_index > 0 {
std::option::Option::Some(ks_lib::MdSignature(required_string_env(
"KB_DEVNET_SPL_TOKEN_LIFECYCLE_RESUME_PREDECESSOR_SIGNATURE",
"KS_DEVNET_SPL_TOKEN_LIFECYCLE_RESUME_PREDECESSOR_SIGNATURE",
)))
} else {
std::option::Option::None
};
request.inter_step_delay_ms =
optional_u64_env("KB_DEVNET_SPL_TOKEN_LIFECYCLE_INTER_STEP_DELAY_MS", 2_000);
optional_u64_env("KS_DEVNET_SPL_TOKEN_LIFECYCLE_INTER_STEP_DELAY_MS", 2_000);
let decoders: std::vec::Vec<std::sync::Arc<dyn ks_lib::DcApiInstructionDecoder>> =
std::vec![std::sync::Arc::new(ks_lib::DcSplTokenDecoder)];
let materializers: std::vec::Vec<std::sync::Arc<dyn ks_lib::MtApiEventMaterializer>> =