Lines 1077-1133rust
1077 !diagnostics.attempts_detail.is_empty(),
1078 "E50: E46 consumption gate must preserve per-capture diagnostics"
1080 assert_eq!(diagnostics.attempts_detail[0].attempt_index, 1);
1082 diagnostics.attempts_detail[0]
1084 .contains("Pasted content"),
1085 "E50: recorded pane tail should contain the post-submit capture; got {:?}",
1086 diagnostics.attempts_detail[0]
1090 /// **E50 PR-1 secret scrubbing**: `scrub_pane_excerpt` must strip ANSI
1091 /// + redact common secret shapes so emitted events.jsonl doesn't leak.
1093 fn e50_scrub_pane_excerpt_strips_ansi_and_redacts_secret_shapes() {
1094 use super::scrub_pane_excerpt;
1095 let raw = "\x1b[31merror\x1b[0m: sk-abcdef123ghi\n\
1096 token Bearer abc.def.ghi\n\
1097 key AKIAIOSFODNN7EXAMPLE\n\
CriticalCritical Secret
Package contains a critical-looking secret pattern.
crates/team-agent/src/tmux_backend/tests.rsView on unpkg · L1097 CriticalSecret Pattern
AWS access key ID in crates/team-agent/src/tmux_backend/tests.rs
crates/team-agent/src/tmux_backend/tests.rsView on unpkg · L1097 1098 ghp_1234567890abcdef\n\
1099 hex deadbeefdeadbeefdeadbeefdeadbeefcafebabe\n\
1101 let (out, lines) = scrub_pane_excerpt(raw, 20);
1102 assert!(lines >= 5, "E50: at least 5 non-empty lines; got {lines}");
1103 assert!(!out.contains("\x1b"), "E50: ANSI escape stripped; got {out:?}");
1105 !out.contains("sk-abcdef123ghi"),
1106 "E50: sk- secret must be redacted; got {out:?}"
1109 !out.contains("ghp_1234567890abcdef"),
1110 "E50: ghp_ secret must be redacted; got {out:?}"
1113 !out.contains("AKIAIOSFODNN7EXAMPLE"),
CriticalSecret Pattern
AWS access key ID in crates/team-agent/src/tmux_backend/tests.rs
crates/team-agent/src/tmux_backend/tests.rsView on unpkg · L1113 1114 "E50: AKIA secret must be redacted; got {out:?}"
1117 !out.contains("abc.def.ghi"),
1118 "E50: Bearer secret token must be redacted; got {out:?}"
1121 !out.contains("deadbeefdeadbeefdeadbeefdeadbeefcafebabe"),
1122 "E50: 32+ hex run must be redacted; got {out:?}"
1125 out.contains("REDACTED"),
1126 "E50: redactions visible; got {out:?}"
1129 out.contains("plain text below"),
1130 "E50: non-secret content preserved; got {out:?}"