feat/202-airprint-detection
milestone/m12-native-spool
- CupsParsers: lpstatDeviceURIs / lpoptionsMakeAndModel / detectAirPrint — the six docs/14 §10.2 rules (apple-airprint:// URI, *APAirPrint: True, Apple+AirPrint make-and-model, ipps://+PPD mention, ipp:// + _universal mDNS subtype, cupsFilter2→image/urf). - CupsService.listPrinters: one tolerated lpstat -v spawn feeds detection; lpoptions -p yields displayName + makeAndModel in a single spawn; Printer.isAirPrint populated per queue. - Printer.isAirPrint defaults false with a tolerant decoder. - Stage2View: live airPrintWarningBadge — "AirPrint queue — unmanaged colour cannot be guaranteed." - Fixtures: lpstat -v marks Mock_Canon_Pro via _universal subtype; lpoptions emits printer-make-and-model. - Tests: six rule fixtures + USB negative + a no-fallback-respawn listPrinters case; Milestone12AirPrintUITests tracks the badge across queue selection. Gate: full xcodebuild test green (515 unit + 70 UI).