0.3.15-pre.012

This commit is contained in:
2026-09-16 10:58:29 +02:00
parent 2f587e22be
commit 31ae38853d
21 changed files with 815 additions and 79 deletions

View File

@@ -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()"));
}

View File

@@ -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"));
}

View File

@@ -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"));
}