FlowRadar v2
Overview
FlowRadar v2 evaluates a complete training and inference pipeline. Miners submit a trainer and detector instead of a single fixed heuristic file.
The challenge trains every submission with the same mandatory
v2_train_data.csv, then evaluates the trained model against
v2_test_data.csv.
Miner Output
The miner API must return:
{
"commit_files": [
{
"file_name": "train.py",
"content": "..."
},
{
"file_name": "submissions.py",
"content": "..."
}
]
}
commit_files must contain exactly one train.py and one submissions.py.
Training Contract
The challenge invokes:
train.py must:
- read the mandatory CSV path from
sys.argv[1] - use
vpn_is_enabledas the label - write valid JSON to
sys.argv[2] - finish within the configured training timeout
- keep the generated JSON below the configured model-size limit
Production always provides v2_train_data.csv. A miner cannot provide or
choose a different training dataset.
The model JSON remains temporary inside the FlowRadar container and is removed after scoring.
Model Weight Policy
Miners must not embed model weights in train.py or submissions.py.
Prohibited content includes:
- pretrained parameters
- serialized or encoded model blobs
- hard-coded learned coefficients or weight arrays
- lookup tables representing externally learned model state
- fallback weights used when the generated model is unavailable
All learned weights must be generated by train.py from the mandatory
v2_train_data.csv during the current scoring run. submissions.py may only
use those weights through the provided model argument.
Ordinary algorithm configuration and hyperparameters are allowed when they do not contain pretrained or externally generated learned state.
Inference Contract
submissions.py must expose:
featurescontains one row fromv2_test_data.csv.- The challenge removes
vpn_is_enabledbefore inference. modelis the parsed JSON produced bytrain.py.- The function must return a Python boolean.
Empty CSV cells are passed as JSON null. Inference should tolerate missing
optional fields, numeric values, JA4 strings, and sequence strings.
Isolation
Training and inference execute inside an isolated FlowRadar container:
- miner scripts and training data are mounted read-only
- the model is written only to temporary container storage
- the container uses an internal network
- training timeout and model JSON validation are enforced
- the container is destroyed after scoring
Scoring
FlowRadar uses F1 score for the VPN-positive class:
precision = TP / (TP + FP)
recall = TP / (TP + FN)
F1 = 2 * precision * recall / (precision + recall)
Scoring can stop early when request failures exceed the configured acceptable miss count.
Submission Limits
- exactly two commit files
- maximum configured line count per file
- valid JSON model output
- model JSON within configured size limit
- training within the configured timeout
- inference within the configured per-request timeout
- no bypass, obfuscation, host-access, or environment-escape techniques
- no embedded, pretrained, or externally generated learned weights
V1 Compatibility Testing
V1 data has 34 columns and uses is_vpn. It is available only for optional
inference robustness testing.
Do not train the production submission with v1 data. Train with
v2_train_data.csv, rename the v1 test label to vpn_is_enabled, and reindex
the v1 test file to the v2 column shape.
See the Testing Manual for the conversion command.