feat(detect): upgrade DocSeg model to SmartDoc-trained weights v1.102 Replaced the gated fallback segmentation model (the earlier 42-sample one) with weights trained on SmartDoc-2015 (CC BY 4.0) + our samples — ~2,500 real frames of A4 forms over varied backgrounds with corner GT, plus our car/hand samples and synthetic. Same TinyUNet (0.52M, 128px), same ONNX I/O, so the integration code is unchanged. - Val IoU 0.958 on the SmartDoc-mix held-out set. On real hard cases it is clearly better on document-on-plain-background (the faint 거래명세표 now gets a clean mask); night-with-truck and on-screen documents still over-segment, but those masks fail the solidity gate and are rejected, so the app falls back to the existing detection — no regression. - DocSeg remains fallback-only (used only when DocAligner produced no candidate) and edge-support still ranks the final pick, so a loose mask never wins over a clean DocAligner quad. Attribution: SmartDoc-2015 dataset, ICDAR2015 (Burie et al.), CC BY 4.0. Constraint: model is a drop-in replacement (identical I/O); gating + fallback-only + edge-support ranking unchanged, so worst case equals prior behavior. Confidence: high (safety) / medium (hard-case quality still improving) Scope-risk: module Reversibility: trivial (swap the asset back) Directive: keep collecting hard-case data (night/in-hand/on-screen) and retrain via RESUME; the night/truck and screen cases need that to pass the gate. Tested: assembleDebug + testDebugUnitTest exit=0 (22 tests); ONNX parity vs torch; on-image eval (faint form clean, hard cases gate-rejected). Not-tested: on-device end-to-end with the new model. Related: docseg-training memory, SmartDoc integration 🐙 Autopus