What was measured, how, and where it fails.
| Model | Accuracy | F1 | ROC AUC | vs. baseline |
|---|---|---|---|---|
| Loading… | ||||
The meta-classifier is deliberately fitted on data the base models never trained on. Fitting it on the training split instead would let it learn from their overconfidence on rows they had memorised, and the ensemble would look better than it is.
There is no inference server. Both neural models were converted to int8 ONNX — about four times smaller than the originals — and run through ONNX Runtime Web via WebAssembly, while the stylometric and stacking models are a few lines of arithmetic. The text you paste never leaves your device.
The JavaScript port reproduces the Python pipeline exactly, down to
float32 rounding in the heatmap encoding and OpenCV's colour-map table.
A fixture of Python-generated values is replayed against it in
web/parity.html, so a port that drifted would fail loudly
rather than quietly degrade predictions.
src/train_meta.py.