Add minimal sensitive-info hygiene plan and projection cause sample diagnostics

This commit is contained in:
2026-03-05 02:21:21 +00:00
parent 2140c5facf
commit f21abd6299
4 changed files with 24 additions and 3 deletions

View File

@@ -179,15 +179,19 @@ def shadow_compare_session(session: ChatSession, detail_limit: int = 50) -> dict
"ambiguous_reaction_target": 0,
"payload_normalization_gap": 0,
}
cause_samples = {key: [] for key in cause_counts.keys()}
cause_sample_limit = min(5, max(0, int(detail_limit)))
def _record_detail(message_id: str, issue: str, cause: str, extra: dict | None = None):
if cause in cause_counts:
cause_counts[cause] += 1
row = {"message_id": message_id, "issue": issue, "cause": cause}
if extra:
row.update(dict(extra))
if len(details) < max(0, int(detail_limit)):
row = {"message_id": message_id, "issue": issue, "cause": cause}
if extra:
row.update(dict(extra))
details.append(row)
if cause in cause_samples and len(cause_samples[cause]) < cause_sample_limit:
cause_samples[cause].append(row)
for message_id, db_row in db_by_id.items():
projected = projected_by_id.get(message_id)
@@ -289,5 +293,6 @@ def shadow_compare_session(session: ChatSession, detail_limit: int = 50) -> dict
"mismatch_total": mismatch_total,
"counters": counters,
"cause_counts": cause_counts,
"cause_samples": cause_samples,
"details": details,
}