Skip to content

Commit 8b2e937

Browse files
committed
Add machine-readable run summaries
1 parent 5d2d935 commit 8b2e937

6 files changed

Lines changed: 329 additions & 141 deletions

File tree

README.md

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ python -m telemetry_window_demo.cli run --config configs/richer_sample.yaml
3232

3333
That scenario pack reads `data/raw/richer_sample_events.jsonl` and writes outputs to `data/processed/richer_sample/`.
3434
It currently produces `28` normalized events, `24` windows, and `8` alerts.
35+
Both sample paths also emit a compact `summary.json` alongside the CSV and PNG outputs.
3536

3637
## Current behavior
3738

@@ -64,13 +65,16 @@ The richer scenario pack uses a longer `120` second cooldown so the output stays
6465

6566
## Outputs
6667

67-
Running the default command regenerates:
68-
69-
- `data/processed/features.csv`
70-
- `data/processed/alerts.csv`
71-
- `data/processed/event_count_timeline.png`
72-
- `data/processed/error_rate_timeline.png`
73-
- `data/processed/alerts_timeline.png`
68+
Running the default command regenerates:
69+
70+
- `data/processed/features.csv`
71+
- `data/processed/alerts.csv`
72+
- `data/processed/summary.json`
73+
- `data/processed/event_count_timeline.png`
74+
- `data/processed/error_rate_timeline.png`
75+
- `data/processed/alerts_timeline.png`
76+
77+
The summary artifact includes the input path, output directory, normalized event count, window count, feature row count, alert count, triggered rule names and counts, cooldown setting, and generated artifact paths.
7478

7579
## Scope
7680

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
{
2+
"input_path": "data/raw/richer_sample_events.jsonl",
3+
"output_dir": "data/processed/richer_sample",
4+
"normalized_event_count": 28,
5+
"window_count": 24,
6+
"feature_row_count": 24,
7+
"alert_count": 8,
8+
"triggered_rule_names": [
9+
"high_error_rate",
10+
"high_severity_spike",
11+
"login_fail_burst",
12+
"persistent_high_error",
13+
"rare_event_repeat_malware_alert",
14+
"rare_event_repeat_policy_denied"
15+
],
16+
"triggered_rule_counts": {
17+
"high_error_rate": 2,
18+
"high_severity_spike": 1,
19+
"login_fail_burst": 1,
20+
"persistent_high_error": 2,
21+
"rare_event_repeat_malware_alert": 1,
22+
"rare_event_repeat_policy_denied": 1
23+
},
24+
"cooldown_seconds": 120,
25+
"generated_artifacts": [
26+
"data/processed/richer_sample/features.csv",
27+
"data/processed/richer_sample/alerts.csv",
28+
"data/processed/richer_sample/summary.json",
29+
"data/processed/richer_sample/event_count_timeline.png",
30+
"data/processed/richer_sample/error_rate_timeline.png",
31+
"data/processed/richer_sample/alerts_timeline.png"
32+
]
33+
}

data/processed/summary.json

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
{
2+
"input_path": "data/raw/sample_events.jsonl",
3+
"output_dir": "data/processed",
4+
"normalized_event_count": 41,
5+
"window_count": 24,
6+
"feature_row_count": 24,
7+
"alert_count": 12,
8+
"triggered_rule_names": [
9+
"high_error_rate",
10+
"high_severity_spike",
11+
"login_fail_burst",
12+
"persistent_high_error",
13+
"rare_event_repeat_malware_alert",
14+
"source_spread_spike"
15+
],
16+
"triggered_rule_counts": {
17+
"high_error_rate": 3,
18+
"high_severity_spike": 2,
19+
"login_fail_burst": 2,
20+
"persistent_high_error": 3,
21+
"rare_event_repeat_malware_alert": 1,
22+
"source_spread_spike": 1
23+
},
24+
"cooldown_seconds": 60,
25+
"generated_artifacts": [
26+
"data/processed/features.csv",
27+
"data/processed/alerts.csv",
28+
"data/processed/summary.json",
29+
"data/processed/event_count_timeline.png",
30+
"data/processed/error_rate_timeline.png",
31+
"data/processed/alerts_timeline.png"
32+
]
33+
}

0 commit comments

Comments
 (0)