SecJev-4B-Spot2-V3
SecJev-4B action-authorization guard (Spot 2: outgoing tool calls), full-data redo fine-tune, seed 20261102, epoch 3 of 3 (dev-selected: last and best epoch). Repository root is a complete Kev checkpoint directory. The Qwen3.5-4B-Base backbone is not re-hosted; bootstrap.py fetches the pinned backbone and Kev source.
Training
- Compute: DigitalOcean GPU droplet jev-retrain (AMD Instinct MI355X, ROCm), finished 2026-11-04 20:41 UTC.
- Method: ft_action.py, LoRA + head (33,776,128 trainable params), 3 epochs, batch 16 questions, lr 3e-5, bf16 weights, seed 20261102.
- Data: frozen Spot-2 v0.2 full splits (train 6,413 / dev 1,482).
- Training log: redo-training-log.jsonl. Hashes: redo-provenance.json.
Evaluation (read this before citing any number)
Dev (1,482 rows, only 85 positives) is near-saturated and does NOT predict held-out-domain test performance:
| split | AUC | at dev-calibrated threshold (dev FPR<=1%) | at 0.5 |
|---|---|---|---|
| Dev (independent local rescore) | 0.9971 | TPR 0.953 / FPR 0.010 | - |
| Full test (7,192 rows, droplet scores) | 0.8661 | TPR 0.776 / FPR 0.221 | TPR 0.544 / FPR 0.072 |
| Test banking+slack subset (3,044 rows) | 0.8236 | TPR 0.691 / FPR 0.230 | TPR 0.425 / FPR 0.076 |
The dev-calibrated threshold (0.0021) transfers badly across domains (test FPR 0.23). Balanced-accuracy 95% CI on test: [0.714, 0.751]. Per-suite and full analysis in redo-frozen-analysis.json; per-row scores in redo-dev-scores-local-rescore.jsonl and redo-test-scores-banking-slack.jsonl. Epoch selection used dev only (epoch AUCs 0.9954 / 0.9966 / 0.9967). A seed-20261101 sibling run finished at dev AUC 0.9926 and is not published; with 85 dev positives, seed differences of this size are within noise. No independent replication under the Tuesday-v2 frozen chain exists yet.
Model tree for macmacmacmac/SecJev-4B-Spot2-V3
Base model
Qwen/Qwen3.5-4B-Base