3b2d1009cd
Each of the 4 stage cards in the admin Library Scan section gains a StageBadge in its header. The badge derives state via stageState() from the existing ScanStatus payload — no new query, no schema change. Active stage shows spinner + "Processing" in moss green; done shows check + "Done" in moss green; pending and skipped show muted text. Card body now shows either the (possibly partial) numbers OR a "Waiting for previous stage…" placeholder when the badge is pending. The previous bottom-of-card "Pending…" / "Skipped." fallback text disappears (the badge replaces it). StageBadge.test.ts covers the four state renderings. admin.test.ts adds one new case asserting the Processing badge shows when scan.library is populated and in_flight: true. Existing admin.test.ts assertions still pass (the default mock data has no stage tallies + in_flight: false → all stages skipped, no Loader/ Check icons rendered).