Skip to content

Commit a2cc5e0

Browse files
authored
Add ClickHouse ingestion for autorevert advisor verdicts (#7906)
## Summary Sets up the S3 → ClickHouse ingestion pipeline for autorevert AI advisor verdicts, following the same pattern as `claude_code_usage`. ## Changes - **`clickhouse_db_schema/misc.autorevert_advisor_verdicts/schema.sql`** — new table storing verdict, confidence, summary, causal_reasoning, plus signal metadata (signal_key, suspect_commit, pr_number, workflow_name) - **`aws/lambda/clickhouse-replicator-s3/lambda_function.py`** — add `autorevert_advisor_verdicts` to `SUPPORTED_PATHS` + adapter function ## S3 path `s3://ossci-raw-job-status/autorevert_advisor_verdicts/<repo>/<run_id>_<run_attempt>.json` ## Dependencies - S3 bucket notification for `autorevert_advisor_verdicts/` prefix → `clickhouse-replicator-s3` Lambda (internal infra change) - S3 write permission for the advisor workflow's IAM role (internal infra change) - Workflow upload step in pytorch/pytorch (separate PR) ## Test plan - [ ] Verify CH table creation - [ ] Verify Lambda adapter handles the JSON format correctly - [ ] End-to-end: workflow uploads verdict → S3 notification → Lambda → CH table
1 parent 4d31567 commit a2cc5e0

2 files changed

Lines changed: 42 additions & 0 deletions

File tree

aws/lambda/clickhouse-replicator-s3/lambda_function.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -690,6 +690,25 @@ def claude_code_usage_adapter(table, bucket, key):
690690
general_adapter(table, bucket, key, schema, ["none"], "JSONEachRow")
691691

692692

693+
def autorevert_advisor_verdicts_adapter(table, bucket, key):
694+
schema = """
695+
`repo` String,
696+
`run_id` Int64,
697+
`run_attempt` Int32,
698+
`timestamp` DateTime64(3),
699+
`suspect_commit` FixedString(40),
700+
`pr_number` Int64,
701+
`signal_key` String,
702+
`signal_source` String,
703+
`workflow_name` String,
704+
`verdict` String,
705+
`confidence` Float32,
706+
`summary` String,
707+
`causal_reasoning` String
708+
"""
709+
general_adapter(table, bucket, key, schema, ["none"], "JSONEachRow")
710+
711+
693712
SUPPORTED_PATHS = {
694713
"merges": "default.merges",
695714
"queue_times_historical": "default.queue_times_historical",
@@ -711,6 +730,7 @@ def claude_code_usage_adapter(table, bucket, key):
711730
"util_timeseries": "misc.oss_ci_time_series",
712731
"disabled_tests_historical": "misc.disabled_tests_historical",
713732
"claude_code_usage": "misc.claude_code_usage",
733+
"autorevert_advisor_verdicts": "misc.autorevert_advisor_verdicts",
714734
# fbossci-cloudwatch-metrics bucket
715735
"ghci-related": "infra_metrics.cloudwatch_metrics",
716736
"test_jsons_while_running": "tests.all_test_runs",
@@ -738,6 +758,7 @@ def claude_code_usage_adapter(table, bucket, key):
738758
"misc.oss_ci_time_series": oss_ci_util_time_series_adapter,
739759
"misc.disabled_tests_historical": disabled_tests_historical_adapter,
740760
"misc.claude_code_usage": claude_code_usage_adapter,
761+
"misc.autorevert_advisor_verdicts": autorevert_advisor_verdicts_adapter,
741762
"infra_metrics.cloudwatch_metrics": cloudwatch_metrics_adapter,
742763
}
743764

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
CREATE TABLE misc.autorevert_advisor_verdicts
2+
(
3+
`repo` LowCardinality(String),
4+
`run_id` Int64,
5+
`run_attempt` Int32,
6+
`timestamp` DateTime64(3),
7+
`suspect_commit` FixedString(40),
8+
`pr_number` Int64,
9+
`signal_key` String,
10+
`signal_source` LowCardinality(String),
11+
`workflow_name` String,
12+
`verdict` Enum8('revert' = 1, 'unsure' = 2, 'not_related' = 3, 'garbage' = 4),
13+
`confidence` Float32,
14+
`summary` String,
15+
`causal_reasoning` String,
16+
`_meta` Tuple(bucket String, key String),
17+
`_inserted_at` DateTime MATERIALIZED now()
18+
)
19+
ENGINE = SharedMergeTree('/clickhouse/tables/{uuid}/{shard}', '{replica}')
20+
ORDER BY (repo, suspect_commit, signal_key, timestamp)
21+
SETTINGS index_granularity = 8192

0 commit comments

Comments
 (0)