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