CoolFace
Datasetpublic

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.

sourceHugging Facemitupdated 7mo agoView on Hugging Face
0likes23downloads
Dataset Card

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

SplitConfigRecordsplan_readybelow_threshold
traindefault6,0005,051 (84.2%)949 (15.8%)
testdefault1,5001,277 (85.1%)223 (14.9%)
testhard1,0001,000 (100%)0

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.

Metricdefault alldefault plannedhard allhard planned
avg actions per plan3.474.125.505.50
avg topological depth3.474.125.505.50
max topological depth10101010
avg residual risk0.04200.02610.04290.0429
avg total cost0.30930.30930.46780.4678
plans reaching residual = 0.074.0%74.0%66.4%66.4%
avg risk reduction96.5%96.5%94.8%94.8%
median risk reduction100.0%100.0%100.0%100.0%
records with injected deps33.6%33.6%67.9%67.9%
unique execution sequences3838----

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)

MetricValue
mean0.5191
stdev0.2701
min / max0.0502 / 0.9899

Input risk distribution (hard)

MetricValue
mean0.8692
min / max0.7500 / 0.9898

Quick Start

python
from datasets import load_dataset

ds = load_dataset("vkatg/dag_remediation_traces")
train = ds["train"]
test  = ds["test"]
python
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

FieldTypeDescription
patient_idstringSynthetic patient identifier (P-000000 format)
input.risk_scorefloatRe-identification risk score (0.0 to 1.0)
input.retok_probfloatRe-tokenization probability (influences retokenize_text scoring)
input.active_modalitieslistActive data modalities: text, image, audio, ehr
input.budgetfloatTotal cost budget for the remediation plan
planlistOrdered list of actions with priority, cost, risk_delta, deps
trace.selected_actionslistActions chosen by the scorer before dependency injection
trace.injected_depslistDependencies automatically injected to satisfy action prerequisites
trace.topo_orderlistFinal topological execution order
trace.score_breakdowndictPer-action priority scores
estimated_residual_riskfloatRisk remaining after all actions execute
total_costfloatSum of costs across all actions including injected deps
statusstringplan_ready or below_threshold

Action Catalog (14 actions)

ActionCostRisk ReductionModalities
mask_direct_id0.050.35text, image
generalize_dob0.030.12text, ehr
suppress_geo0.040.10text, ehr
redact_image_face0.120.20image
redact_image_tag0.080.14image
strip_audio_voice0.150.18audio
anon_audio_content0.100.12audio
drop_rare_code0.060.09ehr
k_anon_table0.200.22ehr, text
perturb_numerics0.070.07ehr
retokenize_text0.090.11text
cross_modal_unlink0.180.28all
federated_noise0.250.15all
audit_log_purge0.020.03all

Dependency graph

Some actions require others to run first:

  • —retokenize_text requires mask_direct_id
  • —k_anon_table requires generalize_dob, suppress_geo, drop_rare_code
  • —cross_modal_unlink requires redact_image_face, strip_audio_voice, mask_direct_id
  • —federated_noise requires k_anon_table, cross_modal_unlink
  • —audit_log_purge requires federated_noise
  • —redact_image_tag requires redact_image_face
  • —anon_audio_content requires strip_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)

ActionOccurrences
maskdirectid4,208
generalize_dob4,175
suppress_geo3,312
crossmodalunlink1,388
retokenize_text1,156
redactimagetag950
auditlogpurge352
redactimageface306
stripaudiovoice233
droprarecode189

Sample Record

json
{
  "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

bash
python generate_dag_traces.py

The 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

ModelRole
vkatg/exposureguard-dagplannerModel trained/evaluated on this dataset
vkatg/exposureguard-fedcrdt-distillProduces risk_score and retok_prob inputs
vkatg/exposureguard-dcpg-encoderAlternative source of risk_score

Related Datasets

Citation

bibtex
@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.