0.3.15-pre.012
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
// file: crates/ksp-app-raw-transaction-ingest-desk/tests/desktop_contract.rs
|
||||
// version: 9
|
||||
// version: 10
|
||||
|
||||
//! Desktop scaffold contract canaries for Raw Transaction Ingest Desk.
|
||||
|
||||
@@ -274,3 +274,36 @@ fn pre_011_fix_001_monitoring_bridge_is_bounded_and_steady_updates_preserve_rout
|
||||
assert!(main.contains(required), "missing pre.011-fix.001 stable-control marker {required}");
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn pre_012_window_shutdown_and_start_stop_races_are_bounded_backend_owned() {
|
||||
let tauri = read_text(app_root().join("src/tauri.rs").as_path());
|
||||
for required in [
|
||||
"configure_window_events(builder)",
|
||||
"tauri::WindowEvent::CloseRequested",
|
||||
"api.prevent_close()",
|
||||
"state.begin_shutdown()",
|
||||
"state.shutdown_routes().await",
|
||||
"app_handle.exit(0)",
|
||||
"app_handle.exit(1)",
|
||||
] {
|
||||
assert!(tauri.contains(required), "missing pre.012 bounded shutdown marker {required}");
|
||||
}
|
||||
let runtime = read_text(app_root().join("src/route_runtime.rs").as_path());
|
||||
for required in [
|
||||
"shutting_down: bool",
|
||||
"stop_requested: bool",
|
||||
"ROUTE_SHUTDOWN_TIMEOUT",
|
||||
"ensure_start_admission_open",
|
||||
"shutdown_and_wait",
|
||||
"RouteStopTarget::Starting",
|
||||
"*stop_requested = true",
|
||||
"handle.request_stop()",
|
||||
] {
|
||||
assert!(runtime.contains(required), "missing pre.012 route-race marker {required}");
|
||||
}
|
||||
let app_state = read_text(app_root().join("src/app_state.rs").as_path());
|
||||
assert!(app_state.contains("let generation = self.inventory_generation.lock()"));
|
||||
assert!(app_state.contains("std::mem::drop(generation)"));
|
||||
assert!(app_state.contains("self.route_runtime.ensure_start_admission_open()"));
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// file: crates/ksp-app-raw-transaction-ingest-desk/tests/desktop_security.rs
|
||||
// version: 8
|
||||
// version: 9
|
||||
|
||||
//! Desktop security canaries for the Raw Transaction Ingest Desk scaffold.
|
||||
|
||||
@@ -195,3 +195,31 @@ fn pre_011_frontend_monitoring_tracing_is_source_neutral_and_does_not_log_raw_ma
|
||||
assert!(!main.contains("frontendTrace(\"main\", \"Raw Transaction Ingest Desk route monitoring latest value applied\", status"));
|
||||
assert!(!main.contains("frontendDebug(\"main\", \"Raw Transaction Ingest Desk route monitoring resynchronization completed\", statuses"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn pre_012_hostile_ipc_is_shape_strict_bounded_and_safely_projected() {
|
||||
let dto = read_text(app_root().join("src/dto_route.rs").as_path());
|
||||
assert!(dto.matches("deny_unknown_fields").count() >= 2);
|
||||
assert!(dto.contains("RAW_INGEST_PROFILE_ID_MAX_BYTES: usize = 256"));
|
||||
assert!(dto.contains("validate_logical_identity"));
|
||||
assert!(dto.contains("ERROR_CODE_ROUTE_REQUEST_INVALID"));
|
||||
let frontend_logging = read_text(app_root().join("src/frontend_logging.rs").as_path());
|
||||
for required in [
|
||||
"deny_unknown_fields",
|
||||
"FRONTEND_LOG_MESSAGE_MAX_BYTES: usize = 8192",
|
||||
"FRONTEND_LOG_SELECTOR_MAX_BYTES: usize = 16",
|
||||
"payload.message.chars().any(char::is_control)",
|
||||
"ERROR_CODE_FRONTEND_LOG_PAYLOAD_INVALID",
|
||||
"eq_ignore_ascii_case",
|
||||
] {
|
||||
assert!(frontend_logging.contains(required), "missing pre.012 frontend IPC guard {required}");
|
||||
}
|
||||
assert!(!frontend_logging.contains("to_ascii_lowercase()"));
|
||||
let frontend = read_text(app_root().join("frontend/ts/frontend_log.ts").as_path());
|
||||
assert!(frontend.contains("FRONTEND_LOG_MESSAGE_MAX_CODE_UNITS = 1024"));
|
||||
assert!(frontend.contains("boundMessage(message)"));
|
||||
let tauri = read_text(app_root().join("src/tauri.rs").as_path());
|
||||
assert!(tauri.contains("error_domain = error.code().domain()"));
|
||||
assert!(tauri.contains("error_code = error.code().code()"));
|
||||
assert!(!tauri.contains("error = ?error"));
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// file: crates/ksp-app-raw-transaction-ingest-desk/tests/release_completeness.rs
|
||||
// version: 11
|
||||
// version: 12
|
||||
|
||||
//! Release-completeness canaries for Raw Transaction Ingest Desk Start-resource reconstruction.
|
||||
|
||||
@@ -200,3 +200,27 @@ fn pre_011_fix_001_preserves_latest_value_contract_without_backend_module_growth
|
||||
assert!(main.contains("renderRouteMonitoringCard"));
|
||||
assert!(main.contains("renderSelectedProfile"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn pre_012_race_shutdown_and_ipc_hardening_adds_no_production_module_or_lower_layer_growth() {
|
||||
let lib = read_text(app_root().join("src/lib.rs").as_path());
|
||||
assert_eq!(lib.matches("mod ").count(), 16);
|
||||
for required in [
|
||||
"ERROR_CODE_FRONTEND_LOG_PAYLOAD_INVALID",
|
||||
"ERROR_CODE_ROUTE_REQUEST_INVALID",
|
||||
"ERROR_CODE_ROUTE_RUNTIME_SHUTTING_DOWN",
|
||||
"ERROR_CODE_ROUTE_RUNTIME_SHUTDOWN_FAILED",
|
||||
] {
|
||||
assert!(lib.contains(required), "missing pre.012 crate-root error export {required}");
|
||||
}
|
||||
let runtime = read_text(app_root().join("src/route_runtime.rs").as_path());
|
||||
assert!(runtime.contains("stop_requested: bool"));
|
||||
assert!(runtime.contains("RouteStopTarget::Starting"));
|
||||
assert!(runtime.contains("cancelled_start_terminal"));
|
||||
assert!(runtime.contains("inner.routes.is_empty()"));
|
||||
let route_start = read_text(app_root().join("src/route_start.rs").as_path());
|
||||
assert!(route_start.contains("build_route_inventory_with_environment"));
|
||||
assert!(route_start.contains("request.validate_logical_identity()"));
|
||||
let worker_manifest = read_text(app_root().join("../ksp-worker-raw-transaction-ingest-lib/Cargo.toml").as_path());
|
||||
assert!(!worker_manifest.contains("ksp-app-raw-transaction-ingest-desk"));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user