v0.3.7-pre.011

This commit is contained in:
2026-09-02 19:50:01 +02:00
parent 313d2a1ea6
commit 618f940310
20 changed files with 682 additions and 43 deletions

View File

@@ -1,5 +1,5 @@
// file: crates/ksp-app-backfill-desk/tests/desktop_security.rs
// version: 13
// version: 14
//! Security and dependency-boundary checks for the Backfill Desk scaffold.
@@ -104,7 +104,7 @@ fn pre_002_tauri_commands_remain_centralized() {
assert_eq!(count, 0, "{} declares a Tauri command outside tauri.rs", path.display());
}
}
assert_eq!(command_count, 8);
assert_eq!(command_count, 9);
}
#[test]
@@ -295,3 +295,47 @@ fn pre_010_cancel_surface_targets_backend_job_identity_without_business_payloads
assert!(!cancel_source.contains(forbidden), "Cancel tracing includes forbidden campaign payload marker {forbidden}");
}
}
#[test]
fn pre_011_resume_surface_exposes_only_new_job_acknowledgement_and_never_checkpoint_payload() {
let root = app_root();
let dto_source = read_text(root.join("src/dto_backfill.rs").as_path());
let dto = struct_source(dto_source.as_str(), "BackfillResumeResponseDto");
for required in ["accepted", "job_id", "state"] {
assert!(dto.contains(required), "Resume acknowledgement missing safe field {required}");
}
for forbidden in [
"pub(crate) address:",
"pub(crate) signature:",
"pub(crate) endpoint:",
"pub(crate) provider:",
"pub(crate) credential:",
"pub(crate) token:",
"pub(crate) checkpoint:",
"pub(crate) payload:",
"pub(crate) network:",
] {
assert!(!dto.contains(forbidden), "Resume acknowledgement leaks forbidden field marker {forbidden}");
}
let tauri = read_text(root.join("src/tauri.rs").as_path());
let resume_marker = tauri.find("fn backfill_resume");
assert!(resume_marker.is_some());
let resume_source = match resume_marker {
std::option::Option::Some(index) => &tauri[index..std::cmp::min(index + 1300, tauri.len())],
std::option::Option::None => "",
};
for forbidden in ["BackfillCheckpoint", "checkpoint:", "address:", "signature:", "provider:", "endpoint:"] {
assert!(!resume_source.contains(forbidden), "Resume IPC command leaks forbidden marker {forbidden}");
}
let frontend = read_text(root.join("frontend/ts/main.ts").as_path());
let resume_marker = frontend.find("Backfill Desk in-session Resume requested");
assert!(resume_marker.is_some());
let resume_source = match resume_marker {
std::option::Option::Some(index) => &frontend[index..std::cmp::min(index + 1100, frontend.len())],
std::option::Option::None => "",
};
assert!(resume_source.contains("backfill_resume"));
for forbidden in ["checkpoint:", "address:", "anchorSignature:", "explicitSignatures:", "minContextSlot:"] {
assert!(!resume_source.contains(forbidden), "Resume frontend sends or logs forbidden payload marker {forbidden}");
}
}