Plan Q — Function Decomposition + Shared Abstractions Extraction
**Plan Q — Function Decomposition + Shared Abstractions Extraction** Plan body: https://gitlab.com/gadhs/application/ccwis/craig/-/blob/main/docs/modules/ROOT/pages/plans/decomposition-and-shared-extraction.adoc Plan N Phase B paid down 5 of 7 OVER quality budgets. B1 (8 → 11) + B2 (49 → 56) remain. Audit revealed most B2 violators aren't §Style carve-outs — they're fat-arm dispatchers, duplicated bootstrap, copy-paste-and-customize patterns. Plan Q extracts the shared abstractions the lint is pointing at (`craig-bootstrap` crate + `SqlRow` trait + identity `Manifest` + CLI thin-dispatcher pattern); B1+B2 lint clears are a happy consequence. User principle: "Just because a function is important doesn't mean that bad coding practices get a pass. We still want to decompose unless decomposition makes the codebase worse." **11 steps:** 1. Plan filing + §Style doctrine update 2. craig-bootstrap foundation (NEW crate) 3. Migrate 9 service mains 4. SqlRow trait + seed builder refactor 5. Identity render Manifest + per-backend serializer 6. CLI fat-arm decomposition (2-3 sub-MRs) 7. xtask command run decomposition 8. B1 service-api module decomposition 9. Residual large-fn decomposition 10. Verify B1+B2 LOCKED + Plan N handoff 11. Plan completion audit + archive **Cross-link**: Plan Q Step 10 unblocks Plan N Step 9 (enforcement flip).
epic