Wire the built-but-unused classification + DAST paths into the unified scan so
onboarded targets are actually detected and dynamically scanned:
- classify_and_store: ingests the target's artifacts and runs classify_target
(tramiton-core in-process for firmware/RTOS/Yocto + MCU/board; heuristics for
the rest), storing the Classification on the target. Best-effort — never fails
a scan. This is what makes firmware detection real during a scan.
- ensure_dast_target: when DAST is planned and the target has a LiveUrl artifact,
provisions a DastTarget (repo_id = target id) so the existing DAST trigger
fires for wizard-created targets, not just migrated ones. Idempotent.
Both run inside run_target (behind UNIFIED_PIPELINE), before the code pipeline.
Note: classification ingest currently clones the git repo separately from the
scan pipeline's clone (double-clone) — a perf follow-up, not a correctness issue.
Refs #133, #135, #118.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>