{ "version": "v9c", "sprint": "A7c", "trained_at": "2026-03-28T17:30:02.968878+00:00", "backbone_source": "v8 (frozen \u2014 CMAPSS+SCANIA heads unchanged)", "vsn_rho_method": "perturbation_sensitivity", "domains": { "cmapss": { "rul_source": "supervised", "onnx": "tft_weights_v8_cmapss.onnx", "note": "Unchanged from v8" }, "scania": { "rul_source": "supervised", "onnx": "tft_weights_v8_scania.onnx", "note": "Unchanged from v8" }, "nist": { "rul_source": "synthetic_estimated", "onnx": "tft_weights_v9c_nist.onnx", "auc": 0.9276, "rmse": 0.6232, "vsn_rho": 0.5868, "vsn_validated": false, "nist_seed": 42 }, "femto": { "rul_source": "supervised", "onnx": "tft_weights_v10a_femto.onnx", "rmse_cycles": 78.5705, "rmse_normalised": 0.2568, "mae_cycles": 39.7257, "r2": -0.0452, "vsn_rho": 0.1341, "vsn_validated": false, "rul_cap": 306, "n_features": 14, "feature_names": [ "H_rms", "H_kurt", "H_peak", "H_crest", "H_skew", "H_shape", "H_impulse", "V_rms", "V_kurt", "V_peak", "V_crest", "V_skew", "V_shape", "V_impulse" ], "backbone_frozen": true, "backbone_version": "v9c", "fpt_method": "H_rms > mean+3.0\u03c3 (healthy_pct=0.1)" }, "nist_anomaly": { "rul_source": "none", "head_type": "anomaly_only", "onnx": "tft_weights_v11a_nist_anomaly.onnx", "auc": 0.9216, "vsn_rho": 0.5692, "auc_validated": true, "n_sensors": 14, "window_size": 30, "backbone_frozen": true, "backbone_version": "v9c", "training_data": "mds2-2361 nominal (nist_windows_v9c.npz cache)", "note": "ESTIMATED \u2014 synthetic anomaly labels from A7c cache." }, "cnc": { "rul_source": "supervised", "head_type": "rul_anomaly", "onnx": "tft_weights_v12a_cnc.onnx", "scaler": "cnc_scaler_v12a.pkl", "rmse_um": 36.6639, "rmse_normalised": 0.2444, "mae_um": 35.2722, "r2": -0.4361, "vsn_rho": 0.3495, "vsn_validated": false, "vb_cap": 150.0, "vb_fpt": 50.0, "n_features": 14, "feature_names": [ "mean", "std", "rms", "kurtosis", "peak", "crest_factor", "skewness", "shape_factor", "impulse_factor", "variance", "peak_to_peak", "mav", "zero_crossing_rate", "waveform_length" ], "train_cutter": "c4", "val_cutter": "c6", "backbone_frozen": true, "backbone_version": "v9c", "dataset": "PHM 2010 (C4 train, C6 validate)", "note": "ESTIMATED if rho < 0.75. C1 not in mirror \u2014 C4/C6 only." }, "cnc_nuaa": { "onnx_path": "tft_weights_v15a_cnc_nuaa.onnx", "scaler_path": "cnc_nuaa_scaler_v15a.pkl", "rul_cap": 0.3, "rul_cap_unit": "mm", "vb_cap_mm": 0.3, "signals": [ "bending_moment_x", "bending_moment_y", "torsion", "axial_force", "spindle_power", "spindle_current" ], "n_stats": 7, "seq_len": 5, "input_dim": 42, "nrmse": 0.6785, "r2": -2.0818, "vsn_rho": 0.0746, "badge": "ESTIMATED", "dataset": "NUAA Ideahouse (IEEE DataPort DOI:10.21227/3aa1-5e83)", "opc_ua_proxy": "bending_moment+torsion+spindle ~ /Nck/Spindle/driveLoad" } }, "product_classifier": { "version": "v1", "onnx": "product_classifier_v1.onnx", "scaler": "product_classifier_scaler_v1.pkl", "labels": "product_classifier_labels_v1.pkl", "n_features": 14, "feature_names": [ "Total_running_time_NC_program", "Tool_number_Magazine_9998_Place_1", "Spindle_position_error", "Z-axis_position_MCS", "X-axis_position_MCS", "Spindle_angular_velocity", "Spindle_speed", "Spindle_smoothed_speed", "X-axis_position_WCS", "Z-axis_position_WCS", "ToolChange_smoothed_current_value", "ToolChange_smoothed_torque", "Net_running_time_program", "Tool_number_Magazine_Place_6" ], "product_labels": [ 1.0, 2.0, 3.0 ], "n_classes": 3, "window_size": 30, "conf_threshold": 0.7, "val_accuracy": 0.9993, "dataset": "TUAWS (Zenodo 15735480)" }, "wear_multipliers": { "version": "v1", "source": "UC Berkeley Milling Dataset (NASA)", "method": "linear_regression_VB_vs_run_per_case", "nominal_condition": "cast_iron_avg", "nominal_rate_um_per_cut": 0.0512, "multipliers": { "1": 1.0, "2": 2.189, "3": 2.406 }, "product_mapping": { "1": "Product A \u2014 nominal (cast iron average)", "2": "Product B \u2014 steel average (2.189x nominal)", "3": "Product C \u2014 most aggressive condition (2.406x nominal)" }, "note": "Derived from UC Berkeley milling dataset. Cast iron = nominal (1.0). Steel = material_2 avg rate / material_1 avg rate. Aggressive = max rate across all conditions / nominal. On a real cell, these would be replaced by calibration runs per product." } }