vkatg/dag_remediation_traces
DAG Remediation Traces Author: Venkata Krishna Azith Teja Ganti Part of the ExposureGuard PHI Re-identification Risk Ecosystem Input/output execution traces for budget-constrained PHI remediation planning over multimodal clinical records. Each record pairs a patient risk profile with a complete DAG planning trace: which actions were selected, which dependency injections fired, the topological execution order, and the final residual risk and cost. Use this to train or benchmark… See the full description on the dataset page: https://huggingface.co/datasets/vkatg/dag_remediation_traces.
DAG Remediation Traces
Author: Venkata Krishna Azith Teja Ganti Part of the [ExposureGuard PHI Re-identification Risk Ecosystem](https://huggingface.co/vkatg)
Input/output execution traces for budget-constrained PHI remediation planning over multimodal clinical records. Each record pairs a patient risk profile with a complete DAG planning trace: which actions were selected, which dependency injections fired, the topological execution order, and the final residual risk and cost.
Use this to train or benchmark alternative remediation planners, study cost/risk tradeoffs, or evaluate DAG construction under budget constraints across text, image, audio, and EHR modalities.
Splits
The hard config fixes input risk between 0.75 and 0.99 and caps budget at 0.60, creating a stress-test set where every record requires planning under tight constraints.
Plan quality
Numbers are shown for all records and for planned-only (records where the planner actually ran). The gap between the two reflects the 15.8% of default train records that were already below the risk threshold and received empty plans. The hard split has no below-threshold records so both columns are the same.
The injected deps rate nearly doubles in the hard split (33.6% to 67.9%) -- tighter budgets under high risk force more complex dependency chains.
These metrics are self-reported by the generator. They describe how the planner performs against its own scoring logic, not against externally validated PHI risk reduction.
Input risk distribution (default train)
Input risk distribution (hard)
Quick Start
from datasets import load_dataset
ds = load_dataset("vkatg/dag_remediation_traces")
train = ds["train"]
test = ds["test"]import json
with open("data/train.jsonl") as f:
records = [json.loads(line) for line in f]
planned = [r for r in records if r["status"] == "plan_ready"]
print(len(planned), "planned records")
print("avg residual risk:", sum(r["estimated_residual_risk"] for r in planned) / len(planned))Schema
Action Catalog (14 actions)
Dependency graph
Some actions require others to run first:
retokenize_textrequiresmask_direct_idk_anon_tablerequiresgeneralize_dob,suppress_geo,drop_rare_codecross_modal_unlinkrequiresredact_image_face,strip_audio_voice,mask_direct_idfederated_noiserequiresk_anon_table,cross_modal_unlinkaudit_log_purgerequiresfederated_noiseredact_image_tagrequiresredact_image_faceanon_audio_contentrequiresstrip_audio_voice
When a selected action has unmet dependencies, those dependencies are injected automatically. 33.6% of planned records include at least one injected dependency.
Action frequency (train)
Sample Record
{
"patient_id": "P-000001",
"input": {
"risk_score": 0.9051,
"retok_prob": 0.2147,
"active_modalities": ["ehr"],
"budget": 0.86
},
"plan": [
{"action": "generalize_dob", "priority": 8.1366, "cost": 0.03, "risk_delta": 0.12, "deps": []},
{"action": "suppress_geo", "priority": 5.0854, "cost": 0.04, "risk_delta": 0.10, "deps": []},
{"action": "cross_modal_unlink", "priority": 3.1642, "cost": 0.18, "risk_delta": 0.28, "deps": ["redact_image_face", "strip_audio_voice", "mask_direct_id"]}
],
"trace": {
"selected_actions": ["generalize_dob", "suppress_geo", "cross_modal_unlink", "drop_rare_code", "audit_log_purge", "k_anon_table"],
"injected_deps": ["redact_image_face", "strip_audio_voice", "mask_direct_id", "federated_noise"],
"topo_order": ["generalize_dob", "suppress_geo", "redact_image_face", "strip_audio_voice", "mask_direct_id", "cross_modal_unlink", "drop_rare_code", "federated_noise", "audit_log_purge", "k_anon_table"],
"score_breakdown": {"generalize_dob": 8.1366, "suppress_geo": 5.0854, "cross_modal_unlink": 3.1642}
},
"estimated_residual_risk": 0.0,
"total_cost": 1.1,
"status": "plan_ready"
}Planner Logic
The scorer ranks actions by a return-on-investment signal:
score = (reduces * modality_weight + retok_bonus) / base_cost * log(1 + risk * 5)modality_weight is sampled per record (0.8 to 1.5) for a random subset of active modalities, reflecting variable sensitivity across data types. retok_bonus (+0.15) fires for retokenize_text when retok_prob > 0.55.
Selection adds actions greedily by score until the budget is hit or the risk reduction target is met (target = max(0, risk - 0.20), minimum spend 0.10). Dependency injection runs after selection to ensure topological validity.
Reproduce
python generate_dag_traces.pyThe default train/test splits are deterministic at seed 7. The hard split uses seed 42 with risk sampled from [0.75, 0.99] and budget from [0.30, 0.60].
Related Models
Related Datasets
Citation
@misc{ganti2025exposureguard,
title = {ExposureGuard: Cross-Modal PHI Re-identification Risk Scoring with DCPG and Federated CRDT Distillation},
author = {Ganti, Venkata Krishna Azith Teja},
year = {2025},
doi = {10.5281/zenodo.18865882},
howpublished = {\url{https://huggingface.co/vkatg}}
}License
MIT. Fully synthetic data. Contains no real patient information.
