{ "features": [ "qber_mean", "qber_std", "sift_ratio", "multiphoton_rate", "timing_jitter", "dark_count_rate", "click_asymmetry" ], "classes": [ "normal", "intercept_resend", "photon_number_splitting", "trojan_horse", "detector_blinding", "wavelength_trojan", "rng_manipulation", "combined" ], "note": "8 classes = 7 attack types + normal traffic (ATTACKS[0] == 'normal'), not 'eight attack scenarios'. 'features' are the QKD telemetry statistics the model takes as input, from FEATURES in src/qsh/qml_ids/attacks.py; they are NOT the class labels. An earlier revision of this generator wrote the class labels here, because it unpacked generate()'s third return value - documented as label_names - into a variable called feature_names. Generated from the source, and now true: the JSON was once corrected by hand while this generator kept writing the wrong value, so the next retrain reintroduced it." }